LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA1LTA0LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93dHNhcGkzMi93dHNhcGkzMi5jLCBkbGxzL3d0c2FwaTMyL3d0c2FwaTMyLnNwZWMsCgkgIGluY2x1ZGUvd3RzYXBpMzIuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXVFNGcmVlTWVtb3J5IHN0dWIuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJU2V0IHRoZSBiYWNrdXAvcmVzdG9yZSBwcml2aWxlZ2UuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUV4Y2x1ZGUgY3Jhc2hpbmcgQ3JlYXRlRmlsZVcgdGVzdCBvbiBOVDQuCgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvbWFwcGluZy5jOgoJQ2xlYW5lZCB1cCBoYW5kbGluZyBvZiA2NC1iaXQgZmlsZSBzaXplcy4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUZpeCBTRUdWcyBpbiBOdENyZWF0ZVNlY3Rpb24gYW5kIE50TWFwVmlld09mU2VjdGlvbi4KCgkqIGRsbHMvYWR2cGFjay9yZWcuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglQcmV2ZW50IFNFR1YgaW4gUmVnSW5zdGFsbCB3aGVuIHBzdFRhYmxlIGlzIE5VTEwuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglDb3JyZWN0IHRlc3Qgb2YgQk9PTCByZXR1cm4gdmFsdWUgaW4gQ29udHJvbFNlcnZpY2UuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmVtb3ZlIHR3byB1bm5lY2Vzc2FyeSB0cmFjZXMuCglCcmVhayB1cCBvbmUgdGVzdCBpbnRvIHR3by4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy90d2Fpbi90d2Fpbi5oLCBkb2N1bWVudGF0aW9uL29sZS5zZ21sLAoJICBpbmNsdWRlL2N1c3RjbnRsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUZpeCBTRUdWIGZvciBub24tZnVsbHktcXVhbGlmaWVkIGRlc3RpbmF0aW9uIHBhdGhzLgoJRG9uJ3QgZmFpbCBTaEZpbGVPcGVyYXRpb25XIGlmIEZPRl9BTExPV1VORE8gaXMgcGFzc2VkLgoKCSogZGxscy9tc2kvdGVzdHMvZGIuYywgZGxscy9tc2kvdGVzdHMvcmVjb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbGxpbmsuYywgZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRFBTRVRfUkVNT1RFIGlzIDAgc28gd2UgY2Fubm90IGRvIChmbGFncyAmIERQU0VUX1JFTU9URSkuIEluc3RlYWQKCWNoZWNrIHRoYXQgdGhlIERQU0VUX0xPQ0FMIGZsYWcgaXMgbm90IHNldC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNCU1BfQUJTT0xVVEUgaXMgMCBzbyB3ZSBjYW5ub3QgZG8gKHdGbGFncyAmIFNCU1BfQUJTT0xVVEUpLgoJQWRkIENPTURMRzMyX0R1bXBTQlNQRmxhZ3MoKS4KCgkqIGRvY3VtZW50YXRpb24vd2luZWRldi1vdGhlcmRlYnVnLnNnbWw6CglBYXJvbiBBcnZleSA8YWFydmV5QGNzLmhtYy5lZHU+CglBZGRlZCBzZWN0aW9uICJXaGljaCBjb2RlIGhhcyBiZWVuIHRlc3RlZD8iIGRlc2NyaWJpbmcgZ2NvdiB1c2FnZS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGQgUmVnVW5Mb2FkS2V5IHRlc3QuCgoJKiBkbGxzL3VzZXIvbWVudS5jOiBKb3NlIEFsb25zbyA8YWxvbnNvQGVzdGFkYW8uY29tLmJyPgoJQ2hhbmdlIHRoZSBvcmRlciBvZiBEaXNwYXRjaE1lc3NhZ2UgYW5kIG1lc3NhZ2UgcmVtb3ZhbC4KCjIwMDUtMDQtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aWRsL3dpZGwuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWx3YXlzIGluaXRpYWxpemUgaGVhZGVyIGZpbGUgbmFtZSwgdG8gcHJldmVudCAiI2luY2x1ZGUgKG51bGwpIgoJc3RhdGVtZW50cyBpbiBnZW5lcmF0ZWQgZmlsZXMuCgoJKiB0b29scy93aW5lLmluZjogQmVuamFtaW4gQ3V0bGVyIDxjdXRsZXJAY3MuY29sb3N0YXRlLmVkdT4KCUFkZCBkZWZhdWx0IHJlZ2lzdHJ5IGVudHJpZXMgZm9yIHBvd2VyIG1hbmFnZW1lbnQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQ29waWVkIHRoZSBhdG9tIHRlc3RzIGZvciBnbG9iYWwgYXRvbSBzbyB0aGF0IHdlIGNhbiB0ZXN0IGxvY2FsIGF0b21zCgl0b28uCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzoKCVJlbW92ZWQgdW51c2VkIGRhdGEgZmllbGRzIGluIHRoZSBMQU5HX0ZJTkRfREFUQSBzdHJ1Y3R1cmUuCgoJKiBkbGxzL250ZGxsL3N5bmMuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZW1vdmVkIHRoZSBubyBsb25nZXIgdXNlciBBUENfQVNZTkMga2luZCBvZiBBUEMuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglGaXggYWRkcmVzc2luZyB0aGUgbWFnaWMgR0RJT0JKSERSIGZpZWxkIGluCglTWVNDT0xPUl9NYWtlT2JqZWN0U3lzdGVtLgoKCSogZGxscy91c2VyL3RleHQuYzogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUVsaW1pbmF0ZSBzdHJuY3B5LiBDb3JyZWN0IGEgXDAgYXNzaW5nbWVudCB0byB0aGUgbW9kc3RyIHZhcmlhYmxlLgoKCSogZGxscy9tc2kvZm9ybWF0LmM6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglSZW1vdmUgMiBpZGVudGljYWxzIGNhbGxzIHRvIHN0cmxlblcuCgoJKiBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLCBkbGxzL2RtdXNpYy9jb2xsZWN0aW9uLmMsCgkgIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9yc2FlbmgvcnNhZW5oLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsCgkgIGRsbHMvc2hsd2FwaS91cmwuYywgZGxscy93aW5lZG9zL2RldmljZXMuYywgZGxscy93aW5pbmV0L3VybGNhY2hlLmM6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJU3RybmNweSBlbGltaW5hdGlvbi4KCgkqIGRsbHMvZGJnaGVscC90eXBlLmM6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglFbGltaW5hdGUgc3RybmNweSBhbmQgY29ycmVjdCBzb21lIE5hbWVMZW4gYnVncy4KCgkqIGRsbHMvZGJnaGVscC9tb2R1bGUuYzogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUVsaW1pbmF0aW9uIG9mIGxzdHJjcHluLCBhbmQgY29ycmVjdGVkIGEgcG90ZW50aWFsIHBvaW50ZXIgYnVnLgoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYzogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUVsaW1pbmF0ZSBhIHN0cm5jcHkgYW5kIHJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gbW92ZWQgbmFtZWQgcGlwZSBjcmVhdGlvbiB0byBudGRsbAoJLSBzZXJ2ZXIgbm93IGhhbmRsZXMgdGhlIG5hbWVkIHBpcGUgZmxhZ3MgYXMgdGhlIE5URExMIHZhbHVlcyAobm90IHRoZQoJICBLRVJORUwzMiBvbmVzKQoJLSBuYW1lZCBwaXBlcyBpbiBzZXJ2ZXIgbm93IHVzZSB0aGUgYXN5bmMgSU8gbWVjaGFuaXNtIGZvcgoJICBjb25uZWN0L3dhaXQgb3BzCgoJKiBkbGxzL2RpbnB1dC9kYXRhX2Zvcm1hdHMuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGtleWJvYXJkIGRhdGEgZm9ybWF0LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2RldmVudW0vcGFyc2VkaXNwbGF5bmFtZS5jLCBkbGxzL2RtYmFuZC9iYW5kLmMsCgkgIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywgZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9ncmFwaC5jLAoJICBkbGxzL2RtaW1lL3NlZ21lbnQuYywgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYywKCSAgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywgZGxscy9kbXN0eWxlL3N0eWxlLmMsIGRsbHMvZ2RpL2ZvbnQuYywKCSAgZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9pdHNzL2NobV9saWIuYywgZGxscy9tc2kvY29uZC55LAoJICBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZpZGVvL21jaXduZC5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsIGRsbHMvb2xlZGxnL2luc29iamRsZy5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywgZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jLCBkbGxzL3VzZXIvZWRpdC5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5pbmV0L2RpYWxvZ3MuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlZGV0ZWN0LmMsCgkgIHRvb2xzL3NmbnQyZm50LmM6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJUmVwbGFjZSBzdHJuY3B5IHdpdGggbWVtY3B5IG9yIGxzdHJjcHluLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCURvbid0IHJlZHJhdyBpZiBubyBpbmZvcm1hdGlvbiBoYXMgY2hhbmdlZC4KCUZpeGVkIGVuZGxlc3MgcmVkcmF3IGxvb3AgaWYgYXBwIHVzaW5nIGNhbGxiYWNrIGZvciBpbWFnZXMgYW5kL29yCgl0ZXh0LgoJS2VlcCBjb2xvciBjaGFuZ2VzIG1hZGUgYnkgYXBwIGZvciB0aGUgY3VycmVudCBkcmF3IGN5Y2xlLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBwcm9wZXIgZGVmaW5pdGlvbiBmb3IgUFJJTlRETEdFWFtBV10gc3RydWN0dXJlcy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5jLCBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3V0aWwuYywgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuaCwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QucmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUB0YmEuZWx0ZS5odT4KCUVuZm9yY2UgdmFsaWQgdGFnIHN5bnRheCBkdXJpbmcgaW5wdXQuCgoJKiBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgc2lnbmVkIC8gdW5zaWduZWQgcG9pbnRlciBjYXN0cy4KCgkqIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWRldi1rZXJuZWwuc2dtbDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBVc2luZyB1bmlmb3JtIERvY0Jvb2sgdGFncyBmb3IgRExMcywgY29tbWFuZHMsIGVudmlyb25tZW50IHZhcnMuLi4KCS0gTW92ZWQgZGV0YWlsZWQgbWVtb3J5IG1hbmFnZW1lbnQgZnJvbSBhcmNoaSB0byBrZXJuZWwocykgcGFydC4KCS0gRW5oYW5jZWQgcHJvY2VzcyBoYW5kbGluZyBkZXNjcmlwdGlvbi4KCS0gQWRkZWQgc2VjdGlvbiBhYm91dCAxNiBiaXQgcHJvY2Vzc2VzJyBzdXBwb3J0LgoJLSBBZGRlZCBzZWN0aW9uIGFib3V0IERPUyBzdXBwb3J0LgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1pbm9yIGNsZWFudXBzLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglGYWlsIGdyYWNlZnVsbHkgb24gcGVybWlzc2lvbiBkZW5pZWQuCgoJKiBkbGxzL250ZGxsL250LmM6IEJlbmphbWluIEN1dGxlciA8Y3V0bGVyQGNzLmNvbG9zdGF0ZS5lZHU+CglBZGQgc2VtaS1zdHViIGZvciBOdFBvd2VySW5mb3JtYXRpb24oU3lzdGVtUG93ZXJDYXBhYmlsaXRpZXMsIC4uLikuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglUaGUgZGF0ZXRpbWUgc2hvdWxkIGJlIGluaXRpYWxpemVkIHdpdGggbG9jYWwgdGltZS4KCgkqIGRsbHMvYWR2cGFjay9hZHZwYWNrLmMsIGRsbHMvYWR2cGFjay9hZHZwYWNrLnNwZWMsIGluY2x1ZGUvYWR2cHViLmg6CglTYW1pIEFhcmlvIDxzYW1pLmFhcmlvQHN1cmZldS5maT4KCUFkZGVkIHN0dWJzIGZvciBSdW5TZXR1cENvbW1hbmQgYW5kIERlbE5vZGUuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglDb3JyZWN0bmVzcyBmb3IgY29uc3QgcG9pbnRlciBjYXN0cy4KCgkqIHByb2dyYW1zL3Byb2dtYW4vZGlhbG9nLmMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ3JhbS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZW1vdmVkIGEgY291cGxlIG9mIHVubmVlZGVkIGNhc3RzLgoKMjAwNS0wNC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zeW5jLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgYW5kIGRlZmluZSBhIHN0dWIgZm9yIE50U2lnbmFsQW5kV2FpdEZvclNpbmdsZU9iamVjdC4KCgkqIGRsbHMvZ2RpL2dkaTE2LmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUNyZWF0ZUJpdG1hcDE2IHNob3VsZCB1c2Ugb25seSB0aGUgZmlyc3QgYnl0ZSBvZiBwbGFuZXMgJiBicHAuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmVnRGVsZXRlS2V5IGZhaWxzIGlmIHRoZSBscFN1YktleSBwYXJhbSBpcyBOVUxMLgoKCSogZGxscy9yaWNoZWQyMC9jYXJldC5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwKCSAgZGxscy9yaWNoZWQyMC9wYWludC5jLCBkbGxzL3JpY2hlZDIwL3BhcmEuYywgZGxscy9yaWNoZWQyMC9ydW4uYywKCSAgZGxscy9yaWNoZWQyMC9zdHlsZS5jLCBkbGxzL3JpY2hlZDIwL3dyYXAuYzoKCUtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJLSByZW1vdmVkIHRyYWlsaW5nIHNwYWNlcyBmcm9tIHNvbWUgZmlsZXMKCS0gdGFiIHN1cHBvcnQKCS0gaW5kZW50IHN1cHBvcnQKCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBkaXJlY3Qga2V5Ym9hcmQgaW5wdXQgdG8gbnVtZXJpYyBmaWVsZHMuCgoJKiBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCS0gQWRkIHRleHQgZHVtcGluZyBvZiB0aGUgcmVxdWVzdGVkIGNvbW1hbmQuCgktIE1ha2UgdGhlIHN0dWIgbWVzc2FnZSBhcHBlYXIgZm9yIG1vcmUgY29tbWFuZHMuCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS93aW50ZXJubC5oOgoJQmVuamFtaW4gQ3V0bGVyIDxjdXRsZXJAY3MuY29sb3N0YXRlLmVkdT4KCS0gQ29ycmVjdCBhcmdzIGZvciBOdFBvd2VySW5mb3JtYXRpb24uCgktIEFkZCBzdHViIGZvciBOdEluaXRpYXRlUG93ZXJBY3Rpb24uCgoyMDA1LTA0LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3ByZWxvYWRlci5jOiBBYXJvbiBBcnZleSA8YWFydmV5QGNzLmhtYy5lZHU+CglBZGRlZCBfX2JiX2luaXRfZnVuYyBmb3IgbGlua2luZyBwdXJwb3Nlcy4KCgkqIGRsbHMvbXNodG1sL2h0bWxkb2MuYywgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwKCSAgZGxscy9tc2h0bWwvb2xlb2JqLmMsIGRsbHMvbXNodG1sL3ZpZXcuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIE1vcmUgaW1wbGVtZW50YXRpb24gb2YgdmlldwoJLSBBZGRlZCBJT2xlSW5QbGFjZUFjdGl2ZU9iamVjdAoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglFUlJPUl9QUklWSUxFR0VfTk9UX0hFTEQgY2FuIGJlIHJldHVybmVkIGZvciBOVDQuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVdpbjk4IGNhbiByZXR1cm4gRVJST1JfQ0FMTF9OT1RfSU1QTEVNRU5URUQuCgoJKiBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsIGRsbHMvZGNpbWFuMzIvZGNpbWFuX21haW4uYzoKCUJyaWFuIFZpbmNlbnQgPHZpbm5AdGhlc2hlbGwuY29tPgoJQWRkIHN0dWIgZm9yIERDSUNyZWF0ZVByaW1hcnkuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXaGVuIHdlJ3JlIGhpZGluZyBmaWxlIGV4dGVuc2lvbnMgdGhlbiBTZXROYW1lT2Ygc2hvdWxkIGFwcGVuZCB0aGUKCW9yaWdpbmFsIGV4dGVuc2lvbiBpZiBTSEdETl9GT1JQQVJTSU5HIGlzbid0IHNldC4KCVRoZSBmbGFncyBwYXNzZWQgdG8gU2V0TmFtZU9mIHJlZmVyIHRvIHRoZSBkc3Qgc3RyaW5nIG5vdCB0aGUgc3JjCglwaWRsLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglaZXJvIG91dCBhbiBpbnZhbGlkYXRlZCBydW5uaW5nT2JqZWN0VGFibGVJbnN0YW5jZSBwb2ludGVyLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWVudGlvbiB0aGUgJ2VtZicgYW5kICdsbmsnIG1vZGVzIGluIHRoZSB1c2FnZSBzdW1tYXJ5LgoJQWRkIC0/IGFuZCAtLWhlbHAgc3lub255bXMgZm9yIC1oIGFzIGlzIGN1c3RvbWFyeS4KCXB1dHMoIiIpIGFscmVhZHkgcHJpbnRzIGEgJ1xuJyBzbyB3ZSBkb24ndCBuZWVkIGEgc2Vjb25kIG9uZS4KCgkqIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJZiB3aW5lbWVudWJ1aWxkZXIgaXMgZ2l2ZW4gYSBsaXN0IG9mIG1lbnVzIHRvIHJlY3JlYXRlLCBpdCBzaG91bGQgbm90CglnaXZlIHVwIG9uIHRoZSBmaXJzdCBtZW51IHRoYXQgZmFpbHMuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglIb3VyICcwJyBjb3JyZXNwb25kcyB0byAxMkFNLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvdGVzdHMvaW5mby5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVN0YXJ0IG9mIHVuaXQgdGVzdHMgZm9yICpJbmZvKiBmdW5jdGlvbnMuCglDaGVjayBuZWVkZWQgbGVuZ3RoIHJlZ2FyZGxlc3Mgb2YgZ2l2ZW4gbGVuZ3RoLgoJUmV0dXJuIFNUQVRVU19JTlZBTElEX0lORk9fQ0xBU1MgZm9yIG5vbi1pbXBsZW1lbnRlZCBjbGFzc2VzLgoJUmV0dXJuIFNUQVRVU19BQ0NFU1NfVklPTEFUSU9OIGlmIG5vIGJ1ZmZlciBnaXZlbi4KCgkqIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNpbXBsZSB1bml0IHRlc3RzIGZvciBHZGlJcypEQyBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3d0c2FwaTMyLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIG1vcmUgV2luZG93cyBUZXJtaW5hbCBTZXJ2ZXIgQVBJIGRlZmluaXRpb25zLgoKCSogdG9vbHMvd2lkbC9jbGllbnQuYywgdG9vbHMvd2lkbC9zZXJ2ZXIuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVB1dCBzcGFjZSBiZXR3ZWVuIGluY2x1ZGUgZGlyZWN0aXZlIGFuZCBpbmNsdWRlIGZpbGUuCgoJKiB0b29scy93aWRsL3dpZGwubWFuOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgcHJveHkvc3R1YiBvcHRpb25zIHRvIHdpZGwgbWFuIHBhZ2UuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvc3RnX3Byb3AuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9zdGdfcHJvcC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IEZtdElkVG9Qcm9wU3RnTmFtZSAmIFByb3BTdGdOYW1lVG9GbXRJZCwgd2l0aCB0ZXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggVEJfR0VUQlVUVE9OU0laRSB0byByZXR1cm4gdGhlIGNvcnJlY3Qgd2lkdGgvaGVpZ2h0IGZvciBubwoJYnV0dG9ucy4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBVc2UgU2V0V2luZG93UG9zIHRvIG1vdmUgdGhlIGJ1ZGR5IHdpbmRvdyBpbnRvIHBvc2l0aW9uIGluc3RlYWQgb2YKCSAgZGVzdHJveWluZyBpdCBhbmQgcmVjcmVhdGluZyBpdCBhdCB0aGUgbmV3IHBvc2l0aW9uLgoJLSBDbGVhciB0aGUgYmFja2dyb3VuZCBpbiBXTV9WU0NST0xMIHRvIGF2b2lkIHByb2JsZW1zIHdpdGgKCSAgYW50aWFsaWFzZWQgdGV4dCBkcmF3aW5nIG9uIHRvcCBvZiBpdHNlbGYgbXVsdGlwbGUgdGltZXMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgcHJvdG90eXBlcyBmb3Igc29tZSBHZGkqIGZ1bmN0aW9ucy4KCjIwMDUtMDQtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJS2VlcCB0cmFjayBvZiBXU19ESVNBQkxFRCBleHBsaWNpdGVseSwgYXMgaXQgZG9lc24ndCBnZW5lcmF0ZSBhCglXTV9TVFlMRUNIQU5HRUQgbWVzc2FnZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBMVk5fT0RTVEFURUNIQU5HRUQuCglNaW5vciB0eXBvIGZpeGVzLgoKCSogZGxscy9nZGkvZGMuYywgZGxscy9nZGkvZ2RpMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBHZGlJcypEQyBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvbWVudS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3IgYSBtZW51IHByb2JsZW0gSSBmb3VuZC4KCgkqIGRsbHMvdXNlci9tZW51LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlY2FsY3VsYXRlIHRoZSBtZW51IG9uIGNhbGxpbmcgTW9kaWZ5TWVudSBzbyB0aGF0IHRoZSBtZW51IGl0ZW1zIGFyZQoJc2hvd24gYXQgdGhlIGNvcnJlY3Qgd2lkdGguCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJU2VuZCBub3RpZmllcyBhZnRlciBpbnZhbGlkYXRpbmcgY2hhbmdlZCBhcmVhcy4KCURvbid0IHVzZSBjdXN0b20gZHJhdyByZXR1cm5lZCBjb2xvcnMgZm9yIGNvbnRyb2wuCgoJKiBkbGxzL29sZTMyL3N0Z19wcm9wLmM6IEZpeGVkIGEgYnVmZmVyIG92ZXJmbG93LgoKCSogZGxscy94MTFkcnYvZGliLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglJbiBYMTFEUlZfRElCX1NldEltYWdlQml0cyBhdm9pZCBCYWRNYXRjaCBlcnJvcnMgd2hlbiBjYWxsaW5nCglYR2V0U3ViSW1hZ2UuCgoJKiBkbGxzL3gxMWRydi9vcGVuZ2wuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglJbmNsdWRlIFhtZC5oIGluIHgxMWRydi5oIHdpdGggdGhlIHByb3BlciBkZWZpbmVzIHRvIG1ha2UgaXQgd29yaywgYW5kCglyZW1vdmUgcmVsYXRlZCBoYWNrcyBpbiB2YXJpb3VzIEMgZmlsZXMuCgoJKiBkbGxzL21zdmNydC93Y3MuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUZpeCBkZWNvZGluZyBwcmludGYgZm9ybWF0IGluIGNhc2UgdGhlIGZpZWxkIHdpZHRoIHNwZWNpZmllciBpcyBhICcqJy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueTogTWljaGFlbCBMaW4gPG1saW5AY29ydnUuY29tLmF1PgoJQ2hhbmdlIG1lbnUgaXRlbSBvcHRpb25zIHRvIHVzZSBvcHRpb25hbCBjb21tYS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBNaWNoYWVsIExpbiA8bWxpbkBjb3J2dS5jb20uYXU+CglEZWZpbmUgV0lOVVNFUkFQSS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBEYW5pZWwgUmVtZW5hayA8ZHRyZW1lbmFrQGdtYWlsLmNvbT4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGUgaW4gX2NvcHlfYXJnLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IEJlbmphbWluIEN1dGxlciA8Y3V0bGVyQGNzLmNvbG9zdGF0ZS5lZHU+CglCZXR0ZXIgaGFuZGxpbmcgb2YgaEludGVybmV0ID09IE5VTEwgZm9yIElOVEVSTkVUX09QVElPTl9QUk9YWSBpbgoJSU5FVF9RdWVyeU9wdGlvbkhlbHBlci4gTVNETiBzYXlzIHRvIHJldHVybiAnZ2xvYmFsIHByb3h5IGluZm8nIHdoZW4KCWhJbnRlcm5ldCA9PSBOVUxMLiBUaGFua3MgdG8gSnVhbiBMYW5nIGZvciBoZWxwaW5nIHdpdGggdGhpcy4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCU1vbmRheSBpcyBkYXkgbnVtYmVyICcxJy4KCVNldCBkYXkgb2Ygd2VlayB3aGVuIGEgZGF5IGlzIHNlbGVjdGVkIGluIHRoZSBjYWxlbmRlci4KCVVzZSBmaXhlZCB3aWR0aCBmaWVsZHMgaW4gZGF0ZXRpbWUuCglEVFNfVElNRUZPUk1BVCBpcyBhIHR3byBiaXQgZmllbGQsIHNvIHRlc3QgYWNjb3JkaW5nbHkuCglSZXBvc2l0aW9uIGFuZCByZXNpemUgdGhlIHVwZG93biBjb250cm9sIHdoZW4gdGhlIGRhdGV0aW1lIGNvbnRyb2wgaXMKCXJlc2l6ZWQuCglSZXNwb25kIHRvIHVwZG93biBpbnB1dHMuCgoJKiBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvaHRtbGRvYy5jLCBkbGxzL21zaHRtbC9tYWluLmMsCgkgIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL3ZpZXcuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBtb3JlIGltcGxlbWVudGF0aW9uIG9mIElEb2N1bWVudFZpZXcuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywgcHJvZ3JhbXMvcmVnZWRpdC9oZXhlZGl0LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgbmV1dHJhbCBFbmdsaXNoIHJlc291cmNlcy4KCS0gQWRkIGEgY29udHJvbCBmb3IgZWRpdGluZyBiaW5hcnkgZGF0YS4KCS0gQWRkIGEgYmluYXJ5IHZhbHVlIGVkaXRvciBkaWFsb2cuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl9wcml2YXRlLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJSW4gQWxsb2NDb25zb2xlKCkgcGFzcyB0aGUgd1Nob3dXaW5kb3cgdmFsdWUgYW5kIFNUQVJURl9VU0VTSE9XV0lORE9XCglmbGFnIGZyb20gdGhlIGNhbGxpbmcgcHJvY2VzcyB0byB0aGUgY29uc29sZSBwcm9jZXNzLiBNYWtlIHdpbmVjb25zb2xlCgl1c2UgdGhlIENtZFNob3cgcGFyYW1ldGVyIGluIHRoZSBTaG93V2luZG93IGNhbGwuCgoyMDA1LTA0LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMvdXNlci90ZXh0LmMsIGRsbHMvdXNlci91aXRvb2xzLmMsCgkgIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9ub25jbGllbnQuYywKCSAgd2luZG93cy9zeXNjb2xvci5jOgoJTW92ZWQgaGFuZGxpbmcgb2YgdGhlIDU1QUEgcGF0dGVybiBicnVzaCB0byBzeXNjb2xvci5jIHNvIHRoYXQgaXQgY2FuCgliZSBtYWRlIGEgc3lzdGVtIG9iamVjdCAoZm91bmQgYnkgUmVpbiBLbGF6ZXMpLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IEJlbmphbWluIEN1dGxlciA8Y3V0bGVyQGNzLmNvbG9zdGF0ZS5lZHU+CglDaGVjayBmb3IgYW4gaW52YWxpZCBoSW50ZXJuZXQgaGFuZGxlIGluIElORVRfUXVlcnlPcHRpb25IZWxwZXIgZm9yCglJTlRFUk5FVF9PUFRJT05fUFJPWFkgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIGl0LgoKCSogZGxscy9nZGkvYml0bWFwLmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvZ2RpL3dpbmcuYywKCSAgaW5jbHVkZS9nZGkuaDoKCU1vdmVkIHRoZSBCSVRNQVBPQkogc3RydWN0dXJlIHRvIGdkaV9wcml2YXRlLmguCgoJKiBkbGxzL3gxMWRydi94aW0uYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJVGVybWluYXRlIFhDcmVhdGVJQygpIGFyZ3VtZW50IGxpc3Qgd2l0aCBOVUxMIGluc3RlYWQgb2YganVzdCAwLgoKCSogZGxscy94MTFkcnYvYml0bWFwLmM6CglVc2UgYW4gWCBjb250ZXh0IHRvIGFzc29jaWF0ZSB0aGUgcGh5cyBiaXRtYXAgZGF0YSB0byBhIGJpdG1hcCBoYW5kbGUKCWluc3RlYWQgb2YgZGlyZWN0bHkgYWNjZXNzaW5nIHRoZSBiaXRtYXAgc3RydWN0dXJlLgoKCSogZGxscy94MTFkcnYveDExZHJ2LnNwZWM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZWdpc3RlckNsaXBib2FyZEZvcm1hdCB0YWtlcyBhIHVuaWNvZGUgc3RyaW5nIG5vdy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJLSBGaXggbGVmdG92ZXIgbmVnYXRpdmUgc2lnbiBpbiBoZWlnaHQgcGFyYW1ldGVyIGZvciB0cmFuc3BhcmVudAoJICBiaXRtYXAuCgktIFByb3Blcmx5IGFubm91bmNlIHdoZXRoZXIgYml0bWFwIGlzIHRyYW5zcGFyZW50IGluIGdldF9BdHRyaWJ1dGVzLgoJLSBHSUYgdHJhbnNwYXJlbmN5IGlzIG5vdyBwYWxldHRlLWluZGV4IGJhc2VkLCBpbnN0ZWFkIG9mIFJHQiBiYXNlZC4KCS0gS2VlcCBvcmlnaW5hbCBiaXRtYXAgYW5kIFhPUiBtYXNrIHNlcGFyYXRlLCBzbyB0aGF0IGdldF9IYW5kbGUKCSAgcmV0dXJucyBvcmlnaW5hbCBiaXRtYXAuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNvcnJlY3QgY29tbWVudHMgb2Ygc29tZSBleHBvcnQgb3JkaW5hbHMuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL29sZTMyL29sZTJfMTYuYywgZGxscy94MTFkcnYvY2xpcGJvYXJkLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSBuZWVkIGZvciB0aGUgbm9uLXN0YW5kYXJkIChDbG9zZXxEZWxldGUpTWV0YUZpbGUxNigpLgoKCSogZGxscy9nZGkvZGliLmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMveDExZHJ2L2RpYi5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveDExZHJ2LnNwZWM6CglNb3ZlZCB0aGUgZHJpdmVyLWluZGVwZW5kZW50IHBhcnQgb2YgQ3JlYXRlRElCU2VjdGlvbiBpbnRvIEdESS4KCgkqIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9odG1sZG9jLmMsCgkgIGRsbHMvbXNodG1sL21zaHRtbF9wcml2YXRlLmgsIGRsbHMvbXNodG1sL29sZW9iai5jLAoJICBkbGxzL21zaHRtbC92aWV3LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCBJT2xlRG9jdW1lbnRWaWV3IGludGVyZmFjZS4KCS0gQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgRG9WZXJiIGFuZCBDcmVhdGVWaWV3LgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVBhc3MgYW4gZW1wdHkgc3RyaW5nIGluc3RlYWQgb2YgTlVMTCB0byBSZWdEZWxldGVLZXkgdG8gZGVsZXRlIGhLZXkuCgoJKiB3aW5kb3dzL3NweS5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUR1bXAgd2hvbGUgTk1IRUFERVJBIG5vdGlmeSBzdHJ1Y3R1cmUgZm9yIFRyZWVWaWV3cy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtZGV2ZWxAa2lldmluZm8uY29tPgoJRHJhdyBvbmx5IHZpc2libGUgdGFicy4KCgkqIGRsbHMvZHNvdW5kL3Byb3BzZXQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZ1bGx5IGltcGxlbWVudCBXQVZFREVWSUNFTUFQUElORyBwcm9wZXJ0eSBzZXQuCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHVuaWNvZGUgcGlkbCB0eXBlLgoJSW1wcm92ZSBzdXBwb3J0IGZvciBQVF9ZQUdVSUQuCglJbXByb3ZlIElTaGVsbExpbmsgZGVidWdnaW5nLgoKCSogZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCVN0b3JlIERJQiBzZWN0aW9uIGluZm9ybWF0aW9uIGRpcmVjdGx5IGluIHRoZSBwaHlzIGJpdG1hcCBzdHJ1Y3R1cmUKCWFuZCBnZXQgcmlkIG9mIHRoZSBYMTFEUlZfRElCU0VDVElPTiBzdHJ1Y3R1cmUuCglHZXQgcmlkIG9mIHRoZSB1bnVzZWQgQXV4TW9kIERJQiBzdGF0ZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglVc2UgY29ycmVjdCBtb3Z3IGluc3RlYWQgb2YgbW92bCB3aGVuIGhhbmRsaW5nIHNlZ21lbnQgcmVnaXN0ZXJzLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBQcm9wU3lze0FsbG9jfEZyZWV9U3RyaW5nLCBhbmQgc3VwcG9ydCBCU1RScyBpbgoJUHJvcFZhcmlhbnR7Q2xlYXJ8Q29weX0gdXNpbmcgdGhlbS4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsCgkgIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLCBkbGxzL3JpY2hlZDIwL3JlYWRlci5jLCBkbGxzL3JpY2hlZDIwL3J0Zi5oOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCU1ha2UgUlRGIHJlYWRlciBmYWxsIGJhY2sgdG8gc2ltcGxlIHRleHQgaWYgYSBjb3JyZWN0IFJURiBoZWFkZXIgaXMKCW5vdCBkZXRlY3RlZC4gVGhpcyBzaG91bGQgZml4IHNvbWUgaW5zdGFsbGVycy4KCgkqIGRsbHMvc2hlbGwzMi9yZWdzdnIuYywgaW5jbHVkZS9zaGxndWlkLmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglSZWdpc3RlciBTaGVsbCBEcmFnIGFuZCBEcm9wIEhlbHBlci4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX1N2LnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglBbmRyZWFzIEJqZXJrZWhvbHQgPGhhcnRlZXhAZ21haWwuY29tPgoJU3dlZGlzaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUGFydGlhbGx5IGltcGxlbWVudCBDcmVhdGVQcm9jZXNzQXNVc2VyLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIHRoZSBVbml4Rm9sZGVyJ3MgSVNoZWxsRm9sZGVyMjo6Q29tcGFyZUlEcyBtZXRob2QuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJRGFuaWVsIFJlbWVuYWsgPGR0cmVtZW5ha0BnbWFpbC5jb20+CglJbXBsZW1lbnRlZCBWYXJJZGl2LgoKCSogZGxscy9nZGkvZW5obWV0YWZpbGUuYywgZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IHNjYWxpbmcgd2hlbiBjb252ZXJ0aW5nIE1GIC0+IEVNRi4KCS0gVGVzdHMgZm9yIGNvbnZlcnNpb25zIChhbHRob3VnaCBub3QgZm9yIHRoZSBhYm92ZSBidWcpLgoKMjAwNS0wNC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywKCSAgZGxscy9zaGVsbDMyL3NocmVzZGVmLmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGljb24gaGFuZGxpbmcgZm9yIHNvbWUgc3BlY2lhbCBmb2xkZXJzLgoJSWRlbnRpZnkgYW5kIGFkZCBkZWZpbmVzIGZvciBhIGJ1bmNoIG9mIHNoZWxsIGljb25zLgoKCSogZGxscy94MTFkcnYvYml0Ymx0LmMsIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9kaWIuYywKCSAgZGxscy94MTFkcnYvaW5pdC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveHJlbmRlci5jOgoJU3RvcmUgYSBwb2ludGVyIHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcGh5cyBiaXRtYXAgaW4gdGhlIGRldmljZQoJc3RydWN0dXJlLiBDcmVhdGUgYSBwaHlzIGJpdG1hcCBmb3IgdGhlIGRlZmF1bHQgc3RvY2sgYml0bWFwIHRvby4KCgkqIGluY2x1ZGUvd2lubnQuaDogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJQWRkZWQgdHlwZWRlZiBmb3IgREVWSUNFX1BPV0VSX1NUQVRFLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIGVub3VnaCBvZiBJU2hlbGxGb2xkZXIyIHRvIG1ha2UgVW5peEZvbGRlciB3b3JrIHdpdGhpbiB0aGUKCW9wZW4vc2F2ZS1kaWFsb2dzLgoKCSogZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL2h0bWxkb2MuYywgZGxscy9tc2h0bWwvbWFpbi5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oLCBkbGxzL21zaHRtbC9vbGVvYmouYywKCSAgZGxscy9tc2h0bWwvcGVyc2lzdC5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgSU9sZU9iamVjdCBhbmQgSU9sZURvY3VtZW50LgoKCSogZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCVN0b3JlIHRoZSBiaXRtYXAgaGFuZGxlIGluIHRoZSBwaHlzIGJpdG1hcCBzdHJ1Y3R1cmUsIGFuZCBhdm9pZCBhIGZldwoJbW9yZSBHRElfR2V0T2JqUHRyIGNhbGxzLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIElDb21tRGxnQnJvd3Nlcl9PbkRlZmF1bHRDb21tYW5kIHJldHVybnMgYW55dGhpbmcgb3RoZXIgdGhhbiBTX09LCgl0aGVuIHdlIHNob3VsZCBjYWxsIHRoZSBkZWZhdWx0IGhhbmRsZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBFU19BVVRPSFNDUk9MTCBmb3IgZWRpdCBib3guCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogRGFuaWVsIFJlbWVuYWsgPGR0cmVtZW5ha0BnbWFpbC5jb20+CglSZXR1cm4gRElTUF9FX0RJVkJZWkVSTyBpbnN0ZWFkIG9mIGNyYXNoaW5nIHdoZW4gYXNrZWQgdG8gZGl2aWRlIGEKCXZhcmlhbnQgYnkgemVyby4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglVc2UgVW5pY29kZSBzdHJpbmcgcmVzdWx0IGZyb20gR2V0RGlzcGxheU5hbWVPZiBpZiBpdCBpc24ndAoJcmVwcmVzZW50YWJsZSB1c2luZyBBTlNJLgoKCSogZGxscy9tc2kvZm9ybWF0LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUxvZyBtaXNzaW5nIGVudmlyb25tZW50IHZhcnMgZm9yIGVhc2llciBkZWJ1Z2dpbmcuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU3R1YiBvdXQgRFJWTV9NQVBQRVJfUkVDT05GSUdVUkUgc3VwcG9ydC4KCjIwMDUtMDQtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvYnJ1c2guYywgZGxscy94MTFkcnYvZGliLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJU3RvcmUgdGhlIHBpeG1hcCBkZXB0aCBhbmQgdGhlIERJQlNFQ1RJT04gcG9pbnRlciBpbiB0aGUgcGh5cyBiaXRtYXAKCXN0cnVjdHVyZS4gQXZvaWQgYSBmZXcgR0RJX0dldE9ialB0ciBjYWxscy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IEFkZCBuZXcgcG93cnByb2YuaCBoZWFkZXIuCgoJKiBkbGxzL3F1YXJ0ei9tZW1hbGxvY2F0b3IuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIGFuIGVycm9yIGluc3RlYWQgb2YgY3Jhc2hpbmcgbGF0ZXIgb24gYSBkaXZpZGUgYnkgemVybwoJZXhjZXB0aW9uIHdoZW4gYW4gYWxpZ25tZW50IG9mIDAgaXMgc3BlY2lmaWVkLgoKCSogZGxscy9vbGUzMi9zdGdfcHJvcC5jLCBkbGxzL29sZTMyL3Rlc3RzL3N0Z19wcm9wLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGFkZCB3cml0ZSBzdXBwb3J0IHRvIElQcm9wZXJ0eVN0b3JhZ2UsIHdpdGggdGVzdHMKCS0gbWlzYy4gY2xlYW51cHMgdGhlIHRlc3RzIHR1cm5lZCB1cAoKCSogaW5jbHVkZS9zaG9iamlkbC5pZGw6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBtaXNzaW5nIFNGR0FPXyBkZWZpbmVzIGFuZCBmaXggU0ZHQU9fR0hPU1RFRC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURpcmVjdG9yeSBpdGVtcyBzaG91bGQgaGF2ZSB0aGUgU0ZHT0FfRklMRVNZU0FOQ0VTVE9SIGF0dHJpYnV0ZS4KCUFkZCBhIHRlc3QgZm9yIHRoaXMgYW5kIGNsZWFudXAgdGhlIHNobGZvbGRlciB0ZXN0IGEgYml0LgoKCSogZGxscy9tc2Ntcy9wcm9maWxlLmMsIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRG9uJ3QgcmVmZXJlbmNlIGM6XHdpbmRvd3MgZGlyZWN0bHkuCgoJKiB0b29scy93aW5lLmluZjogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUmVnaXN0ZXIgY29udHJvbFxjbGFzc1x7R1VJRF9ERVZJTlRFUkZBQ0VfU0VSRU5VTV9CVVNfRU5VTUVSQVRPUn0uCgoJKiBpbmNsdWRlL3Bvd3Jwcm9mLmgsIGluY2x1ZGUvd2lubnQuaDoKCUJlbmphbWluIEN1dGxlciA8Y3V0bGVyQGNzLmNvbG9zdGF0ZS5lZHU+CglBZGRlZCBmdW5jdGlvbi9lbnVtL3N0cnVjdHMgZm9yIHBvd2VyIG1hbmFnZW1lbnQgQVBJLgoKCSogZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL2h0bWxkb2MuYywKCSAgZGxscy9tc2h0bWwvbXNodG1sX3ByaXZhdGUuaCwgZGxscy9tc2h0bWwvcGVyc2lzdC5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2QgSVBlcnNpc3QsIElQZXJzaXN0TW9uaWtlciwgSVBlcnNpc3RGaWxlLAoJSU1vbmlrZXJQcm9wLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbWFpbHNsb3QuYywgc2VydmVyL21haWxzbG90LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDYWxjdWxhdGUgdGhlIHNpemUgb2YgdGhlIG5leHQgbWFpbHNsb3QgbWVzc2FnZSBjb3JyZWN0bHkuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglFbnN1cmUgQS0+VyB2ZXJzaW9uIG9mIEludGVybmV0Q3JhY2tVUkwgcGFzc2VzIGNvcnJlY3QgbGVuZ3RoIHZhbHVlcywKCWFuZCBhc3NvY2lhdGVkIHRlc3RzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2N1c3RvbS5jLCBkbGxzL21zaS9mb3JtYXQuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUF2b2lkIHVzaW5nIHZlci5oIGluIGZhdm9yIG9mIHdpbnZlci5oLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLmMsIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuaDoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQHRiYS5lbHRlLmh1PgoJVXNlIHRoZSBzYW1lIG1heGltdW0gbGVuZ3RoIGZvciB0YWdzIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgYW5kCgl0YWdzIGVudGVyZWQgaW4gdGhlIEdVSS4KCgkqIGRsbHMvb2xlMzIvZGljdGlvbmFyeS5jLCBkbGxzL29sZTMyL2RpY3Rpb25hcnkuaCwKCSAgZGxscy9vbGUzMi9zdGdfcHJvcC5jLCBkbGxzL29sZTMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvdGVzdHMvc3RnX3Byb3AuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCB0cmFjZXMsIGFkZCB1bml0IHRlc3RzIGZvciBJUHJvcGVydHlTdG9yYWdlLCBhbmQgZml4IHRoZSBwcm9ibGVtcwoJdGhleSBjYXVnaHQuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBzZXQgc2l6ZSByZXF1aXJlZCBjb3JyZWN0bHkgZm9yIGFsbCBzdXBwb3J0ZWQgb3B0aW9ucwoJLSB0aWR5IHVwIGEgZmV3IGxpbmVzIG9mIGluZGVudGluZyBpbiBJTkVUX1F1ZXJ5T3B0aW9uSGVscGVyCgktIGltcGxlbWVudCBxdWVyeWluZyBJTlRFUk5FVF9PUFRJT05fUFJPWFkKCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IE1hdHRoZXcgTWFzdHJhY2NpIDxtYXR0QGFjbGFyby5jb20+CglDb3JyZWN0bHkgbG9jayBhbmQgdW5sb2NrIHN1cmZhY2UgZm9yIGEgc2luZ2xlLXN1cmZhY2UgQmx0KCkgYW5kCglCbHRGYXN0KCkgY2FsbC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgR2V0TmFtZWRTZWN1cml0eUluZm8uCgoJKiBkbGxzL3gxMWRydi9kaWIuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUZpeCBYMTFEUlZfRElCX1NldEltYWdlQml0c19STEUoNHw4KSB3aGVuIGFuIG5vbi16ZXJvIHgtb2Zmc2V0CgkoYXJndW1lbnQgbGVmdCkgaXMgc3BlY2lmaWVkLgoKCSogZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQGdtYWlsLmNvbT4KCVN5bmMgdG8gdGhlIGxhdGVzdCBvcGVuZ2wgc3BlY3MuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBIYW5udSBWYWx0b25lbiA8SGFubnUuVmFsdG9uZW5AaHV0LmZpPgoJQWRkZWQgbW91c2V3aGVlbCBzdXBwb3J0LgoKCSogZGxscy9udGRsbC90ZXN0cy9yZWcuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUZsYWdzIHNob3VsZCBiZSBvci1lZC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglUYWIgdW5pY29kaWZpY2F0aW9uLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW9udGhDYWwgdW5pY29kaWZpY2F0aW9uLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL2ZpbGUuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBtYWlsc2xvdCBzZXQgYW5kIHF1ZXJ5IGluZm8gaW1wbGVtZW50YXRpb24gdG8gbnRkbGwuCgoJKiBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLAoJICBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGljb24gcmVzb3VyY2UgaWRzIChtb3N0IHdlcmUgb2ZmIGJ5IG9uZSkuCglGaXggSUV4dHJhY3RJY29uX3tHZXRJY29uTG9jYXRpb24sRXh0cmFjdH0gdG8gdXNlIC12ZSBpY29uIHJlc291cmNlCglpZHMgYW5kIGZpeCBidWdzIHJlbGF0aW5nIHRvIGNvbmZ1c2lvbiBiZXR3ZWVuIHJlc291cmNlIGlkcyBhbmQgdGhlCglzeXN0ZW0gaW1hZ2VsaXN0IGluZGljaWVzLgoJRXh0ZW5kIHRoZSBzeXN0ZW0gaW1hZ2VsaXN0IGluaXRpYWxpemF0aW9uIGhhY2sgdG8gbG9hZCBib3RoICt2ZSBhbmQKCS12ZSByZXNvdXJjZSBpZHMuCglBZGQgYSBwcmludGVyIGljb24gKHRoYXQnbGwgYmUgdXNlZCBieSBhbiB1cGNvbWluZyBwcmludGVyIGZvbGRlcgoJcGF0Y2gpLgoKCSogZGxscy9tcHIvbXByX0VzLnJjLCBkbGxzL21zaS9tc2lfRXMucmMsIGRsbHMvc2hkb2N2dy9Fcy5yYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncucmMsIGRsbHMvd2luaW5ldC93aW5pbmV0X0VzLnJjLAoJICBkbGxzL3dpbm1tL3dpbm1tX0VzLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCVNwYW5pc2ggdHJhbnNsYXRpb25zIHVwZGF0ZWQuCgoJKiBpbmNsdWRlL29sZTIuaDogTWljaGFlbCBMaW4gPG1saW5AY29ydnUuY29tLmF1PgoJQWRkZWQgbWlzc2luZyBPbGVEcmF3KCkgZGVjbGFyYXRpb24uCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglNYWtlIHN0YXRpYyBzb21lIGZ1bmN0aW9ucyB1c2VkIG9ubHkgaW4gYSBzaW5nbGUgZmlsZS4KCgkqIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUluaXRpYWxpemUgcHJpbWFyeSBidWZmZXIgb24gb3Blbi4KCgkqIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBpbmNsdWRlL2NmZ21ncjMyLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgU2V0dXBEaUNsYXNzTmFtZUZyb21HdWlkRXhBLgoKCSogaW5jbHVkZS9wcm9waWRsLmlkbDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkIGEgZmV3IG1pc3NpbmcgZGVjbGFyYXRpb25zLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJUmVtb3ZlZCBpbmNsdXNpb24gb2YgcHJvY2Vzcy5oIChub3QgbmVlZGVkIGFuZCBicmVha3Mgd2l0aCBnY2M0KS4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0dWIgZm9yIEZhdWx0SW5JRUZlYXR1cmUuCgoJKiBpbmNsdWRlL3d0eXBlcy5pZGw6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB1Q0xTU1BFQywgQ1NQTEFURk9STSBhbmQgUVVFUllDT05URVhUIHN0cnVjdHVyZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF1ZGl0IHRoZSBjb2RlIGFnYWluc3QgQ29tY3RsMzIuZGxsIHZlcnNpb24gNi4wLgoJSGFuZGxlIG5vdGlmaWNhdGlvbiBhbmQgc3R5bGVzIGFzIGluIHRoZSBvdGhlciBjb250cm9scy4KCU1haW50YWluIHRoZSBjb25zdCBmb3Igc3RyaW5ncyB0aHJvdWdob3V0IHBhcnNpbmcuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHJlZmVyZW5jZSB0byBub25leGlzdGFudCBzdHJtaWYuaC4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQ2xlYXIgc3lzdGVtdGltZSBzdHJ1Y3Qgc28gd2UgZG9uJ3QgcmV0dXJuIGdhcmJhZ2UgaW4gdW5pbml0aWFsaXplZAoJZmllbGRzLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvRW4ucmM6IEhhbm51IFZhbHRvbmVuIDxIYW5udS5WYWx0b25lbkBodXQuZmk+CglGaXggYSB0eXBvIGluIHVuaW5zdGFsbGVyJ3MgZW5nbGlzaCBhcHBuYW1lLgoKCSogdG9vbHMvd2luZS5pbmY6IEhhbm51IFZhbHRvbmVuIDxIYW5udS5WYWx0b25lbkBodXQuZmk+CglSdW4gbXNpIGZpbGVzIHdpdGggbXNpZXhlYy4KCUNoYW5nZSBDb250cm9sIFBhbmVsXERlc2t0b3AgdG8gY29ycmVjdCBjYXNlLgoKCSogZGxscy94MTFkcnYvZGliLmM6IEdsZW5uIFd1cnN0ZXIgPGd3dXJzdGVyQHNjcy5jYXJsZXRvbi5jYT4KCUZpeCBhcnJheSBpbmRleCBjcmFzaCBpbiBidWlkbGluZyBHREkgcGFsZXR0ZSBmcm9tIGxvZ2ljYWwgcGFsZXR0ZS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5oLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglNYWtlIGNyeXB0IGZ1bmN0aW9ucyBtb3JlIHJvYnVzdCBpbiBjYXNlIG9mIGluY29ycmVjdCBhcGkgdXNhZ2UuCgoJKiBzZXJ2ZXIvd2luZG93LmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4IHBvdGVudGlhbCByZWdpb24gbGVhay4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglDcmVhdGUgdGhlICdUZXN0JyB2YWx1ZSBpbiBhIHRlbXBvcmFyeSBzdWJrZXkgdG8gYXZvaWQgY29uZmxpY3RzCgliZXR3ZWVuIHRlc3RzLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIGNyeXB0ZGxsLyBhbmQgc3Rkb2xlMzIudGxiLy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywgaW5jbHVkZS9kc291bmQuaDoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmVtb3ZlIG5vbnN0YW5kYXJkIHR5cGUgTFBMUFZPSUQuCgoJKiBkb2N1bWVudGF0aW9uL29sZS5zZ21sOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglNb3JlIG5vdGVzIGFib3V0IHRoZSBpbm5lciB3b3JraW5ncyBvZiBEQ09NLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDcmVhdGUgdGhlIEdMIHRleHR1cmUgaWQgYXQgdGV4dHVyZS1iaW5kaW5nIHRpbWUuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCS0gRU1fQ0FOUEFTVEUgaW1wbGVtZW50ZWQKCS0gdXBkYXRlZCBUT0RPIGxpc3QgKGluY2x1ZGluZyBsaXN0IG9mICh1bilpbXBsZW1lbnRlZCBtZXNzYWdlcykKCS0gZml4ZWQgV01fUEFTVEUgKHRoZSBwcmV2aW91cyB2ZXJzaW9uIG1pZ2h0IG5vdCBjbG9zZSB0aGUgY2xpcGJvYXJkCgkgIGlmIGl0IGRpZG4ndCBjb250YWluIGEgdXNhYmxlIGZvcm1hdCkKCS0gc2Nyb2xsYmFyIG9wZXJhdGlvbnMgKGxpa2UgY2xpY2tpbmcgb24gYXJyb3dzKSBzaG91bGQgdXBkYXRlCgkgIHNjcm9sbGJhcidzIGN1cnJlbnQgcG9zaXRpb24KCgkqIGluY2x1ZGUvd2luZGVmLmg6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeCBhIHR5cG8gaW4gYSBjb21tZW50LgoKCSogZGxscy9nZGkvbWV0YWZpbGUuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFudXAgdGhlIEFQSSBkb2NzLiBGZXcgaW5kZW50YXRpb24vZm9ybWF0dGluZyBmaXhlcy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywKCSAgZGxscy93aW5tbS90ZXN0cy93aW5tbV90ZXN0Lmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2hhbmdlZCByZWdyZXNzaW9uIHRlc3QgdG8gbWFrZSBzdXJlIHBvc2l0aW9uIGlzIGNvcnJlY3RseSBjaGVja2VkCgl3aGVuIGEgZGlmZmVyZW50IHR5cGUgaXMgcmV0dXJuZWQuCglBZGRlZCBKZXJlbXkgV2hpdGUncyBXQVZFX0ZPUk1BVF9ESVJFQ1QvV0FWRV9NQVBQRVIgZml4LgoJQWRkZWQgd2F2ZUluR2V0UG9zaXRpb24gY2hlY2tzLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNvcnJlY3RseSBoYW5kbGUgd2hlcmUgd2F2ZU91dEdldFBvc2l0aW9uIGNoYW5nZXMgdGltZXBvcy53VHlwZQoJYmVjYXVzZSB0aGUgcmVxdWVzdGVkIHR5cGUgaXMgbm90IHN1cHBvcnRlZC4KCUFkZGVkIEplcmVteSBXaGl0ZSdzIHdhdmVPdXRHZXRQb3NpdGlvbiBmaXggdG8gd2F2ZUluR2V0UG9zaXRpb24uCgoJKiBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCU9ubHkgZG8gdW5pY29kZSBjb252ZXJzaW9uIGluIEhUTUwgSGVscCBjb250cm9sIHdoZW4gZmlsZW5hbWUgaXMKCXNwZWNpZmllZC4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3JlY29yZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTG9hZCBhbmQgZGlzcGxheSBiaXRtYXBzIGluIHRoZSBkaWFsb2dzLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCB3aW5kb3dzL3Njcm9sbC5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUluIFNjcm9sbFdpbmRvd0V4LCBpZiB0aGUgd2luZG93IGFscmVhZHkgaGFzIGFuIHVwZGF0ZSByZWdpb24gdGhlbiBhZGQKCXRoaXMgdG8gaHJnblVwZGF0ZS4gV2l0aCBhIGNvbmZvcm1hbmNlIHRlc3QuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ndWkuYywgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAdGJhLmVsdGUuaHU+CglTaWxlbmNlIHNvbWUgc2lnbmVkbmVzcyB3YXJuaW5ncy4KCjIwMDUtMDMtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvZGliLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJSW50cm9kdWNlZCBhbiBYX1BIWVNCSVRNQVAgc3RydWN0dXJlIHRvIGFsbG93IHN0b3JpbmcgbW9yZSB4MTFkcnYKCWluZm9ybWF0aW9uIGFib3V0IGEgYml0bWFwIHRoYW4ganVzdCB0aGUgcGl4bWFwIGlkLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsCgkgIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglGaXggc29tZSBpbmNvcnJlY3QgdXNlcyBvZiB0aGUgb2sgbWFjcm8gd2hlcmUgdGhlIHJlc3VsdCBkZXBlbmRzIG9uCgl0aGUgZXZhbHVhdGlvbiBvcmRlciBvZiBpdHMgYXJndW1lbnRzLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC90ZXN0cy9maWxlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBhbmQgdGVzdCBfY2hzaXplLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOgoJQXZvaWQgZGlyZWN0bHkgYWNjZXNzaW5nIHRoZSBCSVRNQVBPQkogc3RydWN0dXJlLgoKCSogZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJUmVtb3ZlZCB0aGUgbm8gbG9uZ2VyIG5lZWRlZCBYMTFEUlZfZ2V0X2NsaWVudF9hcmVhX29mZnNldCBmdW5jdGlvbi4KCgkqIGRsbHMveDExZHJ2L2RjZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmM6CglSZXR1cm4gdGhlIGNvb3JkaW5hdGVzIGluZm9ybWF0aW9uIG5lZWRlZCB0byBzZXR1cCB0aGUgREMgcGFyYW1ldGVycwoJaW4gdGhlIGdldF92aXNpYmxlX3JlZ2lvbiByZXF1ZXN0IGluc3RlYWQgb2YgcmVxdWlyaW5nIHRoZSBjbGllbnQgdG8KCWNvbXB1dGUgaXQgYWdhaW4uCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIHdpbmRvd3Mvc2Nyb2xsLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJSWYgU2Nyb2xsV2luZG93RXggZG8gbm90IHVzZSB0aGUgRENYX1VTRVNUWUxFIHRvIGdldCBhIERDLiBJbnN0ZWFkCgljYWxjdWxhdGUgRENYX0NMSVBTSUJMSU5HUywgRENYX1BBUkVOVENMSVAgYW5kIERDWF9DTElQQ0hJTERSRU4uIFRoZQoJRENYX0NMSVBDSElMRFJFTiBpcyBub3QgdXNlZCB3aGVuIFNjcm9sbFdpbmRvd0V4IGlzIGNhbGxlZCB3aXRoIGEKCVNXX1NDUk9MTENISUxEUkVOIGZsYWcuIFdpdGggYSBjb3VwbGUgb2YgcmVncmVzc2lvbiB0ZXN0cy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQxNi5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJRml4IGEgY29weSZwYXN0ZSBidWcgaW4gZ2V0X2J1ZmZlcl9wZS4KCgkqIGRsbHMvb2xlMzIvc3RnX3Byb3AuYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglFbGltaW5hdGUgZm9yd2FyZCBkZWNsYXJhdGlvbnMsIG1ha2UgZnVuY3Rpb25zIHN0YXRpYy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5jLCBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LmgsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LnJjOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAdGJhLmVsdGUuaHU+CglBc2sgZm9yIGEgdGFnIGlmIG9uZSB3YXMgbm90IGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUuCgoJKiBkbGxzL2dkaS9jbGlwcGluZy5jLCBkbGxzL2dkaS9kYy5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIERDIG1ldGEgcmVnaW9uLgoKCSogZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL2h0bWxkb2MuYywgZGxscy9tc2h0bWwvbWFpbi5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWxfcHJpdmF0ZS5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgSFRNTERvY3VtZW50MiBpbnRlcmZhY2UuCgoJKiBkbGxzL3VzZXIvdGVzdHMvdGV4dC5jOiBQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJVXNlIHRleHRsZW4gaW5zdGVhZCBvZiBsZW4uCglVc2UgdGV4dGhlaWdodCBhcyB0aGUgcmV0dXJuIHZhbHVlIG9mIERyYXdUZXh0QS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4IEdldEZpbGVTZWN1cml0eUEgdGVzdCBvbiBXaW45OC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUGF1bCB2YW4gU2NoYXljayA8cG9sbGVrZUBnbWFpbC5jb20+CglEb24ndCBzdG9wIGxvb2tpbmcgZm9yIGRldmljZXMgaWYgb25lIGNhbid0IGJlIG9wZW5lZC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU2V0IHRoZSByZWdpc3RyeSBrZXlzIHVuZGVyIEhDVVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cwoJTlRcQ3VycmVudFZlcnNpb24gdG8gbWltaWMgdGhlIHdpbi5pbmkgdmFsdWVzLgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB1cCBQSURMIGR1bXBpbmcgY29kZS4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IEFyaWMgQ3lyIDxhY3lyQGFsdW1uaS51d2F0ZXJsb28uY2E+CglKYXBhbmVzZSAxMDYgS2V5Ym9hcmQgZml4LgoKMjAwNS0wMy0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90ZXN0cy9tYWlsc2xvdC5jLAoJICBkbGxzL250ZGxsL2ZpbGUuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9tYWlsc2xvdC5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBtYWlsc2xvdHMuCgoJKiBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsCgkgIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIEdldFN5c3RlbU1lbnUgcmVzcGVjdCBDU19OT0NMT1NFLgoJLSBFbmFibGVNZW51SXRlbSBzaG91bGQgbm90IGdlbmVyYXRlIFdNX1dJTkRPV1BPU0NIQU5HSU5HIG1lc3NhZ2UuCgktIE1ha2Ugbm9uY2xpZW50IGNvZGUgY2hlY2sgZm9yIHByZXNlbmNlIG9mIFNDX0NMT1NFLCBub3QgQ1NfTk9DTE9TRQoJICB3aW5kb3cgY2xhc3Mgc3R5bGUuCgktIEFkZCBhIHRlc3QgY2FzZS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVtb3ZlZCB0aGUgaW5jb21wbGV0ZSBzaWduYXR1cmUgY2hlY2tpbmcgY29kZS4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3VzZXIvdGVzdHMvZGNlLmMsIGRsbHMveDExZHJ2L2RjZS5jLAoJICBzZXJ2ZXIvd2luZG93LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglUaGUgdXBkYXRlIHJlZ2lvbiBwYXNzZWQgaW4gV01fTkNQQUlOVCBhbmQgdGhlIGNsaXBwaW5nIHJlZ2lvbiBwYXNzZWQKCXRvIEdldERDRXggaGF2ZSB0byBiZSBpbiBzY3JlZW4gY29vcmRpbmF0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYywgZGxscy9nZGkvcGFsZXR0ZS5jLCBkbGxzL2tlcm5lbC9jb21tLmMsCgkgIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oLAoJICBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JzYWVuaC9tcGkuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl91bml4ZnMuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmMsIGRsbHMveDExZHJ2L3hmb250LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLCB0b29scy93aWRsL3R5cGVsaWJfc3RydWN0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogaW5jbHVkZS91cmxtb24uaWRsOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgSU1vbmlrZXJQcm9wIGFuZCBJSW50ZXJuZXRQcmlvcml0eSBpbnRlcmZhY2VzLgoKCSogaW5jbHVkZS9tc2h0bWRpZC5oOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgc29tZSBkZWZpbml0aW9ucy4KCgkqIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVJldHVybiBhIGNvbXB1dGVybmFtZSBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBob3N0bmFtZS4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jOgoJQmV0dGVyIGhhbmRsaW5nIG9mIDE2LWJpdCBuYXRpdmUgZGxscyB3aGVuIGEgMzItYml0IGJ1aWx0aW4gd2l0aCB0aGUKCXNhbWUgbmFtZSBleGlzdHM7IHNob3VsZCBoZWxwIHdpdGggdGhlIDE2LWJpdCBjYXJkcy5kbGwgaXNzdWUuCglSZXBsYWNlIHNvbWUgbWFnaWMgZXJyb3IgbnVtYmVycyBieSB0aGUgY29ycmVzcG9uZGluZyBuYW1lcy4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3VzZXIvdGVzdHMvZGNlLmMsCgkgIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwgZGxscy94MTFkcnYvZGNlLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBpbmNsdWRlL3dpbi5oOgoJT25seSByZXNldCB0aGUgY2xpcCByZWdpb24gaW4gR2V0REMoKSBpZiBhIG5ldyByZWdpb24gaXMgc3BlY2lmaWVkLgoJRG9uJ3QgcmVsZWFzZSB0aGUgY2xpcCByZWdpb24gZm9yIHdpbmRvdyBEQ3MgaW4gUmVsZWFzZURDKCksIGV4Y2VwdAoJd2hlbiBjYWxsZWQgZnJvbSBFbmRQYWludCgpLgoJQWRkZWQgYSBidW5jaCBvZiB0ZXN0cy4KCgkqIGRsbHMvdXNlci9tZW51LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglaZXJvIG91dCByZXR1cm4gc3RyaW5nIGluIEdldE1lbnVTdHJpbmdBL1cuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VjLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIFJ0bEFic29sdXRlVG9TZWxmUmVsYXRpdmVTRC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJS2VlcCBkc291bmQ4LmMgYW5kIGRzb3VuZC5jIGluIHN5bmMuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUluaXRpYWxpemUgW29yaWd8aGltZXRyaWNdW1dpZHRofEhlaWdodF0gZm9yIFBJQ1RZUEVfSUNPTiBjYXNlLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL250ZGxsL3JlZy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBzYXZlX3JlZ2lzdHJ5IGFuZCB1bmxvYWRfa2V5IHNlcnZlciBjYWxscyB0byBudGRsbC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoZSBHVUlEIG9mIHRoZSB0eXBlbGliIHdlIGFyZSByZWdpc3RlcmluZyBtYXRjaGVzIHRoZSBndWlkCglyZXF1ZXN0ZWQgZnJvbSBNU0kuIElmIG5vdCBzZWFyY2ggdGhlIGdpdmVuIHR5cGVsaWIgZmlsZSB0byBmaW5kIHRoZQoJdHlwZWxpYiByZXF1ZXN0ZWQgdG8gcmVnaXN0ZXIuCgoyMDA1LTAzLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUB0YmEuZWx0ZS5odT4KCVRyeSB1c2luZyBhIHN0YWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGF0IGZpcnN0IHRvIHNpbGVuY2UgWm9uZUFsYXJtCgl3YXJuaW5ncy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQ2hhbmdlU2VydmljZUNvbmZpZy4KCgkqIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jLCBkbGxzL3VzZXIvdGV4dC5jLAoJICBkbGxzL3dpbmluZXQvbmV0Y29ubmVjdGlvbi5jOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUphbml0b3JpYWw6IEdldCByaWQgb2Ygc3RybmNweS9zdHJuY3B5Vy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCUplcnJ5IEplbmtpbnMgPGplcnJ5X2pfamVua2luc0B5YWhvby5jb20+CglJbXByb3ZlIHdpbmVhbHNhIGRzb3VuZCBkcml2ZXIgYnkgYWNjZXNzaW5nIHNvdW5kIGRyaXZlcidzIGJ1ZmZlcgoJZGlyZWN0bHkgaW4gYW4gdW5kb2N1bWVudGVkIHdheS4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L2RpcmVjdHguYywKCSAgZGxscy9kM2Q5L3RleHR1cmUuYywgZGxscy9kM2Q5L3ZvbHVtZS5jLCBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsIGRsbHMvd2luZWQzZC9pbmRleGJ1ZmZlci5jLAoJICBkbGxzL3dpbmVkM2QvcmVzb3VyY2UuYywgZGxscy93aW5lZDNkL3N1cmZhY2UuYywKCSAgZGxscy93aW5lZDNkL3RleHR1cmUuYywgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL3dpbmVkM2Qvdm9sdW1lLmMsIGRsbHMvd2luZWQzZC92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CgktIFZvbHVtZSBub3cgaW5oZXJpdHMgUmVzb3VyY2UuIFRoaXMgaXNuJ3QgdGhlIHdheSBNaWNyb3NvZnQgaW1wbGVtZW50cwoJICB0aGUgaW50ZXJmYWNlIGJ1dCBpdCBpcyBtb3JlIGNvcnJlY3Qgd2F5IChNaWNyb3NvZnQgZXZlbiBoYXZlIGEKCSAgcmVzb3VyY2UgdHlwZSBvZiB2b2x1bWUpLgoJLSBNb3ZlZCB1c2FnZSwgZm9ybWF0LCBhbGxvY2F0ZWRNZW1vcnkgYW5kIHNpemUgb250byB0aGUgcmVzb3VyY2UKCSAgY2xhc3Mgc3RydWN0dXJlLgoJLSBSZWZhY3RvcmVkIFByZWxvYWQgZm9yIGNsYXNzZXMgdGhhdCBpbmhlcml0IEJhc2VUZXh0dXJlLCBwcmVsb2FkIG5vdwoJICBiaW5kcyB0aGUgdGV4dHVyZSBpbnN0ZWFkIG9mIGJpbmQgdGV4dHVyZSBjYWxsaW5nIHByZWxvYWQsIGJpbmRUZXh0dXJlCgkgIGFsbG9jYXRlZCBhIGdsVGV4dHVyZSBpZiB0aGVyZSBpc24ndCBvbmUuCgktIEFkZGVkIHR3byBuZXcgY2xhc3Mgc3RhdGljIG1lbWJlcnMgQmFzZVRleHR1cmVfQ2xlYW5VcCBhbmQKCSAgUmVzb3VyY2VfQ2xlYW5VcCB0aGF0IHNob3VsZCBiZSBjYWxsZWQgYnkgY2xhc3NlcyB0aGF0IGltcGxlbWVudAoJICBCYXNlVGV4dHVyZSBvciBSZXNvdXJjZS4KCgkqIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy9kY2UuYywgZGxscy94MTFkcnYvZGNlLmM6CglPbmx5IHJlc3RvcmUgdGhlIERDIGF0dHJpYnV0ZXMgb24gdGhlIG5leHQgR2V0REMsIGFuZCBhZGQgc3VwcG9ydCBmb3IKCXRoZSBEQ1hfTk9SRVNFVEFUVFJTIGZsYWcuCglHZXQgcmlkIG9mIHRoZSBEQ0UgZmxhZ3MsIHNpbXBsaWZ5IHRoZSBjb2RlIGEgYml0LgoJQWRkIHNvbWUgdGVzdCBjYXNlcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJRml4IGZhaWx1cmUgdG8gbm90aWNlIHRoZSB1c2Ugb2YgYSBHSUYgcGFsZXR0ZSBpbmRleCBncmVhdGVyIG9yIGVxdWFsCgl0byAxMjggZm9yIHRyYW5zcGFyZW5jeS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvQ3MucmMsIHByb2dyYW1zL3JlZ2VkaXQvRGUucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRnIucmMsIHByb2dyYW1zL3JlZ2VkaXQvSXQucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvSmEucmMsIHByb2dyYW1zL3JlZ2VkaXQvUGwucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUHQucmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgRVNfQVVUT0hTQ1JPTEwgc3R5bGUgdG8gdGhlIGVkaXR0ZXh0IGNoYW5naW5nIHRleHQgZGF0YS4KCgkqIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW4gYSBjYWxsIHRvIEVudW1FbmhNZXRhRmlsZSB3aGVuIGhkYyBpcyBOVUxMLCBscFJlY3QgbWF5IGJlIE5VTEwuIEFkZAoJYSB0ZXN0IGZvciB0aGlzLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdyaXRlRm10VXNlclR5cGVTdGcgZG9lc24ndCBwdWxsIGEgQ0xTSUQgZnJvbSB0aGUgcmVnaXN0cnkgLSBpdCdzCgl1bmNsZWFyIHdoZW4gKGlmIGF0IGFsbCkgdGhpcyBnZXRzIHdyaXR0ZW4uCgoJKiBkbGxzL3VzZXIva2JkMTYuYywgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL3VzZXIxNi5jOgoJTW92ZWQgMTYtYml0IHN0cmluZyBmdW5jdGlvbnMgdG8gdXNlcjE2LmMgYW5kIGtiZDE2LmMuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsCgkgIGRsbHMvZGJnaGVscC9taW5pZHVtcC5jLCBkbGxzL2RiZ2hlbHAvbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9wYXRoLmMsCgkgIGRsbHMvZGJnaGVscC9wZV9tb2R1bGUuYywgaW5jbHVkZS9kYmdoZWxwLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gVmFyaW91cyBpbXByb3ZlbWVudHMgZm9yIG1pbmlkdW1wIG1vZHVsZSBpbmZvcm1hdGlvbgoJICAuIGFkZGVkIHRpbWVzdGFtcCAmIGNoZWNrc3VtIGluIFBFIG1vZHVsZQoJICAuIGFkZGVkIHNpemUgJiBjaGVja3N1bSBpbiBFTEYgbW9kdWxlCgkgIC4gd2luZSBsb2FkZXIgbm93IGFwcGVhcnMgd2l0aCBpdHMgcGF0aG5hbWUuCgktIEltcGxlbWVudGVkIFBFICYgRUxGIHRpbWVzdGFtcCAmIGNoZWNrc3VtIHZhbGlkYXRpb24gaW4KCSAgU3ltRmluZEZpbGVJblBhdGguCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci91aXRvb2xzLmMsIHdpbmRvd3MvcmVjdC5jOgoJTW92ZWQgcmVjdGFuZ2xlIGZ1bmN0aW9ucyB0byB1aXRvb2xzLmMgYW5kIHJlbW92ZWQgcmVjdC5jLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVbmljb2RpZnkgV0lOU1BPT0xfT3BlbkRyaXZlclJlZygpLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBjbG9zZSByZWcga2V5IGlmIHRoZSBvcGVuIGZhaWxlZC4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJU2VyaWFsaXplIE5VTEwgcG9pbnRlciBpbnRlcmZhY2VzIGNvcnJlY3RseS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgd2luZG93cy9zY3JvbGwuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglTY3JvbGxXaW5kb3cgc2hvdWxkIGNhbGwgU2Nyb2xsV2luZG93RXggd2l0aCB0aGUgU1dfRVJBU0UgZmxhZwoJc2V0LiBXaXRoIGNvbmZvcm1hbmNlIHRlc3QuCgoJKiBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaCwgc2VydmVyL3NlcmlhbC5jLAoJICBzZXJ2ZXIvc29jay5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglDbGVhbi11cCBhc3luYyBJTyBpbnRlcm5hbCBmdW5jdGlvbnMuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvcmVnLmMsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgc2VydmVyL3JlZ2lzdHJ5LmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gSW1wbGVtZW50IE50TG9hZEtleS4KCS0gRm9yd2FyZCBSZWdMb2FkS2V5IHRvIE50TG9hZEtleS4KCgkqIGRsbHMvdXNlci91c2VyMTYuYywgd2luZG93cy9yZWN0LmM6CglNb3ZlZCAxNi1iaXQgcmVjdGFuZ2xlIGZ1bmN0aW9ucyB0byB1c2VyMTYuYy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xvY2FsZS5jOgoJVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglJbXBsZW1lbnQgU2V0Q1BHbG9iYWwgKGFuIHVuZG9jdW1lbnRlZCBXaW4zMiBBUEkpLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhIHRlc3QgZm9yIGFkdmFwaTMyLCB3aGljaCBkb2N1bWVudHMgYSBjcmFzaCBpbiB3aW5lIHRyaWdnZXJlZAoJYnkgaW5jb3JyZWN0IGFwaSB1c2FnZS4KCgkqIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvb2xlMi5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ2hhbmdlIHByb3RvdHlwZXMgc28gZ2NjIHdpdGggc29tZSB3YXJuaW5ncyBkb2Vzbid0IGJhcmsuCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+Cglyc2FiYXNlIGRvZXNuJ3QgdXNlIGFueSB0eXBlcyBub3csIHNvIHJlbW92ZSBpdC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXggR2V0RmlsZVNlY3VyaXR5VyBmb3Igbm90IGV4aXN0aW5nIGRpcmVjdG9yaWVzL2ZpbGVzLgoKCSogZGxscy9kYmdoZWxwL21zYy5jLCBkbGxzL2RiZ2hlbHAvc3ltYm9sLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gUERCOiBiZXR0ZXIgY2hlY2tpbmcgZm9yIGVycm9yIGNvbmRpdGlvbnMKCS0gRml4ZWQgbmFtZSBkZW1hbmdsaW5nICh3aGVuIGFjdGl2YXRlZCkgd2hlbiBzZWFyY2hpbmcgZm9yIGEgc3ltYm9sCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3JlZy5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRml4ZWQgbnRkbGw6cmVnIHRlc3Qgb24gd2luOXguCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIGNvbnRyb2wgY2hhcmFjdGVycyBpbiBWa0tleVNjYW5FeCBzaW1pbGFyIHRvIHdoYXQgV2luZG93cwoJZG9lcy4KCgkqIGRsbHMvdXNlci9zY3JvbGwuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCS0gR2V0U2Nyb2xsUmFuZ2Ugc2hvdWxkIHJldHVybiBhbiBlbXB0eSByYW5nZSwgYm90aCB1cHBlciBhbmQgbG93ZXIKCSAgbGltaXQgemVybywgaWYgdGhlIHdpbmRvdyBoYXMgbm8gc2Nyb2xsYmFycyAobXNkbikuCgktIEdldFNjcm9sbEluZm8ncyByZXR1cm4gdmFsdWUgaXMgVFJVRSBpcyBuQmFyIGlzIFNCX0NUTCBvciBpZgoJICBhbnl0aGluZyBpcyBmaWxsZWQgaW4gdGhlIFNDUk9MTElORk8gc3RydWN0dXJlLCBvdGhlcndpc2UgdGhlIHJldHVybgoJICB2YWx1ZSBpcyBGQUxTRS4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRml4ZWQgVlRfQlNUUnxWVF9CWVJFRiBtYXJzaGFsbGluZy4KCUFkZGVkIFZUX0k0fFZUX0JZUkVGIG1hcnNoYWxsaW5nLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2RhdGFiYXNlLmMsIGRsbHMvbXNpL21zaS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3BsaXQgb3V0IGRhdGFiYXNlIGZ1bmN0aW9ucywgcmVtb3ZlIGRlcGVuZGVuY2Ugb24gd2luZS91bmljb2RlLmguCgoyMDA1LTAzLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsCgkgIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZ3JhcGguYywgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvaXBobHBhcGkvaWZlbnVtLmMsIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9hdG9tMTYuYywgZGxscy9rZXJuZWwvcHJvZmlsZS5jLCBkbGxzL3JzYWVuaC9yc2FlbmguYywKCSAgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvdXJsLmMsCgkgIGRsbHMvd2luaW5ldC9jb29raWUuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy9kYmdoZWxwL2RiZ2hlbHAuYywKCSAgZGxscy9kYmdoZWxwL21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvc3ltYm9sLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcHJvcHNldC5jLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmUuYywgZGxscy9nZGkvZW52LmMsIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYywKCSAgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FwcHNlYXJjaC5jLCBkbGxzL21zaS9kaWFsb2cuYywKCSAgZGxscy9tc2kvZm9ybWF0LmMsIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvcXVhcnR6L2Rzb3VuZHJlbmRlci5jLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovdHJhbnNmb3JtLmMsCgkgIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYywgZGxscy9xdWFydHovd2F2ZXBhcnNlci5jLAoJICBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9zZXR1cGNhYi5jLAoJICBkbGxzL3RhcGkzMi9hc3Npc3RlZC5jLCBkbGxzL3dpbmVwcy9hZm0yYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLCBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLAoJICBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsIHdpbmRvd3Mvc3B5LmM6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJSmFuaXRvcmlhbDogR2V0IHJpZCBvZiBzdHJuY3B5L3N0cm5jcHlXLgoKCSogZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9kaWIuYywKCSAgZGxscy94MTFkcnYveDExZHJ2Lmg6CglNZXJnZWQgWDExRFJWX0JJVE1BUF9DcmVhdGVCaXRtYXBIZWFkZXJGcm9tUGl4bWFwIGludG8KCVgxMURSVl9ESUJfQ3JlYXRlRElCRnJvbVBpeG1hcCBhbmQgc2ltcGxpZmllZCB0aGUgY29kZSBhIGJpdC4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGVzdHMvbWFpbHNsb3QuYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IENyZWF0ZU1haWxzbG90IHVzaW5nIE50Q3JlYXRlTWFpbHNsb3RGaWxlLgoKCSogZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBmdW5jdGlvbiBwcm90b3R5cGVzLCBtYWtlIGZ1bmN0aW9ucyBzdGF0aWMuCgoJKiBwcm9ncmFtcy93Y21kL2JhdGNoLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCU5hdGl2ZSB3Y21kLmV4ZSBhY2NlcHRzIENBTExzIHRvIC5leGUgZmlsZXMuCgoJKiB0b29scy93aWRsL3dpZGx0eXBlcy5oOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglLZWVwIHR5cGVzIHNvcnRlZCBpbiBhbHBoYWJldGljYWwgb3JkZXIuCgoJKiB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55OgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIHN1cHBvcnQgZm9yIHNpbmdsZSBpbiBpZGwgZmlsZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIGEgdGVzdCBmb3IgR2V0RmlsZVNlY3VyaXR5QS4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRml4ZWQgcHB2T2JqZWN0IHNlcmlhbGl6ZXIgKGRlcmVmIHR3aWNlIGluc3RlYWQgb2Ygb25jZSkuCglBY3R1YWxseSBwYXNzIGJhY2sgcmV0dXJuIHZhbHVlIG9mIHJlbW90ZSBjYWxsIGluIHR5cGUgbWFyc2hhbGxlci4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RpbWUuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJUmVtb3ZlIHRlc3RzIHRoYXQgZmFpbCBiYWRseSBvbiBXaW5kb3dzIDk4LgoKCSogZGxscy9udGRsbC90ZXN0cy9lcnJvci5jOiBTYXVsaXVzIEtyYXN1Y2thcyA8c2F1bGl1czJAYXIuZmkubHQ+CglGaXggYW4gZXJyb3IgY29kZSBmb3IgTUUuCgoJKiBpbmNsdWRlL2F4ZXh0ZW5kLmlkbDogVmxhZGR5IEltcGFsZXIgPHZsYWRkeUB1dGNoYXQuY29tPgoJRGVmaW5lIHRoZSBJQU1TdHJlYW1Db25maWcgaW50ZXJmYWNlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBjaGVja2luZyBmb3IgYXJ0c2MgbGlicmFyeS4KCjIwMDUtMDMtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvYnJ1c2guYywgZGxscy94MTFkcnYvZGliLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCUFkZGVkIFgxMURSVl9nZXRfcGl4bWFwIGFuZCBYMTFEUlZfc2V0X3BpeG1hcCBmdW5jdGlvbnMgdG8gYXZvaWQKCWRpcmVjdCBhY2Nlc3NlcyB0byB0aGUgcGh5c0JpdG1hcCBmaWVsZCBvZiB0aGUgYml0bWFwIHN0cnVjdHVyZS4KCgkqIGRsbHMvb2xlMzIvYmluZGN0eC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgZnVuY3Rpb24gcHJvdG90eXBlcywgbWFrZSBmdW5jdGlvbnMgc3RhdGljLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglGaXggQlNUUiB0cmFjaW5nIGluIHRoZSB0eXBlbGliIG1hcnNoYWxsZXIuCgoJKiBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvaW5pdC5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgaW5jbHVkZS9nZGkuaDoKCVN0b3JlIHRoZSBoYW5kbGUgdG8gdGhlIHN0b2NrIGJpdG1hcCB3aGVuIHRoZSBmaXJzdCBEQyBpcyBjcmVhdGVkIHRvCglhdm9pZCBleHBvcnRpbmcgdGhlIERFRkFVTFRfQklUTUFQIGRlZmluZS4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRm9ybWF0IFZUX1VJMSwgVlRfSTEsIFZUX1VJMiwgVlRfSTIgY29ycmVjdGx5LgoKCSogZGxscy9vbGUzMi9kYXRhY2FjaGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IGZ1bmN0aW9uIHByb3RvdHlwZXMuCgoJKiBkbGxzL29sZTMyL2FudGltb25pa2VyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBmdW5jdGlvbiBwcm90b3R5cGVzLCBtYWtlIGZ1bmN0aW9ucyBzdGF0aWMuCgoJKiBkbGxzL3gxMWRydi9kY2UuYywgZGxscy94MTFkcnYvaW5pdC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCVN0b3JlIHRoZSBEQ0UgcG9pbnRlciBpbiB0aGUgREMgcGh5c0RldiBzdHJ1Y3R1cmUgdXNpbmcgYW4geDExZHJ2IEdESQoJZXNjYXBlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgYXBpIGRlZmluaXRpb25zLCByZW1vdmUgZHVwbGljYXRlIGNvZGUuCgoJKiBkbGxzL3NldHVwYXBpL3N0dWJzLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUmVtb3ZlIHN0cmF5IDhiaXQgY2hhcmFjdGVyLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJSmVycnkgSmVua2lucyA8amVycnlfal9qZW5raW5zQHlhaG9vLmNvbT4KCURvbid0IG1pc3Rha2UgZnJhbWVzIGZvciBieXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHNpemUgcGFzc2VkIHRvIFNQSV9OT05DTElFTlRNRVRSSUNTLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBZGRlZCBJRGlzcGF0Y2g6OkdldElEc09mTmFtZXMoKSBzcGVjaWFsIGNhc2Ugc2VyaWFsaXppbmcuCglIYW5kbGUgVlRfUFRSIC8gTlVMTCBtYXJzaGFsbGluZyBjb3JyZWN0bHkuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBjb21wdXRpbmcgbm9uY2xpZW50IGFyZWEgdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gdGhhdCBhIGNoaWxkCgl3aW5kb3dzIHdpdGggdGhlIFdTX1BPUFVQIHN0eWxlIGNhbiBoYXZlIGEgbWVudSBiYXIuCgoyMDA1LTAzLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZGMuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy9nZGkvZ2Rpb2JqLmMsCgkgIGluY2x1ZGUvZ2RpLmg6CglFeHBsaWNpdGx5IHN0b3JlIHRoZSBzdGFjayBvZiBzYXZlZCBEQ3MgaW4gdGhlIERDIHN0cnVjdHVyZSBpbnN0ZWFkIG9mCgl1c2luZyB0aGUgMTYtYml0IGhOZXh0IGZpZWxkIGluIHRoZSBvYmplY3QgaGVhZGVyLgoKCSogZGxscy9nZGkvY2xpcHBpbmcuYywgZGxscy9nZGkvZGMuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaDoKCU1haW50YWluIHRoZSBzdGFjayBvZiBzYXZlZCB2aXMgcmVnaW9ucyBpbiB0aGUgREMgc3RydWN0dXJlIGluc3RlYWQgb2YKCXN0b3JpbmcgaXQgZGlyZWN0bHkgaW4gdGhlIHJlZ2lvbiBvYmplY3RzLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIHtBbGxvYyxSZUFsbG9jLEZyZWV9KCkgaW5zdGVhZCBvZiBIZWFwe0FsbG9jLFJlQWxsb2MsRnJlZX0oKS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCVByaW50IHJldHZhbCBpbiBkZWNpbWFsIHRvIGF2b2lkIGNvbmZ1c2lvbi4KCU5UNCBmYWlscyB3aXRoIEVSUk9SX0lOVkFMSURfVEFSR0VUX0hBTkRMRSBpbnN0ZWFkIG9mCglFUlJPUl9SRURJUl9QQVVTRUQuCglVc2Ugc29tZSBjb3JyZWN0IG1lc3NhZ2VzIG9uIGVycm9yLgoJRXh0cmEgdHJhY2luZy4KCgkqIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoaWxkIHdpbmRvd3Mgd2l0aCB0aGUgV1NfUE9QVVAgc3R5bGUgYXJlIGFsbG93ZWQgdG8gaGF2ZSBhIG1lbnUuCgoJKiBkbGxzL3V1aWQvdXVpZC5jLCBpbmNsdWRlLy5jdnNpZ25vcmUsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvbXNodG1oc3QuaWRsOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIG1zaHRtaHN0LmlkbC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAdGJhLmVsdGUuaHU+CglDaGVjayBkZXNrdG9wIHZpc2liaWxpdHkgYWZ0ZXIgcHJvY2Vzc2luZyBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLAoJICB3aW5kb3dzL3Njcm9sbC5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVNjcm9sbERDIGFuZCBYMTFEUlZfU0NST0xMREMgc2hvdWxkIHNjcm9sbCBvbmx5IHBpeGVscyBjb21pbmcgZnJvbQoJd2l0aGluIHRoZSB2aXNpYmxlIHJlZ2lvbiwgY2xpcHBlZCB0byB0aGUgY2xpcHBpbmcgcmVnaW9uIGlmIHRoYXQKCWV4aXN0cy4gQWRkIHRoZSBkZXN0aW5hdGlvbiBvZiBwaXhlbHMgY29taW5nIGZyb20gdGhlIG91dHNpZGUgb2YgdGhpcwoJcmVnaW9uIHRvIHRoZSB1cGRhdGUgcmVnaW9uLiBXaXRoIHRlc3RzIHRoYXQgZGVwZW5kIG9uIHRoaXMuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3VzZXIvdXNlcjE2LmMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9kY2UuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvZGNlLmgsIGluY2x1ZGUvd2luLmgsCgkgIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYzoKCU1vdmVkIERDRSBzdXBwb3J0IHRvIHRoZSBYMTEgZHJpdmVyLgoKCSogZGxscy9rZXJuZWwvdmlydHVhbC5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglEb24ndCBmYXVsdCBvbiBOVUxMIHBvaW50ZXJzIGluIElzKlB0ciBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUZpeCBQQVJBTUZMQUdfRk9VVCB0eXBvIGluIHRoZSB0bWFyc2hhbGxlci4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9yZWNvcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBzdHJkdXAsIGltcGxlbWVudCBNc2lEYXRhYmFzZUltcG9ydEEuCgoJKiBkbGxzL3VzZXIvbWVudS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglEb24ndCBtYXAgcG9pbnQgdG8gcGFyZW50J3MgY2xpZW50IHdpbmRvdyBiZWNhdXNlIHRoZSByZXN0IG9mIHRoZSBjb2RlCglhc3N1bWVzIHNjcmVlbiBjb29yZGluYXRlcy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy94MTFkcnYvd2luZG93LmMsIGluY2x1ZGUvd2luLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYywgd2luZG93cy93aW4uYzoKCVJlcGxhY2UgdGhlIGxpbmtfd2luZG93IHJlcXVlc3QgYnkgYSBzZXRfcGFyZW50IHJlcXVlc3Qgc2luY2UgdGhhdCBpcwoJYWxsIGxpbmtfd2luZG93IGlzIHVzZWQgZm9yIGF0IHRoaXMgcG9pbnQuCglHZXQgcmlkIG9mIHRoZSBXSU5fTGlua1dpbmRvdy9VbmxpbmtXaW5kb3cgZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVByb3BlciBoYW5kbGluZyBmb3IgR1dMX1NUWUxFLgoJTWlub3IgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBhIG1lbW9yeSBsZWFrIGluIHRvb2xiYXIuIEF2b2lkIGNhc3RzLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVJlcGxhY2UgYSB0cmFjZSB3aXRoIGEgcHJldmlvdXNseSByZW1vdmVkIHRlc3QuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglIYW5kbGUgd1BhcmFtIGluIFdNX1BBSU5UIHByb3Blcmx5OiBpZiBub24tbnVsbCwgaXQgaXMgdGhlIGhkYyB3ZSBhcmUKCXN1cHBvc2VkIHRvIHVzZSB0byBkcmF3IGludG8uCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgUm9iZXJ0IFNoZWFybWFuJ3MgZXhwbGFuYXRpb24gYWJvdXQgV01fTkNQQUlOVC4KCU1vdmUgdGVzdGluZyBjb21tZW50cyBpbiBhIG1vcmUgYXBwcm9wcmlhdGUgcGxhY2UuCgoJKiBkbGxzL3F1YXJ0ei90ZXN0cy9maWx0ZXJncmFwaC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglEb24ndCBydW4gRmlsdGVyR3JhcGggdGVzdHMgaWYgRmlsdGVyR3JhcGggZnVuY3Rpb25hbGl0eSBpcyBub3QKCWF2YWlsYWJsZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglGaXggdGhyZWFkIGFmZmluaXR5IHRlc3QgZm9yIFNNUCBtYWNoaW5lcy4KCgkqIGRsbHMvbmV0YXBpMzIvdGVzdHMvYWNjZXNzLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCU5vIG5lZWQgY29udGludWluZyB0ZXN0cyBpZiBubyBOZXRVc2VyR2V0SW5mby4KCjIwMDUtMDMtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9pbml0LmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCVRyeSBhIFRydWVDb2xvciB2aXN1YWwgaWYgWHJlbmRlciBmYWlscyB3aXRoIGEgRGlyZWN0Q29sb3Igb25lLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZzE2LmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9kaW5wdXQvZGV2aWNlLmMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L21vdXNlLmMsCgkgIGRsbHMvZG1zdHlsZS9jb21tYW5kdHJhY2suYywgZGxscy9kcGxheXgvZHBsYXkuYywKCSAgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsCgkgIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbG9iYnlzcC5jLAoJICBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsIGRsbHMvZ2RpL2ZvbnQuYywKCSAgZGxscy9nZGkvZ2RpMTYuYywgZGxscy9nZGkvbWZkcnYvYml0Ymx0LmMsIGRsbHMvZ2RpL21mZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy9nZGkvcGFsZXR0ZS5jLCBkbGxzL2dkaS9wYXRoLmMsCgkgIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaXBobHBhcGkvaWZlbnVtLmMsCgkgIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jLCBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuYywKCSAgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMva2VybmVsL2hlYXAuYywKCSAgZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsCgkgIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywKCSAgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbWFwaTMyL3V0aWwuYywgZGxscy9tcHIvd25ldC5jLAoJICBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXNjbXMvcHJvZmlsZS5jLCBkbGxzL21zZG1vL2Rtb3JlZy5jLAoJICBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY3VzdG9tLmMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL25ldGFwaTMyL25iY21kcXVldWUuYywKCSAgZGxscy9uZXRhcGkzMi9uYm5hbWVjYWNoZS5jLCBkbGxzL25ldGFwaTMyL25idC5jLAoJICBkbGxzL25ldGFwaTMyL25ldGJpb3MuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWRsZy9pbnNvYmpkbGcuYywgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywKCSAgZGxscy9yc2FlbmgvaGFuZGxlLmMsIGRsbHMvcnNhZW5oL2ltcGxnbHVlLmMsIGRsbHMvcnNhZW5oL3JzYWVuaC5jLAoJICBkbGxzL3NlY3VyMzIvc2VjdXIzMi5jLCBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywKCSAgZGxscy9zZXR1cGFwaS9kaXNrc3BhY2UuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvdXJsLmMsIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywKCSAgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci9saXN0Ym94LmMsCgkgIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdm5idC52eGQvdm5idC5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsCgkgIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsIGRsbHMvd2luZXBzL2dseXBobGlzdC5jLCBkbGxzL3dpbmVwcy9pbml0LmMsCgkgIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywKCSAgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9kc2NhcHR1cmUuYywgZGxscy93aW5tbS93aW5lb3NzL2RzcmVuZGVyLmMsCgkgIGRsbHMvd2lubW0vd2lubW0uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3gxMWRydi9iaXRibHQuYywKCSAgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi9wYWxldHRlLmMsCgkgIGRsbHMveDExZHJ2L3hkbmQuYywgZGxscy94MTFkcnYveGZvbnQuYywgd2luZG93cy93aW5wcm9jLmM6CglKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglHZXQgcmlkIG9mIEhlYXBBbGxvYyBjYXN0cy4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJQXZvaWQgY2FsbGluZyBXSU5fTGlzdENoaWxkcmVuIGZyb20gdGhlIGdyYXBoaWNzIGRyaXZlcnMuCgoJKiBzZXJ2ZXIvcXVldWUuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zcHkuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIHhidXR0b25zLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy94MTFkcnYvbW91c2UuYywgaW5jbHVkZS93aW51c2VyLmg6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZGVkIGZ1bGwgc3VwcG9ydCBmb3IgeGJ1dHRvbnMgKHNpZGUgbW91c2UgYnV0dG9ucykuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmM6CglUYWtlIGludG8gYWNjb3VudCB0aGUgbW9yZSBjb3JyZWN0IGJlaGF2aW9yIG9mIHJlY2VudCBMaW51eCBrZXJuZWxzLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3BhY2thZ2UuYywKCSAgZGxscy9tc2kvcHJldmlldy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBpbnN0YW5jZXMgb2YgSGVhcEFsbG9jL011bHRpQnl0ZVRvV2lkZUNoYXIgd2l0aCB0aGUgaW50ZXJuYWxseQoJZGVmaW5lZCBzdHJkdXBBdG9XLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJZiBydW5uaW5nIGluIFVJIG1vZGUsIHRoZW4gZGlzcGxheSB0aGUgVUkgbW9kZSBkaWFsb2dzIGF0IHRoZSBlbmQgb2YKCXRoZSBpbnN0YWxscy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJQWZ0ZXIgRmxvYXQtPnN0cmluZyBjb252ZXJzaW9uIHZpYSBzcHJpbnRmVygpLCBWYXJEZWNGcm9tUls0fDhdIGlzCglmb3JjZWQgdG8gdXNlIFVTIGxvY2FsZSBmb3Igc3RyaW5nLT5EZWNpbWFsIGNvbnZlcnNpb24sIHRvIGFncmVlIHdpdGgKCXNwcmludGZXKCkuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUZpeCBzb21lIFdpbmRvd3MgOTUgaXNzdWVzLgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy91c2VyL3Njcm9sbC5jLAoJICBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL3dpbi5oLAoJICB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGlhbG9nLmMsCgkgIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglEb24ndCBtYWludGFpbiBhIGNsaWVudC1zaWRlIFdORCBzdHJ1Y3R1cmUgZm9yIHRoZSBkZXNrdG9wIHdpbmRvdy4KCU1hZGUgV0lOX0dldFB0ciByZXR1cm4gV05EX0RFU0tUT1AgaW4gdGhhdCBjYXNlLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGVyZSdzIG9ubHkgb25lIHBsYWNlIHdlIGFsbG9jYXRlIGRpYWxvZyBjb250cm9scy4KCgkqIGRsbHMvbXNpL3JlZ2lzdHJ5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHVwIHJlZ2lzdHJ5IGZ1bmN0aW9ucy4KCgkqIGRsbHMvcmljaGVkMjAvd3JpdGVyLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCBcdSBrZXl3b3JkIHRvIG91dHB1dCBzaWduZWQgMTYtYml0IHZhbHVlcy4gQWxzbyBmaXhlZCBDUF9TWU1CT0wKCWNvbnZlcnNpb24gYW5kIHRoZSBkZXRlY3Rpb24gb2YgdGhlIGRlZmF1bHQgZm9udCdzIGNvZGVwYWdlLgoKCSogZGxscy93dHNhcGkzMi93dHNhcGkzMi5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVByZXRlbmQgdGhlcmUgYXJlIDAgdGVybWluYWwgc2VydmVyIHNlc3Npb25zIGFuZCBwcm9jZXNzZXMuCgoJKiBkbGxzL250ZGxsL3JlbGF5LmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglTdXBwb3J0IHJlbGF5IHRyYWNpbmcgb2YgZnVuY3Rpb25zIHdpdGggMTggYXJndW1lbnRzLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSB1c2UgV0lORV9ESU5QVVRfS0VZQk9BUkRfTUFYX0tFWVMgaW5zdGVhZCBoYXJkLWNvZGVkIDI1NiB2YWx1ZQoJLSBiZXR0ZXIgdXNlIG9mIGNyaXRpY2FsIHNlY3Rpb24KCS0gc29tZSBjbGVhbnVwIHRvIGJldHRlciB1bmRlcnN0YW5kIGNvZGUgcGF0aHMKCS0gbG9naWMgY29ycmVjdGlvbiBvbiBTZXRXaW5kb3dzSG9va0V4QS9Vbmhvb2tXaW5kb3dzSG9va0V4IG9uCgkgIGtleWJvYXJkLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueTogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGhhbmRsaW5nIG9mIHVuc2lnbmVkIHR5cGUuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVGhlIGRlcHRoIG9mIHRoZSBjb2xvdXIgYml0bWFwIG5lZWRzIHRvIG1hdGNoIHRoYXQgb2YgdGhlIHNjcmVlbi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgdGhlIHVuaWNvZGlmaWNhdGlvbiBvZiBjb21jdGwzMnVuZG9jLgoKMjAwNS0wMy0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9ob29rLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvdXNlci5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUdldCByaWQgb2YgdGhlIHdpbmRvdyBsb2NrIHN1c3BlbmQgbWVjaGFuaXNtLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsCgkgIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLAoJICBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLAoJICBkbGxzL2NvbW1kbGcvY29sb3JkbGcxNi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsCgkgIGRsbHMvZGJnaGVscC9taW5pZHVtcC5jLCBkbGxzL2RtYmFuZC9iYW5kLmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZXRyYWNrLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9nZGkvZW5obWV0YWZpbGUuYywgZGxscy9rZXJuZWwvaW5zdHIuYywKCSAgZGxscy9tYXBpMzIvcHJvcC5jLCBkbGxzL21zY21zL3Byb2ZpbGUuYywgZGxscy9tc2kvYXBwc2VhcmNoLmMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZTMyLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL3NlcnZlci5jLAoJICBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMxNi5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsCgkgIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxmb2xkZXIuaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy91c2VyL2VkaXQuYywKCSAgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLCBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywKCSAgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRvY3VtZW50YXRpb24vb2xlLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWRldi1rZXJuZWwuc2dtbCwgaW5jbHVkZS9vYmpiYXNlLmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgbGlicy93aW5lL2xvYWRlci5jLCBwcm9ncmFtcy93aW5lZGJnL2JyZWFrLmMsCgkgIHRvb2xzL2ZvbnRfY29udmVydC5zaCwgdG9vbHMvd3JjL25ld3N0cnVjLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVByZXRlbmQgdGhlcmUgYXJlIDAgbG9nIHJlY29yZHMuCglJbXByb3ZlIHRyYWNlcy4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jOiBSb24gSmVuc2VuIDxldGVjaEBqZW50cm9uaWNzLmNvbT4KCUF2b2lkIGJhZCB2aXN1YWwgZXJyb3JzIGluIHRocmVhZF9zZWxlY3Rpb25fd25kKCkuCgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUdldCByaWQgb2YgdGhlIHJlbWFpbmluZyBXSU5fRmluZFduZFB0ciBjYWxscy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGQgUmVnU2F2ZUtleSwgUmVnTG9hZEtleSB0ZXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYWtlIHRoZSB0cmVldmlldyBjb3JyZWN0bHkgc2VhcmNoIHdoZW4gdGhlIHRvcCBpbmRleCBpcyBzZWxlY3RlZC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCVRlc3QgZm9yIFBlZWtOYW1lZFBpcGUgd2l0aCB6ZXJvLWxlbmd0aCBidWZmZXIuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBmYWlsIHdoZW4gb3BlbmluZyBhIGRldmljZSBpbiBkaXJlY3Qgc291bmQgbW9kZS4gUmF0aGVyLCB0cnkKCWFsdGVybmF0ZSBmb3JtYXRzIGZpcnN0IGJlZm9yZSBmYWlsaW5nLgoKCSogZGxscy9udGRsbC92ZXJzaW9uLmM6IEMuIFNjb3R0IEFuYW5pYW4gPGNzY290dEBjc2NvdHQubmV0PgoJVGVhY2ggVkVSU0lPTl9HZXRMaW5rZWRETExWZXJzaW9uIGFib3V0IE1pbmd3MzIgYXBwbGljYXRpb25zLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmM6CglDcmVhdGUgYSBuZXcgc2VydmVyIHJlcXVlc3QgZm9yIGFjY2VwdGluZyBoYXJkd2FyZSBtZXNzYWdlcyBpbnN0ZWFkIG9mCglhYnVzaW5nIHJlcGx5X21lc3NhZ2UuCglBbGxvdyBwYXNzaW5nIHRoZSBkZXRlcm1pbmVkIHdpbmRvdyBmb3IgYSBoYXJkd2FyZSBtZXNzYWdlIGJhY2sgdG8gdGhlCglzZXJ2ZXIgdG8gaGF2ZSBpdCByZWRpc3BhdGNoIHRoZSBtZXNzYWdlIHRvIHRoZSBjb3JyZWN0IHRocmVhZC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy94MTFkcnYvd2luZG93LmMsIHdpbmRvd3Mvd2luLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFdpbmRvdyBzdHlsZXMgcGFzc2VkIHRvIENyZWF0ZVdpbmRvd0V4IG11c3QgdGhlIHNhbWUgYXMgcGFzc2VkIGluCgkgIENSRUFURVNUUlVDVCBmb3IgV01fQ1JFQVRFL1dNX05DQ1JFQVRFLgoJLSBGaXggY2FzZXMgd2hlcmUgV1NfRVhfV0lORE9XRURHRSBzdHlsZSBpcyBhcHBsaWVkLgoJLSBUZXN0cyBmb3IgdGhlIGFib3ZlLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGaXhlZCBNc2lEYXRhYmFzZUltcG9ydEEsIE1zaURhdGFiYXNlSW1wb3J0VywgYW5kCglNc2lDcmVhdGVBbmRWZXJpZnlJbnN0YWxsZXJEaXJlY3Rvcnkgc3R1YiBwYXJhbWV0ZXIgY291bnRzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgdW5pY29kaWZpY2F0aW9uIG9mIHRoZSB0cmVldmlldyBjb21tb24gY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIHVuaWNvZGlmaWNhdGlvbiBvZiB0aGUgdG9vbHRpcHMgY29tbW9uIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIHVuaWNvZGlmaWNhdGlvbiBvZiB0aGUgdG9vbGJhciBjb21tb24gY29udHJvbC4KCU1vdmUgYSBoZWFkZXIgY29tbWVudCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgb3RoZXIgY29udHJvbHMuCglWZXJ5IHNtYWxsIGFsaWdubWVudCBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBsZXRlIHVuaWNvZGlmaWNhdGlvbiBvZiB0aGUgcmViYXIgY29tbW9uIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgdW5pY29kaWZpY2F0aW9uIG9mIHRoZSBwcm9wc2hlZXQgY29tbW9uIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgdW5pY29kaWZpY2F0aW9uIG9mIHRoZSBoZWFkZXIgY29tbW9uIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgdW5pY29kaWZpY2F0aW9uIG9mIHRoZSBmbGF0c2IgY29tbW9uIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSB1bmljb2RpZmljYXRpb24uCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldmFtcCB0aGUgdm9sdW1lIGxvZ2ljIHRvIGJlIG1vcmUgc2VsZiBjb250YWluZWQsIGZpeCBhIGZldyBidWdzIHNvCgl0aGF0IHRoZSB2b2x1bWUgaXMgY29ycmVjdGx5IHJlYWQsIGFuZCBpcyBjb3JyZWN0bHkgY29udmVydGVkIHRvCgl3aW5kb3dzIHN0eWxlIHZvbHVtZSBudW1iZXJzLgoKMjAwNS0wMy0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6CglTaW1wbGlmeSBoYXJkd2FyZSBtZXNzYWdlIHByb2Nlc3NpbmcgYnkgbWVyZ2luZyB0aGUgInJhdyIgYW5kICJjb29rZWQiCglwcm9jZXNzaW5nIGludG8gYSBzaW5nbGUgZnVuY3Rpb24uCgoJKiBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNvbWUgLVdzaWduLWNvbXBhcmUgYW5kIC1XdW5pbml0aWFsaXplZCB3YXJuaW5ncy4KCgkqIGRsbHMva2VybmVsL3ZpcnR1YWwuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJTG9nIHRvICtzZWggd2hlbiBhbiBJc0JhZCogZnVuY3Rpb24gZmF1bHRzLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglJZiB0aGUgZGV2aWNlIGdldHMgaW50ZXJydXB0ZWQsIHdlIGp1c3QgZ2l2ZSB1cC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJVGVzdCBmaXguCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy93aW5wcm9jLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRWxpbWluYXRlIHVzZWxlc3MgSGVhcEFsbG9jKCkgY2FzdHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6CglGZXRjaCBhZ2FpbiB0aGUgZmlsZSB0aW1lIHRvIGNvbXBhcmUgYWdhaW5zdCB0byBhdm9pZCByb3VuZGluZyBlcnJvcnMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUFib3J0IGlmIHdlIGNhbid0IGNyZWF0ZSBhIG5hbWVkIHBpcGUgYXQgYWxsLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywKCSAgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCUpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUVsaW1pbmF0ZSBIZWFwQWxsb2MgY2FzdHMuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IEFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCVBlZWtOYW1lZFBpcGUgbm93IGNoZWNrcyBib3RoIGZvciBhIE5VTEwgYnVmZmVyIGFuZCBhIHplcm8tbGVuZ3RoCglidWZmZXIgYmVmb3JlIHRyeWluZyB0byByZWN2KCkgZnJvbSB0aGUgcGlwZS4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglNb3JlIHRyYWNlIGluZm8uCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc3RyaW5nLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVN0clJldFRvU3RyTkFXIHJldHVybnMgb2sgb24gTlQ0LCB0aG91Z2ggaXQgc2hvdWxkIHJldHVybiBGQUxTRS4KCgkqIGRsbHMvb2xlMzIvdGVzdHMvc3RvcmFnZTMyLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCU1vcmUgdHJhY2UgaW5mbyBmcm9tIHN0b3JhZ2UzMiB0ZXN0LgoKCSogZGxscy9udGRsbC90ZXN0cy9lbnYuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJTW9yZSB0cmFjZSBpbmZvLgoKCSogd2luZG93cy93aW5wb3MuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJVXNlIEdldEFuY2VzdG9yIGluc3RlYWQgb2YgR2V0UGFyZW50LgoKCSogZGxscy9udGRsbC90aW1lLmM6IFJ1c3RhbSBDaGVybm90a2FjaCA8cnVzdGlrQHVmcHMuY2h1a290a2EucnU+CglBZGRlZCBzdXBwb3J0IGZvciBBTkFUIChBbmFkeXIgU3RhbmRhcmQgVGltZSkgdG8gVFpfSU5GTy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2Vudmlyb24uYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJSWYgdGhlIHZhcmlhYmxlIGRvZXMgbm90IGV4aXN0LCBqdXN0IHJldHVybi4KCgkqIGRsbHMvbXNpL3Rlc3RzL3JlY29yZC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglXaW5kb3dzIDk4IGRvZXNuJ3QgbGlrZSBpdCB3aGVuIHdlIGRlbGV0ZSB0aGUgdGVtcGZpbGUuCgoJKiBkbGxzL21zaS90ZXN0cy9kYi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVGVzdCBwYWNrYWdlIGNyZWF0aW9uLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCB3aW5kb3dzL21kaS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGFuIE1ESSBjaGlsZCBiZWNvbWVzIGFjdGl2ZSByZXN0b3JlIHByZXZpb3VzbHkgbWF4aW1pemVkIE1ESQoJY2hpbGQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUZpeCBwYXRjaGluZyBlcnJvciBpbiBmaWxlIHRpbWUgdGVzdC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgU2VyYmlhbiBjeXJpbGxpYyBYMTEga2V5Ym9hcmQgbGF5b3V0LgoKCSogbG9hZGVyL3ByZWxvYWRlci5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglJbmNyZWFzZSBQRSByZXNlcnZlIGFyZWEgc2l6ZSB0byA1MTJNYi4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLAoJICBkbGxzL3JpY2hlZDIwL3JlYWRlci5jLCBkbGxzL3JpY2hlZDIwL3J0Zi5oLCBkbGxzL3JpY2hlZDIwL3dyaXRlci5jOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCU1hZGUgUlRGIHJlYWRlciBhbmQgd3JpdGVyIGhhbmRsZSBjb2RlcGFnZXMgbW9zdGx5IHNpbWlsYXIgdG8gdGhlCglvcmlnaW5hbCByaWNoZWQyMC5kbGwuCgoJKiBkbGxzL3VzZXIvZWRpdC5jLCBkbGxzL3VzZXIvdGVzdHMvZWRpdC5jOgoJQy4gU2NvdHQgQW5hbmlhbiA8Y3Njb3R0QGNzY290dC5uZXQ+CglFRElUX0VNX1NldFNlbDogT2xkL25ldyBzZWxlY3Rpb24gcmFuZ2Ugb3JkZXJpbmcgY29kZSB3b3VsZCBicmVhayB3aGVuCglvbGRfZW5kIDwgc3RhcnQgPCBlbmQgPCBvbGRfc3RhcnQuCglSZXNldCBFRl9VUERBVEUgZmxhZyBhZnRlciB3ZSd2ZSBzZW50IHRoZSB1cGRhdGUuCgoJKiBkbGxzL21zaS9tc2kucmMsIGRsbHMvbXNpL21zaV9ObC5yYywgZGxscy9zaGRvY3Z3L05sLnJjLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRHV0Y2ggcmVzb3VyY2UgdHJhbnNsYXRpb24uCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUZpeCBmb3IgTlQ0IGJlaGF2aW91ci4KCjIwMDUtMDMtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZGRyYXcuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci93aW5kb3cuYzoKCVRyeSB0byBhbHdheXMga2VlcCB0aGUgc2VydmVyIHdpbmRvdyBaLW9yZGVyIGluIHN5bmMgd2l0aCB0aGUgWDExIG9uZQoJdXNpbmcgYSBoZXVyaXN0aWMgYmFzZWQgb24gbW91c2UgYW5kIGV4cG9zZSBldmVudHMuCgoJKiBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgaW5jbHVkZS93aW5pbmV0Lmg6CglUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUltcGxlbWVudCBDcmVhdGVVcmxDYWNoZUVudHJ5VyBhbmQgQ29tbWl0VXJsQ2FjaGVFbnRyeVcuIFJlcGxhY2UgdGhlCglleGlzdGluZyAnQScgdmVyc2lvbnMgd2l0aCBjYWxscyB0byB0aGUgJ1cnIHZlcnNpb25zLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGRpcmVjdCBzb3VuZCBjYXBhYmlsaXRpZXMgdG8gbWF0Y2ggaGFyZHdhcmUuCgoJKiBwcm9ncmFtcy93aW5lYnJvd3Nlci9tYWluLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggdXNhZ2UgcHJpbnRmLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBGaXhlZCBhIG1pc3NpbmcgcGF0Y2ggY2h1bmsuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVB1bGwgdGhlIFdNX1RJTUVSIGhhbmRsaW5nIGludG8gaXRzIG93biBmdW5jdGlvbi4KCUFOSU1BVEVfRHJhd0ZyYW1lIHNob3VsZG4ndCB3b3JyeSBhYm91dCBsb2NraW5nLCB0aGUgbG9jayBzaG91bGQgYmUKCWhlbGQgYnkgdGhlIGNhbGxlci4KCgkqIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLAoJICBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLCBkbGxzL29sZTMyL29sZW9iai5jLAoJICBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglFbGltaW5hdGUgY2FzdHMgb2YgdGhlIHJldHVybiB2YWx1ZSBvZiBIZWFwQWxsb2MuCgoJKiBkbGxzL3JpY2hlZDIwL3JlYWRlci5jLCBkbGxzL3JpY2hlZDIwL3J0Zi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGNhc3RzIGFuZCB1bnVzZWQgY29kZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvY2hpbGR3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBkaXNwbGF5IHBhdGggaW4gc3RhdHVzIGJhci4KCgkqIHByb2dyYW1zL3dpbmVicm93c2VyL21haW4uYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglQcmV2ZW50IGNyYXNoIHdoZW4gbm8gVVJMIGlzIHNwZWNpZmllZC4KCgkqIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6IFRob21hcyBLaG8gPHRob21hc2tob0BnbWFpbC5jb20+CglBZGRlZCB0ZXN0cyBmb3Igc2VuZHRvLCByZWN2ZnJvbSwgYW5kIGdldHNlcnZieW5hbWUuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDbGVhbiB1cCBoYW5kbGUgdXNhZ2UuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCURvbid0IHRyeSB0byByZXN5bmMgWi1vcmRlciBvbiBDb25maWd1cmVOb3RpZnkgZXZlbnRzLCB0aGlzIGNhbm5vdAoJd29yayByaWdodCBhbnl3YXkuCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2l0c3MvaXRzcy5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy90d2Fpbi90d2FpbjE2X21haW4uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ29ycmVjdCBhbmQgY29tcGxldGUgc29tZSBhcGkgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCVRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJQ29ycmVjdGlvbnMgdG8gVXJsSXNXIGFuZCBVcmxJc0EuCglVUkxfSVNfT1BBUVVFIHJlc3VsdHMgZGVwZW5kIG9ubHkgb24gdGhlIHNjaGVtZSwgbm90IG9uIHRoZSBVUkwuCglVUkxfSVNfRklMRVVSTCBhbHNvIG9ubHkgZGVwZW5kcyBvbiB0aGUgc2NoZW1lICgiZmlsZToiKS4KCgkqIGRsbHMveDExZHJ2L3BhbGV0dGUuYzogR2xlbm4gV3Vyc3RlciA8Z3d1cnN0ZXJAc2NzLmNhcmxldG9uLmNhPgoJUmVtb3ZlIGJyZWFrIHN0YXRlbWVudHMgbWlzc2VkIGluIGxhc3QgcGF0Y2guCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVGVhY2ggd2luYXBpIGFib3V0IHR5cGVzIG5ld2x5IHVzZWQgaW4gdmFyaW91cyBkbGxzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglUZWFjaCB3aW5hcGlfY2hlY2sgYWJvdXQgb3RoZXIgY2FsbGluZyBjb252ZW50aW9uIHNob3J0aGFuZHMgKHRoZXkgYWxsCglhcmUgcmVhbGx5IHN0ZGNhbGwpLgoKCSogZGxscy93aW5lZDNkL3dpbmVkM2Quc3BlYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVdpbmVEaXJlY3QzRENyZWF0ZSBoYXMgMyBhcmdzIGluIHRoZSBzb3VyY2UuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXNlICIiIGZvciBXaW5kb3dzIGluY2x1ZGVzIGluIGRsbHMsIGluc3RlYWQgb2YgPD4uCgoJKiBkbGxzL2F0bC9yZWdpc3RyYXIuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUtleSB3b3JkcyBhbmQgcmVwbGFjZW1lbnRzIGFyZSBjYXNlIGluc2Vuc2l0aXZlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglpU2VsZWN0ZWRJbWFnZSBpcyBhbGxvd2VkIHRvIGJlIDAuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBTSENvcHlLZXkgdG8gdHJlYXQgc3RyaW5nIHBhcmFtZXRlciBjb3JyZWN0bHkgYXMgc291cmNlIHBhdGgKCWluc3RlYWQgb2YgZGVzdGluYXRpb24gcGF0aC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGRsbHMvd3RzYXBpMzIvd3RzYXBpMzIuYywgaW5jbHVkZS9hY2xhcGkuaCwKCSAgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93dHNhcGkzMi5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4ZWQgc29tZSBjYWxsaW5nIGNvbnZlbnRpb25zLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wbGV0ZSB1bmljb2RpZmljYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQcm9wZXIgaGFuZGxpbmcgZm9yIEdXTF9TVFlMRS4KCVN0b3JlIGFuZCB1c2UgaHduZFNlbGYgaW4gdGhlIFBBR0VSX0lORk8uCglQYXNzIHRoZSBpbmZvUHRyIGFyb3VuZCBpbnN0ZWFkIG9mIGh3bmQuCglVc2UgcHJvcGVyIHR5cGVzIGluIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzLgoJRml4IGEgZmV3IHJldHVybiBzdGF0ZW1lbnRzLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglGaXggdGVzdCBmb3IgU1RHTV9TSEFSRV9FWENMVVNJVkUgb24gbmFtZWxlc3MgRG9jRmlsZXMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGljb25zIGZvciB0aGUgdmFsdWUgcGFuZS4KCS0gRGlzcGxheSBSRUdfTVVMVElfU1ogdmFsdWVzLgoJLSBNYWtlIHRoZSBsYWNrIG9mIHN1cHBvcnQgZm9yIGNlcnRhaW4gdmFsdWUgdHlwZXMgbW9yZSBub3RpY2VhYmxlIHRvCgkgIHRoZSB1c2VyLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIGlmIGFueSBlZGl0IG9wZXJhdGlvbiBmYWlscy4KCS0gTWFrZSBrZXkgcmVuYW1pbmcgZmFpbCBpZiB0aGUgZGVzdGluYXRpb24ga2V5IGFscmVhZHkgZXhpc3RzLgoJLSBCZXR0ZXIgZXJyb3IgcmVjb3ZlcnkgaW4gdGhlIGNhc2Ugd2hlcmUgU0hDb3B5S2V5IGZhaWxzLgoKCSogZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlbW92ZWQgd3JvbmcgRklYTUVzLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tY2kuYzoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCVNwZWNpZnkgY29ycmVjdCBidWZmZXIgc2l6ZSBpbiBHZXRQcml2YXRlUHJvZmlsZVN0cmluZ1cgY2FsbHMuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzogSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJSW1wcm92ZSBwYXJhbWV0ZXIgY2hlY2tpbmcgaW4gTnRDcmVhdGVGaWxlLgoJQWRkIGRvY3VtZW50YXRpb24gZm9yIGVhX2J1ZmZlciBhbmQgZWFfbGVuZ3RoLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogTWF0dGhldyBNYXN0cmFjY2kgPG1hdHRAYWNsYXJvLmNvbT4KCUlmIGEgRk9VUkNDIHN1cmZhY2Ugc3BlY2lmaWVzIEREU0RfUElUQ0gsIHVzZSB0aGF0IGluc3RlYWQgb2YKCWR3TGluZWFyU2l6ZS4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVsZXRlIHRoZSBjcml0aWNhbCBzZWN0aW9uIHdoZW4gZnJlZWluZyB1cCB0aGUgaW5mb1B0ci4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVByaW50IG91dCBtZXNzYWdlIG5hbWUgdG8gbWFrZSByZWFkaW5nIHRyYWNlcyBlYXNpZXIuCgoJKiBkbGxzL3JpY2hlZDIwL2NhcmV0LmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLAoJICBkbGxzL3JpY2hlZDIwL3BhaW50LmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8d2RldkBmb2x0bWFuLmNvbT4KCS0gUGFnZVVwIGtleSBzdXBwb3J0LgoJLSBTdXBwb3J0IGZvciAibm9ybWFsIiBzY3JvbGwgYmFyIGZ1bmN0aW9uYWxpdHkgKGxpbmUgYW5kIHBhZ2UKCSAgc2Nyb2xsaW5nKS4KCjIwMDUtMDMtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGluY2x1ZGUvdGhyZWFkLmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIFRMUyBleHBhbnNpb24gc2xvdHMsIGFkZGluZyBhbiBleHRyYSAxMDI0CgllbnRyaWVzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGYWxsIGJhY2sgdG8gZGVmYXVsdCBwcmVwYXJlL3VucHJlcGFyZSBoZWFkZXIgZnVuY3Rpb25zLgoKCSogZGxscy9kc291bmQvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBibG9jayBhbGlnbiBlcnJvciBtZXNzYWdlIHRvIHNob3cgbGVuZ3RoIGJlZm9yZSBmaXggdXAuCgoJKiBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB1c2FnZSBvZiBTVEdNXyBlbnVtZXJhdGlvbnMsIHJlbW92ZSBmb3J3YXJkIGRlY2xhcmF0aW9uLgoKCSogZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGZvcndhcmQgZGVjbGFyYXRpb25zIG9mIGludGVyZmFjZSBtZXRob2RzLgoKCSogZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgYW4gdW51c2VkIGZ1bmN0aW9uLgoKCSogZGxscy9tc2kvc3VtaW5mby5jLCBkbGxzL21zaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL21zaS90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9tc2kvdGVzdHMvc3VtaW5mby5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSB0ZXN0IGNhc2VzIGZvciBzdW1tYXJ5IGluZm9ybWF0aW9uCgktIGZpeCBtZW1vcnkgbGVha3MKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUlzc3VlIGEgd2FybmluZyBpZiBubyBzb3VuZCBzeXN0ZW0gd2FzIGZvdW5kLgoKCSogZGxscy9yaWNoZWQyMC9jYXJldC5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwKCSAgZGxscy9yaWNoZWQyMC9wYWludC5jLCBkbGxzL3JpY2hlZDIwL3J1bi5jLCBkbGxzL3JpY2hlZDIwL3N0cmluZy5jLAoJICBkbGxzL3JpY2hlZDIwL3dyYXAuYzoKCUtyenlzenRvZiBGb2x0bWFuIDx3ZGV2QGZvbHRtYW4uY29tPgoJLSBtYWRlIHN0cmluZyBvcGVyYXRpb25zIGNvbnNpc3RlbnQgd3J0IHdoaXRlc3BhY2UgaGFuZGxpbmcgKHdoaWNoCgkgIHNob3VsZCBncmVhdGx5IGltcHJvdmUgc3RhYmlsaXR5IG9mIHRoZSB3cmFwIGNvZGUgYW5kIGVsaW1pbmF0ZQoJICByZWdyZXNzaW9ucyBvZiB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbnMpCgktIGNvbXBsZXRlbHkgbmV3IHNjcm9sbGJhciBoYW5kbGluZyAobXVjaCBtb3JlIHJlbGlhYmxlKSBhbmQgcmVsYXRlZAoJICByZWRyYXcgZml4ZXMKCS0gUGFnZSBEb3duIGhhbmRsZXIgKG5vIFBhZ2UgVXAgeWV0LCBmaXhpbmcgd3JhcC9yZWRyYXcvc2Nyb2xsYmFyIGJ1Z3MKCSAgd2FzIG9mIGhpZ2hlciBwcmlvcml0eSkKCgkqIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IGRlYWRsb2NrIGNhdXNlZCBieSBub3QgbGVhdmluZyB0aGUgY3JpdGljYWwgc2VjdGlvbiBvbiBhbGwgY29kZQoJcGF0aHMuCgoJKiBkbGxzL29sZTMyL29sZTJpbXBsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtZW1vcnkgbGVhayBpbiBPbGVEdXBsaWNhdGVEYXRhIG9uIGVycm9yIHBhdGggKGZvdW5kIGJ5IFNtYXRjaCkuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJR2V0Q1BJbmZvIHNob3VsZCByZXR1cm4gRkFMU0UgaWYgY2FsbGVkIHdpdGggTlVMTCBpbmZvIGJ1ZmZlci4KCgkqIGRsbHMvYXRsL3JlZ2lzdHJhci5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgRmlsZVtVbl1SZWdpc3RlciBhbmQgUmVzb3VyY2VbVW5dUmVnaXN0ZXJTei4KCgkqIHRvb2xzL3dpbmUuaW5mOiBQYXVsIE1pbGxhciA8cC5taWxsYXJAcGh5c2ljcy5nbGEuYWMudWs+CglCcmluZyBkZWZhdWx0IHJlZ2lzdHJ5IGluIGxpbmUgd2l0aCBpbXBsaWNpdCBkZWZhdWx0IGJlaGF2aW91ciBieQoJdXNpbmcgdGhlIC0tYXV0byBvcHRpb24gd2l0aCB3aW5lZGJnLgoKCSogZGxscy92ZXJzaW9uL2luc3RhbGwuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUF2b2lkIGEgbWFnaWMgbnVtYmVyLgoKMjAwNS0wMy0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3V0aWwuYywgdG9vbHMvd2luZWdjYy91dGlscy5jOgoJRml4ZWQgb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSB4cmVhbGxvYygwKSBidWcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL3VwZG93bi5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJQy4gU2NvdHQgQW5hbmlhbiA8Y3Njb3R0QGNzY290dC5uZXQ+CglVUERPV05fR2V0QnVkZHlJbnQgc2hvdWxkIG5vdCBmYWlsIHdoZW4gdGhlIGNvbnRyb2wgaXMgZW1wdHkuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS1XdW5zaWduZWQgZml4ZXMuCgoJKiB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCURvbid0IGNyYXNoIG9uIHhyZWFsbG9jKDApIChmb3VuZCBieSBKb24gR3JpZmZpdGhzKS4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRml4ZWQgdmFydHlwZSB0ZXN0LgoKCSogZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9zdW1pbmZvLmMsIGluY2x1ZGUvbXNpLmgsCgkgIGluY2x1ZGUvbXNpcXVlcnkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBzdW1tYXJ5IGluZm9ybWF0aW9uIGxvYWRpbmcgYW5kIHNhdmluZy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IEAxODgsMTkwLDE5NSwyMDAsMjU2LDQ3OCw0ODEuCglJVW5rbm93bl9FbmFibGVNb2RlbGVzcygpIGFsc28gaGFuZGxlcyBJT2xlSW5QbGFjZUFjdGl2ZU9iamVjdC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJUmV2ZXJ0IGNoYW5nZXMgdG8gdGhlIHBhaW50aW5nIGNvZGUsIHRoZSBXTV9DVExDT0xPUlNUQVRJQyBtZXNzYWdlCglzaG91bGQgbm90IGJlIHNlbnQgZnJvbSB0aGUgYW5pbWF0aW9uIHRocmVhZC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBzdXBwb3J0IGZvciBtb3JlIHRoYW4gb25lIHNvdW5kIGNhcmQuCglGaXggd2F2ZSBvdXQgc3VwcG9ydCB3aGVuIG5vIHZvbHVtZSBjb250cm9sIGlzIHByZXNlbnQuCglVc2UgcHJvcGVyIHN0cnVjdHVyZSBmb3Igd2F2ZSBpbiBkZXZpY2UgY2Fwcy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2hlY2sgd2F2ZSBvdXQgdm9sdW1lIHN1cHBvcnQuCgoJKiBkbGxzL2F0bC9hdGwucmdzOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJRml4ZWQgYXRsLnJncy4KCgkqIGRsbHMvYXRsL3JlZ2lzdHJhci5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJS2V5cyBtYXkgaGF2ZSBvbmx5IG9uZSBvZiBhdHRyaWJ1dGVzLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jOgoJR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUZpeCBjb21waWxhdGlvbiBvZiB0aGUgY2FzZSB3aXRob3V0IHByb3BlciBMaW51eCBqb3lzdGljayBzdXBwb3J0LgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9ydGYuaDoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglGaXhlZCBzdXBwb3J0IGZvciBSVEYgZG9jdW1lbnRzIHVzaW5nIEFOU0kgY2hhcnNldCBhbmQgYWRkZWQgc3VwcG9ydAoJZm9yIG11bHRpYnl0ZSBjaGFyc2V0cywgc28gdGhhdCBCSUc1IGFuZCBVVEYtOCBSVEYgZG9jdW1lbnRzIGFyZQoJd29ya2luZyBub3cuCgoyMDA1LTAzLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL2tlcm5lbC90ZXN0cy9oZWFwLmMsCgkgIGRsbHMvbWFwaTMyL2ltYWxsb2MuYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsIGRsbHMvc2hsd2FwaS9yZWcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgTE1FTV8gZmxhZ3MgZm9yIExvY2FsQWxsb2MoKSwgbm90IEdNRU1fIChHbG9iYWxBbGxvYykuCgoJKiBzZXJ2ZXIvcXVldWUuYzoKCVJldmVydCB0aGUgcHJldmlvdXMgY2hhbmdlLCB0aGlzIGlzIG5vdCB3b3JraW5nIHJpZ2h0IHlldC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGb3IgU2hlbGxFeGVjdXRlRXhBIHdlIG5lZWQgdG8gY29weSBvdXQgdGhlIGhQcm9jZXNzIHZhbHVlIGZyb20gdGhlIFcKCXN0cnVjdHVyZS4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvZGljdGlvbmFyeS5jLAoJICBkbGxzL29sZTMyL2RpY3Rpb25hcnkuaCwgZGxscy9vbGUzMi9zdGdfcHJvcC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQmVnaW4gaW1wbGVtZW50aW5nIElQcm9wZXJ0eVN0b3JhZ2UuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jOgoJTWFrZSB0aGUgc2VydmVyIGtub3cgYWJvdXQgdGhlIHZpc2libGUgYXJlYSBvZiBhIHdpbmRvdywgd2hpY2ggaXMgdGhlCgl3aW5kb3cgcmVjdCBtaW51cyB0aGUgY2FwdGlvbiBhbmQgYm9yZGVycyB3aGVuIHRoZXkgYXJlIGhhbmRsZWQgYnkgdGhlCgl3aW5kb3cgbWFuYWdlci4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmluZXQuaCwKCSAgaW5jbHVkZS93aW5udC5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1hdGNoIE9WRVJMQVBQRUQgc3RydWN0dXJlIHRvIHRoZSBTREsgZGVmaW5pdGlvbi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRmFsbCBiYWNrIHRvIGRlZmF1bHQgaGVhZGVyIHByZXBhcmUgYW5kIHVucHJlcGFyZSBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBzb21lIGRlYWQgY29kZSBhbmQgc29tZSBpZmRlZnMuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkIG1vcmUgdGVzdHMgYW5kIGZpeCBJbnRlcm5ldFRpbWVUb1N5c3RlbVRpbWVXIGFjY29yZGluZ2x5LgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIHJlZ3Jlc3Npb24gaW4gdGhlIGZpbGUgb3BlbiBkaWFsb2cuCgoJKiBkbGxzL250ZGxsL3JlZy5jOiBJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglBZGQgcGFyYW1ldGVyIGNoZWNraW5nIGFuZCByZW1vdmUgbGFzdCBmaXhtZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RpbWUuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJTW9yZSB0cmFjZSBpbmZvLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVXNlIHJlYWwgZGV2aWNlIG5hbWUuCgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsCgkgIHNlcnZlci93aW5kb3cuYzoKCUNvbXB1dGUgdGhlIHRvcCBjbGlwcGluZyB3aW5kb3cgZGlyZWN0bHkgb24gdGhlIHNlcnZlciBzaWRlLgoKCSogZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJTW9yZSB0cmFjZSBpbmZvLgoKCSogZGxscy9hdGwvTWFrZWZpbGUuaW46IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBwYXRoIHRvIHVuaWNvZGUsIHJlYXJyYW5nZSB0byByZW1vdmUgZm9yd2FyZCBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvcnRmLmg6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJUmVwbGFjZWQgc2xvdyBhbmQgb3V0ZGF0ZWQgY2hhcmFjdGVyIHNldCBoYW5kbGluZyBpbiBSVEYgcmVhZGVyIGJ5CglVbmljb2RlL2NvZGVwYWdlcyBzdXBwb3J0LiBBZGRlZCBjaGFyc2V0LT5jb2RlcGFnZSBjb252ZXJzaW9uLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgaW5saW5lIHN0cmluZyBmdW5jdGlvbiBXSU5BUEkgKGZvdW5kIGJ5IEtyenlzenRvZiBGb2x0bWFuKS4KCgkqIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBzb21lIG1pc3NpbmcgaW50ZXJmYWNlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jLAoJICBpbmNsdWRlL29iamJhc2UuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGNyaXRzZWMgZGVidWdnaW5nIGluZm8uCgktIE1vdmUgdGhlIG1vZGFsIGxvb3AgY2FsbGVkIGR1cmluZyBSUENzIGludG8gQ29XYWl0Rm9yTXVsdGlwbGVIYW5kbGVzLgoJLSBVc2UgYSBtdXRleCBmb3IgbG9uZyByZW1vdGluZyBjYWxscyB0byBJUmVtVW5rbm93biBtZXRob2RzLgoJLSBSZW1vdmUgbG9ja2luZyBpbiBhcGFydG1lbnRfZGlzY29ubmVjdHByb3hpZXMgYXMgaXQgaXMgbm90IG5lZWRlZC4KCS0gVXNlIFBvc3RNZXNzYWdlIGluc3RlYWQgb2YgU2VuZE1lc3NhZ2Ugc28gd2UgY2FuIHJ1biB0aGUgbWVzc2FnZQoJICBsb29wIG9yIG5vdCBhcyBhcHByb3ByaWF0ZS4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBmYWxsYmFjayB0byBkZWZhdWx0cyBpZiBhIGRyaXZlciwgbWFwcGVyLCBvciBtaWRpIGlzIHNwZWNpZmllZAoJaW4gdGhlIHJlZ2lzdHJ5OyBjb25zb2xpZGF0ZSBNTURSVl9Jbml0KCkgaW50byBhIHNpbmdsZSBmdW5jdGlvbi4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgYSBjb21tZW50IGFib3V0IGJ5dGUgb3JkZXIsIGNoYW5nZSB0eXBlcyB0byByZWR1Y2UgY2FzdGluZyBhbmQgbm90CgljYXN0IGF3YXkgY29uc3RuZXNzLgoKCSogZGxscy9hdGwvYXRsLnNwZWMsIGRsbHMvYXRsL3JlZ2lzdHJhci5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIERsbENhblVubG9hZE5vdy4KCgkqIGRsbHMvcmljaGVkMjAvY2FyZXQuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaCwgZGxscy9yaWNoZWQyMC9wYWludC5jLCBkbGxzL3JpY2hlZDIwL3BhcmEuYywKCSAgZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9yaWNob2xlLmMsIGRsbHMvcmljaGVkMjAvcnRmLmgsCgkgIGRsbHMvcmljaGVkMjAvcnVuLmMsIGRsbHMvcmljaGVkMjAvc3RyaW5nLmMsIGRsbHMvcmljaGVkMjAvd3JhcC5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJLSBSVEYgcmVhZGVyIGRvZXNuJ3QgdXNlIFJpY2hFZGl0IG1lc3NhZ2VzIGFueW1vcmUgKHdoaWNoIHNhdmVzIG9uCgkgIHVubmVjZXNzYXJ5IHJlcGFpbnRzKQoJLSBhZGRlZCB1bmljb2RlIGNoYXJhY3RlciBzdXBwb3J0IHRvIFJURiBpbXBvcnQgKGxpa2U6IFx1MTIzNDUgPykKCS0gc21hbGwgZml4ZXMKCS0gZml4ZWQgd2hpdGVzcGFjZSBpZGVudGlmaWNhdGlvbiBidWcKCS0gcmVtb3ZlZCBkcmF3aW5nIG9mIHBhcmFncmFwaCBtYXJrcwoJLSBpbXByb3ZlZCBzdHViIGltcGxlbWVudGF0aW9ucyBmb3IgSVJpY2hFZGl0T2xlCgoyMDA1LTAzLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9yaWNoZWQyMC93cml0ZXIuYzogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUltcHJvdmVkIFJURiBleHBvcnQuCgoJKiBpbmNsdWRlL3JpY2hlZGl0Lmg6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglBZGRlZCBtaXNzaW5nIFBGRV8gYW5kIFBGQV8gZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglUZXN0IGZhaWxlZCBiZWZvcmUgb24gOTgsIE5UNCwgMjAwMCBhbmQgWFAuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3gxMWRydi9tb3VzZS5jOgoJRG9uJ3QgZm9yY2UgaW5qZWN0ZWQgaGFyZHdhcmUgbWVzc2FnZXMgdG8gYmUgcXVldWVkIGluIHRoZSBjdXJyZW50Cgl0aHJlYWQuCgoJKiBzZXJ2ZXIvcXVldWUuYzoKCVF1ZXVlIGhhcmR3YXJlIG1lc3NhZ2VzIGV2ZW4gaWYgd2UgZG9uJ3QgZmluZCBhIHdpbmRvdyBmb3IgdGhlbSB0aGUKCWZpcnN0IHRpbWUgYXJvdW5kLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgdG9vbHMvLmN2c2lnbm9yZSwKCSAgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL21ha2VfY3Rlc3RzLCB0b29scy9tYWtlX2N0ZXN0cy5jOgoJQ29udmVydGVkIHRoZSBtYWtlX2N0ZXN0cyBzY3JpcHQgdG8gQyAoYmFzZWQgb24gYSBwYXRjaCBieSBSb3ljZQoJTWl0Y2hlbGwgSUlJKS4KCgkqIHNlcnZlci93aW5kb3cuYzoKCUNvbnZlcnRlZCB0aGUgd2luZG93IGNoaWxkcmVuIGxpc3RzIHRvIHN0YW5kYXJkIGxpc3RzLgoKCSogZGxscy9hdGwvLmN2c2lnbm9yZSwgZGxscy9hdGwvTWFrZWZpbGUuaW4sIGRsbHMvYXRsL2F0bC5yZ3MsCgkgIGRsbHMvYXRsL2F0bF9tYWluLmMsIGRsbHMvYXRsL3JlZ2lzdHJhci5jLCBkbGxzL2F0bC9yZWdzdnIuYywKCSAgZGxscy9hdGwvcnNyYy5yYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglVc2UgQVRMUmVnaXN0cmFyIHRvIHJlZ2lzdGVyIGF0bC5kbGwuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvdXBkb3duLmM6CglDLiBTY290dCBBbmFuaWFuIDxjc2NvdHRAY3Njb3R0Lm5ldD4KCVN0YXJ0ZWQgYSB1bml0IHRlc3QgY2FzZSBmb3IgdGhlIHVwZG93biBjb250cm9sLgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCV9kYmdfSUxHZXROZXh0IHJldHVybnMgTlVMTCBpZiBwaWRsLT5ta2lkLmNiIGlzIHplcm8sIGZpeCB0aGUgbG9vcHMKCWFjY29yZGluZ2x5LgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuaDogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNvcnJlY3QgbWVtb3J5IGFsbG9jYXRpb24gbWFjcm8uCgoJKiBpbmNsdWRlL21zaWRlZnMuaCwgaW5jbHVkZS9wcm9waWRsLmlkbDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBwcm9wZXJ0eSBJRHMgZm9yIE1TSSBzdW1tYXJ5IGluZm9ybWF0aW9uLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglGaXggYnJva2VuIHRlc3QuCgoJKiBkbGxzL2RkcmF3L3Rlc3RzL2RkcmF3bW9kZXMuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJU2V0RGlzcGxheU1vZGUgY2FuIHJldHVybiBEREVSUl9VTlNVUFBPUlRFRC4gSWYgaXQgZG9lcywgd2Ugc2hvdWxkbid0Cgl0cnkgdG8gcmVzdG9yZSBzb21ldGhpbmcgZWl0aGVyLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9maWxlLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglEb24ndCBtYXJrIGEgZmlsZSBhcyByZWFkb25seSBpZiBpdCBoYXMgYW55IHdyaXRlIGJpdCBzZXQuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJR2V0RGxnSXRlbVRleHRXIHRha2VzIGJ1ZmZlciBsZW5ndGggaW4gV0NIQVJzIG5vdCBieXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXVkaXQgdGhlIGNvbnRyb2wgYWdhaW5zdCBDb21jdGwzMi5kbGwgdmVyc2lvbiA2LjAuCglQcm9wZXIgaGFuZGxpbmcgb2YgR1dMX1NUWUxFLgoJSW1wbGVtZW50IFdNX0NMT1NFLiBGaXggV01fU0laRSBpbXBsZW1lbnRhdGlvbi4KCVNtYWxsIGNsZWFudXBzLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL2NsaXN0LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXggdHdvIGZhaWx1cmVzIGFuZCAoaG9wZWZ1bGx5KSBhIGNyYXNoIHdpdGggZWFybHkgdmVyc2lvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvcnJlY3QgcmVnaXN0ZXJpbmcgc2hlbGwgZm9sZGVycyAodmFsdWVzIGluIFNoZWxsIEZvbGRlcnMga2V5IHdlcmVuJ3QKCWdldHRpbmcgd3JpdHRlbikuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgZGVmaW5lcyBmb3IgU0xERiBmbGFncy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY3VzdG9tLmMsCgkgIGRsbHMvbXNpL2RpYWxvZy5jLCBkbGxzL21zaS9mb3JtYXQuYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBSZW5hbWUgZHVwc3RyVyB0byBzdHJkdXBXLCBhbmQgcmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uLgoJLSBNb3ZlIGRlZmluaXRpb24gb2Ygc3RyaW5nIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMgdG8gbXNpcHJpdi5oLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWN0dWFsbHkgcHJpbnQgZHdFeFN0eWxlIGluIGNhc2Ugb2YgYSBtaXNtYXRjaC4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVByb3ZpZGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB3YXZlSW5QcmVwYXJlSGVhZGVyIGFuZAoJd2F2ZUluVW5wcmVwYXJlSGVhZGVyIGlmIGRyaXZlciBkb2Vzbid0IHN1cHBvcnQgdGhlbS4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCXdhdmVJblByZXBhcmVIZWFkZXIgYW5kIHdhdmVJblVucHJlcGFyZUhlYWRlciBhcmUgbm90IHJlYWxseSBuZWVkZWQKCWJlY2F1c2UgdGhlIGNvbnRlbnRzIGRvbid0IGNoYW5nZS4KCgkqIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBhIGxpbmsgdG8gV2luZSdzIEhvd1RvLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC9yZWFkZXIuYywgZGxscy9yaWNoZWQyMC9ydGYuaDoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCS0gVW5rbm93biBkZXN0aW5hdGlvbnMgYXJlIG5vdyBjb3JyZWN0bHkgc2tpcHBlZCAoc28gbG9hZGluZyBhbiBSVEYKCSAgZmlsZSBnZW5lcmF0ZWQgYnksIGZvciBleGFtcGxlLCBPcGVuT2ZmaWNlIGRvZXNuJ3QgcHJvZHVjZSBsb3RzIG9mCgkgIGdhcmJhZ2UgYW55bW9yZSkuCgktIEZvcm1hdCBzdGFjayBmb3IgUlRGIGdyb3VwcyAoc28gdGhhdCBSVEYgcmVhZGVyIGNhbiBjb3JyZWN0bHkgcmVhZAoJICB3aGF0IFJURiB3cml0ZXIgd3JvdGUgOikgKQoKCSogZGxscy93dHNhcGkzMi93dHNhcGkzMi5jLCBkbGxzL3d0c2FwaTMyL3d0c2FwaTMyLnNwZWMsCgkgIGluY2x1ZGUvd3RzYXBpMzIuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIFdUU0Nsb3NlU2VydmVyLCBXVFNEaXNjb25uZWN0U2Vzc2lvbiwKCVdUU0VudW1lcmF0ZVByb2Nlc3Nlc3tBLFd9LCBXVFNFbnVtZXJhdGVTZXNzaW9uc3tBLFd9LAoJV1RTUXVlcnlTZXNzaW9uSW5mb3JtYXRpb25BLgoKMjAwNS0wMy0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYzoKCUJ1aWxkIGEgc3RhdGljIGxpc3Qgb2YgZGV2aWNlcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gRUxGCgljb25zdHJ1Y3RvcnMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9lbnZpcm9uLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCU1vcmUgdHJhY2UgaW5mby4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJQ3J5cHRBY3F1aXJlQ29udGV4dEEoKSBjYW4gcmV0dXJuIE5URV9GQUlMIG9uIFdpbmRvd3MgOTguCgoJKiBkbGxzL2RiZ2hlbHAvbXNjLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUluaXRpYWxpemUgdGhlICJ0b2MiIGZpZWxkIGluIHRoZSBwZGJfbG9va3VwIHN0cnVjdHVyZSBpbiBvcmRlciB0bwoJcHJldmVudCBwZGJfZnJlZV9sb29rdXAgZnJvbSB0cnlpbmcgdG8gZGVsZXRlIGludmFsaWQgcG9pbnRlcnMuCgoJKiBkbGxzL2Rzb3VuZC9wcm9wc2V0LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglVbmNvbmRpdGlvbmFsbHkgZnJlZSBtZW1vcnkuIFNob3VsZCBtYWtlIHNtYXRjaCBoYXBweS4KCgkqIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvcnRmLmg6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJSW1wbGVtZW50ZWQgaGFzaCB0YWJsZSBsb29rdXAgZm9yIFJURiBrZXl3b3JkcyBpbiBSVEYgcmVhZGVyLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglVc2UgdGhlIGNvcnJlY3QgZmlsZSBuYW1lIGluIHRoZSAiZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkiIGNvbW1lbnRzLgoKCSogZGxscy9yaWNoZWQyMC9lZGl0b3IuYywgZGxscy9yaWNoZWQyMC93cml0ZXIuYzoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCS0gV01fQ09QWSAoYW5kIFdNX0NVVCkgY2FuIG5vdyBwdXQgYm90aCBVbmljb2RlIGFuZCBSVEYgZm9ybWF0ICh0aGFua3MKCSAgdG8gUGhpbCBLcnlsb3YncyBSVEYgZ2VuZXJhdG9yIGNvZGUpLgoJLSBOZXcgbWVzc2FnZSBpbXBsZW1lbnRlZCAtIFdNX1BBU1RFLgoJLSBSVEYgcmVhZGVyOiBydGZQbGFpbiBpbXBsZW1lbnRlZCAoa2luZCBvZikuCgktIFJURiB3cml0ZXI6IHJld3JpdHRlbiBtYWluIGxvb3AgKHRoZSBvbGQgb25lIGNyYXNoZWQgaW4gc29tZQoJICBjaXJjdW1zdGFuY2VzIHdoZW4gU0ZGX1NFTEVDVElPTiB3YXMgdXNlZCkuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9taXhlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDaGFuZ2Ugc29tZSBnbG9iYWwgdmFyaWFibGUgbmFtZXMuCglDbGVhbnVwIHVzYWdlIG9mIGdsb2JhbCBkc291bmQgdmFyaWFibGUgdG8gbm90IHVzZSBsb2NhbCB2YXJpYWJsZSBvZgoJc2FtZSBuYW1lLgoJQWxtb3N0IHJlYWR5IHRvIGFkZCBzdXBwb3J0IGZvciBtb3JlIHRoYW4gb25lIHNvdW5kIGNhcmQgYXQgdGhlIHNhbWUKCXRpbWUuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBnbWFpbC5jb20+CglBZGQgdGhyZWUgbWlzc2luZyBkbGxzIHRvIHRoZSBsaXN0LgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbnVwIGFuZCBzaW1wbGlmeSB0aGUgcGFpbnRpbmcgY29kZS4KCUZpeCBhIHBvdGVudGlhbCBidWcgYWxvbmcgdGhlIHdheS4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIGRsbHMvd2lubW0vbWNpLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IG1lbW9yeSBsZWFrIGluIGVycm9yIHBhdGguCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggbWVtb3J5IGxlYWsgd2hlbiB0aGVyZSBhcmUgdG9vIG1hbnkgZHJpdmVycy4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUF2b2lkIHRyYXAgaW4gbWl4ZXJHZXRMaW5lQ29udHJvbHNBIHdoZW4gY0NvbnRyb2xzIGlzIHVuaW5pdGlhbGl6ZWQKCWFuZCBNSVhFUl9HRVRMSU5FQ09OVFJPTFNTRl9PTkVCWVRZUEUgcmVxdWVzdGVkLgoKMjAwNS0wMy0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbWxhbmcvdGVzdHMvbWxhbmcuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTWFrZSBtbGFuZ190ZXN0LmV4ZSBsb2FkYWJsZSBvbiBOVCA0LjAuCgoJKiBkbGxzL3JpY2hlZDIwL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwKCSAgZGxscy9yaWNoZWQyMC93cml0ZXIuYzoKCVBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIEVNX1NUUkVBTU9VVCBhbmQgUlRGIHdyaXRlci4KCgkqIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvcnRmLmg6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQWRkZWQgImdlbmVyYXRvciIgUlRGIGRlc3RpbmF0aW9uIGhhbmRsaW5nLgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQWRkZWQgbWlzc2luZyBQRkFfSlVTVElGWSBkZWZpbml0aW9uLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOgoJQXZvaWQgYWNjZXNzaW5nIGFuIHVuaW5pdGlhbGl6ZWQgc3RyaW5nIGluIHRoZSBmYWlsdXJlIGNhc2UuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sCgkgIG1pc2MvcmVnaXN0cnkuYzoKCUdldCByaWQgb2YgdGhlIHJlbWFpbmluZyByZWdpc3RyeSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCgoJKiBzZXJ2ZXIvcXVldWUuYzoKCUF2b2lkIHJldHVybmluZyBoYXJkd2FyZSBtZXNzYWdlcyBpZiB0aGV5IGhhdmUgbm8gY2hhbmNlIHRvIG1hdGNoIHRoZQoJZmlsdGVyLgoKCSogZGxscy9hZHZwYWNrL2FkdnBhY2suYywgZGxscy9hZHZwYWNrL2FkdnBhY2suc3BlYzoKCU1hdHRoZXcgTWFzdHJhY2NpIDxtbWFzdHJhY0BjYW5hZGEuY29tPgoJSW1wbGVtZW50IFJlZ2lzdGVyT0NYLgoJU3R1YiBmb3IgRGVsTm9kZVJ1bkRMTDMyLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IHJlbGVhc2UgY2FwdHVyZSBiZWZvcmUgc2VuZGluZyBXTV9OQ0RFU1RST1kgbWVzc2FnZSwgdXBkYXRlIHRoZQoJdGVzdHMgdG8gcmVmbGVjdCB0aGF0LgoKCSogaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hvYmppZGwuaWRsOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBpbnRlcmZhY2UgZGVjbGFyYXRpb25zIHRvIHNob2JqaWRsLmlkbC4KCgkqIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci9tZXNzYWdlLmM6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJQXNzb3J0ZWQgbWVtbGVhayBmaXhlcy4gRm91bmQgb24gTWljaGFlbCBTdGVmYW5pdWMgc21hdGNoIGxpc3QuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jOgoJR2V0IHJpZCBvZiB0aGUgcmVnaXN0cnkgc2F2aW5nIGxldmVsIGhhY2suCglNYWtlIHBlcmlvZGljIHNhdmluZyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6IFJhbGYgUy4gRW5nZWxzY2hhbGwgPHJzZUBlbmdlbHNjaGFsbC5jb20+CglGaXggaW5jb3JyZWN0IHJhbmRvbSBtdWx0aWNhc3QgTUFDIGFkZHJlc3MgY3JlYXRpb24uCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCVVwZGF0ZSBudGRsbC5zcGVjIGFnYWluc3QgY3VycmVudCBNaWNyb3NvZnQgYnVpbGQuCgoJKiBkbGxzL2F0bC8uY3ZzaWdub3JlLCBkbGxzL2F0bC9NYWtlZmlsZS5pbiwgZGxscy9hdGwvYXRsaWZhY2UuaWRsLAoJICBkbGxzL2F0bC9yZWdpc3RyYXIuYywgZGxscy9hdGwvcmVnc3ZyLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgQVRMUmVnaXN0cmFyLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBFdmFuIERlYXVibCA8d2luZUB3YXJwZWR2aWV3LmNvbT4KCVRSRUVWSUVXX0RvU2VsZWN0SXRlbSBzaG91bGQgbm90IGRvIGFueSBvZiB0aGUgVFZHTl9GSVJTVFZJU0lCTEUgd29yawoJaWYgdGhlIG5ld1NlbGVjdCBwYXJhbWV0ZXIgaXMgTlVMTC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIHN3aXRjaCB0byBjb3JyZWN0IHNoZWxsIGRlc2t0b3AgY29udGV4dCBtZW51CgktIGxhdW5jaCBkZXNrLmNwbCB3aGVuIGFjdGl2YXRpbmcgdGhlIGRlc2t0b3AgY29udGV4dCBtZW51IGVudHJ5CgkgICJwcm9wZXJ0aWVzIgoJLSBkb24ndCBzZW5kIFdNX0NPTU1BTkQgaWYgd2UgZGlkbid0IGdldCBhIHNoZWxsIHZpZXcgd2luZG93CgoJKiBwcm9ncmFtcy93aW5lZGJnL2RiZy55OiBDLiBTY290dCBBbmFuaWFuIDxjc2NvdHRAY3Njb3R0Lm5ldD4KCUFkZCB0U1RSSU5HIHRvIHRoZSBwYXRobmFtZSBwcm9kdWN0aW9uLCBzbyB0aGF0IHlvdSBjYW4gcXVvdGUgYQoJcGF0aG5hbWUgd2hpY2ggY29udGFpbnMgJ29kZCcgY2hhcmFjdGVycy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGVidWcubDogQy4gU2NvdHQgQW5hbmlhbiA8Y3Njb3R0QGNzY290dC5uZXQ+CglNb3ZlIGRlZmluaXRpb24gb2YgJ3RQQVRIJyB0b2tlbiB1cCwgc28gdGhhdCAnLycsICcuJyBhbmQgJzB4QScgKGV0YykKCWFyZSBsZXhlZCBhcyBwYXRocyAoaW4gdGhlIGFwcHJvcHJpYXRlIGNvbnRleHRzKSBpbnN0ZWFkIG9mIGFzCglvcGVyYXRvciBvciBudW1iZXIgdG9rZW5zLgoJQWRkICctJyB0byB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgbGVnYWwgaW4gYSBwYXRobmFtZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZWRldi1rZXJuZWwuc2dtbDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSByZW9yZ2FuaXNhdGlvbiBvZiBmdWxsIGNoYXB0ZXIKCS0gcmV3cm90ZSB0aGUgY29uc29sZSBwYXJ0CgktIGFkZGVkIEZTIGRvY3VtZW50YXRpb24KCgkqIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmM6IEpvcmlzIEh1aXplciA8am9yaXNodWl6ZXJAcGxhbmV0Lm5sPgoJQSBmZXcgbWVtb3J5IGNoZWNrcyBhdm9pZGluZyBtZW1vcnkgbGVha3MuCgoJKiBkbGxzL3dpbmVkM2QvYmFzZXRleHR1cmUuYywgZGxscy93aW5lZDNkL2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL3N1cmZhY2UuYywKCSAgZGxscy93aW5lZDNkL3RleHR1cmUuYywgZGxscy93aW5lZDNkL3ZvbHVtZS5jLAoJICBkbGxzL3dpbmVkM2Qvdm9sdW1ldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJRW5jYXBzdWxhdGUgdGV4dHVyZSwgc3VyZmFjZSBlbmNhcHN1bGF0ZWQuCglBZGRlZCBCaW5kVGV4dHVyZSwgR2V0VGV4dHVyZURpbWVuc2lvbnMsIFVuQmluZFRleHR1cmUuCglQcm9wZXIgR2V0Q29udGFpbmVyIHN1cHBvcnQgZm9yIHN1cmZhY2UuCglTZXRDb250YWluZXIgYWRkZWQgdG8gc3VyZmFjZSBhbmQgdm9sdW1lLgoJU2V0SW5QYnVmZmVyU3RhdGUgYWRkZWQgdG8gc3VyZmFjZSAodW50aWwgZ2wgY29udGV4dCBtYW5hZ2VtZW50IGlzCglpbXBsZW1lbnRlZCkuCglNaW5vciBjaGFuZ2VzOgoJLSBCYXNlVGV4dHVyZSBubyBsb25nZXIgJ2hvbGRzJyBhIHJlZmVyZW5jZSB0byBJV2luZUQzRERldmljZSB0bwoJICBwcmV2ZW50IGNpcmN1bGFyIHJlZmVyZW5jaW5nLgoJLSBCZXR0ZXIgbWFuYWdtZW50IG9mIHJlZmVyaW5naW5nIGZvciB0ZXh0dXJlLgoJLSBTb21lIFRPRE8ncyBmb3IgaW1wbGVtZW50aW5nIGEgY29udGV4dCBtYW5hZ2VyLgoJLSBCZXR0ZXIgcHJlbG9hZCBpbXBsZW1lbnRhdGlvbi4KCS0gRml4IGNvbXBpbGUgd2FybmluZyBpbiBkZXZpY2UuYyBTZXQvR2V0U2FtcGxlclN0YXRlLgoJLSBBZGQgUXVlcnlJbnRlcmZhY2Ugc3VwcG9ydCBmb3Igc3VyZmFjZS4KCS0gRm9ybWF0IFg4UjhHOEI4IGFkZGVkIHRvIGxvY2tpbmcuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLAoJICBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBScGNNZ210U3RvcFNlcnZlckxpc3RlbiBzaG91bGQgbm90IGFmZmVjdCBhdXRvLWxpc3RlbiBpbnRlcmZhY2VzLgoJLSBJbXBsZW1lbnQgc3R1YiBmb3IgUnBjUmV2ZXJ0VG9TZWxmRXguCgktIENoYW5nZSB0aGUgbW9yZSB2ZXJib3NlIGZpbGVzIHRvIHVzZSBhIG5ldyBkZWJ1ZyBjaGFubmVsLCAicnBjLiIKCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvbXJ1LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDb21tZW50IG91dCBhIHRlc3QgdGhhdCBjcmFzaGVzIG9uIGVhcmx5IHZlcnNpb25zLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUZXN0cyBhbmQgc21hbGwgZml4IGZvciBQYXRoTWFrZVByZXR0eSgpLgoJRml4IGEgY3Jhc2ggYW5kIHRlc3QgZmFpbHVyZSB3aXRoIGVhcmx5IG5hdGl2ZSBkbGxzLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVbmljb2RpZmljYXRpb24gYW5kIHR5cGVzYWZlIGludGVyZmFjZXMuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wbGVtZW50IFZUX0JZUkVGIHwgVlRfQlNUUiBtYXJzaGFsbGluZy4KCS0gQWRkIG1vcmUgaW50ZWdlciB0eXBlcyBmb3IgbWFyc2hhbGluZyBhbmQgdW5tYXJzaGFsaW5nLgoJLSBJbXBsZW1lbnQgVlRfQllSRUYgfCBWVF9CU1RSIHVubWFyc2hhbGluZy4KCS0gRG9uJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBUS0lORF9ESVNQQVRDSC9US0lORF9JTlRFUkZBQ0UKCSAgdW5tYXJzaGFsaW5nIGFzIGl0IHdpbGwgYmUgbG9zdCBpbiB0aGUgc3VjY2VzcyBjYXNlIGFuZCBpbnRlcmZlcmVzCgkgIHdpdGggdGhlIGZhaWx1cmUgY2FzZS4KCgkqIGRsbHMvbnRkbGwvcmVnLmM6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCU1ha2UgUnRsKlJlZ2lzdHJ5KiBmdW5jdGlvbnMgY2FzZSBpbnNlbnNpdGl2ZS4KCgkqIGRsbHMvcmljaGVkMjAvY2FyZXQuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCU1ha2UgTUVfQXJyb3dMZWZ0KCkgcmV0dXJuIGEgdmFsdWUgaW4gZXZlcnkgY2FzZS4KCgkqIGluY2x1ZGUvbnBhcGkuaDogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeCBmdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgbXN2YyBidWlsZC4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDaGFuZ2UgYSBmaXhtZSB0byBhIHdhcm4sIGFuZCB1c2UgVyB2ZXJzaW9uIG9mIGNhbGwuCgoJKiBkbGxzL2dkaS9tZXRhZmlsZS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJZiBhIHplcm8gaW5kZXggaXMgcGFzc2VkIHRvIE1FVEFfU0VMRUNUQ0xJUFJFR0lPTiByZXNldCB0aGUgY2xpcAoJcmVnaW9uLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU3BlY2lhbCBjYXNlIFdpbjl4IHBsYXRmb3JtcyBpbiB0aGUgZGVza3RvcCB2aXNpYmlsaXR5IHRlc3QsIGluIFdpbjk4CglHZXRVc2VyT2JqZWN0SW5mb3JtYXRpb24gaXMgYSBzdHViIHJldHVybmluZyBFUlJPUl9DQUxMX05PVF9JTVBMRU1FTlRFRC4KCgkqIGRsbHMvbmV0YXBpMzIvdGVzdHMvd2tzdGEuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4IGEgdGVzdCB0byBwYXNzIHVuZGVyIFhQLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgbXNnLmMgYW5kIHdpbi5jIGZhaWx1cmVzIHJ1bm5pbmcgb24gTlQ0IGFuZCBYUC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQb3J0aW5nIGZpeGVzLgoKCSogZGxscy9tc2Ntcy9tc2Ntcy5zcGVjOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglDb3JyZWN0IENoZWNrQml0bWFwQml0cyBlbnRyeS4KCgkqIGRsbHMvbWFwaTMyL01ha2VmaWxlLmluOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglMaW5rIG1hcGkzMiB0byBudGRsbC4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglBZGQgRUNUIHRvIHRpbWV6b25lIGxpc3QuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglQcml2YXRlIHByb3BlcnR5IHNldHMgZG8gbm90IGV4aXN0IGluIGVhcmx5IHZlcnNpb25zIG9mIERpcmVjdCBTb3VuZAoJc28gc2tpcCB0ZXN0cyBpZiBub3Qgc3VwcG9ydGVkLgoJQWRkIHRlc3RzIGZvciBBLCBXIGFuZCAxIHZhcmlhdGlvbnMgb2YgZGF0YS4KCgkqIGRsbHMvZHNvdW5kL3Byb3BzZXQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkuCglBZGQgbW9yZSBhbmQgYmV0dGVyIGVycm9yIG1lc3NhZ2VzLgoJQWRkIGNoZWNrcyBmb3IgZmFpbGVkIEhlYXBBbGxvYy4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJQXNzb3J0ZWQgbWVtbGVhayBmaXhlcy4gRm91bmQgb24gTWljaGFlbCBTdGVmYW5pdWMgc21hdGNoIGxpc3QuCgoyMDA1LTAzLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93c29jazMyL3NvY2tldC5jOiBSZXBsYWNlIGNhbGxvYygpIGJ5IEhlYXBBbGxvYygpLgoKCSogaW5jbHVkZS9kaW5wdXQuaDogR2V0IHJpZCBvZiB2ZXJzaW9uICNpZmRlZnMuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3RnT3BlblN0b3JhZ2Ugc2hvdWxkbid0IG9wZW4gemVybyBsZW5ndGggc3RvcmFnZSBmaWxlcy4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL0NzLnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci9EZS5yYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvRXMucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL0ZyLnJjLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9JdC5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvUHQucmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmM6CglKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CglJbnRlcm5hdGlvbmFsaXphdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIG1pc2MvcmVnaXN0cnkuYzoKCUdldCByaWQgb2YgdGhlIFdpbmRvd3MgcmVnaXN0cnkgbG9hZGluZyBvbiBzdGFydHVwLCB0aGlzIG5lZWRzIHRvIGJlCglkb25lIGRpZmZlcmVudGx5LgoKCSogZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzogVGhvbWFzIEtobyA8dGhvbWFza2hvQGdtYWlsLmNvbT4KCUFkZGVkIHNlbGVjdF9zZXJ2ZXIoKSB0ZXN0IHRoYXQgdXNlcyBzZWxlY3QoKSBpbiBzZXJ2aW5nIGNsaWVudHMuCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbW1pby5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUFzc29ydGVkIG1lbWxlYWsgZml4ZXMuIEZvdW5kIG9uIE1pY2hhZWwgU3RlZmFuaXVjIHNtYXRjaCBsaXN0LgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvRW4ucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmM6CglKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CglBZGQgc2VhcmNoIGZpZWxkIHdpdGggZmluZC1hcy15b3UtdHlwZSBmdW5jdGlvbi4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIC1pc3lzdGVtIGZvciBzeXN0ZW0gaW5jbHVkZXMgYXMgdGhleSBzaG91bGQgYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZQoJLUkgaW5jbHVkZXMuIFNwb3R0ZWQgYnkgQm9heiBIYXJyb3NoLgoKCSogZGxscy9kM2Q5L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q5L3Jlc291cmNlLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOS90ZXh0dXJlLmMsIGRsbHMvZDNkOS92ZXJ0ZXhidWZmZXIuYywgZGxscy9kM2Q5L3ZvbHVtZS5jLAoJICBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jLCBkbGxzL2QzZDkvdnNoYWRlcmRlY2xhcmF0aW9uLmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglDaGFuZ2UgQWRkUmVmIGluIHF1ZXJ5SW50ZXJmYWNlIHRvIElVbmtub3duX0FkZFJlZi4KCU1vdmUgcHBWb3VsbWUgdG8gZDNkOXZvbG91bWVpbXBsIHN0cnVjdHVyZS4KCVNvbWUgbWlub3Igc3R5bGlzdGljIGNoYW5nZXMgKG1ha2luZyBldmVyeXRoaW5nIHRoZSBzYW1lKS4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvcnVuLmMsCgkgIGRsbHMvcmljaGVkMjAvc3R5bGUuYywgZGxscy9yaWNoZWQyMC91bmRvLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CgktIEVNX1NUUkVBTUlOIGNhbiBub3cgZGVhbCB3aXRoIHVuZG8gaW4gYSByZWFzb25hYmxlIG1hbm5lciAobm8KCSAgbXVsdGlwbGUgdW5kbyBhY3Rpb25zIGluIG9uZSBFTV9TVFJFQU1JTikuCgktIFJlbGF0ZWQgY2hhbmdlcyB0byB1bmRvIGNvZGUgKHVtSWdub3JlIG1vZGUgaXMgbm93IGhhbmRsZWQKCSAgY29ycmVjdGx5KS4KCS0gTnVtZXJvdXMgaW1wcm92ZW1lbnRzIGluIHRoZSBSVEYgcmVhZGVyOiBpdCByZWFkcyBzb21lIGNoYXJhY3RlcgoJICBhdHRyaWJ1dGVzIG5vdyAoeW91IHdpbGwgaGF2ZSBwcm9wZXIgc21hbGwgcHJpbnQgaW4gbGljZW5zZSBhZ3JlZW1lbnRzCgkgIG5vdykuCgktIEZpeGVkIGEgbWVtb3J5IG92ZXJ3cml0ZSBidWcgaW4gY29udmVyc2lvbiBmcm9tIENIQVJGT1JNQVQyQSB0bwoJICBDSEFSRk9STUFUMlcuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmVuYW1lIGFwYXJ0bWVudCBmdW5jdGlvbnMgdG8gYmVjb21lIG1vcmUgb2JqZWN0LW9yaWVudGVkLgoJLSBSZW5hbWUgcmVnaXN0ZXJfaWZzdHViIHRvIG1hcnNoYWxfb2JqZWN0IHRvIG1vcmUgYWNjdXJhdGVseSBkZXNjcmliZQoJICB3aGF0IGl0IGRvZXMuCgktIEFkZCBuZXcgZnVuY3Rpb24sIGFwYXJ0bWVudF9nZXRveGlkLCB0byBwcmVwYXJlIGZvciBhIHBvc3NpYmxlCgkgIGZ1dHVyZSBwYXRjaCB3aGVyZSByZW1vdGluZyBpcyBzdGFydGVkIG9uIGRlbWFuZC4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIG91dGVyIHVua25vd24gc3VwcG9ydCBmb3IgdHlwZWxpYiBtYXJzaGFsZXIuCgoyMDA1LTAzLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOiBSZWxlYXNlIDIwMDUwMzEwLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA1LTAzLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXggYSBjcmFzaCBpZiB0aGUgTW96aWxsYSBBY3RpdmVYIGNvbnRyb2wgZG9lc24ndCBpbXBsZW1lbnQKCURsbENhblVubG9hZE5vdy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXggdGhlIGNhbGxpbmcgY29udmVudGlvbiBvZiBEbGxDYW5VbmxvYWROb3cuCgoJKiBkbGxzL21zaS9hcHBzZWFyY2guYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4IGEgcmVncmVzc2lvbiBpbiBBcHBTZWFyY2guCgoJKiBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3JlZ2lzdHJ5LmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnQgTXNpRW51bVJlbGF0ZWRQcm9kdWN0cy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIHNlcnZlci93aW5kb3cuYzoKCUNsZWFyIHRoZSBpbnRlcm5hbCBwYWludCBmbGFnIGluIHRoZSBzZXJ2ZXIgYmVmb3JlIHJldHVybmluZyBhCglXTV9QQUlOVCBtZXNzYWdlIHRvIGF2b2lkIGFuIGV4dHJhIHNlcnZlciByb3VuZC10cmlwLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGEgdGVzdCBmb3IgdGhlIGRlc2t0b3AgdmlzaWJpbGl0eSBiYXNlZCBvbiB0aGUgTVNETiBhcnRpY2xlCglwb2ludGVkIG91dCBieSBSb2JlcnQgU2hlYXJtYW4uCgoJKiBkbGxzL3VzZXIvdGVzdHMvbGlzdGJveC5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVVzZSA1MTIgYnl0ZSBidWZmZXIgZm9yIGJ1ZmZlciBvZiBMQl9HRVRURVhUIGFuZCBDQl9HRVRMQlRFWFQuCglBZGRlZCB0ZXN0Y2FzZSB3aXRoID4gMjU2IGJ5dGUgc3RyaW5nIGluIGxpc3Rib3guCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOiBCcm91YXJkIE5pY29sYXMgPG5pY29sYXMuYnJvdWFyZEBsaWJlcnR5c3VyZi5mcj4KCUZpeCBtZW51IGJhY2tzbGFzaCBlc2NhcGluZy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2Vudmlyb24uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRlc3QgZm9yICVTeXN0ZW1yb290JS4KCgkqIGRsbHMvdXNlci9zY3JvbGwuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUltcGxlbWVudGVkIEdldFNjcm9sbEJhckluZm8oKSBmdW5jdGlvbiBhbmQgU0JNX0dFVFNDUk9MTEJBUklORk8KCW1lc3NhZ2UuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9tZXNzYWdlLmgsCgkgIHdpbmRvd3MvbWVzc2FnZS5jOgoJTWVyZ2UgdGhlIHJlc3Qgb2YgdGhlIG1lc3NhZ2luZyBjb2RlIGludG8gZGxscy91c2VyL21lc3NhZ2UuYyBhbmQgZ2V0CglyaWQgb2Ygd2luZG93cy9tZXNzYWdlLmMuCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9Fbi5yYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmgsIHByb2dyYW1zL3VuaW5zdGFsbGVyL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmM6CglKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CglVc2UgYSBkaWFsb2cgaW5zdGVhZCBvZiBhIG5vcm1hbCB3aW5kb3cuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVByb3Blcmx5IGNvcGUgd2l0aCBnZXRfbWVzc2FnZSBiZWluZyBjYWxsZWQgcmVjdXJzaXZlbHkgd2hpbGUKCXByb2Nlc3NpbmcgYSBoYXJkd2FyZSBtZXNzYWdlLgoKCSogZGxscy94MTFkcnYvd2ludGFiLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBYTGlzdElucHV0RGV2aWNlcyBzcGVjIHNheSB0aGF0IGRldmljZSBsaXN0IHNob3VsZCBiZSBmcmVlZCB1c2luZwoJICBYRnJlZURldmljZUxpc3QKCS0gYmV0dGVyIHJvYnVzdG5lc3Mgb24gWDExRFJWX0F0dGFjaEV2ZW50UXVldWVUb1RhYmxldAoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaCwgZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzoKCUMuIFNjb3R0IEFuYW5pYW4gPGNzY290dEBjc2NvdHQubmV0PgoJQWxsb3cgc2NhbmYgdG8gY29udGludWUgcGFyc2luZyBmb3JtYXQgc3RyaW5nIGFmdGVyIGEgJyVuJy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJVGFrZSBtZXNzYWdlIGZpbHRlcmluZyBpbnRvIGFjY291bnQgd2hlbiB1cGRhdGluZyB0aGUgc3RhdGljIGRhdGEgZm9yCglkb3VibGUgY2xpY2sgc3VwcG9ydC4KCgkqIGRsbHMvZ2RpL2dkaW9iai5jOgoJQWxsb2NhdGUgZm9udHMgYW5kIHJlZ2lvbnMgZnJvbSB0aGUgbGFyZ2UgaGVhcCB0b28uCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCVRtcCB3YXMgbm90IGZyZWVkIGluIGNhc2Ugb2YgZXJyb3JzIGluIHNhdmVfYnJhbmNoKCkuCgoJKiBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L2Fuc2lfZ2VuLmgsCgkgIGRsbHMvcmljaGVkaXQvYW5zaV9zeW0uaCwgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywKCSAgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5oLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvcmljaGVkaXQvcnRmLmgsIGRsbHMvcmljaGVkaXQvcnRmMnRleHQuaCwKCSAgZGxscy9yaWNoZWRpdC9zdGRjaGFybmFtZXMuaCwgZGxscy9yaWNoZWRpdC90ZXh0LXdyaXRlci5jLAoJICBkbGxzL3JpY2hlZGl0L3RleHRfbWFwLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGb3J3YXJkIHRoZSBSaWNoRWRpdCAxLjAgY29udHJvbCB0byB0aGUgUmljaEVkaXQgMi4wIGNvbnRyb2wuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvZm9ybWF0LmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9wYWNrYWdlLmMsIGRsbHMvbXNpL3ByZXZpZXcuYywKCSAgZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvbXNpL3N1bWluZm8uYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gbWFrZSBzdXJlIG1zaWhhbmRsZTJtc2lpbmZvIGlzIGNvcnJlY3RseSBtYXRjaGVkIHdpdGggbXNpb2JqX3JlbGVhc2UKCS0gZG9uJ3QgZG8gcmVkdW5kYW50IE5VTEwgY2hlY2tzCgoJKiBpbmNsdWRlL3Byb3BpZGwuaWRsOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgc29tZSBtaXNzaW5nIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRnVsbHkgZGVsZXRlIGN1c3RvbSBoZWFkZXJzIG9uIGNvbm5lY3Rpb24gb3BlbmluZy4KCS0gRnJlZSB1bm5lZWRlZCBtZW1vcnkgb24gY2xlYXJpbmcgb2Ygc3RhbmRhcmQgaGVhZGVycy4KCS0gRml4IGluZGV4IHNhbml0eSB0ZXN0IGluIGRlbGV0ZSBmdW5jdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJQ29ycmVjdCBpbmNvcnJlY3QgdXNlIG9mIGFyZ3VtZW50cyB0byBRdWVyeVNlcnZpY2VDb25maWdBLiBTcG90dGVkIGJ5CglUcm95IFJvbGxvLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9vcGVuZ2wzMi93Z2xfZXh0LmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsX2V4dC5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGltcGxlbWVudHMgV0dMX0FSQl9yZW5kZXJfdGV4dHVyZSBzdXBwb3J0IChubyBtb3JlIHN0dWJzKQoJLSBwYXNzIGdsWEdldFByb2NBZGRyZXNzQVJCIHB0ciB0byBpbml0aWFsaXNlIGZ1bmN0aW9uCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQ2hlY2sgYWx3YXlzIGlmIGRlc3RpbmF0aW9uIHN1cmZhY2UgaXMgbG9ja2VkLgoKMjAwNS0wMy0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJQWRkZWQgV01fWDExRFJWX0RFTEVURV9XSU5ET1cgbWVzc2FnZSB0byBoYW5kbGUgY2xvc2UgcmVxdWVzdHMgc28gdGhhdAoJd2UgY2FuIHNlbmQgdGhlIFdNX1NZU0NPTU1BTkQgd2l0aCBTZW5kTWVzc2FnZSBpbnN0ZWFkIG9mIFBvc3RNZXNzYWdlLgoJQWRkZWQgbWlzc2luZyBOT05BTUVMRVNTVU5JT04gZGVmaW5lLgoKCSogZGxscy9yaWNoZWQyMC9jYXJldC5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwKCSAgZGxscy9yaWNoZWQyMC9wYWludC5jLCBkbGxzL3JpY2hlZDIwL3J1bi5jLCBkbGxzL3JpY2hlZDIwL3dyYXAuYzoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCS0gT3B0aW1pemVkIHJlcGFpbnQgb2YgdGhlIGFyZWEgYmVsb3cgdGhlIHRleHQuCgktIE1FX0pvaW5SdW5zIGRpZG4ndCBtYXJrIHRoZSBwYXJhZ3JhcGggZm9yIHJld3JhcHBpbmcsIGZpeGVkLgoJLSBSZW1vdmVkIFBvc3RRdWl0TWVzc2FnZSgwKSBmcm9tIFdNX0RFU1RST1kgaGFuZGxlciAoZHVoISkuCgktIFVzZSBvZiBFTV9HRVRPTEVJTlRFUkZBQ0UgaXMgcmVwb3J0ZWQgd2l0aCBGSVhNRSBpbnN0ZWFkIG9mIFRSQUNFCgkgIChhbnkgYXBwIHVzaW5nIHRoaXMgbWVzc2FnZSBpcyBsaWtlbHkgdG8gZW5jb3VudGVyIG1ham9yIHByb2JsZW1zKS4KCgkqIGRsbHMvbXNjbXMvbXNjbXMuc3BlYywgZGxscy9tc2Ntcy9tc2Ntc19tYWluLmMsIGRsbHMvbXNjbXMvcHJvZmlsZS5jLAoJICBkbGxzL21zY21zL3N0dWIuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJLSBJbXBsZW1lbnRhdGlvbiBzdHVicyBmb3IgR2VuZXJhdGVDb3B5RmlsZVBhdGhzLAoJICBTcG9vbGVyQ29weUZpbGVFdmVudC4KCS0gQ2FsbCBEaXNhYmxlVGhyZWFkTGlicmFyeUNhbGxzIG9uIHByb2Nlc3MgYXR0YWNoLgoJLSBEb2N1bWVudCBtb3JlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglDaGVjayBmb3IgTlVMTCBiZWZvcmUgdG91Y2hpbmcgc3JjLgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3VzZXIvdXNlcl9wcml2YXRlLmgsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS93aW4uaCwKCSAgd2luZG93cy9pbnB1dC5jOgoJTW92ZWQgU2VuZElucHV0IGFuZCByZWxhdGVkIGZ1bmN0aW9ucyB0byB0aGUgVVNFUiBkcml2ZXIgdG8gYXZvaWQgYQoJbnVtYmVyIG9mIGRsbCBzZXBhcmF0aW9uIGhhY2tzLgoKCSogd2luZG93cy93aW4uYzogUmVtb3ZlIGEgdHJhY2UgdGhhdCdzIGNhdXNpbmcgdG9vIG11Y2ggb3V0cHV0LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgJ0Jyb3dzZScgZnVuY3Rpb25hbGl0eSBmb3IgdGhlIGRyaXZlIG1hcHBpbmcgcHJvcGVydHkKCXNoZWV0LgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvcmVnc3ZyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfdW5peGZzLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglCZWdpbm5pbmcgb2YgYSBzaGVsbCBuYW1lc3BhY2UgZXh0ZW5zaW9uIHRvIGJyb3dzZSB0aGUgdW5peAoJZmlsZXN5c3RlbS4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IEtyenlzenRvZiBGb2x0bWFuIDxrcnp5c3p0b2ZAZm9sdG1hbi5jb20+CglXTV9DQU5DRUxNT0RFIHJlc2V0cyBtZW51IGZsYWcgaW4gdGhlIGRlZmF1bHQgd2luZG93IHByb2NlZHVyZS4KCgkqIGRsbHMvcmljaGVkMjAvZWRpdG9yLmM6IFBoaWwgS3J5bG92IDxwaGlsQG5ld3N0YXIucmluZXQucnU+CglDaGFuZ2VkIGJ1ZmZlciBzaXplIGZvciBFTV9TVFJFQU1JTiBtZXNzYWdlIHRvIDQwOTYsIGFzIGl0J3Mgd2hhdCBNJAoJdXNlcy4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGR1cGxpY2F0ZSBtZXNzYWdlIGRlZmluZXMgaW4gaGVhZGVyLgoKCSogZGxscy91c2VyL21lbnUuYywgaW5jbHVkZS93aW51c2VyLmg6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUltcGxlbWVudGVkIE1JSU1fQklUTUFQIHN0YXRlLgoJSGFuZGxlIE1OU19DSEVDS09SQk1QIHN0eWxlLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jLCB3aW5kb3dzL2lucHV0LmM6CglNYWtlIHRoZSBTd2FwTW91c2VCdXR0b24gZnVuY3Rpb24gYW5kIHRoZSBTUElfU0VUTU9VU0VCVVRUT05TV0FQCglwYXJhbWV0ZXIgd29yayBvbiB0aGUgc2FtZSBmbGFnLgoKCSogc2VydmVyL3dpbmRvdy5jOgoJRG9uJ3QgY2hlY2sgY2hpbGRyZW4gb2YgbWluaW1pemVkIHdpbmRvd3MgaW4gZ2V0X3VwZGF0ZV9yZWdpb24uCgoJKiBkbGxzL3JpY2hlZDIwL2NhcmV0LmMsIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsIGRsbHMvcmljaGVkMjAvZWRpdHN0ci5oLAoJICBkbGxzL3JpY2hlZDIwL2xpc3QuYywgZGxscy9yaWNoZWQyMC9wYWludC5jLCBkbGxzL3JpY2hlZDIwL3BhcmEuYywKCSAgZGxscy9yaWNoZWQyMC9ydW4uYywgZGxscy9yaWNoZWQyMC93cmFwLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CglUaGUgbWVhbmluZyBvZiB0aGUgcmV3cmFwIGZsYWcgZ290IGludmVydGVkIChNRVBGX1JFV1JBUCBpbnN0ZWFkIG9mCglNRVBGX1dSQVBQRUQpIGZvciBjb25zaXN0ZW5jeS4KCU1ham9yIGNvZGUgY2xlYW51cHMgaW4gcmV3cmFwL3JlcGFpbnQgY29kZSwgbGVhZGluZyB0byAic21hcnRlciIKCWJlaGF2aW91ciB3cnQgcmVwYWludGluZyBzZWxlY3Rpb25zLgoKCSogZGxscy9kcGxheXgvZHBsb2JieS5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUF2b2lkIENvbnZlcnRUb0dsb2JhbEhhbmRsZSBjYWxscy4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvdGVzdHMvc3RvcmFnZTMyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTaGFyZWQgcmVhZGluZyBvZiBzdG9yYWdlIGZpbGVzIHJlcXVpcmVzIFNUR01fVFJBTlNBQ1RFRC4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYzogR2FicmllbCBCdWFkZXMgUnViaW8gPGJ1YnVAZG9vcGxleC5lcz4KCVdoZW4gc2VuZGluZyBtdWx0aS1saW5lIGJveGVzIHRvIGNvbnNvbGUgdGhyb2doIFdpbmVDb25zb2xlT3V0cHV0QSwKCW9ubHkgdGhlIGZpcnN0IGxpbmUgd2FzIGJlaW5nIHRyYW5zbGF0ZWQgaW50byB3aWRlLWNoYXJzLgoKCSogZGxscy9vbGVhdXQzMi9yZWNpbmZvLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglNb3JlIGltcGxlbWVudGF0aW9uIG9mIElSZWNvcmRJbmZvLgoKCSogd2luZG93cy9zcHkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1lc3NhZ2Ugc3B5IHN1cHBvcnQgZm9yIFJpY2hFZGl0MjBXIGNvbnRyb2wuCgoyMDA1LTAzLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3BhaW50aW5nLmM6CglQcm9jZXNzIG9ubHkgcGVuZGluZyBleHBvc2UgZXZlbnRzIGR1cmluZyBSRFdfVVBEQVRFTk9XLCBub3QgYWxsIHRoZQoJb3RoZXIgWCBldmVudHMuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jOgoJVGFrZSBpbnRvIGFjY291bnQgdGhlIGV2ZW50IG1hc2sgcGFzc2VkIHRvIE1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHNFeAoJdG8gYWxsb3cgcHJvY2Vzc2luZyBvbmx5IGEgc3Vic2V0IG9mIHRoZSBhdmFpbGFibGUgWCBldmVudHMuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6CglBbGxvdyBzcGVjaWZ5aW5nIGV4dGVuZGVkIGNvbnRyb2wgc3R5bGVzIGFsc28gaW4gc3RhbmRhcmQgZGlhbG9ncwoJKHJlcG9ydGVkIGJ5IE1pY2hhZWwgTGluKS4KCgkqIGRsbHMvcmljaGVkMjAvY2FyZXQuYywgZGxscy9yaWNoZWQyMC9lZGl0b3IuYywKCSAgZGxscy9yaWNoZWQyMC9lZGl0b3IuaDoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCS0gc3BlY2lhbGl6ZWQgaGFuZGxlciBmb3IgU0ZfVEVYVCAoQU5TSSBvciBVbmljb2RlKSwgc2ltcGxlIGFuZCBmYXN0CgktIGNsZWFycyBjb250cm9sJ3MgdGV4dCBvbiBFTV9TVFJFQU1JTiB3aXRoIG5vIFNGRl9TRUxFQ1RJT04KCgkqIGRsbHMvcmljaGVkMjAvcmVhZGVyLmM6IEtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCS0gU2luZ2xlIHF1b3RlcyBhcmUgbm93IGhhbmRsZWQgcHJvcGVybHkgKHByZXZpb3VzbHkgdGhleSB3ZXJlCgkgIGluc2VydGVkIGFzIFtbJ11dKS4KCS0gQmV0dGVyIGhhbmRsaW5nIG9mIGNhbGxiYWNrIGZ1bmN0aW9uJ3MgcmVzdWx0cy4KCgkqIGRsbHMvbXNjbXMvbGNtc19hcGkuaCwgZGxscy9tc2Ntcy9tc2Ntc19tYWluLmMsIGRsbHMvbXNjbXMvc3R1Yi5jLAoJICBkbGxzL21zY21zL3RyYW5zZm9ybS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CgktIEltcGxlbWVudCBUcmFuc2xhdGVCaXRtYXBCaXRzLgoJLSBEb24ndCBwYXNzIGJvZ3VzIGludGVudCB2YWx1ZXMgdG8gbGNtcy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgcnVubmluZyB0ZXN0cyBvbiBhIHZpc2libGUgZGVza3RvcCBhIG1hbmRhdG9yeSByZXF1aXJlbWVudC4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCS0gRml4IHVubW92YWJsZSB3aW5kb3dzIGlmIHRoZSB3aW5kb3cgc3R5bGUgaXMgc2V0IHRvIFdTX1BPUFVQIHwKCSAgV1NfVklTSUJMRSBhbmQgV1NfRVhfQVBQV0lORE9XLgoJLSBGaXggbWV0YWNpdHkgZGlzcGxheWluZyBkZWNvcmF0aW9ucyB3aGVyZSBpdCBzaG91bGQgbm90LgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIHdpbmRvd3MvcXVldWUuYzoKCU1ha2Ugc3VyZSB0byBhbHdheXMgcGFzcyB2YWxpZCBRU18qIGZsYWdzIHRvCglNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbiwgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIC5leGUncyB3aXRoIGV4cG9ydGVkIGZ1bmN0aW9ucy4KCgkqIGRsbHMveDExZHJ2L3hmb250LmM6IEFkZGVkIHN1cHBvcnQgZm9yIGlzbzg4NTktMTYgY2hhcnNldC4KCgkqIGRsbHMvcmljaGVkMjAvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvZWRpdG9yLmgsIGRsbHMvcmljaGVkMjAvcmljaG9sZS5jLCBkbGxzL3V1aWQvdXVpZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBFTV9HRVRPTEVJTlRFUkZBQ0UuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWxsb2NhdGUgc3BhY2UgZm9yIHRlcm1pbmF0aW5nIG51bGwuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwgZGxscy9yaWNoZWQyMC9wYWludC5jLCBkbGxzL3JpY2hlZDIwL3J1bi5jLAoJICBkbGxzL3JpY2hlZDIwL3N0eWxlLmMsIGRsbHMvcmljaGVkMjAvd3JhcC5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJT2xkIGZvbnQgbWFuYWdlbWVudCByZXBsYWNlZCBieSB0aGUgY2FjaGUtYmFzZWQgb25lLCB3aGljaCBrZWVwcwoJbWF4aW11bSBvZiAxMCBIRk9OVHMgYXQgb25jZSwgaW5zdGVhZCBvZiBvbmUgcGVyIGEgY291cGxlIG9mIHJ1bnMuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDoKCUZpeGVkIFdTX0ZEX0NMUiBhbmQgV1NfRkRfU0VUIG1hY3JvcyAoc3BvdHRlZCBieSBUaG9tYXMgS2hvKS4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgQ0RMR2V0TG9uZ1BhdGhOYW1lW0FXXSBhbmQKCUlzSklUSW5Qcm9ncmVzcyBoYXZlIGhhcmRjb2RlZCBvcmRpbmFscy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglGaXggYSBtZW1vcnkgbGVhay4KCjIwMDUtMDMtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi94MTFkcnYuaDogQWRkZWQgYSBtaXNzaW5nIHByb3RvdHlwZS4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2NsaXBib2FyZC5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlIGEgdGhyZWFkLXNwZWNpZmljIHNlbGVjdGlvbiB3aW5kb3cgdG8gbWFrZSBzdXJlIHdlIHJlY2VpdmUgdGhlCglzZWxlY3Rpb24gZXZlbnRzIGluIHRoZSBjb3JyZWN0IHRocmVhZC4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIHByb2dyYW1zL3dpbmV2ZG0vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV2ZG0vd2luZXZkbS5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVN1cHBvcnQgZXhlY3V0aW9uIG9mIHBpZiBmaWxlcy4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSBDb25zb2xpZGF0ZSBlcnJvciBtZXNzYWdlIGhhbmRsaW5nLgoJLSBBZGQgZXJyb3IgY2hlY2tpbmcgdG8gYWxsIGluaXRpYWwgU3lzdGVtUGFyYW1ldGVyc0luZm9BIGNhbGxzIGluCgkgIGVhY2ggcGFyYW1ldGVyIHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgaWYgYSBnaXZlbiBwYXJhbWV0ZXIgaXNuJ3QKCSAgc3VwcG9ydGVkIG9yIGhhcyBmYWlsZWQgaW4gc29tZSBvdGhlciB3YXkgdGhhdCB3ZSByZXR1cm4gYW5kIGRvbid0CgkgIGNvbnRpbnVlIG9uIHdpdGggdGhlIHRlc3QuCgktIFNldExhc3RFcnJvciBiZWZvcmUgY2FsbGluZyB0ZXN0X2Vycm9yX21zZy4KCS0gU1BJX3tHRVQsU0VUfUlDT05USVRMRVdSQVAgaXMgc3VwcG9ydGVkIG9uIFdpbjk4LgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3JlY2luZm8uYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEltcGxlbWVudGVkIEdldFJlY29yZEluZm9Gcm9tVHlwZUluZm8gYW5kIEdldFJlY29yZEluZm9Gcm9tR3VpZC4KCS0gQmVnaW5uaWcgaW1wbGVtZW50YXRpb24gb2YgSVJlY29yZEluZm8uCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwKCSAgd2luZG93cy9tZXNzYWdlLmM6CglNb3ZlZCBUcmFuc2xhdGVNZXNzYWdlIGFuZCBEaXNwYXRjaE1lc3NhZ2UgdG8gZGxscy91c2VyL21lc3NhZ2UuYy4KCUFkZGVkIHN1cHBvcnQgZm9yIHBvc3RpbmcgaW50ZXJuYWwgbWVzc2FnZXMuCglBZGRlZCBzdXBwb3J0IGZvciBkcml2ZXItc3BlY2lmaWMgaW50ZXJuYWwgbWVzc2FnZXMuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6CglTZXQgU01fREJDU0VOQUJMRUQgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZSBpbnN0ZWFkIG9mCgloYXJkY29kaW5nIGl0IHRvIDAgKGZvdW5kIGJ5IE1pa2UgTWNDb3JtYWNrKS4KCgkqIGRsbHMvcmljaGVkMjAvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkMjAvZWRpdG9yLmMsCgkgIGRsbHMvcmljaGVkMjAvcmVhZGVyLmMsIGRsbHMvcmljaGVkMjAvcnRmLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglQb3J0IHRoZSBSVEYgcGFyc2VyIHRvIHRoZSByaWNoZWRpdCAyLjAgY29udHJvbC4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBlYWNoIGlmcHJveHkgaGF2ZSBpdHMgb3duIGNoYW5uZWwgYnVmZmVyIHRvIGZpeCBhIGJ1ZyB3aGVyZSBhCglwcm94eSB3aXRoIG11bHRpcGxlIGludGVyZmFjZXMgY291bGQgaW52b2tlIHRoZSB3cm9uZyBzdHViIGJ1ZmZlciBvbgoJdGhlIHNlcnZlci4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgdW5uZWNlc3Nhcnkgd2luZG93IGxvY2tpbmcgaW4gWDExRFJWX0Rlc3Ryb3lXaW5kb3cuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIHdpbmRvd3MvaW5wdXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIENhbGwgU2V0Q3Vyc29yUG9zIGZvciBhbiBpbmplY3RlZCBtb3VzZSBtZXNzYWdlIG9ubHkgaWYgd2UgcmVhbGx5CgkgIG5lZWQgdG8gbW92ZSBtb3VzZSBwb2ludGVyLgoJLSBBZGQgYSB0ZXN0IGNhc2UgZm9yIG1vdXNlIGNsaWNrIGhhbmRsaW5nLgoKCSogcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglNYWtlIG91dHB1dCBsaW5lLWJ1ZmZlcmVkIHRvIGF2b2lkIG1lc3NpbmcgdXAgbG9nIGZpbGVzLgoKCSogZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IG1vcmUgaW5jb3JyZWN0IHVzZXMgb2YgU1RHTV8gZW51bWVyYXRpb25zLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglXaGVuIGluaXRpYWxpemluZyBhIGxpdmUgdGFyZ2V0LCBhc2sgdG8gbG9hZCBtb2R1bGUgZmlsZSBuYW1lcywgbm90Cgltb2R1bGUgbmFtZXMgKHNwb3R0ZWQgYnkgUm9iZXJ0IFJlaWYpLgoKCSogZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTWF0dGhldyBNYXN0cmFjY2kgPG1hdHRAYWNsYXJvLmNvbT4KCUFkZGVkIHN1cmZhY2UgbG9ja2luZy4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jOgoJUmV0cnkgc2VuZGluZyBhIFdNX1BBSU5UIGluIHVwZGF0ZV9ub3cgYWZ0ZXIgd2Ugc2VudCBhbiBlcmFzZQoJbWVzc2FnZS4KCgkqIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIGxzdHJjbXBpQSBpbiBwcmVmZXJlbmNlIHRvIHN0cmNhc2VjbXAuCgoJKiBkbGxzL3JpY2hlZDIwL2VkaXRvci5jOgoJRml4ZWQgRExMX1BST0NFU1NfREVUQUNIIGhhbmRsZXIgdG8gYWN0dWFsbHkgdW5yZWdpc3RlciB0aGUgd2luZG93CgljbGFzc2VzLgoKCSogdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVkdW1wL2RlYnVnLmMsCgkgIHRvb2xzL3dpbmVkdW1wL2R1bXAuYywgdG9vbHMvd2luZWR1bXAvbWluaWR1bXAuYywKCSAgdG9vbHMvd2luZWR1bXAvcGUuYywgdG9vbHMvd2luZWR1bXAvcGUuaCwgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQ3JlYXRlZCBkdW1wLmMgYXMgYSBjZW50cmFsIHBvaW50IGZvciBmaWxlIGR1bXBpbmcgKGluY2x1ZGVzIGhlYWRlcgoJYW5hbHlzaXMsIHV0aWxpdHkgZnVuY3MuLi4pLgoJQWRkZWQgc3VwcG9ydCBmb3IgZHVtcGluZyBtaW5pZHVtcCBmaWxlcy4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLnNwZWMsIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsCgkgIGRsbHMvZGJnaGVscC9taW5pZHVtcC5jLCBpbmNsdWRlL2RiZ2hlbHAuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgbWluaWR1bXAgKHJlYWQgJiB3cml0ZSkuCgoJKiBkbGxzL2F0bC9hdGwuc3BlYywgZGxscy9hdGwvcmVnc3ZyLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHN0dWIgZm9yIEdldENsYXNzT2JqZWN0IGZ1bmN0aW9uLgoKCSogZGxscy9kZHJhdy9kZHJhdy91c2VyLmM6IE1hdHRoZXcgTWFzdHJhY2NpIDxtbWFzdHJhY0BjYW5hZGEuY29tPgoJQWRkIEREQ0FQU19PVkVSTEFZIGFuZCBERENBUFNfT1ZFUkxBWVNUUkVUQ0ggdG8gR2V0Q2FwcygpLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYWtlIG1zdmNydCBwcmludGYgdXNlIHRoZSBpbnRlcm5hbCByb3V0aW5lcyB3aGljaCB1bmRlcnN0YW5kICVTIGFuZAoJJUMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgc3R1YiBmb3IgU2V0U2VjdXJpdHlJbmZvLgoKCSogZGxscy9yaWNoZWQyMC9wYWludC5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CglBZGRlZCBhIGNoZWNrIGZvciBlbXB0eSBzY3JvbGxiYXIgcmFuZ2UuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCU1ha2Ugd2luZW9zcydzIG1peGVyIGtub3cgYWJvdXQgRFNUX0hFQURQSE9ORVMsIERTVF9MSU5FIGFuZAoJRFNUX1ZPSUNFSU4uIFVzZSBwcm9wZXIgY29uc3RhbnRzIGluc3RlYWQgb2YgMCBhbmQgMS4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBTdGdDcmVhdGVQcm9wU2V0U3RnLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBbm90aGVyIGF0dGVtcHQgb2YgYSB0ZXN0IGZvciBhIHZpc2libGUgZGVza3RvcC4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDYWxsIFJlbGVhc2VEQygpIHdpdGggY29ycmVjdCB3aW5kb3cgaGFuZGxlLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgb3V0IGVycm9yIG1lc3NhZ2UgaWYgd2UgZmFpbCB0byByZW1vdmUgbWVzc2FnZSBmcm9tIHF1ZXVlLgoKMjAwNS0wMy0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcmljaGVkMjAvcmljaG9sZS5jOiBGaXhlZCBET1MgbGluZSBlbmRpbmdzLgoKCSogdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbjoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNyZWF0ZSBzeW1saW5rcyBuYW1lZCB3aW5lZysrIGFuZCB3aW5lY3BwIHdoaWxlIGJ1aWxkaW5nIHdpbmVnY2MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWQyMC8uY3ZzaWdub3JlLAoJICBkbGxzL3JpY2hlZDIwL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZDIwL2NhcmV0LmMsCgkgIGRsbHMvcmljaGVkMjAvY29udGV4dC5jLCBkbGxzL3JpY2hlZDIwL2VkaXRvci5jLAoJICBkbGxzL3JpY2hlZDIwL2VkaXRvci5oLCBkbGxzL3JpY2hlZDIwL2VkaXRzdHIuaCwKCSAgZGxscy9yaWNoZWQyMC9saXN0LmMsIGRsbHMvcmljaGVkMjAvcGFpbnQuYywgZGxscy9yaWNoZWQyMC9wYXJhLmMsCgkgIGRsbHMvcmljaGVkMjAvcmljaGVkMjAuc3BlYywgZGxscy9yaWNoZWQyMC9yaWNob2xlLmMsCgkgIGRsbHMvcmljaGVkMjAvcm93LmMsIGRsbHMvcmljaGVkMjAvcnVuLmMsIGRsbHMvcmljaGVkMjAvc3RyaW5nLmMsCgkgIGRsbHMvcmljaGVkMjAvc3R5bGUuYywgZGxscy9yaWNoZWQyMC91bmRvLmMsIGRsbHMvcmljaGVkMjAvd3JhcC5jOgoJS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiByaWNoZWQyMC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgY29uc2lkZXIgbm8gc291bmQgZGV2aWNlIGEgZmFpbHVyZS4KCgkqIHNlcnZlci9xdWV1ZS5jOiBBdm9pZCBwb3RlbnRpYWwgY3Jhc2ggd2hlbiBmcmVlaW5nIGEgbWVzc2FnZSBxdWV1ZS4KCVByb3Blcmx5IGluaXRpYWxpemUgbmV3bHkgYWxsb2NhdGVkIG1lc3NhZ2VzLgoKCSogd2luZG93cy9zcHkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJV01fVVNFUiBtZXNzYWdlcyBzaG91bGQgYmUgZHVtcGVkIGluIHRoZSBmb3JtYXQgIldNX1VTRVIgKyAlZCIgdG8gbWFrZQoJaXQgZWFzaWVyIHRvIHNlZSB3aGF0IG1lc3NhZ2UgaXQgaXMgZm9yIHVua25vd24gY2xhc3Nlcy4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvaGVhZGVyLmgsIHRvb2xzL3dpZGwvcGFyc2VyLnk6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJV3JpdGUgdXVpZCBvZiBsaWJyYXJ5IGluIGhlYWRlci4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kX3Rlc3QuaCwgZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVByaW50IGRzb3VuZC5kbGwgdmVyc2lvbiBmcm9tIGZpbGUgdmVyc2lvbmluZm8gcmVzb3VyY2UuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVGVzdCBhbmQgZml4IGdyZk1vZGUgaGFuZGxpbmcgaW4gU3RnT3BlbkRvY2ZpbGUuCgoJKiBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFQUE1PREUgY2FuIG5vdyBiZSBvbmUgb2YgLW13aW5kb3dzIG9yIC1tY29uc29sZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUxhc3RFcnJvciBpcyBub3Qgc2V0IG9uIGZhaWx1cmUgZm9yICpNT1VTRUhPVkVSKiBvbiBXaW45OC4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJQWNjb3VudCBmb3IgcGVybWlzc2lvbnMgb24gV2luMmsuCgoJKiBpbmNsdWRlL29iamJhc2UuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSB0aGUgdmFsdWUgb2YgU1RHTV9ESVJFQ1RfU1dNUi4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL3ByaW50Zi5jLCBkbGxzL21zdmNydC93Y3MuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSAlbHMgaW4gc3ByaW50Zi4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglNYWtlIEdldEZpbGVTZWN1cml0eVcgcmV0dXJuIGEgc3RhbmRhcmQgU0VDVVJJVFlfREVTQ1JJUFRPUiBpbnN0ZWFkIG9mCglhbiB1bmluaXRpYWxpc2VkIChhbmQgaW52YWxpZCkgb25lLgoKMjAwNS0wMy0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvc3luYy5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2RzY2FwdHVyZS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvZHNyZW5kZXIuYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzZXJ2ZXIvZmQuYywKCSAgc2VydmVyL2ZpbGUuYywgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc2lnbmFsLmMsIHNlcnZlci90aHJlYWQuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUFkZGVkIGEgY2hlY2sgZm9yIHBvbGwuaC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmM6IEF2b2lkIGEgY29tcGlsZXIgd2FybmluZy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCVJldHVybiBhbiBlbXB0eSBzdHJpbmcgZm9yIHNlcnZpY2UgZGVwZW5kZW5jaWVzIHdoZW4gdGhlcmUgYXJlIG5vCglkZXBlbmRlbmNpZXMsIHJhdGhlciB0aGFuIGEgTlVMTCBwb2ludGVyLCB3aGljaCBjYXVzZXMgc29tZSBhcHBzIHRvCglTRUdWLgoKCSogZGxscy9tc2kvZGlhbG9nLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciByYWRpbyBidXR0b25zLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCUV4cGFuZCBjb25mb3JtYW5jZSByZWdpc3RyeSBlbnRyeSB0ZXN0IHRvIGhhbmRsZSByZWdpc3RyeSBlbnRyaWVzIHRoYXQKCWRpZmZlciBib3RoIGluIEtleSBhbmQgVmFsdWUgZnJvbSB0aGUgbm9ybS4KCVRha2UgYWR2YW50YWdlIG9mIGV4cGFuZGVkIHJlZ2lzdHJ5IHRlc3QgdG8gYWxsb3cKCVNQSV97R0VULFNFVH1TQ1JFRU5SRUFERVIgYW5kIFNQSV97R0VULFNFVH1LRVlCT0FSRFBSRUZFUkVOQ0UgdG8gcGFzcwoJb24gV2luOXguCgoJKiBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYiBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIHJlLWVudHJhbmN5IHRlc3RzIHRvIHRoZSB0ZXN0IHN1aXRlLgoJLSBSdW4gUlBDcyBvbiBhIG5ldyB0aHJlYWQgY2xpZW50IHNpZGUgc28gd2UgY2FuIHB1bXAgdGhlIG1lc3NhZ2UKCSAgbG9vcC4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglJbXBsZW1lbnRzIE9sZUxvYWRQaWN0dXJlUGF0aC4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6CglTdXBwb3J0IHNlbmRpbmcgV01fUEFJTlQgYWNyb3NzIHByb2Nlc3NlcyB3aGVuIGl0IGRvZXNuJ3QgY29udGFpbiBhbgoJSERDLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFN0Z1NldFRpbWVzLgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBjbGVhciBFU19BVVRPW0hWXVNDUk9MTCBpbiB0aGUgZWRpdCBjb250cm9sIGNyZWF0ZWQgYnkKCXJpY2hlZGl0LgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJQ29ycmVjdCBpbmNvcnJlY3QgdXNlIG9mIGFyZ3VtZW50cyB0byBRdWVyeVNlcnZpY2VDb25maWdXLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvcHJpbnRmLmMsIGRsbHMvbXN2Y3J0L3djcy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIHRoZSBwcmludGYgJUYgZm9ybWF0IG1vZGlmaWVyLgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oOiBLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5Ab25ldC5wbD4KCS0gYWRkZWQgbWlzc2luZyBDRk1fIGNvbnN0YW50cyB0byBtYWtlIFJpY2hFZGl0IDIuMCBpbXBsZW1lbnRhdGlvbgoJICBwb3NzaWJsZQoJLSBhZGRlZCBhIG1pc3Npbmcgc3RydWN0dXJlIFBBUkFGT1JNQVQyCgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL3Byb2ZpbGUuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggcmVncmVzc2lvbiBpbiBHZXRQcml2YXRlUHJvZmlsZVNlY3Rpb24gZm9yIGxpbmVzIHdpdGhvdXQgYW4gJz0nLgoJQWRkIHRlc3QuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglTdXBwcmVzcyBzb21lIHVzZWxlc3Mgd2FybmluZ3MgaW4gdGhlIFJQQyBydW50aW1lLCBhbmQgbWFrZSBhIGZldwoJVFJBQ0VzIHRoYXQgd2VyZSByZXBvcnRpbmcgcHJvYmxlbXMgaW50byBXQVJOcy4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUJldHRlciB3YXkgb2YgaGFuZGxpbmcgbm9uLWV4aXN0ZW50IFN5c3RlbVBhcmFtZXRlcnNJbmZvVy4KCVNldExhc3RFcnJvciBpZiBHZXRMYXN0RXJyb3IgaXMgY2hlY2tlZCBhZnRlciBhIGNhbGwuCgoyMDA1LTAzLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLAoJICBwcm9ncmFtcy93aW5lZGJnL2Rpc3BsYXkuYywgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jLCBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUZpeGVkIGEgZmV3IHJlZ3Jlc3Npb25zIGluIHRoZSBoYW5kbGluZyBvZiBzZWdtZW50ZWQgYWRkcmVzc2VzLgoKCSogZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvcXVlcnkuYywKCSAgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLCBkbGxzL3dpbmVkM2QvcXVlcnkuYywKCSAgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywgZGxscy93aW5lZDNkL3N1cmZhY2UuYywKCSAgZGxscy93aW5lZDNkL3V0aWxzLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS9kM2Q5dHlwZXMuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX3R5cGVzLmg6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglBZGRlZCBhIHN0dWJiZWQgb3V0IHZlcnNpb24gb2YgcXVlcnkgdG8gZDNkOSBhbmQgd2luZWQzZC4KCVVwZGF0ZSB0aGUgZDNkOSBoZWFkZXJzIGFuZCBjcmVhdGVzIHdpbmVkM2QgdHlwZXMgd2hlcmUgZDNkOSBhbmQgZDNkOAoJYXJlIGluY29tcGF0aWJsZS4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBwcmVwZW5kICdcXCcgdG8gdGhlIHN1YmtleSBuYW1lLgoKCSogZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVW5pY29kaWZpY2F0aW9uLiBTbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRHVtcCBIZWFwV2FsayBlbnRyaWVzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIElzV2luZG93VmlzaWJsZSBpbnN0ZWFkIG9mIEdldFdpbmRvd0xvbmcoR1dMX1NUWUxFKSAmIFdTX1ZJU0lCTEUKCWFzIGEgdGVzdCBmb3IgZGVza3RvcCB2aXNpYmlsaXR5LgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXYXJuIHRoZSB1c2VyIGlmIGhlIGlzIHJ1bm5pbmcgdGhlIHRlc3QgaW4gaW50ZXJhY3RpdmUgbW9kZSBidXQgdGhlCglzb3VuZCBpcyB0dXJuZWQgb2ZmLgoKMjAwNS0wMy0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zeXNsaW5rLmMsIGRsbHMvZ2RpL3JlZ2lvbi5jLAoJICBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy9tc2kvYWN0aW9uLmMsCgkgIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbnRkbGwvcmVnLmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jLCBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLAoJICBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvdXNlci9kZGUvZGRlX3ByaXZhdGUuaCwgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLAoJICBkbGxzL3dpbmVkb3MvdnhkLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwKCSAgaW5jbHVkZS9vYmpiYXNlLmgsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmMsCgkgIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvd2luZWJvb3Qvd2luZWJvb3QuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9kYl9kaXNhc20uYywgcHJvZ3JhbXMvd2luZXZkbS93aW5ldmRtLmMsCgkgIHRvb2xzL3dpZGwvY2xpZW50LmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluLAoJICB0b29scy93aW5lZHVtcC9wZS5jLCB0b29scy93aW5lZHVtcC9zeW1ib2wuYywgdG9vbHMvd3JjL3BhcnNlci55OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvZDNkOS9kM2Q5X21haW4uYywgZGxscy9kM2Q5L3N1cmZhY2UuYywKCSAgZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9jdWJldGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC9pbmRleGJ1ZmZlci5jLCBkbGxzL3dpbmVkM2QvcmVzb3VyY2UuYywKCSAgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywgZGxscy93aW5lZDNkL3RleHR1cmUuYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLCBkbGxzL3dpbmVkM2QvdmVydGV4ZGVjbGFyYXRpb24uYywKCSAgZGxscy93aW5lZDNkL3ZvbHVtZS5jLCBkbGxzL3dpbmVkM2Qvdm9sdW1ldGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9tYWluLmMsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJSW1wbGVtZW50ZWQgZ3VpZHMgZm9yIHdpbmVkM2QuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFwcGx5IEplcmVteSBXaGl0ZSdzIFNNUFRFIGNhbGN1bGF0aW9uIGZpeCB0byBlYWNoIGF1ZGlvIGRyaXZlci4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvbG9jYWwxNi5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywgZGxscy9tc2Ntcy9tc2Ntc19tYWluLmMsCgkgIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3R3YWluL3R3YWluLmgsIGRsbHMvd2luZWQzZC91dGlscy5jLAoJICBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsCgkgIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGluY2x1ZGUvZG11c2ljYy5oLAoJICBpbmNsdWRlL3dpbmUvcnBjZmMuaCwgcHJvZ3JhbXMvcnBjc3MvcnBjc3NfbWFpbi5jLAoJICBwcm9ncmFtcy90YXNrbWdyL3BlcmZkYXRhLmMsIHByb2dyYW1zL3Rhc2ttZ3IvcHJvY3BhZ2UuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmMsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uaCwKCSAgdG9vbHMvd3JjL3BhcnNlci55OgoJQXZvaWQgc3BhY2VzIGJlZm9yZSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcywgdGhhdCdzIG5vdCBwb3J0YWJsZS4KCgkqIE1ha2VmaWxlLmluLCB0b29scy9NYWtlZmlsZS5pbjoKCXdpbmVwcmVmaXhjcmVhdGUgYW5kIHJlbGF0ZWQgZmlsZXMgbmVlZCB0byBiZSBpbnN0YWxsZWQgd2hlbiBkb2luZyBhbgoJaW5zdGFsbC1saWIuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZ2dyZXNzaXZlbHkgcm91bmQgdXAgdG8gdGhlIHByb3BlciBhbGlnbm1lbnQgd2hlbiByZXBvcnRpbmcgcG9zaXRpb24KCW9uIHN0cmVhbXMgd2hlcmUgd2UgYXJlIGNvbnZlcnRpbmcgdXAuCgoJKiB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFzayBmb3IgYW4gTURJIGNoaWxkIGlkIGluIGFsbCBjYXNlcy4KCgkqIGRsbHMvdXNlci9tZW51LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEZXN0cm95TWVudSBzaG91bGQgbm90IGRlc3Ryb3kgc3lzdGVtIG1lbnUgcG9wdXAgb3duZXIuCgoJKiBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q5L3ZlcnRleGRlY2xhcmF0aW9uLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL3N1cmZhY2UuYywgZGxscy93aW5lZDNkL3ZlcnRleHNoYWRlci5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJT2xpdmVyIFN0aWViZXIgPG9saXZlcl9zdGllYmVyQHlhaG9vLmNvLnVrPgoJUHV0IGFsbCB0aGUgc3R1YnMgaW4gd2luZWQzZCBpbiBwbGFjZSwgd2l0aCBzb21lIGZ1bmN0aW9uYWxpdHkgY29waWVkCglhY3Jvc3MgZnJvbSBkM2Q5LgoJTWFrZSBzdXJlIGFsbCBkM2Q5IGRldmljZSBmdW5jdGlvbiBjYWxsIHRoZWlyIHdpbmVkM2QgY291bnRlcnBhcnQgKG9yCglwZXJmb3JtIGEgZnVuY3Rpb24pLgoKCSogaW5jbHVkZS9kY2UuaCwgd2luZG93cy9kY2UuYzoKCUJlZ2lubmluZ3Mgb2YgaW50ZXItcHJvY2VzcyBHZXREQyBzdXBwb3J0LgoJVXNlIGEgc3RhbmRhcmQgbGlzdCBmb3IgdGhlIERDRSBsaXN0LgoJU21hbGwgY2xlYW51cHMuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaDoKCUNvbnZlcnQgdGhlIHByb2Nlc3MgZGxsIGxpc3QgdG8gYSBzdGFuZGFyZCBsaXN0LgoKCSogZGxscy9zaGVsbDMyL3NoZmxkci5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29udmVydCBtb3JlIEFQSSBjYWxscyB0byBVbmljb2RlLgoKCSogdG9vbHMvd2luZS5kZXNrdG9wOiBTY290dCBSaXRjaGllIDxzY290dEBvcGVuLXZvdGUub3JnPgoJQWRkIGFsbCBrbm93biB3aW5kb3dzIGV4ZWN1dGFibGVzIHRvIE1JTUUgdHlwZSBpbiB3aW5lLmRlc2t0b3AuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IG9uZSBtb3JlIHBsYWNlIHdoZXJlIHRoZSBjb2RlIGFzc3VtZXMgcm93IGluZGljZXMgYXJlCgkgIHplcm8tYmFzZWQuCgktIERvY3VtZW50IGEga25vd24gYnVnIGluIHRoZSBsYXlvdXQgY29kZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvZHNyZW5kZXIuYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vcmUgY29ycmVjdGx5IGVzdGFibGlzaCBjYXNlcyB3aGVyZSB0aGUgT1NTIGlucHV0IGJ1ZmZlciBzaG91bGQgbm90CgliZSBlbmFibGVkLgoKCSogZGxscy9xdWFydHovYXZpc3BsaXQuYywgZGxscy9xdWFydHovZHNvdW5kcmVuZGVyLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsIGRsbHMvcXVhcnR6L3Bpbi5jLAoJICBkbGxzL3F1YXJ0ei90ZXN0cy9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei90cmFuc2Zvcm0uYywKCSAgZGxscy9xdWFydHovdmlkZW9yZW5kZXJlci5jLCBkbGxzL3F1YXJ0ei93YXZlcGFyc2VyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglIYW5kbGUgRW5kIE9mIFN0cmVhbSBub3RpZmljYXRpb25zLgoJU29tZSBBVkkgU3BsaXR0ZXIgZml4ZXMuCgoJKiBkbGxzL3JzYWVuaC90ZXN0cy9yc2FlbmguYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTWFrZSByc2FlbmhfY3Jvc3N0ZXN0LmV4ZSBsb2FkYWJsZSBvbiBOVCA0LjAuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJQWNjZXB0IChzaG9ydGVyKSBkYXRlIGZvcm1hdCBpbiBXaW4gTlQgYW5kIFdpbiA5NS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3RlY3QgU2V0UGFyZW50IGZyb20gY3JlYXRpbmcgY2lyY3VsYXIgd2luZG93IGRlcGVuZGVuY2llcy4KCUFkZCBhIHRlc3QgY2FzZS4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggaW5kZW50YXRpb24gZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIHJlc3Qgb2YgdGhlIGZpbGUuCgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL3Byb2ZpbGUuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglXaGVuIGVudW1lcmF0aW5nIGtleXMgdXNpbmcgR2V0KFByaXZhdGUpUHJvZmlsZVN0cmluZyBkbyBub3QgaW5jbHVkZQoJbGluZXMgd2l0aG91dCBhbiAnPScgY2hhcmFjdGVyLiBBZGRlZCBhIHRlc3QgdGhhdCBzaG93cyB0aGUgYmVoYXZpb3IuCgoyMDA1LTAzLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3hkbmQuYzoKCVVzZSBhIGRpc3BhdGNoIHRhYmxlIHRvIGhhbmRsZSBYIGNsaWVudCBtZXNzYWdlcy4KCgkqIHNlcnZlci9mZC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci90aHJlYWQuYzoKCUNvbnZlcnQgdGhlIG9iamVjdCB3YWl0IHF1ZXVlIHRvIGEgc3RhbmRhcmQgbGlzdC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvQ3MucmMsIHByb2dyYW1zL3JlZ2VkaXQvRGUucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRnIucmMsIHByb2dyYW1zL3JlZ2VkaXQvSXQucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvSmEucmMsIHByb2dyYW1zL3JlZ2VkaXQvTmwucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUGwucmMsIHByb2dyYW1zL3JlZ2VkaXQvUHQucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUnUucmMsIHByb2dyYW1zL3JlZ2VkaXQvU2kucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UuaDoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglDaGFuZ2UgRmF2b3VyaXRlKHMpIGludG8gRmF2b3JpdGUocykuCglDaGFuZ2UgdmFyaWFibGVzIGNvbnRhaW5pbmcgRkFWT1VSSVRFIGludG8gRkFWT1JJVEUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IEp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJLSBDcmVhdGVkIFNQSV97R0VULFNFVH1LRVlCT0FSRFBSRUYgYW5kIFNQSV97R0VULFNFVH1TQ1JFRU5SRUFERVIgdW5pdAoJICB0ZXN0cy4KCS0gUmVtb3ZlZCBhIHRyYWNlIHRoYXQgc2hvdWxkbid0IGhhdmUgYmVlbiB0aGVyZS4KCS0gQWRkIHJldHVybiBjaGVja2luZyB0byBTUElfe0dFVCxTRVR9V0hFRUxTQ1JPTExMSU5FUyBhbmQKCSAgU1BJX3tHRVQsU0VUfU1FTlVTSE9XREVMQVkgdW5pdCB0ZXN0cyBzbyB0aGV5IG5vIGxvbmdlciBydW4gb24KCSAgV2luZG93cyA5NSB3aGVyZSB0aGV5IGFyZW4ndCBzdXBwb3J0ZWQuCgktIENoYW5nZWQgbWluaW11bSBob3ZlcnRpbWUgaW4gU1BJX3tHRVQsU0VUfU1PVVNFSE9WRVJUSU1FIHRvIDEwIGFzCgkgIFdpbmRvd3MgWFAgZGVmYXVsdHMgdG8gMTAgYW55IHZhbHVlIGJlbG93IHRoYXQuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIHBhcnNpbmcgb2YgSVRFTUlETElTVCBpbiBJbml0aWFsaXplVHJlZVZpZXcuCglBZGRlZCBzb21lIGRvY3VtZW50YXRpb24uCglGaXhlZCBhIGNyYXNoIG9jY3VyaW5nIHdoZW4gdGhlIHVzZXIgZG91YmxlLWNsaWNrcyBhIGxlYWYgaXRlbS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVGV4dCByZWZvcm1hdHRpbmcgcGF0Y2ggdG8gY2xlYW4gdXAgYWxsIHRoZSBzdGF0aWMgc3RyaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6IEZpbGlwIE5hdmFyYSA8bmF2YXJhZkByZWFjdG9zLmNvbT4KCUltcGxlbWVudCBTQl9TRVRCT1JERVJTLgoKCSogZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGluY2x1ZGUvd2luaW9jdGwuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBTZXR1cERpR2V0Q2xhc3NEZXZzQS9XLCBTZXR1cERpRW51bURldmljZUludGVyZmFjZXMsCglTZXR1cERpRGVzdHJveURldmljZUluZm9MaXN0LCBhbmQgU2V0dXBEaUdldERldmljZUludGVyZmFjZURldGFpbEEgZm9yCglzZXJpYWwgcG9ydHMuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgcmFjZSBjb25kaXRpb24gaW4gY3JlYXRlX2RpcigpLgoKCSogc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5oOgoJQ29udmVydCB0aGUgcGVyLXByb2Nlc3MgdGhyZWFkIGxpc3QgdG8gYSBzdGFuZGFyZCBsaXN0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCUFkZCAnLXJlYWRfb25seV9yZWxvY3Mgd2FybmluZycgdG8gTERETExGTEFHUyBvbiBEYXJ3aW4uCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSByb3cgbnVtYmVyIGJlIHplcm8tYmFzZWQuCgktIEltcHJvdmVtZW50cyB0byBkdW1waW5nIGZ1bmN0aW9ucyB0byBub3QgZHVtcCBvdXQgZmllbGRzIHRoYXQgbWF5CgkgIG5vdCBoYXZlIGJlZW4gZmlsbGVkIGluLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHVuZXhwZWN0ZWQgY29uZGl0aW9uIG9jY3VycyBqdXN0IHJlcG9ydCBhbiBlcnJvci4KCgkqIGRsbHMveDExZHJ2L2JpdG1hcC5jLCBkbGxzL3gxMWRydi9kaWIuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJZiB0aGUgZGlic2VjdGlvbiBpcyBiYXNlZCBvbiBhIGZpbGUtbWFwcGluZyBvYmplY3QsIHRoZW4gbWFrZSBzdXJlCgl0aGF0IHRoZSBzZWN0aW9uIGlzIGluIHN5bmMgd2hlbiB0aGUgZGlic2VjdGlvbiBpcyBkZWxldGVkLgoKCSogZGxscy9rZXJuZWwvcGF0aC5jOiBNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJQ29weUZpbGUgbmVlZHMgdG8gcmV0YWluIHRpbWVzdGFtcC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhbm90aGVyIHRlc3QgY2FzZSBmb3IgZmlsZSBzaGFyaW5nLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCURvbid0IGhhcmRjb2RlIHdpbmRvd3Mgb3Igc3lzdGVtIGRpcmVjdG9yaWVzLCBjb3JyZWN0IGEgdHlwby4KCgkqIGRsbHMvb2xlMzIvc3RnX3Byb3AuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJTW92ZSB2dGJsIHRvIGVuZCBvZiBmaWxlIGFuZCBnZXQgcmlkIG9mIHVubmVjZXNzYXJ5IHByb3RvdHlwZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvbnZlcnQgdGFicyB0byBzcGFjZSwgd3JhcCBsb25nIGxpbmVzLCBtYWtlIGluZGVudGluZyBjb25zaXN0ZW50LgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuYywgZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLAoJICBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvbW9kdWxlLmMsCgkgIGRsbHMvZGJnaGVscC9wZV9tb2R1bGUuYywgZGxscy9kYmdoZWxwL3N0YWJzLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1lbW9yeSBjb25zdW1wdGlvbiBvcHRpbWl6YXRpb24gd2hpbGUgbG9hZGluZyBFTEYgZGVidWcgaW5mbzoKCS0gZG9uJ3QgbWFwIHR3aWNlIGFuIEVMRiBmaWxlIGZvciBzeW1ib2wgbG9va3VwIChpbiBub24gZGVmZXJyZWQgbW9kZSkKCS0gbm8gbG9uZ2VyIGVudGlyZWx5IG1hcCBhbiBFTEYgZmlsZSBpbnRvIG1lbW9yeSwgYnV0IG9ubHkgdGhlCgkgIHNlY3Rpb25zIHdlIG5lZWQuCglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIEVMRiBtb2R1bGVzIHRocnUgU3ltTG9hZE1vZHVsZSBpbiBhIG5vbiBsaWZlCglwcm9jZXNzLgoJRmFjdG9yaXNhdGlvbiBvZiBjb2RlIGZvciBFTEYgbW9kdWxlIGhhbmRsaW5nLgoJRml4ZXMgdG8gRUxGIHN5bWJvbCBsb2FkaW5nCgktIGRyb3BzIHN5bWJvbHMgZnJvbSBzeW10YWIgd2hpY2ggYXJlIG5laXRoZXIgZnVuY3Mgbm9yIGdsb2JhbAoJICB2YXJpYWJsZXMKCS0gZml4ZXMgc29tZSBpbmNvcnJlY3Qgc2l6ZSBjb21wdXRhdGlvbiBmb3IgbGF0ZXN0IEdDQyB2ZXJzaW9ucy4KCVNldmVyYWwgY2xlYW51cHMgYW5kIGZpeGVzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IEplZmYgU21pdGggPHdoeWRvdWJ0QHlhaG9vLmNvbT4KCUF2b2lkcyBhIHNoaWZ0IHdhcm5pbmcgdGhyb3duIGJ5IG9sZGVyIHZlcnNpb25zIG9mIGJhc2guCgoyMDA1LTAyLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYvbW91c2UuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3dpbnRhYi5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCVVzZSBhIHRhYmxlIG9mIGhhbmRsZXJzIHRvIGRpc3BhdGNoIFggZXZlbnRzIGFuZCBnZXQgcmlkIG9mIHRoZQoJc3BlY2lhbCBjYXNpbmcgZm9yIERHQSBhbmQgdGFibGV0IGV2ZW50cy4KCVVuaWZ5IHRoZSBkZWNsYXJhdGlvbnMgb2YgYWxsIHRoZSBldmVudCBoYW5kbGVycy4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jOgoJRml4ZWQgcmVncmVzc2lvbiBpbiBRdWVyeURvc0RldmljZUEgd2hlbiBwYXNzZWQgYSBOVUxMIGRldmljZSBuYW1lLgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6CglDb252ZXJ0ZWQgdGhlIGRlYnVnIGV2ZW50IHF1ZXVlIHRvIGEgc3RhbmRhcmQgbGlzdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglTeW50YXggZml4IGluIGNvbmZpZ3VyZS5hYy4KCgkqIGRsbHMvbXNpL3Rlc3RzL2RiLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgYSB0ZW1wb3JhcnkgbXNpIGRhdGFiYXNlIGZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDb252ZXJ0IGEgZmV3IGNhbGxzIHRvIFVuaWNvZGUuCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG1vcmUgY2FzZXMgdG8gTUNJX01hcE1zZ0F0b1cuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1ha2UgTFJfTE9BRFRSQU5TUEFSRU5UIHdvcmsgYW5kIGdpdmUgdHJhbnNwYXJlbnQgaW1hZ2VzLgoKMjAwNS0wMi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9jb25zb2xlLmM6CglDb252ZXJ0ZWQgdGhlIGdsb2JhbCBzY3JlZW4gYnVmZmVyIGxpc3QgdG8gYSBzdGFuZGFyZCBsaXN0LgoKCSogc2VydmVyL3F1ZXVlLmM6CglSZXBsYWNlZCB0aGUgbWVzc2FnZV9saXN0IHN0cnVjdHVyZSBieSBhIHN0YW5kYXJkIGxpc3QuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglNb3ZlZCBjbGlwYm9hcmQgZXZlbnQgaGFuZGxpbmcgZnVuY3Rpb25zIGFuZCBzb21lIHByaXZhdGUgZGF0YQoJc3RydWN0dXJlcyB0byBjbGlwYm9hcmQuYy4KCgkqIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJQ29udmVydCB0aGUgZ2xvYmFsIHRocmVhZCBsaXN0IHRvIGEgc3RhbmRhcmQgbGlzdC4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmg6CglDb252ZXJ0IHRoZSBnbG9iYWwgcHJvY2VzcyBsaXN0IHRvIGEgc3RhbmRhcmQgbGlzdC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZF90ZXN0Lmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIHNlY29uZGFyeSBidWZmZXIgU2V0RnJlcXVlbmN5IHRlc3QuCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVXNlIG5CbG9ja0FsaWduIHJhdGhlciB0aGFuIGNhbGN1bGF0aW5nIGl0LgoJQWRkIGEgYnVmZmVyIGxlbmd0aCBhbGlnbm1lbnQgZXJyb3IgbWVzc2FnZS4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL3ByaW50Zi5jLCBkbGxzL21zdmNydC93Y3MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkdmFuY2Ugb3ZlciAqIGFyZ3VtZW50IGZvciBwcmVjaXNpb24uCglIb25vciBwcmVjaXNpb24gYXJndW1lbnQgZm9yIHN0cmluZ3MuCgoJKiBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglDb252ZXJ0IHRoZSBwZXItdGhyZWFkIG11dGV4IGxpc3QgdG8gYSBzdGFuZGFyZCBsaXN0LgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZpeCBSZWdPcGVuL0Nsb3NlS2V5LgoKCSogZGxscy91c2VyL2VkaXQuYzogTGF1cmkgVHVsbWluIDx0dWxtaW5AZ21haWwuY29tPgoJTWFrZSBzdXJlIHRoYXQgbGFzdCBsaW5lIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIGVkaXQgY29udHJvbC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2hhbmdlIFNldENvb3BlcmF0aXZlTGV2ZWwgRklYTUUgdG8gV0FSTi4KCgkqIHRvb2xzL3dpbmVkdW1wL2xuay5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEdW1wIHRoZSBwaWRsIG9mIGEgbG5rIGZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbGxpbmsuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gaW1wbGVtZW50IGxvYWRpbmcgYW5kIHNhdmluZyBvZiBNU0kgYWR2ZXJ0aXNlZCBzaG9ydGN1dCBpbmZvCgktIG1ha2UgbW9yZSB0ZXN0IGNhc2VzIHBhc3MKCS0gcmVhZCBhbmQgd3JpdGUgdGhlIGxvY2F0aW9uIGJsb2NrCgktIGltcHJvdmUgdGhlIGJpbmFyeSBjb21wYXRpYmlsaXR5IG9mIGxuayBmaWxlcwoKCSogbGlicy93cHAvcHBsLmw6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglUcmVhdCBhbHJlYWR5IHByZXByb2Nlc3NlZCBjb2RlIGp1c3QgbGlrZSBub3JtYWwgI2luY2x1ZGUnZWQgY29kZS4KCgkqIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUV4Y2x1ZGUgdHdvIHRlc3RzIGNyYXNoaW5nIG9uIFdpbk5UNC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZW1vdmUgdW5uZWVkZWQgY2FsbHMgdG8gVEFCX0dldEluZm9QdHIoKSwgY29uc3QgZml4ZXMsIGlubGluZSBzbWFsbAoJZnVuY3MgJiByZW1vdmUgdW51c2VkIHBhcmFtZXRlcnMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0cmluZy5jLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMva2VybmVsL2NvbW0uYywKCSAgZGxscy9rZXJuZWwvZWRpdGxpbmUuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zdmNydC9tYmNzLmMsCgkgIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL3J0bGJpdG1hcC5jLAoJICBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL29sZTMyL29sZTIuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hsd2FwaS9hc3NvYy5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvd2luMzJzL3czMnN5cy5jLAoJICBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmluZXQvbmV0Y29ubmVjdGlvbi5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywgcHJvZ3JhbXMvcnVuZGxsMzIvcnVuZGxsMzIuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmMsCgkgIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9zcHkuYywKCSAgd2luZG93cy91c2VyLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiBzcGVsbGluZyBmaXhlcy4KCgkqIHNlcnZlci9mZC5jOgoJUmVndWxhciBmaWxlcyBhcmUgYWx3YXlzIHJlYWR5IGZvciBJL08sIG5vIG5lZWQgdG8gcG9sbCBvbiB0aGVtLgoKCSogc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglDb252ZXJ0IHRoZSBBUEMgcXVldWVzIHRvIHVzZSBzdGFuZGFyZCBsaXN0cy4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJRml4IHN0YWNrIG9iamVjdCBvdmVycnVuIHdoZW4gYW4gYXBwbGljYXRpb24gY2FsbHMgQ2hvb3NlRm9udEEuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCB0aGUgYWN0aW9uIFJlZ2lzdGVyRm9udHMuCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBMYXVyaSBUdWxtaW4gPHR1bG1pbkBnbWFpbC5jb20+CglJbXBsZW1lbnRlZCAhRVNfQVVUT1tIVl1TQ1JPTEwuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOgoJVEFOQUJFIEhpcm9zaGkgPGhpcm9rdW5fZGF5b21vbkBpbmZvc2Vlay50bz4gd3JvdGU6CglSZW1vdmUgKGJ1ZiAmJiAhYnVmbGVuKSBjaGVja2luZy4KCUZpeGVkIG91dGxpbmUgcmVuZGVyaW5nIHdpdGggR0dPX0dSQVk/X0JJVE1BUCBvcHRpb24uCglJbXByb3ZlZCBmaXhlZC1waXRjaCBmb250cyBkZXRlY3Rpb24uCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlZGV0ZWN0LmMsIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oOgoJUGF1bCB2YW4gU2NoYXljayA8cG9sbGVrZUBnbWFpbC5jb20+CglBcyBsYXN0IG9wdGlvbiBmb3IgZHJpdmUgdHlwZSBkZXRlY3Rpb24gd2UgdHJ5IHRoZSBkZXZpY2Ugbm9kZSBuYW1lLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUFkZGVkIHNvbWUgVFJBQ0Ugc3RhdGVtZW50cy4KCjIwMDUtMDItMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUNvbnZlcnQgdGhlIGtleSBub3RpZmljYXRpb25zIGxpc3QgdG8gYSBzdGFuZGFyZCBsaXN0LgoKCSogZGxscy91c2VyL3BhaW50aW5nLmM6CglSZXBhaW50IHRoZSBub24tY2xpZW50IGFyZWEgdG8gd29yayBhcm91bmQgYnJva2VuIFdNX1BBSU5UIGhhbmRsZXJzCglhbHNvIHdoZW4gZG9pbmcgYSBzeW5jaHJvbm91cyB1cGRhdGUgd2l0aCBSRFdfVVBEQVRFTk9XLgoKCSogZGxscy9vbGUzMi9zdGdfcHJvcC5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0cnVjdCBTdG9yYWdlQmFzZUltcGwgYXQgdGhlIHN0YXJ0IG9mIGRlcml2ZWQgc3RydWN0dXJlcyBpbnN0ZWFkCglvZiB0cnlpbmcgdG8ga2VlcCB0aGUgZmlyc3QgbWVtYmVycyB0aGUgc2FtZS4KCgkqIGRsbHMvdXNlci9zY3JvbGwuYzogVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCS0gRml4IHNjcm9sbGJhciBzaG93L3VwZGF0ZSBjb25kaXRpb25zIGluIFNDUk9MTF9TZXRTY3JvbGxJbmZvOiB3ZSBETwoJICBOT1Qgc2hvdyBzY3JvbGwgYmFyIGlmIG9ubHkgcGFnZSBwYXJhbWV0ZXIgY2hhbmdpbmcgd2hlbiBzY3JvbGxiYXIKCSAgaXMgZGlzYWJsZWQuCgktIFJlbW92ZWQgYkNoYW5nZVBhcmFtcyBmcm9tIFNDUk9MTF9TZXRTY3JvbGxJbmZvIGFzIHVubmVlZGVkIGZsYWcuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU2hvcnRlbiB0aGUgaWQgb2YgdGhlIHF1ZXN0aW9uIHRvIGF2b2lkIGphZGUgZXJyb3IuCgoJKiBwcm9ncmFtcy90YXNrbWdyL0ZyLnJjLCBwcm9ncmFtcy90YXNrbWdyL3Rhc2ttZ3IucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvRnIucmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYzoKCUpvbmF0aGFuIEVybnN0IDxKb25hdGhhbkBFcm5zdEZhbWlseS5jaD4KCUZyZW5jaCBsb2NhbGl6YXRpb24uCgoJKiBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaCwgc2VydmVyL3NlcmlhbC5jLAoJICBzZXJ2ZXIvc29jay5jOgoJQ29udmVydCBhc3luYyBJL08gcXVldWVzIHRvIHN0YW5kYXJkIGxpc3RzLgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdW51c2VkIGRlY2xhcmF0aW9uLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCB3aW5kb3dzL3dpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbGVhc2UgY2FwdHVyZSBiZWZvcmUgc2VuZGluZyBXTV9OQ0RFU1RST1kgbWVzc2FnZSwgZG8gbm90IHNlbmQKCVdNX0NBUFRVUkVDSEFOR0VEIGluIHRoYXQgY2FzZS4gQWRkIGEgdGVzdCBjYXNlIGZvciB0aGF0IGJlaGF2aW91ci4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldFdpbmRvd1JlY3QgYW5kIEdldENsaWVudFJlY3QgZG8gbm90IGNoYW5nZSBSRUNUIGNvbnRlbnRzIGlmIHRoZQoJcGFzc2VkIHdpbmRvdyBoYW5kbGUgaXMgaW52YWxpZC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVRyeSBvbGQgYnVmZmVyIGRlc2NyaXB0aW9uIHN0cnVjdHVyZSBvbiBmYWlsdXJlIHdpdGggbmV3IG9uZS4KCgkqIGRsbHMva2VybmVsL2V4Y2VwdC5jLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsCgkgIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1hdGNoIFJhaXNlRXhjZXB0aW9uIGFuZCBFWENFUFRJT05fUkVDT1JEIHRvIFNESyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsX2V4dC5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gaW1wbGVtZW50IHBhcnRpYWwgUEJ1ZmZlciBzdXBwb3J0CgktIG1pbmltYWwgcGl4ZWwgZm9ybWF0IHN1cHBvcnQKCgkqIGRsbHMvbXNkbW8vZG1vcnQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHRhYnMsIHJlZm9ybWF0LCBtZXJnZSBjb21tZW50cy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvbXNpcHJpdi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgRXhlY3V0ZUFjdGlvbiBoYW5kbGVyLgoJU3RvcmUgdGhlIGtleXBhdGgsIGFuZCBkbyByZWZjb3VudGluZyBhbmQgcmVnaXN0cmF0aW9uIG9mIFNoYXJlZERMTHMuCglGaXggYSBidWcgd2l0aCBoYW5kaW5nIGR3b3JkIHZhbHVlcyBpbiB0aGUgcmVnaXN0cnkuCglGaXggYnVncyB3aXRoIHdyaXRpbmcgcmVnaXN0cnkga2V5cyB3aGVyZSB2YWx1ZSA9PSBOVUxMLgoJTWFrZSB1c2Ugb2YgbXNpZGVmcy5oLgoJTGF5IHNvbWUgZ3JvdW5kd29yayBmb3IgdW5pbnN0YWxscy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIEltYWdlTGlzdF9Mb2FkSW1hZ2V7QSxXfSB3ZXJlIGJhc2ljYWx5IGEgY3V0J24ncGFzdGUgb2YgZWFjaAoJICBvdGhlci4gUmVtb3ZlZCB0aGUgQSB2YXJpYW50IGFuZCBkaWQgYSBBLT5XIHRyYW5zbGF0aW9uLgoJLSBJbWFnZUxpc3RfTG9hZEltYWdlVzogZ2V0IHRoZSBiaXRtYXAgc2l6ZSBmcm9tIHRoZSBpbWFnZSBpdHNlbGYgYW5kCgkgIG5vdCBmcm9tIHRoZSBtYXNrIChJbWFnZUxpc3RfTG9hZEltYWdlQSBkaWQgdGhhdCkuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVkZXYta2VybmVsLnNnbWw6IEJyaWFuIFZpbmNlbnQgPHZpbm5AdGhlc2hlbGwuY29tPgoJQ2xlYW4gdXAgcmVmZXJlbmNlcyB0byB0aHJlYWRpbmcgaW4gRGV2ZWxvcGVyJ3MgR3VpZGUuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2FuIHdlIGJ1bmRsZSBldmVydGhpbmcgdG9nZXRoZXI/CglTdWdnZXN0ZWQgYnkgR3JhaGFtIFRvYWwgPGd0b2FsQGd0b2FsLmNvbT4uCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGluZm8gb24gYnVpbGRpbmcgZHluYW1pYyBzdHJpbmdzIGZvciBsb2dnaW5nLgoJUmVvcmRlciBzb21lIHBvaW50cyBmb3IgYSBtb3JlIGxvZ2ljYWwgb3JnYW5pemF0aW9uLgoKCSogZGxscy9tc2kvbXNpLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEbyBzb21lIGJhc2ljIHdvcmsgd2l0aCByZWdpc3RyeSBjb21wb25lbnQgcGF0aHMuCgoJKiBpbmNsdWRlL21zaWRlZnMuaDogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJUHJldmVudCBhY2Nlc3NpbmcgZnJlZWQgbWVtb3J5IGluIGZhaWx1cmUgY2FzZS4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDb3JyZWN0IGhhbmRsaW5nIG9mIHVudXN1YWwgdmVuZG9yIHN0cmluZ3MgaW4gZDNkOCwgYW5kIGNoZWNrIGZvciBhCglzdGF0ZWJsb2NrIGJlZm9yZSB0cnlpbmcgdG8gcmVsZWFzZSBpdCBpbiB3aW5lZDNkLgoKCSogZGxscy91c2VyL2VkaXQuYzogTGF1cmkgVHVsbWluIDx0dWxtaW5AZ21haWwuY29tPgoJQ29udHJvbHMgd2l0aCBFU19SSUdIVCBvciBFU19DRU5URVIgc2hvdWxkbid0IGhhdmUgRVNfQVVUT0hTQ1JPTEwuCgoyMDA1LTAyLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvZXZlbnQuYzoKCVJldmVydCBTQ19DTE9TRSBjaGFuZ2UsIHRoaXMgaXMgY2F1c2luZyBkZWFkbG9ja3MuCgoJKiBkb2N1bWVudGF0aW9uL3RocmVhZGluZy5zZ21sOiBSZW1vdmVkIG5vIGxvbmdlciB1c2VkIHRocmVhZGluZy5zZ21sLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lZGV2LWtlcm5lbC5zZ21sOgoJQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJQ29ycmVjdCBhIGNvdXBsZSBvZiBtaW5vciBkb2N1bWVudGF0aW9uIHR5cG9zLgoKCSogdG9vbHMvd2lkbC9jbGllbnQuYywgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC9wcm94eS5oLAoJICB0b29scy93aWRsL3NlcnZlci5jLCB0b29scy93aWRsL3dpZGwuYywgdG9vbHMvd2lkbC93aWRsLmg6CglSZW1vdmVkIHRoZSB1c2VsZXNzIHByb3h5LmggaGVhZGVyIGZpbGUuCglGaXhlZCBhIGNvdXBsZSBvZiB3YXJuaW5ncy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uaDoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vcmUgY29ycmVjdCBmaXggZm9yIGRzcCBlbXB0eSBjYXNlLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvRGUucmM6IEhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJU21hbGwgZml4IGZvciB0aGUgR2VybWFuIHJlc291cmNlIGZpbGUuCgoJKiBwcm9ncmFtcy90YXNrbWdyL0RlLnJjLCBwcm9ncmFtcy90YXNrbWdyL3Rhc2ttZ3IucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvRGUucmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJQWRkZWQgR2VybWFuIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiB0b29scy93aW5laW5zdGFsbDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVN1Z2dlc3QgbWFrZSB1bmluc3RhbGwgaW4gY2FzZSB0aGUgdXNlciB0cmllZCBtYWtlIGluc3RhbGwuCgoJKiB0b29scy93aWRsL01ha2VmaWxlLmluLCB0b29scy93aWRsL2NsaWVudC5jLCB0b29scy93aWRsL2hlYWRlci5jLAoJICB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3NlcnZlci5jLAoJICB0b29scy93aWRsL3dpZGwuYywgdG9vbHMvd2lkbC93aWRsLmgsIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCS0gQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGNsaWVudCBhbmQgc2VydmVyIHN0dWIgZmlsZXMuCgktIFN1cHBvcnQgaW1wbGljaXRfaGFuZGxlIGF0dHJpYnV0ZSBpbiBJREwgZmlsZXMuCgktIEJ1aWxkIG1peGVkLW1vZGUgc3R1YiBmaWxlcy4KCgkqIGRsbHMvcnNhYmFzZS9NYWtlZmlsZS5pbiwgZGxscy9yc2FiYXNlL21haW4uYywKCSAgZGxscy9yc2FiYXNlL3JzYWJhc2Uuc3BlYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCU1hZGUgcnNhYmFzZSBmb3J3YXJkIGV2ZXJ5dGhpbmcgdG8gcnNhZW5oLgoKCSogZGxscy9rZXJuZWwvY3B1LmMsIGRsbHMvbnRkbGwvbnQuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCU50UXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIgc2hvdWxkIHJldHVybiBhIGZyZXF1ZW5jeSBvZiAxMTkzMTgySHogYW5kCgljb3VudHMgbGlrZSBpbiBXaW5kb3dzLiBTb21lIGFwcGxpY2F0aW9ucyBkZXBlbmQgb24gdGhhdC4KCVNpbXBsaWZ5IFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyIGEgYml0LgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFuIGludGVyYWN0aXZlIHRlc3Qgc2hvdWxkIGhhdmUgdm9sdW1lLCBlbHNlIGEgcmF0aW9uYWwgdXNlciB3aWxsCglkZWNpZGUgaXQgaXMgYnJva2VuLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHRhYnMgYW5kIHJlZm9ybWF0LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdGhlIC1ub25hbWUgZmxhZyB0byBtYXRjaCB0aGUgUGxhdGZvcm0gU0RLLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUluIGNhbGN1bGF0aW5nIHRoZSBTTVBURSB0aW1lLCB3ZSB3b3VsZCByb3VuZCBpbmNvcnJlY3RseSAoMDowOjQuMzAKCWluc3RlYWQgb2YgMDowOjUuMCBbdGhlIGxhc3QgY29sdW1uIG9ubHkgZ29lcyB0byAyOV0pLgoKCSogZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuaCwKCSAgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZmxkci5oLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBoYW5kbGUgSUZpbGVTeXN0ZW1CaW5kRGF0YSBpbiBJU0ZfRGVza3RvcF9mblBhcnNlRGlzcGxheU5hbWUKCS0gbW9yZSBVbmljb2RlIGNvbnZlcnNpb24KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgaGFyZGNvZGUgb3JkaW5hbHMgaWYgd2hpY2ggYXJlIG5vdCBoYXJkY29kZWQgb24gV2luZG93cy4KCgkqIGRsbHMvbXNpL2Zvcm1hdC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIGZvcm1hdHMgbGlrZSBbXFxdXSBhbmQgW1xcW10gd29yayBwcm9wZXJseS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJQXBwYXJlbnRseSBOVDQgY2FuIGFsc28gcmV0dXJuIEVSUk9SX0VOVlZBUl9OT1RfRk9VTkQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIFBhc3Mgb3JpZ2luYWwgd1BhcmFtIHRvIENhbGxOZXh0SG9va0V4LgoJLSBBdm9pZCBwbGF5aW5nIGdhbWVzIHdpdGggZm9jdXMgaW4gYSBuZXdseSBjcmVhdGVkIHRocmVhZCwgdGhhdCBsZWFkcwoJICB0byBhbGwga2luZHMgb2YgbWlzYmVoYXZpb3VycyBhbmQgZmFpbHVyZXMgaW4gd2luZG93IGFjdGl2YXRpb24KCSAgdW5kZXIgV2luZG93cy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IHRlc3RzIGZvciB3aW45eCBhbmQgb2xkIHZlcnNpb25zIG9mIERpcmVjdFguCgoJKiBkbGxzL3dpbnRydXN0L3dpbnRydXN0LnNwZWMsIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3RfbWFpbi5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVN0dWIgZm9yIENyeXB0Q0FUQWRtaW5SZWxlYXNlQ29udGV4dC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglXaGVuIHdlIGdldCBkb3duIHRvIHRoZSBsYXN0IGZyYWdtZW50IG9yIHR3byBpbiBvdXIgb3V0cHV0IHRvIHRoZSBEU1AsCgl3ZSBzaG91bGQgdXNlIHRoZSBTTkRfRFNQX1BPU1QgaW9jdGwgdG8gbGV0IHRoZSBzb3VuZCBjYXJkIGtub3cgdG8KCWZsdXNoIHRob3NlIGZyYWdtZW50cy4gIFRoaXMgYWxsb3dzIHVzIHRvIHByZWNpc2VseSBrbm93IHdoZW4gdGhlCglidWZmZXIgaXMgZW1wdHksIGFuZCBmaXhlcyBhbm90aGVyIHNldCBvZiB3aW5tbSB0ZXN0cy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglXaGVuIHRlc3RpbmcgdGhlIFdBVkVfTUFQUEVSIGRldmljZSwgaXQgc2VlbXMgaW5hcHByb3ByaWF0ZSAodG8gbWUpIHRvCglkZW1hbmQgV0FWRV9GT1JNQVRfRElSRUNUOyB0aGlzIGZpeGVzIGFub3RoZXIgc2xldyBvZiB0ZXN0cy4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gd2UgYXJlIGNvbnZlcnRpbmcgZnJvbSBvbmUgc2FtcGxlIHJhdGUgdG8gYW5vdGhlciwgd2UgZG8gaGF2ZSB0bwoJYWRqdXN0IHdoZW4gY2FsY3VsYXRpbmcgVElNRV9TQU1QTEVTLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJVGFrZSBpbnRvIGFjY291bnQgYWRkaXRpb25hbCByZXF1ZXN0ZWQgc3BhY2luZyBvbiBicmVhayBjaGFyYWN0ZXJzLgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUVuYWJsZSBwYXJzaW5nIG9mIHZlbmRvciBzdHJpbmdzIG5vdCBtYXRjaGluZyB0aGUgZXhwZWN0ZWQgdGVtcGxhdGUuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUNvcnJlY3RseSBkaXNwbGF5cyB0aGUgdGV4dCB3aXRoIGVsbGlwc2lzIHdoZW4gdGhlcmUgaXMgbm90IGVub3VnaAoJcm9vbSBpbiBhIGhlYWRlciBpdGVtIGFuZCBhbiBpbWFnZSBmcm9tIGFuIGltYWdlbGlzdCBpcyBkaXNwbGF5ZWQgb24KCXRoZSByaWdodCBvZiB0aGUgdGV4dC4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL1BsLnJjOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJVHJhbnNsYXRpb24gdXBkYXRlLgoKCSogZGxscy9tc2kvbXNpLnJjLCBkbGxzL21zaS9tc2lfRXMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJQWRkZWQgTVNJIFNwYW5pc2ggcmVzb3VyY2VzLgoKMjAwNS0wMi0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9yZWdpb24uYywgc2VydmVyL3VzZXIuaDoKCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgY3JlYXRlX3JlZ2lvbiBmdW5jdGlvbiwgYW5kIGRpcmVjdGx5IGV4cG9ydAoJY3JlYXRlX2VtcHR5X3JlZ2lvbiBpbnN0ZWFkLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIHNlcnZlci93aW5kb3cuYzoKCUFsbG93IHRoZSBjbGllbnQgcmVjdGFuZ2xlIHRvIGJlIG9mIGFyYml0cmFyeSBzaXplIGFuZCBkaW1lbnNpb25zLAoJcmVnYXJkbGVzcyBvZiB0aGUgd2luZG93IHJlY3RhbmdsZS4KCgkqIGRsbHMvZ2RpL2ZvbnQuYzogVEFOQUJFIEhpcm9zaGkgPGhpcm9rdW5fZGF5b21vbkBpbmZvc2Vlay50bz4KCUFkZGVkIE11bHRpYnl0ZSBjaGFyYWN0ZXIgc2V0IHN1cHBvcnQgaW4gR2V0R2x5cGhPdXRsaW5lQS4KCgkqIGRsbHMvZ2RpL2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgaG9sZCB0aGUgR0RJIGxvY2sgd2hlbiBjYWxsaW5nIERDX0dldERDVXBkYXRlLgoKCSogZGxscy9jcnlwdGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnlwdGRsbC9jcnlwdGRsbC5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGb3J3YXJkIE1ENXtGaW5hbCxJbml0LFVwZGF0ZX0gdG8gYWR2YXBpMzIuCgoJKiBkbGxzL250ZGxsL2hhbmRsZXRhYmxlLmMsIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL250ZGxsL3JlbGF5LmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJUmVwbGFjZSBHZXRDdXJyZW50UHJvY2VzcygpIHdpdGggTnRDdXJyZW50UHJvY2VzcygpIGluIG50ZGxsLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCUl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUFkZGVkIGEgY291cGxlIG9mIGRlZmluZXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHN0cmluZ3MgYXJlIG51bGwgdGVybWluYXRlZC4KCgkqIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gcnVubmluZyBhIHNlY29uZCB0aW1lLCBkb24ndCBmYWlsIGlmIHdlIGNhbid0IGV4dHJhY3QgYW4gaWNvbi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFydGlqbiBWZXJub29paiA8eXV4ZHdhNzAyQHNuZWFrZW1haWwuY29tPgoJU2Nyb2xsIGluc3RlYWQgb2YgcmVwYWludGluZyB3aGVuIGV4cGFuZGluZy9jb2xsYXBzaW5nIHRyZWVzLgoJRG9uJ3QgcmVwYWludCBvbiBob3ZlciBpZiAnaG90IHRyYWNraW5nJyBpc24ndCBvbi4KCgkqIGRsbHMvaXRzcy9pdHNzLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiBMb2NrU2VydmVyLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglUaGUgdHlwZWxpYiBjYWNoZSBzaG91bGQgdGFrZSB0aGUgdHlwZWxpYiByZXNvdXJjZSBpbmRleCBpbnRvCglhY2NvdW50LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBDb3NtZXRpYyBmaXhlcy4KCgkqIGRsbHMva2VybmVsL3N0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgbHN0ciogZnVuY3Rpb25zIGlubGluZSBpbnNpZGUgV2luZS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gaGFuZGxlIElGaWxlU3lzdGVtQmluZERhdGEgaW4gSVNoZWxsRm9sZGVyOjpQYXJzZURpc3BsYXlOYW1lCgktIGNvbnZlcnQgSVNoZWxsRm9sZGVyOjpQYXJzZURpc3BsYXlOYW1lIHRvIHVzZSBVbmljb2RlCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSB0aGUgaW5zdGFsbGVkIHN0YXRlIGZvciBjb21wb25lbnRzIGR1cmluZyBDb3N0RmluYWxpemUuIExheWluZwoJZ3JvdW5kd29yayB0byBiZSBhYmxlIHRvIHN0YXJ0IHByb2Nlc3NpbmcgdW5pbnN0YWxsIGxvZ2ljIGFzIHdlbGwuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJRGVmV2luZG93UHJvYydzIFdNX05DQ0FMQyBoYW5kbGVyIG11c3Qgbm90IHN1YnRyYWN0IHNwYWNlIGZvcgoJc2Nyb2xsYmFycyBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGZvciBpdCBhbnl3YXkuIFdpdGggdGVzdHMgdG8KCWNvbmZpcm0gdGhlIGJlaGF2aW9yLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1ha2UgdXNlcjMyX2Nyb3NzdGVzdC5leGUgbG9hZGFibGUgb24gTlQgMy41MS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgd2luZG93cy9tZXNzYWdlLmM6CglEaXNwYXRjaE1lc3NhZ2UgbmVlZHMgdG8gcmVwYWludCB0aGUgbm9uLWNsaWVudCBhcmVhIGlmIHRoZSBXTV9QQUlOVAoJaGFuZGxlciBkaWRuJ3QgZG8gaXQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywgd2luZG93cy9jbGFzcy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1ha2UgUmVnaXN0ZXJDbGFzc0V4QSBjaGVjayB0aGF0IHJlc2VydmVkIGJ5dGVzIGlzIGEgdmFsaWQgdmFsdWUuCglUZXN0cyB0byBjb25maXJtIHRoaXMgYmVoYXZpb3VyLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOiBKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCVBvaW50IEtFWUJPQVJEUFJFRiBhbmQgU0NSRUVOUkVBREVSIHRvIHJlZ2lzdHJ5IGtleXMgYW5kIHZhbHVlcyB0aGF0CgltYXRjaCBuYXRpdmUuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdXNybWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgdmFyaWFudCBtYWNyb3MgaW5zdGVhZCBvZiBhY2Nlc3NpbmcgdGhlIHVuaW9uIGRpcmVjdGx5LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5AY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCB0eXBvLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgdG9vbHMvd2luZWR1bXAvZW1mLmMsIHRvb2xzL3dpbmVkdW1wL2xuay5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBjb25maWcuaCAmIEhBVkVfIHdoZXJlIG5lZWRlZCwgLVcgZml4ZXMuCgoJKiBkbGxzL21hcGkzMi9wcm9wLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXggcmFjZSBpbiBJTUFQSVByb3BfUmVsZWFzZSgpLCAtVyBmaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFudXAsIGNyZWF0ZSB1bmljb2RlIHZlcnNpb25zIG9mIF9JTENyZWF0ZUZyb21QYXRoLAoJX0lMQ3JlYXRlR3VpZEZyb21TdHIsIGFuZCBfSUxDcmVhdGVGcm9tRmluZERhdGEuCgoJKiBkbGxzL3F1YXJ0ei9hY213cmFwcGVyLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIEFDTSBXcmFwcGVyLgoKCSogZGxscy9udGRsbC90aW1lLmM6CglEYXJyeWwgRGl4b24gPGVzcmV2ZXJfb3R1YUBweXRob25oYWNrZXIuaXMtYS1nZWVrLm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIE5aRFQgKE5ldyBaZWFsYW5kIERheWxpZ2h0IFRpbWUpIHRvIFRaX0lORk8uCgoJKiBkbGxzL3VuaWNvd3MvTWFrZWZpbGUuaW4sIGRsbHMvdW5pY293cy9tYWluLmMsCgkgIGRsbHMvdW5pY293cy91bmljb3dzLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZCBJc0Rlc3RpbmF0aW9uUmVhY2hhYmxlVy4KCjIwMDUtMDItMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aHJlYWQuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50YXRpb24gc3R1YiBmb3IgUXVldWVVc2VyV29ya0l0ZW0uCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL3N0Z19wcm9wLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsCgkgIGRsbHMvb2xlMzIvdGVzdHMvc3RvcmFnZTMyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgYW5kIHRlc3QgSVByb3BlcnR5U2V0U3RvcmFnZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50ICdXJyB2YXJpYW50cyBvZiBQcm9jZXNzMzJGaXJzdCAvIE5leHQgQVBJcwoKCSogZGxscy9nZGkvZm9udC5jLCBkbGxzL2dkaS9nZGkxNi5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJSW1wbGVtZW50ZWQgR2V0R2x5cGhPdXRsaW5lMTYuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzoKCUp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJLSBJbXBsZW1lbnQgU1BJX3tHRVQsU0VUfVBPV0VST0ZGQUNUSVZFIGFuZCBTUElfU0VUTE9XUE9XRVJBQ1RJVkUuCgktIENvcnJlY3RlZCBTUElfR0VUTE9XUE9XRVJBQ1RJVkUgdG8gdXNlIGFuIGluZGV4IChpbnN0ZWFkIG9mIGl0cyBTUEkKCSAgdmFsdWUpIHRvIGF2b2lkIGFuIG91dCBvZiBib3VuZHMgY29uZGl0aW9uLgoJLSBDcmVhdGVkIHVuaXQgdGVzdHMgZm9yIFNQSV97R0VULFNFVH1QT1dFUk9GRkFDVElWRSBhbmQKCSAgU1BJX3tHRVQsU0VUKVNFVExPV1BPV0VSQUNUSVZFLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCBhIGRlZmluaXRpb24gZm9yIE9wZW5JbnB1dERlc2t0b3AoKS4KCUFkZCBjb25zdGFudHMgZm9yIFBCVF9BUE0qIHBhcmFtZXRlcnMuCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBMYXVyaSBUdWxtaW4gPGxhdXJpX0B1dC5lZT4KCUhvcml6b250YWwgc2Nyb2xsYmFyIGlzIGhpZGRlbiB3aGVuIGVkaXQgY29udHJvbCBpcyBlbXB0aWVkLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvUGwucmM6IE1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglTeW5jIFBvbGlzaCByZXNvdXJjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCVRha2UgaW50byBhY2NvdW50IHRoZSBuZXcgc2l6ZSBvZiBhIGNvbHVtbiB3aGVuIHRoZSBoZWFkZXIgc2l6ZQoJY2hhbmdlLgoKCSogZGxscy9xdWFydHovYWNtd3JhcHBlci5jLCBkbGxzL3F1YXJ0ei9hdmlkZWMuYywKCSAgZGxscy9xdWFydHovdHJhbnNmb3JtLmMsIGRsbHMvcXVhcnR6L3RyYW5zZm9ybS5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wcm92ZWQgQVZJRGVjLgoJQWRkZWQgMiBuZXcgY2FsbGJhY2sgZnVuY3Rpb25zIHRvIHRoZSB0cmFuc2Zvcm0gdGVtcGxhdGUgYW5kIG1vdmVkIGFsbAoJb2YgdGhlbSBpbnRvIGEgZnVuY3MgdGFibGUuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkIFJlZ09wZW5LZXksIFJlZ0Nsb3NlS2V5IHRlc3RzLgoKCSogZGxscy9tcHIvbXByX0RlLnJjLCBkbGxzL21wci9tcHJfRW4ucmMsIGRsbHMvbXByL21wcl9Gci5yYywKCSAgZGxscy9tcHIvbXByX1B0LnJjLCBkbGxzL3NoZG9jdncvRGUucmMsIGRsbHMvc2hkb2N2dy9Fbi5yYywKCSAgZGxscy9zaGRvY3Z3L0ZyLnJjLCBkbGxzL3NoZG9jdncvUHQucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1NpLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL05sLnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCVVzZSAiTVMgU2hlbGwgRGxnIiBldmVyeXdoZXJlIGV4Y2VwdCBmb3IgSmFwYW5lc2UuCgoJKiBkbGxzL21zY21zL01ha2VmaWxlLmluLCBkbGxzL21zY21zL2hhbmRsZS5jLCBkbGxzL21zY21zL2xjbXNfYXBpLmgsCgkgIGRsbHMvbXNjbXMvbXNjbXNfbWFpbi5jLCBkbGxzL21zY21zL21zY21zX3ByaXYuaCwKCSAgZGxscy9tc2Ntcy9wcm9maWxlLmMsIGRsbHMvbXNjbXMvc3R1Yi5jLCBkbGxzL21zY21zL3RyYW5zZm9ybS5jLAoJICBpbmNsdWRlL2ljbS5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CgktIEFkZCBzdXBwb3J0IGZvciBjb2xvciB0cmFuc2Zvcm0gaGFuZGxlcy4KCS0gSW1wbGVtZW50IENyZWF0ZUNvbG9yVHJhbnNmb3Jte0EsV30sIENyZWF0ZU11bHRpUHJvZmlsZVRyYW5zZm9ybSwKCSAgRGVsZXRlQ29sb3JUcmFuc2Zvcm0uCgktIERvbid0IGRlcGVuZCBvbiBsY21zIGZvciB0aGUgaW1wbGVtZW50YXRpb24gb2YKCSAgSXNDb2xvclByb2ZpbGVUYWdQcmVzZW50LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCS0gUmV2ZXJ0IHdyb25nIC1ub25hbWUgbWFya3VwIGZvciBEcmFnKiwgRG9FbnZpcm9ubWVudFN1YnN0IGFuZAoJICBTSEdldE5ld0xpbmtJbmZve0EsV30uCgktIEFsc28gbWFyayBzdHViIGV4cG9ydHMgLW5vbmFtZSB3aGVuIHRoZXkgYXJlIGV4cG9ydGVkIGJ5IG9yZGluYWwKCSAgb25seSBvbiB3aW45OC8yay4KCS0gSW1wbGVtZW50YXRpb24gbGV2ZWwgc3R1YnMgZm9yIFNoZUNoYW5nZURpckEsIFNoZUdldERpckEsCgkgIFNISGVscFNob3J0Y3V0c19SdW5ETEx7QSxXfS4KCS0gTmV3IHNwZWMgZmlsZSBzdHVicyBmb3IgQ29udHJvbF9SdW5ETExBc1VzZXJXLAoJICBGaXh1cE9wdGlvbmFsQ29tcG9uZW50cywgT0NJbnN0YWxsLCBTSENoYW5nZU5vdGlmeVN1c3BlbmRSZXN1bWUsCgkgIFNIQ3JlYXRlUHJvY2Vzc0FzVXNlclcsIFNIRXh0cmFjdEljb25zVywKCSAgU0hJbnZva2VQcmludGVyQ29tbWFuZHtBLFd9LCBTSElzRmlsZUF2YWlsYWJsZU9mZmxpbmUsCgkgIFNITG9hZE5vbmxvYWRlZEljb25PdmVybGF5SWRlbnRpZmllcnMsIFNIUGF0aFByZXBhcmVGb3JXcml0ZXtBLFd9LAoJICBTaGVsbEV4ZWNfUnVuRExMeyxBLFd9LCBTSEdldEljb25PdmVybGF5SW5kZXh7QSxXfS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHRhYnMgYW5kIG1ha2UgZm9ybWF0dGluZyBjb25zaXN0ZW50LgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgaW5jbHVkZS9vbGVjdGwuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCBhIHN0dWIgZm9yIE9sZUxvYWRQaWN0dXJlUGF0aCgpLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCBMV0FfIGNvbnN0YW50cywgdXNlZCBpbiB7Uy9HfUxheWVyZWRXaW5kb3dBdHRyaWJ1dGVzKCkuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgaW5maW5pdGUgbG9vcCB3aGVuIGRvaW5nIGEgdHlwZWxpYiBtYXJzaGFsbGVkCglJVW5rbm93bjo6UXVlcnlJbnRlcmZhY2UgYnkgb25seSBkb2luZyBhbiBleHRyYSBRSSBpZiByZXF1ZXN0ZWQgSUlEIGlzCglub3QgZXF1YWwgdG8gbWFyc2hhbGxlZCBJSUQuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgbG9hZGluZyBvZiBidWlsdGluIHR5cGVsaWJzLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggU2V0SXRlbSBzbyB0aGF0IGl0ZW1zIGRvbid0IGdldCB3cm9uZ2x5IHJlLW9yZGVyZWQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywKCSAgaW5jbHVkZS93aW5zcG9vbC5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgQWJvcnRQcmludGVyLCBBZGRQb3J0RXh7QSxXfSwKCUFkZFByaW50ZXJDb25uZWN0aW9ue0EsV30sIENvbm5lY3RUb1ByaW50ZXJEbGcsCglEZWxldGVQcmludGVyQ29ubmVjdGlvbntBLFd9LCBFbnVtRm9ybXN7QSxXfSwgRW51bVByaW50ZXJEYXRhe0EsV10sCglFeHREZXZpY2VNb2RlLCBGaW5ke0Nsb3NlLEZpcnN0LE5leHR9UHJpbnRlckNoYW5nZU5vdGlmaWNhdGlvbiwKCUZyZWVQcmludGVyTm90aWZ5SW5mbywgU2NoZWR1bGVKb2IuCgoJKiBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUYWtlIFNoaWZ0IGtleSBzdGF0ZSBpbnRvIGFjY291bnQgd2hpbGUgcHJvY2Vzc2luZyBhbiBhY2NlbGVyYXRvci4KCUFkZCBhIGNvdXBsZSBvZiB0ZXN0IGNhc2VzLgoKCSogcHJvZ3JhbXMvdGFza21nci9Fbi5yYywgcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCUNsZWFudXAgdGFza21nciByZXNvdXJjZSBmaWxlIChnZXQgcmlkIG9mIEMrKyBzdHlsZSBjb21lbnRzLCB1c2UgIk1TCglTaGVsbCBEbGciIGZvciBkaWFsb2dzLCBldGMpLgoJUHJlcGFyYXRpb24gZm9yIHRyYW5zbGF0b3JzIChtb3ZlIGVuZ2xpc2ggcmVzb3VyY2VzIHRvIEVuLnJjKS4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJUmV2ZXJzZSB0aGUgb3JkZXIgZm9yIGRlbGV0aW5nIHRoZSBpdGVtcyBpbiByZXNldGNvbnRlbnQgdG8gY29ycmVjdGx5CgllbXB0eSBhIGNvbWJvYm94ZXguCgoJKiBpbmNsdWRlL3d0eXBlcy5pZGw6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZGVkIExQRFdPUkQgZGVmaW5pdGlvbi4KCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglPbmx5ICdmaXgnIHRoZSBuYW1lcyBvZiBzb3VyY2UgZmlsZXMgYW5kIGRpcmVjdG9yaWVzICh0aGlzIHdheQoJZG9jdW1lbnRhdGlvbiBmaWxlcyBhcmUgdW5oYXJtZWQpLgoJQmV0dGVyIGhhbmRsZSBNYWtlZmlsZXMgZ2VuZXJhdGVkIGJ5IFdpbmVtYWtlci4gSW4gcGFydGljdWxhciwgZG9uJ3QKCXJlbmFtZSB0aGVtIHRvIG1ha2VmaWxlLndpbiEKCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVGhlIHZhbHVlcyBhcmUgcXVvdGVkIGFuZCBzcGFjZXMgYWRkZWQsIHNvIGhhdmluZyBzcGFjZXMgaW4gdGhlCglwcm9wZXJ0aWVzIHJlc3VsdHMgaW4gc3BhY2VzIGluIHRoZSB2YWx1ZXMgd2hpY2ggaXMgaW5jb3JyZWN0LgoKCSogaW5jbHVkZS9yaWNob2xlLmlkbDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkZWQgSVJpY2hFZGl0T2xlQ2FsbGJhY2suCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNvcnJlY3QgdGhlIG51bWJlciBvZiBhcmdzIG9mIFNORE1TR0EgaW4gTGlzdFZpZXdfR2V0U3ViSXRlbVJlY3QuCgoJKiBkbGxzL250ZGxsL250LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeCBOdFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyIHBhcmFtZXRlciBjaGVja2luZy4gU3BvdHRlZCBieSBBbGV4CglXb29kcy4KCjIwMDUtMDItMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQmV0dGVyIHRyYWNpbmcuCgktIFNtYWxsIGNsZWFudXAgb2YgY3JlYXRpb24gZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglNYXJrIGV4cG9ydHMgLW5vbmFtZSB3aGVuIHRoZXkgYXJlIGV4cG9ydGVkIGJ5IG9yZGluYWwgb25seSBvbgoJd2luOTgvMmsuCgoJKiBNYWtlZmlsZS5pbjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCWRsbHMvX19pbnN0YWxsLWxpYl9fIGFuZCBwcm9ncmFtcy9fX2luc3RhbGxfXyBzaG91bGQgbm90IGZvcmNlIHRoZQoJaW5zdGFsbGF0aW9uIG9mIHRoZSBXaW5lIGhlYWRlcnMgYXMgdGhpcyBpcyBjb250cmFyeSB0byB0aGUgcHVycG9zZSBvZgoJaW5zdGFsbC1saWIuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jLCBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTW92ZSBtYXJzaGFsaW5nIHN0YXRlIG1hY2hpbmUgaW50byBzdHViIG1hbmFnZXIgZnJvbSBpZnN0dWIuCgktIEFkZCBhZGRpdGlvbmFsIG5lZWRlZCBzdGF0ZXMgZm9yIHRhYmxlLXdlYWsgbWFyc2hhbGluZywgYXMgc2hvd24gYnkKCSAgdGVzdHMuCgktIFByb3RlY3QgZXh0ZXJuYWwgcmVmZXJlbmNlIGNvdW50IGZyb20gdW5kZXJmbG93cy9vdmVyZmxvd3MuCgoJKiBzZXJ2ZXIvcXVldWUuYzogS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJRW5zdXJlIHRoYXQgY2FyZXQgcG9zaXRpb24gaXMgbm90IHJlc2V0IHRvICgwLCAwKSB3aGVuIENyZWF0ZUNhcmV0IGlzCgljYWxsZWQgc2Vjb25kIHRpbWUgd2l0aCB0aGUgc2FtZSB3aW5kb3cuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBBbHdheXMgdW5saW5rIGNoaWxkcmVuIGJlZm9yZSBzZW5kaW5nIFdNX05DREVTVFJPWSBtZXNzYWdlLgoJLSBGaXggb3JkZXIgb2YgV01fREVTVFJPWSBtZXNzYWdlcyBmb3IgdGhlIGNoaWxkcmVuJ3MgcmVjdXJzaW9uLgoJLSBEZXN0cm95V2luZG93IHNob3VsZCBoaWRlIG9ubHkgdmlzaWJsZSB3aW5kb3dzLgoJLSBBZGQgYSB0ZXN0IGNhc2UgZm9yIHRoZSBhYm92ZSBmaXhlcy4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUR1cGxpY2F0ZSBXaW5kb3dzIGJlaGF2aW91ciBhbmQgdXNlIFNlbmRNZXNzYWdlIGZvciB0aGUgU0NfQ0xPU0UKCXN5c3RlbSBjb21tYW5kIGluc3RlYWQgb2YgUG9zdE1lc3NhZ2UuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHByb2JsZW1zIHdpdGggbXkgY29kZSBmb3IgZmluZGluZyB0aGUgUGFja2FnZUNvZGUuCgoJKiB0b29scy93aW5lZHVtcC9sbmsuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVVzZSBzdGRsaWIuaCBpbnN0ZWFkIG9mIG5vbi1zdGFuZGFyZCBtYWxsb2MuaC4KCgkqIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL3dpbm50Lmg6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQ29uZGl0aW9uYWxseSBhZGQgREVDTFNQRUNfQUxJR04oOCkgdG8gd2luZSdzIDY0LWJpdCB0eXBlcyBhbmQgbGVhdmUKCXRoZSBtb2RpZmllciBvZmYgd2hlbiBjb21waWxpbmcgd2l0aCBtc3ZjLgoKCSogZGxscy93aW5tbS9tY2kuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgb2Zmc2V0cyBjYWxjdWxhdGlvbnMuCgoJKiB0b29scy93aW5lZHVtcC9sbmsuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRHVtcCBvdXQgbW9yZSBkZXRhaWxzIG9uIHRoZSB0YXJnZXQgb2YgYSBsaW5rLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9vZGJjaW5zdC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgb2RiY2luc3QuaC4KCgkqIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNtYWxsIGluZGVudGF0aW9uIGZpeGVzLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IGNhcHR1cmUgdGVzdCB0byBwYXNzIG9uIHdpbmRvd3MgOTggd2hlbiBubyBzb3VuZCBjYXJkIHByZXNlbnQgb3IKCWRldmljZSBhbHJlYWR5IGluIHVzZS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvdGltZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCB0aW1lciB0ZXN0cyB0byBwYXNzIG9uIHdpbmRvd3MgOTguCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBibG9jayBhbGlnbiB0ZXN0LgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglJbXBsZW1lbnQgT2xlRm9udEltcGxfUXVlcnlUZXh0TWV0cmljcy4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jOiBHdW5uYXIgRGFsc25lcyA8aGFyZG9uQG9ubGluZS5ubz4KCVdoZW4gZ2V0dGluZyBjdXJyZW50IGRpcmVjdG9yeSBvbiBhIGRyaXZlIGRpZmZlcmVudCBmcm9tIHRoZSB3b3JraW5nCglkcml2ZSwgX2dldGRjd2QgaW5jb3JyZWN0bHkgcGFzc2VkICJYOlwiIChYID0gYW55IGRyaXZlKSBhcyBwYXRoIHRvCglHZXRGdWxsUGF0aE5hbWUuICJYOiIgKHdpdGhvdXQgdGhlIGJhY2tzbGFzaCkgaXMgdGhlIGNvcnJlY3QgdGhpbmcgdG8KCXVzZS4KCjIwMDUtMDItMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvc2Nyb2xsLmM6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglSZW5hbWUgU0NST0xMX0dldFNjcm9sbEJhckluZm8gdG8gU0NST0xMX0dldEludGVybmFsSW5mbyBhbmQgbWFrZQoJYWxsb2NhdGlvbiBvZiBhIG5ldyBpbmZvIHN0cnVjdHVyZSBvcHRpb25hbC4KCUFkZCBzb21lIGRlc2NyaXB0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgd2luZW1lbnVidWlsZGVyIHRvIHVuaWNvZGUuCgoJKiB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWR1bXAvbG5rLmMsCgkgIHRvb2xzL3dpbmVkdW1wL21haW4uYywgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkdW1waW5nIG9mIGxuayBmaWxlcy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzogRGF2aWQgU21pdGggPGRzbWl0aEBhbGdvbmV0LnNlPgoJRml4IGZvciBJQ0luZm8oKSBpbiBtc3ZpZGVvIHdoZW4gaXQgaXMgdXNlZCB0byBhc2sgZm9yIGEgY29kZWMgYnkKCWluZGV4LgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglBcHBhcmVudGx5IE5UNCBjYW4gYWxzbyByZXR1cm4gRVJST1JfRU5WVkFSX05PVF9GT1VORC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzogSm9yaXMgSHVpemVyIDxqb3Jpc2h1aXplckBwbGFuZXQubmw+CgktIHJlbmFtZWQgZmlsZV9vcGVyYXRpb25fZGVsZXRlIGFuZCB0byBzaGZpbGVvcHNfZGVsZXRlCgktIHJlbmFtZWQgZmlsZV9vcGVyYXRpb25fY2hlY2tGbGFncyB0byBzaGZpbGVvcHNfY2hlY2tfZmxhZ3MKCS0gYWRkZWQgaGVscGVyIGZ1bmN0aW9uIHNoZmlsZW9wc19kb19vcGVyYXRpb24oKQoJLSBhZGRlZCBoZWxwZXIgZnVuY3Rpb24gc2hmaWxlb3BzX2dldF9wYXJlbnRfYXR0cigpCgktIGFkZGVkIGhlbHBlciBmdW5jdGlvbiBzaGZpbGVvcHNfZ2V0X3BhcmVudF9hdHRyMigpCgktIHZhcmlvdXMgY2xlYW51cHMgaW4gU0hGaWxlT3BlcmF0aW9uVyB1c2luZyB0aGVzZSBmdW5jdGlvbnMKCjIwMDUtMDItMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRXMucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0VzLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywgZGxscy9tcHIvbXByX0VzLnJjLCBkbGxzL21zYWNtL21zYWNtX0VzLnJjLAoJICBkbGxzL21zcmxlMzIvbXNybGVfRXMucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfRXMucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19Fcy5yYywgZGxscy9zZXJpYWx1aS9Fcy5yYywgZGxscy9zZXR1cGFwaS9Fcy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX0VzLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Fcy5yYywgZGxscy93aW5lcHMvd3BzX0VzLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9Fcy5yYywgZGxscy93aW5tbS93aW5tbV9Fcy5yYywKCSAgcHJvZ3JhbXMvY2xvY2svRXMucmMsIHByb2dyYW1zL2NtZGxndHN0L0VzLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjLCBwcm9ncmFtcy9wcm9nbWFuL0VzLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLCBwcm9ncmFtcy9zdGFydC9Fcy5yYywgcHJvZ3JhbXMvdmlldy9Fcy5yYywKCSAgcHJvZ3JhbXMvd2NtZC9Fcy5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRXMucmMsIHByb2dyYW1zL3dpbmVmaWxlL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9Fcy5yYywgcHJvZ3JhbXMvd2luaGVscC9Fcy5yYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUNoYW5nZSBTVUJMQU5HX0RFRkFVTFQgdG8gU1VCTEFOR19ORVVUUkFMIGZvciBMQU5HX1NQQU5JU0ggaW4gYWxsCglyZXNvdXJjZXMsIHNvIHRoYXQgU3BhbmlzaCBsb2NhbGVzIG90aGVyIHRoYW4gU3BhaW4gYWxzbyB1c2UgU3BhbmlzaAoJcmVzb3VyY2VzLgoKCSogZGxscy9tc2kvbXNpLnJjLCBkbGxzL21zaS9tc2lfRnIucmMsIGRsbHMvc2hkb2N2dy9Gci5yYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncucmM6CglKb25hdGhhbiBFcm5zdCA8Sm9uYXRoYW5ARXJuc3RGYW1pbHkuY2g+CglBZGQgRnJlbmNoIHJlc291cmNlcy4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9yZWdpc3RyeS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBwcm9kdWN0LCBmZWF0dXJlIGFuZCBjb21wb25lbnQgZW51bWVyYXRpb24gZnVuY3Rpb25zIHRvCglyZWdpc3RyeS5jLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJRml4IGltcHJvcGVyIHR5cGUtY29udmVyc2lvbnMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEl2YW4gTGVvIFB1b3RpIDxpdmFubGVvQGdtYWlsLmNvbT4KCUFkZCBFVkVOVF9RVUVSWV9TVEFURSBkZWZpbmUuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUNhbGxpbmcgVmFsaWRhdGVSZWN0IG9yIFZhbGlkYXRlUmduIG9uIGEgd2luZG93cyBhbHNvIHZhbGlkYXRlcyB0aGUKCWNoaWxkcmVuLiBBZGQgYSB0ZXN0IHRvIHNob3cgdGhlIGJlaGF2aW9yLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jOiBQYXVsIHZhbiBTY2hheWNrIDxwb2xsZWtlQGdtYWlsLmNvbT4KCUNoYW5nZSBkZXRlY3Rpb24gb3JkZXIgdG86IE9TUy1BTFNBLUFSVFMtSkFDSy4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBFU19DRU5URVIgYW5kIEVTX1JJR0hUIGFsaWdubWVudCBzdHlsZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbGxpbmsuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTZXRQYXRoKCIiKSBzaG91bGQgcmV0dXJuIFNfT0suCglTZXRQYXRoKCJub25leGlzdGVudF9wYXRoIikgc2hvdWxkIHJldHVybiBTX0ZBTFNFLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVRob21hcyBXZWlkZW5tdWVsbGVyIDx3aW5lLXBhdGNoZXNAcmVhY3Rzb2Z0LmNvbT4KCUZvcndhcmQgdG8gdXNlcjMyIHdoZW4gYXBwcm9wcmlhdGUuCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU29tZSBibG9jayBhbGlnbiBjbGVhbnVwcy4KCgkqIGRsbHMvbXNpL2RpYWxvZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBib3JkZXIgdG8gdGhlIGVkaXQgY29udHJvbCwgYWRkIHNvbWUgbW9yZSBjb250cm9scy4KCgkqIGRsbHMvbXNpL3N1bWluZm8uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHVwIHRoZSBzdW1tYXJ5IGluZm9ybWF0aW9uIGNvZGUgYSBsaXR0bGUuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU3R1YnMgZm9yIE1zaVVzZUZlYXR1cmUuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmRfdGVzdC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGludmFsaWQgYnVmZmVyIHNpemUgYnkgcm91bmRpbmcgdXAgdG8gbmV4dCBtdWx0aXBsZSBvZgoJbkJsb2NrQWxpZ24uCglBZGRlZCB0ZXN0IHRvIHZlcmlmeSBidWZmZXIgcm91bmRpbmcgYmVoYXZpb3IuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogTGF1cmkgVHVsbWluIDxsYXVyaV9AdXQuZWU+CglNYWtlIG1pbmltaXplZCB3aW5kb3dzIHN0YXkgbWluaW1pemVkLgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgY29uc3QgZGVjbGFyYXRpb24gZnJvbSBub24tY29uc3QgZnVuY3Rpb24uCgoJKiBkbGxzL21zaS90YWJsZS5jLCBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgTXNpVmlld0V4ZWN1dGUgdG8gYmUgY2FsbGVkIHR3aWNlIG9uIHRoZSBzYW1lIHF1ZXJ5LgoKCSogZGxscy9tc2kvbXNpcXVlcnkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaURhdGFiYXNlR2V0UHJpbWFyeUtleXMuCgoJKiBkbGxzL21zaS9tc2kuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTXNpR2V0Q29tcG9uZW50UGF0aCBzaG91bGQgYWxsb3cgbnVsbCBwb2ludGVycyBmb3IgcGNjaEJ1ZiBhbmQKCWxwUGF0aEJ1Zi4KCgkqIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNtYWxsIGZpeGVzLCBpbmRlbnRhdGlvbiBhbmQgY29tbWVudHMuCgoyMDA1LTAyLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywKCSAgZGxscy9jb21tZGxnL2NvbG9yZGxnMTYuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jLAoJICBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywKCSAgZGxscy9zaGx3YXBpL21zZ2JveC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3VzZXIvY29udHJvbHMuaCwKCSAgZGxscy91c2VyL2Rlc2t0b3AuYywgZGxscy91c2VyL2RpYWxvZzE2LmMsIGRsbHMvdXNlci9pY29udGl0bGUuYywKCSAgZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgaW5jbHVkZS93aW5kb3dzeC5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgcHJvZ3JhbXMvdGFza21nci9hcHBscGFnZS5jLAoJICBwcm9ncmFtcy90YXNrbWdyL3Byb2NsaXN0LmMsIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsCgkgIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywKCSAgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5wcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggcHJvdG90eXBlcyBvZiBHZXRDbGFzc0xvbmdBL1csIEdldENsYXNzTG9uZ1B0ckEvVyBhbmQKCSAgU2V0Q2xhc3NMb25nQS9XIGFjY29yZGluZyB0byBTREsgZGVmaW5pdGlvbnMuCgktIEFkZCBwcm90b3R5cGVzIGZvciBTZXRDbGFzc0xvbmdQdHJBL1csIHByb3RlY3Qgc29tZSBHV0xfIGFuZCBHQ0xfCgkgIGNvbnN0YW50cyBmcm9tIHVzaW5nIGluIFdpbmUgb3IgaW4gX1dJTjY0IG1vZGUuCgktIEZpeCBhbGwgcGxhY2VzIGluIFdpbmUgYWZmZWN0ZWQgYnkgdGhlIGFib3ZlIGNoYW5nZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBVc2UgSV9ScGNHZXRCdWZmZXIsIGluc3RlYWQgb2Ygb3VyIG93biBidWZmZXIgcm91dGluZXMgdG8gZml4IGFuCgkgIG9jY2FzaW9uYWwgdGVzdCBjcmFzaCBjYXVzZWQgYnkgaGVhcCBjb3JydXB0aW9uLgoJLSBaZXJvIHRoZSBtZW1vcnkgYmxvY2sgcGFzc2VkIHRvIFJwY1NlcnZlclJlZ2lzdGVySWZFeCBzbyB3ZSBkb24ndAoJICBwYXNzIGdhcmJhZ2UgaW4gc29tZSBvZiB0aGUgZmllbGRzIHdlIGRvbid0IGZpbGwgaW4uCgktIFJldHVybiB0aGUgY29ycmVjdCBlcnJvciBjb2RlIGZyb20gY3JlYXRlX3NlcnZlciBhbmQgZml4IHR3byBoYW5kbGUKCSAgbGVha3MuCgktIFRPRE8gdXBkYXRlLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBsb2NhbCBidWZmZXIgaW4gUnRsVXBjYXNlVW5pY29kZVN0cmluZ1RvQ291bnRlZE9lbVN0cmluZywgaWYKCWFwcHJvcHJpYXRlLgoKCSogZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC90ZXN0cy9yZWcuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJTW92ZSBSdGwqUmVnaXN0cnkqIHN0cnVjdHMsIGRlZmluZXMgYW5kIHByb3RvdHlwZXMgdG8gd2ludGVybmwuaC4KCUZpeCB0d28gZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoKCSogZGxscy9tc2kvbXNpLnJjLCBkbGxzL21zaS9tc2lfRGUucmMsIGRsbHMvc2hkb2N2dy9EZS5yYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncucmMsIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglBZGQvdXBkYXRlZCBHZXJtYW4gcmVzb3VyY2VzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZWluZGVudCBzb21lIGNvZGUgdG8gaW1wcm92ZSByZWFkYWJpbGl0eS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgYSBzdHViIGltcGxlbWVudGF0aW9uIG9mIFJwY0ltcGVyc29uYXRlQ2xpZW50LgoJLSBNb3JlIHRyYWNpbmcsIHBhcnRpY3VsYXJseSBvbiBlcnJvciBwYXRocy4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jOiBQYXVsIHZhbiBTY2hheWNrIDxwb2xsZWtlQGdtYWlsLmNvbT4KCU9ubHkgc3RvcCB3cml0aW5nIGEgdm9sdW1lIGxhYmVsIGlmIHdlIGZvdW5kIGEgbm9uIHdyaXRhYmxlIGZhdAoJcGFydGl0aW9uLgoKCSogZGxscy9vbGUzMi9naXQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVGhlIEdsb2JhbCBJbnRlcmZhY2UgVGFibGUgc2hvdWxkIGRvIHRhYmxlLXN0cm9uZyBtYXJzaGFsaW5nIGluc3RlYWQKCW9mIG5vcm1hbCBtYXJzaGFsaW5nIHNvIHRoYXQgYW4gaW50ZXJmYWNlIGNhbiBiZSByZXRyaWV2ZWQgbW9yZSB0aGFuCglvbmUgdGltZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmVtb3ZlIGNydWZ0IGxlZnQgb3ZlciBmcm9tIHByZXZpb3VzIFJQQyBiYWNrZW5kIGltcGxlbWVudGF0aW9uIGluCgkgIHRoZSBhcGFydG1lbnQgc3RydWN0dXJlLgoJLSBEb24ndCBwYXNzIGFuIElQSUQgYnkgdmFsdWUgZm9yIHByb3h5X21hbmFnZXJfY3JlYXRlX2lmcHJveHkuCgktIERpc2FibGUgbW9yZSBvZiBSUENfVW5yZWdpc3RlckludGVyZmFjZSB0byBwcmV2ZW50IHRoZSBSUEMgcnVudGltZQoJICB1c2luZyBmcmVlZCBtZW1vcnkuCgktIFJlbmFtZSB2YXJpb3VzIGV4dGVybmFsIFJQQyBiYWNrZW5kIGZ1bmN0aW9ucyBzbyB0aGF0IHRoZXkgYWxsIGhhdmUKCSAgdGhlIHNhbWUgIlJQQ18iIHByZWZpeC4KCS0gUmVkdWNlIHRoZSB0aW1lb3V0IG9mIHRoZSBmdW5jdGlvbiB0aGF0IGNvbm5lY3RzIHRvIGEgbG9jYWwgc2VydmVyCgkgIHRvIDMwcywgbGlrZSBuYXRpdmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGluY2x1ZGUvc2hlbGxhcGkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBzb21lIGV4dHJhIFNIRkdJIHZhbHVlcy4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYywgaW5jbHVkZS93aW51c2VyLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBtb3JlIFNQSSB2YWx1ZXMuCgoJKiBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBSUEMgc2VydmVyIHRocmVhZCByYWNlLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRVJST1JfSU9fUEVORElORyBpcyBleHBlY3RlZCwgc28gZG9uJ3QgcmV0dXJuIGFuIGVycm9yLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgR2V0UHJvcGVydHkgbWV0aG9kIGZvciBrZXlib2FyZCBkZXZpY2UuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgQ09NIHVzZSB0aGUgUlBDIHJ1bnRpbWUgYXMgdGhlIGJhY2tlbmQgZm9yIFJQQyBjYWxscy4gQmFzZWQgb24gYQoJcGF0Y2ggYnkgT3ZlIEvldmVuLgoKMjAwNS0wMi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC90ZXN0cy9yZWcuYzoKCUJyYWQgRGVNb3Jyb3cKCVRlc3RzIGZvciB0aGUgbnRkbGwgcmVnaXN0cnkgZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3JlZy5jOgoJSXZhbiBMZW8gUHVvdGkgPGl2YW5sZW9AZ21haWwuY29tPgoJQWRkIGltcGxlbWVudGF0aW9uIGZvciBSdGxRdWVyeVJlZ2lzdHJ5VmFsdWVzLCBSdGxDaGVja1JlZ2lzdHJ5S2V5IGFuZAoJUnRsRGVsZXRlUmVnaXN0cnlWYWx1ZS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYywgZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYywKCSAgZGxscy9tbGFuZy90ZXN0cy9tbGFuZy5jLCBkbGxzL21zdmNydC90ZXN0cy9maWxlLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhc3QgdGhlIEdldFByb2NBZGRyZXNzKCkgcmV0dXJuIHZhbHVlIHRvIGF2b2lkIHdhcm5pbmdzIGFib3V0IHRoZQoJZnVuY3Rpb24gcG9pbnRlciBiZWluZyBvZiB0aGUgd3JvbmcgdHlwZS4KCUZpeCBhc3NvcnRlZCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCgkqIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvcmljaGVkaXQvcnRmLmgsCgkgIGRsbHMvcmljaGVkaXQvc3RkY2hhcm5hbWVzLmgsIGRsbHMvcmljaGVkaXQvdGV4dF9tYXAuaDoKCVLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCWNoYXIgLT4gY29uc3QgY2hhciBmaXhlcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdXBwb3J0IGZvciBjb21tYW5kIGxpbmUgcGFyYW1ldGVyICcvRCcgdG8gZG8gZHJpdmUgZGV0ZWN0aW9uCglmcm9tIHdpbmVwcmVmaXhjcmVhdGUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlZGV0ZWN0LmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbmNsdWRlIGNvbmZpZy5oIHRvIHJlZW5hYmxlIHJlYWRpbmcgL2V0Yy9mc3RhYiBvbiBwbGF0Zm9ybXMgdGhhdAoJc3VwcG9ydCBpdC4KCUltcGxlbWVudGVkIGEgYmxhY2sgbGlzdCBvZiBtb3VudCBkaXJlY3Rvcmllcywgd2hpY2ggc2hvdWxkIG5vdCBiZQoJbWFwcGVkLgoJRW5zdXJlIHRoYXQgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSBpcyBtYXBwZWQuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQ2hlY2sgcGR3RGF0YUxlbiBwYXJhbSBmb3Igbm9uIE5VTEwnbmVzcy4KCUltcGxlbWVudGVkIFBQX0lNUExUWVBFIGFuZCBQUF9WRVJTSU9OIHByb3ZpZGVyIHBhcmFtcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJU2V0IHBvaW50ZXJzIHRvIE5VTEwgaW4gZGVsZXRlX2RyaXZlIHRvIHByZXZlbnQgaGVhcCBjb3JydXB0aW9uIGluCglsb2FkX2RyaXZlcy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvdGltZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBzb21lIG1pc3NpbmcgXG5zLgoKCSogZGxscy9tc2Ntcy9oYW5kbGUuYywgZGxscy9tc2Ntcy9pY2MuYywgZGxscy9tc2Ntcy9tc2Ntc19wcml2LmgsCgkgIGRsbHMvbXNjbXMvcHJvZmlsZS5jLCBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGFuZCB0ZXN0IGFjY2VzcyBmbGFncyBmb3IgY29sb3IgcHJvZmlsZXMuCglXcml0ZSB0aGUgY29sb3IgcHJvZmlsZSBiYWNrIHRvIGRpc2sgd2hlbiBpdCB3YXMgb3BlbmVkIGZvciB3cml0aW5nLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Rlc3RzL3ByaW50Zi5jLAoJICBkbGxzL21zdmNydC93Y3MuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBoYW5kbGluZyBvZiAld3MsICVTIGFuZCAlQyB0byBfdm5zKHcpcHJpbnRmLCBpbXByb3ZlIHNwcmludGYKCXRlc3RzLgoKCSogZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oLAoJICBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYywgZGxscy91c2VyL2RkZS9taXNjLmMsCgkgIGRsbHMvdXNlci9kZGUvc2VydmVyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBEREUgaW1wbGVtZW50YXRpb24gYWx3YXlzIHdvcmsgaW50ZXJuYWxseSBpbiBVbmljb2RlLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJU3VwcHJlc3MgYSB3YXJuaW5nLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxsbGluay5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3QgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gSVNoZWxsTGluazo6U2V0SURMaXN0KCkgYW5kCglJU2hlbGxMaW5rOjpTZXRQYXRoKCkuCglDaGVjayB3aGF0IGRlZmF1bHQgdmFsdWVzIG9uZSBnZXRzIG9uIGEgZnJlc2ggSVNoZWxsTGluayBvYmplY3QuCglBZGQgc29tZSBtb3JlIHRlc3RzIHZlcmlmeWluZyBub3RoaW5nIGlzIGxvc3QgaW4gYW4gSVNoZWxsTGluawoJc2F2ZS9sb2FkIGN5Y2xlLiBNZXJnZWQgdGhlIGVtcHR5IHNoZWxsbGluayB0ZXN0IHdpdGggdGhlc2UuCgoJKiBkbGxzL2dkaS9yZWdpb24uYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVJFR0lPTl9GcmFtZVJnbiBjb21wdXRlcyB0aGUgZnJhbWUgcmVnaW9uIGluc2lkZSB0aGUgb3JpZ2luYWwgcmVnaW9uLgoKCSogZGxscy91c2VyL2VkaXQuYzogTGF1cmkgVHVsbWluIDxsYXVyaV9AdXQuZWU+CglVcGRhdGUgc2Nyb2xsIGluZm8gb24gV01fU0VUVEVYVC4KCgkqIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmM6IExhdXJpIFR1bG1pbiA8bGF1cmlfQHV0LmVlPgoJSW1wbGVtZW50IHdvcmQgd3JhcC4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0LCBkb2N1bWVudGF0aW9uL1JFQURNRS5wdF9icjoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglVcGRhdGUgUkVBRE1FIGZvciBQdF9iciBhbmQgUHQuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW52b2tlIG9iamVjdHMgaW4gU1RBJ3MgaW4gdGhlIGNvcnJlY3QgdGhyZWFkIGJ5IHNlbmRpbmcgbWVzc2FnZXMgdG8KCXRoZSBoaWRkZW4gYXBhcnRtZW50IHdpbmRvdy4KCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYWtlIHRoZSBlZGl0IGZpZWxkIGNyZWF0ZWQgZnJvbSBhIHJpY2hlZGl0IGNvbnRyb2wgd2hpY2ggd2FzIGNyZWF0ZWQKCXdpdGggRVNfRElTQUJMRU5PU0NST0xMLCBub3QgaGF2ZSB0aGUgRVNfTlVNQkVSIHN0eWxlIGFuZCBoZW5jZSBhY2NlcHQKCWFscGhhbnVtZXJpYyBpbnB1dC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvbXByL21wcl9QdC5yYywgZGxscy9tc2kvbXNpLnJjLAoJICBkbGxzL21zaS9tc2lfUHQucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIucmMsIGRsbHMvc2hkb2N2dy9Fbi5yYywKCSAgZGxscy9zaGRvY3Z3L1B0LnJjLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsIGRsbHMvd2luaW5ldC93aW5pbmV0X1B0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLCBwcm9ncmFtcy93aW5lZmlsZS9QdC5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglVcGRhdGUgdGhlIHJlc291cmNlcyBmb3IgUG9ydHVndWVzZS4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglIYW5kbGUgbW9yZSBwcm9wZXJseSB2ZXJzaW9ucyBmb3IgRGlyZWN0M0QgYW5kIERpcmVjdDNERGV2aWNlCglvYmplY3RzLgoKCSogZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWw6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgMiBtaXNzaW5nIHRhZ3MgaW4gZ2V0dGluZy5zZ21sLgoKCSogZGxscy9nZGkvZGliLmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL3dpbmVwcy9wcy5jLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIG92ZXJmbG93cyB3aXRoIENsclVzZWQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPdXRwdXQgc29tZSBtb3JlIGluZm9ybWF0aW9ucy4KCU1hcmsgb25lIGdsb2JhbCB2YXJpYWJsZSBzdGF0aWMuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvZGVsZXRlLmMsIGRsbHMvbXNpL3F1ZXJ5LmgsCgkgIGRsbHMvbXNpL3NxbC55OgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFNRTCBkZWxldGUgcXVlcnkuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglEb24ndCBjcmFzaCBpZiBTaGVsbEZvbGRlciBkb2Vzbid0IGltcGxlbWVudCB0aGUgSUlEX0lTRkhlbHBlcgoJaW50ZXJmYWNlLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1ha2UgYWR2YXBpMzJfdGVzdC5leGUgbG9hZGFibGUgb24gTlQgMy41MS4KCgkqIHRvb2xzL3dpZGwvdHlwZWxpYi5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBIFJQQ19GQ19FTlVNMTYgaXMgYSBWVF9VU0VSREVGSU5FRC4KCgkqIGRsbHMvc2V0dXBhcGkvbWlzYy5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsCgkgIGluY2x1ZGUvc2V0dXBhcGkuaDoKCUVyaWMgS29obCA8ZXJpYy5rb2hsQHQtb25saW5lLmRlPgoJSW1wbGVtZW50IERlbGF5ZWRNb3ZlIGFuZCBGaWxlRXhpc3RzLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCU1lbnRpb24gYnQgW2FsbCB8IDx0aWQ+XS4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2JydXNoLmM6IFLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCVNtYWxsIGNoYXIgLT4gY29uc3QgY2hhciBmaXguCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJRXJyb3IgbnVtYmVycyA+PSAzMiBhcmUgdG8gYmUgZXhwZWN0ZWQuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCS0gQ29ycmVjdCB0aW1lIHpvbmUgZm9yIEJSVCBhbmQgQlJTVC4KCS0gQmV0dGVyIGV4cGxhaW5lZCBmaXhtZS4KCgkqIGRsbHMvYWR2cGFjay90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9hZHZwYWNrL3Rlc3RzL2FkdnBhY2suYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglMb2FkIGFkdnBhY2suZGxsIGF0IHJ1bnRpbWUgdG8gYXZvaWQgbGluayBwcm9ibGVtcyB3aXRoIHRoZSBwbGF0Zm9ybQoJc2RrLgoKCSogZGxscy93aW5zb2NrL3Rlc3RzL3Byb3RvY29sLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGVzdHMgY2Fubm90IHVzZSB3aW5lL2RlYnVnLmggYmVjYXVzZSBpdCBkb2VzIG5vdCBleGlzdCBvbiBXaW5kb3dzLgoKCSogZGxscy91c2VyL3Rlc3RzL2VkaXQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUVTX0NPTUJPIGlzIG5vdCBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIGhlYWRlcnMuIFNvIGRlZmluZSBpdCBpZgoJbmVjZXNzYXJ5IHNvIHRoZSB0ZXN0IGNhbiBiZSBjb21waWxlZCBvbiBXaW5kb3dzLgoKCSogZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgT2xlIHRlc3RzIHJ1biBvbiBXaW5kb3dzIDk1LgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1ha2UgJ2V4aXN0JyBpbiB3Y21kIGhhbmRsZSBib3RoIGZpbGUgYW5kIGRpcmVjdG9yaWVzLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZWRldGVjdC5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaDoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGF1dG9tYXRpYyBkcml2ZSBkZXRlY3Rpb24gZm9yIHRoZSBjYXNlIHRoYXQgdGhlIHJvb3QgZGlyZWN0b3J5CglpcyBub3QgYWxyZWFkeSBtYXBwZWQuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vdGVzdHMvdGltZXIuYywgZGxscy93aW5tbS90aW1lLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgcGFyYW1ldGVyIGNoZWNraW5nIHRvIHRpbWVHZXREZXZDYXBzLgoJQWRkZWQgdGltZXIgdGVzdHMuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglSZXNwZWN0IHRoZSBmbGFncyBtZW1iZXIgb2YgdGhlIENIT09TRUZPTlQgc3RydWN0dXJlLCBhbmQgZG9uJ3QKCWF0dGVtcHQgdG8gcHJvY2VzcyBib2d1cyBzdHJpbmdzLgoKMjAwNS0wMi0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFZFUlNJT04sIGNvbmZpZ3VyZSwgQU5OT1VOQ0UsIENoYW5nZUxvZzogUmVsZWFzZSAyMDA1MDIxMS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNS0wMi0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vY29tcGlsaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLXVzZXIuc2dtbDoKCVNjb3R0IFJpdGNoaWUgPHNjb3R0QG9wZW4tdm90ZS5vcmc+CglVc2VyIEd1aWRlIENoYXB0ZXIgMiByZXdyaXRlLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL250ZGxsL250LmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb3RvY29sLmRlZiwKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3Rva2VuLmMsIHNlcnZlci90cmFjZS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbXBsZW1lbnQgQWRqdXN0VG9rZW5Qcml2aWxlZ2VzLCBEdXBsaWNhdGVUb2tlbkV4IGFuZAoJICBHZXRUb2tlbkluZm9ybWF0aW9uIChmb3IgdGhlIFRva2VuUHJpdmlsZWdlcyBjYXNlKS4KCS0gUmV0dXJuIFNUQVRVU19OT19UT0tFTiBmb3IgT3BlblRocmVhZFRva2VuIHdoZW4gdGhlcmUgaXMgbm8gdG9rZW4KCSAgc2V0IGZvciB0aGUgdGhyZWFkLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlZCBwcmludGluZyBvZiB0aHJlYWQgaWQgZm9yIEFkZFJlZiBhbmQgUmVsZWFzZSBiZWNhdXNlCglXSU5FREVCVUc9K3RpZCBnaXZlcyB0aGUgc2FtZSByZXN1bHQuCglHZW5lcmFsIGNvbnNpc3RlbmN5IGNsZWFudXAuCgoyMDA1LTAyLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHJvZmlsZS5jOgoJRml4ZWQgcHJvZmlsZSBjYWNoZSBmbHVzaGluZyB3aGVuIG5vIGZpbGVuYW1lIGlzIHNwZWNpZmllZCAocmVwb3J0ZWQKCWJ5IE1pa2UgSGVhcm4pLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZDguYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCBsaW5rIHdpdGggRGlyZWN0U291bmRDcmVhdGU4IGFzIHRoaXMgcHJldmVudHMgcnVubmluZyB3aXRoIG9sZGVyCgl2ZXJzaW9ucyBvZiBEaXJlY3RYLgoKCSogZGxscy9udGRsbC92ZXJzaW9uLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsdGVyIHRoZSB2ZXJzaW9uIGhldXJpc3RpY3MgYSBiaXQuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmM6CglPbGl2ZXIgU3RpZWJlciA8b2xpdmVyX3N0aWViZXJAeWFob28uY28udWs+CglBZGRlZCB2Q29udCBzdXBwb3J0LgoKCSogZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCVN5bmMgdG8gbGF0ZXN0IE9wZW5HTCBzcGVjaWZpY2F0aW9ucy4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTZXQgZnVsbCBVSSBtb2RlIGJ5IGRlZmF1bHQuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUHJpbnQgaW5mbyBhYm91dCBwcmltYXJ5IGJ1ZmZlciBmb3JtYXQuCgoJKiBkbGxzL2QzZDkvZGV2aWNlLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglDaGVjayB0aGF0IHBwWlN0ZW5jaWxTdXJmYWNlIGlzIG5vdCBudWxsLgoKCSogYWNsb2NhbC5tNCwgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzL2ltYWdlbGlzdC5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9tYWlsc2xvdC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmMsCgkgIGRsbHMvbHpleHBhbmQvdGVzdHMvbHpleHBhbmRfbWFpbi5jLCBkbGxzL21hcGkzMi90ZXN0cy9wcm9wLmMsCgkgIGRsbHMvbXNpL3RhYmxlLmMsIGRsbHMvbXNybGUzMi9tc3JsZTMyLmMsIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywKCSAgZGxscy9tc3ZjcnQvdGVzdHMvZW52aXJvbi5jLCBkbGxzL3F1YXJ0ei9hY213cmFwcGVyLmMsCgkgIGRsbHMvcnNhZW5oL3JzYWVuaC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvY2xpc3QuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZG9zL3BwZGV2LmMsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgcHJvZ3JhbXMvd2NtZC9Fbi5yYywgcHJvZ3JhbXMvd2NtZC9SdS5yYywgcHJvZ3JhbXMvd2NtZC9TaS5yYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBBbGV4IFdvb2RzIDx3aW5lLWRldmVsQGdpYmxldHMub3JnPgoJSGFuZGxlIGhvc3RfY3B1IG9mIHg4Nl82NCBsaWtlIG90aGVyIHg4NnMuCgoJKiBwcm9ncmFtcy9tc2lleGVjL01ha2VmaWxlLmluLCBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlYWQgYXJncyBmcm9tIHRoZSByZWdpc3RyeSB3aGVuIHBhc3NlZCB0aGUgL0AgZmxhZy4KCgkqIGRsbHMvbXNpL21zaS5jLCBpbmNsdWRlL21zaS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgaGVhZGVycywgYWRkIE1zaUdldFVzZXJJbmZvQSBzdHViIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9zZXJpYWx1aS9QdC5yYywgZGxscy9zZXR1cGFwaS9QdC5yYywgcHJvZ3JhbXMvY2xvY2svUHQucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L1B0LnJjLCBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL1B0LnJjLCBwcm9ncmFtcy9yZWdlZGl0L1B0LnJjLCBwcm9ncmFtcy9zdGFydC9QdC5yYywKCSAgcHJvZ3JhbXMvdmlldy9QdC5yYywgcHJvZ3JhbXMvd2NtZC9QdC5yYywgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUHQucmMsIHByb2dyYW1zL3dpbmVtaW5lL1B0LnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL1B0LnJjOgoJQW3pcmljbyBKb3PpIE1lbG8gPG1tb2RlbTAwQG5ldHZpc2FvLnB0PgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRyYW5zbGF0ZSB0aGUgV2luZSByZXNvdXJjZXMgdG8gUG9ydHVndWVzZS4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jLAoJICBkbGxzL3F1YXJ0ei93YXZlcGFyc2VyLmMsIGluY2x1ZGUvdXVpZHMuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIFdBVkUgcGFyc2VyLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgdG8gVW5pY29kZS4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTaWduZWQvdW5zaWduZWQgZml4IGFuZCBjb2RlIGNsZWFudXAuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJVXNlIGFsaWFzZXMgZm9yIGNhbGxzIHRvIG9yZGluYWxzLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBNc2lHZXRTaG9ydGN1dFRhcmdldEEvVy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgZm9yZ2V0IHRvIGFsbG9jYXRlIGludGVybmFsIE9QRU5GSUxFTkFNRVcgc3RydWN0dXJlIGZvciAxNi1iaXQKCUdldE9wZW5GaWxlTmFtZSwgaW5pdGlhbGl6ZSBpdCBieSB6ZXJvcyBmb3IgMTYvQSBjYXNlcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBSZWdpc3RlclVzZXIgYWN0aW9uLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBbHdheXMgYWxsb2NhdGUgYW4gZW1wdHkgYnVmZmVyLgoKMjAwNS0wMi0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbWNpLmMsCgkgIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpYXZpL2luZm8uYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aV9yZXMucmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmgsIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jLAoJICBkbGxzL3dpbm1tL21jaWNkYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsCgkgIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS9tZXNzYWdlMTYuYywKCSAgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbm1tLmMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywKCSAgZGxscy93aW5tbS93aW5tbV9yZXMucmMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsCgkgIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSByZXdyaXRlIE1DSSBpbnRlcmZhY2VzIGFzIFVuaWNvZGUgaW50ZXJmYWNlIChhcyBpdCBzaG91bGQgYmUpCgktIG1hZGUgc29tZSB3aW5tbSBBUElzIHJlbHkgb24gdGhlIFVuaWNvZGUgdmVyc2lvbiBmb3IgdGhlIGNvcmUKCSAgaW1wbGVtZW50YXRpb24gKGluc3RlYWQgb2YgQW5zaSBmbGF2b3IpCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYywgZGxscy9yc2FlbmgvdGVzdHMvcnNhZW5oLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBDUEdldFByb3ZQYXJhbSdzIFBQX0VOVU1DT05UQUlORVJTIHBhcmFtZXRlciB0eXBlLgoJQWRkZWQgY29ycmVzcG9uZGluZyB0ZXN0LgoJUmVtb3ZlZCBzb21lIHRhYnMgdGhhdCBzbGlwcGVkIGluIHdpdGggdGhlIGxhc3QgcGF0Y2guCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvZm9ybWF0LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgMCBsZW5ndGggYnVmZmVycyBpbiBNU0lfRm9ybWF0UmVjb3JkVy4KCVJlbW92ZSB1bnVzZWQgYnVmZmVyIGluIGRlZm9ybWF0X3N0cmluZy4KCgkqIGRsbHMvZGJnaGVscC9tc2MuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIGFuIEVSUiB0byBhIFdBUk4uCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVB1dCBnZW5lcmF0ZWQgaW1wb3J0IHRhYmxlIGNvZGUgaW50byAudGV4dCBzZWdtZW50LgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUXVvdGUgdGhlIHBhcmFtZXRlciBzdHJpbmdzIHBhc3NlZCB0byBNc2lJbnN0YWxsUHJvZHVjdC4KCS0gUmV0dXJuIHRoZSBlcnJvciBjb2RlIHRoYXQgdGhlIE1zaSogZnVuY3Rpb24gcmV0dXJuZWQgd2hlbiB3ZSBxdWl0LgoKCSogZGxscy9tc2kvY3VzdG9tLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEbyBub3QgdHJhY2sgdGhlIHRlbXAgZmlsZXMgZm9yIGN1c3RvbSBhY3Rpb25zIGJhc2VkIG9uIHRoZSBuYW1lIGZyb20KCXRoZSB0YWJsZSBiZWNhdXNlIHRoZW4gd2UgZ2V0IGNvbmZsaWN0cyBhbmQgZmlsZXMgbm90IHRyYWNrZWQgb3IKCWNsZWFuZWQgdXAuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpbGwgbmV3IHNvZnR3YXJlIGJ1ZmZlcnMgd2l0aCBzaWxlbmNlLgoKCSogZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJTWFrZSB0aGUgd2luIGRhdGEgcG9pbnRlciBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgdGhyZWFkIHRoYXQgb3ducyB0aGUKCXdpbmRvdy4KCgkqIHRvb2xzL2NvbmZpZy5ndWVzcywgdG9vbHMvY29uZmlnLnN1YjogVXBncmFkZSB0byB0aGUgbGF0ZXN0IHZlcnNpb24uCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggbXNpZXhlYydzIGNvbW1hbmQgbGluZSBwYXJzaW5nLgoJLSBEb24ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpeGVkIHNpemUgc3RydWN0dXJlLgoJLSBSZW1vdmUgYSBmZXcgbm9uLXRhYiBpbmRlbnRzLCBzaW5jZSB0aGUgcmVzdCBvZiB0aGUgZmlsZSB1c2VzIHRhYmJlZAoJICBpbmRlbnQuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBSZWdpc3RlckV4dGVuc2lvbkluZm8gYW5kIFJlZ2lzdGVyTUlNRUluZm8uCgoJKiBkbGxzL21zaS9jdXN0b20uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIGEgbnVtYmVyIGFzIGEgcGFyYW1ldGVyIGZvciBjdXN0b20gYWN0aW9uIDE5LgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzoKCUNvbnNpZGVyIGFueSBjaGFyYWN0ZXIgYWJvdmUgMHg3ZiB0byBiZSBpbnZhbGlkIGluIGEgRE9TIHNob3J0IG5hbWUuCgoJKiBkbGxzL2l0c3MvbW9uaWtlci5jOiBUb20gRm9nYWwgPHRmb2dhbEBjaXN1bml4LnVuaC5lZHU+CglTaW1wbGUgYWdncmVnYXRpb24gZml4LgoKCSogZGxscy9tc2kvY29uZC55OiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGxpbWl0IHByb3BlcnRpZXMgdG8gMjU2IGNoYXJhY3RlcnMgd2hlbiBldmFsdWF0aW5nIHRoZW0uCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIFR1cmtpc2ggKHRyKSBYMTEga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJLSBGaXggcXVvdGluZyBvZiAuY3BsIGZpbGVuYW1lLgoJLSBVc2UgImNwbG9wZW4iIHZlcmIgdG8gZXhlY3V0ZSAuY3BsIGZpbGVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2N1c3RvbS5jLCBkbGxzL21zaS9kaWFsb2cuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gYWRkIHN1cHBvcnQgZm9yIEVkaXQgYm94ZXMgaW4gTVNJIGRpYWxvZ3MKCS0gcnVuIHRoZSBtZXNzYWdlIGxvb3Agd2hlbiB3YWl0aW5nIGZvciB0aHJlYWRzIG9yIHByb2Nlc3NlcwoKCSogZGxscy9tc2kvbXNpLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIG1lbW9yeSBsZWFrIGluIE1zaUNvbmZpZ3VyZVByb2R1Y3RFeFcuCgoyMDA1LTAyLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL3dpbmVkM2RfZ2wuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBdm9pZCBjb21waWxlIHdhcm5pbmdzLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgbW9kdWxlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvcmVnc3ZyLmMsIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYywKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBDb0Rpc2Nvbm5lY3RPYmplY3QuCgktIENoYW5nZSBDb0xvY2tPYmplY3RFeHRlcm5hbCBzbyB0aGF0IGl0IGRvZXMgdGhlIGNvcnJlY3QgYWN0aW9uIG5vdwoJICBhbmQgZWxpbWluYXRlIGEgZmFpciBmZXcgbGluZXMgb2Ygbm93IHJlZHVuZGFudCBjb2RlLgoJLSBSZW5hbWUgT0xFMzJfRGxse1JlZ2lzdGVyLFVucmVnaXN0ZXJ9U2VydmVyIHRvCgkgIERsbHtSZWdpc3RlcixVbnJlZ2lzdGVyfVNlcnZlci4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgaWYgd2UndmUgYWxyZWFkeSBhZGRlZCB0aGUgcHRyIHRvIGlmYWNlIHR5cGVkZXNjIGJlZm9yZSBhZGRpbmcgYQoJbmV3IG9uZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgd2luZG93cy9zY3JvbGwuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglTY3JvbGxXaW5kb3dFeCB3aGVuIGNhbGxlZCB3aXRoIHRoZSBTV19FUkFTRSBmbGFnIGRvZXMgbm90IHNlbmQgYQoJV01fRVJBU0VCS0dORCBtZXNzYWdlLCBpdCBqdXN0IHNldHMgdGhlIGVyYXNlIGZsYWcuIFdpdGggc29tZSB0ZXN0cwoJdGhhdCBzaG93IHRoaXMgYmVoYXZpb3IuCgoJKiBkbGxzL21zaS9jdXN0b20uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgYSB0ZW1wIGZpbGUgZm9yIGVhY2ggZGxsIHNhdmVkIGZvciBjdXN0b20gYWN0aW9ucy4gVGhpcyBwcmV2ZW50cwoJbmFtZSBjb2xsaXNpb25zIGZyb20gY2F1c2luZyBjdXN0b20gYWN0aW9ucyB0byBmYWlsLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgbG9naWMgdG8gYmUgYWJsZSB0byByZXNvbHZlIHRoZSBTb3VyY2VEaXIgYmFzZWQgb24KCUN1cnJlbnRQYXRoLiBBbHNvIGFkZCBsb2dpYyB0byBnZXQgdGhlIHNvdXJjZSBsb2NhdGlvbnMgb2YgYSBmaWxlIGlmCglpdCBpcyBub3QgaW4gYSBjYWJpbmV0LgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgb2JqZWN0LXRvLXN0dWItbWFuYWdlciBtYXBwaW5nIHJ1bGUgdG8gcmVnaXN0ZXJfaWZzdHViLgoKCSogZGxscy9tc2kvY3JlYXRlLmMsIGRsbHMvbXNpL2Rpc3RpbmN0LmMsIGRsbHMvbXNpL2luc2VydC5jLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL29yZGVyLmMsCgkgIGRsbHMvbXNpL3NlbGVjdC5jLCBkbGxzL21zaS90YWJsZS5jLCBkbGxzL21zaS91cGRhdGUuYywKCSAgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBNc2lNb2RpZnlWaWV3IGFuZCBNc2lWaWV3R2V0Q29sdW1uSW5mbyB0byB1c2UgTVNJUkVDT1JEKiBub3QKCU1TSUhBTkRMRS4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcGFyc2VyLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBwYXJzZXIgdGVtcGxhdGUgYW5kIG1hZGUgQVZJU3BsaXR0ZXIgdXNlIGl0LgoKCSogZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgR2V0RmlsZVZlcnNpb25JbmZvU2l6ZUEgdGVzdHMgb24gV2luOTUuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJU3VwcG9ydCBzb21lIG1vcmUgYXR0cmlidXRlcyBmb3IgaW50ZXJmYWNlIHByb3BlcnRpZXMuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBEZWxldGVVcmxDYWNoZUNvbnRhaW5lcntBLFd9LAoJQ3JlYXRlQ2FjaGVDb250YWluZXJ7QSxXfSwgRmluZEZpcnN0VXJsQ2FjaGVDb250YWluZXJ7QSxXfSwKCUZpbmROZXh0VXJsQ2FjaGVDb250YWluZXJ7QSxXfS4KCUhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgc3VwcGxpZWQgYnVmZmVyIHNpemUgaXMgdG9vIHNtYWxsIGluCglJbnRlcm5ldFF1ZXJ5T3B0aW9uLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU3BsaXQgdXAgYXBhcnRtZW50IGNyZWF0aW9uIHNvIHRoYXQgdGhlIGxvbmcgY29kZSBwYXRocyB0aGF0IGRvbid0CgkgIG5lZWQgbG9ja2luZyBubyBsb25nZXIgaGF2ZSBsb2NraW5nLgoJLSBBZGQgc3BlY2lhbCBjYXNlcyBmb3IgdGhlIHRocmVhZHMgdGhhdCBqb2luIGFwYXJ0bWVudHMgYnV0IGNhbid0CgkgIGluY3JlYXNlIHRoZSByZWZjb3VudCBvZiB0aGUgYXBhcnRtZW50LgoJLSBGcmVlIFRMUyBzdG9yYWdlIG9uIHRocmVhZCBkZXN0cnVjdGlvbiAoaW5jbHVkaW5nIHJlbGVhc2luZyB0aGUKCSAgYXBhcnRtZW50IHRoZSB0aHJlYWQgaXMgaW4sIGlmIGFueSwgYW5kIHNvIG1ha2luZyBhbm90aGVyIHRlc3QKCSAgcGFzcykuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQWRkIFdpblhQIHRvIE9hQnVpbGRWZXJzaW9uLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVN1cHBvcnQgQVRUUl9SRUFET05MWSBmb3IgaW50ZXJmYWNlIHByb3BlcnRpZXMuCgoJKiBpbmNsdWRlL21zaWRlZnMuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBtc2lkYkN1c3RvbUFjdGlvbiBhbmQgbXNpZGJGZWF0dXJlQXR0cmlidXRlcyBlbnVtZXJhdGlvbnMuCgoJKiBkbGxzL21zaS9kaWFsb2cuYywgZGxscy9tc2kvbXNpcHJpdi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBmaXggdGhlIGRpYWxvZyBmb250CgktIGFsbG93IHdhaXRpbmcgb24gYSBoYW5kbGUgd2hpbGUgcnVubmluZyB0aGUgbWVzc2FnZSBsb29wCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmV3b3JrIFJQQyBkaXNwYXRjaCBsYXllciB0byBiZSBzaW1wbGVyIGFuZCBub3QgZ2V0IGNvbmZ1c2VkIGJ5CgkgIHNlcnZlci9jbGllbnQgZHVhbGl0eS4KCS0gTWFrZSB0aHJlYWRzIHNodXQgZG93biBhdCB0aGUgcmlnaHQgdGltZSBhbmQgbm90IGFjY2VzcyBmcmVlZCBtZW1vcnkKCSAgYWZ0ZXIgYXBhcnRtZW50IGRlc3RydWN0aW9uLgoJLSBSZW5hbWUgc3R1Yl9kaXNwYXRjaF90aHJlYWQgdG8gY2xpZW50X2Rpc3BhdGNoX3RocmVhZC4KCS0gQWRkIHNvbWUgbW9yZSB0cmFjaW5nCgktIENoZWNrIHJldHVybiB2YWx1ZSBvZiBXYWl0TmFtZWRQaXBlLgoJLSBDaGFuZ2UgbmFtZWQgcGlwZSB0aW1lb3V0cyB0byAwLjVzLCB3aGljaCBzaG91bGQgYmUgZW5vdWdoIGZvciBldmVuCgkgIHRoZSBzbG93ZXN0IG1hY2hpbmVzLgoKCSogc2VydmVyL25hbWVkX3BpcGUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJU3VwcG9ydCBXYWl0TmFtZWRQaXBlIHRpbWVvdXRzLgoKCSogZGxscy9tc2kvY29uZC55OiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJZGVudGlmaWVycyBldmFsdWF0ZSB0byB0cnVlIGlmIHRoZXkgYXJlIG5vbi1lbXB0eSwgcmVnYXJkbGVzcyBvZgoJdmFsdWUuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSAxMDAwMDAwMCB3aXRoIFRJQ0tTUEVSU0VDIHRvIG1ha2UgaXQgbW9yZSBvYnZpb3VzIHdoYXQgdGhlCgljb2RlIGlzIGRvaW5nLgoKCSogTWFrZS5ydWxlcy5pbjogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJTWFrZSB0bGIgZ2VuZXJhdGlvbiBmcm9tIGlkbCBmaWxlcyBkZXBlbmRlbnQgb24gd2lkbC4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IFNjb3R0IFJpdGNoaWUgPHNjb3R0QG9wZW4tdm90ZS5vcmc+CglSZW1vdmUgdHdvIGFuY2llbnQgRkFRIGVudHJpZXMgdGhhdCBkaWQgbW9yZSBoYXJtIHRoYW4gZ29vZC4KCVJlcGxhY2UgYSByZWZlcmVuY2UgdG8gd2luZS5jb25mIHdpdGggfi8ud2luZS9jb25maWcuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gT0xFIGF1dG9tYXRpb24gYnVpbGQgdmFsdWUgYXMgd2luMmsgYnkgZGVmYXVsdC4KCgkqIGRsbHMvbXNpLy5jdnNpZ25vcmUsIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9tc2kvbXNpLnJjLCBkbGxzL21zaS9tc2lfRW4ucmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgYW5kIGRvY3VtZW50IE1zaUxvYWRTdHJpbmcuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdGx5IGVuc3VyZSBwcm9wZXJ0aWVzIHNldCBmcm9tIHJlc29sdmVkIGRpcmVjdG9yeSBwYXRocyBhcmUKCWJhY2tzbGFzaCB0ZXJtaW5hdGVkLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmM6IENhcmxvcyBMb3phbm8gPGNsb3phbm9AYW5kYWdvLmNvbT4KCUZpeCByZWdyZXNzaW9uIGluIEZhbGxvdXQgZ2FtZS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RldmljZS5jOgoJQ2FybG9zIExvemFubyA8Y2xvemFub0BhbmRhZ28uY29tPgoJQ2hlY2sgdGhhdCBwc3RyZWFtIGlzIG5vdCBudWxsLgoKCSogZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQ29ycmVjdCBzcGVjIGVudHJ5IGZvciBGaW5kRmlyc3RVcmxDYWNoZUVudHJ5RXguCgoJKiB0b29scy93aWRsL3R5cGVsaWIuYywgdG9vbHMvd2lkbC90eXBlbGliX3N0cnVjdC5oLAoJICB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgVkFSSUFOVF9CT09MLgoJRml4IENVUlJFTkNZIGFsaWdubWVudC4KCUEgZnVuY3Rpb24gd2l0aCBhIFtyZXR2YWxdIHBhcmFtIGhhcyBhIGJpdCBzZXQgaW4gdGhlIEZLQ0NJQyBiaXRmaWVsZC4KCVR3byBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lIHNoYXJlIHRoZSBzYW1lIGlkLgoJVGhlIHBhcmFtIG5hbWVzIG9mIHByb3BwdXQgYW5kIHByb3BwdXRyZWYgZnVuY3Rpb25zIGRvbid0IGdvIGludG8gdGhlCgl0eXBlbGliLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJRXh0cmEgdHJhY2luZyBmb3IgU1BJX0dFVElDT05USVRMRVdSQVAuCgoJKiBkbGxzL21zaS9hcHBzZWFyY2guYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSWYgYSBmdWxsIHBhdGggaXNuJ3Qgc3BlY2lmaWVkLCBzZWFyY2ggYWNyb3NzIGFsbCBmaXhlZCBkcml2ZXMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYzoKCUtyaXMgTWFyc2ggPG1vb2dtYW5AZ21haWwuY29tPgoJRml4ZWQgd2luZG93IGhlaWdodCB0byBzaG93IGFsbCBkYXRhIHByb3Blcmx5LgoJQ2xlYW5lZCB1cCBkcml2ZXMtPmFkdmFuY2VkIGluZm9ybWF0aW9uIHZpc3VhbHMuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgbGFzdCBlcnJvciBmcm9tIE5UU1RBVFVTIHRvIGEgRE9TIGVycm9yIGNvZGUgaW4gV2FpdE5hbWVkUGlwZQoJYW5kIENvbm5lY3ROYW1lZFBpcGUuCgoJKiBzZXJ2ZXIvd2luZG93LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IG92ZXJ3cml0ZSBsYXN0IGJ5dGUgb2YgdGhlIHdpbmRvdyBzdHJ1Y3R1cmUgYXMgd2UgbWlnaHQgbm90IGhhdmUKCWFsbG9jYXRlZCB0aGUgbWVtb3J5IGZvciBpdCBpZiBleHRyYWJ5dGVzIHdhcyAwLgoKMjAwNS0wMi0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGczMS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzMxLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBHZXRPcGVuRmlsZU5hbWVXIHdpdGggYW4gb2xkIHN0eWxlIG9wZW4gZmlsZSBkaWFsb2cgd29yayB3aXRoIHRoZQoJb3JpZ2luYWwgT1BFTkZJTEVOQU1FVyBzdHJ1Y3R1cmUsIG1ha2luZyBzdXJlIHRoYXQgYWxsIGNoYW5nZXMgYXJlCglwYXNzZWQgYmFjayB0byB0aGUgY2FsbGVyLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglNb3JlIHZlcmJvc2l0eSBvZiBlcnJvcnMuCgoJKiBkbGxzL3VybG1vbi9zZWNfbWdyLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uaDoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IERsbENhblVubG9hZE5vdyByZWYgY291bnRpbmcuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvYXRvbS5jLCBkbGxzL2tlcm5lbC9hdG9tMTYuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZWQgMTYgYml0IGF0b20gc3VwcG9ydCB0byBkbGxzL2tlcm5lbC9hdG9tMTYuYy4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvaG9vay5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9ob29rLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oLAoJICB3aW5kb3dzL25vbmNsaWVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciB3aW5ldmVudCBob29rcy4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmM6CglQcm9wZXJseSBjb21wdXRlIHRoZSBjbGllbnQgYXJlYSB2YWxpZCByZWN0cyBhbmQgcGFzcyB0aGVtIHRvIHRoZQoJc2VydmVyIGluIHNldF93aW5kb3dfcG9zIHRvIGF2b2lkIGludmFsaWRhdGluZyBhcmVhcyB0aGF0IHJlbWFpbgoJdmFsaWQuCgoJKiBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaV9wcml2YXRlLmgsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBjYWIuYzoKCUVyaWMgS29obCA8ZXJpYy5rb2hsQHQtb25saW5lLmRlPgoJLSBJbXBsZW1lbnQgU2V0dXBEaUJ1aWxkQ2xhc3NJbmZvTGlzdEV4QSwKCSAgU2V0dXBEaUNsYXNzR3VpZHNGcm9tTmFtZUV4QSwgU2V0dXBEaUNyZWF0ZURldmljZUluZm9MaXN0RXhBIGFuZAoJICBTZXR1cERpT3BlbkNsYXNzUmVnS2V5RXhBIHVzaW5nIE11bHRpQnl0ZVRvVW5pY29kZS4KCS0gUmV0cmlldmUgT1MgdmVyc2lvbiB1cG9uIHByb2Nlc3MgYXR0YWNoLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC90eXBlbGliLmMsCgkgIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmgsIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvY2xhc3Mgc3VwcG9ydC4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBhbmQgdGVzdCBQYXRoSXNWYWxpZENoYXJ7QSxXfS4KCgkqIHNlcnZlci9uYW1lZF9waXBlLmM6CglGaXhlZCByZWZjb3VudCBoYW5kbGluZyAod2FpdGluZyBjbGllbnRzIG11c3Qgbm90IGluY3JlYXNlIHRoZQoJcmVmY291bnQgb2YgdGhlIHBpcGUpLgoJQ29udmVydGVkIGxpbmtlZCBsaXN0cyB0byB1c2UgdGhlIHN0YW5kYXJkIGZ1bmN0aW9ucy4KCVNtYWxsIGNsZWFudXBzLgoKCSogc2VydmVyL21haW4uYywgc2VydmVyL3JlcXVlc3QuYzoKCU1ha2Ugc3VyZSBsZWFrZWQgb2JqZWN0cyBhcmUgcHJpbnRlZCBldmVuIGlmIGEgZmlsZSBkZXNjcmlwdG9yIGlzCglzdGlsbCBvcGVuLgoKCSogc2VydmVyL2ZkLmM6IEZpeGVkIHBvdGVudGlhbCBjcmFzaCBpbiBmZF9kdW1wIGZ1bmN0aW9uLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBBc3luYyBjYWxsYmFjayBmdW5jdGlvbiBtdXN0IGJlIHN0ZGNhbGwuCgoJKiBkbGxzL21zaS9kaWFsb2cuYywgZGxscy9tc2kvbXNpcXVlcnkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gaW1wbGVtZW50IGNoZWNrYm94ZXMgaW4gZGlhbG9ncwoJLSB1c2UgVGV4dFN0eWxlIGVudW1lcmF0aW9uIGluc3RlYWQgb2YgbnVtYmVycwoJLSBmaXggTVNJX0l0ZXJhdGVSZWNvcmRzIHRvIHJldHVybiB0aGUgY29ycmVjdCBjb3VudAoKCSogZGxscy9tc2kvYXBwc2VhcmNoLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVNpbXBsaWZ5IEFwcFNlYXJjaCBlcnJvciBjaGVja2luZy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmM6IFBhdWwgdmFuIFNjaGF5Y2sgPHBvbGxla2VAZ21haWwuY29tPgoJQ2xlYW4gdXAgYWJvdXQgZGlhbG9nLiBSZW1vdmUgZ3JvdXBib3gsIHBvc2l0aW9uIGxvZ28gY29ycmVjdGx5LgoKMjAwNS0wMi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFBhc3MgdGhlIG9yaWdpbmFsIElJRCB0byBJTWFyc2hhbF9Vbm1hcnNoYWxJbnRlcmZhY2UgYW5kIHF1ZXJ5IGZvcgoJICB0aGUgcmVxdWVzdGVkIGludGVyZmFjZS4KCS0gVW5tYXJzaGFsaW5nIElJRF9OVUxMIG1lYW5zIHVzZSB0aGUgSUlEIHRoZSBpbnRlcmZhY2Ugd2FzIG9yaWdpbmFsbHkKCSAgbWFyc2hhbGVkIHdpdGguCgoJKiBkbGxzL3VzZXIvbGlzdGJveC5jLCBkbGxzL3VzZXIvdGVzdHMvbGlzdGJveC5jOgoJTGF1cmkgVHVsbWluIDxsYXVyaV9AdXQuZWU+CglBZGQgdGVzdCBmb3IgTEJfU0VMSVRFTVJBTkdFIGFuZCBtYWtlIGl0IHBhc3MuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IExhdXJpIFR1bG1pbiA8bGF1cmlfQHV0LmVlPgoJQWRkZWQgc29tZSBtb3JlIGRlZmluZXMuCgoJKiB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3R5cGVsaWIuYywgdG9vbHMvd2lkbC90eXBlbGliLmgsCgkgIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmgsIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciB0eXBlZGVmcy4KCgkqIGRsbHMvc2V0dXBhcGkvbWlzYy5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsCgkgIGluY2x1ZGUvc2V0dXBhcGkuaDoKCUVyaWMgS29obCA8ZXJpYy5rb2hsQHQtb25saW5lLmRlPgoJLSBJbXBsZW1lbnQgRG9lc1VzZXJIYXZlUHJpdmlsZWdlLCBFbmFibGVQcml2aWxlZ2UsIElzVXNlckFkbWluLAoJICBNdWx0aUJ5dGVUb1VuaWNvZGUgYW5kIFVuaWNvZGVUb011bHRpQnl0ZS4KCS0gU29ydCBwcm90b3R5cGVzIGluIHNldHVwYXBpLmggYW5kIGEgZmV3IGZ1bmN0aW9uIGluIHNwZWMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBEYXZpZCBNY0N1bGxvdWdoIDxkYXZpZG1Ac25hcGdlYXIuY29tPgoJSFRUUF9IdHRwU2VuZFJlcXVlc3RXIHdhcyBnZXR0aW5nIGludm9rZWQgd2l0aCBhIG51bGwgdmVyYiwgZGVmYXVsdCB0bwoJdGhlIEdFVCBtZXRob2QuCgoJKiBkbGxzL21zaS9kaWFsb2cuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jLAoJICBkbGxzL21zaS9wYWNrYWdlLmMsIGRsbHMvbXNpL3ByZXZpZXcuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtb3JlIGRpYWxvZyBjb250cm9scywgZG8gc29tZXRoaW5nIHdoZW4gdGhleSdyZSBjbGlja2VkIG9uLgoKCSogaW5jbHVkZS9tc2lkZWZzLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgbXNpZGJUZXh0U3R5bGVTdHlsZUJpdHMgZW51bWVyYXRpb24uCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBpZEZpcnN0Q2hpbGQgc3BlY2lmaWVkIGluIHRoZSBNRElDbGllbnQncyBDTElFTlRDUkVBVEVTVFJVQ1QKCXdoZW4gY3JlYXRpbmcgTURJIGNoaWxkcmVuLiBBZGQgYSB0ZXN0IGNhc2UgZm9yIHRoZSBkZXNpcmVkCgliZWhhdmlvdXIuCgoJKiBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9wcml2YXRlLmgsCgkgIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0dHJhY2suYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IERsbENhblVubG9hZCByZWYgY291bnRpbmcuCgoJKiBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywKCSAgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvZ3JhcGguYywKCSAgZGxscy9kbWltZS9seXJpY3N0cmFjay5jLCBkbGxzL2RtaW1lL21hcmtlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGFyYW1jb250cm9sdHJhY2suYywgZGxscy9kbWltZS9wYXR0ZXJudHJhY2suYywKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS9zZWdtZW50c3RhdGUuYywgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywKCSAgZGxscy9kbWltZS9zZXF0cmFjay5jLCBkbGxzL2RtaW1lL3N5c2V4dHJhY2suYywKCSAgZGxscy9kbWltZS90ZW1wb3RyYWNrLmMsIGRsbHMvZG1pbWUvdGltZXNpZ3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdG9vbC5jLCBkbGxzL2RtaW1lL3dhdmV0cmFjay5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgRGxsQ2FuVW5sb2FkTm93IHJlZiBjb3VudGluZy4KCgkqIGRsbHMvbXNpL2Zvcm1hdC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW51cCBwcm9jZXNzaW5nIGEgYml0IG1vcmUuCglBbGxvdyBmb3IgbmVzdGVkIGtleXMgdG8gd29yayBwcm9wZXJseS4KCgkqIGRsbHMvbXNpL2FwcHNlYXJjaC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgY29weSBhbmQgcGFzdGUgZXJyb3IsIGNoZWNrIGZvciBhIG51bGwgdmFsdWUgYW5kIGRpc2NhcmQKCXVubmVlZGVkIGVycm9ycy4KCgkqIGRsbHMvbXNpL2NvbmQueTogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTXNpRXZhbHVhdGVDb25kaXRpb24gcmV0dXJucyBhbiBlcnJvciB3aGVuIHBhc3NlZCBOVUxMIGFzIGEKCWNvbmRpdGlvbi4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRmluaXNoIHVwIHRoZSBmcmFtZXdvcmsgYnkgc3R1YmJpbmcgb3V0IGFsbCB0aGUgcmVtYWluaW5nIFN0YW5kYXJkCglhY3Rpb25zLgoJQSBmaXggdG8gZGVmb3JtYXRfc3RyaW5nIHNvIGl0IG9ubHkgcmV0dXJucyBhIG51bGwgcmV0dXJuIGlmIHlvdQoJcHJvdmlkZWQgYSBudWxsIGJ1ZmZlci4KCjIwMDUtMDItMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmM6CglSZW1vdmVkIHRoZSBubyBsb25nZXIgdXNlZCBXSU5fU2V0RXhTdHlsZSBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvdXNlci9mb2N1cy5jLCBkbGxzL3VzZXIvbWVudS5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy93aW5wb3MuYzoKCVN0b3JlIHRoZSAibWFuYWdlZCIgZmxhZyBhcyBhIHdpbmRvdyBwcm9wZXJ0eSBpbnN0ZWFkIG9mIHRoZQoJV2luZS1zcGVjaWZpYyBXU19FWF9NQU5BR0VEIHN0eWxlIGJpdC4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLAoJICBpbmNsdWRlL3dpbmluZXQuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJLSBTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgRnRwR2V0RmlsZVNpemUsIEZ0cENvbW1hbmR7QSxXfSwKCSAgSHR0cFNlbmRSZXF1ZXN0RXhXLCBJbnRlcm5ldEdldExhc3RSZXNwb25zZUluZm9XLAoJICBJbnRlcm5ldENvbmZpcm1ab25lQ3Jvc3Npbmd7QSxXfSwgSW50ZXJuZXREaWFse0EsV30sCgkgIEludGVybmV0R29PbmxpbmV7QSxXfSwgSW50ZXJuZXRIYW5nVXAsIENyZWF0ZU1ENVNTT0hhc2gsCgkgIEludGVybmV0Q2xlYXJBbGxQZXJTaXRlQ29va2llRGVjaXNpb25zLAoJICBJbnRlcm5ldEVudW1QZXJTaXRlQ29va2llRGVjaXNpb257QSxXfSwgSW50ZXJuZXRHZXRDb29raWVFeHtBLFd9LAoJICBJbnRlcm5ldEdldFBlclNpdGVDb29raWVEZWNpc2lvbntBLFd9LAoJICBJbnRlcm5ldFNldFBlclNpdGVDb29raWVEZWNpc2lvbntBLFd9LCBJbnRlcm5ldFNldENvb2tpZUV4e0EsV30sCgkgIFJlc3VtZVN1c3BlbmRlZERvd25sb2FkLCBSZXRyaWV2ZVVybENhY2hlRW50cnlGaWxlVywKCSAgVW5sb2NrVXJsQ2FjaGVFbnRyeUZpbGVXLCB7Q3JlYXRlLERlbGV0ZX1VcmxDYWNoZUVudHJ5VywKCSAgQ29tbWl0VXJsQ2FjaGVFbnRyeVcsIFJldHJpZXZlVXJsQ2FjaGVFbnRyeVN0cmVhbVcsCgkgIEZpbmRDbG9zZVVybENhY2hlLCBGaW5kRmlyc3RVcmxDYWNoZUVudHJ5RXh7QSxXfSwKCSAgRmluZEZpcnN0VXJsQ2FjaGVHcm91cCwgRmluZE5leHRVcmxDYWNoZUVudHJ5eyxFeH17QSxXfSwKCSAgRmluZE5leHRVcmxDYWNoZUdyb3VwLCBTZXRVcmxDYWNoZUVudHJ5R3JvdXB7QSxXfSwKCSAge0dldCxTZXR9VXJsQ2FjaGVHcm91cEF0dHJpYnV0ZXtBLFd9LCBTZXRVcmxDYWNoZUNvbmZpZ0luZm97QSxXfS4KCS0gU3BlYyBmaWxlIHN0dWJzIGZvciBuZXcgdW5kb2N1bWVudGVkIGZ1bmN0aW9ucwoJICBGb3JjZU5leHVzTG9va3VweyxFeFd9LCBGdHB7R2V0LFB1dH1GaWxlRXgsIEh0dHBDaGVja0RhdkNvbXBsaWFuY2UsCgkgIEludGVybmV0QWxnSWRUb1N0cmluZ3tBLFd9LCBJbnRlcm5ldEZvcnRlenphQ29tbWFuZCwKCSAgSW50ZXJuZXRHZXRDZXJ0QnlVUkxBLCBJbnRlcm5ldFF1ZXJ5Rm9ydGV6emFTdGF0dXMsCgkgIEludGVybmV0U2VjdXJpdHlQcm90b2NvbFRvU3RyaW5ne0EsV30sIEludGVybmV0U2V0RGlhbFN0YXRle0EsV30sCgkgIEludGVybmV0U2hvd1NlY3VyaXR5SW5mb0J5VVJMe0EsV30sIElzVXJsQ2FjaGVFbnRyeUV4cGlyZWR7QSxXfSwKCSAgUHJpdmFjeXtHZXQsU2V0fVpvbmVQcmVmZXJlbmNlVywgUmVnaXN0ZXJVcmxDYWNoZU5vdGlmaWNhdGlvbiwKCSAgVXJsWm9uZXNEZXRhY2guCgktIFVzZSBtZW1jcHkgaW5zdGVhZCBvZiBzdHJuY3B5IGluIEludGVybmV0R2V0TGFzdFJlc3BvbnNlSW5mb0EuCgktIEFkZCBhbmQgaW1wcm92ZSBzb21lIHRyYWNlcy4KCS0gRml4IG15IG93biBjb2Rpbmcgc3R5bGUgaW4gSW50ZXJuZXRUaW1lVG9TeXN0ZW1UaW1lVy4KCS0gRml4IGEgY291cGxlIG9mIHNpZ25lZG5lc3Mgd2FybmluZ3MuCgoJKiB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LAoJICB0b29scy93aWRsL3R5cGVsaWJfc3RydWN0LmgsIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmgsCgkgIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBkaXNwaW50ZXJmYWNlcyAoc2xpZ2h0bHkgaGFja2VkIGJlY2F1c2Ugd2UgZm9yY2UgdGhlCglpbXBvcnQgb2Ygc3Rkb2xlMi50bGIpLgoJQWRkIHByb3BwdXRyZWYgYXR0cmlidXRlLgoKCSogZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oLAoJICBkbGxzL3VzZXIvZGRlL21pc2MuYywgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgQ0JSX0JMT0NLIGluIEVYRUNVVEUgYW5kIEFEVklTRSBEREUgdHJhbnNhY3Rpb25zLgoKCSogZGxscy9kc291bmQvZHNvdW5kLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggcHJpbWFyeSBidWZmZXIgbWVtb3J5IGxlYWsuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6IEp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJLSBTUElfR0VUV09SS0FSRUE6IFJlYWQgd29yayBhcmVhIGluZm9ybWF0aW9uIGZyb20gc3lzdGVtIG1ldHJpY3MKCSAgaW5pdGlhbGx5IG9ubHkgYW5kIG5vdCBmcm9tIGEgV0lORSBzcGVjaWZpYyByZWdpc3RyeSBlbnRyeS4KCS0gU1BJX1NFVFdPUktBUkVBOiBEb24ndCBzYXZlIHdvcmsgYXJlYSBpbmZvcm1hdGlvbiB0byByZWdpc3RyeS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwgZGxscy9tc2kvY3VzdG9tLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29udGludWVkIHdvcmsgdG8gc2ltcGxpZnkgdGhlIFByb2Nlc3NBY3Rpb24gY2FsbCwgYWxzbyBzcGxpdCBpdCBpbnRvCglhIFByb2Nlc3NBY3Rpb24gYW5kIFByb2Nlc3NVSUFjdGlvbiBmb3IgZnV0dXJlIGRpYWxvZyBib3ggd29yay4KCUFsc28gZml4IGEgYnVnIGluIGRlZm9ybWF0X3N0cmluZyB3aGVyZSBpIHdhcyBub3QgZnJlZWluZyB0aGUgY3JlYXRlZAoJcmVjb3JkLgoKCSogTWFrZS5ydWxlcy5pbjogRG9uJ3QgY2xlYW4gYWxsIHRsYiBmaWxlcywgb25seSB0aGUgb25lcyB3ZSBnZW5lcmF0ZWQuCgoJKiBkbGxzL2R4ZGlhZ24vY29udGFpbmVyLmMsIGRsbHMvZHhkaWFnbi9keGRpYWdfbWFpbi5jLAoJICBkbGxzL2R4ZGlhZ24vZHhkaWFnX3ByaXZhdGUuaCwgZGxscy9keGRpYWduL3Byb3ZpZGVyLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBEbGxDYW5VbmxvYWROb3cgcmVmIGNvdW50aW5nLgoKCSogZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9hY3Rpb24uaCwKCSAgZGxscy9tc2kvYXBwc2VhcmNoLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglQYXJ0aWFsbHkgaW1wbGVtZW50IEFwcFNlYXJjaCBhY3Rpb24uCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovYWNtd3JhcHBlci5jLAoJICBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIEFDTSBXcmFwcGVyIGZpbHRlci4KCUNsZWFuZWQgdXAgQVZJRGVjLgoKCSogZGxscy9kc3dhdmUvZHN3YXZlLmMsIGRsbHMvZHN3YXZlL2Rzd2F2ZV9tYWluLmMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZV9wcml2YXRlLmg6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBEbGxDYW5VbmxvYWROb3cgcmVmIGNvdW50aW5nLgoKCSogZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CglGaXggYSBicm9rZW4gbGluay4KCgkqIGRsbHMvbXNpL21zaS5zcGVjLCBkbGxzL21zaS9zdW1pbmZvLmMsIGluY2x1ZGUvbXNpLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBtb3JlIHN1bWluZm8gc3R1YnMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5oLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGNvZGUgZm9yIGRlc3Ryb3lpbmcgdGhlIHRocmVhZC1sb2NhbCBzdG9yYWdlIGRhdGEsIGJ1dCBkb24ndCB1c2UKCSAgaXQgeWV0LgoJLSBEb24ndCByZWxlYXNlIGFwYXJ0bWVudCBvbiBjaGFuZ2luZyBtb2RlcyBiZWNhdXNlIHdlIGRpZG4ndCBhZGQgYQoJICByZWZlcmVuY2UgYW55d2hlcmUuCgktIFF1aWV0ZW4gdGhlIFJQQ19FX0RJU0NPTk5FQ1RFRCBlcnJvciBtZXNzYWdlIGFzIGl0IGlzIGFuIGV4cGVjdGVkCgkgIHJldHVybiBjb2RlLgoJLSBUcmVhdCBJSURfTlVMTCB0aGUgc2FtZSBhcyBJSURfSVVua25vd24uCgktIE1ha2UgdGVzdHMgY29tcGlsZSBvbiBXaW45NSBhZ2Fpbi4KCS0gRml4IGNvcHkrcGFzdGUgZXJyb3Igd2hlcmUgdGhlIHRlc3QgZmFpbHVyZSBzaG91bGQgYmUgZnJvbSB0aGUKCSAgQ29Vbm1hcnNoYWxJbnRlcmZhY2UgZnVuY3Rpb24uCgoyMDA1LTAxLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvZm9ybWF0LmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBIHJld29ya2luZyBvZiBmb3JtYXQuYyB0byByZW1vdmUgdGhlIHJlY3Vyc2lvbiwgY2xlYW4gdGhpbmdzIHVwIGFuZAoJc3RhYmlsaXplIGJlaGF2aW9yIHRvIG1hdGNoIHdpbmRvd3MuCgoJKiBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsIGRsbHMvZG1zeW50aC9kbXN5bnRoX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN5bnRoL3N5bnRoLmMsIGRsbHMvZG1zeW50aC9zeW50aHNpbmsuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUHJvcGVybHkgaW1wbGVtZW50IERsbENhblVubG9hZE5vdyByZWYgY291bnRpbmcuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmM6CglXSU5fTGlzdFBhcmVudHMgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIGV4cG9ydGVkLCBtYWtlIGl0IHN0YXRpYy4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsIGRsbHMveDExZHJ2L21vdXNlLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglPbmx5IGNyZWF0ZSBhbiBYIHdpbmRvdyBmb3IgdG9wLWxldmVsIHdpbmRvd3MsIG5vdCBmb3IgY2hpbGQgd2luZG93cy4KCUdldCByaWQgb2YgdGhlIFggY2xpZW50IHdpbmRvdyB0b28sIGl0J3Mgbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmM6IFNpbGVuY2UgYSBub2lzeSBGSVhNRS4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRHluYW1pY2FsbHkgYWxsb2NhdGUgdGhlIHR5cGUgZGF0YSBzdG9yYWdlLgoJU3BsaXQgdGhlIGZ1bmN0aW9uIGFuZCB2YXJpYWJsZSB0eXBlIGRhdGEgaW50byB0d28gLSB0aGlzIHdpbGwgYmUKCW5lZWRlZCBmb3IgZGlzcGludGVyZmFjZXMuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jLAoJICBkbGxzL3F1YXJ0ei90cmFuc2Zvcm0uYywgZGxscy9xdWFydHovdHJhbnNmb3JtLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCB0cmFuc2Zvcm0gZmlsdGVyIHRlbXBsYXRlIGFuZCBtYWRlIEFWSURlYyB1c2UgaXQuCglGaXhlZCBtZW1vcnkgbGVhayBpbiByZWdpc3Rlcl9maWx0ZXJzIGZ1bmN0aW9uLgoKCSogZGxscy9rZXJuZWwvY2hhbmdlLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIFJlYWREaXJlY3RvcnlDaGFuZ2VzVy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRWxpbWluYXRlIHRoZSBnaWFudCBpZi4uIGVsc2UgaWYgYmxvY2sgZnJvbSBBQ1RJT05fUHJvY2Vzc0FjdGlvbiBpbgoJZmF2b3Igb2YgYSB0YWJsZSBvZiBoYW5kbGVycy4KCVJldHVybiBjb2RlIG9mIHRoZSBpbnN0YWxsIHNob3VsZCBub3QgZGVwZW5kIG9uIHRoZSByZXR1cm4gY29kZSBvZiB0aGUKCWZpbmFsIGFjdGlvbi4KCVVwZGF0ZSBjb21wb25lbnQgaW5zdGFsbGVkIHN0YXRlcyBhcyB0aGV5IGFyZSBpbnN0YWxsZWQgc28gdGhhdAoJY29uZGl0aW9ucyBiYXNlZCBvbiBjb21wb25lbnQgc3RhdGVzIGFyZSBhdCBsZWFzdCBhIGxpdHRsZSBtb3JlCgljb3JyZWN0LgoJQWRkIGljb24gYW5kIGFyZ3VtZW50IHdoZW4gcmVnZXN0ZXJpbmcgY2xzaWRzLgoJQWRkIGEgc3R1YiBmb3IgUmVzb2x2ZVNvdXJjZSBiZWNhdXNlIHdlIGRvIHRoYXQgd29yayBqdXN0IG5vdCBpbgoJUmVzb2x2ZVNvdXJjZSBsaWtlIHdlIHNob3VsZC4KCVdoZW4gcXVlcmluZyBhIENvbXBvbmVudCBzdGF0ZSByZXR1cm4gdGhlIGNvcnJlY3Qgc3RhdGUuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2luZm8uYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJU2hvdyB3aW5kb3cgb3duZXIgdGhyZWFkIGluIHdpbmVkYmcuCgoJKiBkbGxzL2RiZ2hlbHAvc3ltYm9sLmMsIGluY2x1ZGUvZGJnaGVscC5oLCBwcm9ncmFtcy93aW5lZGJnL2JyZWFrLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvZGVidWcubCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYywgcHJvZ3JhbXMvd2luZWRiZy9zb3VyY2UuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jLCBwcm9ncmFtcy93aW5lZGJnL3N5bWJvbC5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3R5cGVzLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUNsZWFudXAgb2YgZGJnaGVscC5oIChhbmQgYSBjb3VwbGUgb2YgZGVmaW5pdGlvbiBmaXhlcykuIFRoZQoJZGlzcGxhY2VtZW50cyAoaW4gbW9zdCBvZiB0aGUgZnVuY3Rpb25zKSBhcmUgbm90IG9wdGlvbmFsLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlIG1lc3NhZ2UgdGVsbGluZyB1c2VycyB0byBjb3B5IG5hdGl2ZSBzdGRvbGUzMi50bGIgb3ZlciBhcyB3ZQoJbm93IHByb3ZpZGUgaXQuCglCZXR0ZXIgdHJhY2UgaW4gTG9hZFR5cGVMaWIuCglDaGFuZ2UgZGVidWcgbWVzc2FnZXMgdHlwZSB0byByZWZsZWN0IHdlIHByb3ZpZGUgc3Rkb2xlMzIudGxiLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc2lkZWZzLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgdGhlIG1zaWRlZnMuaCBoZWFkZXIuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sLCBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sOgoJVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJUmVtb3ZlIG91dGRhdGVkIGluZm9ybWF0aW9uIGZyb20gdGhlIGludHJvZHVjdGlvbiBwYWdlIGFuZCB0aGUgRkFRLgoKCSogaW5jbHVkZS9keGRpYWcuaDogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglDb3JyZWN0IGVycm9ycyBpbiB0aGUgbWFjcm9zIGZvciB0d28gRHhEaWFnIG1ldGhvZCBjYWxscy4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsX2V4dC5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUFkZCBzdHVicyBmb3Igd2dsU3dhcEludGVydmFsRVhUICYgd2dsR2V0U3dhcEludGVydmFsRVhULgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzoKCVJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglTYWZlQXJyYXlEZXN0cm95KCkgcmV0dXJucyBzdWNjZXNzIHdoZW4gY2FsbGVkIHdpdGggYSBOVUxMCglwb2ludGVyLiBBZGRlZCB0byB0aGUgdGVzdCBjYXNlcy4KCgkqIGRsbHMvbXNpL3JlY29yZC5jLCBkbGxzL21zaS90ZXN0cy9yZWNvcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTZXR0aW5nIGEgcmVjb3JkIHRvIGFuIGVtcHR5IHN0cmluZyBpcyB0aGUgc2FtZSBhcyBtYWtpbmcgaXQgbnVsbC4KCgkqIHdpbmRvd3MvZGNlLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXBsYWNlIGEgRFBSSU5URiB3aXRoIFRSQUNFLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNoZWNrIHRoYXQgdGhlcmUgYXJlIHNvbWUgbWV0aG9kcyB0byBpdGVyYXRlIHRocm91Z2ggYmVmb3JlIGl0ZXJhdGluZwoJdGhyb3VnaCB0aGVtLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIG5ldyB0ZXN0CgktIGNoYW5nZWQgdGVzdCB0byByZWZsZWN0IHdpbmRvd3MgcmVzdWx0cwoKCSogZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB0ZXN0IHRoYXQgZmFpbHMgb24gV2luOTggYW5kIGlzIG5vdCB1c2VmdWwuCgoJKiBkbGxzL2RiZ2hlbHAvc3RhYnMuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglWYXJpb3VzIGZpeGVzIGZvciBDKysgY2xhc3MgcGFyc2luZyAobmVzdGluZywgdGVtcGxhdGVzKSAoZnJvbSB0ZXN0CgljYXNlcyBwcm92aWRlZCBieSBNaWNoYWVsIExpbikuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYywgZGxscy9yc2FlbmgvdGVzdHMvcnNhZW5oLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglNb3ZlZCBQS0NTMSAjMiB1bi0vcGFkZGluZyBmcm9tIEltcG9ydC0vRXhwb3J0S2V5IHRvIGhlbHBlcgoJZnVuY3Rpb25zLgoJU3VwcG9ydCBSU0EgZW4tL2RlY3J5cHRpb24gdmlhIENQRW5jcnlwdCBhbmQgQ1BEZWNyeXB0LgoJQWRkZWQgdGVzdCBjYXNlIGZvciBSU0EgZW4tL2RlY3J5cHRpb24uCgoyMDA1LTAxLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBpbmNsdWRlL3dpbi5oOgoJVXNlIGFuIFggY29udGV4dCB0byBhc3NvY2lhdGVkIHRoZSB4MTFkcnYgcHJpdmF0ZSB3aW5kb3cgZGF0YSB0byBhCgl3aW5kb3cgaGFuZGxlIGluc3RlYWQgb2YgYWNjZXNzaW5nIHRoZSBXTkQgc3RydWN0dXJlIGRpcmVjdGx5LgoKCSogZGxscy91c2VyL3BhaW50aW5nLmM6CglGaXhlZCBidWcgdGhhdCBjYXVzZWQgdGhlIHdob2xlIHdpbmRvdyB0byBiZSByZXBhaW50ZWQgYnkgUmVkcmF3V2luZG93Cgl3aGVuIHRoZSBwYXNzZWQgcmVnaW9uIHdhcyBlbXB0eS4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgaW5jbHVkZS9kc2RyaXZlci5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBzdHJ1Y3R1cmUgbWVtYmVyIG5hbWUgdG8gbWF0Y2ggd2luZG93cyBoZWFkZXJzIGFuZCBmaXggdXAgYWxsCgl1c2VzLgoJTmFtZWxlc3Mgc3RydWN0IGZpeCBmb3IgZHNvdW5kL3Byb3BzZXQuYyB0byBjb21waWxlIG9uIGJvdGggd2luZG93cwoJYW5kIHdpbmUuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVsZWFzZSB0aGUgY2xpZW50IHNlY3VyaXR5IG9iamVjdHMgd2hlbiBubyBsb25nZXIgbmVlZGVkIChyZXBvcnRlZCBieQoJTWlrZSBNY0Nvcm1hY2spLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8d2luZS1wYXRjaGVzQHJlYWN0c29mdC5jb20+CglXaGVuIGEgdG9vbGJhciBkb2Vzbid0IGhhdmUgdGhlIFRCU1RZTEVfRkxBVCBzdHlsZSByZWRyYXdpbmcgdGhlCglidXR0b25zIHdoZW4gbW92aW5nIHRoZSBtb3VzZSBpcyBub3QgbmVjZXNzYXJ5LgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc3Rkb2xlMzIudGxiLy5jdnNpZ25vcmUsIGRsbHMvc3Rkb2xlMzIudGxiL01ha2VmaWxlLmluLAoJICBkbGxzL3N0ZG9sZTMyLnRsYi9yc3JjLnJjLCBkbGxzL3N0ZG9sZTMyLnRsYi9zdGRfb2xlX3YxLmlkbCwKCSAgZGxscy9zdGRvbGUzMi50bGIvc3Rkb2xlMzIudGxiLnNwZWM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3Rkb2xlMzIudGxiLgoKCSogZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOS9xdWVyeS5jLCBkbGxzL2QzZDkvdGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvdmVydGV4ZGVjbGFyYXRpb24uYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBhZGQgdmVydGV4IERlY2xhcmF0aW9uIHN1cHBvcnQgKHVzaW5nIHdpbmVkM2QpCgktIG1pbmltYWwgaW1wbCBmb3IgU2V0UmVuZGVyVGFyZ2V0IGFuZCBDcmVhdGVRdWVyeSAobmVlZGVkIHRvIGdldAoJICBzb21lIHNhbXBsZXMgd29ya2luZykKCS0gcmVtb3ZlIG5vIGxvbmdlciBuZWVkZWQgI3VuZGVmIEdMX1ZFUlNJT05fMV80CgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMva2VybmVsL3Rlc3RzL2NvbW0uYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvY29uc29sZS5jLCBkbGxzL2x6ZXhwYW5kL3Rlc3RzL2x6ZXhwYW5kX21haW4uYywKCSAgbG9hZGVyL3ByZWxvYWRlci5jOgoJUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJY2hhciAtPiBjb25zdCBjaGFyIGZpeGVzLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OgoJQXZvaWQgYXNzZXJ0aW9uIGZhaWx1cmUgd2hlbiBsb2FkaW5nIGFuIGVtcHR5IGRhdGEgZmlsZS4KCgkqIHRvb2xzL3dpZGwvdHlwZWxpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU3RydWN0cyB3aXRoIHB0cnMgYXJlIGFsc28gVlRfVVNFUkRFRklORUQuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvZGlhbG9nLmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYywgZGxscy9tc2kvcHJldmlldy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaVByZXZpZXdEaWFsb2cuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3Rlc3RzL21vbmlrZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTW9yZSB0ZXN0cy4KCS0gQ2hhbmdlIHJldHVybiBjb2RlIG9mIENvR2V0UFNDbHNpZCB0byBtYXRjaCB0ZXN0IHJlc3VsdC4KCS0gRG8gYSBzbGlnaHQgaGFjayB0byBtYWtlIElSZW1Vbmtub3duIHByb3hpZXMgYmUgYWRkZWQgYWZ0ZXIgdGhlCgkgIHByb3h5IHRoYXQgdXNlcyB0aGVtIHRvIHN0b3AgdGhlbSBiZWluZyB1c2VkIGFmdGVyIHRoZXkgYXJlCgkgIGRlc3Ryb3llZC4KCS0gRml4IG11bHRpcGxlIGxvY2FsIHNlcnZlciBjb25uZWN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgaW5jbHVkZS93aW50ZXJubC5oOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJSW4gTnRRdWVyeVN5c3RlbUluZm9ybWF0aW9uLCBoYW5kbGUgcmVxdWVzdCBmb3IgaW5mb3JtYXRpb24gY2xhc3MgMSwKCW5vdyBuYW1lZCBTeXN0ZW1DcHVJbmZvcm1hdGlvbi4gUmV0dXJuIHNvbWUgZHVtbXkgZGF0YSBmb3Igbm93LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2Vuc2FwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3NlbnNhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2Vuc2FwaS9zZW5zYXBpLmMsCgkgIGRsbHMvc2Vuc2FwaS9zZW5zYXBpLnNwZWMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2Vuc2FwaS5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbkBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBzdHViIGRsbCBmb3IgdGhlIFN5c3RlbSBFdmVudCBOb3RpZmljYXRpb24gU2VydmljZS4KCgkqIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgYSBuZXcgbWFuIHBhZ2UgZm9yIHdpbmVnY2MuCgoJKiBkbGxzL3dpbmVkM2QvdmVydGV4ZGVjbGFyYXRpb24uYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBjb252ZXJ0IEQzRDggVmVydGV4RGVjbCB0byBEM0Q5IGZvcm1hdCAoRDNEVkVSVEVYRUxFTUVOVDkgdmVjdG9yKQoJICB3aGlsZSBwYXJzaW5nCgktIGRpc3BsYXkgcmVzdWx0IG9uIHRyYWNlcwoKCSogZGxscy93aW5lcHMvdHJ1ZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGZldyBtaXNzaW5nIFJlZ0Nsb3NlS2V5IGNhbGxzLgoKCSogZGxscy91c2VyL2xzdHIuYzogVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUZpeCBidWcgaW4gQ2hhclByZXZFeEEoKS4KCgkqIGRsbHMvcnNhZW5oL3Rlc3RzL3JzYWVuaC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhIHRlc3QgY2FzZSBmb3IgaGFzaGluZyB3aXRoIHNjaGFubmVsIG1hYyBrZXlzLgoKCSogZGxscy9rZXJuZWwvY3B1LmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUZpbGwgaW4gdGhlIGluZm9ybWF0aW9uIGluIFZlbmRvcklkZW50aWZpZXIgYW5kIG1ha2UgYSBiZXR0ZXIgZWZmb3J0CglhdCBmaWxsaW5nIGluIElkZW50aWZpZXIgaW4gdGhlIHJlZ2lzdHJ5IGtleS4KCgkqIGluY2x1ZGUvbXNpcXVlcnkuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wbGVtZW50IENvU2V0UHJveHlCbGFua2V0LCBDb1F1ZXJ5UHJveHlCbGFua2V0IGFuZCBDb0NvcHlQcm94eS4KCS0gVXBkYXRlIHRvZG8gbGlzdC4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmgsIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGhhbmRsaW5nIG9mIEVPRiBmb3IgdGhlICclYycgYW5kICclQycgY2FzZXMgaW4gc2NhbmYoKS4KCUFkZCBjb25mb3JtYW5jZSB0ZXN0cyB0byB2ZXJpZnkgdGhlIGJlaGF2aW9yIG9mICclYycuCglJbXByb3ZlIHNvbWUgb2YgdGhlIHRlc3QncyBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCVNlbmQgYSBzY2FuY29kZSB0aHJvdWdoIGZvciB0aGUgNSBrZXkgd2hlbiBudW1sb2NrIGlzbid0IG9uLgoKMjAwNS0wMS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzoKCURvbid0IG1ha2UgdGhlIHRlc3Qga2V5IHZvbGF0aWxlLCB0aGF0IGNhbiBicmVhayBvdGhlciB0ZXN0cy4KCgkqIGRsbHMvdXNlci9ob29rLmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgc2VydmVyL2hvb2suYywKCSAgc2VydmVyL3RyYWNlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1vcmUgdGVzdHMgZm9yIG9sZCBzdHlsZSBob29rcyBhbmQgd2luZXZlbnQgaG9va3MsIG1ha2UgdGhlbSBwYXNzCgl1bmRlciBXaW5lLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLCBkbGxzL21zaS9tc2lwcml2Lmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRW5hYmxlIHRoZSB1cGRhdGluZyBvZiBGZWF0dXJlIGFuZCB0aHVzIHRoZSByZXN1bHRpbmcgY29tcG9uZW50CglzdGF0ZXMuCglSdW4gdGhlIGVuZCBvZiBpbnN0YWxsIGFjdGlvbnMgZm9yIHN1c3BlbmQgYW5kIHVzZXIgZXhpdCBzdGF0ZXMgYXMKCXdlbGwuCglTdGFydCBwdXR0aW5nIGluIHBsYWNlIGEgY3VycmVudGx5IHJ1bm5pbmcgc3RhdGUgZm9yIGZ1dHVyZSB1aSB1c2UuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gaW1wbGVtZW50IE1zaU9wZW5QYWNrYWdlRXgsIGFuZCBmb3J3YXJkIE1zaU9wZW5QYWNrYWdlIHRoZXJlCgktIG1ha2UgYSBNU0lfQ3JlYXRlUGFja2FnZSBmdW5jdGlvbiBhbmQgdXNlIGl0IGluIE1TSV9PcGVuUGFja2FnZQoJLSBtb3ZlIE1zaU9wZW5QYWNrYWdlQSBkb3duIHdpdGggdGhlIHJlc3Qgb2YgdGhlIEFQSSBmdW5jdGlvbnMKCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUFkZCBUWl9JTkZPIGVudHJ5IHRvIG1hdGNoIChpbmNvcnJlY3QpIEF1c3RyYWxpYW4gRWFzdGVybiBEYXlsaWdodAoJVGltZSBpbmZvcm1hdGlvbiBnaXZlbiBieSBzb21lIHN5c3RlbXMuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ2hhbmdlIHNvbWUgRklYTUVzIHRvIEVSUnMgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IG5vdGhpbmcgbmVlZHMKCSAgZml4aW5nLgoJLSBGaXggc29tZSBtZW1vcnkgbGVha3Mgb24gZXJyb3IgcGF0aHMgaW4gX21hcnNoYWxfaW50ZXJmYWNlLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJQ2hlY2sgZm9yIGF2YWlsYWJpbGl0eSBvZiBTUElfR0VUSUNPTlRJVExFV1JBUC4KCgkqIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglBdm9pZCBhIGZldyBtb3JlIHVzZXMgb2YgV0lOX0ZpbmRXbmRQdHIuCgoJKiBpbmNsdWRlLy5jdnNpZ25vcmUsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2Vuc2V2dHMuaWRsOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgaWRsIGZpbGUgZm9yIHRoZSBTeXN0ZW0gRXZlbnQgTm90aWZjYXRpb24gU2VydmljZXMgQVBJCgkoU0VOU0FQSSkuCgoJKiBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsIGRsbHMvc2hkb2N2dy9ldmVudHMuYywKCSAgZGxscy9zaGRvY3Z3L2ZhY3RvcnkuYywgZGxscy9zaGRvY3Z3L21pc2MuYywKCSAgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvcGVyc2lzdC5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsCgkgIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBEbGxDYW5VbmxvYWROb3cgcmVmIGNvdW50aW5nLiBNYWtlIHN1cmUgdGhlIG1vemlsbGEKCWNvbnRyb2wgaXMgcmVhZHkgdG8gdW5sb2FkIGFzIHdlbGwuCgoJKiBkbGxzL21zaS90ZXN0cy9kYi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUZXN0IGRpZmZlcmVudCB0eXBlcyBvZiBkb2RneSBxdWVyaWVzLgoKCSogZGxscy9tc2kvY3VzdG9tLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgY3VzdG9tIGFjdGlvbiB0eXBlIDE5LCBIYWx0IGluc3RhbGwgYW5kIGRpc3BsYXkgZXJyb3IKCW1lc3NhZ2UuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNc2lHZXRQcm9wZXJ0eSBkb2VzIG5vdCByZXR1cm4gYW55IGVycm9yIG9uIG1pc3NpbmcgcHJvcGVydGllcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCVNldCBkZWZhdWx0IHZpZGVvIG1lbW9yeSB0byA2NE1iICh3YXMgMTZNYikgYXMgbWFueSBkM2Q5IGRlbW9zIHVzZQoJZDNkNyBjb2RlIHRvIGdldCBhdmFpbGFibGUgdmlkZW8gbWVtb3J5IHNpemUgKGV4IENvbmZpZ1N5c3RlbS5leGUgb24KCWQzZDkgc2RrKS4KCgkqIGRsbHMvZHhkaWFnbi9NYWtlZmlsZS5pbiwgZGxscy9keGRpYWduL2NvbnRhaW5lci5jLAoJICBkbGxzL2R4ZGlhZ24vZHhkaWFnX3ByaXZhdGUuaCwgZGxscy9keGRpYWduL3Byb3ZpZGVyLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gc29tZSBmaXhlcyBvbiBzdWIgY29udGFpbmVycyBzdXBwb3J0CgktIGFkZCBzdXBwb3J0IGZvciBwcm9wZXJ0aWVzIChWQVJJQU5UKQoJLSBoYXJkIGNvZGVkIHNpbXBsZSBpbml0IGZvciByb290IGNvbnRhaW5lciAoZ2V0dGluZyBzaW1wbGUgZHg5CgkgIHZlcnNpb24gY2hlY2tzIHdvcmtpbmcpCgoJKiBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDaGFuZ2UgVVRGLTggbmFtZSBiYWNrIHRvIElTTy04ODU5LTEuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhkZWNsYXJhdGlvbi5jLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBmaXggdHlwbyBpbiB3aW5lZDNkX2ludGVyZmFjZS5oCgktIGFkZCBuZWVkZWQgZGVmaW5lcyBpbiB3aW5lZDNkX2ludGVyZmFjZS5oCgktIGFkZCBJV2luZUQzRFZlcnRleERlY2xhcmF0aW9uSW1wbF9QYXJzZVRva2VuOSBmb3IgZGVidWcgdHJhY2VzCgktIGZpeCBQYXJzZURlY2xhcmF0aW9uOQoJLSBsaW1pdCBmbG9vZCBvZiB0cmFjZXMgKHNpbmdsZSBzaG90IHRyYWNlcykKCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUdpdmUgSVVua25vd24gaXRzIG93biBpZnN0dWIgdG8gZml4IHJlZi1jb3VudGluZyBhbmQgaXBpZCBzdG9yYWdlCglpc3N1ZXMuCgoyMDA1LTAxLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsCgkgIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jdXN0b20uYywgZGxscy9tc2kvZm9ybWF0LmMsCgkgIGRsbHMvbXNpL3RhYmxlLmMsIGRsbHMvcnNhZW5oL21waS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy93aW5pbmV0L2Nvb2tpZS5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkb2N1bWVudGF0aW9uL29sZS5zZ21sLAoJICBwcm9ncmFtcy93aW5lZGJnL2RiX2Rpc2FzbS5jLCB0b29scy93aW5hcGkvbWFrZV9wYXJzZXIucG06CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSBwcm94eSBtYW5hZ2VyIHVzZSBJTXVsdGlRSSBpbnN0ZWFkIG9mIElJbnRlcm5hbFVua25vd24gYXMgdGVzdHMKCSAgc2hvdyB0aGF0IElJbnRlcm5hbFVua25vd24gaXNuJ3QgZXhwb3NlZC4KCS0gSW1wbGVtZW50IElNdWx0aVFJIG9uIHRvcCBvZiBJUmVtVW5rbm93biBjYWxscy4KCS0gU2lsZW5jZSBzb21lIGZpeG1lcyB0aGF0IG9jY3VyIGR1cmluZyB0ZXN0cyBhbmQgZG9uJ3QgZ2l2ZSB1cyBhbnkKCSAgdXNlZnVsIGluZm9ybWF0aW9uLgoJLSBGaXggdHlwbyBpbiBjbGFzcyBmYWN0b3J5IHByb3h5IHRoYXQgY2F1c2VkIHVzIHRvIHVzZSB0aGUgd3JvbmcKCSAgb2Zmc2V0IGludG8gdGhlIENGUHJveHkgc3RydWN0dXJlLCBjYXVzaW5nIHVzIHRvIG5vdCBjYWxsIHRoZQoJICBvdXRlcl91bmtub3duIHByb3Blcmx5LgoKCSogZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2dsLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYSB2ZXJ5IGJhc2ljIGJsZW5kaW5nIHN1cHBvcnQgb24gZmFzdCBkcmF3aW5nIHBhdGggKHRvIGhhdmUgYmV0dGVyCgkgIHBlcmZvcm1hbmNlcyBvbiBsYXN0IGdhbWVzKQoJLSBzb21lIGRlZmluZXMgZm9yIFZCTyBzdXBwb3J0CgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhkZWNsYXJhdGlvbi5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIFZlcnRleERlY2xhcmF0aW9uIGRldmljZSBBUElzCgktIEQzRDkgZGVjbGFyYXRpb25zIHBhcnNpbmcKCS0gYSBsaXR0bGUgYmV0dGVyIEFQSXMgKHRyeWluZyB0byBhdm9pZCBjb21waWxlIHByb2JsZW1zKQoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVXNlIEludGVybG9ja2VkSW5jcmVtZW50IGZvciB0aGUgaXBpZCBjb3VudGVyIGluc3RlYWQgb2YgYSBjcml0aWNhbAoJICBzZWN0aW9uIChzdWdnZXN0ZWQgYnkgTWlrZSBIZWFybikuCgktIFJlbW92ZSBhIGxpbmUgYWRkZWQgYnkgYSBiYWQgbWVyZ2UuCgktIEltcGxlbWVudCBSZW1VbmtTdHViX0Rpc2Nvbm5lY3QuCgktIFJlbW92ZSBhbGwgb2YgdGhlIFJQQyBkaXNjb25uZWN0IGNvZGUuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wbGVtZW50IElSZW1Vbmtub3duLgoJLSBVc2UgSVJlbVVua25vd24gZm9yIGxpZmUtY3ljbGUgbWFuYWdlbWVudCBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50CgkgIGhhY2tzLgoKCSogaW5jbHVkZS93aW50ZXJubC5oLCBkbGxzL2tlcm5lbC9jcHUuYywgZGxscy9udGRsbC9udC5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJR2V0IHJpZCBvZiB0aGUgcmR0c2MgY3B1IGluc3RydWN0aW9uIG1ldGhvZCBmb3IgY2FsY3VsYXRpb24gb2YgdGhlCglwZXJmb3JtYW5jZSBjb3VudGVyLiBQdXQgdGhlIGNhbGN1bGF0aW9uIChiYXNlZCBvbiBnZXR0aW1lb2ZkYXkpIGluCglOdFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCkgYW5kIHVzZSB0aGF0IGluIHRoZSBrZXJuZWwgZnVuY3Rpb25zLgoKCSogZGxscy9kbXNjcmlwdC9zY3JpcHQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdW5uZWVkZWQgTlVMTCBjYXN0LgoKCSogdG9vbHMvd2lkbC90eXBlbGliX3N0cnVjdC5oLCB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXaGVuIGFkZGluZyBhbiBpbnRlcmZhY2UsIG1pZGwgYWRkcyB0aGUgaW5oZXJpdGVkIGludGVyZmFjZSBmaXJzdAoJdW5sZXNzIHRoZSBpbmhlcml0ZWQgaW50ZXJmYWNlIGRvZXNuJ3QgaXRzZWxmIGluaGVyaXQuCglGaXggdGhlIGlkLCBzaXpldmZ0IGFuZCBkYXRhdHlwZTIgZmllbGRzIGZvciBpbnRlcmZhY2VzIHRoYXQgaW5oZXJpdC4KCVByZXZlbnQgYSBjcmFzaCBpZiB0aGUgdHlwZWxpYiBpcyBlbXB0eS4KCUNsYXJpZnkgYSBmZXcgbW9yZSBlbnRyaWVzIG9uIHR5cGVsaWJfc3RydWN0LmgKCgkqIGRsbHMvbXNpL3JlY29yZC5jLCBkbGxzL21zaS90ZXN0cy9yZWNvcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBNc2lSZWNvcmRTZXRTdHJpbmcgZm9yIE5VTEwgc3RyaW5ncyBhbmQgdXBkYXRlIHRlc3QgY2FzZS4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogR2xlbm4gV3Vyc3RlciA8Z3d1cnN0ZXJAc2NzLmNhcmxldG9uLmNhPgoJRGlzYWJsZSBhbnRpYWxpYXNpbmcgb2YgZm9udHMgd2hpbGUgd29ya2luZyBpbiBhIHBhbGV0dGUuCgoJKiBkbGxzL3NldHVwYXBpL05sLnJjLCBwcm9ncmFtcy9ub3RlcGFkL05sLnJjLCBwcm9ncmFtcy9wcm9nbWFuL05sLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L05sLnJjLCBwcm9ncmFtcy9zdGFydC9ObC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvTmwucmMsIHByb2dyYW1zL3dpbmhlbHAvTmwucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCURvbid0IHVzZSB1dGY4IGluIHJjIGZpbGVzLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglGaXggYSB0eXBvLCBwcm9wYWdhdGUgZXJyb3JzIGJldHRlciBmcm9tIGluc2lkZSB0aGUgdHlwZWxpYgoJbWFyc2hhbGxlci4KCgkqIGRsbHMvZ2RpL21ldGFmaWxlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglHZXRNZXRhRmlsZSBjaGVja3MgYm90aCB0aGUgdmVyc2lvbiBhbmQgdGhlIGhlYWRlciBzaXplIHdoZW4gaXQgdHJpZXMKCXRvIGxvYWQgYSBtZXRhZmlsZS4gIFBvd2VycG9pbnQgWFAgZGVwZW5kcyBvbiB0aGlzLgoKCSogZGxscy9kbXVzaWMvYnVmZmVyLmMsIGRsbHMvZG11c2ljL2Nsb2NrLmMsIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywKCSAgZGxscy9kbXVzaWMvZG11c2ljLmMsIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsIGRsbHMvZG11c2ljL2Rvd25sb2FkLmMsCgkgIGRsbHMvZG11c2ljL2Rvd25sb2FkZWRpbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL2luc3RydW1lbnQuYywKCSAgZGxscy9kbXVzaWMvcG9ydC5jLCBkbGxzL2RtdXNpYy9wb3J0ZG93bmxvYWQuYywgZGxscy9kbXVzaWMvdGhydS5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgRGxsQ2FuVW5sb2FkTm93IHJlZiBjb3VudGluZy4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9yZWdpc3RyeS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgZmV3IG1vcmUgc3R1YiBpbXBsZW1lbnRhdGlvbnMuCgoJKiB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3Byb3h5LmMsCgkgIHRvb2xzL3dpZGwvdHlwZWxpYi5jLCB0b29scy93aWRsL3dpZGwuYywgdG9vbHMvd2lkbC93aWRsLmgsCgkgIHRvb2xzL3dpZGwvd2lkbC5tYW46CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IHR5cGVsaWIgb25seSBvcHRpb24uCglNYWtlIC10IGFuZCAtaCBvcHRpb25zIGluY2x1c2l2ZS4KCjIwMDUtMDEtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2FjdGlvbi5oLAoJICBkbGxzL21zaS9jdXN0b20uYywgZGxscy9tc2kvZm9ybWF0LmMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvcGFja2FnZS5jLCBkbGxzL21zaS9yZWNvcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIGFjdGlvbi5jIGlzIGdldHRpbmcgdG9vIGJpZywgc28gc3BsaXQgb3V0IGFsbCB0aGUgaGFuZGxpbmcgb2YKCSAgQ3VzdG9tQWN0aW9ucyBpbnRvIGN1c3RvbS5jLiBDbGVhbmVkIHVwIGEgbG90IG9mIHRoZSBoYW5kbGluZyBvZgoJICBjdXN0b20gYWN0aW9ucyBpbmNsdWRpbmcgc2NyaXB0aW5nIGFjdGlvbnMgYW5kIHByb2Nlc3NpbmcgcmV0dXJuCgkgIGNvZGVzLgoJLSBNaWtlIE1jQ29ybWFjayBwb2ludGVkIG91dCB0aGF0IE1zaUZvcm1hdFJlY29yZCBpcyBiYXNpY2FsbHkgdGhlCgkgIHNhbWUgYXMgaW50ZXJuYWwgZnVuY3Rpb24gZGVmb3JtYXRfc3RyaW5nLiBTbyBicm9rZSBkZWZvcm1hdF9zdHJpbmcKCSAgb3V0IGFuZCB1cGRhdGVkIGl0IHRvIGZ1bmN0aW9uIGFzIE1zaUZvcm1hdFJlY29yZCBhbmQgaW1wbGVtZW50ZWQKCSAgTXNpRm9ybWF0UmVjb3JkLgoJLSBBIG51bWJlciBvZiByYW5kb20gZml4ZXMgdG8gYWN0aW9uLmMgaW5jbHVkaW5nIHByb3Blcmx5IGNhbGN1bGF0aW5nCgkgIHRoZSBsZW5ndGggZm9yIHRoZSBMb2NhbFBhY2thZ2UgbmFtZSwgbm90IGZvcmNpbmcgYSByZWJvb3Qgd2hlbgoJICByZWFsbHkgd2Ugc2hvdWxkIGp1c3QgcmV0dXJuIEVSUk9SX0lOU1RBTExfU1VTUEVORCBhbmQgaGFuZGxpbmcKCSAgUkVHX01VTFRJX1NaIG5vdyB0aGF0IHdlIGNhbiBkZWZvcm1hdCB0aGUgcHJvcGVybHkuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscDJzZ21sLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLAoJICBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmxleC5sLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCUtlbiBCZWxsZWF1IDxqYW1lekBpdmljLnFjLmNhPgoJLSBVc2VkIHdpbmVfZGJnc3RyX2EgdG8gcHJldmVudCBhbiBvdmVyZmxvdy4KCS0gSW1wcm92ZWQgc3VwcG9ydCB0byBjYWxsIG1hY3JvcyB3aXRoIGEgdmFyaWFibGUgbnVtYmVyIG9mCgkgIHBhcmFtZXRlcnMuCgktIFB1dCBhIGNoZWNrIHRvIHByZXZlbnQgYW4gb3V0IG9mIGJvdW5kcyBhY2Nlc3MuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNvcHkgZGF0YSBzdHJ1Y3R1cmVzIG9uZSBhdCBhIHRpbWUgdXNpbmcgc3VwcGxpZWQgc2l6ZS4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvdHlwZWxpYi5jLCB0b29scy93aWRsL3R5cGVsaWIuaCwKCSAgdG9vbHMvd2lkbC93aWRsdHlwZXMuaCwgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGVudW0gc3VwcG9ydC4KCUFub3RoZXIgYXR0ZW1wdCBhdCBnZXR0aW5nIHRoZSBhbGlnbm1lbnQgYml0cyBjb3JyZWN0LgoKCSogZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLAoJICBkbGxzL29kYmMzMi9wcm94eW9kYmMuaDoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUltcGxlbWVudGVkIFVuaWNvZGUgcHJveHkgZm9yIE9EQkMuCgoJKiBkbGxzL29sZTMyL3JlZ3N2ci5jLCBkbGxzL29sZWF1dDMyL3JlZ3N2ci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNb3ZlIE9MRSBhdXRvbWF0aW9uIGludGVyZmFjZSByZWdpc3RyYXRpb24gdG8gb2xlYXV0MzIuCgktIEFkZCBJUmVtVW5rbm93biB0byBsaXN0IG9mIGludGVyZmFjZXMgdG8gcmVnaXN0ZXIuCgoJKiBkbGxzL29sZTMyL29sZXByb3h5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3hpZXMvc3R1YnMgZm9yIElSZW1Vbmtub3duIG1ldGhvZHMsIGJhc2VkIG9uIGNvZGUgd3JpdHRlbiBieSBPdmUKCUvldmVuLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgZW5jb2RpbmcgZm9yIFZUX1I4LgoJQnVnIGZpeDogSW5pdGlhbGlzZSBjaGlsZF9zaXplLgoKCSogZGxscy9zZXR1cGFwaS9taXNjLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYzoKCUVyaWMgS29obCA8ZXJpYy5rb2hsQHQtb25saW5lLmRlPgoJSW1wbGVtZW50IER1cGxpY2F0ZVN0cmluZyBhbmQgUXVlcnlSZWdpc3RyeVZhbHVlLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglJbml0aWFsaXplIHRlbXBvcmFyeSB2YXJpYW50cyBiZWZvcmUgY2FsbGluZyBWYXJpYW50Q2hhbmdlVHlwZUV4LgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglSZXBsYWNlICdcJyB3aXRoICcvJyBpbiB0aGUgVVJMIGluIEhUVFBfSHR0cFNlbmRSZXF1ZXN0Vy4KCgkqIHByb2dyYW1zL3dpbmVwYXRoL3dpbmVwYXRoLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBwcm9ncmFtcy93aW5lcGF0aCB0byB1bmljb2RlLCBwcmludCB0aGUgb3V0cHV0IHN0cmluZyB1c2luZwoJVW5peCBsb2NhbGUuCgoJKiBkbGxzL21zaS9tc2kuc3BlYywgZGxscy9tc2kvcmVnaXN0cnkuYywgZGxscy9tc2kvdGVzdHMvZGIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCwgdGVzdCBhbmQgZG9jdW1lbnQgTXNpRGVjb21wb3NlRGVzY3JpcHRvci4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnk6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+Cgl1bnNpZ25lZCBjaGFyIHN1cHBvcnQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IEFkZGVkIGEgY291cGxlIG9mIFNldFdpbmRvd1BvcyB0ZXN0cy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJTWFrZSBTaG93V2luZG93KC4uLixTV19TSE9XTkEpIGFsc28gd29yayBvbiBhbHJlYWR5IHZpc2libGUgd2luZG93cwoJd2l0aCBzb21lIGNvbmZvcm1hbmNlIHRlc3RzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIG5ldyByZWdpc3RyeSBmdW5jdGlvbnMgaW4gcmVnaXN0cnkuYy4KCURvIG5vdCBmb3JjZSBhIHJlYm9vdCwganVzdCByZXR1cm4gRVJST1JfSU5TVEFMTF9TVVNQRU5EIGFuZCB3cml0ZQoJc29tZSBrZXlzIHRvIHRoZSByZWdpc3RyeS4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9yZWdpc3RyeS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgdGhlIGd1aWQgc3F1aXNoaW5nIGZ1bmN0aW9ucyBvdXQgb2YgbXNpLmMgYW5kIG1ha2UgYSBuZXcKCXJlZ2lzdHJ5LmMgZmlsZS4gQWxzbyBjbGVhbiB1cCBhbGwgdGhlIHZhcmlvdXMgcmVnaXN0cnkga2V5cyB3ZSBuZWVkCgl0byBvcGVuIGFuZCBjcmVhdGUgdG8gdGhpcyBtb2R1bGUgYW5kIG1vZGlmeSB0aGUgZnVuY3Rpb25zIGZvciBtc2kuYwoJdG8gY2FsbCB0aGVzZSBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvc2Nyb2xsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHN1bW1hcnkgbGluZSBmb3Igc2V2ZXJhbCBzY3JvbGxiYXIgZnVuY3Rpb25zLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3N0dWJtYW5hZ2VyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEdlbmVyYXRlIG1hY2hpbmUtbG9jYWwgSVBJRHMuCgktIE1ha2UgcGlwZXMgYmUgdW5pcXVlbHkgaWRlbnRpZmllZCBvbmx5IGJ5IHRoZWlyIElQSUQuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBpbnRlcmZhY2UgaW5oZXJpdGFuY2UuCgoJKiBkbGxzL2RldmVudW0vY3JlYXRlZGV2ZW51bS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgcGluIGRpcmVjdGlvbiB3aGVuIHJlZ2lzdGVyaW5nIGF1ZGlvIGlucHV0IGRldmljZS4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zdHJpbmcuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHJJc0ludGxFcXVhbCBhbmQgSW50bFN0ckVxV29ya2VyIG1heSBiZSBhYnNlbnQuCgoyMDA1LTAxLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd3RzYXBpMzIvLmN2c2lnbm9yZSwKCSAgZGxscy93dHNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy93dHNhcGkzMi93dHNhcGkzMi5jLAoJICBkbGxzL3d0c2FwaTMyL3d0c2FwaTMyLnNwZWMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd3RzYXBpMzIuaDoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFdUU0FQSTMyLkRMTC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHNlcnZpY2VzIHRvIHVzZSBwaXBlcyBmb3IgUlBDIGluc3RlYWQgb2Ygc2hhcmVkIG1lbW9yeS4KCgkqIGRsbHMvZG1zdHlsZS9hdWRpdGlvbnRyYWNrLmMsIGRsbHMvZG1zdHlsZS9jaG9yZHRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9jb21tYW5kdHJhY2suYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsIGRsbHMvZG1zdHlsZS9tb3RpZnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9tdXRldHJhY2suYywgZGxscy9kbXN0eWxlL3N0eWxlLmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZXRyYWNrLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBEbGxDYW5VbmxvYWROb3cgcmVmIGNvdW50aW5nLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglEaXNhYmxlIGFudGlhbGlhc2luZyBpZiB0aGUgZm9udCBkaWN0YXRlcyBpdC4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogR2xlbm4gV3Vyc3RlciA8Z3d1cnN0ZXJAc2NzLmNhcmxldG9uLmNhPgoJU3BsaXQgY2FjaGluZyBvZiBhbnRpYWxpYXNlZCBhbmQgbm9uLWFudGlhbGlhc2VkIGdseXBocy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0ZGxsLy5jdnNpZ25vcmUsCgkgIGRsbHMvY3J5cHRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHRkbGwvY3J5cHRkbGwuYywKCSAgZGxscy9jcnlwdGRsbC9jcnlwdGRsbC5zcGVjOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0dWIgdmVyc2lvbiBvZiBjcnlwdGRsbC5kbGwuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCURvbid0IHJlZnVzZSB0byBwcm9jZXNzIFZETVggcmF0aW8gZW50cmllcyB3aXRoIGJDaGFyU2V0ID09IDAuIFRoZXNlCgllbnRyaWVzIGFyZSBhdCBsZWFzdCBhcyB1c2VmdWwgYXMgdGhvc2Ugd2l0aCBiQ2hhclNldCA9PSAxLiBBZGQKCWNvbW1lbnQgY29udGFpbmluZyBVUkwgb2YgZG9jdW1lbnRhdGlvbiBmb3IgVkRNWCByZWNvcmRzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFRpbnVzIDxvMTEydzhyMDJAc25lYWtlbWFpbC5jb20+CglQcm9wZXJseSBhbGxvdyByZW1vdmluZyB0b29sYmFyIGJpdG1hcHMgYnkgY2hhbmdpbmcgaXQgaW50byAwLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVB1dCBCcmF6aWxpYW4gQUJOVDIga2V5Ym9hcmQgbGF5b3V0cyBpbiBsaW5lIHdpdGggYXBwcm9wcmlhdGUgdmlydHVhbAoJa2V5Ym9hcmQgbWFwcy4KCgkqIGRsbHMveDExZHJ2L3dpbnRhYi5jOiBSb2JlcnQgTm9ydGggPDdvd25xMGs0MDJAc25lYWtlbWFpbC5jb20+CglCcmluZyB3aW50YWIgaW4gbGluZSB3aXRoIEplcmVteSdzIFgxMSBldmVudCB0aW1pbmcgcGF0Y2hlcyBhZ2Fpbi4KCgkqIGRsbHMveDExZHJ2L3dpbnRhYi5jOiBSb2JlcnQgTm9ydGggPDdvd25xMGs0MDJAc25lYWtlbWFpbC5jb20+CglBZGQgdGhlIHJ1bGUgdGhhdCBpbnZlcnRlZCBjdXJzb3IgaGFzIC12ZSBhbHRpdHVkZSwgbWF0Y2hpbmcgYmVoYXZpb3VyCglvbiBXaW5kb3dzIHdhY29tIHRhYmxldHMuCgoJKiBkbGxzL3gxMWRydi93aW50YWIuYzogUm9iZXJ0IE5vcnRoIDw3b3ducTBrNDAyQHNuZWFrZW1haWwuY29tPgoJUGFja2V0cyBmcm9tIGVyYXNlciBjdXJzb3JzIGFyZSBtYXJrZWQgYXMgaW52ZXJ0ZWQsIG1hdGNoaW5nIGJlaGF2aW9yCglvbiBXaW5kb3dzIFdhY29tIHRhYmxldHMuCgoJKiBkbGxzL3dpbnRhYjMyL2NvbnRleHQuYzogUm9iZXJ0IE5vcnRoIDw3b3ducTBrNDAyQHNuZWFrZW1haWwuY29tPgoJV1RFbmFibGUsIHdoZW4gY2FsbGVkIHRvIGRpc2FibGUgdGFibGV0IGNvbnRleHQsIGNsZWFycyBjb250ZXh0IHF1ZXVlLAoJYXMgcGVyIHdpbnRhYiBzcGVjLgoKCSogZGxscy9kc291bmQvcHJpbWFyeS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgYWxsb3cgb3RoZXIgdGhyZWFkcyB0byBhY2Nlc3MgdGhlIHByaW1hcnkgYnVmZmVyIHdoaWxlIHRoZQoJZm9ybWF0IGlzIGJlaW5nIGNoYW5nZWQuCgoJKiBkbGxzL3gxMWRydi93aW50YWIuYzogUm9iZXJ0IE5vcnRoIDw3b3ducTBrNDAyQHNuZWFrZW1haWwuY29tPgoJLSBJbiB3aW50YWIncyBkZWZhdWx0IHN5c3RlbSBjb250ZXh0LCBjaGFuZ2UgY29udGV4dCBvcHRpb25zIHRvIG1hdGNoCgkgIFdhY29tIHRhYmxldCBpbiB3aW5kb3dzLgoJLSBDaGFuZ2UgZGV2aWNlIG9yaWVudGF0aW9uIHVuaXQgZGVmaW5pdGlvbiB0byBhbmd1bGFyLgoJLSBVc2UgTWFjcm9zIHdoZXJlIGFwcHJvcHJpYXRlIHRvIGRlZmluZSBjdXJzb3IgYW5kIGRldmljZSBkZWZhdWx0cy4KCgkqIGRsbHMvd2ludGFiMzIvY29udGV4dC5jOiBSb2JlcnQgTm9ydGggPDdvd25xMGs0MDJAc25lYWtlbWFpbC5jb20+CgktIENvcnJlY3Qgb3ZlcmZsb3cgMSBtZXNzYWdlIHRvbyBlYXJseS4KCS0gT3ZlcmZsb3cgbm93IGdvaW5nIG9udG8gbWVzc2FnZSBxdWV1ZS4KCS0gT3ZlcmZsb3cgc3RhdGUgY29ycmVjdGx5IG9yLWVkIHdpdGggb3RoZXIgcGFja2V0IHN0YXR1cy4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvbWlzYy5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWM6CglFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCUltcGxlbWVudCBNeUZyZWUsIE15TWFsbG9jIGFuZCBNeVJlYWxsb2MuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCByZWZlcmVuY2VkIHR5cGVzIHRoYXQgYXJlbid0IGFscmVhZHkgaW4gdGhlIHR5cGVsaWIuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvbWl4ZXIuYywKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3JlZ3N2ci5jLAoJICBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlIHVudXNlZCBpbmNsdWRlcy4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUF2b2lkIHVubmVjZXNzYXJ5IHJ1bi10aW1lIGluaXRpYWxpemF0aW9ucy4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jLCBkbGxzL3JzYWVuaC90ZXN0cy9yc2FlbmguYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVN1cHBvcnQgZm9yIFRMUzEgcHNldWRvIHJhbmRvbSBmdW5jdGlvbi4KCVNvbWUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgREFUQV9CTE9CJ3MuCglDb21wdXRpbmcgVExTMSBtYXN0ZXIgc2VjcmV0IGZyb20gdGhlIHByZS1tYXN0ZXIgc2VjcmV0LgoJRGVyaXZpbmcgdGhlIG1hc3RlciBoYXNoIGZyb20gdGhlIG1hc3RlciBzZWNyZXQuCglEZXJpdmluZyBUTFMxIE1BQyBhbmQgZW5jcnlwdGlvbiBrZXlzIGZyb20gdGhlIG1hc3RlciBoYXNoLgoJVGVzdHMgZm9yIG1vc3Qgb2YgdGhlIGFib3ZlLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglBZGRlZCBOdExvYWREcml2ZXIgYW5kIE50VW5sb2FkRHJpdmVyIHN0dWJzLgoKCSogZGxscy9kM2Q5L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDkvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOS9kaXJlY3R4LmMsIGRsbHMvZDNkOS9pbmRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDkvcGl4ZWxzaGFkZXIuYywgZGxscy9kM2Q5L3F1ZXJ5LmMsIGRsbHMvZDNkOS9yZXNvdXJjZS5jLAoJICBkbGxzL2QzZDkvc3RhdGVibG9jay5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLCBkbGxzL2QzZDkvc3dhcGNoYWluLmMsCgkgIGRsbHMvZDNkOS90ZXh0dXJlLmMsIGRsbHMvZDNkOS92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kM2Q5L3ZlcnRleGRlY2xhcmF0aW9uLmMsIGRsbHMvZDNkOS92ZXJ0ZXhzaGFkZXIuYywKCSAgZGxscy9kM2Q5L3ZvbHVtZS5jLCBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOC9yZXNvdXJjZS5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvc3dhcGNoYWluLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC92ZXJ0ZXhidWZmZXIuYywgZGxscy9kM2Q4L3ZvbHVtZS5jLAoJICBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gdXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoJLSBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZSBJbnRlcmxvY2tlZCBmdW5jdGlvbnMgYW5kIHVzZSBvbmx5IHRoaXMuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUFkZCBtaXNzaW5nIC8ncyB0byB1cmxzIGh0dHA6Ly93d3cuY3lnd2luLmNvbSBhbmQKCWh0dHA6Ly93d3cubWluZ3cub3JnLgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jOiBCZXJuZCBGdWhybWFubiA8c2lsdmVyYmFuYW5hQGdteC5kZT4KCUFkZGVkIGZpeG1lIG1hY3JvcyBpbiBTeXN0ZW1QYXJhbWV0ZXJzSW5mb1cgZm9yIHNldmVyYWwgYWN0aW9uIG51bWJlcnMKCXRoYXQgYXJlIHlldCB1bmltcGxlbWVudGVkLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggaGFuZGxpbmcgb2Ygdm9pZC4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9taXhlci5jLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglVc2UgV2luZG93cyBtZW1vcnkgZnVuY3Rpb25zLgoKCSogZGxscy93aW50YWIzMi9jb250ZXh0LmMsIGRsbHMvd2ludGFiMzIvd2ludGFiMzIuYywKCSAgZGxscy94MTFkcnYvd2ludGFiLmM6CglSb2JlcnQgTm9ydGggPDdvd25xMGs0MDJAc25lYWtlbWFpbC5jb20+CgktIERvbid0IHBvc3QgbWVzc2FnZXMgb24gV2luZSBtZXNzYWdlIHF1ZXVlLCBpZiB0YWJsZXQgY29udGV4dCBmbGFncwoJICBwb3N0aW5nIGFyZSBkaXNhYmxlZC4KCS0gV2hlbiBwb3N0aW5nIG1lc3NhZ2VzIG9uIFdpbmUgbWVzc2FnZSBxdWV1ZSwgdXNlIG1lc3NhZ2UgYmFzZSBzdG9yZWQKCSAgaW4gdGFibGV0IGNvbnRleHQsIG5vdCB0aGUgZGVmYXVsdCBtZXNzYWdlIGJhc2UuCgktIEVuc3VyZSB0aGF0IFgxMSBQcm94aW1pdHkgZXZlbnRzIHB1dCBtZXNzYWdlcyBvbnRvIFdpbnRhYiBtZXNzYWdlCgkgIHF1ZXVlLgoKCSogZGxscy9kM2RybS92ZXJzaW9uLnJjLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2QzZHJtLmg6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJQWRkZWQgYSBzaW1wbGUgZDNkcm0uaCBoZWFkZXIuCglDb3JyZWN0ZWQgYSBjb3B5L3Bhc3RlIHR5cG8gZnJvbSBkM2RpbS4KCgkqIGRsbHMvZG1zdHlsZS9hdWRpdGlvbnRyYWNrLmMsIGRsbHMvZG1zdHlsZS9jaG9yZHRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9jb21tYW5kdHJhY2suYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLAoJICBkbGxzL2Rtc3R5bGUvbW90aWZ0cmFjay5jLCBkbGxzL2Rtc3R5bGUvbXV0ZXRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZS5jLCBkbGxzL2Rtc3R5bGUvc3R5bGV0cmFjay5jLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywKCSAgZGxscy9kbXNjcmlwdC9zY3JpcHR0cmFjay5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gdXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoJLSBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZSBJbnRlcmxvY2tlZCBmdW5jdGlvbnMgYW5kIHVzZSBvbmx5IHRoaXMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYzogSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCVVwZGF0ZWQgU3BhbmlzaCByZXNvdXJjZXMuCgoJKiBkbGxzL3JzYWVuaC9pbXBsZ2x1ZS5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZW1vdmVkIGFub3RoZXIgY2hlY2sgZm9yIHZhbGlkJ25lc3Mgb2YgYWxnaWQuIEl0J3MgcmVkdW5kYW50LgoKCSogZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzoKCVLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCWNoYXIgLT4gY29uc3QgY2hhciBmaXhlcy4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgQ1JZUFRfU0VSVkVSIGRlZmluZS4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIGhpZGRlbiBhbmQgcmVzdHJpY3RlZCBmdW5jdGlvbiBhdHRyaWJ1dGVzLgoJQWRkIHN1cHBvcnQgZm9yIG9kbCBpbnRlcmZhY2UgYXR0cmlidXRlLgoKCSogZGxscy9udGRsbC9oZWFwLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIEhlYXBGcmVlKE5VTEwpIGNhc2UgZmFzdGVyIGJ5IHJldHJpZXZpbmcgaGVhcCBwb2ludGVyIGFmdGVyIHRoZQoJbWVtb3J5IGJsb2NrIHBvaW50ZXIgdGVzdC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9taXhlci5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIG1lbW9yeSBsZWFrIGluIG1peGVyIGNvZGUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERyYXcgYSByZXByZXNlbnRhdGlvbiBvZiBhIGRvY3VtZW50IGluIHRoZSBwYWdlIHNldHVwIGRpYWxvZy4KCS0gQ2hhbmdlIHNvbWUgRklYTUUncyB0byBUUkFDRSdzIGJlY2F1c2UgZXZlcnl0aGluZyB3ZSBuZWVkIGlzCgkgIGltcGxlbWVudGVkIGFuZCB0aGV5IGZpcmUgZm9yIG9uZXMgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGltcGxlbWVudC4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IGZvcm1hdCBzdHJpbmcgaW4gTnRRdWVyeVZpcnR1YWxNZW1vcnkoKS4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBuZXcgSW5zZXJ0IGZpeGVzIG5vdyBwcm9wZXJseSByZXF1aXJlID8sPyBpbnN0ZWFkIG9mIGp1c3QgPyBmb3IKCXRoZSBJbnNlcnQgY2FsbC4gVGhpcyBmaXggbW9kaWZpZXMgdGhlIE1TSV9TZXRQcm9wZXJ0eSBxdWVyeSB0byBiZQoJY29ycmVjdC4KCgkqIGRsbHMvbXNpL3N1bWluZm8uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFuIGltcGxlbWVudGF0aW9uIG9mIE1zaVN1bW1hcnlJbmZvR2V0UHJvcGVydHlXIGJhc2VkIG9mZiBvZgoJTXNpU3VtbWFyeUluZm9HZXRQcm9wZXJ0eUEuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGEgbmV3IGZsYWcgU09SRlBfTk9MSUZFVElNRU1HTVQgdG8gdGVsbCB0aGUgcHJveHkgbWFuYWdlciBub3QgdG8KCSAgY2FsbCBhbnkgSVJlbVVua25vd24gZnVuY3Rpb25zLgoJLSBNb3ZlIHRoZSBsb3ctbGV2ZWwgdW5tYXJzaGFsaW5nIGNvZGUgaW50byBhIG5ldyBmdW5jdGlvbiwKCSAgdW5tYXJzaGFsX29iamVjdCwgc28gdGhhdCBpdCBjYW4gYmUgZWFzaWx5IHJldXNlZCBmb3IgdW5tYXJzaGFsaW5nCgkgIElSZW1Vbmtub3duLgoKCSogZGxscy94MTFkcnYvd2ludGFiLmM6IFJvYmVydCBOb3J0aCA8N293bnEwazQwMkBzbmVha2VtYWlsLmNvbT4KCUdlbmVyYXRlIFdpbnRhYiBwYWNrZXRzIGZvciBYSW5wdXQgYnV0dG9uIHVwL2Rvd24gZXZlbnRzLgoKCSogZGxscy9tc2kvbXNpLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUluZGVudGF0aW9uIGFuZCBzdHlsZSBjbGVhbnVwLgoKMjAwNS0wMS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglUd2VhayBTZXRXaW5kb3dQb3MgZmxhZ3MgaGFuZGxpbmcgdG8gbWFrZSBhIGZldyBtb3JlIG9mIHRoZSBtZXNzYWdpbmcKCXRlc3RzIHBhc3MuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUJpdCAweDAyMDAgYWx3YXlzIGFwcGVhcnMgdG8gYmUgc2V0IGluIHRoZSB0eXBlaW5mbydzCgl0eXBla2luZC9hbGlnbm1lbnQgbWVtYmVyLgoKCSogd2luZG93cy93aW5wb3MuYzoKCU1heCB0cmFja2luZyBzaXplIGluIFdNX0dFVE1JTk1BWElORk8gc2hvdWxkIHRha2UgaW50byBhY2NvdW50IHRoZQoJd2luZG93IGZyYW1lLgoKCSogdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglbbG9jYWxdIGZ1bmN0aW9ucyBzaG91bGQgbm90IGJlIHdyaXR0ZW4gdG8gdGhlIHR5cGVsaWIuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBPcGVuUXVlcnkgaW50byBtc2lxdWVyeS5jIGFuZCBtYWtlIGl0IG5vbi1zdGF0aWMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOiBHdW5uYXIgRGFsc25lcyA8aGFyZG9uQG9ubGluZS5ubz4KCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglTVEFUVVNCQVJfU2V0VGV4dFQ6CgktIG50ZXh0IHdhc24ndCBmcmVlZCBvbiByZXR1cm4gaWYgdGV4dCB3YXMgdW5pY29kZQoJLSBwYXJ0LT50ZXh0IHdhcyBhbHdheXMgZnJlZWQsIGJ1dCBpZiB0aGUgcHJldmlvdXMgc3R5bGUgd2FzCgkgIFNCVF9PV05FUkRSQVcsIHBhcnQtPnRleHQgd291bGQgY29udGFpbiAzMmJpdCBkYXRhCgktIGZyZWUgb2xkIHRleHQgaWYgbmV3IHN0eWxlIGlzIFNCVF9PV05FUkRSQVcgYnV0IG9sZCBzdHlsZSB3YXNuJ3QKCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSBNb3JlIHZlcmJvc2Ugb3V0cHV0IG9mIGVycm9ycy4KCS0gQmFpbCBvdXQgaWYgZmlyc3QgdGVzdCBmYWlscyAocHJvZHVjZSBvbmUgZXJyb3Igb25seSkuCgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL3Njcm9sbC5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS93aW4uaCwKCSAgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy93aW4uYzoKCU1ha2UgV0lOX1NldFN0eWxlIG1vcmUgdGhyZWFkLXNhZmUgYnkgc3BlY2lmeWluZyB0aGUgYml0cyB0byBjaGFuZ2UKCWluc3RlYWQgb2YgdGhlIG5ldyB2YWx1ZS4KCgkqIHRvb2xzL3dpZGwvcHJveHkuYzogUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJU21hbGwgY2hhciAtPiBjb25zdCBjaGFyIGZpeC4KCgkqIGRsbHMvZDNkeDgvZDNkeGJ1ZmZlci5jLCBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gVXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoJLSBTdG9yZSB0aGUgcmVzdWx0IG9mIHRoZSBJbnRlcmxvY2tlZCBmdW5jdGlvbnMgYW5kIHVzZSBvbmx5IHRoaXMuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvbXNpLnNwZWMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvcHJldmlldy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIE1zaVByZXZpZXdEaWFsb2cgYW5kCglNc2lQcmV2aWV3QmlsbGJvYXJkLgoKCSogZGxscy9tc2kvbXNpcXVlcnkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTG9jayByZWNvcmQgaW4gTXNpVmlld0V4ZWN1dGUsIG1vdmUgc3R1YnMgdG8gZW5kLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEdldEFkdmlzZSBhbmQgU2V0QWR2aXNlLgoKCSogaW5jbHVkZS9udHNlY2FwaS5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGRlZCBzb21lIGRlZmluaXRpb25zLgoKCSogZGxscy9vbGUzMi9ycGMuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJVmFyaW91cyBmb3JtYXR0aW5nL3N0eWxlIGNoYW5nZXMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJSW5jbHVkZSBuZXcgdGVzdHMuCgoJKiBkbGxzL3F1YXJ0ei9yZWdzdnIuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRml4IGhlYXAgY29ycnVwdGlvbiBpbiBxdWFydHogc2VydmVyIHJlZ2lzdHJhdGlvbiwgYWRkIHNvbWUKCXdoaXRlc3BhY2UsIGJyZWFrIG91dCBvZiBsb29wIGlmIG91dCBvZiBtZW1vcnkuCgoyMDA1LTAxLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6CglKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCS0gSW1wbGVtZW50ZWQgU1BJX1NFVElDT05NRVRSSUNTLgoJLSBGaXhlZCBTUElfR0VUSUNPTlRJVExFTE9HRk9OVCB0byBvbmx5IHJldHVybiB2YWx1ZXMgcmV0cmlldmVkIGZyb20KCSAgd2luLmluaSBvbiBmaXJzdCBjYWxsIGFuZCByZXR1cm4gYSBjYWNoZWQgdmVyc2lvbiBpbiBzdWJzZXF1ZW50CgkgIGNhbGxzLgoJLSBDcmVhdGVkIHVuaXQgdGVzdCBmb3IgU1BJX3tHRVQsU0VUfUlDT05NRVRSSUNTLgoKCSogZGxscy9tc2kvaW5zZXJ0LmMsIGRsbHMvbXNpL3NxbC55LCBkbGxzL21zaS90ZXN0cy9kYi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGFuZCB0ZXN0IGluc2VydGluZyByZWNvcmRzLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94Zm9udC5jOgoJUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJQWRkZWQgbWlzc2luZyBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL21zaS9oYW5kbGUuYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvbXNpcXVlcnkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZWZjb3VudGluZywgdXNlIEludGVybG9ja2VkIGZ1bmN0aW9ucy4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnk6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBzZXQgQVRUUl9JTiBvciBBVFRSX09VVCBieSBkZWZhdWx0IC0gdGhpcyBlc3NlbnRpYWxseSByZXZlcnRzCglyZXYuIDEuMjEuICBUaGUgcHJveHkgY29kZSBtdXN0IGV4cGxpY2l0bHkgYWRkIHRoZXNlIGlmIHRoZXkncmUKCW5lZWRlZC4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGd1aWQgaGFzaC4KCgkqIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci9zY3JvbGwuYywgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJUmVwbGFjZSBhIG51bWJlciBvZiBjYWxscyB0byBXSU5fRmluZFduZFB0ciBieSBXSU5fR2V0UHRyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvYWR2cGFjay9NYWtlZmlsZS5pbiwKCSAgZGxscy9hZHZwYWNrL2FkdnBhY2suYywgZGxscy9hZHZwYWNrL2FkdnBhY2suc3BlYywKCSAgZGxscy9hZHZwYWNrL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvYWR2cGFjay90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9hZHZwYWNrL3Rlc3RzL2FkdnBhY2suYywgaW5jbHVkZS9hZHZwdWIuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzdHVicyBmb3IgTmVlZFJlYm9vdEluaXQgYW5kIE5lZWRSZWJvb3QuCglBZGRlZCBpbXBsZW1lbnRhdGlvbnMgZm9yIEdldFZlcnNpb25Gcm9tRmlsZSBhbmQKCUdldFZlcnNpb25Gcm9tRmlsZUV4LgoJQWRkZWQgdGVzdCBmb3IgR2V0VmVyc2lvbkZyb21GaWxlLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmMsIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywgZGxscy9wc2FwaS9wc2FwaV9tYWluLmMsCgkgIGluY2x1ZGUvcHNhcGkuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgRW51bVBhZ2VGaWxlc3tBLFd9LCBHZXRQcm9jZXNzSW1hZ2VGaWxlTmFtZXtBLFd9LgoJSW1wbGVtZW50IEdldFBlcmZvcm1hbmNlSW5mbywgR2V0UHJvY2Vzc01lbW9yeUluZm8gb24gdG9wIG9mCglOdFF1ZXJ5SW5mb3JtYXRpb25Qcm9jZXNzIGFuZCBHZXRXc0NoYW5nZXMsIFF1ZXJ5V29ya2luZ1NldHssRXh9IG9uCgl0b3Agb2YgTnRRdWVyeVZpcnR1YWxNZW1vcnkuCgoJKiBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglUYW5hYmUgSGlyb3NoaSA8aGlyb2t1bl9kYXlvbW9uQGluZm9zZWVrLnRvPgoJQWRkZWQgc3R1YnMgZm9yIFNlbmRJTUVNZXNzYWdlRXhbQSxXXS4KCgkqIGRsbHMvbXNpL3RhYmxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGJ1ZyBjYXVzZWQgYnkgZnJlZWluZyBtZW1vcnkgdG9vIHNvb24gaW4gdGhlIHRhYmxlIGNvZGUuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1JREwgYWRkcyB0d28gc2V0cyBvZiBjdXN0b20gZGF0YSB0byB0aGUgbGlicmFyeTogb25lIGlzIGEgdGltZXN0YW1wCglhbmQgdGhlIHNlY29uZCBpcyBNSURMJ3MgdmVyc2lvbiBudW1iZXIuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgY29vcmRpbmF0ZXMgb2YgYSBjb3VwbGUgb2YgY29udHJvbHMuCgoJKiBpbmNsdWRlL21zaXF1ZXJ5Lmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgdGhlIHByZXZpZXcgZnVuY3Rpb25zLgoKCSogZGxscy9kM2R4b2YvZDNkeG9mLmMsIGRsbHMvZDNkeG9mL2QzZHhvZl9wcml2YXRlLmg6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSBVc2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgktIFN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIEludGVybG9ja2VkIGZ1bmN0aW9ucyBhbmQgdXNlIG9ubHkgdGhpcy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQWRkZWQgdGltZSB6b25lIGluZm9ybWF0aW9uIGZvciBTQU1UIChTYW1hcmEgU3RhbmRhcmQgVGltZSkuCgoJKiBkbGxzL250ZGxsL3NlYy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBQ0wgZml4ZXMgYW5kIGNsZWFudXBzLgoKCSogZGxscy9jZmdtZ3IzMi9jZmdtZ3IzMi5zcGVjLCBkbGxzL2NmZ21ncjMyL21haW4uYzoKCTxBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBzdHViIGltcGxlbWVudGF0aW9ucy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9jb25kLnksIGRsbHMvbXNpL2Rpc3RpbmN0LmMsCgkgIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9vcmRlci5jLCBkbGxzL21zaS9wYWNrYWdlLmMsCgkgIGRsbHMvbXNpL3N0cmluZy5jLCBkbGxzL21zaS9zdW1pbmZvLmMsIGRsbHMvbXNpL3RhYmxlLmMsCgkgIGRsbHMvbXNpL3doZXJlLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRG8gbm90IGNoZWNrIGZvciBub24gTlVMTCBwb2ludGVyIGJlZm9yZSBIZWFwRnJlZSdpbmcgaXQuIEl0J3MKCXJlZHVuZGFudC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ29uc29saWRhdGUgbW9yZSBzdHViIGNyZWF0aW9uIGRldGFpbHMgaW50byByZWdpc3Rlcl9pZnN0dWIuCgktIFJlcGxhY2UgdGhlIGN1cnJlbnQgd2luZV9tYXJzaGFsX2lkIHN0cnVjdHVyZSB3aXRoIFNURE9CSlJFRiBmb3IgdGhlCgkgIG9uLXRoZS13aXJlIGZvcm1hdC4KCgkqIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywgZGxscy9uZXRhcGkzMi93a3N0YS5jLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2xtLmgsIGluY2x1ZGUvbG1qb2luLmg6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIG9mIE5ldEdldEpvaW5JbmZvcm1hdGlvbi4KCjIwMDUtMDEtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvbmxzL3Vrci5ubHMsIGRsbHMvbWxhbmcvbWxhbmcuYywKCSAgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYveGZvbnQuYywKCSAgbGlicy91bmljb2RlL01ha2VmaWxlLmluLCBsaWJzL3VuaWNvZGUvY18yMTg2Ni5jLAoJICBsaWJzL3VuaWNvZGUvY3BtYXAucGwsIGxpYnMvdW5pY29kZS9jcHRhYmxlLmM6CglPbGVoIFIuIE55a3lmb3JjaHluIDxuaWNrQHB1LmlmLnVhPgoJVWtyYWluaWFuIGNvZGVwYWdlIDIxODY2IGFkZGVkIGFuZCByZXNwZWN0aXZlIGZpbGVzIGNvcnJlY3RlZC4gVHdvCglrZXlib2FyZCBsYXlvdXRzIChmb3IgVWtyYWluaWFuIGFuZCBSdXNzaWFuKSBhZGRlZC4KCgkqIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUhhY2sgdG8gZml4IHRoZSBjb21waWxlLgoKCSogd2luZG93cy93aW4uYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIGNhc2Ugd2hlbiBvbmx5IGhlaWdodCBpcyBzZXQgdG8gQ1dfVVNFREVGQVVMVC4KCgkqIGRvY3VtZW50YXRpb24vd2luZWRldi1jb2Rpbmcuc2dtbDoKCUJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCVRyaXZpYWwgbGFuZ3VhZ2UgY29ycmVjdGlvbnMgdG8gdGhlIFdpbmUgRGV2ZWxvcGVyJ3MgR3VpZGUgY29kaW5nCglzZWN0aW9uLgoKCSogZGxscy91c2VyL2VkaXQuYzogTGF1cmkgVHVsbWluIDxsYXVyaV9AdXQuZWU+CglSZXBvc2l0aW9uIGNhcmV0IGFmdGVyIHdpbmRvdyByZXNpemUuCgoJKiBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWQzZC92ZXJ0ZXhkZWNsYXJhdGlvbi5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglCZWdpbiBzdXBwb3J0IG9mIFZlcnRleERlY2xhcmF0aW9uIG9uIHdpbmVkM2QgdXNpbmcgZDNkOCBjb2RlIGJhc2UKCShoYW5kbGluZyBkM2Q4IGFuZCBkM2Q5IHNwZWNzKS4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOiBWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJQWRkIEZJWE1FIGZvciBmaWxlIHdpdGggYnJva2VuIGNvdW50ZXJzLgoKCSogZGxscy91c2VyL2VkaXQuYzogTGF1cmkgVHVsbWluIDxsYXVyaV9AdXQuZWU+CglEb24ndCByZWNhbGN1bGF0ZSBsaW5lIGluZGV4ZXMgaWYgbnVtYmVyIG9mIGxpbmVzIGRvZXNuJ3QgY2hhbmdlLgoKCSogdG9vbHMvd2lkbC90eXBlbGliX3N0cnVjdC5oLCB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgcHJvcGdldCBhbmQgcHJvcHB1dCBmdW5jdGlvbiBhdHRyaWJ1dGVzLgoJQ2xhcmlmeSB0aGUgbWVhbmluZyBvZiB0aGUgRktDQ0lDIGJpdCBmaWVsZC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2lwcml2Lmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUXVpdGUgYSBmZXcgZml4ZXM6CgktIEFsbG93IGZvciB0aGUgcXVlaW5nIG9mIGN1c3RvbSBhY3Rpb25zIHRvIHRyaWdnZXIgb24gdGhlCgkgIEluc3RhbGxFeGVjdXRlIG9yIEluc3RhbGxFeGVjdXRlQWdhaW4gYWN0aW9ucy4KCS0gYWxsb3cgZm9yIHRoZSBxdWVpbmcgb2YgY3VzdG9tIGFjdGlvbnMgdG8gdHJpZ2dlciBvbgoJICBJbnN0YWxsRmluYWxpemUuCgktIFByb3Blcmx5IHNldCB0aGUgQ3VzdG9tQWN0aW9uRGF0YSBwcm9wZXJ0eSBmb3Igc2FpZCBxdWV1ZWQgYWN0aW9ucy4KCS0gSW1wbGVtZW50IFJlZ2lzdGVyUHJvZHVjdC4KCS0gQmVnaW5uaW5nIGltcGxlbWVudGF0aW9uIG9mIEZvcmNlUmVib290LgoJLSBEb24ndCBraWxsIGluc3RhbGwgaWYgYW4gaXRlbSB0byBiZSBkdXBsaWNhdGVkIGRvZXMgbm90IGV4aXN0LgoJLSBXcml0ZSBvdXQgU291cmNlTGlzdCBhbmQgTGFzdFVzZWRTb3VyY2UgZm9yIHJlc3VtaW5nIGluc3RhbGxzLgoJLSBVc2UgcmVnc3ZyMzIgdG8gcmVnaXN0ZXIgc2VsZiByZWcgZGxscy4KCgkqIGRsbHMvc2hkb2N2dy9taXNjLmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGRlZmluaXRpb24gZm9yIE9wZW5VcmwuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jOgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBXSU5fSW50ZXJuYWxTaG93T3duZWRQb3B1cHMgZnVuY3Rpb24uCgoJKiBkbGxzL3R0eWRydi93bmQuYzoKCVN0b3JlIHRoZSB3aW5kb3cgaWQgYXMgYSBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGFjY2Vzc2luZyB0aGUgV05ECglzdHJ1Y3R1cmUgZGlyZWN0bHkuCglGZXRjaCB0aGUgdXBkYXRlIHJlZ2lvbiBmcm9tIHRoZSBzZXJ2ZXIgYW5kIHJlbW92ZSBhIGxvdCBvZiBvYnNvbGV0ZQoJY29kZS4KCgkqIGRsbHMva2VybmVsL2NwdS5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJUmV0dXJuIGEgZml4ZWQgZnJlcXVlbmN5IG9mIDExOTMxODIgSHogZm9yIHRoZSBQZXJmb3JtYW5jZSBDb3VudGVyLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgVHJhbnNhY3ROYW1lZFBpcGUgZm9yIHRoZSBub24tb3ZlcmxhcHBlZCBjYXNlLgoKCSogZGxscy9hdGwvYXRsLnNwZWMsIGRsbHMvYXRsL2F0bF9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBzb21lIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL29sZXByb3h5LmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBJbml0aWFsaXplIHBwdiBwb2ludGVyIGluIENsaWVudElkZW50aXR5X1F1ZXJ5SW50ZXJmYWNlIHRvIE5VTEwgYXMKCSAgYXBwcyBkZXBlbmQgb24gdGhpcy4KCS0gRG9uJ3QgcmVsZWFzZSBJUnBjUHJveHlCdWZmZXIgb24gaWZwcm94eSBkZXN0cnVjdGlvbiAtIHRoZSBjYWxsZXIKCSAgd2lsbCBkbyB0aGlzIGZvciB1cy4KCS0gTWFrZSBmaW5kX3Byb3h5X21hbmFnZXIgYWRkIGEgcmVmZXJlbmNlIHRvIHRoZSBwcm94eSBtYW5hZ2VyIGFuZAoJICBtYWtlIHByb3h5X21hbmFnZXJfY29uc3RydWN0IHJldHVybiBhbiBvYmplY3Qgd2l0aCBhIHZhbGlkCgkgIHJlZi1jb3VudC4KCS0gUmVtb3ZlIHN0cmF5IG5vdCBvcGVyYXRvciB0byBmaXggYSBtZW1vcnkgbGVhayAvIGNyYXNoIGluCgkgIHByb3h5X21hbmFnZXJfZGVzdHJveS4KCS0gTW9yZSBkZWJ1ZyBtZXNzYWdlcywgZXNwZWNpYWxseSBvbiBlcnJvcnMuCgktIEZpeCByZWYtY291bnQgbGVhayBpbiB0aGUgQ2xhc3MgRmFjdG9yeSBwcm94eS4KCS0gQWRkIGEgdGVzdCBjYXNlIGZvciBJQ2xhc3NGYWN0b3J5X0NyZWF0ZUluc3RhbmNlLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmM6IFBhdWwgdmFuIFNjaGF5Y2sgPHBvbGxla2VAZ21haWwuY29tPgoJUmVzZXQgdGhlIHR5cGUgZHJvcGRvd24gd2hlbiBzZWxlY3RpbmcgYW5vdGhlciBkcml2ZS4KCgkqIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIEdldEZpbGVWZXJzaW9uSW5mb1NpemVBIHRlc3RzIG9uIFdpbk1FLgoKCSogZGxscy9yc2FlbmgvcnNhZW5oLmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUF2b2lkIGNvZGUgZHVwbGljYXRpb24gYnkgbW92aW5nIGhhbmRsZSBsb29rdXAgaW50byBnZXRfYWxnaWRfaW5mby4KCgkqIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2QvaW5kZXhidWZmZXIuYywKCSAgZGxscy93aW5lZDNkL3Jlc291cmNlLmMsIGRsbHMvd2luZWQzZC9zdXJmYWNlLmMsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhidWZmZXIuYzoKCUpvcmlzIEh1aXplciA8am9yaXNodWl6ZXJAcGxhbmV0Lm5sPgoJR2V0IHJpZCBvZiBzb21lIFRSQUNFKC4uLiwgVGhpcy0+cmVzb3VyY2UucmVmKS4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUGFkIHNtYWxsIHN0cmluZ3Mgb3V0IHRvIGVpZ2h0IGJ5dGVzLgoJRml4ICdoYXMgZGVmYXVsdCB2YWx1ZXMnIGZsYWcuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG8gYSB2ZXJ5IGJhc2ljIGZpcnN0IGltcGxlbWVudGF0aW9uIG9mIE1zaUNvbmZpZ3VyZVByb2R1Y3RFeFcgZm9yCgltc2lleGVjIC9AICB3aGVuIHJ1biBhcyBhIHJlYm9vdC4KCUFsc28gYWRkIGEgbnVtYmVyIG9mIG5ldyBzdHVicyBmb3IgdGhlIG9mZmljZSB4cCBhbmQgMmszIGluc3RhbGwgYW5kCglzdGFydHVwIHByb2Nlc3MuCgoJKiBpbmNsdWRlL21zaS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBkZWZpbml0aW9uIGZvciB0aGUgVVNFUklORk9TVEFURSBlbnVtZXJhdGlvbi4KCgkqIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBzdHViIGltcGxlbWVudGF0aW9ucy4KCjIwMDUtMDEtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbXNnMTYuYywgaW5jbHVkZS93aW5wb3MuaCwgd2luZG93cy9kZWZ3bmQuYywKCSAgd2luZG93cy93aW5wb3MuYzoKCU1vdmVkIERlZldpbmRvd1Byb2MxNiB0byBtc2cxNi5jIGFuZCBjbGVhbmVkIHVwIGEgZmV3IHJlbGF0ZWQgdGhpbmdzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGluY2x1ZGUvd2luaW5ldC5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgYW5kIHRlc3QgSW50ZXJuZXRUaW1le0Zyb20sVG99U3lzdGVtVGltZXtBLFd9LgoJQ29ycmVjdCBzcGVsbGluZyBpbiBJbnRlcm5ldENoZWNrQ29ubmVjdGlvbkEuCgoJKiBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDkvaW5kZXhidWZmZXIuYywgZGxscy9kM2Q5L3N1cmZhY2UuYywgZGxscy9kM2Q5L3RleHR1cmUuYywKCSAgZGxscy9kM2Q5L3ZlcnRleGJ1ZmZlci5jLCBkbGxzL2QzZDkvdm9sdW1lLmMsCgkgIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lZDNkL3N1cmZhY2UuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL2QzZDl0eXBlcy5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIEhhbmRsZSBmYWlsdXJlcyB0byBhbGxvY2F0ZSBzdG9yYWdlIG1vcmUgZ3JhY2VmdWxseS4KCS0gT25seSBwcm90b3R5cGUgdGhlIGludGVyZmFjZXMgd2hpY2ggYXJlIHN1YmNsYXNzZWQgKEkgb3ZlcmRpZCBpdAoJICBsYXN0IHRpbWUhKS4KCS0gSW1wbGVtZW50IEdldC9TZXQgVGV4dHVyZSBhbmQgR2V0QmFja0J1ZmZlciwgcGx1cyBkZXZpY2UncwoJICBHZXREaXNwbGF5TW9kZSAvIEdldERldmljZUNhcHMuCgktIE1ha2Ugc29tZSBvZiB0aGUgZDNkOSBza2VsZXRvbiBjb2RlIGlzc3VlIGZpeG1lJ3MgdG8gaGlnaGxpZ2h0IGNvZGUKCSAgd2hpY2ggaGFzbid0IGJlZW4gbWlncmF0ZWQgeWV0LgoJLSBDb3JyZWN0IHRoZSBkM2Q5IGhlYWRlcnMgZm9yIEQzRFNVUkZBQ0VfREVTQyB3aGljaCBjYXVzZWQgc3RhY2sKCSAgY29ycnVwdGlvbiBpbiBkZW1vcy4KCgkqIGluY2x1ZGUvd2luc3ZjLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkZWZpbml0aW9ucyBmb3Igc2Vzc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy4KCgkqIGRsbHMvbXByL25ldHNwaS5oLCBkbGxzL21wci9ucHMuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9uZXRzcGkuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCU1ha2UgbmV0c3BpLmggcHJpdmF0ZSwgYXMgc29tZSBvZiBpdHMgZGVjbGFyYXRpb25zIGNvbmZsaWN0IHdpdGgKCW5wYXBpLmguICBTcG90dGVkIGJ5IFBhdWwgVnJpZW5zLgoKCSogZGxscy9zZXR1cGFwaS9xdWV1ZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ29weSB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSBTZXR1cERlZmF1bHRRdWV1ZUNhbGxiYWNrQSBhbmQgbWFrZSBpdAoJVy4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgbWlzc2luZyBicmVhayB0byBmaXggdHlwZWluZm8gdmVyc2lvbiByZWdyZXNzaW9uLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgUGF0aFVuRXhwYW5kRW52U3RyaW5nc1NIUmVnRW51bVVTVmFsdWV7QSxXfSwKCVNIUmVnQ3JlYXRlVVNLZXl7QSxXfSwgU0hSZWdEZWxldGVFbXB0eVVTS2V5e0EsV30sCglTSFJlZ0RlbGV0ZVVTVmFsdWV7QSxXfSwgU0hSZWdFbnVtVVNWYWx1ZXtBLFd9LgoKMjAwNS0wMS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL25vbmNsaWVudC5oLCB3aW5kb3dzL2RlZnduZC5jLAoJICB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJR2V0IHJpZCBvZiBub25jbGllbnQuaCBhbmQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZXhwb3J0ZWQgZnVuY3Rpb25zIGluCgl1c2VyMzIuc3BlYy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCVdoZW4gcGFyc2luZyBhbiBoZXgvb2N0IGludGVnZXIgdmFsdWUsIGNvcHkgdmFsdWUgdmVyYmF0aW0gaW4gVkFSSUFOVCwKCXJhdGhlciB0aGFuIGEgbmVnYXRlZCB2YWx1ZS4gQWRkIHRlc3QgY2FzZSBmb3IgdGhpcyBiZWhhdmlvci4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglBIHNtYWxsIHNwZWxsaW5nIGZpeCBhbmQgYSBzbWFsbCB1cGRhdGUgKHRoYW5rIHRvIEFuZHJlYXMgTW9ocikuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBjbHNpZCBtZW1iZXIgdG8gdGhlIG1hcnNoYWxlciBjbHNpZCB0byBmaXggY3VzdG9tCgltYXJzaGFsaW5nLgoKCSogZGxscy91c2VyL2VkaXQuYzogTGF1cmkgVHVsbWluIDxsYXVyaV9AdXQuZWU+CglNYWtlIGxvbmcgbGluZXMgYmVoYXZlIG5pY2VseS4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi9tb3VzZS5jLAoJICBkbGxzL3gxMWRydi9zY3JvbGwuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgd2luZG93cy9kZWZ3bmQuYzoKCUF2b2lkIG1vc3QgcmVmZXJlbmNlcyB0byB0aGUgaW50ZXJuYWxzIG9mIHRoZSBXTkQgc3RydWN0dXJlIGJ5IHBhc3NpbmcKCWFyb3VuZCBhbiB4MTFkcnZfd2luX2RhdGEgcG9pbnRlciBpbnN0ZWFkLgoKCSogZGxscy91c2VyL2VkaXQuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCVJlbW92ZWQgYSBjb3VwbGUgb2YgdW5uZWNlc3NhcnkgY2FsbHMgdG8gV0lOX1N1c3BlbmRXbmRzTG9jay4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJVXNlIGEgcmVnaXN0cnkga2V5IGZvciBjb3B5aW5nLCB0aGF0J3Mga25vd24gb24gZXZlcnkgc3lzdGVtLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRnIucmMsIGRsbHMvbXByL21wci5yYywgZGxscy9tcHIvbXByX0ZyLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfRnIucmMsIGRsbHMvb2xlZGxnL3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0ZyLnJjOgoJSm9uYXRoYW4gRXJuc3QgPEpvbmF0aGFuQEVybnN0RmFtaWx5LmNoPgoJVXBkYXRlZCBGcmVuY2ggcmVzb3VyY2VzLgoKCSogZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBpbmNsdWRlL3Zmdy5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgRHJhd0RpYkNoYW5nZVBhbGV0dGUsIERyYXdEaWJHZXRCdWZmZXIsCglEcmF3RGliVGltZSwgSUNTZXFDb21wcmVzc0ZyYW1leyxFbmQsU3RhcnR9LgoJRm9yd2FyZCBHZXRPcGVuRmlsZU5hbWVQcmV2aWV3IHRvIEdldE9wZW5GaWxlTmFtZVByZXZpZXdBLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglDaGFuZ2UgdGhlIG9yZGVyIG9mIFNyYyBhbmQgRHN0IGluIENvcHlLZXkgY2FsbHMvZnVuY3Rpb25zLgoKCSogd2luZG93cy93aW5wb3MuYzogU21hbGwgb3B0aW1pemF0aW9uIGluIFdJTlBPU19HZXRXaW5PZmZzZXQuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJUmVtb3ZlZCB1bnVzZWQgRm9yY2VXaW5kb3dSYWlzZSBmdW5jdGlvbi4KCgkqIGRsbHMvZDNkOS9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9yZXNvdXJjZS5jLAoJICBkbGxzL2QzZDkvc3VyZmFjZS5jLCBkbGxzL2QzZDkvdGV4dHVyZS5jLCBkbGxzL2QzZDkvdm9sdW1lLmMsCgkgIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9jdWJldGV4dHVyZS5jLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLAoJICBkbGxzL3dpbmVkM2QvaW5kZXhidWZmZXIuYywgZGxscy93aW5lZDNkL3N1cmZhY2UuYywKCSAgZGxscy93aW5lZDNkL3RleHR1cmUuYywgZGxscy93aW5lZDNkL3V0aWxzLmMsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhidWZmZXIuYywgZGxscy93aW5lZDNkL3ZvbHVtZS5jLAoJICBkbGxzL3dpbmVkM2Qvdm9sdW1ldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gQWRkIHRleHR1cmUgc3VwcG9ydCBmb3IgYWxsIHRoZSB0ZXh0dXJlIHR5cGVzIGZvciBkM2Q5LT53aW5lZDNkLgoJLSBBZGQgcHJvdG90eXBlcyBmb3IgdGhlIENPTSBpbnRlcmZhY2VzLgoJLSBGaXggc29tZSBpbmNvcnJlY3QgdHlwZXMgZnJvbSB0aGUgbGFzdCBwYXRjaC4KCgkqIGRsbHMvd2lubW0vd2lubW1fRGUucmM6IEtsZW1lbnMgRnJpZWRsIDxrbGVtZW5zX2ZyaWVkbEBnbXgubmV0PgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglTcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL21wci9tcHJfRGUucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRGUucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVVwZGF0ZSBHZXJtYW4gcmVzb3VyY2VzLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBkZWZpbml0aW9ucyBvZiBUTFMxUFJGIGFsZ29yaXRobSBpZGVudGlmaWVycy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9jbGlzdC5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJVXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9saWJyYXJpZXMuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVVzZSBzd2l0Y2ggc3RhdGVtZW50cyBpbnN0ZWFkIG9mIGlmLWNhc2NhZGVzLiBBdm9pZCB3YXJuaW5ncy4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglNb3ZlZCBITUFDIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSB0bwoJaW5pdF8vZmluYWxpemVfaGFzaC4KCVJlbW92ZWQgdGhlIHJlZHVuZGFudCBwS2V5Q29udGFpbmVyIGZ1bmN0aW9uIHBhcmFtZXRlciBmcm9tCglpbml0X2hhc2guCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBWVF9WQVJJQU5UIHN1cHBvcnQuCglGaXggZm9yIHRoZSBjYXNlIHdoZW4gdGhlcmUgaXMgbm8gaGVscHN0cmluZ2RsbC4KCUZpeCBmb3IgcGFyYW1ldGVyIGFycmF5cy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50YXRpb25zIGZvciBTZWxmUmVnTW9kdWxlcyBhbmQgUHVibGlzaEZlYXR1cmVzLgoJU2V0IGRlZmF1bHQgQUNUSU9OIHByb3BlcnR5IGZvciBJbnN0YWxsLgoJRGVmb3JtYXQgbW9yZSB0aGFuIEpVU1QgcHJvcGVydGllcyBwcm9wZXJseS4gQWxsb3dzIGZvciBGaWxlcyBhbmQKCUNvbXBvbmVudCBwYXRocyBpbiBkZWZvcm1hdC4KCVByb3Blcmx5IGRlZm9ybWF0IGEgTGF1bmNoQ29uZGl0aW9uIGZhaWx1cmUgZGlhbG9nIGJveC4KCVJlc29sdmUgYW5kIHNhdmUgcmVnaXN0cnkgS2V5cGF0aHMuCglXcml0ZSB0aGUgRmVhdHVyZXMgcHVibGlzaGVkIGtleXMgbW9yZSBjb3JyZWN0bHkuIFN0aWxsIHNvbWUKCXByb2JsZW1zLgoKCSogZGxscy9tc2kvbXNpLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXJzdCBwYXNzIGltcGxlbWVudCBpb24gb2YgTXNpUXVlcnlQcm9kdWN0U3RhdGVbQS9XXSBhcyB3ZWxsIGFzIGEgZmV3CglmaXhlcyBmb3IgTXNpR2V0Q29tcG9uZW50UGF0aC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL21hcnNoYWwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCB0YWJsZSBtYXJzaGFsaW5nLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUluY2x1ZGUgbmV3IHRlc3RzLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJUmVtb3ZlIHRoZSBjaGVja2luZy9zZXR0aW5nIG9mIHRoZSBkZWZhdWx0cyBpbiBUUkFDS0JBUl9DcmVhdGUuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6IFBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglSZW1vdmUgbmVlZGxlc3MgY2hlY2sgZm9yIGhvcml6b250YWwgb3IgdmVydGljYWwgcGFnZXIuCgoyMDA1LTAxLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkbGxzL250ZGxsL3N5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL2FzeW5jLmgsCgkgIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL01ha2VmaWxlLmluLAoJICBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL2FzeW5jLmgsIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLAoJICBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zaWduYWwuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBnb3QgcmlkIG9mIGluY2x1ZGUvYXN5bmMuaAoJLSBmaXhlZCBzb21lIG92ZXJsYXBwZWQgaXNzdWVzIGluIHNvY2tldCBoYW5kbGluZwoJLSBtb3ZlZCBrZXJuZWwzMi5DYW5jZWxJbyBpbXBsZW1lbnRhdGlvbiB0byBudGRsbAoKCSogcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLCBwcm9ncmFtcy93aW5lY2ZnL2F1ZGlvLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvbGlicmFyaWVzLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJQ3Jlc3RleiBMZW9uYXJkIDxjbGVvbmFyZEBnby5ybz4KCUZpeCBhZGQgYXBwbGljYXRpb24gKG1lbW9yeSBlcnJvcikuCglGaXggYXBwbHkgYnV0dG9uIGxpZ2h0aW5nIHVwIGluIGF1ZGlvIHRhYi4KCUZpeCB2aWRlbyB0YWIoY3Jhc2ggd2hlbiBjaGVja2luZyBkZXNrdG9wLCBhcHBseSBidXR0b24gbm90IGxpZ2h0aW5nCgl1cC4KCURlYWwgd2l0aCBpbnZhbGlkIERlc2t0b3AgcmVnaXN0cnkgdmFsdWUgaW4gdmlkZW8gdGFiLgoJRml4IGFwcGx5IGJ1dHRvbiBpbiBsaWJyYXJpZXMgdGFiLgoJQ2xlYW5lZCB1cCBhbmQgZG9jdW1lbnRlZCBhbGwgdGhlIGNvbnZlcnNpb25zIGluIHRoZSBsaWJyYXJpZXMgdGFiLgoKCSogZGxscy9pdHNzL2l0c3MuYywgZGxscy9pdHNzL2l0c3Muc3BlYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBNT0RVTEVOQU1FIHByZWZpeCBmcm9tCglEbGx7R2V0Q2xhc3NPYmplY3QsUmVnaXN0ZXJTZXJ2ZXIsQ2FuVW5sb2FkTm93fSBmdW5jdGlvbnMuCgoJKiB0b29scy93aWRsL3dyaXRlX21zZnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBCU1RSIGRlZmF1bHQgdmFsdWVzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBSZW1vdmUgb2Jzb2xldGUgc3RydWN0cywgcmVhcnJhbmdlIHRoaW5ncyB0byBncm91cCB0aGUgc3RydWN0cwoJICB0b2dldGhlciBhbmQgdG8gZ3JvdXAgc2ltaWxhciBmdW5jdGlvbnMuCgktIERvY3VtZW50IHRocmVhZC1zYWZldHkgb2YgbWVtYmVycyBvZiBzdHJ1Y3RzLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBwcm94eSBzaHV0ZG93biB0ZXN0IHN1Y2NlZWQgYnkgcmVsZWFzaW5nIHRoZSBjaGFubmVsIG9uCglkaXNjb25uZWN0LgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy94MTFkcnYvbW91c2UuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnRhYi5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBYMTEgZXZlbnQgdGltaW5nIHNvIHRoYXQgd2UgY29ycmVjdGx5IGNvcnJlbGF0ZSBYMTEgdGltaW5nIGFuZAoJV2luZSB0aW1pbmcgYW5kIGR5bmFtaWNhbGx5IGFkanVzdCBpdCBhcyB3ZSBnby4KCgkqIGRsbHMvbXNpL21zaS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWN0dWFsbHkgc3RhcnQgb24gYW4gaW1wbGVtZW50aW9uIGZvciBNc2lHZXRDb21wb25lbnRQYXRoVyB0aGF0IHNob3VsZAoJaGFuZGxlIGFsbCBrZXlwYXRocyB0aGF0IGFyZSBmaWxlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL29sZTIuYywKCSAgZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIGRvY3VtZW50YXRpb24gZm9yIG1vc3QgQ28qIGZ1bmN0aW9ucy4KCS0gTW92ZSBzZXZlcmFsIGZ1bmN0aW9ucyBpbnRvIGRpZmZlcmVudCBmaWxlcyB0byBncm91cCB0aGVtIHdpdGgKCSAgc2ltaWxhciBmdW5jdGlvbnMuCgoJKiBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsIGRsbHMvZG1zeW50aC9zeW50aC5jLAoJICBkbGxzL2Rtc3ludGgvc3ludGhzaW5rLmMsIGRsbHMvZHBuZXQvYWRkcmVzcy5jLCBkbGxzL2RwbmV0L2NsaWVudC5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIFVzZSBJbnRlcmxvY2tlZCogaW5zdGVhZCBvZiArKy8tLSBpbiBBZGRSZWYvUmVsZWFzZS4KCS0gVXNlIG9ubHkgc3RvcmVkIHJlc3VsdCBvZiBJbnRlcmxvY2tlZCogaW4gQWRkUmVmL1JlbGVhc2UuCgktIEV4cGFuZCBUUkFDRXMgdG8gZGlzcGxheSB0aGUgcmVmIGNvdW50LgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOiBKb3JpcyBIdWl6ZXIgPGpvcmlzaHVpemVyQHBsYW5ldC5ubD4KCS0gYWRkIGZpbGVfb3BlcmF0aW9uX2RlbGV0ZQoJLSBhZGQgZmlsZV9vcGVyYXRpb25fY2hlY2tGbGFncwoJLSB1c2UgdGhlc2UgaW4gU0hGaWxlT3BlcmF0aW9uVyByZXBsYWNpbmcgaW5saW5lIGNvZGUKCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBpbmNsdWRlL3dpbnN2Yy5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4LCBhZGQgYW5kIHJlYXJyYW5nZSB3aW5zdmMuaCBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJSW5pdGlhbGl6ZSByYyBpbiBjcmVhdGVfY29tcG9uZW50X2RpcmVjdG9yeSgpLgoKCSogdG9vbHMvd2lkbC90eXBlbGliLmMsIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBpbnRlcmZhY2UgcHRycyBpbmNsdWRpbmcgdGhlIHNwZWNpYWwgY2FzZXMgZm9yCglJVW5rbm93biBhbmQgSURpc3BhdGNoLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJR2V0RmlsZU5hbWUzMVcgc2hvdWxkIGNhbGwgdW5pY29kZSB2ZXJzaW9uIG9mIEZEMzFfQWxsb2NQcml2YXRlLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBKdXN0aW4gQ2hldnJpZXIgPGpjaGV2cmllckBuZXhpY29tLm5ldD4KCUNyZWF0ZWQgdW5pdCB0ZXN0IGZvciBTUElfe0dFVCxTRVR9TUlOSU1JWkVETUVUUklDUy4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CgktIEltcGxlbWVudGVkIFNQSV9HRVRNSU5JTUlaRURNRVRSSUNTIGNhbGN1bGF0ZWQgZnJvbSB2YWx1ZXMgcmV0dXJuZWQKCSAgYnkgR2V0U3lzdGVtTWV0cmljcy4KCS0gSW1wbGVtZW50ZWQgU1BJX1NFVE1JTklNSVpFRE1FVFJJQ1MuIERldGVybWluZWQgdGhhdCB0aGUgdmFsdWVzIHNldAoJICBoZXJlIGFyZSB2YWxpZCBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbiBvbmx5IGFuZCB3aWxsIG5vdCBwZXJzaXN0CgkgIGFjcm9zcyByZWJvb3RzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYywgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFRoZSBhcGFydG1lbnQgcmVmZXJlbmNlIHNob3VsZCBiZSBoZWxkIHdoaWxlIHRoZSBzdHViIG1hbmFnZXIKCSAgcmVmZXJlbmNlIGlzIGhlbGQuCgktIEZpeCBzYW1lIGFwYXJ0bWVudC11bm1hcnNoYWwgZGV0ZWN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIHRoZSBMVkNGTVRfe0xFRlQsUklHSFQsQ0VOVEVSfSBlbnVtZXJhdGlvbiBmbGFncyBwcm9wZXJseS4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJSW4gaW50MjFfaW9jdGwgLSBnZXQgZGV2aWNlIGRhdGEtLCBzZXQgdGhlICJpcyBjb25zb2xlIiBiaXRzIGlmIHRoZQoJZGV2aWNlIGhhbmRsZSBpcyBhIHR0eSBvciBhIHByb3BlciBjb25zb2xlIGlvIGhhbmRsZS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIGFsbCBzZXJ2aWNlIHN0dWJzIHRvZ2V0aGVyLCBtYWtlIHRoZW0gY29uc2lzdGVudC4KCgkqIGRsbHMvZG11c2ljL2J1ZmZlci5jLCBkbGxzL2RtdXNpYy9jbG9jay5jLCBkbGxzL2RtdXNpYy9jb2xsZWN0aW9uLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLAoJICBkbGxzL2RtdXNpYy9kb3dubG9hZC5jLCBkbGxzL2RtdXNpYy9kb3dubG9hZGVkaW5zdHJ1bWVudC5jLAoJICBkbGxzL2RtdXNpYy9pbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL3BvcnQuYywKCSAgZGxscy9kbXVzaWMvcG9ydGRvd25sb2FkLmMsIGRsbHMvZG11c2ljL3RocnUuYywgZGxscy9kc3dhdmUvZHN3YXZlLmMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZV9tYWluLmMsIGRsbHMvZHhkaWFnbi9jb250YWluZXIuYywKCSAgZGxscy9keGRpYWduL3Byb3ZpZGVyLmMsIGRsbHMvbXNkbW8vZG1vcmVnLmMsIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsCgkgIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9zaGRvY3Z3L2NsYXNzaW5mby5jLAoJICBkbGxzL3NoZG9jdncvZXZlbnRzLmMsIGRsbHMvc2hkb2N2dy9mYWN0b3J5LmMsIGRsbHMvc2hkb2N2dy9taXNjLmMsCgkgIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgZGxscy9zaGRvY3Z3L3BlcnNpc3QuYywKCSAgZGxscy9zaGRvY3Z3L3dlYmJyb3dzZXIuYywgZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jLAoJICBkbGxzL3NoZWxsMzIvY3BhbmVsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsCgkgIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSBVc2UgSW50ZXJsb2NrZWQqIGluc3RlYWQgb2YgKysvLS0gaW4gQWRkUmVmL1JlbGVhc2UuCgktIFVzZSBvbmx5IHN0b3JlZCByZXN1bHQgb2YgSW50ZXJsb2NrZWQqIGluIEFkZFJlZi9SZWxlYXNlLgoJLSBFeHBhbmQgVFJBQ0VzIHRvIGRpc3BsYXkgdGhlIHJlZiBjb3VudC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRmlyc3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIFdyaXRlSW5pVmFsdWVzIGFjdGlvbi4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG9uJ3QgdXNlIHRoZSBwaXBlIGNhY2hpbmcgY29kZSBiZWNhdXNlIGl0IGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkgYXQKCSAgdGhlIG1vbWVudC4KCS0gQWx3YXlzIHdyaXRlIGRpc2Nvbm5lY3QgcmVwbHkgcGFja2V0LCBldmVuIGluIGZhaWx1cmUgY2FzZXMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9zcHkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgV01fR0VUT0JKRUNUIGRlZmluaXRpb24sIHJlbW92ZSBXTV9PVEhFUldJTkRPV0NSRUFURUQgZGVmaW5lLgoKCSogZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdWdnZXN0IHRlc3RpbmcgcGF0Y2hlcyBpbiBhIGdlbnRsZXIgd2F5LgoJRW5jb3VyYWdlIHBlb3BsZSB0byBzdWJtaXQgdGVzdHMgd2l0aCB0aGVpciBwYXRjaGVzIGFzIHdlbGwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYzogS2xlbWVucyBGcmllZGwgPGtsZW1lbnNfZnJpZWRsQGdteC5uZXQ+CglVcGRhdGUgR2VybWFuIGxhbmd1YWdlIGZpbGUuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW51cCBzZXJ2aWNlIGhhbmRsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbmNyZWFzZSB0aGUgcmVxdWlyZWQgcmVjdGFuZ2xlIHNpemUgYmVmb3JlIGRyYXdpbmcgYmlnICsvLS4KCgkqIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYywgZGxscy9nZGkvdGVzdHMvbWV0YWZpbGUuYzoKCVdhbHQgT2didXJuIDxyZXViZW5AdWdjcy5jYWx0ZWNoLmVkdT4KCUZpeCBCU19QQVRURVJOIGJydXNoZXMgaW4gbWZkcnYuICBVbi1jb21tZW50IHRoZSBjb3JyZXNwb25kaW5nIHRlc3QuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVJldHVybiBDTEFTU19FX05PQUdHUkVHQVRJT04gaWYgcFVua091dGVyIGlzIG5vbi1udWxsLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDdXN0b20gYWN0aW9ucyBjYW4gaGF2ZSBudWxsIGluIHRoZWlyIHRhcmdldCBwYXJhbWV0ZXJzLCBoYW5kbGUgdGhhdAoJd2l0aG91dCBjcmFzaGluZy4gQWxzbyBlbmFibGUgZGVmb3JtYXRpbmcgb2YgbGluZXMgZ3JlYXRlciB0aGFuIDI1NgoJY2hhcmFjdGVycy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEZXN0cm95IHN0dWJzIG9uIGFwYXJ0bWVudCBzaHV0ZG93bi4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGluY2x1ZGUvcnBjZGNlLmg6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJRml4IHByb3RvdHlwZXMgYWNjb3JkaW5nIHRvIFBTREsuCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglGb3JjZSBjb250ZXh0IHN3aXRjaCBvbiBjaGFuYnVmIGRpc2Nvbm5lY3QgdG8gYXZvaWQgYSByYWNlIGluIHRoZSB0ZXN0CglzdWl0ZS4KCgkqIGluY2x1ZGUvd2luZS9saXN0Lmg6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIExJU1RfRk9SX0VBQ0hfRU5UUlkgbGlzdCBoZWxwZXIuCgoJKiBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywKCSAgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi90bXBmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gdXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoJLSBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZSBJbnRlcmxvY2tlZCBmdW5jdGlvbnMgYW5kIHVzZSBvbmx5IHRoaXMuCgoyMDA1LTAxLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUNvSW5pdGlhbGl6ZShFeCkgc2hvdWxkIHJldHVybiBTX0ZBTFNFIHdoZW4gQ09NIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQKCWZvciB0aGUgY3VycmVudCB0aHJlYWQuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCB3aW5kb3dzL2RjZS5jOgoJVXNlIHRoZSBleHBvcnRlZCBmdW5jdGlvbnMgU2F2ZURDL1Jlc3RvcmVEQyBpbnN0ZWFkIG9mIFNldERDU3RhdGUxNi4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvZHNjYXB0dXJlLmMsIGRsbHMvd2lubW0vd2luZW9zcy9kc3JlbmRlci5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CgktIFVzZSBJbnRlcmxvY2tlZCogaW5zdGVhZCBvZiArKy8tLSBpbiBBZGRSZWYvUmVsZWFzZS4KCS0gVXNlIG9ubHkgc3RvcmVkIHJlc3VsdCBvZiBJbnRlcmxvY2tlZCogaW4gQWRkUmVmL1JlbGVhc2UuCgktIEV4cGFuZCBUUkFDRXMgdG8gZGlzcGxheSB0aGUgcmVmIGNvdW50LgoKCSogZGxscy91cmxtb24vc2VjX21nci5jLCBkbGxzL3VybG1vbi91bW9uLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gVXNlIG9ubHkgc3RvcmVkIHJlc3VsdCBvZiBJbnRlcmxvY2tlZCogaW4gQWRkUmVmL1JlbGVhc2UuCgktIEV4cGFuZCBUUkFDRXMgdG8gZGlzcGxheSB0aGUgcmVmIGNvdW50LgoKCSogZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglVc2Ugb25seSBzdG9yZWQgcmVzdWx0IG9mIEludGVybG9ja2VkKiBpbiBBZGRSZWYvUmVsZWFzZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEb2N1bWVudCBDb1NldFN0YXRlICYgQ29HZXRTdGF0ZS4KCS0gUmV3cml0ZSB0aGVtIHRvIG9ubHkgcmV0cmlldmUgVExTIGluZm8gb25jZS4KCS0gUmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2UgaW4gQ09NX0N1cnJlbnRJbmZvLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB3aW5lX21hcnNoYWxfZGF0YTogaXQgaXMgdW5uZWVkZWQgYW5kIHRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgaW4KCVNURE9CSlJFRi4KCgkqIGRsbHMvc2hsd2FwaS9hc3NvYy5jLCBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLAoJICBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCS0gdXNlIG9ubHkgc3RvcmVkIHJlc3VsdCBvZiBJbnRlcmxvY2tlZCogaW4gQWRkUmVmL1JlbGVhc2UKCS0gZXhwYW5kIFRSQUNFcyB0byBkaXNwbGF5IHRoZSByZWYgY291bnQKCgkqIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSBGaXggbG9naWMgaW4gU3RyZWFtX2ZuUmVsZWFzZSwgcmVmY291bnQgc2hvdWxkIGJlIGRlY3JlbWVudGVkIGJlZm9yZQoJICB0aGUgdGVzdCBmb3IgMC4KCS0gVXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gU3RyZWFtX2ZuUmVsZWFzZSAuCgktIFN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIEludGVybG9ja2VkIGZ1bmN0aW9ucyBhbmQgdGhpcyBpbiB0aGUKCSAgVFJBQ0UuCgoJKiB0b29scy93aWRsL3R5cGVsaWIuYywgdG9vbHMvd2lkbC90eXBlbGliLmgsIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciB0eXBlIGVuY29kaW5nLiAgKEludGVyZmFjZSBwdHJzIHN0aWxsIG5vdCB0aGVyZSB5ZXQpLgoKCSogZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRm9yY2UgY3JlYXRpb24gb2YgdGhyZWFkIHF1ZXVlIHRvIHN0b3AgUG9zdFRocmVhZE1lc3NhZ2UgZnJvbQoJICBmYWlsaW5nLgoJLSBSZW1vdmUgaW5jb3JyZWN0IGNvbW1lbnQuCgoJKiBkbGxzL3VzZXIvc3lzcGFyYW1zLmM6IEp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJLSBSZXZlcnQgcHJldmlvdXMgY2hhbmdlIG9mIGJvcmRlciBtZXRyaWMgdG8gcmVmZXJlbmNlIHRoZQoJICByZWdpc3RyeS4gVGVzdGluZyBvbiBXaW45OC9XaW5YUCBzaG93ZWQgdGhhdCByZWdhcmRsZXNzIG9mIHRoZQoJICAiQm9yZGVyV2lkdGgiIHZhbHVlIENNX0N7WCxZfUJPUkRFUiBhbHdheXMgcmV0dXJucyAxLgoJLSBQb2ludCBTUElfU0VUQk9SREVSIHRvICJCb3JkZXJXaWR0aCIgdW5kZXIgIkhLQ1VcQ29udHJvbAoJICBQYW5lbFxEZXNrdG9wXFdpbmRvd01ldHJpY3MiIGluc3RlYWQgb2YgIkhLQ1VcQ29udHJvbCBQYW5lbFxEZXNrdG9wIgoJICB0byBtYWtlIGl0IG1hdGNoIFdpbmRvd3MuCgoJKiBpbmNsdWRlL3dpbmUvbGlzdC5oOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgTElTVF9GT1JfRUFDSF9TQUZFIC0gYSBsaXN0IGl0ZXJhdGlvbiBtYWNybyB0aGF0IGlzIHNhZmUgYWdhaW5zdAoJcmVtb3ZhbC4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSB3YXkgYXBhcnRtZW50cyBhcmUgdXNlZCBoYXMgY2hhbmdlZCwgc28gZml4IHVwIHRoZSBoYWNrcyBpbiB0aGUKCVJQQyBjb2RlIHRoYXQgaGF2ZW4ndCB5ZXQgYmVlbiB1cGRhdGVkLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSBNVEEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHNvIHRoYXQgcHJveGllcyBhbmQgb3RoZXIgcmVzb3VyY2VzCgkgIGFyZSBmcmVlZCBhdCB0aGUgcHJvcGVyIHRpbWUuCgktIENoYW5nZWQvcmVtb3ZlZCBzb21lIGluY29ycmVjdCBjb21tZW50cyByZWdhcmRpbmcgYXBhcnRtZW50cy4KCgkqIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywgZGxscy9kbWNvbXBvcy9jaG9yZG1hcHRyYWNrLmMsCgkgIGRsbHMvZG1jb21wb3MvY29tcG9zZXIuYywgZGxscy9kbWNvbXBvcy9zaWducG9zdHRyYWNrLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSB1c2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgktIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIEludGVybG9ja2VkIGZ1bmN0aW9ucyBhbmQgdXNlIG9ubHkgdGhpcy4KCjIwMDUtMDEtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNTAxMTEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDUtMDEtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywgZGxscy9kbWltZS9ncmFwaC5jLAoJICBkbGxzL2RtaW1lL2x5cmljc3RyYWNrLmMsIGRsbHMvZG1pbWUvbWFya2VydHJhY2suYywKCSAgZGxscy9kbWltZS9wYXJhbWNvbnRyb2x0cmFjay5jLCBkbGxzL2RtaW1lL3BhdHRlcm50cmFjay5jLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3NlZ21lbnRzdGF0ZS5jLCBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3NlcXRyYWNrLmMsIGRsbHMvZG1pbWUvc3lzZXh0cmFjay5jLAoJICBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYywgZGxscy9kbWltZS90aW1lc2lndHJhY2suYywKCSAgZGxscy9kbWltZS90b29sLmMsIGRsbHMvZG1pbWUvd2F2ZXRyYWNrLmM6CglQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJLSB1c2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgktIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlIEludGVybG9ja2VkIGZ1bmN0aW9ucyBhbmQgdXNlIG9ubHkgdGhpcy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUdpdmUgYSBtb3JlIGluZm9ybWF0aXZlIGVycm9yIHdoZW4gYSBETEwgZmFpbHMgdG8gaW5pdGlhbGl6ZSBkdXJpbmcKCXN0YXJ0dXAuCgoJKiBkbGxzL3VzZXIvbWVudS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBBbHQgcHJlc3MvcmVsZWFzZSB0ZXN0IGFjdHVhbGx5IHBhc3MgZm9yIG5vdCBtYW5hZ2VkIHdpbmRvd3MuCgoJKiBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL21zaS9tc2kuYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CglVc2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggV21DcmVhdGVDdXN0b21EaWFsb2dTZXEgbWVzc2FnZSBzZXF1ZW5jZSBmb3IgMjU2IGNvbG9yIG1vZGUuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJQ29ycmVjdGVkIHRlc3RpbmcgZm9yIG11bHRpdGhyZWFkZWQgKGJhc2VkIHVwb24gb2JzZXJ2YXRpb25zIGJ5IFBhdWwKCVZyaWVucywgQ2hyaXN0aWFuIENvc3RhIGFuZCBSb2JlcnQgU2hlYXJtYW4pLgoJQWRkZWQgVFJBQ0UgZm9yIGludmVzdGlnYXRpbmcgT1hJRCBlcnJvcnMuCgoJKiBkbGxzL3F1YXJ0ei9yZWdzdnIuYzogUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCUFkZCBhbiBleHRyYSBjbGFzcyB0byByZWdpc3Rlci4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIHNlcnZlci93aW5kb3cuYzoKCURlc2t0b3Agd2luZG93IGlzIHJlcGFpbnRlZCBvbiBXTV9FUkFTRUJLR05ELCBpdCBtdXN0IG5ldmVyIGdldCBhCglXTV9QQUlOVC4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmM6IFdhcm5pbmcgZml4LgoKCSogZGxscy91c2VyL2NvbW0xNi5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglSZWFkL3dyaXRlIGNvbXBsZXRpb24gZnVuY3Rpb25zIGdldCBXaW5kb3dzIGVycm9yIGNvZGVzLCBub3QgTlQgc3RhdHVzCgljb2Rlcy4KCgkqIGRsbHMvdXNlci91c2VyX3ByaXZhdGUuaCwgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCB3aW5kb3dzL2NsaXBib2FyZC5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUdldCByaWQgb2YgVy0+QSBjYWxscy4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCW1lbWljbXBXKCkgY291bnQgYXJlIFdDSEFSJ3Mgbm90IGJ5dGVzLiBGaXhlcyBvcGVuaW5nIENPTiBkZXZpY2UuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVGVzdHMgYW5kIGZpeGVzIGZvciBTdGdPcGVuU3RvcmFnZS4KCgkqIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJV2FpdCB1bnRpbCB0aGUgdGhyZWFkIGhhcyBjcmVhdGVkIGl0cyBtZXNzYWdlIHF1ZXVlIGJlZm9yZSBwb3N0aW5nIGEKCW1lc3NhZ2Ugb3RoZXJ3aXNlIGl0IHdpbGwgYmUgbG9zdC4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnMvd3BwL3ByZXByb2MuYzoKCVLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCUFkZGVkIG1pc3NpbmcgZGVjbGFyYXRpb25zIGluIHNvbWUgaGVhZGVycy4KCgkqIGRsbHMvb2xlMzIvdGVzdHMvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgdGVzdHMgZm9yIHRyeWluZyB0byB1bm1hcnNoYWwgZnJvbSBhIGJhZCBzdHJlYW0gYW5kIGZvciB0ZXN0aW5nCgl3aGF0IGludGVyZmFjZXMgdGhlIHByb3h5IGV4cG9zZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEb2N1bWVudCBob3cgdGhyZWFkLXNhZmV0eSBpcyBlbnN1cmVkIGZvciBlYWNoIG1lbWJlciBvZiB0aGUKCSAgc3R1Yl9tYW5hZ2VyIGFuZCBpZnN0dWIgc3RydWN0cy4KCS0gTWFrZSBzdHViX21hbmFnZXIgcmVmIGNvdW50ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgZ2V0IGZyZWVkIHdoaWxzdAoJICBpdCBpcyBzdGlsbCBiZWluZyB1c2VkLgoJLSBpZnN0dWJzIGFyZSBub3cgZnJlZWQgb25seSB3aGVuIHRoZSBjb250cm9sbGluZyBzdHViX21hbmFnZXIgaXMgZnJlZWQuCgktIFJlbmFtZSBzdHViX21hbmFnZXJfcmVmL3VucmVmIHRvIHN0dWJfbWFuYWdlcl9leHRfYWRkcmVmL3JlbGVhc2UKCSAgcmVzcGVjdGl2ZWx5IGFuZCBtYWtlIHRoZW4gdGFrZSBhbiB1bnNpZ25lZCBsb25nIHRvIHByZXZlbnQKCSAgbWFsaWNpb3VzIGNhbGxlcnMgZnJvbSBwYXNzaW5nIGluIGEgbmVnYXRpdmUgdmFsdWUgYW5kIGNvcnJ1cHRpbmcKCSAgdGhlIHJlZiBjb3VudC4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbW9yZSB0ZXN0cyBmb3Iga2V5Ym9hcmQvbWVudSBhY3RpdmF0aW9uIGJlaGF2aW91ciwgbWFrZSB0aGUgdGVzdHMKCXBhc3MgdW5kZXIgV2luZS4KCgkqIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVGVzdCBhbmQgZml4IGEgZmV3IHByb2JsZW1zIHdpdGggT0xFIHN0b3JhZ2Ugc3RyZWFtcy4KCgkqIGRvY3VtZW50YXRpb24vb2xlLnNnbWw6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCU1pbm9yIHR5cG8gY29ycmVjdGlvbiBhbmQgdGVybSBleHBhbnNpb24gY2hhbmdlcy4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEb24ndCB1c2UgYW4gaW52YWxpZCBmaWxlIGhhbmRsZS4gSW4gdGhpcyBjYXNlIGludmFsaWQgZmlsZSBoYW5kbGUKCSAgbWVhbnMgdGhhdCB0aGUgZmlsZSBoYXNuJ3QgeWV0IGJlZW4gY3JlYXRlZC4KCS0gT25seSBjYWxsIEdldEZpbGVUaW1lIHdoZW4gd2UgYXJlIGJlaW5nIGxvZ2dlZCBmb3IgYSB0aW55CgkgIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LgoJLSBSZWluZGVudCB0byA0IHNwYWNlcy4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBEcmF3Rm9jdXNSZWN0IGZ1bmN0aW9uIHRvIGRyYXcgdGhlIGZvY3VzIHJlY3QsIGluc3RlYWQgb2YgYQoJYnJva2VuIGhvbWUtYnJld2VkIHNvbHV0aW9uLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb24ndCBzb3J0IHRoZSBjaGlsZHJlbiBvZiBNeSBDb21wdXRlciBpbiBzaGVsbCBicm93c2UgZm9yIGZvbGRlcgoJZGlhbG9nLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb24ndCBoaWdobGlnaHQgdGV4dCBpbiBub24tVFZTX1RSQUNLU0VMRUNUIG1vZGUuCgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGRsbCBoYW5kbGluZy4KCVRha2UgRExMX1BBVEggYW5kIExJQlJBUklFUyBpbnRvIGFjY291bnQuCglTaW1wbGlmeSBhIGNoZWNrIGZvciBwYXRocyB0aGF0IGRvbid0IHN0YXJ0IHdpdGggYSAnLycuCgoJKiB0b29scy93aWRsL3R5cGVsaWJfc3RydWN0LmgsIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBoZWxwKiBhdHRyaWJ1dGVzIGZvciB0eXBlaW5mb3MgYW5kIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbW9yZSB0ZXN0cyBmb3Iga2V5Ym9hcmQvbWVudSBhY3RpdmF0aW9uIGJlaGF2aW91ciwgbWFrZSB0aGUgdGVzdHMKCXBhc3MgdW5kZXIgV2luZS4KCjIwMDUtMDEtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbGlzdGJveC5jLCBkbGxzL3VzZXIvdGVzdHMvbGlzdGJveC5jOgoJTGF1cmkgVHVsbWluIDxsYXVyaV9AdXQuZWU+CglGaXhlcyB0byB0aGUgaGFuZGxpbmcgb2YgTEJTX0VYVEVOREVEU0VMIHN0eWxlLCB3aXRoIHRlc3RzLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaCwKCSAgdG9vbHMvd2lkbC93cml0ZV9tc2Z0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHRoZSBoZWxwKiBhdHRyaWJ1dGVzIG9uIHR5cGUgbGlicmFyaWVzLgoKCSogcHJvZ3JhbXMvd2luZWJyb3dzZXIvbWFpbi5jOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJSWYgdGhlIGFyZ3VtZW50IGlzIGEgbG9jYWwgZmlsZSwgcGFzcyBpdHMgVW5peCBuYW1lIHRvIHRoZSBicm93c2VyLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9jaGlsZHduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwKCSAgcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOgoJQ3Jlc3RleiBMZW9uYXJkIDxjbGVvbmFyZEBnby5ybz4KCUltcGxlbWVudCBSZWZyZXNoLgoJRml4IGJ1ZyB3aXRoIGFsbCBIS0VZXyByb290cyBhbHdheXMgc2hvd2luZyBleHBhbmRhYmxlLgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBXUFVDb21wbGV0ZU92ZXJsYXBwZWRSZXF1ZXN0LAoJV1NBRHVwbGljYXRlU29ja2V0VywgV1NBRW51bU5hbWVTcGFjZVByb3ZpZGVyc3tBLFd9LCBXU0FHZXRRT1NCeU5hbWUsCglXU0FHZXRTZXJ2aWNlQ2xhc3NJbmZve0EsV30sIFdTQUdldFNlcnZpY2VDbGFzc05hbWVCeUNsYXNzSWR7QSxXfSwKCVdTQUxvb2t1cFNlcnZpY2VFbmQsIFdTQUxvb2t1cFNlcnZpY2VOZXh0e0EsV30sCglXU0FQcm92aWRlckNvbmZpZ0NoYW5nZSwgIFdTQVNldFNlcnZpY2V7QSxXfSwgV1NDRW5hYmxlTlNQcm92aWRlciwKCVdTQ0dldFByb3ZpZGVyUGF0aCwgV1NDSW5zdGFsbE5hbWVTcGFjZSwgIFdTQ1dyaXRlUHJvdmlkZXJPcmRlci4KCUltcGxlbWVudGF0aW9ucyBmb3IgV1NBTnRvaGwsIFdTQU50b2hzLCBXU0FTb2NrZXRBLT5XIGNyb3NzY2FsbC4KCUF2b2lkIE5VTEwgZGVyZWZlcmVuY2VzIGluIFdTQVN0cmluZ1RvQWRkcmVzc3tBLFd9IGFuZAoJV1NBQWRkcmVzc1RvU3RyaW5ne0EsV30uCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggaW1hZ2UgbGlzdCBtYXNrIGFuZCBibGVuZGluZy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJT25seSByZXBvcnQgdGhlIHVuc3VwcG9ydGVkIGZsYWdzLgoJS2VlcCBxdWlldCBhYm91dCBoaW50cy4KCgkqIGRsbHMvbXByL21wci5yYywgZGxscy9tcHIvbXByX0VuLnJjLCBkbGxzL21wci9tcHJyZXMuaCwKCSAgZGxscy9tcHIvbnBzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgcHJveHkgYXV0aGVudGljYXRpb24gZGlhbG9nLgoKCSogcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCURlbGV0ZSB0aGUgXHIgbm90IHRoZSBcbiBpbiBQUklOVEVSUk9SLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglEbyBub3QgYXBwbHkgY2hhbmdlcyBqdXN0IGJlY2F1c2UgUXVlcnlEb3NEZXZpY2UgcmV2ZXJzZWQgdGhlCglzbGFzaGVzLgoJQ2hhbmdlIGFuIEVSUiB0byBhIFdBUk4sIGl0J3MgY29tbW9uIGZvciBpdCB0byBvY2N1ci4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IEV2YW4gRGVhdWJsIDx3aW5lQHdhcnBlZHZpZXcuY29tPgoJR2V0SXRlbUEvVyBvbiBoZWFkZXIgY29udHJvbHMgc2hvdWxkIGhhbmRsZSBtZXNzYWdlIGV2ZW4gaWYgaW5kZXggaXMKCWludmFsaWQuCgoJKiB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3dpZGx0eXBlcy5oLCB0b29scy93aWRsL3dyaXRlX21zZnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3Igb3B0aW9uYWwgYXJndW1lbnRzIGFuZCBzb21lIHN1cHBwb3J0IGZvciB0aGUKCWRlZmF1bHR2YWx1ZSBhdHRyaWJ1dGVzLgoJQmV0dGVyIGNhbGN1bGF0aW9uIG9mIHRoZSB0eXBlaW5mbydzIHJlczMgbWVtYmVyIChhdCBsZWFzdCBmb3IKCWludGVyZmFjZXMpLgoKCSogZGxscy9tc2h0bWwvbWFpbi5jLCBkbGxzL3V1aWQvdXVpZC5jLCBpbmNsdWRlLy5jdnNpZ25vcmUsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXNodG1kaWQuaCwgaW5jbHVkZS9tc2h0bWwuaWRsLAoJICBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL3V1aWRzLmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgbXNodG1sLmlkbC4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9tYXBpMzIvcHJvcC5jLAoJICBkbGxzL21hcGkzMi90ZXN0cy9wcm9wLmMsIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS90ZXN0cy9kYi5jLAoJICBkbGxzL21zaS90ZXN0cy9yZWNvcmQuYywgaW5jbHVkZS9vbGVhdXRvLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2lubW0vd2luZWFsc2EvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCU9ubHkgdXNlIEFsc2EgaWYgMS4wIGlzIGRldGVjdGVkLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUdldCByaWQgb2YgVy0+QSBjYWxscy4KCgkqIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIGhpZGRlbiwgcmVzdHJpY3RlZCBhbmQgdmVyc2lvbiBhdHRyaWJ1dGVzIG9uCgl0eXBlaW5mb3MuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFub3RoZXIgd2FybmluZyBmaXguCgoJKiBkbGxzL2dkaS9kYy5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oOgoJUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJSW1wbGVtZW50ZWQgR2V0TGF5b3V0IGFuZCBTZXRMYXlvdXQuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJU3VwcG9ydCBmb3IgZ2VuZXJhdGluZyBhbmQgZXhwb3J0aW5nIFBDVDEsIFNTTDIvMyBhbmQgVExTMSBtYXN0ZXIKCXNlY3JldHMuIEVuc3VyZSB0aGF0IHRoZXNlIGFyZSBub3QgdXNlZCBpbiBDUEVuY3J5cHQsIENQRGVjcnlwdCBvcgoJQ1BEZXJpdmVLZXkuCgoJKiBkbGxzL3JzYWVuaC9pbXBsZ2x1ZS5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZW1vdmVkIGNoZWNrIGZvciB2YWxpZCduZXNzIG9mIGFsZ2lkLiBJdCdzIHJlZHVuZGFudC4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgU0NIQU5ORUxfQUxHIHR5cGVkZWYuCglDb3JyZWN0ZWQgc3RydWN0IHRhZyBpbiBITUFDX0lORk8gdHlwZWRlZi4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvdGVzdHMvc3RvcmFnZTMyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUZXN0IGFuZCBmaXggU3RnQ3JlYXRlRG9jRmlsZSBncmZNb2Rlcy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGVzLgoKCSogZGxscy9hbXN0cmVhbS9hbXN0cmVhbS5jLCBkbGxzL2NvbWNhdC9mYWN0b3J5LmMsCgkgIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsIGRsbHMvY29tY2F0L21hbmFnZXIuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIHVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCS0gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGUgSW50ZXJsb2NrZWQgZnVuY3Rpb25zIGFuZCB1c2Ugb25seSB0aGlzLgoKMjAwNS0wMS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYywgZGxscy9xdWFydHovZW51bW1vbmlrZXIuYywKCSAgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBlcnJvciBoYW5kbGluZyBpbiBHcmFwaGJ1aWxkZXJfUmVuZGVyRmlsZS4KCUltcHJvdmVkIHRyYWNlcy4KCgkqIGRsbHMvbXNpL3JlY29yZC5jLCBkbGxzL21zaS90ZXN0cy9yZWNvcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBNc2lSZWNvcmRTZXRTdHJlYW1BL1cgYW5kIGFkZCB0ZXN0cyBmb3IgcmVjb3JkcyBjb250YWluaW5nCglzdHJlYW1zLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBdm9pZCB3YXJuaW5ncy4KCgkqIGxpYnMvd3BwL3ByZXByb2MuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gRml4ZWQgaW5maW5pdGUgbG9vcCBidWcuCgktIENvZGUgY2xlYW51cC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRml4IGEgbWVtb3J5IG1hbmFnZW1lbnQgYnVnIGluIGFwcGx5X2RyaXZlX2NoYW5nZXMgdG8gc3RvcCB3aW5lY2ZnCglkZWxldGluZyBhbGwgdGhlIGRyaXZlIGRlZmluaXRpb25zIGluIHNvbWUgY2FzZXMuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJTWFrZSB0aGUgVUkgdXBkYXRlIHByb3Blcmx5IHdoZW4gdGhlIHVzZXIgYWRkcy9yZW1vdmVzIGRyaXZlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVGhlIHZhbHVlIG9mIGEgcGFja2VkIFZBUklBTlQgY2FuIGJlIHVwIHRvIDFMIDw8IDI2IC0gMS4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmgsCgkgIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhdHRyaWJ1dGVzIGNvbnRyb2wsIGhpZGRlbiBhbmQgcmVzdHJpY3RlZC4KCUNvcnJlY3RseSBzZXQgdGhlIGxpYmZsYWdzIGZvciB0aGVzZSBhdHRyaWJ1dGVzLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglHZXQgcmlkIG9mIEhFQVBfc3RyZHVwV3RvQSBjYWxscy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOS9zdXJmYWNlLmMsIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZDNkL2Jhc2V0ZXh0dXJlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lZDNkL2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvd2luZWQzZC9yZXNvdXJjZS5jLCBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLAoJICBkbGxzL3dpbmVkM2Qvc3VyZmFjZS5jLCBkbGxzL3dpbmVkM2QvdXRpbHMuYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvZDNkOXR5cGVzLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCByZW5kZXIgdGFyZ2V0IHN1cHBvcnQsIGFuZCBlbnN1cmUgdGhlcmUgaXMgYSBmcm9udCBhbmQgYmFjayBidWZmZXIKCWNyZWF0ZWQgZHVyaW5nIGRldmljZSBjcmVhdGlvbi4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RsaWdodC5jLAoJICBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZTMyL29sZW9iai5jOgoJUGF1bCBWcmllbnMgPFBhdWwuVnJpZW5zQHhzNGFsbC5ubD4KCS0gdXNlIEludGVybG9ja2VkKiBmdW5jdGlvbnMgaW4gQWRkUmVmIGFuZCBSZWxlYXNlLgoJLSBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZSBJbnRlcmxvY2tlZCBmdW5jdGlvbnMgYW5kIHVzZSBvbmx5IHRoaXMuCgoJKiBkbGxzL3F1YXJ0ei9yZWdzdnIuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgcmVnaXN0cmF0aW9uIGZvciBxdWFydHogZmlsdGVycy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgd2luZG93cyBtZXNzYWdlcy4KCgkqIGxpYnMvd3BwL3dwcC5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgaW5pdGlhbGl6aW5nIHBwX3N0YXR1cy5pbnB1dCBhdCBiZWdpbiBvZiB3cHBfcGFyc2UuCgoJKiBkbGxzL21hcGkzMi9wcm9wLmMsIGRsbHMvbWFwaTMyL3Rlc3RzL3Byb3AuYywKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jLCBkbGxzL21zYWNtL21zYWRwMzIvbXNhZHAzMi5jLAoJICBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYywgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL21wZWdsMy5jLCBkbGxzL21zcmxlMzIvbXNybGUzMi5jLAoJICBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywKCSAgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9xdWFydHovc3lzdGVtY2xvY2suYywKCSAgZGxscy9yc2FlbmgvcnNhZW5oLmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luZXBzL2JpdG1hcC5jLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywKCSAgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMveDExZHJ2L3dpbnRhYi5jLCBkbGxzL3gxMWRydi94Zm9udC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLAoJICBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLAoJICBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywKCSAgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywKCSAgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3Ntb290aHNjcm9sbC5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLAoJICBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywKCSAgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsCgkgIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLCBkbGxzL2QzZDgvdXRpbHMuYywKCSAgZGxscy9kM2Q5L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOS90ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsIGRsbHMvZGJnaGVscC90eXBlLmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywgZGxscy9kbWltZS9hdWRpb3BhdGguYywKCSAgZGxscy9kbWltZS9ncmFwaC5jLCBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsCgkgIGRsbHMvZG1sb2FkZXIvY29udGFpbmVyLmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsCgkgIGRsbHMvZG1zdHlsZS9zdHlsZS5jLCBkbGxzL2RtdXNpYy9jb2xsZWN0aW9uLmMsCgkgIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzd2F2ZS9kc3dhdmUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmVtb3ZlZCBleGNlc3NpdmUgc3RhdGVtZW50IChicmVhayBhZnRlciByZXR1cm4gb3IgZ290bywgbm90IHVzZWZ1bAoJYnJlYWssIG5vdCBuZWVkZWQgdmFycy4uLikKCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUFkZGVkIGhhbmRsaW5nIG9mIFNCTV9HRVRTQ1JPTExCQVJJTkZPIG1lc3NhZ2UuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywgZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUluaXRpYWxpemUgYW5kIHVuaW5pdGlhbGl6ZSBDT00gcHJvcGVybHkuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYzogSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCVVwZGF0ZWQgU3BhbmlzaCByZXNvdXJjZS4KCgkqIGRsbHMvd2luZWQzZC9kaXJlY3R4LmM6IE9saXZlciBTdGllYmVyIDxvbGl2ZXJfc3RpZWJlckB5YWhvby5jby51az4KCUNvcnJlY3QgbG9vcCBjaGVjayBmb3IgZW51bSBkaXNwbGF5IGFuZCBpbmNsdWRlIDMyYml0IG1vZGVzIGluIDI0Yml0LgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzMxLmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJTW92ZWQgc2F2ZSogc3RyaW5ncyB0byByZXNvdXJjZXMuCgoyMDA1LTAxLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglSZXZlcnQgR2V0U2Nyb2xsQmFySW5mbyBzcGVjIGVudHJ5IGJhY2sgdG8gYSBzdHViIHRvIGZpeCBjb21waWxhdGlvbgoJZmFpbHVyZS4KCjIwMDUtMDEtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9jMm1hbi5wbDogQ3JlYXRlIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGlmIG5lZWRlZC4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSB0aGUgc291cmNlIGRpciBhcyB0aGUgZG9jdW1lbnRhdGlvbiByb290IGRpci4KCgkqIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS93aW5ubHMzMi5oOgoJRGllZ28gUGV0dGVu8iA8ZmxhbWVleWVzQHVzZXJzLmJlcmxpb3MuZGU+CglBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIGZvciBXSU5OTFMqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJRGllZ28gUGV0dGVu8iA8ZmxhbWVleWVzQHVzZXJzLmJlcmxpb3MuZGU+CglHZXQgcmlkIG9mIERQUklOVEYuCgoJKiBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVc2UgR2V0TG9jYWxUaW1lICh0ei1kZXBlbmRhbnQpIGluc3RlYWQgb2YgR2V0U3lzdGVtVGltZSAoVVRDKSBpbgoJR2V0VGltZUZvcm1hdC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBhbGwgY3VzdG9tIHR5cGUgMSBhY3Rpb25zIGhhcHBlbiBpbiBhIHNlcGVyYXRlIHRocmVhZCBhbmQgY2xvc2UKCWFsbCBoYW5kbGVzIGZvciB0aGF0IHRocmVhZCB3aGVuIGl0IGV4aXRzLiBIb25vcnMgdGhlIGNvbmNlcHQgb2YKCXRlbXBvcmFyeSBNU0kgaGFuZGxlcyBmb3IgY3VzdG9tIGFjdGlvbnMuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLAoJICBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywKCSAgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBkbGxzL3NobHdhcGkvdGhyZWFkLmMsIGRsbHMvdXNlci9jb21tMTYuYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgQ3JlYXRlRXZlbnRXIGluIHByZWZlcmVuY2UgdG8gQ3JlYXRlRXZlbnRBIGZvciB1bm5hbWVkIGV2ZW50cy4KCgkqIGRsbHMvcXVhcnR6L3JlZ3N2ci5jOiBQYXVsIFZyaWVucyA8cGF1bC52cmllbnNAeHM0YWxsLm5sPgoJLSBNZWRpYSBUeXBlcyAoYW5kIEV4dGVuc2lvbnMpIHNob3VsZCB1c2UgIlNvdXJjZSBGaWx0ZXIiIGluc3RlYWQgb2YKCSAgIkZpbGUgU291cmNlIi4KCS0gUmVtb3ZlZCBmaWxlc291cmNlX3ZhbHVlbmFtZS4KCS0gRml4ZWQgdHlwbyBmb3Igc29tZSBjbGFzcy1uYW1lcy4KCS0gRml4ZWQgdHlwbyBpbiBNUEVHMVN5c3RlbSBNZWRpYSBUeXBlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBDcmVzdGV6IExlb25hcmQgPGNsZW9uYXJkQGdvLnJvPgoJRml4IGJ1ZyB3aXRoIFRyZWV2aWV3X1NlbGVjdEl0ZW0gcmVzZWxlY3RpbmcgdGhlIHNhbWUgaXRlbS4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgYSBjb21wbGV0ZSwgc29ydGVkIGxpc3RlZCBvZiBJT0NUTFMgaW1wbGVtZW50ZWQgaW4gdGhlIGZpbGUuCgktIER1bXAgdHJhY2sgbnVtYmVycyBhZnRlciB0aGV5IGhhdmUgYmVlbiBmaWxsZWQgaW4uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVuYW1lIGlpZCBpbiB3aW5lX21hcnNoYWxfaWQgdG8gaXBpZCBhbmQgdXNlIElQSURzIGluc3RlYWQgb2YgSUlEcyBpbgoJdGhlIHN0dWIgbWFuYWdlci4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBjdXJyZW50IGFyY2hpdGVjdHVyZSBjYW5ub3QgaGFuZGxlIHBpcGVzIGNoYW5naW5nIGFkZHJlc3MsIHNvIHVzZQoJYSBzdGF0aWMgYXJyYXkuIEZpeGVzIG1lbW9yeSBjb3JydXB0aW9uIHRoYXQgc29tZXRpbWVzIG9jY3VycyB3aGVuCgl1c2luZyBtdWx0aXBsZSBwaXBlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2NhcGkyMDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NhcGkyMDMyL2NhcDIwd3h4LmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxvYWQgbGliY2FwaTIwLnNvLiogZHluYW1pY2FsbHkgb24gZGVtYW5kLgoKMjAwNS0wMS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpZGwvTWFrZWZpbGUuaW4sIHRvb2xzL3dpZGwvaGFzaC5jLCB0b29scy93aWRsL2hhc2guaCwKCSAgdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9wYXJzZXIueSwgdG9vbHMvd2lkbC90eXBlbGliLmMsCgkgIHRvb2xzL3dpZGwvdHlwZWxpYi5oLCB0b29scy93aWRsL3R5cGVsaWJfc3RydWN0LmgsCgkgIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmgsIHRvb2xzL3dpZGwvd3JpdGVfbXNmdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWwgc3VwcG9ydCBmb3IgdHlwZWxpYiBnZW5lcmF0aW9uLgoKCSogZGxscy9udGRsbC9maWxlLmM6IFJlaW4gS2xhemVzIDx3aWpuQHdhbmFkb28ubmw+CglPbiBMaW51eCwgdXNlIGZzdGF0ZnMgaW5zdGVhZCBvZiBmc3RhdHZmcy4gSXQgaXMgdG9vIGJ1Z2d5LgoKCSogZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglObyBuZWVkIHRvIGFkZCBhIHJlZmVyZW5jZSB0byB0aGUgYXBhcnRtZW50IGZyb20gbmV3X3N0dWJfbWFuYWdlciBhcwoJd2UgZG9uJ3QgaG9sZCBvbiB0byBhbiBhcGFydG1lbnQgcG9pbnRlci4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHdpbmRvd3MgZXZlbnRzIGhvb2sgdG8gdGhlIG1lc3NhZ2UgdGVzdC4KCgkqIGRsbHMvbXNpL2hhbmRsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNc2lDbG9zZUFsbEhhbmRsZXMgb25seSBjbG9zZXMgaGFuZGxlcyBhbGxvY2F0ZWQgaW4gdGhlIGNhbGxpbmcKCXRocmVhZC4KCgkqIGRsbHMvbXNpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXNpL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zaS90ZXN0cy9yZWNvcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0ZXN0IGZvciByZWNvcmRzLgoKCSogZGxscy9tc2kvcmVjb3JkLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZWNvcmRzIGFjY29yZGluZyB0byB0ZXN0IGNhc2VzLgoKCSogdG9vbHMvd2luZS5pbmY6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglBZGQgVk1NMzJGaWxlcyBzZWN0aW9uLgoKCSogaW5jbHVkZS9tc2kuaCwgaW5jbHVkZS9tc2lxdWVyeS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBtb3JlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVdNX0dFVFRFWFRMRU5HVEggc2hvdWxkIHJldHVybiB6ZXJvIGZvciBvd25lciBkcmF3biBzdGF0dXMgYmFycy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglNb3ZlZCBzdHJpbmcgdG8gcmVzb3VyY2VzLgoKCSogZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQcmVmZXIgVyB0byBBIGZvciBkb2N1bWVudGF0aW9uLiBQcmVmZXIgdGhlIG5vbi1pbmxpbmVkIHN0eWxlIG9mCglkb2N1bWVudGF0aW9uLCBpdCdzIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgb25lLCB3ZSBzaG91bGQgc3RhbmRhcmRpemUKCW9uIGl0LgoKCSogZGxscy91c2VyL3N5c3BhcmFtcy5jLCB0b29scy93aW5lLmluZjoKCUp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJLSBPYnRhaW4gYm9yZGVyIHNpemUgb2Ygd2luZG93cyBmcm9tIHJlZ2lzdHJ5IGlmIGF2YWlsYWJsZS4KCS0gT2J0YWluIGljb24gc2l6ZSBmcm9tIHJlZ2lzdHJ5IGlmIGF2YWlsYWJsZS4KCS0gQ3JlYXRlIGEgV2luZG93TWV0cmljcyBzZWN0aW9uIGluIHRoZSBkZWZhdWx0IHJlZ2lzdHJ5IGFuZCBwb3B1bGF0ZQoJICBpdCB3aXRoIGFsbCBjdXJyZW50bHkgc3VwcG9ydGVkIG1ldHJpY3MgKHRoYXQgYXJlIHNldHVwIHRvIHJlYWQgZnJvbQoJICB0aGUgcmVnaXN0cnkpLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1ha2Ugc3RydWN0IG9sZXRscyByZWYgY291bnRlZCBzbyB0aGF0IGl0IGlzIG9ubHkgZGV0YWNoZWQgZnJvbSB0aGUKCSAgYXBhcnRtZW50IG9uIHRoZSBmaW5hbCBDb1VuaW5pdGlhbGl6ZS4KCS0gRGVjcmVhc2UgdGhlIHNpemUgb2YgdGhlIGNyaXQgc2VjIG9uIGRlc3Ryb3lpbmcgYW4gYXBhcnRtZW50IC0gaXQgaXMKCSAgb25seSBuZWVkZWQgZm9yIHRvdWNoaW5nIHRoZSBhcGFydG1lbnQgbGlzdC4KCS0gU21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglDb25uZWN0TmFtZWRQaXBlIHJldHVybmluZyBFUlJPUl9QSVBFX0NPTk5FQ1RFRCBpcyBub3QgYW4gZXJyb3IuCgoJKiBkbGxzL3F1YXJ0ei9hdmlkZWMuYywgZGxscy9xdWFydHovYXZpc3BsaXQuYywKCSAgZGxscy9xdWFydHovZHNvdW5kcmVuZGVyLmMsIGRsbHMvcXVhcnR6L2VudW1maWx0ZXJzLmMsCgkgIGRsbHMvcXVhcnR6L2VudW1tZWRpYS5jLCBkbGxzL3F1YXJ0ei9lbnVtbW9uaWtlci5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtcGlucy5jLCBkbGxzL3F1YXJ0ei9lbnVtcmVnZmlsdGVycy5jLAoJICBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvY2F0b3IuYywKCSAgZGxscy9xdWFydHovcGluLmMsIGRsbHMvcXVhcnR6L3N5c3RlbWNsb2NrLmMsCgkgIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYzoKCVBhdWwgVnJpZW5zIDxQYXVsLlZyaWVuc0B4czRhbGwubmw+CgktIFVzZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zIGluIEFkZFJlZiBhbmQgUmVsZWFzZS4KCS0gU3RvcmUgdGhlIHJlc3VsdCBvZiB0aGUgSW50ZXJsb2NrZWQgZnVuY3Rpb25zIGFuZCB1c2Ugb25seSB0aGlzLgoKCSogZGxscy9udGRsbC90aW1lLmM6IFRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglBZGQgQnJhemlsaWFuIHN0YW5kYXJkIHRpbWUuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVnaXN0ZXIgcnNhZW5oIGFzIGEgUlNBIFNDaGFubmVsIHByb3ZpZGVyLgoJUmVnaXN0ZXIgcnNhZW5oIGFzIGRlZmF1bHQgUlNBIFNDaGFubmVsIHByb3ZpZGVyLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIFByb3Blcmx5IGRlZm9ybWF0IGtleXMgd3JpdHRlbiB0byB0aGUgcmVnaXN0cnkuCgktIEJlY2F1c2UgZGlyZWN0b3J5IG1hcHBpbmdzIGNhbiBjaGFuZ2UgYmV0d2VlbiB0aGUgQ29zdEZpbmFsaXplIHN0ZXAKCSAgYW5kIHRoZSBJbnN0YWxsRmlsZXMgc3RlcCB3ZSBuZWVkIHRvIGRvIGEgZmluYWwgcmVzb2x1dGlvbiBvZiB0aGUKCSAgdGFyZ2V0IGZpbGUgbmFtZSBiZWZvcmUgaW5zdGFsbGluZy4KCjIwMDUtMDEtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aWRsL3V0aWxzLmMsIHRvb2xzL3dpZGwvd2lkbC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUJyaW5nIHRoZSBkZWJ1ZyBmdW5jdGlvbnMgaW50byBsaW5lIHdpdGggdGhlIHJlc3Qgb2YgV2luZSBieSBub3QKCWFwcGVuZGluZyBhICdcbicuCgoJKiBkbGxzL29sZTMyL29sZXByb3h5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBjaGFubmVsIGJ1ZmZlciBjYW4gYmUgTlVMTCBpZiB0aGUgcHJveHkgaXMgZGlzY29ubmVjdGVkLCBzbyBjaGVjawoJZm9yIHRoaXMgYmVmb3JlIHJlbGVhc2luZyBpdC4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IHJhY2Ugb24gYXBhcnRtZW50IGNyZWF0aW9uLgoJLSBEaXNwbGF5IGVycm9ycyBpbiBkZWNpbWFsIHRvIG1ha2Ugc2VhcmNoaW5nIGZvciB0aGUgbWVhbmluZyBpbgoJICB3aW5lcnJvci5oIGVhc2llci4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9ycGMuYywKCSAgZGxscy9vbGUzMi9zdHVibWFuYWdlci5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIGFwYXJ0bWVudCBhY2Nlc3MgdGhyZWFkLXNhZmUgYnkgaW50cm9kdWNpbmcgcmVmY291bnRpbmcgYW5kCgkgIHdpZGVyIHVzYWdlIG9mIHRoZSBhcGFydG1lbnQgbG9jay4KCS0gUmV3b3JrIE9MRSBUTFMgbWFuYWdlbWVudCB0byBlbGltaW5hdGUgdW5pbml0aWFsaXNlZCBhcGFydG1lbnRzIGFuZAoJICBwYXJlbnQgY2hhaW5pbmcuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCVJldHVybiBhIHRydWUgYm9vbGVhbiB2YWx1ZSAoMCBvciAxKS4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBsaXN0IG9mIHN1cHBvcnRlZCBhbGdvcml0aG1zIGZvciBTQ2hhbm5lbCBwZXJzb25hbGl0eS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBjaGVja2luZyBmb3IgYW4gZXhpc3RpbmcgLmxuayBzaG9ydGN1dCBleHRlbnNpb24gb24gdGhlIGZpbGVuYW1lCglkbyBub3QganVzdCBzZWFyY2ggZm9yICcuJyBidXQgYWN0dWFsbHkgdmVyaWZ5IGl0IGlzICcubG5rJy4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvdHlwZWxpYi5jLCB0b29scy93aWRsL3R5cGVsaWIuaCwKCSAgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTdG9yZSBpbnRlcmZhY2VzLCBzdHJ1Y3RzLCBjb2NsYXNzZXMgYW5kIG1vZHVsZXMgdGhhdCBhcmUgdG8gYmUKCXdyaXR0ZW4gaW50byBhIHR5cGVsaWIgaW4gYSBsaXN0LgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvZ2Rpb2JqLmM6CglWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvcGFja2FnZS5jOgoJVml0YWx5IExpcGF0b3YgPGxhdkBldGVyc29mdC5ydT4KCUdldCByZWFsIHNjcmVlbiBwcm9wZXJ0aWVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbXNpL01ha2VmaWxlLmluLAoJICBkbGxzL21zaS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21zaS90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2kvdGVzdHMvZGIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHNpbXBsZSB0ZXN0IGNhc2UgZm9yIE1TSSBkYXRhYmFzZXMuCgoJKiBkbGxzL2dkaS9mb250LmMsIGluY2x1ZGUvd2luZ2RpLmg6IFZpdGFseSBMaXBhdG92IDxsYXZAZXRlcnNvZnQucnU+CglBZGQgZGVzY3JpcHRpb24gZm9yIEV4dFRleHRPdXQgKGFsc28gaW5jbHVkZSBjb21tZW50cyBmcm9tIFNoYWNoYXIKCVNoZW1lc2gpIGFuZCBtaXNzZWQgY29uc3RhbnRzIEVUT19OVU1FUklDU0xPQ0FMLCBFVE9fTlVNRVJJQ1NMQVRJTiwKCUVUT19QRFkgaW4gd2luZ2RpLmguCgoJKiB0b29scy93aW5lZHVtcC9zZWFyY2guYzogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUZpeCBhIHJldHVybiB0eXBlIGJ1ZyBhZnRlciBhbGxvd2luZyAnZm9vICpmdW5jdGlvbm5hbWUoKScKCXByb3RvdHlwZXMuIEluICd1bnNpZ25lZCBjaGFyICpmdW5jdGlvbm5hbWUoKScgY2hhciB3YXMgbm90IHNlZW47Cgl0aGVyZWZvcmUgaW1wbGljaXQgJ3Vuc2lnbmVkIGludCcuCgoJKiBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsIGRsbHMvZG1zdHlsZS9zdHlsZS5jLAoJICBkbGxzL2Rtc3R5bGUvc3R5bGV0cmFjay5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGhhbmRsZSBTdHlsZVJlZnMgbGlzdCBvbiBETVN0eWxlVHJhY2tzCgktIGhhbmRsZSBQYXJ0UmVmcyBsaXN0IG9uIERNU3R5bGVzCgktIGJlZ2luIG9mIFBhcnRzIGxpc3Qgc3VwcG9ydCBvbiBETVN0eWxlcyAoZm9yIG5vdyBvbmx5IHNvbWUgYXJyYXkKCSAgY2hlY2tzKQoJLSBmaXggSURpcmVjdE11c2ljU3R5bGU6OlF1ZXJ5SW50ZXJmYWNlCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYywgZGxscy9yc2FlbmgvdGVzdHMvcnNhZW5oLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglTZXQgbGFzdCBlcnJvciBpZiBkd0ZsYWdzIGFyZSBub24gemVybyBpbiBDUFJlbGVhc2VDb250ZXh0LgoJQWRkZWQgY29ycmVzcG9uZGluZyB0ZXN0LgoKCSogZGxscy9vbGUzMi9ycGMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgQ09NIHRvIHN0YXJ0IHNlcnZpY2VzIGNvbnRhaW5pbmcgQ09NIHNlcnZlcnMuCgoyMDA1LTAxLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIEN1c3RvbUFjdGlvbiAzNSBzaG91bGQgY2FsbCBTZXRUYXJnZXRQYXRoIG5vdCBqdXN0IHNldCB0aGUgcHJvcGVydHkuCgktIFRBUkdFVERJUiBhbmQgU09VUkNFRElSIG1heSBub3QgYmUgZW50cmllcyAwIGluIHRoZSBkaXJlY3RvcnkKCSAgdGFibGVzLiBTbyB3aGVuIHJlc29sdmluZyB0aGUgZm9sZGVyIHdlIG5lZWQgdG8gc2VlayB0aGVtIG91dC4KCS0gV2hlbiB3ZSBoYW5kbGUgU2V0VGFyZ2V0UGF0aCB3ZSBuZWVkIHRvIGJlIHN1cmUgdG8gcmVjYWxjdWxhdGUgdGhlCgkgIHJlc3VsdGluZyBwYXRocyBhcyB0aGluZ3Mgd2l0aCB0aGUgbm93IHNldCBEaXJlY3RvcnkgYXMgdGhlIHBhcmVudAoJICB3aWxsIGNoYW5nZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIGhvdyB3ZSBpbnN0YWxsIGZpbGVzIHNvIHRoYXQgd2UgZXh0cmFjdCBmaWxlcyBhcyB3ZSBuZWVkIHRoZW0sCgljdXRzIGRvd24gb24gZXh0cmFjdGlvbiB0aW1lIGFuZCB1bnVzZWQgZmlsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywKCSAgZGxscy9kaW5wdXQvbW91c2UuYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgU3RhcnREb2MgdG8gVW5pY29kZS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCAnU2VuZEFzeW5jQ2FsbGJhY2snIHdoZW4gaXQncyByZWFsbHkgYXN5bmNocm9ub3VzLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJZnBvc190IHNob3VsZCBiZSA2NCBiaXRzICh2ZXJpZmllZCB3aXRoIG5hdGl2ZSBNU1ZDUlQuRExMKQoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSGFuZGxlIGJ1ZmZlcmluZyBpbiBmZ2V0cG9zIC8gZnNldHBvcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdW5uZWVkZWQgd2hpdGVzcGFjZSwgaW5kZW50IGNvcnJlY3RseS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUHJldmVudCBjcmFzaCBmcm9tIGludmFsaWQgbGFzdCBwYXJhbWV0ZXIgaW4gR2V0RmlsZVZlcnNpb25JbmZvLgoJUHJldmVudCBjcmFzaCBpbiBWZXJRdWVyeVZhbHVlIHdoZW4gcmV0dXJuIHNpemUgbm90IHJlcXVlc3RlZC4KCUdldEZpbGVWZXJzaW9uSW5mbyBhbmQgVmVyUXVlcnlWYWx1ZSBwYXJhbWV0ZXIgdGVzdHMgYWRkZWQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Dbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfVGgucmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgZGlhbG9nIHRlbXBsYXRlcyB0byBub3QgZXhwbGljaXRseSBzcGVjaWZ5IGV4dGVuZGVkIHdpbmRvdwoJc3R5bGVzIGZvciB0aGUgc3RhdGljIHJlY3RzIG9uIHRoZSBQYWdlIFNldHVwIGRpYWxvZyBhcyB0aGUgb25lcwoJc3BlY2lmaWVkIHdlcmUgd3JvbmcgYW55d2F5LgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIGNsZWFyQWxsU2VsZWN0aW9ucyBzaW5jZSBub3QgY2xlYXJpbmcgQ0xJUEJPQVJEIGNhbiBnZXQgdXMgaW50bwoJYW4gb2RkIHN0YXRlLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueTogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgcHJlY2VkZW5jZSBvZiB0aGUgY29uZGl0aW9uYWwgb3BlcmF0b3IuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWx3YXlzIHNldCBFUlJPUl9TVUNDRVNTIGluIGNhc2Ugb2Ygc3VjY2VzcyBpbiBDUEFjcXVpcmVDb250ZXh0LgoKCSogd2luZG93cy93aW5wb3MuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHRvdWNoIHRoZSByZWN0IGlmIGh3bmQgaXMgaW52YWxpZC4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCB0cmFjaW5nIGZvciBwcm94eSByZWYgY291bnQgZnVuY3Rpb25zLgoJLSBSZWxlYXNlIHRoZSBjaGFubmVsIG9uIHByb3h5IGRlc3RydWN0aW9uLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIERDT00gdG9kbyBsaXN0LgoKCSogdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVkdW1wL2VtZi5jLAoJICB0b29scy93aW5lZHVtcC9tYWluLmMsIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglFeHRlbmQgd2luZWR1bXAgdG8gYWxsb3cgZHVtcGluZyBlbmhhbmNlZCBtZXRhIGZpbGVzLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglPbiBOVDQgd2UgY2FuIGFsc28gZ2V0IEVSUk9SX1JJTkcyX1NUQUNLX0lOX1VTRSBmcm9tCglDcnlwdEFjcXVpcmVDb250ZXh0KCkuCgoJKiBpbmNsdWRlL21zaS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIGV4dHJhIGZ1bmN0aW9ucy4KCVJlbW92ZWQgcGFyYW1ldGVyIG5hbWUgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgZGVjbGFyYXRpb25zLgoKCSogaW5jbHVkZS9kY2UuaCwgd2luZG93cy9kY2UuYzoKCVJlbW92ZSB0aGUgbm8gbG9uZ2VyIG5lZWRlZCBEQ0VfRXhjbHVkZVJnbiBmdW5jdGlvbiBhbmQKCURDWF9LRUVQQ0xJUFJHTiBzdHlsZS4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jOgoJVXNlIHRoZSBEQyBvcmlnaW4gdG8gbWFwIGNvb3JkaW5hdGVzIGluIEV4Y2x1ZGVVcGRhdGVSZ24gaW5zdGVhZCBvZgoJY2FsbGluZyBhbiBpbnRlcm5hbCBEQ0UgZnVuY3Rpb24uCgoJKiBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCUZpeGVkIHRoZSBGSVhNRSBpbiBSdGxOdFN0YXR1c1RvRG9zRXJyb3IsIGFuZCBpbXBsZW1lbnRlZAoJUnRsR2V0TGFzdE50U3RhdHVzIGFuZCBSdGxTZXRMYXN0V2luMzJFcnJvckFuZE50U3RhdHVzRnJvbU50U3RhdHVzLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmMsIHNlcnZlci9tYXBwaW5nLmM6CglTdXBwb3J0IG1hcHBpbmcgbm9uIHBhZ2UtYWxpZ25lZCBiaW5hcmllcyBmb3IgU0VDX0lNQUdFIG1hcHBpbmdzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHByb3h5IG1hbmFnZXIuCgoJKiBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHdoaXRlc3BhY2UgYXQgZW5kIG9mIGxpbmVzLCB1cGRhdGVkIGEgYml0LgoKCSogaW5jbHVkZS9hbXN0cmVhbS5pZGwsIGluY2x1ZGUvZGRzdHJlYW0uaWRsLCBpbmNsdWRlL21tc3RyZWFtLmlkbDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglVbmNvbW1lbnRlZCAnb3B0aW9uYWwnIGF0dHJpYnV0ZXMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2NmZ21ncjMyLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgY2ZnbWdyMzIuaCBoZWFkZXIuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBsb2FkaW5nIGEgYml0bWFwIGludG8gYSBkaWJzZWN0aW9uIHRoZSByZXN1bHQgY2Fubm90IGJlCgljb21wcmVzc2VkLgoKCSogd2luZG93cy9kZWZ3bmQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBJTUUgbWVzc2FnZXMgaW4gdGhlIGRlZmF1bHQgdW5pY29kZSB3aW5kb3cgcHJvY2VkdXJlIHRvby4KCgkqIGRvY3VtZW50YXRpb24vY29tcGlsaW5nLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdWdtZW50IHRoZSBjb21waWxpbmcgZG9jdW1lbnRhdGluIHdpdGggdGhlIGFjdHVhbCBjb21tYW5kcy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSGlkZSBhdXRob3JzLCB3ZSBkb24ndCBrbm93IGhvdyB0byBmb3JtYXQgdGhlbS4KCgkqIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIGJhc2hpbmcgb2YgcGFja2FnZXMsIHZhbHVlIGp1ZGdtZW50cy4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLmRlLCBkb2N1bWVudGF0aW9uL1JFQURNRS5mciwKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUuaXQsIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0LAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5wdF9icjoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUtlZXAgYWxsIFJFQU1ERXMgaW4gc3luYy4KCgkqIGRsbHMvdXNlci9zdGF0aWMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IGNvbG91cnMgdXNlZCBmb3IgU1NfKlJFQ1QsIFNTXypGUkFNRS4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdXBwb3J0IGZvciBtYWNoaW5lIGtleXNldHMuCgoJKiBkbGxzL29sZTMyL29sZXByb3h5LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIENsYXNzRmFjdG9yeSBwcm94eSBzdXBwb3J0IGFnZ3JlZ2F0aW9uLgoKMjAwNS0wMS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLAoJICBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywgZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywKCSAgZGxscy93aW5tbS93aW5tbS5zcGVjOgoJR2V0IHJpZCBvZiB0aGUgVGh1bmtEYXRhIHN0dWJzLCB0aGVzZSBhcmUgbm90IGZ1bmN0aW9ucy4KCgkqIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgaW5jbHVkZS92ZncuaDoKCUZpeGVkIENMU0lEX0FWSVNpbXBsZVVuTWFyc2hhbCBleHBvcnQuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWM6CglBdm9pZCBkdW1waW5nIHRoZSBjb250ZW50cyBvZiBvdXRwdXQgc3RyaW5ncy4KCgkqIGRsbHMvdW5pY293cy9tYWluLmMsIGRsbHMvdW5pY293cy91bmljb3dzLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVJlbW92ZSBtb3N0IHJlbWFpbmluZyBzdHVicyBmcm9tIHVuaWNvd3MuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBTSFVwZGF0ZUltYWdlQSwgU0hIYW5kbGVVcGRhdGVJbWFnZSwKCVNIT2JqZWN0UHJvcGVydGllcywgU0hHZXROZXdMaW5rSW5mb3tBLFd9LCBTSFN0YXJ0TmV0Q29ubmVjdGlvbkRpYWxvZywKCVNIRW1wdHlSZWN5Y2xlQmlue0EsV30sIFNIRm9ybWF0RHJpdmUsIFNIUXVlcnlSZWN5Y2xlQmlue0EsV30uCgknSGVhcEFsbG9jIGNhbiBmYWlsJyBmaXggZm9yIEV4dHJhY3RJY29uRXhBLgoJSW1wbGVtZW50IEV4dHJhY3RBc3NvY2lhdGVkSWNvbkEgLT4gVy4KCUNvcnJlY3QgcHJvdG90eXBlIGZvciBTSE9iamVjdFByb3BlcnRpZXMuCglGb3J3YXJkIFNIR2V0TmV3TGlua0luZm8gdG8gU0hHZXROZXdMaW5rSW5mb0EuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIEFkZE1vbml0b3JXLCBEZWxldGVQcmludGVyRHJpdmVyVywKCURlbGV0ZU1vbml0b3JXLCBEZWxldGVQb3J0VywgR2V0UHJpbnRQcm9jZXNzb3JEaXJlY3RvcnlXLAoJQWRkUHJpbnRQcm9jZXNzb3J7QSxXfSwgQWRkUHJpbnRQcm92aWRvcntBLFd9LAoJQWR2YW5jZWREb2N1bWVudFByb3BlcnRpZXN7QSxXfSwgRW51bVBvcnRzVywgQWRkUG9ydHtBLFd9LAoJQ29uZmlndXJlUG9ydHtBLFd9LCBEZWxldGVQcmludFByb2Nlc3NvcntBLFd9LAoJRGVsZXRlUHJpbnRQcm92aWRvcntBLFd9LCBFbnVtUHJpbnRQcm9jZXNzb3JEYXRhdHlwZXN7QSxXfSwKCUdldEpvYntBLFd9LgoKCSogZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsIGRsbHMvcXVhcnR6L3Bpbi5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgSU1lZGlhQ29udHJvbF9SdW4gdGhhdCBleHBsb3JlcyB0aGUgZ3JhcGgsIGNvdW50cwoJcmVuZGVyZXJzIGFuZCBzdGFydHMgZmlsdGVycy4KCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBJQmFzZUZpbHRlcl9SdW4gZm9yIEFWSSBTUGxpdHRlciBhbmQgQVZJCglEZWNvbXByZXNzb3IuCglVc2UgdGhlIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0b3Igd2hlbiBhbiBvdXRwdXQgcGluIGRvZXMgbm90IHByb3ZpZGUKCWFueSBhbGxvY2F0b3IuCglTZXQgYWxsb2NhdG9yIHByb3BlcnRpZXMgZm9yIEFWSSBEZWNvbXByZXNzb3Igb3V0cHV0IHBpbiBhbmQgdXBkYXRlCgl0aGUgYnVmZmVycyBzaXplIGF0IGNvbm5lY3Rpb24gdGltZS4KCgkqIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUdldCByaWQgb2YgVy0+QSBjYWxscy4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dkaW9iai5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglBZGQgcmV0dXJuIHZhbHVlIHRvIEdldE9iamVjdCBlcnJvciBtZXNzYWdlLgoKCSogdG9vbHMvd2luZWR1bXAvZnVuY3Rpb25fZ3JlcC5wbDogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUN1cnJlbnRseSBhICcvLyoqKionIGlzIG1hdGNoZWQgYXMgYW4gLyogY29tbWVudCAtIGRpc2FsbG93IGEgJy8nIGluCglmcm9udCBvZiB0aGUgJy8qJyBtYXRjaC4gQW4gJ2V4dGVybiAiQyIgeycgY2FuIGJlIHNwbGl0IGluIHNldmVyYWwKCWxpbmVzIC0gYWxsb3cgJ1xuJyBhcyBzcGFjZSwgYW5kIGxvb2tvdXQgZm9yIHRoZSByZXN0IGlmIHBhcnRpYWwKCWZvdW5kLgoKCSogdG9vbHMvd2luZWR1bXAvc2VhcmNoLmM6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglJbiBmdW5jdGlvbl9ncmVwLnBsIGFuZCBzeW1ib2wuYy9zeW1ib2xfY2xlYW5fc3RyaW5nIHNwYWNlcyBiZXR3ZWVuCgl0aGUgZnVuY3Rpb24gbmFtZSBhbmQgKiBhcmUgcmVtb3ZlZC4gRnguIHRoZSB0eXBlICd2b2lkICogZm9vKCknIGlzCglyZXR1cm5lZCBhcyAndm9pZCAqZm9vKCknLiBSZWNvZ25pemVkIHRoaXMgYXMgYSB2YWxpZCBwcm90b3R5cGUgaW4KCXN5bWJvbF9zZWFyY2guCgoJKiB0b29scy93aW5lZHVtcC9zeW1ib2wuYzogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUFkZGVkIHRoZSB3b3JkICJGTE9BVCIgdG8gYmUgcmVjb2duaXplZCBhcyBhcmd1bWVudCB0eXBlIGZsb2F0LgoKCSogaW5jbHVkZS9kcGxvYmJ5Lmg6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglEZWZpbmUgRGlyZWN0UGxheUxvYmJ5Q3JlYXRlIHRvIGJlIGVpdGhlciB0aGUgVyBvciBBIHZlcnNpb24uCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHNvbWUgZGVmaW5lcyBjb25jZXJuaW5nIFNDaGFubmVsIENTUHMuCgoJKiBkbGxzL3JzYWVuaC9pbXBsZ2x1ZS5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGhlcmUgdG8gY29uc3QnbmVzcyBvZiB0aGUgaW5wdXQgZGF0YSBpbiBlbmNyeXB0X2Jsb2NrX2ltcGwuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJQWRkIGNvbW1lbnRzLCBmaXggbmVnYXRpdmUgdmFsdWUgZnJvbSBHZXRDdXJGb2N1cy4KCgkqIHdpbmRvd3MvdXNlci5jOgoJVXNlIEV4aXRQcm9jZXNzIHRvIHRlcm1pbmF0ZSB0aGUgcHJvY2VzcyBpbiBFeGl0V2luZG93c0V4IHNvIHRoYXQgaXQKCWdldHMgYSBjaGFuY2UgdG8gY2xlYW4gdGhpbmdzIHVwLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBtaXNzaW5nIGRlY2xhcmF0aW9ucyBpbiB0aGUgc3BlYyBmaWxlLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUdldCByaWQgb2YgVy0+QSBjYWxscy4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBkbGxzL3dpbmVkb3MvdnhkLmM6CglEaWVnbyBQZXR0ZW7yIDxmbGFtZWV5ZXNAdXNlcnMuYmVybGlvcy5kZT4KCUdldCByaWQgb2YgRFBSSU5URi4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZSBwcm9ncmVzcyBiYXIgdHJhY2tpbmcuCgoJKiB0b29scy93aW5lZHVtcC9sZS5jLCB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oOiBXYXJuaW5nIGZpeGVzLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLAoJICBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBpbmNsdWRlL2xtc2VydmVyLmgsIGluY2x1ZGUvbnRzZWNhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2luc3ZjLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBHZXRLZXJuZWxPYmplY3RTZWN1cml0eSwKCUdldFByaXZhdGVPYmplY3RTZWN1cml0eSwgR2V0U2VydmljZUtleU5hbWV7QSxXfSwKCUltcGVyc29uYXRlTmFtZWRQaXBlQ2xpZW50LCBJbml0aWF0ZVN5c3RlbVNodXRkb3due0EsV30sCglJc1Rva2VuUmVzdHJpY3RlZCwgTG9nb25Vc2Vye0EsV30sIExvb2t1cEFjY291bnROYW1lVywKCUxvb2t1cFByaXZpbGVnZURpc3BsYXlOYW1le0EsV30sIE1hcEdlbmVyaWNNYXNrLAoJT2JqZWN0Q2xvc2VBdWRpdEFsYXJte0EsV30sIE9iamVjdE9wZW5BdWRpdEFsYXJte0EsV30sCglPYmplY3RQcml2aWxlZ2VBdWRpdEFsYXJte0EsV30sIFByaXZpbGVnZWRTZXJ2aWNlQXVkaXRBbGFybXtBLFd9LAoJUXVlcnlTZXJ2aWNlTG9ja1N0YXR1c3tBLFd9LCBTZXRBY2xJbmZvcm1hdGlvbiwKCVNldFByaXZhdGVPYmplY3RTZWN1cml0eSwgU2V0U2VjdXJpdHlEZXNjcmlwdG9yQ29udHJvbCwKCVNldFNlcnZpY2VCaXRzLCBMc2FTZXRJbmZvcm1hdGlvblBvbGljeSwgTHNhTG9va3VwTmFtZXMsCglMc2FFbnVtZXJhdGVUcnVzdGVkRG9tYWlucy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIGZpeC4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGFuZCB0ZXN0IFVSTElTX1VSTCBmbGFnIGluIFVybElzKCkuCgoJKiBkbGxzL3F1YXJ0ei9yZWdzdnIuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uIG9mIG1lZGlhIHR5cGVzLgoKCSogZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsIGRsbHMvbWFwaTMyL3Byb3AuYywKCSAgZGxscy9tYXBpMzIvdGVzdHMvcHJvcC5jLCBkbGxzL21hcGkzMi91dGlsLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IENyZWF0ZUlQcm9wICYgbW9zdCBvZiBNQVBJJ3MgSU1BUElQcm9wICYgSVByb3BEYXRhIGlmYWNlcy4KCUltcGxlbWVudCBGQmFkRW50cnlMaXN0IGFuZCBtYWtlIEZCYWRQcm9wIHVzZSBpdC4KCVRlc3QgQ3JlYXRlSVByb3AsIHN0YXJ0IG9mIHRlc3RzIGZvciBJUHJvcERhdGEgaW50ZXJmYWNlLgoKCSogZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIEdldEFsdFRhYkluZm97QSxXfS4KCUZvcndhcmQgR2V0QWx0VGFiSW5mbyB0byBHZXRBbHRUYWJJbmZvQS4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogSnVzdGluIENoZXZyaWVyIDxqY2hldnJpZXJAbmV4aWNvbS5uZXQ+CglDb252ZXJ0ZWQgc3lzdGVtIG1ldHJpY3MgdG8gVW5pY29kZS4KCgkqIHdpbmRvd3MvdXNlci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJLSBJZiBnaXZlbiB0aGUgRVdYX0ZPUkNFIGZsYWcsIEV4aXRXaW5kb3dzRXgoKSBzaG91bGQgbm90IHNlbmQgdGhlCgkgIFdNX3tRVUVSWX1FTkRTRVNTSU9OIG1lc3NhZ2VzLgoJLSBBZGQgc3VwcG9ydCBmb3IgRVdYX0ZPUkNFSUZIVU5HLgoJLSBFeGl0V2luZG93c0V4KCkgc2hvdWxkIHJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRzLCBldmVuIGlmIHRoZSB1c2VyCgkgIGNhbmNlbHMgdGhlIHNodXRkb3duLgoJLSBEb24ndCBjcmFzaCBpZiB0aGVyZSBhcmUgbm8gd2luZG93cy4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5AY29kZXdlYXZlcnMuY29tPgoJQWRkIGFuZCBmaXggc29tZSBzdHVicy4KCgkqIExJQ0VOU0UsIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmM6CglJdmFuIExlbyBQdW90aSA8aXZhbmxlb0BnbWFpbC5jb20+CglVcGRhdGUgY29weXJpZ2h0IGluZm8gZm9yIHRoZSBuZXcgeWVhci4KCgkqIGRsbHMvdXNlci9ob29rLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglHZXQgcmlkIG9mIEhFQVBfc3RyZHVwV3RvQSBjYWxscy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQmUgc3VyZSB0aGF0IHNldCBwYXRocyBhcmUgdGVybWluYXRlZCB3aXRoIGEgYmFja3NsYXNoLgoKCSogZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2RiZ2hlbHAvY29mZi5jLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMva2VybmVsL3Byb2ZpbGUuYywKCSAgZGxscy9rZXJuZWwvcmVzb3VyY2UuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywgZGxscy93aW5lcHMvdHlwZTQyLmMsIGRsbHMvd2luaW5ldC9mdHAuYywKCSAgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglEbyBub3QgY2hlY2sgZm9yIG5vbiBOVUxMIHBvaW50ZXIgYmVmb3JlIEhlYXBGcmVlJ2luZyBpdC4gSXQncwoJcmVkdW5kYW50LgoKCSogZGxscy9nZGkvZW5obWV0YWZpbGUuYywgZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVNvbWUgbWlzc2luZyBjb25zdCBjb3JyZWN0bmVzcyBmaXhlcy4KCgkqIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluLCB0b29scy93aW5lZHVtcC9sZS5jLCB0b29scy93aW5lZHVtcC9wZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHBhcnRpYWwgVnhEIHN1cHBvcnQuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBZGQgY29tbWVudCBhYm91dCBDTElQQk9BUkRfU2V0Q2xpcGJvYXJkT3duZXIuCgoJKiBkbGxzL2RtYmFuZC9kbXV0aWxzLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWJ1ZyBmaXhlcyBhbmQgY2xlYW51cC4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLmVzLCBwcm9ncmFtcy93aW5lZmlsZS9Fcy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglBZGRlZCBTcGFuaXNoIHRyYW5zbGF0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCS0gRmluaXNoIG9mZiB0aGUgIlJlbW92ZSBBcHBsaWNhdGlvbiIgYnV0dG9uLgoJLSBBbGxvdyByZW1vdmFsIG9mIGtleXMgZnJvbSB0aGUgb3ZlcmxheS4KCS0gT25lIG9yIHR3byB3aGl0ZXNwYWNlIGZpeGVzLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG8gbm90IHByaW50IEZJWE1FIGluIFgxMURSVl9HZXRLZXlib2FyZExheW91dCBpZiBkd1RocmVhZGlkCgkgIGlkZW50aWZpZXMgY3VycmVudCB0aHJlYWQuCgktIE1ha2UgWDExRFJWX0dldEtleWJvYXJkTGF5b3V0TGlzdCBmb2xsb3cgdGhlIHNhbWUgcnVsZSBhcwoJICBYMTFEUlZfR2V0S2V5Ym9hcmRMYXlvdXQgYW5kIFgxMURSVl9HZXRLZXlib2FyZExheW91dE5hbWUgZm9yIENKSwoJICBsb2NhbGVzLgoJLSBUaGVyZSBpcyBubyBuZWVkIHRvIGhhdmUgMHhlMDAxIGluIHRoZSBoaWdoIHdvcmQgb2YgSmFwYW5lc2UKCSAga2V5Ym9hcmQgbGF5b3V0cyBsY2lkcyBpbiBtYWluX2tleV90YWIsIHRoZSBhYm92ZSBBUElzIHRha2UgY2FyZSBvZgoJICBpdC4KCS0gSGlnaCB3b3JkIG9mIGEgcmV0dXJuZWQga2V5Ym9hcmQgbGF5b3V0IGR1cGxpY2F0ZXMgbG93IHdvcmQgZm9yIG5vbgoJICBDSksgbG9jYWxlcyB1bmRlciBXaW5kb3dzLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9ydGwuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSByZWdyZXNzaW9ucyBmcm9tIHRoZSBwcmV2aW91cyBjaGFuZ2UuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUhhbmRsZSBjb3JyZWN0bHkgRERTRF9MSU5FQVJTSVpFIGZsYWcgZm9yIEZPVVJDQyB0ZXh0dXJlcy4KCgkqIGRsbHMvdXNlci90ZXN0cy9saXN0Ym94LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgdGVzdCBmb3IgdGhlIGxpc3Rib3ggaXRlbSBoZWlnaHQuCgoJKiBkbGxzL2l0c3MvaXRzcy5jLCBkbGxzL2l0c3MvbW9uaWtlci5jLCBkbGxzL2l0c3Mvc3RvcmFnZS5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUltcGxlbWVudGVkIERsbENhblVubG9hZE5vdy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUdldCByaWQgb2YgVy0+QSBjYWxsLgoKCSogcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLm1hbjoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUeXBvcy9ncmFtbWFyIGZpeGVzLgoKCSogZGxscy9zaGx3YXBpL3VybC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ29uc3QgY29ycmVjdG5lc3MgZml4LgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgQXNjaWkgZnVuY3Rpb25zIGV4cGxpY2l0bHkuCgoJKiBkbGxzL3VzZXIvc3RhdGljLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTU19DRU5URVJJTUFHRSBoYXMgYmVlbiBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jLCBpbmNsdWRlL3dpbmNyeXB0Lmg6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBwYXJhbGxlbCBoYXNoaW5nIGluIENQRW5jcnlwdCBhbmQgQ1BEZWNyeXB0LgoJSW1wbGVtZW50ZWQgQ1BIYXNoU2Vzc2lvbktleS4KCgkqIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQ29tbWVudCBvdXQgYW4gYXNzZXJ0LCBhcyB3ZSBkb24ndCB5ZXQgaW1wbGVtZW50IElSZW1Vbmtub3duLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9nZGkvcGFsZXR0ZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgR2V0TG9nQ29sb3JTcGFjZXtBLFd9LgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbGNmb3JtYXQuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIEVudW1EYXRlRm9ybWF0c0V4e0EsV30uCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsIGluY2x1ZGUvcmFzLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBSYXNDb25uZWN0aW9uTm90aWZpY2F0aW9ue0EsV30sCglSYXNDcmVhdGVQaG9uZWJvb2tFbnRyeXtBLFd9LCBSYXNEZWxldGVTdWJFbnRyeXtBLFd9LCBSYXNEaWFse0EsV30sCglSYXNFZGl0UGhvbmVib29rRW50cnl7QSxXfSwgUmFzR2V0Q29ubmVjdFN0YXR1c3tBLFd9LAoJUmFzR2V0RW50cnlEaWFsUGFyYW1zVywgUmFzSGFuZ1VwVywgUmFzR2V0RW50cnlQcm9wZXJ0aWVzVywKCVJhc0dldEVycm9yU3RyaW5ne0EsV30sIFJhc0dldFByb2plY3Rpb25JbmZve0EsV30sCglSYXNSZW5hbWVFbnRyeXtBLFd9LCBSYXNTZXRFbnRyeURpYWxQYXJhbXN7QSxXfSwKCVJhc1NldFN1YkVudHJ5UHJvcGVydGllc3tBLFd9LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZyZWUgYWxsb2NhdGVkIGJ1ZmZlcnMuCgoJKiBSRUFETUU6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUmVtb3ZlIG9ic29sZXRlIGluZm8uCgoJKiB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIG9wdGlvbmFsLCBkZWZhdWx0dmFsdWUgYW5kIHZhcmFyZy4KCgkqIGRsbHMvcnNhZW5oL21waS5jLCBkbGxzL3JzYWVuaC9yc2EuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVNtYWxsIGJ1Z2ZpeGVzIGJhY2twb3J0ZWQgZnJvbSB0aGUgTGliVG9tQ3J5cHQgdjEuMHJjMSByZWxlYXNlLgoKCSogaW5jbHVkZS9vYmppZGwuaWRsOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgZGVmaW5pdGlvbiBvZiBJSW50ZXJuYWxVbmtub3duLgoKMjAwNC0xMi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL2hhbmRsZS5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3JlY29yZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHRocmVhZCBzYWZldHkgZm9yIHJlY29yZHMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL3JwYy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNb3ZlIG5hbWVkIHBpcGUgbWFjcm9zIGludG8gcnBjLmMuCgktIFJlbW92ZSB1bm5lZWRlZCBmdW5jdGlvbi4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL3JwYy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IENPTSBsb2NhbCBzZXJ2ZXJzIHVzaW5nIHRhYmxlIG1hcnNoYWxpbmcgdG8gYXZvaWQgZG9pbmcgdGhlCgltYXJzaGFsaW5nIGluIGEgY2hpbGQgdGhyZWFkIHdoZXJlIENPTSBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvc3R1Ym1hbmFnZXIuYywgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCB0aGUgQ09NIHN0dWIgbWFuYWdlciwgcmVmYWN0b3IgdGhlIGN1cnJlbnQgc3R1YiBjb2RlLgoJLSBCZWdpbiBpbXBsZW1lbnRpbmcgaW50ZXJmYWNlIHN0dWJzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglQYXJzZSBvdXQgdGhlIGZ1bGwgZmVhdHVyZXMgYnkgdXNpbmcgdGhlICcsJyBjaGFyYWN0ZXIgYW5kIGRvCgljb21wYXJpc29ucyBiYXNlZCBvbiB0aGUgZnVsbCBmZWF0dXJlIG5hbWVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb250aW51ZSB3aGVuIGEgZHVwbGljYXRlIGNvbXBvbmVudCBpcyBmb3VuZCBhbmQgbG9hZGVkLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIFJld29yayBob3cgd2UgaGFuZGxlIEZlYXR1cmUgYW5kIENvbXBvbmVudCBTdGF0ZXMuIEkgaGF2ZSBjb25maXJtZWQKCSAgZnJvbSB0ZXN0aW5nIHRoYXQsIGFsdGhvdWdoIGRvY3VtZW50ZWQgbm93aGVyZSwgaGF2aW5nIEFERExPQ0FMIG9uCgkgIHRoZSBpbnN0YWxsIGxpbmUgb3ZlcnJpZGVzIElOU1RBTExMRVZFTC4KCS0gVHJhY2sgYWxsIGZpbGVzIGV4dHJhY3RlZCBmcm9tIGNhYmluZW50cyBhcyB0ZW1wZmlsZXMgc28gdGhleSBjYW4gYmUKCSAgcmVtb3ZlZCBhdCB0aGUgZW5kIG9mIHRoZSBpbnN0YWxsIHRvIG5vdCBsZWF2ZSB1bmluc3RhbGxlZCBidXQKCSAgdW5jYWJiZWQgZmlsZXMgbGF5aW5nIGFyb3VuZC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBJbnN0YWxsIEZlYXR1cmVzIHNlbGVjdGlvbiBhbmQgZXZhbHVhdGlvbiBpbnRvIENvc3RGaW5hbGl6ZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgZm9yIGVuZCBvZiBpbnN0YWxsIGFjdGlvbnMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ3JlYXRlIHRoZSBzaG9ydGN1dCBkaXJlY3RvcnkgaWYgaXQgZG9lcyBub3QgZXhpc3QuCgktIFNldCB0aGUgSU5TVEFMTExFVkVMIGluIENvc3RGaW5hbGl6ZSBpZiBpdCBpcyBub3Qgc2V0LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglFbGltaW5hdGUgc29tZSBmaXhlZCBsZW5ndGggYnVmZmVycy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYywgZGxscy9nZGkvdGVzdHMvYnJ1c2guYywKCSAgZGxscy9nZGkvdGVzdHMvZ2Rpb2JqLmMsIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmMsCgkgIGRsbHMvbHpleHBhbmQvdGVzdHMvbHpleHBhbmRfbWFpbi5jLCBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYywKCSAgZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmMsIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6CglSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJQ29ycmVjdCBjYXNlcyB3aGVyZSBhcmd1bWVudHMgb2Ygb2soKSBjYWxscyBkZXBlbmQgb24gdGhlIG9yZGVyIGluCgl3aGljaCB0aGV5IGFyZSBldmFsdWF0ZWQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IENyZWF0ZVNlcnZpY2UncyBlcnJvciBjb2RlIGZvciBhIHNlcnZpY2UgdGhhdCBhbHJlYWR5IGV4aXN0cy4KCgkqIGRsbHMvbXNpL3BhY2thZ2UuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUluY2x1ZGUgYSBTeXN0ZW0xNkZvbGRlciBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS91cmxtb24uaWRsOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgSUludGVybmV0QmluZEluZm8sIElJbnRlcm5ldFByb3RvY29sUm9vdCwgSUludGVybmV0UHJvdG9jb2xTaW5rCglhbmQgSUludGVybmV0UHJvdG9jb2wgZGVjbGFyYXRpb25zLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvY2hhbmdlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvdGltZS5jLCBkbGxzL3VzZXIvdGVzdHMvY2xpcGJvYXJkLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91c2VyL3Rlc3RzL3RleHQuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUNvcnJlY3QgY2FzZXMgd2hlcmUgYXJndW1lbnRzIG9mIG9rKCkgY2FsbHMgZGVwZW5kIG9uIHRoZSBvcmRlciBpbgoJd2hpY2ggdGhleSBhcmUgZXZhbHVhdGVkLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9nZGkvcGFsZXR0ZS5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgR2V0SUNNUHJvZmlsZVcsIFNldElDTVByb2ZpbGV7QSxXfSwKCVVwZGF0ZUlDTVJlZ0tleXtBLFd9LgoJRm9yd2FyZCBVcGRhdGVJQ01SZWdLZXkgdG8gVXBkYXRlSUNNUmVnS2V5QS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0eXBlbGliIGdlbmVyYXRpb24gb2YgQ0FSUkFZcy4KCgkqIGRsbHMva2VybmVsL2NwdS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IG5vbi1SVERTQyBjYXNlIGZvciBRdWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5LgoKCSogZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmMsCgkgIGRsbHMvcXVhcnR6L2Rzb3VuZHJlbmRlci5jLCBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsIGRsbHMvcXVhcnR6L3Bpbi5jLAoJICBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbml0aWFsaXplIHRoZSBDT00gbGlicmFyaWVzIGZvciB0aGUgbmV3bHkgY3JlYXRlZCB3b3JrZXIgdGhyZWFkIGluCgl0aGUgQVZJIHNwbGl0dGVyLgoJRml4ZWQgc29tZSByZXR1cm5lZCBlcnJvciBjb2Rlcy4KCVNob3cgcmVmY291bnQgaW4gdGhlIEFkZFJlZi9SZWxlYXNlIHRyYWNlcyBpbiBmaWx0ZXIuCglBZGRlZCAyNCBiaXRzIHNvdXJjZSBpbiB0aGUgdmlkZW8gcmVuZGVyZXIuCgoJKiB0b29scy93aWRsL3dpZGwuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJR2VuZXJhdGUgb25seSB3YW50ZWQgZmlsZXMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGYWtlIGxpbmUgc3dlZXBpbmcgb2YgdGhlIG1vbml0b3IuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdXNlIFJ0bENyZWF0ZVVuaWNvZGVTdHJpbmdGcm9tQXNjaWl6LCBpdCBkb2Vzbid0IHByZXNlcnZlIE5VTEwuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUVuYWJsZSBhc3luY2hyb25vdXMgZGxsIGN1c3RvbSBhY3Rpb24gY2FsbHMuCgoJKiBkbGxzL2F0bC9hdGwuc3BlYywgZGxscy9hdGwvYXRsX21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIEF0bE1vZHVsZVJlZ2lzdGVyU2VydmVyLgoKCSogZGxscy9rZXJuZWwvaGVhcC5jOiBQYXVsIFZyaWVucyA8UGF1bC5WcmllbnNAeHM0YWxsLm5sPgoJSW5pdGlhbGl6ZSBkd09TVmVyc2lvbkluZm9TaXplIGluIEdsb2JhbE1lbW9yeVN0YXR1cy4KCgkqIGRsbHMvbmV0YXBpMzIvdGVzdHMvYWNjZXNzLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUZpeCB0ZXN0IGZhaWx1cmUgb24gV2luZG93cyAyMDAwLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueTogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeGVkIGRlZmluaW5nIERJSURzLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBYbGliIGxvY2tpbmcgaW4gY3JlYXRlX2Rlc2t0b3AuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglQcm9wYWdhdGUgYXBhcnRtZW50cyB0aHJvdWdoIHRoZSBpbnRlcm1lZGlhdGUgdGhyZWFkcywgbWFrZSBsaXN0ZW5lcgoJdGhyZWFkIGFwYXJ0bWVudCBzY29wZWQuCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGluY2x1ZGUvdmZ3Lmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBBVklNYWtlU3RyZWFtRnJvbUNsaXBib2FyZCwgQVZJU2F2ZXtBLFd9LgoJRm9yd2FyZCBBVklCdWlsZEZpbHRlciwgQVZJRmlsZUNyZWF0ZVN0cmVhbSwgQVZJRmlsZU9wZW4sIEFWSVNhdmUsCglFZGl0U3RyZWFtU2V0SW5mbywgRWRpdFN0cmVhbVNldE5hbWUgdG8gdGhlaXIgcmVzcGVjdGl2ZSAqQSB2YXJpYW50cy4KCgkqIGRsbHMvZGlucHV0L21vdXNlLmM6IE5laWwgT2x2ZXIgPG9sdmVyQG1hdGgubWNnaWxsLmNhPgoJVGhlIGZsYWcgZm9yIGEgbW91c2UgYnV0dG9uIGRvd24gaW4gdGhlIHN0cnVjdHVyZSByZXR1cm5lZCBieQoJR2V0RGV2aWNlU3RhdGUgc2hvdWxkIGJlIDB4ODAgKG9ubHkgdGhlIGhpZ2ggYml0IHNldCksIG5vdCAweGZmLgoKMjAwNC0xMi0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lcHMvY2xpcHBpbmcuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHBkLmMsIGRsbHMvd2luZXBzL3R5cGU0Mi5jLAoJICBkbGxzL3dpbmluZXQvY29va2llLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbWNpLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLAoJICBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYywKCSAgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvZHNjYXB0dXJlLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9kc3JlbmRlci5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay9zb2NrZXQxNi5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZGxscy94MTFkcnYvZGliLmMsIGRsbHMveDExZHJ2L3BhbGV0dGUuYywgZGxscy94MTFkcnYvdGV4dC5jLAoJICBkbGxzL3gxMWRydi94Zm9udC5jLCBkbGxzL3gxMWRydi94cmFuZHIuYywgZGxscy94MTFkcnYveHJlbmRlci5jLAoJICBkbGxzL21wci93bmV0LmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2Rtby9kbW9yZWcuYywKCSAgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsCgkgIGRsbHMvbXN2aWRlby9tY2l3bmQuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL25ldGFwaTMyL25ibmFtZWNhY2hlLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLAoJICBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMva2VybmVsL2NvbW0uYywKCSAgZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9lZGl0bGluZS5jLCBkbGxzL2tlcm5lbC9lbnZpcm9uLmMsCgkgIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvZmlsZTE2LmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywKCSAgZGxscy9rZXJuZWwvZ2xvYmFsMTYuYywgZGxscy9rZXJuZWwvbGNmb3JtYXQuYywKCSAgZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL3BhdGguYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC9wcm9maWxlLmMsCgkgIGRsbHMva2VybmVsL3Jlc291cmNlLmMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvYWxsb2MuYywgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL2tlcm5lbC92b2x1bWUuYywKCSAgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kc291bmQvYnVmZmVyLmMsCgkgIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2dkaS9iaXRtYXAuYywKCSAgZGxscy9nZGkvZGMuYywgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2ZvbnQuYywKCSAgZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvZ2RpMTYuYywgZGxscy9nZGkvbWV0YWZpbGUuYywKCSAgZGxscy9nZGkvcGFsZXR0ZS5jLCBkbGxzL2dkaS9wYXRoLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy9nZGkvbWZkcnYvdGV4dC5jLCBkbGxzL2ltbTMyL2ltbS5jLAoJICBkbGxzL2lwaGxwYXBpL2lmZW51bS5jLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvZDNkOC92ZXJ0ZXhidWZmZXIuYywgZGxscy9kM2R4OC9kM2R4YnVmZmVyLmMsCgkgIGRsbHMvZGJnaGVscC9tc2MuYywgZGxscy9kYmdoZWxwL3N0YWJzLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsCgkgIGRsbHMvZGlucHV0L21vdXNlLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywKCSAgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvc3lzbGluay5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGczMS5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLAoJICBkbGxzL3NobHdhcGkvbXNnYm94LmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VzZXIvYnV0dG9uLmMsCgkgIGRsbHMvdXNlci9jb21iby5jLCBkbGxzL3VzZXIvZWRpdC5jLCBkbGxzL3VzZXIvbGlzdGJveC5jLAoJICBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBkbGxzL3ZuYnQudnhkL3ZuYnQuYywgZGxscy93aW5lZDNkL2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhidWZmZXIuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGVmd25kLmMsCgkgIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvY2F0b3IuYywgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywKCSAgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYywKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLCBkbGxzL3JzYWVuaC9oYW5kbGUuYywgZGxscy9yc2FlbmgvcnNhZW5oLmMsCgkgIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NldHVwYXBpL3BhcnNlci5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywKCSAgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywgcHJvZ3JhbXMvcnVuZGxsMzIvcnVuZGxsMzIuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZldWkuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLCBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmMsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYywKCSAgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ubGV4Lmw6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRG8gbm90IGNoZWNrIGZvciBub24gTlVMTCBwb2ludGVyIGJlZm9yZSBIZWFwRnJlZSdpbmcgaXQuIEl0J3MKCXJlZHVuZGFudC4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLAoJICBkbGxzL3JwY3J0NC90ZXN0cy9ycGMuYywgaW5jbHVkZS9ycGNkY2UuaDoKCUJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUltcGxlbWVudGVkIERjZUVycm9ySW5xVGV4dC4KCgkqIGRsbHMvdXNlci9zeXNwYXJhbXMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRHVtcCBrbm93biBidXQgdW5pbXBsZW1lbnRlZCBTeXN0ZW1QYXJhbWV0ZXJJbmZvIGFjdGlvbnMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVjbGFyZSBTZXRMYXllcmVkV2luZG93QXR0cmlidXRlcy4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBNc2lTZXRFeHRlcm5hbFVJVy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRvIGluY2x1ZGUgdHJhaWxpbmcgYmFja3NsYXNoIGluIHBhdGguCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmgsCgkgIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQvaW1wcm92ZWQgVFJBQ0VpbmcuCgoyMDA0LTEyLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQmxhbmsgdGhlIHByb3BlcnR5IGJ1ZmZlcnMgZXZlbiBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGZvdW5kLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNb3ZlIGFyb3VuZCBhbmQgcmVuYW1lIHNvbWUgZnVuY3Rpb25zLgoKCSogZGxscy9nZGkvZW5obWV0YWZpbGUuYywgZGxscy9nZGkvbWV0YWZpbGUuYywgZGxscy9rZXJuZWwvY29tbS5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9zdGdfYmlnYmxvY2tmaWxlLmMsCgkgIGRsbHMvd2luZWRvcy9kZXZpY2VzLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbmVkb3MvaW50MjUuYywKCSAgZGxscy93aW5lZG9zL2ludDI2LmMsIGRsbHMvd2luZWRvcy92Z2EuYywKCSAgcHJvZ3JhbXMvd2luZWJvb3Qvd2luZWJvb3QuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmVhZEZpbGUgYW5kIFdyaXRlRmlsZSBtdXN0IGJlIHBhc3NlZCBhIHBhcmFtZXRlciBmb3IgdGhlIG51bWJlciBvZgoJaGFuZGxlZCBieXRlcyB3aGVuIG5vIG92ZXJsYXBwZWQgb3BlcmF0aW9uIGlzIGRvbmUuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgcGVyLXByb2Nlc3MgaG9zdGVudCwgc2VydmVudCBhbmQgcHJvdGVudCBidWZmZXJzIGludG8KCXBlci10aHJlYWQgYnVmZmVycy4KCgkqIGluY2x1ZGUvYWNsYXBpLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgR2V0U2VjdXJpdHlJbmZvLgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW5jbHVkZSB0aGUgdHJhaWxpbmcgYmFja3NsYXNoIG9uIHRoZSBXaW5kb3dzIHZvbHVtZS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IGluY29ycmVjdCByZXR1cm4gY29kZSBjaGVjay4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBSdXNzIEFuZGVyc3NvbiA8bWF0Y2htb3ZpZUB5YWhvby5jb20+CglUaGUgV01fTU9VU0VXSEVFTCBtZXNzYWdlIGlzIHNwZWNpZmllZCB0byBoYXZlIGFic29sdXRlIHNjcmVlbgoJY29vcmRpbmF0ZXMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJVW5pY29kaWZpZWQgZm9udGRsZy4KCgkqIGRsbHMveDExZHJ2L2NsaXBwaW5nLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgYnVnIHdpdGggdW5zaWduZWQgaW5kZXggaW4gZGVjcmVhc2luZyBsb29wLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggZm9sZGVyIHJlc29sdXRpb24uCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2gsIHRoYXQncyBub3QgYSBsZWFrLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL250ZGxsL3NlYy5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglGaXhlZCBwcm90b3R5cGVzIG9mIGEgY291cGxlIG9mIG50ZGxsIGZ1bmN0aW9ucy4KCVJlcGxhY2VkIHRoZSBDYWxsV2luMzJUb050IG1hY3JvIGJ5IGEgcHJvcGVyIGZ1bmN0aW9uLgoJUEJPT0wgY2Fubm90IGJlIGNhc3QgdG8gUEJPT0xFQU4sIHdlIG5lZWQgdG8gdXNlIGFuIGludGVybWVkaWF0ZQoJdmFyaWFibGUuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIG1vcmUgZml4ZWQgbGVuZ3RoIGJ1ZmZlcnMsIHJld3JpdGUgZnVuY3Rpb25zIHRvIHJldHVybgoJbWFsbG9jJ2VkIG1lbW9yeS4KCgkqIGRsbHMvbXNpL3F1ZXJ5LmgsIGRsbHMvbXNpL3RhYmxlLmMsIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc2VsZWN0aW5nIHN0cmluZyBjb2x1bW5zIGFuZCBtYXRjaGluZyBhZ2FpbnN0IGEgd2lsZGNhcmQuCgoJKiBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLAoJICBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsIGRsbHMvZG1jb21wb3MvY2hvcmRtYXB0cmFjay5jLAoJICBkbGxzL2RtY29tcG9zL3NpZ25wb3N0dHJhY2suYywgZGxscy9kbWltZS9hdWRpb3BhdGguYywKCSAgZGxscy9kbWltZS9ncmFwaC5jLCBkbGxzL2RtaW1lL2x5cmljc3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvbWFya2VydHJhY2suYywgZGxscy9kbWltZS9wYXJhbWNvbnRyb2x0cmFjay5jLAoJICBkbGxzL2RtaW1lL3BhdHRlcm50cmFjay5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS9zZWdtZW50c3RhdGUuYywgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywKCSAgZGxscy9kbWltZS9zZXF0cmFjay5jLCBkbGxzL2RtaW1lL3N5c2V4dHJhY2suYywKCSAgZGxscy9kbWltZS90ZW1wb3RyYWNrLmMsIGRsbHMvZG1pbWUvdGltZXNpZ3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdG9vbC5jLCBkbGxzL2RtaW1lL3dhdmV0cmFjay5jLCBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdHRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9hdWRpdGlvbnRyYWNrLmMsIGRsbHMvZG1zdHlsZS9jaG9yZHRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9jb21tYW5kdHJhY2suYywgZGxscy9kbXN0eWxlL21vdGlmdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL211dGV0cmFjay5jLCBkbGxzL2Rtc3R5bGUvc3R5bGUuYywKCSAgZGxscy9kbXN0eWxlL3N0eWxldHJhY2suYywgZGxscy9kbXVzaWMvYnVmZmVyLmMsCgkgIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywgZGxscy9kbXVzaWMvZG93bmxvYWQuYywKCSAgZGxscy9kbXVzaWMvZG93bmxvYWRlZGluc3RydW1lbnQuYywgZGxscy9kbXVzaWMvaW5zdHJ1bWVudC5jLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmUuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW50YWIzMi93aW50YWIzMi5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdW5uZWVkZWQgTlVMTCBjYXN0cy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBhIGxvdCBvZiBmaXhlZCBsZW5ndGggYnVmZmVycy4KCgkqIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgdG9vbHMvd2luZWR1bXAvc2VhcmNoLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGdfQ24ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1RoLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Vay5yYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSAnQWxsIHh4eCBwYWdlcycgdGV4dCBpbiBjb21tb24gcHJpbnQgZGlhbG9nIGJ5IHNpbXBsZSAnQWxsJy4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVBlcmZvcm0gY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIHdpdGggY2FjaGVkIGluaSBmaWxlIG5hbWUuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVbmNvbW1lbnQgY2FsbCB0byBGbHVzaENvbnNvbGVJbnB1dEJ1ZmZlciBpbiBGbHVzaEZpbGVCdWZmZXJzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglBZGQgYSBjaGVjayBpZiB3ZSBhcmUgcnVubmluZyBvbiBhIHZpc2libGUgZGVza3RvcC4gQ3JlZGl0cyB0byBEbWl0cnkKCVRpbW9zaGtvdiBmb3IgdGhlIGVhc3kgdGVzdC4KCjIwMDQtMTItMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgZGxscy9udGRsbC9zZWMuYywgaW5jbHVkZS9hY2xhcGkuaCwgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2luc3ZjLmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIEFkanVzdFRva2VuR3JvdXBzLCBBcmVBbGxBY2Nlc3Nlc0dyYW50ZWQsCglDcmVhdGVQcml2YXRlT2JqZWN0U2VjdXJpdHksIENyZWF0ZVByb2Nlc3NBc1VzZXJ7QSxXfSwKCURlc3Ryb3lQcml2YXRlT2JqZWN0U2VjdXJpdHksIER1cGxpY2F0ZVRva2VueyxFeH0sCglFbnVtRGVwZW5kZW50U2VydmljZXN7QSxXfSwgR2V0RWZmZWN0aXZlUmlnaHRzRnJvbUFjbHtBLFd9LAoJQ29udmVydFN0cmluZ1NlY3VyaXR5RGVzY3JpcHRvclRvU2VjdXJpdHlEZXNjcmlwdG9yQS4gSW1wbGVtZW50YXRpb25zCglmb3IgQnVpbGRFeHBsaWNpdEFjY2Vzc1dpdGhOYW1le0EsV30sCglCdWlsZFRydXN0ZWVXaXRoT2JqZWN0c0FuZE5hbWV7QSxXfSwKCUJ1aWxkVHJ1c3RlZVdpdGhPYmplY3RzQW5kU2lke0EsV30uCglDb3JyZWN0IHByb3RvdHlwZSBmb3IgSW5pdGlhbGl6ZUFjbCwgUnRsQ29weVNpZCBhbmQgUnRsR2V0QWNlLgoJVXNlIHRoZSBDYWxsV2luMzJUb050IG1hY3JvIG9ubHkgd2l0aCBmdW5jdGlvbnMgdGhhdCByZXR1cm4gYW4KCU5UU1RBVFVTLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUG9zdHBvbmUgY3JlYXRpb24gZGlzcG9zaXRpb24gY2hlY2sgaW4gQ3JlYXRlRmlsZSB1bnRpbCBpdCdzIHJlYWxseQoJdXNlZC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJSW4gT3BlblNDTWFuYWdlclcoKSBhbGxvdyBscERhdGFiYXNlTmFtZSB0byBiZSBhbiBlbXB0eSBzdHJpbmcuCgoJKiBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2RkcmF3Lmg6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglBZGRlZCBEM0RFUlJfQ09MT1JLRVlBVFRBQ0hFRCBhbmQgRERHRElfR0VUSE9TVElERU5USUZJRVIuCgoJKiBkbGxzL3VzZXIvdGVzdHMvZGlhbG9nLmMsIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5yYywgd2luZG93cy9kaWFsb2cuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGEgZGlhbG9nIHdpdGggdGhlIERTX0NPTlRST0wgc3R5bGUgaXMgbm90IHZpc2libGUgdGhlbiBpZ25vcmUKCWRlZmF1bHQgZm9jdXMgYXNzaWdubWVudC4KCgkqIGRsbHMvb2xlMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9vbGUzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi90ZXN0cy9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvdGVzdHMvbW9uaWtlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRlc3RzIGZvciBtb25pa2VyIGFuZCBtYXJzaGFsaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIHZhbHVlcyBwYXNzZWQgaW4gdG8gU2V0V2luTWV0YUZpbGVCaXRzLCBub3Qgb3VyIGxvY2FsIGNvcHkuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglPdXRwdXQgRU1SX1BPTFlHT04xNiByZWNvcmRzIHdoZW4gcG9zc2libGUuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBDcmVzdGV6IExlb25hcmQgPGNsZW9uYXJkQGdvLnJvPgoJQ2hlY2sgZm9yIG1hbGZvcm1lZCBzb3VyY2UgcmVjdCBpbiBESUJfRGlyZWN0RHJhd1N1cmZhY3RfQmx0RmFzdCwgYW5kCglyZXR1cm4gRERFUlJfSU5WQUxJRF9SRUNULgoKCSogZGxscy9nZGkvZm9udC5jLCBkbGxzL2dkaS9mcmVldHlwZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZ1bGx5IGluaXRpYWxpemUgTkVXVEVYVE1FVFJJQ0VYVyBzdHJ1Y3R1cmUgZm9yIGJpdG1hcCBmb250cy4KCgkqIGRsbHMvd2luaW5ldC9jb29raWUuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglEbyBub3QgY2hlY2sgZm9yIG5vbiBOVUxMIHBvaW50ZXIgYmVmb3JlIEhlZXBGcmVlJ2luZyBpdC4gSXQncwoJcmVkdW5kYW50LgoKCSogZGxscy9tYXBpMzIvdGVzdHMvaW1hbGxvYy5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglUaGVyZSBtYXkgYmUgbm8gZGVmYXVsdCBNQVBJIG1hbGxvYyBpbnN0YWxsZWQuCgoJKiBkbGxzL3VzZXIvZm9jdXMuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCVlvdSBjYW4gbWFrZSBhbiBpbnZpc2libGUgd2luZG93IHRoZSBhY3RpdmUgd2luZG93LgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZXNwZWN0IHRoZSBzRGVzY3JpcHRpb24gcGFyYW1ldGVyIGluIENyeXB0U2lnbkhhc2ggYW5kCglDcnlwdFZlcmlmeVNpZ25hdHVyZS4KCjIwMDQtMTItMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvZGJnaGVscC9tc2N2cGRiLmgsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywgZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmMsCgkgIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9tYXBpMzIvdXRpbC5jLCBkbGxzL21zcmxlMzIvbXNybGUzMi5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsCgkgIGRsbHMvcnNhZW5oL2hhbmRsZS5jLCBkbGxzL3JzYWVuaC9tcGkuYywgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUEgZHJpdmVyIGRvZXMgbm90IGhhdmUgdG8gc3VwcG9ydCBhbGwgZm9ybWF0cy4KCgkqIGRsbHMvdXNlci9jb21tMTYuYywgZGxscy91c2VyL2RkZS9kZGVtbDE2LmMsIGRsbHMvdXNlci9leHRpY29uLmMsCgkgIGRsbHMvdXNlci9mb2N1cy5jLCBkbGxzL3VzZXIvbGlzdGJveC5jLCBkbGxzL3VzZXIvbHN0ci5jLAoJICBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvbmV0d29yay5jLCBkbGxzL3VzZXIvcHJvcGVydHkuYywKCSAgZGxscy91c2VyL3N0YXRpYy5jLCBkbGxzL3VzZXIvdGV4dC5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L3RleHQuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlbW92ZSB1bm5lZWRlZCBoZWFkZXJzIHRvIHJlZHVjZSB1bm5lZWRlZCByZWJ1aWxkcy4KCgkqIGRsbHMvdXJsbW9uL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi90ZXN0cy91cmwuYywKCSAgZGxscy91cmxtb24vdW1vbi5jLCBpbmNsdWRlL3VybG1vbi5pZGw6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCB0ZXN0IG9mIEJpbmRUb1N0b3JhZ2UuCgktIEFkZGVkIHNvbWUgZGVjbGFyYXRpb25zIHRvIHVybG1vbi5pZGwuCgoJKiBsaWJzL3dpbmUvY29uZmlnLmM6CglGaXggbG9uZyBzdGFuZGluZyByZWdyZXNzaW9uIGluIHRoZSBidWlsZGluZyBvZiB0aGUgc2VydmVyIGRpcmVjdG9yeQoJbmFtZSAoZm91bmQgYnkgTmlnZWwgUm93ZSkuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCWl4ZWQgY2FsY3VsYXRpb24gb2YgYnVmZmVyIHNpemUgaW4gQ1JZUFRfQU5TSVRvVW5pY29kZSBhbmQKCUNSWVBUX1VuaWNvZGVUb0FOU0kuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJTVNWQyBwb3J0aW5nIGZpeGVzLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJldHVybiBhY3R1YWwgcmVzdWx0IG9uIGVycm9yLgoKCSogZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUVuYWJsZSBjcmVhdGlvbiBvZiB0aGUgUkdCIGRldmljZS4KCgkqIGRsbHMvcXVhcnR6L2F2aWRlYy5jLCBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jLAoJICBkbGxzL3F1YXJ0ei9kc291bmRyZW5kZXIuYywgZGxscy9xdWFydHovbWVtYWxsb2NhdG9yLmMsCgkgIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIE1lZGlhU2FtcGxlIHBhc3NpbmcuIFRoaXMgaXMgdGhlIHVwc3RyZWFtIGZpbHRlciB0aGF0IHJlbGVhc2VzCglpdC4KCVNldCBwcE1lZGlhVHlwZSB0byBOVUxMIHdoZW4gcmV0dXJuaW5nIFNfRkFMU0UgaW4KCUlNZWRpYVNhbXBsZV9HZXRNZWRpYVR5cGUgKHJlcXVpcmVkIGJ5IG5hdGl2ZSBRdWFydHogZGxsKS4KCUFkZGVkIHN1cHBvcnQgZm9yIDMyLWJpdCBkZXB0aCBzb3VyY2UgaW4gdmlkZW8gcmVuZGVyZXIuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCUZ1bGx5IGluaXRpYWxpc2UgdGhlIHN0cnVjdHVyZSB0byBwcmV2ZW50IGlsbC1kZWZpbmVkIGJlaGF2aW91ci4KCgkqIGRsbHMvbXNjbXMvTWFrZWZpbGUuaW4sIGRsbHMvbXNjbXMvbXNjbXMuc3BlYywgZGxscy9tc2Ntcy9wcm9maWxlLmMsCgkgIGRsbHMvbXNjbXMvc3R1Yi5jLCBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYywgaW5jbHVkZS9pY20uaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIGFsbCBkb2N1bWVudGVkIGZ1bmN0aW9ucy4KCgkqIGRsbHMvcnNhZW5oL3JzYWVuaC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglSZXNwZWN0IHNEZXNjcmlwdGlvbiBwYXJhbWV0ZXIgaW4gQ1BTaWduSGFzaCBhbmQgQ1BWZXJpZnlTaWduYXR1cmUuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTWFrZSB0aGUgbW9udGggY2FsZW5kYXIgY2hpbGQgd2luZG93IGF1dG8tc2l6ZSBpbnN0ZWFkIG9mIHVzaW5nIGEKCSAgaGFyZCBjb2RlZCAyMDBweC4KCS0gVXNlIFNldEZvY3VzIHdoZW4gdGhlIGNvbnRyb2wgaXMgY2xpY2tlZCBvbiB0byBnZXQgdGhlIGNvcnJlY3QKCSAgYmVoYXZpb3VyIHdoZW4gYW5vdGhlciBjb250cm9sIGNsaWNrZWQgb24uCgktIEZvcmNlIHRoZSBXU19FWF9DTElFTlRFREdFIHN0eWxlLCBpbnN0ZWFkIG9mIGVtdWxhdGluZyBpdC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCS0gbWFrZSBzdXJlIHRoYXQgdGVzdHMgbWFya2VkIGFzIHRvZG9fd2luZSBhbmQgYWN0dWFsbHkgc3VjY2VlZCB1bmRlcgoJICB3aW5lIHdpbGwgYmUgY291bnRlZCBhcyBmYWlsdXJlcwoJLSByZW1vdmUgdG9kb193aW5lIGZyb20gYSBidW5jaCBvZiB0ZXN0cwoJLSBsb2cgdGhlIGxpbmUgbnVtYmVycyBvZiB0aGUgYWN0dWFsIHRlc3RzLCBub3QgdGhvc2Ugb2YgYSBoZWxwZXIKCSAgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBwYXJ0aWFsIGhhbmRsZXIgZm9yIFdNX1BSSU5UQ0xJRU5ULgoKCSogaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS9ycGNuZHIuaDogUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCVJlbW92ZSBjb21waWxlciB3YXJuaW5ncyBmb3IgdGhlICMgbm90IGJlaW5nIGF0IHRoZSBzdGFydCBvZiB0aGUKCWxpbmUuCgoJKiB0b29scy93aW5lZHVtcC9tYWluLmMsIHRvb2xzL3dpbmVkdW1wL3NlYXJjaC5jLAoJICB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCUFsbG93IHNldmVyYWwgLUkgcGFyYW1ldGVycyB0byBiZSBnaXZlbiAtIGN1cnJlbnRseSBqdXN0IHRoZSBsYXN0IGlzCgl1c2VkLiBSZW1vdmUgb2J2aW91cyB3cm9uZyBiaW5hcmllcyB3aGVuIHNlYXJjaGluZyBmb3IgdGhlIGRlZmluaXRpb24KCW9mIGEgZnVuY3Rpb25zIGRlZmluaXRpb24uIFJlYWxseSBqdXN0IHN0cmlwIGEgJy5kbGwnIGV4dGVuc2lvbiBhbmQKCW5vdCBhbHNvICcuZGxsLmZvb3JiYXIuc3BlYycuCgoJKiB0b29scy93aW5lZHVtcC9mdW5jdGlvbl9ncmVwLnBsOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJV2Fyem9uZSAyMTAwIGhhcyBpbiBhIGhlYWRlciBhIGRlZmluaXRpb24gdGhhdCBlbmRzIHdpdGggYSBzbGFzaC4gQXMKCScuJyBkb2VzIG5vdCBpbmNsdWRlICdcbicgd2luZWR1bXAga2VlcHMgbG9va2luZyBhaGVhZCB1bnRpbCBlb2YuCgoyMDA0LTEyLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxiaXRtYXAuYywKCSAgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zdHJpbmcuYywgZGxscy9udGRsbC9zeW5jLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZXJyb3IuYywgZGxscy9udGRsbC90ZXN0cy9sYXJnZV9pbnQuYywKCSAgZGxscy9udGRsbC90ZXN0cy9ydGwuYywgZGxscy9udGRsbC90ZXN0cy9zdHJpbmcuYywKCSAgZGxscy9udGRsbC92ZXJzaW9uLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZW1vdmUgdW5uZWVkZWQgaGVhZGVycyB0byByZWR1Y2UgdW5uZWVkZWQgcmVidWlsZHMuCgoJKiBkbGxzL3gxMWRydi94MTFkcnYuaDogUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJLSByZW1vdmVkIHVudXNlZCB0YWdQQUxFVFRFT0JKIGFuZCB0YWdXSU5ET1dQT1MKCS0gdGFnQklUTUFQT0JKIGlzIGRlY2xhcmVkIHR3aWNlLCByZW1vdmVkIG9uZS4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGluY2x1ZGUvc2hlbGxhcGkuaDoKCVJlbW92ZSBzb21lIG5vIGxvbmdlciBuZWVkZWQgQVcgZnVuY3Rpb25zLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6CglFeHBhbmQgdGhlIENPUFlURVNUIG1hY3JvIHRvIGF2b2lkIHRyb3VibGUgd2l0aCA2NC1iaXQgdHlwZXMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc3RvcHdhdGNoLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9jbHNpZC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlbW92ZSB1bm5lZWRlZCBoZWFkZXJzIHRvIHJlZHVjZSB1bm5lZWRlZCByZWJ1aWxkcy4KCgkqIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4ZWQgYnVpbGQgcHJvYmxlbSB3aXRoIEdMX1ZFUlNJT05fMV8yLgoKCSogZGxscy9udGRsbC92ZXJzaW9uLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUJldHRlciBkZXRlY3QgYSBkbGwncyBXaW5kb3dzIHZlcnNpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOiBSZWluIEtsYXplcyA8d2lqbkB3YW5hZG9vLm5sPgoJU2hlbGxFeGVjdXRlRXgsIEV4dHJhY3RJY29uRXgsIFNIRmlsZU9wZXJhdGlvbiwgU0hHZXRGaWxlSW5mbywKCVNIR2V0UGF0aEZyb21JRExpc3Qgc3BlYyBlbnRyaWVzIGFsd2F5cyByZWZlciB0byB0aGUgQW5zaQoJdmVyc2lvbi4gUHJvYmxlbSBmb3VuZCBieSBQYXVsIFZyaWVucy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJldHVybiBmbGFnIGZvciBEUlZNX01BUFBFUl9QUkVGRVJSRURfR0VULgoKCSogaW5jbHVkZS9tbWRkay5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgYSBtaXNzaW5nIGRlZmluZS4KCgkqIGRsbHMva2VybmVsL21vZHVsZS5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXhlZCBhIHR5cG8uCgoJKiBkbGxzL2tlcm5lbC9wYXRoLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJR2V0VGVtcFBhdGgqKCkgdXNlcyBEV09SRCBwYXJhbWV0ZXJzIGluc3RlYWQgb2YgVUlOVC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGNvbW1lbnQgdG8gcmVmbGVjdCByZWFsaXR5IGFuZCBpbmRlZWQgdGhlIGNvZGUuCgoJKiBpbmNsdWRlL29iamlkbC5pZGw6IFNlcmdlIFMuIFNwaXJpZG9ub2ZmIDxzc3NAY29yYmluYS5uZXQ+CglJTWVzc2FnZUZpbHRlcjo6SGFuZGxlSW5jb21pbmdDYWxsIG11c3QgYmUgSGFuZGxlSW5Db21pbmdDYWxsIGFzIHBlcgoJTVMgaGVhZGVycy4KCgkqIGRsbHMvdXNlci9zdGF0aWMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFNTX0NFTlRFUklNQUdFIGZvciBzdGF0aWMgY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgY29kZSBmb3IgaG90IHRyYWNraW5nLgoJLSBEcmF3IGhvdCBpdGVtcyB3aXRoIHVuZGVybGluZSBhbmQgd2l0aCBoaWdobGlnaHQgY29sb3VyIHdpdGgKCSAgVFZTX1RSQUNLU0VMRUNUIHN0eWxlLgoJLSBTZXQgY3Vyc29yIHRvIGhhbmQgY3Vyc29yIHdpdGggVFZTX1RSQUNLU0VMRUNUIHN0eWxlLgoJLSBNYWtlIHN1cmUgdUludGVybmFsU3RhdHVzIGlzIGNvbnNpc3RlbnQgd2l0aCBhY3R1YWwgc2Nyb2xsYmFyIHN0YXRlCgkgIGJ5IGZvcmNpbmcgc2Nyb2xsYmFycyBvZmYgaW4gV01fQ1JFQVRFIGhhbmRsZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW1wbGVtZW50IFdNX0VOQUJMRSBoYW5kbGVyIHRvIHVwZGF0ZSBjYWNoZWQgY29udHJvbCBzdHlsZSB3aGVuIHRoZQoJICBjb250cm9sIGlzIGRpc2FibGVkLgoJLSBNb3ZlIGJhY2tncm91bmQgZHJhd2luZyBpbnRvIFdNX0VSQVNFQktHTkQgaGFuZGxlciBhbmQgZHJhdyB0aGUKCSAgYmFja2dyb3VuZCBkaWZmZXJlbnRseSB3aGVuIGRpc2FibGVkLgoJLSBDaGFuZ2UgV01fUEFJTlQgaGFuZGxlciB0byBkcmF3IHRleHQgd2l0aCB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIGFuZAoJICB3aXRoIHRoZSBjb3JyZWN0IGNvbG91ciBmb3IgdGhlIHN0eWxlLgoJLSBJbml0aWFsaXplIHNlbGVjdGVkIGZpZWxkIHRvIC0xIGluc3RlYWQgb2YgMCBzbyB0aGF0IHRoZSBjb250cm9sCgkgIG5vdGljZXMgd2hlbiBmaWVsZCAwIGlzIHNlbGVjdGVkLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3gxMWRydi9tb3VzZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIG1vdXNlIGlucHV0IHRlc3QgY2FzZSwgbWFrZSB0aGUgdGVzdCBwYXNzIHVuZGVyIFdpbmUuCgoyMDA0LTEyLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC92ZXJzaW9uLmM6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglCZXR0ZXIgRVhFIHZlcnNpb24gY2hlY2sgaW4gVkVSU0lPTl9HZXRMaW5rZWREbGxWZXJzaW9uLgoKCSogZGxscy91bmljb3dzL01ha2VmaWxlLmluLCBkbGxzL3VuaWNvd3MvbWFpbi5jLAoJICBkbGxzL3VuaWNvd3MvdW5pY293cy5zcGVjOgoJQWRkZWQgYSBmZXcgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdyBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLAoJICBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLAoJICBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIxNi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsCgkgIGRsbHMvZ2RpL2JpdG1hcC5jLCBkbGxzL2dkaS9pY20uYywgZGxscy9nZGkvd2luZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlbW92ZSB1bm5lZWRlZCBoZWFkZXJzIHRvIHJlZHVjZSB1bm5lZWRlZCByZWJ1aWxkcy4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVcGRhdGUgRnJlZUJTRCBpbmZvcy4KCgkqIGRsbHMvbmV0YXBpMzIvbmV0Ymlvcy5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbiBOZXRiaW9zKCksCgktIHNldCBuY2JfcmV0Y29kZSBhbmQgbmNiX2NtZF9jcGx0IGZvciBOQ0JfQURETkFNRQoJLSBhbHdheXMgbWFrZSBzdXJlIGFkYXB0ZXJzIGhhdmUgYmVlbiBlbnVtZXJhdGVkLgoKCSogZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgdGVzdHMgb2YgR2V0RmlsZVZlcnNpb25JbmZvU2l6ZUEgZm9yIHdpbjJrMy4KCgkqIGRsbHMvbXNpL3NxbC55OiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTGV0IG5lZ2F0aXZlIG51bWJlciBiZSBwYXJzZWQgY29ycmVjdGx5LiBOZWVkZWQgZm9yIGFjY2Vzc2luZyBhY3Rpb25zCgl3aXRoIHNlcXVlbmNlcyBzdWNoIGFzIC0xLgoKCSogZGxscy9tc2kvcGFja2FnZS5jOiBWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJQWRkIFNjcmVlblgsIFNjcmVlblksIENvbG9yQml0cyBpbnN0YWxsZXIgcHJvcGVydGllcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBpbmNsdWRlL21zaXF1ZXJ5Lmg6CglWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJQWRkIGRlc2NyaXB0aW9uIGZvciBNc2lHZXRNb2RlLCBNU0lSVU5NT0RFIGNvbnN0YW50cy4KCgkqIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmMsIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsIGRsbHMvcXVhcnR6L3Bpbi5jLAoJICBkbGxzL3F1YXJ0ei9zeXN0ZW1jbG9jay5jLCBkbGxzL3F1YXJ0ei90ZXN0cy9maWx0ZXJncmFwaC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTWFueSBmaXhlcyB0byB0aGUgc3lzdGVtIGNsb2NrIGltcGxlbWVudGF0aW9uLgoJRW5zdXJlIHRoZXJlIGlzIGEgY2xvY2sgYmVmb3JlIGRvaW5nIGFueSBBZGRSZWYgb3IgUmVsZWFzZSBpbiB0aGUgQVZJCglzcGxpdHRlci4KCUltcHJvdmVkIHRlc3RzIGEgYml0LgoJTWlzYyBmaXhlcyBhbmQgdHJhY2VzIGNsZWFuLXVwLgoKCSogZGxscy9vbGUzMi9pZnMuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUFsbG9jYXRlIGNvcnJlY3QgYW1vdW50IG9mIG1lbW9yeS4KCgkqIHRvb2xzL3dpbmVwcmVmaXhjcmVhdGUuaW46IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBbGxvdyB3aW5lcHJlZml4Y3JlYXRlIHRvIHJ1biB0byB0aGUgZW5kIHdoZW4gY29uZmlndXJpbmcgZnJvbSB0aGUKCXNvdXJjZSB0cmVlLgoKMjAwNC0xMi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi9jcnlwdF9tZDQuYywKCSAgZGxscy9hZHZhcGkzMi9jcnlwdF9tZDUuYywgZGxscy9hZHZhcGkzMi9jcnlwdF9zaGEuYywKCSAgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9zbW9vdGhzY3JvbGwuYywKCSAgZGxscy9jb21jdGwzMi9zeXNsaW5rLmMsIGRsbHMvY29tY3RsMzIvdGVzdHMvZHBhLmMsCgkgIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9wb3dlcm1nbnQuYywgZGxscy9rZXJuZWwvdGltZS5jLAoJICBkbGxzL2tlcm5lbC91dHRodW5rLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVtb3ZlIHVubmVlZGVkIGhlYWRlcnMgdG8gcmVkdWNlIHVubmVlZGVkIHJlYnVpbGRzLgoKCSogZGxscy9hZHZwYWNrL2FkdnBhY2suYywgZGxscy9hZHZwYWNrL2FkdnBhY2suc3BlYywKCSAgZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLCBkbGxzL2RjaW1hbjMyL2RjaW1hbl9tYWluLmMsCgkgIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWMsIGRsbHMvbXNpbWczMi9tc2ltZzMyX21haW4uYywKCSAgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzoKCUl0IG1ha2VzIG5vIHNlbnNlIHRvIGV4cG9ydCB0aGUgZGxsIGVudHJ5IHBvaW50IGFzIHN0dWIuCgoJKiBSRUFETUUsIGxpYnMvd2luZS9tbWFwLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglNYWtlIHVzIHdvcmsgb24gRnJlZUJTRCBhZ2FpbiBieSB3b3JraW5nIGFyb3VuZCB0aGVpciBkaWZmZXJlbnQgbW1hcCgpCglpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIHRlc3RzIG9mIEdldEFjY2VwdExhbmd1YWdlc0EgZm9yIHdpbjk4LgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgdGhlIEEgdmVyc2lvbiBvZiBjYWxscyB3aGVuIHBhc3NpbmcgQVNDSUkgc3RyaW5ncy4KCgkqIGluY2x1ZGUvZ2RpLmg6IFLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCVBDX1NZU19NQVBQRUQgaXMgdW51c2VkLCByZW1vdmUgaXQuCgoJKiBkbGxzL3NobHdhcGkvd3NwcmludGYuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUluY2x1ZGUgc2hsd2FwaS5oIHRvIGdldCBwcm90b3R5cGVzLCBhbmQgY29ycmVjdCAyIHdyb25nIG9uZXMuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUEgc3RhcnRpbmcgcHJvY2VzcyBtdXN0IG9iZXkgdGhlIFNUQVJURl9VU0VTVERIQU5ETEVTIGZsYWcgYW5kIHVzZSB0aGUKCXN0YW5kYXJkIGlvIGhhbmRsZXMgZnJvbSB0aGUgU3RhcnR1cEluZm8gc3RydWN0dXJlLCBldmVuIGlmIGl0IGlzCglzdGFydGluZyBhIG5ldyBjb25zb2xlLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9SdS5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgUnVzc2lhbiB0cmFuc2xhdGlvbnMuCgoyMDA0LTEyLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZXhjZXB0LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJR2VuZXJhdGUgc3R1YiBlbnRyaWVzIG9uIHRoZSBmbHkgZm9yIG1pc3NpbmcgZW50cnkgcG9pbnRzIGluc3RlYWQgb2YKCXJldHVybmluZyBhIGRlYWRiZWVmIHBvaW50ZXIuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jOgoJS2VuIEJlbGxlYXUgPGphbWV6QGl2aWMucWMuY2E+CglJbXBsZW1lbnRlZCBFbnVtQ2FsZW5kYXJJbmZvKEEvVy9FeEEvRXhXKS4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBkb2N1bWVudGF0aW9uIHRvIHNldmVyYWwgZnVuY3Rpb25zLgoJLSBDb2Rpbmcgc3R5bGUgY2hhbmdlcyBhY2NvcmRpbmcgdG8gdGhlIHN0eWxlIE1pa2UgYW5kIEkgaGF2ZSBhZ3JlZWQKCSAgdXBvbiBmb3IgQ09NIHJlbGF0ZWQgZmlsZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvcnBjLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdW5uZWVkZWQgaW5jbHVkZXMgYW5kIHRoZSB1bnVzZWQgQ09NUE9CSl9oSW5zdGFuY2UzMiB2YXJpYWJsZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJTWlub3IgZG9jdW1lbnRhdGlvbiBhZGRpdGlvbi4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglDbGVhbnVwIHNvbWUgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglVc2UgT0JKUkVGIG9uIHRoZSB3aXJlIGZvciBnZW5lcmljIG1hcnNoYWxpbmcgZnVuY3Rpb25zLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCBfcG9wZW4gYW5kIF9wY2xvc2UsIGFuZCB1c2UgZGVidWdzdHJfYSB0byBhdm9pZCBhIGNyYXNoCgl0cmFjaW5nIGxvbmcgY29tbWFuZCBsaW5lcy4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJVXNlIGRlYnVnc3RyX2EgdG8gYXZvaWQgY3Jhc2ggdHJhY2luZyBsb25nIGNvbW1hbmQgbGluZS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBtYWtlIGZpbGUgZnVuY3Rpb25zIChtb3N0bHkpIHRocmVhZC1zYWZlCgktIHVwZGF0ZSBhIGNvdXBsZSB0cmFjZXMKCgkqIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgQ2xlYXIsIFByZXNlbnQgYW5kIEVuZFNjZW5lIHN1cHBvcnQgYW5kIGZpeCBhIGJ1ZyBpbiB0aGUgZHJhd2luZwoJY29kZS4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IFRob21hcyBXZWlkZW5tdWVsbGVyIDx3M3NlZWtAcmVhY3Rvcy5vcmc+CglNZXNzYWdlQm94SW5kaXJlY3RBKCkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgdGhlIE1CX1VTRVJJQ09OIGJpdCBpcyBzZXQKCXRvIHByZXZlbnQgYW4gZXhjZXB0aW9uLgoKCSogZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggYSB0eXBvIHRoYXQgZGlkbid0IGFsbG93IHBjbSB0byBtdWxhdyBjb252ZXJzaW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9ycGNydDQvbmRyX21pZGwuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBSUENfRV9ESVNDT05ORUNURUQgaW4gcHJveGllcy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IFBpb3RyIENhYmFuIDxwaW8xM0Bwb2N6dGEub25ldC5wbD4KCUZpeGVkIGRpc3BsYXkgYnVnLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi10b29sa2l0LnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSByZWZlcmVuY2VzIHRvIC4vY29uZmlndXJlIGFuZCBNYWtlZmlsZS5pbiBmaWxlcy4KCgkqIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jLCBkbGxzL21zdmNydC90ZXN0cy9maWxlLmMsCgkgIGRsbHMvcnNhZW5oL3Rlc3RzL3JzYWVuaC5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogdG9vbHMvZmluZGZ1bmMsIHRvb2xzL2ZvbnRfY29udmVydC5zaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlICc9JyBpbnN0ZWFkIG9mICc9PScgaW4gL2Jpbi9zaCBzY3JpcHRzIHRvIGF2b2lkIHBvcnRhYmlsaXR5Cglwcm9ibGVtcy4KCgkqIGRsbHMvY2FiaW5ldC9jYWJpbmV0X21haW4uYywgZGxscy9nZGkvcmVnaW9uLmMsIGRsbHMvcnNhZW5oL3JzYWVuaC5jLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS91cmwuYywgZGxscy94MTFkcnYvcGFsZXR0ZS5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglNaXNzaW5nIEhlYXBGcmVlJ3MgKyAxIExvY2FsRnJlZSAoZm91bmQgYnkgc21hdGNoKS4KCgkqIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBpbmNvcnJlY3QgdW5zaWduZWQgdGVzdC4KCjIwMDQtMTItMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL2ltYWdlbGlzdC5jLCBkbGxzL2RldmVudW0vY3JlYXRlZGV2ZW51bS5jLAoJICBkbGxzL2RldmVudW0vZGV2ZW51bV9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZF90ZXN0LmgsCgkgIGRsbHMvZ2x1MzIvZ2x1LmMsIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmMsIGRsbHMvbXNhY20vd2luZWFjbS5oLCBkbGxzL21zaS9zcWwueSwKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL2lmcy5oLCBkbGxzL29sZTMyL21vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3JpY2hlZGl0L3J0ZjJ0ZXh0LmgsCgkgIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGRsbHMvdXh0aGVtZS91eHRoZW1lZGxsLmgsCgkgIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oLCBkbGxzL3dpbmVkb3MvdmdhLmgsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwKCSAgZGxscy93aW5zcG9vbC93c3Bvb2wuYywgaW5jbHVkZS9pbW0uaCwgaW5jbHVkZS9tc2kuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvZWguaCwgaW5jbHVkZS9tc3ZjcnQvc3RkZGVmLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS91eHRoZW1lLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgZXJyb3JzIGluIGZ1bmN0aW9uIHByb3RvdHlwZXMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3N5bmMuYywKCSAgZGxscy9udGRsbC90aW1lLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgTnRRdWVyeVRpbWVyLgoKCSogcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9jYWxsYmFjay5jLAoJICBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLAoJICBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmgsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ubGV4LmwsCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBhZGRlZCBzdXBwb3J0IHBsdWctaW4gRExMcyBmb3Igd2luaGVscAoJLSBhZGRlZCBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBwbHVnLWluIGNhbGxiYWNrIGludG8gd2luaGVscAoJLSByZXdyb3RlIGFsbCB0aGUgbWFjcm9zIGFjY29yZGluZ2x5IChtYWNybyBlbnRyeS1wb2ludCBoYXMgdG8gaGF2ZQoJICBXSU5BUEkgY2FsbGluZyBjb252ZW50aW9uKQoJLSBzb21lIGZpeGVzIGZvciBlbWJlZGRlZCBpbWFnZXMgZGVjb21wcmVzc2lvbgoJLSBtaXNjIGNsZWFudXBzCgoJKiBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL2RyYXdwcmltLmMsIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvd2luZWQzZC91dGlscy5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCB7RyxTfWV0UmVuZGVyU3RhdGUgYW5kIHtHLFN9ZXRUZXh0dXJlU3RhZ2VTdGF0ZSBzdXBwb3J0LCBhbmQKCWVuc3VyZSB0aGUgc3RhdGVibG9jayBpcyBmdWxseSBwb3B1bGF0ZWQgYXQgZGV2aWNlIHN0YXJ0dXAuCgoJKiBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTWFrZSB0aGUgUENNIGNvbnZlcnNpb24gcm91dGluZXMgb2YgbXNhY20gcHJvZHVjZSBpZGVudGljYWwgcmVzdWx0cyB0bwoJdGhlIG5hdGl2ZSBkbGwuCglBbGxvdyBhbnkgUENNIHRvIFBDTSBjb252ZXJzaW9uLCBub3QganVzdCBhZHZlcnRpc2VkIG9uZXMuCgoJKiBkbGxzL29sZWF1dDMyL29haWRsX3AuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggY29tcGlsYXRpb24gd2l0aCBHQ0MgNC4KCgkqIGRsbHMvcnNhZW5oL2ltcGxnbHVlLmMsIGRsbHMvcnNhZW5oL3JzYWVuaC5jLAoJICBkbGxzL3JzYWVuaC90ZXN0cy9yc2FlbmguYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIENQU2lnbkhhc2ggYW5kIENQVmVyaWZ5U2lnbmF0dXJlLgoJQWRkZWQgdGVzdHMgZm9yIENQVmVyaWZ5U2lnbmF0dXJlLgoJRml4ZWQgbWlub3IgYnVncyBpbiBpbXBsZ2x1ZS5jLgoKCSogZGxscy9tc2Ntcy9pY2MuYywgZGxscy9tc2Ntcy9tc2Ntcy5zcGVjLCBkbGxzL21zY21zL21zY21zX3ByaXYuaCwKCSAgZGxscy9tc2Ntcy9wcm9maWxlLmMsIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jLCBpbmNsdWRlL2ljbS5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglUZXN0IGFuZCBpbXBsZW1lbnQgU2V0Q29sb3JQcm9maWxlRWxlbWVudC4KCURvY3VtZW50IG1vcmUgZnVuY3Rpb25zLgoKCSogZGxscy9pcGhscGFwaS9pZmVudW0uYywgZGxscy9pcGhscGFwaS9pZmVudW0uaCwKCSAgZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5jLAoJICBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gdXNlIEhlYXAgZnVuY3Rpb25zIHJhdGhlciB0aGFuIGxpYmMgZm9yIG1lbSBhbGxvY2F0aW9uCgktIGRvY3VtZW50IGEgYnVuY2ggb2YgZnVuY3Rpb25zCgoJKiBkbGxzL3NldHVwYXBpL3F1ZXVlLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglVc2UgcHJvcGVyIHR5cGUgZm9yIGZvdXJ0aCBwYXJhbWV0ZXIgdG8gVmVyUXVlcnlWYWx1ZVcoKS4KCgkqIGZvbnRzL3dpbmVfY291cmllci5zZmQsIGZvbnRzL3dpbmVfc2Fuc19zZXJpZi5zZmQsIGZvbnRzL3dpbmVfc3lzdGVtLnNmZDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbXkgbmFtZSB0byB0aGUgZm9udHMgY29weXJpZ2h0IHN0cmluZy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUhhbmRsZSBkZXZpY2UgY2xhc3MgaW4gRFg4IGVudW1lcmF0aW9uIChmb3VuZCBieSBSb2JlcnQgUmVpZikuCglGaXhlZCByZW1haW5pbmcgRFg4IGRldmljZSB0eXBlcy4KCUZhY3Rvcml6ZWQgYSBiaXQgR2V0Q2FwYWJpbGl0aWVzIGZvciBrZXlib2FyZCBhbmQgbW91c2UuCgoJKiBpbmNsdWRlL2Ftc3RyZWFtLmlkbCwgaW5jbHVkZS9tbGFuZy5pZGw6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgQ011bHRpTGFuZ3VhZ2UgYW5kIEFNTXVsdGlNZWRpYVN0cmVhbSBjb2NsYXNzIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggYWx3YXlzIGZhbHNlIHRlc3QuICBTcG90dGVkIGJ5IEVyaWMgUG91ZWNoLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvaXRzcy9zdG9yYWdlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIGNvcHkmcGFzdGUgZXJyb3IuCgoJKiBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgYXJyYXkgaW5kZXggb3ZlcmZsb3cuCgoJKiB0b29scy93aW5lbWFrZXI6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGNvbXBpbGF0aW9uIHdpdGggcGVybCA1LjguCgoyMDA0LTEyLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9jb21jdGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi90ZXN0cy9tcnUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgdGhlIHJlbWFpbmluZyBNUlUgZnVuY3Rpb25zLCBmaXggYSBjb3VwbGUgb2YgZGlmZmVyZW5jZXMKCWZyb20gbmF0aXZlIGNvbWN0bDMyLCBhZGQgdGVzdHMgb2YgTVJVIGJlaGF2aW91ciBhbmQgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZjcnQ0MC9tc3ZjcnQ0MC5zcGVjOgoJUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCS0gaW1wbGVtZW50IF9fcGlvaW5mbywgX19iYWRpb2luZm8gYW5kIF9hZGp1c3RfZmRpdgoJLSByZW1vdmUgYWxsIHN0dWJzIG9mIGRhdGEgaXRlbSBmcm9tIHRoZSBzcGVjIGZpbGUsIHRob3NlIGFjdHVhbGx5IG1heQoJICBoaWRlIHByb2JsZW1zLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3RhYmxlLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQWRkIG1pc3NpbmcgSGVhcEZyZWUncyAoZm91bmQgYnkgc21hdGNoKS4KCjIwMDQtMTItMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvY29tYm8uYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJQWRkZWQgc29tZSBzYW5pdHkgY2hlY2tzIG9uIHdpbmRvdyBkaW1lbnNpb25zLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzoKCUZpeGVkIHJlYWRfZGlyZWN0b3J5X2dldGRlbnRzIGZvciBsYXJnZSBkaXJlY3RvcmllcyAoZm91bmQgYnkgUmVpbgoJS2xhemVzKS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJQ2hlY2sgc2VydmljZSBkYXRhYmFzZSBuYW1lIGluIE9wZW5TQ01hbmFnZXIoKS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGltcGxlbWVudCBfZHVwLCBfZHVwMiwgYW5kIF9waXBlCgktIG1ha2UgbWF4IGZpbGUgZGVzY3JpcHRvcnMgMjA0OCB0byBtYXRjaCBNUwoJLSBpbmNyZWFzZSBtYXggZmlsZSBzdHJlYW1zIHRvIG1hdGNoCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLAoJICBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZHJhd3ByaW0uYywgZGxscy9kM2Q4L3V0aWxzLmMsCgkgIGRsbHMvZDNkOC92c2hhZGVyZGVjbGFyYXRpb24uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtbG9hZGVyL2NsYXNzZmFjdG9yeS5jLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsIGRsbHMvaXRzcy9jaG1fbGliLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLCBkbGxzL21zdmNydC9sb2NrLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL3F1YXJ0ei9zeXN0ZW1jbG9jay5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvZHJhd3ByaW0uYywgZGxscy93aW5lcHMvZ2x5cGhsaXN0LmMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUphbml0b3JpYWw6IEMgYm9vbGVhbnMgbXVzdCBub3QgYmUgY29tcGFyZWQgYWdhaW5zdCBUUlVFLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCU1lcmdlZCBzeXN0ZW0gbWV0cmljcyBzdXBwb3J0IGludG8gc3lzcGFyYW1zLmMsIGFuZCBtb3ZlZCB0aGF0IGZpbGUgdG8KCXRoZSBkbGxzL3VzZXIgZGlyZWN0b3J5LgoKCSogZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLCBkbGxzL2RtY29tcG9zL2Nob3JkbWFwdHJhY2suYywKCSAgZGxscy9kbWNvbXBvcy9jb21wb3Nlci5jLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19wcml2YXRlLmgsIGRsbHMvZG1jb21wb3Mvc2lnbnBvc3R0cmFjay5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgRGxsQ2FuVW5sb2FkTm93IHJlZiBjb3VudGluZy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCUFkZGVkIHNvbWUgU3BhbmlzaCB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJUmVtb3ZlIGEgZmV3IG5vIGxvbmdlciBuZWVkZWQgMTYtYml0IGV4cG9ydHMgZnJvbSBnZGkzMi4KCgkqIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywKCSAgZGxscy90dHlkcnYvd25kLmM6CglVc2UgYW4gZXNjYXBlIG1lY2hhbmlzbSBzaW1pbGFyIHRvIHRoZSB4MTFkcnYgb25lIHRvIHNldCB0aGUgREMKCW9yaWdpbi4KCgkqIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9kcmF3cHJpbS5jLCBkbGxzL3dpbmVkM2QvdXRpbHMuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQge0csU31ldEluZGljZXMsIHtHLFN9Vmlld3BvcnQgYW5kIGVuYWJsZSB0aGUgYmFzaWMgZHJhd2luZwoJZnVuY3Rpb25hbGl0eSBpbnRvIHdpbmVkM2QgYW5kIGNhbGwgZnJvbSBkM2Q5LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfQ2EucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NuLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dcy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGEucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW8ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9GaS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0h1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSmEucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0tvLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9ObC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfTm8ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1BsLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUnUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NpLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tay5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU3YucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1VrLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9XYS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfWmgucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUtsZW1lbnMgRnJpZWRsIDxmcmlrODVAaG90bWFpbC5jb20+CglNb3JlIFdpbmRvd3MtbGlrZSBBYm91dCBkaWFsb2cuCgoJKiBkbGxzL2dkaS90ZXN0cy9tZXRhZmlsZS5jOiBXYWx0IE9nYnVybiA8cmV1YmVuQHVnY3MuY2FsdGVjaC5lZHU+CglBZGRlZCBzb21lIHRlc3RzIGZvciB3aW4tZm9ybWF0IG1ldGFmaWxlcy4KCgkqIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW5pdGlhbGl6ZSB0aGUgaGtleSBtZW1iZXIgd2hlbiBjcmVhdGluZyB0aGUgcHJvcGVyeSBiYWcgb2JqZWN0LgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdGhlIHJlbWFpbmluZyBkZXBlbmRlbmNpZXMgb24gaW50ZXJuYWwgc3RydWN0dXJlcyBmcm9tIEludm9rZS4KCjIwMDQtMTItMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2ltbTMyL2ltbS5jOgoJUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZSBzaW5jZSBpdCBjYXVzZXMgYSBjcmFzaCBpbiBkZXNrdG9wIG1vZGUuCgoJKiBkbGxzL3VzZXIvcGFpbnRpbmcuYzogUmVpbiBLbGF6ZXMgPHdpam5Ad2FuYWRvby5ubD4KCUdldFVwZGF0ZVJlY3QgY2FuIGJlIGNhbGxlZCB3aXRoIGEgTlVMTCByZWN0LgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIEdldExhc3RJbnB1dEluZm8uCgoJKiBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYzogVGhvbWFzIFdlaWRlbm38bGxlciA8dzNzZWVrQGdtYWlsLmNvbT4KCUZyZWUgYWxsb2NhdGVkIGZvbnQgaGFuZGxlcyB3aGVuIGNvbnRyb2wgaXMgZGVzdHJveWVkLgoKCSogZGxscy9xdWFydHovc3lzdGVtY2xvY2suYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWxsb2NhdGUgdGhlIHByb3BlciBzaXplIGZvciB0aGUgU3lzdGVtQ2xvY2sgb2JqZWN0LgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglHZXRUeXBlQXR0ciBzaG91bGQgZGVlcCBjb3B5IHRoZSB0eXBlZGVzYy4KCgkqIGRsbHMvdXNlci9idXR0b24uYywgZGxscy91c2VyL2NvbWJvLmMsIGRsbHMvdXNlci9jb21tMTYuYywKCSAgZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMvdXNlci9kZXNrdG9wLmMsIGRsbHMvdXNlci9kaWFsb2cxNi5jLAoJICBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvZWRpdC5jLCBkbGxzL3VzZXIvZm9jdXMuYywKCSAgZGxscy91c2VyL2hvb2suYywgZGxscy91c2VyL2hvb2sxNi5jLCBkbGxzL3VzZXIvbGlzdGJveC5jLAoJICBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbWVzc2FnZS5oLAoJICBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvdXNlci9zY3JvbGwuYywKCSAgZGxscy91c2VyL3N0YXRpYy5jLCBkbGxzL3VzZXIvdGV4dC5jLCBkbGxzL3VzZXIvdWl0b29scy5jLAoJICBkbGxzL3VzZXIvdXNlcjE2LmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy91c2VyL3VzZXJfcHJpdmF0ZS5oLAoJICBkbGxzL3VzZXIvd25kMTYuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZnduZC5jLAoJICB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLAoJICB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvc3lzY29sb3IuYywKCSAgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdXNlci5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCU1vdmVkIHByaXZhdGUgVVNFUiBkZWZpbml0aW9ucyB0byBhIG5ldyB1c2VyX3ByaXZhdGUuaCBoZWFkZXIsIGFuZAoJcmVtb3ZlZCB0aGUgZ2xvYmFsIHVzZXIuaC4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIHRoZSB3aW5lX21hcnNoYWxfaWQgc3RydWN0dXJlIG1vcmUgbGlrZSB0aGUgRENPTSBPQkpSRUYKCSAgc3RydWN0dXJlLCBieSByZXBsYWNpbmcgdGhlIHByb2Nlc3MgaWQgZmllbGQgYnkgYXBhcnRtZW50IGlkIChPWElEKSwKCSAgY2hhbmdpbmcgdGhlIHVzZXJzIG9mIHRoZSBwcm9jZXNzIGlkIGZpZWxkIHRvIHVzZSB0aGUgbmV3IGZpZWxkIGFuZAoJICByZW5hbWluZyB0aGUgb2JqZWN0aWQgZmllbGQgdG8gb2lkLgoJLSBGaXggU3RkTWFyc2hhbEltcGxfVW5tYXJzaGFsSW50ZXJmYWNlIHRvIGludmFsaWRhdGUgYW5kIHJlbGVhc2UgaXRzCgkgIHN0dWIgd2hlbiBkb2luZyBhIHNhbWUgYXBhcnRtZW50IG1hcnNoYWwuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZXR1cm4gdmFsdWUgb2YgR2V0VmFySW5kZXhPZk1lbUlkLgoKCSogZGxscy91c2VyL2tiZDE2LmMsIGRsbHMvdXNlci9tb3VzZTE2LmMsIGRsbHMvdXNlci91c2VyMTYuYywKCSAgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsCgkgIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3VzZXIuYzoKCU1vdmVkIHNvbWUgbW9yZSAxNi1iaXQgVVNFUiBmdW5jdGlvbnMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgMTYtYml0CglmaWxlcy4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBpbmNsdWRlL3VzZXIuaCwKCSAgd2luZG93cy9wYWludGluZy5jOgoJTW92ZWQgcGFsZXR0ZSBmdW5jdGlvbnMgdG8gdXNlcl9tYWluLmMgYW5kIHJlbW92ZWQKCXdpbmRvd3MvcGFpbnRpbmcuYy4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglBdm9pZCBhIHdhcm5pbmcgb24gRnJlZUJTRC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIExzYShTdG9yZS9SZXRyaWV2ZSlQcml2YXRlRGF0YS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJTm90aWZ5IFN0YXJ0U2VydmljZSB3aGVuIHNlcnZpY2UgY29udHJvbCBkaXNwYXRjaGVyIGhhcyBiZWVuCglzdGFydGVkLiBPdGhlcndpc2UgU3RhcnRTZXJ2aWNlIHRlcm1pbmF0ZXMgc2VydmljZSBwcm9jZXNzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIERFQ0lNQUxfU0VUWkVSTyBtYWNybyB0YWtlIGEgREVDSU1BTCBpbnN0ZWFkIG9mIGEgREVDSU1BTCogYXMKCWluIHRoZSBNaWNyb3NvZnQgaGVhZGVycyBhbmQgZml4IHVwIHRoZSBvbmx5IGNhbGxlci4KCgkqIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2lubW0uYywgaW5jbHVkZS9kc291bmQuaCwKCSAgaW5jbHVkZS9tbXN5c3RlbS5oOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCU1hdGNoIFBTREsgZGVmaW5pdGlvbnMgZm9yIExQQ1dBVkVGT1JNQVRFWC4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIHRlc3RzIG9mIEdldEFjY2VwdExhbmd1YWdlc0EgZm9yIHdpbjl4L01FLgoKCSogZGxscy9uZXRhcGkzMi9uYnQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29udmVydCBzb21lIHJlZ2lzdHJ5IGNhbGxzIGZyb20gQSB0byBXLgoKCSogZGxscy91cmxtb24vdGVzdHMvdXJsLmMsIGRsbHMvdXJsbW9uL3Vtb24uYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEltcGxlbWVudGVkIENyZWF0ZUFzeW5jQmluZEN0eC4KCS0gQWRkZWQgdGVzdC4KCgkqIGRsbHMvd2lubW0vd2luZWphY2svTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIGxpbmtpbmcgaXNzdWVzLgoKCSogdG9vbHMvYzJtYW4ucGw6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglQYXJhbSBkZXNjcmlwdGlvbnMgY2FuIGJlID4xIGxpbmVzLgoJQWxsb3cgJy0nIGluIGNvbW1lbnQgbmFtZXMsIGNvbnZlcnQgaXQgdG8gc3BhY2Ugb24gZGlzcGxheS4KCUFsbG93IHN0cnVjdCBtZW1iZXJzIHRvIGJlIGRvY3VtZW50ZWQgKGF1dG9tYXRpY2FsbHksIG9uZSBkYXkpLgoJQWxsb3cgZm9yIG1hbnkgY29tbWVudHMgd2hpY2ggc3RhcnQgd2l0aCAibmFtZSAoZGxsLm9yZCkKCWRlc2NyaXB0aW9uIi4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVuaWNvZGUgZml4ZXMuCgoJKiBkbGxzL3VzZXIvaG9vay5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW5kaWNhdGUgdGhhdCBzdXBwb3J0IGZvciBIQ0JUX1NZU0NPTU1BTkQgaG9va3MgaXMgaW1wbGVtZW50ZWQuCgoyMDA0LTEyLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJQWRkZWQgYSBidW5jaCBvZiB0ZXN0cyBmb3IgdmFyaW91cyBiZWhhdmlvcnMgb2YgUmVkcmF3V2luZG93LgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmMsCgkgIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW4uYzoKCU1vdmVkIHVwZGF0ZSByZWdpb24gaGFuZGxpbmcgdG8gdGhlIHNlcnZlci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCVBhdWwgTWlsbGFyIDxwYXVsbUBhc3Ryby5nbGEuYWMudWs+CglDaGVjayBmb3IgZmVhdHVyZXMgbWlzc2luZyBpbiBtaW5ndyBlbnZpcm9ubWVudCwgYWxsb3dpbmcgdG9vbHMKCXN1YmRpcmVjdG9yeSB0byBiZSBjcm9zcy1idWlsdCBhZ2Fpbi4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRmx1c2ggZmlsZSBpbiBmcHV0YyB3aGVuIGNoYXJhY3RlciBpcyAnXG4nLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJUmVuYW1lIHRoZSBTVFVCTUdSIHRocmVhZCB0byBtb3JlIGFjY3VyYXRlbHkgcmVmbGVjdCBpdHMgcHVycG9zZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIEludm9rZSdzIGRlcGVuZGVuY2Ugb24gdGhlIGludGVybmFsIFRMQkZ1bmNEZXNjIHN0cnVjdHVyZS4KCUZpeCBtZW1vcnkgbGVha3MgaW4gc29tZSBmYWlsdXJlIGNhc2VzLgoKCSogdG9vbHMvd3JjL2dlbnJlcy5jOiBSZW1vdmVkIGFuIHVudXNlZCBmdW5jdGlvbi4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvaGFuZGxldGFibGUuYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgaGFuZGxlIHRhYmxlcyBhbmQgYWRkIHRlc3RzIGZvciB0aGVtLgoKCSogZGxscy9tc2Ntcy9NYWtlZmlsZS5pbiwgZGxscy9tc2Ntcy9pY2MuYywgZGxscy9tc2Ntcy9tc2Ntcy5zcGVjLAoJICBkbGxzL21zY21zL21zY21zX3ByaXYuaCwgZGxscy9tc2Ntcy9wcm9maWxlLmMsCgkgIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jLCBpbmNsdWRlL2ljbS5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglNb3ZlIElDQyBwcm9maWxlIGhhbmRsaW5nIGludG8gaXRzIG93biBmaWxlLgoJVGVzdCBHZXRDb2xvclByb2ZpbGVGcm9tSGFuZGxlIGFuZCBTZXRDb2xvclByb2ZpbGVIZWFkZXIuCglUZXN0IGFuZCBwYXJ0aWFsbHkgaW1wbGVtZW50IHtHLFN9ZXRTdGFuZGFyZENvbG9yU3BhY2VQcm9maWxle0EsV30uCglJbXByb3ZlIGV4aXN0aW5nIHRlc3RzIGFuZCBmaXggYW55IGJ1Z3MgdGhleSByZXZlYWxlZC4KCgkqIGRsbHMvZGV2ZW51bS9jcmVhdGVkZXZlbnVtLmMsIGRsbHMvZGV2ZW51bS9kZXZlbnVtX21haW4uYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW1fcHJpdmF0ZS5oLCBkbGxzL2RldmVudW0vZmFjdG9yeS5jLAoJICBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmMsIGRsbHMvZGV2ZW51bS9wYXJzZWRpc3BsYXluYW1lLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglDbGVhbiB1cCBkZXZlbnVtIGFuZCBwcm9wZXJseSBpbXBsZW1lbnQgRGxsQ2FuVW5sb2FkTm93IHJlZiBjb3VudGluZy4KCgkqIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYzogRml4ZWQgY29tcGlsZSBlcnJvci4KCgkqIGRsbHMvZDNkOS9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOS9yZXNvdXJjZS5jLCBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWQzZC9iYXNldGV4dHVyZS5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBCYXNlVGV4dHVyZSBjbGFzcyBzdXBwb3J0LCBjYWxsIGZyb20gZDNkOS4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgktIERvbid0IHVzZSBEcmF3RWRnZSB3aXRoIE5VTEwgZGV2aWNlIGNvbnRleHQsIGl0J3MgaW52YWxpZCBjYWxsIGFuZAoJICBzZXRzIGxhc3QgZXJyb3IuCgktIFRvb2x0aXAgaWNvbnMgbXVzdCBiZSBkZXN0cm95ZWQgd2l0aCBEZXN0cm95SWNvbiBhbmQgbm90IHdpdGgKCSAgRGVsZXRlT2JqZWN0LgoJLSBSZWJhciBjdXJzb3JzIG11c3QgYmUgZGVzdHJveWVkIHdpdGggRGVzdHJveUN1cnNvciBhbmQgbm90IHdpdGgKCSAgRGVsZXRlT2JqZWN0LgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglJbXBsZW1lbnRlZCBSZWdpc3RlclNlcnZpY2VDdHJsSGFuZGxlciwgQ29udHJvbFNlcnZpY2UuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYzogVG9tYXMgVmFuZWsgPFRvbWFzLlZhbmVrQGZibC5jej4KCUZpeGVkIG5vIG1lbW9yeSBjb25kaXRpb24gdGVzdCBpbiBJRGlyZWN0U291bmRJbXBsX0NyZWF0ZS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJVXNlIFcgY2FsbHMgcmF0aGVyIHRoYW4gQSBpbiBDcmVhdGVQaXBlLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgZW51bWVyYXRpb24gb2Ygam95c3RpY2tzIGluIERYOC4KCUZpeGVkIHNvbWUgdHJhY2VzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglHZXRGdW5jSW5kZXhPZk1lbUlkIHNob3VsZCByZXNwZWN0IGludmtpbmQgYW5kIHJldHVybgoJVFlQRV9FX0VMRU1FTlROT1RGT1VORCBpZiB0aGUgZnVuY3Rpb24gY2Fubm90IGJlIGZvdW5kLgoKMjAwNC0xMi0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9qb3lzdGljay9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsIGRsbHMvd2lubW0vd2lubW0uYywKCSAgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5oLCBkbGxzL3dpbm1tL3dpbmVvc3MvZHNjYXB0dXJlLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9kc3JlbmRlci5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZGxscy93aW5tbS93aW5lb3NzL21tYXV4LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCTMyIGJpdCBsb3cgbGV2ZWwgZHJpdmVycyBub3cgdXNlIGEgVW5pY29kZSBpbnRlcmZhY2UgKHVzZWQgdG8gYmUgQU5TSSk6CgktIFNlbmQgdGhlICpfR0VUREVWQ0FQUyBtZXNzYWdlcyBpbiB1bmljb2RlIGZvcm1hdCBmcm9tIHRoZQoJICAqR2V0RGV2Q2Fwc1cgZnVuY3Rpb24gYW5kIGNhbGwgdGhlICpHZXREZXZDYXBzVyBmcm9tIHRoZWlyIHJlc3BlY3RpdmUKCSAgQW5zaSB2ZXJzaW9ucy4KCS0gTW9kaWZ5IGFsbCBsb3cgbGV2ZWwgZHJpdmVycyB0byBjb3JyZWN0bHkgcHJvY2VzcyB0aGUgKl9HRVRERVZDQVBTCgkgIG1lc3NhZ2VzIGFzIHVuaWNvZGUuCgktICpfR0VUREVWQ0FQUyBtZXNzYWdlcyBhcmUgbm93IG1hcHBlZCBmcm9tL3RvIHVuaWNvZGUgZm9yIDE2IGJpdCBjb2RlLgoJLSBSZW1vdmVkIGFsbCBTb3VuZEJsYXN0ZXIgbmFtaW5nIG9sZGllcy4KCUJldHRlciB1c2Ugb2Ygc29tZSB1bmljb2RlIGZ1bmN0aW9ucyAoaW5zdGVhZCBvZiBBbnNpKSBpbiB3aW5tbS4KCgkqIGRsbHMvZDNkOS92ZXJ0ZXhzaGFkZXIuYywgaW5jbHVkZS91c2VyLmgsIGxpYnMvdW5pY29kZS91dGY4LmMsCgkgIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL3RyYWNlLmMsCgkgIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvdHlwZWxpYi5jLCB0b29scy93aW5lZHVtcC9tYWluLmMsCgkgIHRvb2xzL3dpbmVkdW1wL25lLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmMsIHRvb2xzL3dpbmVkdW1wL3NlYXJjaC5jLAoJICB0b29scy93bWMvbGFuZy5jLCB0b29scy93bWMvbWNsLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLAoJICB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3NweS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBbm90aGVyIHJvdW5kIG9mIGNvbnN0IGNvcnJlY3RuZXNzIGZpeGVzLgoKCSogZGxscy9pbW0zMi9pbW0uYzogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCVJlZ2lzdGVyIHRoZSBJTUUgY2xhc3Mgd2hlbiBpbW0zMi5kbGwgaXMgbG9hZGVkLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXggbWlzc2luZyBpbXBvcnRzIG9uIE5UNC4KCgkqIGRsbHMvZHNvdW5kL3Byb3BzZXQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJldHVybiB0aGUgYWN0dWFsIGRldmljZSBpbnRlcmZhY2UgbmFtZS4KCUZpeGVzIHNvbWUgbWVtb3J5IGxlYWtzLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogSmVhbi1NaWNoZWwgRGF1bHQgPGptZGF1bHRAbWFuZHJha2Vzb2Z0LmNvbT4KCUFkZGVkIGFub3RoZXIgQ2FuYWRpYW4ga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBGaXhlZCBhIGxlYWsgaW4gZ2V0c29ja25hbWUuCglSZXBsYWNlZCBtYWxsb2MgYnkgSGVhcEFsbG9jLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzoKCVVzZSBhIGRpcmVjdCBnZXRkZW50cyBzeXNjYWxsIG9uIExpbnV4IHRvIGF2b2lkIHJlbHlpbmcgb24KCWltcGxlbWVudGF0aW9uIGRldGFpbHMgb2Ygc2Vla2Rpci90ZWxsZGlyLgoKCSogdG9vbHMvZm50MmJkZi5jLCB0b29scy93aW5lZHVtcC9wZS5jLCB0b29scy93aW5lZ2NjL3dpbmVnY2MuYywKCSAgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvcmVhZHJlcy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBbm90aGVyIGNvdXBsZSBvZiBtaXNzaW5nIHN0YXRpYyBkZWZpbml0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9mYXEuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6CglEaWVnbyBQZXR0ZW7yIDxmbGFtZWV5ZXNAdXNlcnMuYmVybGlvcy5kZT4KCVVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gdGVsbGluZyB0byB1c2UgdGhlCglIS0VZX0NVUlJFTlRfVVNFUi9FbnZpcm9ubWVudCBrZXkgaW5zdGVhZCBvZiB0aGUgW3dpbmVdIHNlY3Rpb24gZm9yCglQYXRoLCBUZW1wIGFuZCBTeXN0ZW0gdmFyaWFibGVzLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTaG93V2luZG93IGFjdGl2YXRlcyBvbmx5IGEgYmVpbmcgbWF4aW1pemVkIGNoaWxkIHdpbmRvdywgYWRkIGEgY291cGxlCglvZiBtZXNzYWdlIHRlc3RzIGZvciBNREkgY2hpbGQgYWN0aXZhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3Blcmx5IHJlc3BlY3QgYSBkaXNhc3NlbWJsZSB4LHkgY29tbWFuZCAocHJpb3IgYmVoYXZpb3Igd291bGQgZG8KCXkteCBpbnN0cnVjdGlvbnMsIG5vIG1hdHRlciBob3cgd2lkZSBlYWNoIGluc3RydWN0aW9uIHdhcykuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgY3Jhc2hlcyBpbiBkZHJhdy5kbGwgd2hlbiBsb2FkaW5nIGl0IHdpdGhvdXQgeDExZHJ2LCBmb3IKCWluc3RhbmNlIGZyb20gd2luZXByZWZpeGNyZWF0ZSBpbiBhIHRleHQgbW9kZSBjb25zb2xlLgoKCSogZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIFNldHVwRGlPcGVuRGV2aWNlSW50ZXJmYWNlLgoKCSogZGxscy9tc2kvcmVjb3JkLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCB0aGUgb3V0IGJ1ZmZlciBjb3VudCB0byB6ZXJvIG9uIHJlYWQgZXJyb3IuCgoJKiBkbGxzL21zaS90YWJsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdHJhbnNwb3NpdGlvbiBvZiA0IGJ5dGUgdmFsdWVzIHdoZW4gcmVhZGluZyBpbiB0YWJsZSBkYXRhIGZyb20KCXN0b3JhZ2UuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgRGVjcnlwdEZpbGUsIEVuY3J5cHRGaWxlIGFuZAoJR2V0U2VydmljZURpc3BsYXlOYW1lLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCURyYXdTdGF0dXNUZXh0KCkgbXVzdCBub3QgcHJvY2VzcyBwcmVmaXggY2hhcmFjdGVycy4KCgkqIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVNlbmQgRU1fU0VUTU9ESUZZIGFmdGVyIHNhdmluZy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJU2V0IHN0X21vZGUgYml0cyBpbiBfZnN0YXRpNjQuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJQWRkZWQgdHdvIG1pc3Npbmcgc3R5bGVzLgoKCSogZGxscy9kM2Q4L3NoYWRlci5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglTL1cgdnNoYWRlciBmaXhlcyAoc3BvdHRlZCBieSBFcmljIFBvdWVjaCkuCgoJKiB3aW5kb3dzL21kaS5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglEb24ndCBjYWxsIFNldFNjcm9sbEluZm8gd2l0aCBTQl9CT1RIIGJhciB0eXBlLgoKCSogZGxscy9jYWJpbmV0L2ZkaS5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglEb24ndCB0cnkgdG8gZnJlZSBwb2ludGVyIGZyb20gdW5pb24gdGhhdCBpc24ndCB1c2VkLgoKCSogZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+Cgltc3ZjcnRfc3Bhd24gc2hvdWxkIGZyZWUgU1RBUlRVUElORk9BJ3MgbHBSZXNlcnZlZDIsIG5vdCBpdHMgYWRkcmVzcy4KCgkqIGRsbHMvd2ludGFiMzIvY29udGV4dC5jOiBSb2JlcnQgTm9ydGggPDdvd25xMGs0MDJAc25lYWtlbWFpbC5jb20+CglTZXQgdGhlIHZhbHVlcyBXVEluZm9BIHJldHVybnMgZnJvbSBzY3JlZW4gc2l6ZSBmb3IgQ1RYX1NZU0VYVFggYW5kCglDVFhfU1lTRVhUWSBjb250ZXh0IGZpZWxkcywgdG8gbWF0Y2ggV2luZG93cyBiZWhhdmlvdXIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZSBzb21lIHVudXNlZCB0ZXN0cy4KCgkqIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy91c2VyL3Rlc3RzL2lucHV0LmMsCgkgIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmMsIHByb2dyYW1zL3ZpZXcvaW5pdC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IFdORFBST0MgY2FzdHMuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglCZXR0ZXIgaGFuZGxpbmcgb2YgZXJyb3JzIGluIFJlbmRlckZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeCBtaXNzaW5nIGltcG9ydHMgb2YgdGhlIHRlc3QgcHJvZ3JhbSBvbiBOVDQuCgoJKiBpbmNsdWRlL29iamJhc2UuaDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGR1cGxpY2F0ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWx3YXlzIGNyZWF0ZSBhIHByb3BlcnR5IHNldCBmb3Igc2Vjb25kYXJ5IGJ1ZmZlcnMuCgoJKiBkbGxzL2RiZ2hlbHAvcGVfbW9kdWxlLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmVtb3ZlIGMrKy1zdHlsZSBjb21tZW50LgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRvIGluc2VydCB0aGUgcHJveHkgYXV0aGVudGljYXRpb24gaGVhZGVyIGlmIG5lY2Vzc2FyeS4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBTdGV3YXJ0IEFsbGVuIDxzcmFsbGVAbXdlYi5jby56YT4KCUFkZGVkIFNBU1QgKFNvdXRoIEFmcmljYW4gU3RhbmRhcmQgVGltZSksIGNvcnJlY3RlZCBDQVQgdG8gQ2VudHJhbAoJQWZyaWNhbiBUaW1lLgoKCSogZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQZXJmb3JtIGhvc3QgbmFtZSBpbml0aWFsaXphdGlvbiBpZiBjb21wdXRlciBuYW1lIGNhbid0IGJlIHJlYWQgZnJvbQoJcmVnaXN0cnkuCgoJKiBkbGxzL3JzYWVuaC9pbXBsZ2x1ZS5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhIG1pc3NpbmcgYnJlYWsgaW4gZW5jcnlwdF9ibG9ja19pbXBsLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglJbXBsZW1lbnRlZCBTZXRTZXJ2aWNlU3RhdHVzLCBRdWVyeVNlcnZpY2VTdGF0dXMuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJT25seSBjYWxsIHRlc3Rfc2V0X3Byb3ZpZGVyX2V4KCkgb25jZS4KCgkqIGRsbHMvc2hlbGwzMi92ZXJzaW9uLmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVJldmVydCBzaGVsbDMyIHZlcnNpb24gdG8gV2luMksgU1A0IGxldmVsLgoKMjAwNC0xMi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWxsb2NhdGUgdGhlIFRZUEVBVFRSIHJhdGhlciB0aGFuIGNvcHlpbmcgaXQuCglGb3IgYSBkdWFsIGludGVyZmFjZSB0aGUgZGlzcGludGVyZmFjZSdzIGNmdW5jcyBzaG91bGQgaW5jbHVkZSB0aGUKCWluaGVyaXRlZCBmdW5jdGlvbnMsIGNiU2l6ZVZmdCBzaG91bGQganVzdCBiZSB0aGUgc2l6ZSBvZiBJRGlzcGF0Y2gncwoJdnRibCBhbmQgd2Ugc2hvdWxkIHN0cmlwIFRZUEVGTEFHX0ZPTEVBVVRPTUFUSU9OLgoKCSogZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkc6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTcGVsbGluZy9ncmFtbWFyIGZpeGVzLgoKCSogdG9vbHMvZm9udF9jb252ZXJ0LnNoOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIG1rdGVtcCBpZiB3ZSBkb24ndCBoYXZlIHRlbXBmaWxlLgoJVXNlIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiBmbnQyYmRmIGlmIHByZXNlbnQuCglRdW90ZSB0aGUgcGF0dGVybiBnaXZlbiB0byBgZmluZGAuCglDb3B5IHRoZSBmb250cyB0byB0aGUgdGVtcCB3b3JraW5nIGRpciBiZWZvcmUgcHJvY2Vzc2luZy4KCUFsd2F5cyBkZWxldGUgdGhlIHRlbXAgZGlyZWN0b3J5IGJlZm9yZSBleGl0aW5nLgoJSW5zdGFsbCBmb250cyBjb21wcmVzc2VkIGJ5IGRlZmF1bHQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUJhc2ljIGltcGxlbWVudGF0aW9uIG9mIHNlcnZpY2UgY29udHJvbCBkaXNwYXRjaGVyLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglDbGVhbiB1cCB0ZW1wIGZpbGVzIGFsc28gd2hlbiBraWxsZWQgYnkgYSBzaWduYWwuCgoJKiBkbGxzL21zdmNydC9jcHBleGNlcHQuYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL2NwcC5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBsaWJzL3dpbmUvbGR0LmMsIGxvYWRlci9rdGhyZWFkLmMsCgkgIGxvYWRlci9wcmVsb2FkZXIuYywgc2VydmVyL2ZkLmM6CglQZXRlciBDaGFwbWFuIDw5Z2ZyeWUyMDJAc25lYWtlbWFpbC5jb20+CglGaXggdXAgc2V2ZXJhbCBpbmxpbmUgYXNzZW1ibGVyIGJsb2NrcyBzbyB0aGF0IHRoZXkgcHJvZHVjZSBjb3JyZWN0Cgljb2RlIHdpdGggdGhlIC1mb21pdC1mcmFtZS1wb2ludGVyIGdjYyBmbGFnLgoKCSogZGxscy9hZHZwYWNrL2FkdnBhY2suYywgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jLAoJICBpbmNsdWRlL3NldHVwYXBpLmg6CglFcmljIEtvaGwgPGVyaWMua29obEB0LW9ubGluZS5kZT4KCUltcGxlbWVudCBTZXR1cERpQnVpbGRDbGFzc0luZm9MaXN0KEV4VyksCglTZXR1cERpQ2xhc3NHdWlkc0Zyb21OYW1lKFcvRXhXKSwgU2V0dXBEaUNsYXNzTmFtZUZyb21HdWlkKFcvRXhXKSwKCVNldHVwRGlHZXRBY3R1YWxTZWN0aW9uVG9JbnN0YWxsVywgU2V0dXBEaUdldENsYXNzRGVzY3JpcHRpb24oVy9FeFcpLAoJU2V0dXBEaUluc3RhbGxDbGFzc1cgcGFydGlhbGx5LCBTZXR1cERpT3BlbkNsYXNzUmVnS2V5KEV4VyksCglTZXR1cE9wZW5NYXN0ZXJJbmYuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zeW5jLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW50ZXJubC5oLCBzZXJ2ZXIvZXZlbnQuYywKCSAgc2VydmVyL211dGV4LmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zZW1hcGhvcmUuYywKCSAgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIG1vdmVkIGV2ZW50LCBzZW1hcGhvcmUsIG11dGV4IGltcGxlbWVudGF0aW9uIGZyb20ga2VybmVsMzIgdG8gbnRkbGwKCS0gYWRkZWQgbXV0YW50IGltcGxlbWVudGF0aW9uIGluIG50ZGxsLCBhbmQgdXNlIGl0IGZvciBtdXRleAoJICBpbXBsZW1lbnRhdGlvbiBpbiBrZXJuZWwzMgoJLSBhZGRlZCBhY2Nlc3MgcGFyYW1ldGVyIG9uIGV2ZW50LCBzZW1hcGhvcmUsIHRpbWVyIGNyZWF0aW9uIGluCgkgIHdpbmVzZXJ2ZXIgKGFzIG50ZGxsIGludGVyZmFjZSByZXF1aXJlcyBpdCkKCS0gYWRkZWQgbWlzc2luZyBkZWZpbml0aW9ucyBpbiBpbmNsdWRlL3dpbnRlcm5sLmgKCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJRml4IGNhYmV4dHJhY3QgbWVtb3J5IGxlYWsuCgoyMDA0LTEyLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDQxMjAxLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA0LTEyLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgY3JlYXRlIGEgc3VzcGVuZGVkIHRocmVhZCBpbiBDcmVhdGVUaHJlYWQgYW5kIHJlc3VtZSBpdCBpZgoJQ1JFQVRFX1NVU1BFTkRFRCBmbGFnIGlzIG5vdCBzZXQgYXMgV2luZG93cyBkb2VzLgoKCSogZGxscy9yc2FlbmgvaW1wbGdsdWUuYywgZGxscy9yc2FlbmgvcnNhZW5oLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglNb3ZlZCBjb2RlIHNwZWNpZmljIHRvIENQR2VuS2V5LCBDUERlcml2ZUtleSBvciBDUEltcG9ydEtleSBmcm9tCgluZXdfa2V5IGludG8gdGhlIHJlc3BlY3RpdmUgZnVuY3Rpb25zLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsCgkgIGluY2x1ZGUvb2JqYmFzZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgc29tZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgdG8gb2JqYmFzZS5oLgoJLSBBZGQgc3R1YnMgZm9yIHNlcnZlciByZWYgY291bnRpbmcuCgktIEltcGxlbWVudCBIUkVTVUxUIG1hcnNoYWxpbmcuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCS0gQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBmcm9tICpfR0VUTlVNREVWUyBtZXNzYWdlIGFzIHBlciBLQjkwNTYyLgoJLSBGaXggdHlwbyBpbiBNTURSVl9JbnN0YWxsTWFwLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglJbnRyb2R1Y2VkIHNlcnZpY2UgdGhyZWFkLgoKCSogaW5jbHVkZS93aW5nZGkuaDogUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJQWRkIHNvbWUgbWlycm9yaW5nIGRlZmluZXMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglJZiB0aGUgYnVmZmVyIGlzIG5vIGxvbmdlciBzdGF0aWMgdGhlIG5hbWVzIHNob3VsZCByZWZsZWN0IHRoYXQuCglBbHNvIG1pbmltaXNlIHRoZSB1c2Ugb2YgdGhlIGNvbnN0YW50LgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBzdHViIGltcGxlbWVudGF0aW9uIGZvciBHZXRDdXJyZW50SHdQcm9maWxlVy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglQcmV2ZW50IHRoZSBhbmltYXRpb24gdGhyZWFkIGZyb20gd2FpdGluZyBvbiBpdHNlbGYgd2hlbiBpdCBzdG9wcy4KCjIwMDQtMTEtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmMsIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsCgkgIGRsbHMvY3J5cHQzMi9tYWluLmMsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsCgkgIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kM2Q4L3ZzaGFkZXJkZWNsYXJhdGlvbi5jLAoJICBkbGxzL2QzZDkvcGl4ZWxzaGFkZXIuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsCgkgIGRsbHMvZGV2ZW51bS9kZXZlbnVtX21haW4uYywgZGxscy9kcGxheXgvZHBsb2JieS5jLAoJICBkbGxzL2RwbmV0L2FkZHJlc3MuYywgZGxscy9nZGkvZHJpdmVyLmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmMsIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmMsCgkgIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvbXNkbW8vZG1vcmVnLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywgZGxscy9vbGVkbGcvaW5zb2JqZGxnLmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLCBkbGxzL3JwY3J0NC9jcHJveHkuYywKCSAgZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywKCSAgZGxscy9zaGx3YXBpL2NsaXN0LmMsIGRsbHMvc2hsd2FwaS91cmwuYywgZGxscy91c2VyL2V4dGljb24uYywKCSAgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywKCSAgZGxscy93aW5lZG9zL3BwZGV2LmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9pbml0LmMsCgkgIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3gxMWRydi9kaWIuYywKCSAgZGxscy94MTFkcnYvZGliX2NvbnZlcnQuYywgZGxscy94MTFkcnYvZGliX2RzdF9zd2FwLmMsCgkgIGRsbHMveDExZHJ2L2RpYl9zcmNfc3dhcC5jLCBkbGxzL3gxMWRydi9pbml0LmMsIGRsbHMveDExZHJ2L29wZW5nbC5jLAoJICBkbGxzL3gxMWRydi9wYWxldHRlLmMsIGRsbHMveDExZHJ2L3hmb250LmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlci5oLCBsaWJzL3VuaWNvZGUvY3B0YWJsZS5jLCBsaWJzL3VuaWNvZGUvd2N0b21iLmMsCgkgIHByb2dyYW1zL3JwY3NzL2VwbWFwX3NlcnZlci5jLCBwcm9ncmFtcy90YXNrbWdyL2RiZ2NobmwuYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmMsIHNlcnZlci9kZWJ1Z2dlci5jLAoJICBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQ29uc3QgY29ycmVjdG5lc3MgZml4ZXMuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJSW1wbGVtZW50IHRhc2sgbW9kYWwgbWVzc2FnZSBib3hlcy4KCgkqIGRsbHMvdXJsbW9uL3NlY19tZ3IuYywgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uaCwKCSAgaW5jbHVkZS91cmxtb24uaWRsOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBJSW50ZXJuZXRab25lTWFuYWdlciBpbnRlcmZhY2UuCgktIEFkZGVkIGltcGxlbWVudGF0aW9uIG9mIENvSW50ZXJuZXRDcmVhdGVab25lTWFuYWdlciBmdW5jdGlvbi4KCS0gQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBVcmxNa0dldFNlc3Npb25PcHRpb24gYW5kIGNvcnJlY3RlZAoJICBkZWNsYXJhdGlvbiBvZiBVcmxNa1NldFNlc3Npb25PcHRpb24uCgktIENvZGUgY2xlYW51cC4KCgkqIGRsbHMvbXNjbXMvaGFuZGxlLmMsIGRsbHMvbXNjbXMvbXNjbXMuc3BlYywgZGxscy9tc2Ntcy9tc2Ntc19wcml2LmgsCgkgIGRsbHMvbXNjbXMvcHJvZmlsZS5jLCBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYywgaW5jbHVkZS9pY20uaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW5mcmFzdHJ1Y3R1cmUgZm9yIGhhbmRsaW5nIElDQyBwcm9maWxlcy4KCUFsd2F5cyBsb2FkIGNvbG9yIHByb2ZpbGVzIGludG8gbWVtb3J5LgoJSW1wbGVtZW50IGFuZCB0ZXN0IEdldENvbG9yUHJvZmlsZUVsZW1lbnQgYW5kIEdldENvbG9yUHJvZmlsZUhlYWRlci4KCUltcGxlbWVudCBHZXRDb2xvclByb2ZpbGVGcm9tSGFuZGxlIGFuZCBTZXRDb2xvclByb2ZpbGVIZWFkZXIuCgoJKiBkbGxzL3dpbmVkM2QvZGV2aWNlLmM6IEFkYW0gRC4gTW9zcyA8YWRhbUBnaW1wLm9yZz4KCUZpeCBjb21waWxhdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQWdhaW4gcmVuYW1lIGdldGtleSgpIGFuZCBzZXRrZXkoKSBmb3IgRnJlZUJTRC4KCgkqIGRsbHMvd2luZXBzL2JpdG1hcC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRm9yIGEgMTUvMTYgYnBwIGRpYiB3ZSBzZW5kIFJHQiB0cmlwbGVzIHRvIHRoZSBwcmludGVyIHNvIHRoZSBzaXplCgltdWx0aXBsaWVyIGlzIDMgbm90IDIuCgoJKiBkbGxzL3JzYWVuaC9NYWtlZmlsZS5pbiwgZGxscy9yc2FlbmgvZGVzLmMsIGRsbHMvcnNhZW5oL2ltcGxnbHVlLmMsCgkgIGRsbHMvcnNhZW5oL2ltcGxnbHVlLmgsIGRsbHMvcnNhZW5oL2ltcGxvc3NsLmMsCgkgIGRsbHMvcnNhZW5oL2ltcGxvc3NsLmgsIGRsbHMvcnNhZW5oL21kMi5jLCBkbGxzL3JzYWVuaC9tcGkuYywKCSAgZGxscy9yc2FlbmgvcmMyLmMsIGRsbHMvcnNhZW5oL3JjNC5jLCBkbGxzL3JzYWVuaC9yc2EuYywKCSAgZGxscy9yc2FlbmgvcnNhZW5oLmMsIGRsbHMvcnNhZW5oL3RvbWNyeXB0Lmg6CglNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglJbmNvcnBvcmF0ZWQgTGliVG9tQ3J5cHQgY29kZSBpbnRvIHJzYWVuaCB0byBnZXQgcmlkIG9mIE9wZW5TU0wKCWRlcGVuZGVuY2llcy4KCgkqIGRsbHMvY29tY2F0L2NvbWNhdF9tYWluLmMsIGRsbHMvZDNkeG9mL21haW4uYywgZGxscy9tcHIvbXByLnNwZWMsCgkgIGRsbHMvbXByL21wcl9tYWluLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsCgkgIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUVuc3VyZSBEbGxDYW5VbmxvYWROb3cgaXMgYSB0cnVseSB2b2lkIGZ1bmN0aW9uLCBhbmQgZ2l2ZSBpdCBhIHVuaXF1ZQoJbmFtZSBzbyBpdCBjYW4gYmUgZG9jdW1lbnRlZCBwZXItZGxsLgoKCSogZGxscy9tYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbWFwaTMyL2ltYWxsb2MuYywKCSAgZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsIGRsbHMvbWFwaTMyL21hcGkzMl9tYWluLmMsCgkgIGRsbHMvbWFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbWFwaTMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21hcGkzMi90ZXN0cy9pbWFsbG9jLmMsIGRsbHMvbWFwaTMyL3Rlc3RzL3V0aWwuYywKCSAgZGxscy9tYXBpMzIvdXRpbC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBEbGxNYWluLCBEbGxDYW5VbmxvYWROb3csIFdyYXBQcm9ncmVzcywKCU1BUElHZXREZWZhdWx0TWFsbG9jLCBJc0JhZEJvdW5kZWRTdHJpbmdQdHIsIFVGcm9tU3osIFVsRnJvbVN6SGV4LAoJQ2JPZkVuY29kZWQuCglBZGQgdGVzdHMgZm9yIHRoZSBhYm92ZS4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUGFzcyBpbmZvUHRyIGFyb3VuZCBpbiBtb250aCBjYWxlbmRhciBjb250cm9sLgoJLSBBZGQgc3VwcG9ydCBmb3IgV01fU0VURk9OVCBhbmQgV01fR0VURk9OVCBtZXNzYWdlcy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJRml4ZWQgYSBmZXcgbWVtb3J5IGxlYWtzLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglNZXJnZSBVbmljb2RlIGFuZCBBU0NJSSB2ZXJzaW9ucyBvZiBTdGFydFNlcnZpY2VDdHJsRGlzcGF0Y2hlci4KCUltcGxlbWVudCBTdGFydFNlcnZpY2VDdHJsRGlzcGF0Y2hlckEgb24gdGhlIHRvcCBvZgoJU3RhcnRTZXJ2aWNlQ3RybERpc3BhdGNoZXJXLgoJR2V0IHJpZCBvZiBIRUFQX3N0cmR1cFd0b0EuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJU3RvcmUgdGhlIG5ldyBzdHlsZSBiZWZvcmUgcmVkcmF3aW5nIGFuZCByZXBvc2l0aW9uaW5nIHRoZSBjb250cm9sLgoKCSogZGxscy9uZXRhcGkzMi9uZXRiaW9zLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBbGxvdyBOQ0JSRVNFVCBhbmQgTkNCQURETkFNRSB0byB3b3JrIGV2ZW4gaWYgdGhlcmUgYXJlIG5vIGFkYXB0ZXJzLgoKCSogd2luZG93cy9kZWZ3bmQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUdldE1vZHVsZUhhbmRsZUEtPkdldE1vZHVsZUhhbmRsZVcuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIGEgRklYTUUgc3R5bGUgdGhhdCB3aWxsIGFjdHVhbGx5IGNvbXBpbGUuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUdhdGhlciBhbGwgRHJhd1RleHQgZmxhZ3MgdG9nZXRoZXIsIGNvbnZlcnQgdGhlbSB0byBoZXggZm9yCglyZWFkYWJpbGl0eS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEcmF3VGV4dEV4IHNob3VsZCBhbGxvY2F0ZSB0ZXh0IGJ1ZmZlciBvbiBzdGFjayBmb3IgdGhyZWFkIHNhZmVuZXNzLgoKMjAwNC0xMS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvZW52LmM6CglGaXhlZCBSdGxFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfVSB0byBub3QgZGVwZW5kIG9uIHRoZSBzdHJpbmcgYmVpbmcKCW51bGwtdGVybWluYXRlZCAoc3BvdHRlZCBieSBBbGV4YW5kZXIgWWF3b3Jza3kpLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIHRlc3RzIGZvciB0aW1lciBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy91c2VyL3dpbnByb2MuaCwgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3dpbi5jOgoJR2V0IHJpZCBvZiB0aGUgY2xpZW50LXNpZGUgd2luZG93IHRpbWVyIHN0cnVjdHVyZXMuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCUNvbnZlcnRlZCB0aGUgdGltZXIgbGlzdCB0byB1c2Ugc3RhbmRhcmQgbGlzdCBmdW5jdGlvbnMuCglBbGxvY2F0ZSBhIHRpbWVyIGlkIHdoZW4gdGhlIHdpbmRvdyBpcyAwIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUKCWNsaWVudCB0byBkbyBpdC4KCUFsbG93IHNldHRpbmcgdGltZXJzIG9uIHdpbmRvd3MgYmVsb25naW5nIHRvIG90aGVyIHRocmVhZHMgKGZvdW5kIGJ5CglNaWtlIE1jQ29ybWFjaykuCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uYywKCSAgcHJvZ3JhbXMvY29udHJvbC9jb250cm9sLmMsIHByb2dyYW1zL3Rhc2ttZ3IvZGJnY2hubC5jLAoJICBwcm9ncmFtcy92aWV3L3ZpZXcuYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLAoJICBwcm9ncmFtcy93aW5lcGF0aC93aW5lcGF0aC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNYWRlIHNvbWUgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgc3RhdGljLgoKCSogZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeGVkIG1pc3NpbmcgPC9zZWN0Mj4gdGFnLgoKCSogZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsCgkgIGRsbHMvd2luZWQzZC9pbmRleGJ1ZmZlci5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUltcGxlbWVudCBNYXRlcmlhbCwgQ2xpcCBwbGFuZSBhbmQgTGlnaHQgc3VwcG9ydCBwbHVzCglNdWx0aXBseVRyYW5zZm9ybS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jOiBHdW5uYXIgRGFsc25lcyA8aGFyZG9uQG9ubGluZS5ubz4KCUFkZGVkIGEgdGVzdCB0byBtYWtlIHN1cmUgdGhhdCBDcmVhdGVEaXJlY3RvcnlBL1cgZG9lcyBub3QgY3JlYXRlCgltdWx0aXBsZSBub24tZXhpc3RpbmcgZGlyZWN0b3JpZXMgaW4gdGhlIHBhdGggZ2l2ZW4uCgoJKiBkbGxzL3VzZXIvY29tYm8uYzogRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CglGNCBrZXkgZmxpcHMgdGhlIGxpc3Rib3ggaW4gZGVmYXVsdCAobm90IGV4dGVuZGVkIFVJKSBtb2RlLgoKCSogZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBVkkgZGVjb21wcmVzc29yOgoJLSBNYWtlIGNvcGllcyBvZiBiaXRtYXAgaGVhZGVyIGZyb20gbWVkaWEgdHlwZSBmb3IgaW5wdXQgYW5kIG91dHB1dAoJICBhbmQgdXBkYXRlIHRoZW0gd2hlbiBuZWVkZWQuCgktIEZpeGVkIHN1YnR5cGUgZm9yIDMyLWJpdCBkZXB0aCBpbiBRdWVyeUFjY2VwdC4KCUFWSSBzcGxpdHRlcjoKCS0gRml4ZWQgaGFuZGxpbmcgb2YgcmVjIGxpc3QuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0NzLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0RlLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0ZyLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0phLnJjLCBwcm9ncmFtcy9yZWdlZGl0L1BsLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1B0LnJjOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIHNvbWUgb3B0aW9ucyB0byBwb3B1cCBtZW51LgoKCSogZGxscy9xdWFydHovdGVzdHMvZmlsdGVyZ3JhcGguYzogQWRkZWQgbWlzc2luZyBDb0luaXRpYWxpemUuCgoJKiBkbGxzL29sZTMyL2Vycm9yaW5mby5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglUcmFjZSB0aGUgT0xFIGVycm9yIGluZm8gc3RyaW5ncy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CgktIEltcHJvdmUgT0xFIGZ1bmN0aW9uIGRvY3VtZW50YXRpb24uCgktIEJhaWwgb3V0IHdpdGggQ09fRV9OT1RJTklUSUFMSVpFRCB3aGVuIGFwdCBpcyBudWxsLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDRk1fR0VUU1BFQyBhbHdheXMgcmV0dXJucyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0LgoKMjAwNC0xMS0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvd2lucHJvYy5oLCBkbGxzL3VzZXIvd25kMTYuYywKCSAgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy90aW1lci5jOgoJVGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG5ldyB3aW5wcm9jIGhhbmRsaW5nIHRvIG1vdmUgc29tZSBtb3JlIGZ1bmN0aW9ucwoJdG8gMTYtYml0IGZpbGVzLgoJVElNRVJfSXNUaW1lclZhbGlkIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnkgbm93IHRoYXQgd2lucHJvY3MgYXJlIG5ldmVyCglmcmVlZC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRml4ZWQgaXNfdmFsaWRfd2lucHJvYyB0byBhdm9pZCBiZWluZyBvcHRpbWl6ZWQgb3V0IGJ5IHJlY2VudCBnY2MKCXZlcnNpb25zLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lZDNkL3Jlc291cmNlLmMsCgkgIGRsbHMvd2luZWQzZC9zdGF0ZWJsb2NrLmMsIGRsbHMvd2luZWQzZC92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgR2V0L1NldCBUcmFuc2Zvcm0gc3VwcG9ydCwgcGx1cyBCZWdpblNjZW5lIChkb2VzIG5vdGhpbmcpLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvcHJpbnRmLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgZmlsZSBuYW1lIHdoZW4gb3BlbmluZyBOVUwuCgoJKiB0b29scy93aW5lLmluZjogSGFqaW1lIFNlZ2F3YSA8aGFqaW1lQHNpZGVuZXQuZGRvLmpwPgoJTWFrZSBmb2xkZXJzIG9wZW4gY29ycmVjdGx5IGluIFdpbmRvd3MgRXhwbG9yZXIuCgoJKiBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJVXBkYXRlZCBQQUNLQUdJTkcgaG93dG8uCgoJKiBkbGxzL3dpbmVwcy9wcGQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3RlY3Qgc3NjYW5mcyB3aXRoIGEgIkMiIGxvY2FsZSBzbyB0aGF0IHRoZXkgc3RpbGwgd29yayB3aXRoIG5ldwoJZ2xpYmNzIGluIGEgbG9jYWxlIGRvZXNuJ3QgdXNlIGEgJy4nIGFzIGEgZGVjaW1hbCBzZXBhcmF0b3IuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy9udGRsbC9maWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3IgUmVhZEZpbGUvV3JpdGVGaWxlIGZhdWx0IGhhbmRsaW5nLCBtYWtlIGl0IHBhc3MgdW5kZXIKCVdpbmUuCgoJKiBkbGxzL3VzZXIvZWRpdC5jLCBkbGxzL3VzZXIvdGVzdHMvZWRpdC5jOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCS0gRml4IHZlcnRpY2FsIHBvc2l0aW9uIG9mIHRleHQgaW4gc2luZ2xlLWxpbmUgZWRpdCBjb250cm9scy4KCS0gQWRkIHRlc3RzIGZvciB0aGlzLgoKCSogZGxscy93aW50YWIzMi9jb250ZXh0LmM6IFJvYmVydCBOb3J0aCA8N293bnEwazQwMkBzbmVha2VtYWlsLmNvbT4KCS0gRW5zdXJlIHRoYXQgaWYgYnVmZmVyIHBvaW50ZXIgaXMgbnVsbCwgcXVldWUgaXMgZmx1c2hlZC4KCS0gRW5zdXJlIHRoYXQgY29ycmVjdCBwYWNrZXRzIGFyZSBjb3BpZWQgaW50byBvdXRwdXQgYnVmZmVyLgoJLSBVc2UgbWVtbW92ZSB3aGVuIG1vdmluZyBwYWNrZXRzIHdpdGhpbiBxdWV1ZSwgYXMgc291cmNlIGFuZCBkZXN0CgkgIHdpbGwgdHlwaWNhbGx5IG92ZXJsYXAuCgktIFdoZW4gbW92aW5nIHBhY2tldHMgaW4gcXVldWUsIGVuc3VyZSBjb3JyZWN0IG51bWJlciBvZiBwYWNrZXRzIGFyZQoJICBtb3ZlZC4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBEb24ndCBsaW1pdCB0aGUgc2l6ZSBvZiB0aGUgcHJvcGVydHkgdGhhdCBjYW4gYmUgcmV0cmlldmVkIGJ5CgkgIE1zaUdldFByb3BlcnR5LgoJLSBNYWtlIE1zaUdldFByb3BlcnR5IEEvVyBpbXBsZW1lbnRhdGlvbnMgbW9yZSBjb25zaXN0ZW50LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZWRldGVjdC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IGNvbXBpbGF0aW9uIG9uIHN5c3RlbXMgd2hpY2ggZG8gbm90IGhhdmUgPG1udGVudC5oPi4KCjIwMDQtMTEtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvd2lucHJvYy5oLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGVmZGxnLmMsCgkgIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmM6CglDaGFuZ2VkIHdpbnByb2MgYWxsb2NhdGlvbiB0byBiZSBiYXNlZCBvbmx5IG9uIHRoZSBwcm9jZWR1cmUgYWRkcmVzcywKCXRvIGF2b2lkIHRoZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2Ygd2lucHJvY3MgZm9yIGVhY2ggd2luZG93IGFuZCBjbGFzcy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCU1vcmUgcG9ydGFibGUgUE9JTlRTVE9QT0lOVCBtYWNyby4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IFByZXZlbnQgdXNlIG9mIE1BS0VQT0lOVFMgaW4gV2luZSBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywKCSAgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvc3lzbGluay5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCUF2b2lkIHVzaW5nIHRoZSBNQUtFUE9JTlRTIG1hY3JvLCBpdCdzIGJyb2tlbiBvbiBiaWcgZW5kaWFuLgoKCSogZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvaW5kZXhidWZmZXIuYywKCSAgZGxscy9kM2Q5L3ZlcnRleGJ1ZmZlci5jLCBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZWQzZC9kZXZpY2UuYywgZGxscy93aW5lZDNkL2luZGV4YnVmZmVyLmMsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhidWZmZXIuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgaW5kZXhidWZmZXIgc3VwcG9ydCBpbnRvIHdpbmVkM2QuCgoJKiBkbGxzL29sZTMyL29sZTJpbXBsLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgT2xlRHVwbGljYXRlRGF0YS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gY29ycmVjdCBlcnJvciBjb2RlIGluIEVudW1QcmludGVycy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBvZm4ubkZpbGVPZmZzZXQgd2hlbiBtdWx0aXBsZSBmaWxlcyBhcmUgc2VsZWN0ZWQuCgoJKiBkbGxzL2dkaS9icnVzaC5jLCBkbGxzL2dkaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2dkaS90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvdGVzdHMvYnJ1c2guYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQ3JlYXRlQnJ1c2hJbmRpcmVjdCBzaG91bGQgbm90IHJldHVybiBhIHN0b2NrIGJydXNoLgoKCSogZGxscy9nZGkvbWZkcnYvYml0Ymx0LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBzb21lIGRpcmVjdCBhY2Nlc3NlcyB0byBEQyBpbnRlcm5hbHMgZnJvbSBtZXRhZmlsZSBkcml2ZXIuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdXNlbGVzcyBjYWxscyB0byBJc0JhZFJlYWRQdHIgZnJvbSBSZWFkRmlsZSBhbmQgV3JpdGVGaWxlLgoKMjAwNC0xMS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCUZpeGVkIGhhbmRsaW5nIG9mIE5VTEwgcG9pbnRlciBpbiBQZWVrTWVzc2FnZVcsIHdpdGggdGVzdCAocmVwb3J0ZWQgYnkKCUVyaWMgRnJpYXMpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbXNjbXMvbXNjbXNfcHJpdi5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglMb29rIGZvciBsY21zLmggaW4gbGNtcy9sY21zLmguCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJQXBwZW5kIC5kbGwgZXh0ZW5zaW9uIGluIGFsbCBjYXNlcyAoc3BvdHRlZCBieSBNaWtlIEhlYXJuKS4KCgkqIGRsbHMvYW1zdHJlYW0vdmVyc2lvbi5yYywgZGxscy9jYXJkcy92ZXJzaW9uLnJjLAoJICBkbGxzL2QzZDgvdmVyc2lvbi5yYywgZGxscy9kM2Q5L3ZlcnNpb24ucmMsIGRsbHMvZDNkaW0vdmVyc2lvbi5yYywKCSAgZGxscy9kM2RybS92ZXJzaW9uLnJjLCBkbGxzL2QzZHhvZi92ZXJzaW9uLnJjLCBkbGxzL2RkcmF3L3ZlcnNpb24ucmMsCgkgIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnJjLCBkbGxzL2RpbnB1dC92ZXJzaW9uLnJjLAoJICBkbGxzL2RpbnB1dDgvdmVyc2lvbi5yYywgZGxscy9kbWJhbmQvdmVyc2lvbi5yYywKCSAgZGxscy9kbWNvbXBvcy92ZXJzaW9uLnJjLCBkbGxzL2RtaW1lL3ZlcnNpb24ucmMsCgkgIGRsbHMvZG1sb2FkZXIvdmVyc2lvbi5yYywgZGxscy9kbXNjcmlwdC92ZXJzaW9uLnJjLAoJICBkbGxzL2Rtc3R5bGUvdmVyc2lvbi5yYywgZGxscy9kbXN5bnRoL3ZlcnNpb24ucmMsCgkgIGRsbHMvZG11c2ljL3ZlcnNpb24ucmMsIGRsbHMvZG11c2ljMzIvdmVyc2lvbi5yYywKCSAgZGxscy9kcGxheS92ZXJzaW9uLnJjLCBkbGxzL2RwbGF5eC92ZXJzaW9uLnJjLCBkbGxzL2RwbmV0L3ZlcnNpb24ucmMsCgkgIGRsbHMvZHBuaHBhc3QvdmVyc2lvbi5yYywgZGxscy9kc291bmQvdmVyc2lvbi5yYywKCSAgZGxscy9kc3dhdmUvdmVyc2lvbi5yYywgZGxscy9keGRpYWduL3ZlcnNpb24ucmMsIGRsbHMvZ2RpL3ZlcnNpb24ucmMsCgkgIGRsbHMvaGhjdHJsLm9jeC92ZXJzaW9uLnJjLCBkbGxzL21wci92ZXJzaW9uLnJjLCBkbGxzL21zZG1vL3JzcmMucmMsCgkgIGRsbHMvbXNpL3ZlcnNpb24ucmMsIGRsbHMvbXN3c29jay92ZXJzaW9uLnJjLAoJICBkbGxzL29wZW5nbDMyL3ZlcnNpb24ucmMsIGRsbHMvcWNhcC92ZXJzaW9uLnJjLAoJICBkbGxzL3F1YXJ0ei92ZXJzaW9uLnJjLCBkbGxzL3NoZWxsMzIvdmVyc2lvbjE2LnJjLAoJICBkbGxzL3dpbmluZXQvdmVyc2lvbi5yYywgZGxscy93aW5zb2NrL3ZlcnNpb24ucmMsCgkgIGRsbHMvd3NvY2szMi92ZXJzaW9uLnJjOgoJVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJVmVyc2lvbiByZXNvdXJjZXMgY2xlYW51cC4KCgkqIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q5L2QzZDlfbWFpbi5jLAoJICBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvZDNkOS9kaXJlY3R4LmMsIGRsbHMvZDNkOS92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy93aW5lZDNkL2RldmljZS5jLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvcmVzb3VyY2UuYywgZGxscy93aW5lZDNkL3N0YXRlYmxvY2suYywKCSAgZGxscy93aW5lZDNkL3ZlcnRleGJ1ZmZlci5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9tYWluLmMsCgkgIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBJbXBsZW1lbnQgU2V0U3RyZWFtU291cmNlCgktIEVuc3VyZSB3aW5lZDNkIG9iamVjdHMgbWFpbnRhaW4gYSByZWZlcmVuY2UgY291bnQgb2YgYXQgbGVhc3QgdGhhdAoJICBvZiB0aGUgZDNkeCB2ZXJzaW9uLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvZHJpdmVkZXRlY3QuYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZXVpLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLCBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJLSBNb3JlIGhlYXBpZmljYXRpb24uCgktIFNwbGl0IGRyaXZlIGNvZGUgaW50byBjb3JlLCBVSSBhbmQgYXV0b2RldGVjdC4KCS0gSW1wbGVtZW50IGRyaXZlIGF1dG9kZXRlY3Rpb24uCgktIFNsaWdodCByZWRlc2lnbiBvZiBkcml2ZSB0YWIuCgktIENvZGUgY2xlYW51cC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIGRvbid0IHVzZSBER0EgdmVyc2lvbiAxIHNvIHJlbW92ZSB0aGUgY29uZmlndXJlIGNoZWNrIGZvciBpdC4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglXaGVuIGNoYW5naW5nIGZyb20gRElCX1N0YXR1c19HZGlNb2QgdG8gRElCX1N0YXR1c19HZGlNb2QsIHdlIGhhdmUgdG8KCXNldCB0aGUgcHJldmlvdXMgc3RhdHVzIHRvIERJQl9TdGF0dXNfR2RpTW9kLCBvdGhlcndpc2UgYQoJbm9uLWNvbW1pdHRpbmcgdW5sb2NrIGNvdWxkIGluY29ycmVjdGx5IHJldmVydCB0aGUgRElCIHRvIGFub3RoZXIKCXN0YXRlLCByYXRoZXIgdGhhbiB0aGUgY29ycmVjdCBESUJfU3RhdHVzX0dkaU1vZC4KCgkqIGRsbHMvZ2RpL2RjLmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvZ2RpL2dkaW9iai5jLAoJICBkbGxzL2dkaS90ZXN0cy9nZGlvYmouYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTZXQgdGhlIG1pdGVyIGxpbWl0IGluIHRoZSBEQyBzdGF0ZS4KCU9ubHkgU2V0TGFzdEVycm9yKCkgaW4gb2JqZWN0IGZ1bmN0aW9ucyB3aGVyZSBuYXRpdmUgZG9lcy4KCVRlc3QgdGhlIGVycm9yIGNvbWRpdGlvbnMgb2YgdGhlIGdkaW9iaiBmdW5jdGlvbnMuCglNaW5vciBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglVc2Ugc3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBXaW5kb3dzIGxvY2FsZSBhd2FyZS4KCjIwMDQtMTEtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsaWJzL3dpbmUvd2luZS5kZWYsIGxpYnMvd2luZS93aW5lLm1hcDoKCUVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJRXhwb3J0IHdpbmVfcHRocmVhZF9nZXRfY3VycmVudF90ZWIuCgoJKiBsaWJzL3dpbmUvcG9ydC5jOiBFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCUZpeCBTcGFyYyBhc3NlbWJseSBjb2RlIGluIHdpbmVfc3dpdGNoX3RvX3N0YWNrLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6IFBhc3MgRExMRkxBR1MgdG8gd2luZWJ1aWxkIHRvby4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCURlZmluZSAiV0lOVkVSPTB4MDUwMSBfV0lOMzJfV0lOTlQ9MHgwNTAxIF9XSU4zMl9JRT0weDA2MDAiIGZvciBhbGwKCXRoZSB0YXJnZXRzLgoKCSogZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywgZGxscy9kYmdoZWxwL3N5bWJvbC5jLAoJICBkbGxzL2RiZ2hlbHAvdHlwZS5jLCBwcm9ncmFtcy93aW5lZGJnL3N5bWJvbC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCByZWdyZXNzaW9ucyBpbnRyb2R1Y2VkIHdoZW4gbW92aW5nIGFkZHJlc3NlcyBhcyA2NGJpdCB2YWx1ZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJUHJldmVudCBlbnZpcm9ubWVudCB0ZXN0IGZyb20gY3Jhc2hpbmcgd2hlbiBlbnZpcm9ubWVudCBpcyBsYXJnZS4KCgkqIERFVkVMT1BFUlMtSElOVFM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCUFkZGVkIGFkdnBhY2suZGxsLCByc2FlbmguZGxsLCBzdHJtaWlkcy5saWIuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglIYW5kbGUgdW5rbm93biBwYXJhbWV0ZXJzIG1vcmUgZ3JhY2VmdWxseS4KCgkqIHdpbmRvd3MvaW5wdXQuYzogRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglGaXhlZCBLRVlMUCBzdHJ1Y3R1cmUgZm9yIGJpZyBlbmRpYW4uCgoJKiBkbGxzL2tlcm5lbC9wYXRoLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglDaGFuZ2VkIGFsbG9jYXRpb24gb2YgYXJndW1lbnRzIGluIFNlYXJjaFBhdGhBIHNvIHBhdGggaXMgbm90IGxpbWl0ZWQKCWJ5IHNpemUgb2YgVEVCIHN0YXRpYyBidWZmZXIuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVVuaWNvZGlmeSBzdHJpbmcgY29uc3RhbnRzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvc3BsaXRwYXRoLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglzcGxpdHBhdGggbWFpbnRhaW5hbmNlLgoKCSogZGxscy9nZGkvZW5obWV0YWZpbGUuYywgZGxscy9nZGkvZW5obWZkcnYvb2JqZWN0cy5jLAoJICBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVN1cHBvcnQgbW9ubyBwYXR0ZXJuIGJydXNoZXMgaW4gRU1GJ3MuCgoJKiBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBdm9pZCBtYWdpYyBudW1iZXIuCgoJKiBkbGxzL2dkaS9iaXRtYXAuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBDcmVhdGVCaXRtYXAgdXNpbmcgQ3JlYXRlQml0bWFwSW5kaXJlY3Qgc28gd2UgY2FuIGhhbmRsZQoJZnVua3kgYWxpZ25tZW50IHBhZGRpbmdzLgoJU2V0TGFzdEVycm9yKCkgb24gZmFpbHVyZSwgZG9jdW1lbnRhdGlvbiBjbGVhbnVwLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBbGxvdyBuZWdhdGl2ZSBudW1iZXJzIGluIFJDREFUQSByZXNvdXJjZXMgbGlrZSBSQy5FWEUgZG9lcy4KCUZpeCBmYWxzZSBvdXQgb2YgMTYgYml0cyByYW5nZSB3YXJuaW5nLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBHbGVubiBXdXJzdGVyIDxnd3Vyc3RlckBzY3MuY2FybGV0b24uY2E+CglVc2UgcGh5c0Rldi0+dGV4dFBpeGVsIGluc3RlYWQgb2YgR2V0VGV4dENvbG9yIGZvciBFeHRUZXh0T3V0LgoKMjAwNC0xMS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLAoJICBkbGxzL2x6ZXhwYW5kL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbHpleHBhbmQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbHpleHBhbmQvdGVzdHMvbHpleHBhbmRfbWFpbi5jOgoJRXZhbiBHLiBQYXJyeSA8ZXBhcnJ5QGNzLmhtYy5lZHU+CglBZGRlZCBzb21lIHRlc3RzIGZvciBsemV4cGFuZC4KCgkqIGRsbHMvZGJnaGVscC9NYWtlZmlsZS5pbiwgZGxscy9kYmdoZWxwL2NvZmYuYywgZGxscy9kYmdoZWxwL21zYy5jLAoJICBkbGxzL2RiZ2hlbHAvbXNjdnBkYi5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIG1vdmVkIGludG8gbmV3IG1zY3ZwZGIuaCAob3V0IG9mIG1zYy5jKSBhbGwgdHlwZXMgYW5kIGRlZmluZXMgbmVlZGVkCgkgIHRvIHBhcnNlIGRlYnVnIGZpbGVzIGdlbmVyYXRlZCBieSBNUyB0b29scwoJLSBtb3ZlZCBpbnRvIGNvZmYuYyAoYW5kIG91dCBvZiBtc2MuYykgdGhlIENPRkYgaGFuZGxpbmcKCS0gY2xlYW5lZCBsb3RzIG9mIHR5cGVzIChhZGQgY29uc2lzdGVuY3kgYWNyb3NzIHN0cnVjdHMpCgktIHZlcnNpb25pbmcgb2Ygc29tZSBkZWZpbmVzIGFuZCB0eXBlcyAodG8gZm9sbG93IE1TIHRvb2xzIGV2b2x1dGlvbikKCS0gZW5oYW5jZWQgVjIgb2Ygc3ltYm9scyBwYXJzaW5nIChzb21lIG1vcmUgdHlwZXMgcmVjb2duaXplZCwgc3VwcG9ydAoJICBvZiBpbXBvcnRlZCAucGRiIGZpbGVzKQoJLSBhZGRlZCBzdXBwb3J0IGZvciBuZXdlc3QgLnBkYiBmb3JtYXQKCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJTW92ZSB1cCBTRVJWXyogZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL0VzLnJjLCBwcm9ncmFtcy93aW5oZWxwL0VzLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCVVwZGF0ZWQgU3BhbmlzaCB0cmFuc2xhdGlvbnMuCgoJKiBpbmNsdWRlL2ljbS5oLCBkbGxzL21zY21zL2xjbXNfYXBpLmgsIGRsbHMvbXNjbXMvbXNjbXMuc3BlYywKCSAgZGxscy9tc2Ntcy9tc2Ntc19tYWluLmMsIGRsbHMvbXNjbXMvcHJvZmlsZS5jLAoJICBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IGFuZCB0ZXN0IEdldENvbG9yUHJvZmlsZUVsZW1lbnRUYWcsCglHZXRDb3VudENvbG9yUHJvZmlsZUVsZW1lbnRzIGFuZCBJc0NvbG9yUHJvZmlsZVRhZ1ByZXNlbnQuIFN0dWIKCUdldFN0YW5kYXJkQ29sb3JTcGFjZVByb2ZpbGV7QSxXfS4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDYWxsIENvbXBhcmVTdHJpbmdBIHdpdGggTE9DQUxFX1VTRV9DUF9BQ1AgZmxhZyBzZXQgZnJvbSBsc3RyY21wQSBhbmQKCWxzdHJjbXBpQSBpbiBvcmRlciB0byBpbXByb3ZlIHNwZWVkLiBBZGQgYSB0ZXN0IGNhc2UgY29uZmlybWluZyB0aGF0CglDb21wYXJlU3RyaW5nIGFuZCBMQ01hcFN0cmluZyBhY2NlcHQgTE9DQUxFX1VTRV9DUF9BQ1AuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVJlbW92ZWQgVy0+QSBmcm9tIERFRldORF9JbW1Jc1VJTWVzc2FnZVcuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3Jlc291cmNlLmgsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0VuLnJjOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIEludGVybmV0R2V0Q29ubmVjdGVkU3RhdGVFeEEgbm90IGNyYXNoLCBieSBtYWtpbmcKCSAgSW50ZXJuZXRHZXRDb25uZWN0ZWRTdGF0ZUV4VyBmaWxsIGluIHRoZSBidWZmZXIgY29ycmVjdGx5LgoJLSBSZW1vdmUgdGhlIGR1bXBpbmcgb2Ygc3RyaW5ncyB0aGF0IHdpbGwgb25seSBjb250YWluIGdhcmJhZ2UuCgktIERvY3VtZW50IGZ1bmN0aW9uLgoKCSogZGxscy9tc3ZjcnQvbG9jYWxlLmM6IEJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCURvbid0IG1lc3MgdXAgdGhlIG1zdmNydCBjb2RlcGFnZSBvbiBlLmcuIF9NQl9DUF9BTlNJLgoKCSogZGxscy91c2VyL3Jlc291cmNlLmM6IEVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJQWNjZWxlcmF0b3IgcmVzb3VyY2Ugc3RydWN0IGZpeCBmb3Igc3BhcmMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglUaGUgZGVmYXVsdCBmb250IGZvciB0aGUgdHJlZXZpZXcgc2hvdWxkIGJlIHRoZSBpY29uIHRpdGxlIGZvbnQuCgoJKiB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6IEVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJSGFuZGxlIGEgZGVmIGZpbGUgd2hlcmUgdGhlIG5hbWVzIG9mIHRoZSBleHBvcnRlZCBmdW5jdGlvbnMgYXJlIGxpc3RlZAoJd2l0aG91dCBiZWluZyBmb2xsb3dlZCBieSBhbiBlcXVhbHMgc2lnbiBhbmQgYW4gYWxpYXMuCgoJKiBkbGxzL3dpbmVwcy9wcGQuYzogRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglGaXhlZCBmaWxlIGhhbmRsZSBsZWFrLgoKCSogZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzogRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglQZXJtaXQgdW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3Mgb24gc3BhcmMuCgoJKiB0b29scy93cmMvZ2VucmVzLmM6IEVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJRml4ZWQgZXJyb3Igd3JpdGluZyBjb250cm9sIElEcyBpbiBkaWFsb2dleCBvbiBzcGFyYy4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJQWRkIHNvbWUgbWlzc2luZyBlcnJvciB2YWx1ZXMgaW4gV0lOTU1fRXJyb3JUb1N0cmluZy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJRml4ZWQgZGlhbG9nZXggcmVzb3VyY2UgbG9hZGluZyBvbiBzcGFyYy4KCgkqIGRsbHMvZ2RpL2JydXNoLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTZWFyY2ggdGhlIHdob2xlIHRhYmxlIHdoZW4gY3JlYXRpbmcgc29saWQgYnJ1c2hlcy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJQWRkZWQgTk9WVCB0aW1lem9uZSBpbmZvLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglGaXggY2xpcHBpbmcgZm9yIERyYXdUaGVtZVBhcmVudEJhY2tncm91bmQuCgoJKiBSRUFETUU6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglVcGRhdGUgRnJlZUJTRCBpbmZvLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBS6W1pIEFzc2FpbGx5IDxyZW1pLmFzc2FpbGx5QGZyZWUuZnI+CglBZGRlZCBzb21lIHN0cnVjdHVyZSB0YWdzIGFuZCBlcnJvciBkZWZpbmVzLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL250ZGxsL2ZpbGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZWQga2VybmVsMzIuRGVsZXRlRmlsZVcgY29yZSBpbXBsZW1lbnRhdGlvbiB0byBudGRsbC5OdERlbGV0ZUZpbGUuCgoyMDA0LTExLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tcHIvLmN2c2lnbm9yZSwgZGxscy9vbGUzMi8uY3ZzaWdub3JlLCBkbGxzL29sZWF1dDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlOgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiBubyBsb25nZXIgbmVlZGVkIGVudHJpZXMuCgoJKiBkbGxzL3VzZXIvZGlzcGxheS5jOiBGaXggY29uZmxpY3Rpbmcgc3RydWN0dXJlIHRhZy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9kc2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU9uZSBzdGVwIGNsb3NlciB0byBnZXR0aW5nIGhhcmR3YXJlIGFjY2VsZXJhdGVkIGNhcHR1cmUgd29ya2luZy4KCgkqIGZvbnRzL01ha2VmaWxlLmluLCBmb250cy93aW5lX3N5c3RlbS5zZmQsIHRvb2xzL3NmbnQyZm50LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ2FsY3VsYXRpbmcgdGhlIGF2ZXJhZ2Ugd2lkdGggZG9lc24ndCBzZWVtIHBvc3NpYmxlLCBzbyBzZXQgaXQKCW1hbnVhbGx5IGluc3RlYWQuCglGaXggdGhlIGNvcHlyaWdodCBpbiB3aW5lX3N5c3RlbS4KCgkqIGRsbHMvbXNjbXMvbXNjbXMuc3BlYywgZGxscy9tc2Ntcy9wcm9maWxlLmMsIGluY2x1ZGUvaWNtLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBJc1Byb2ZpbGVWYWxpZC4KCURvY3VtZW50IGFsbCBmdW5jdGlvbnMuCgoJKiBkbGxzL3ZlcnNpb24vdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCBHZXRGaWxlVmVyc2lvbkluZm9TaXplQSB0ZXN0cyBvbiBOVC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4IEVuZ2xpc2ggbWVudSB0ZXh0LgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgSUdyYXBoQnVpbGRlciBtZXRob2RzOiBDb25uZWN0LCBSZW5kZXIsIFJlbmRlckZpbGUgJgoJQWRkU291cmNlRmlsdGVyLgoJRml4ZWQgZmlsdGVyIG5hbWUgZ2VuZXJhdGlvbiBpbiBJR3JhcGhCdWlsZGVyOjpBZGRGaWx0ZXIuCgoJKiBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVXNlIG1vcmUgc3BlY2lmaWMgZXJyb3IgY29kZXMgdGhhbiBFX0ZBSUwsIHdoZXJlIHBvc3NpYmxlLgoJLSBNb3ZlIHZ0YWJsZSB0byBlbmQsIGdpdmUgaXQgdGhlIGNvbnN0IG1vZGlmaWVyLCBhbmQgcmVtb3ZlIHVubmVlZGVkCgkgIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGRlZCBiZWdpbm5pbmdzIG9mIFJlZ1F1ZXJ5VmFsdWVFeCB0ZXN0cy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQ29ycmVjdCBvcmRlcmluZyBvZiBzb21lIGRlZmluZXMuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGYWxsYmFjayB0byBzb21lIHNlbnNpYmxlIGRlZmF1bHQgdmFsdWVzIHdoZW4gdW5kZXJsaW5pbmcgYW5kIHN0cmlraW5nCglvdXQgYml0bWFwIGZvbnRzLgoJUm90YXRlIHRoZSBzdHJpa2VvdXQgbGluZSBpZiB0aGUgZXNjYXBlbWVudCBpcyBub24temVyby4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogWmFjaCBHb3JtYW4gPHphY2hAYXJjaGV0eXBlYXVjdGlvbi5jb20+CglBZGQgdGhlIERUX05PUFJFRklYIGZsYWcgd2hlbiBjYWxsaW5nIERyYXdUZXh0KCkgZm9yIHNpbmdsZS1saW5lCglsaXN0dmlldyBjb250cm9scy4KCgkqIGRsbHMvbXNjbXMvLmN2c2lnbm9yZSwgZGxscy9tc2Ntcy9NYWtlZmlsZS5pbiwgZGxscy9tc2Ntcy92ZXJzaW9uLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGQgdmVyc2lvbiBpbmZvcm1hdGlvbi4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIGNvbG9ya2V5IGNvbnZlcnNpb24uCglIYW5kbGUgbnVsbCBzdXJmYWNlIHBvaW50ZXIgd2hlbiBjcmVhdGluZyBzdXJmYWNlLgoKCSogZGxscy9pdHNzL2l0c3MuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIGludGVybG9ja2VkIGZ1bmN0aW9ucyBmb3IgdGhyZWFkIHNhZmV0eS4KCgkqIGRsbHMvcXVhcnR6L2VudW1waW5zLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIElFbnVtUGluc0ltcGxfTmV4dC4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLmMsIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwKCSAgZGxscy9kYmdoZWxwL3N5bWJvbC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGltcGxlbWVudCBTeW1VbkROYW1lIGFuZCBVbmRlY29yYXRlU3ltYm9sTmFtZSBvbiB0b3Agb2YKCSAgbXN2Y3J0Ll9fdW5ETmFtZQoJLSBpbXBsZW1lbnQgU1lNT1BUX1VORE5BTUUgc3VwcG9ydAoKCSogaW5jbHVkZS93aW51c2VyLmg6IFLpbWkgQXNzYWlsbHkgPHJlbWkuYXNzYWlsbHlAZnJlZS5mcj4KCUFkZGVkIHNvbWUgc3RydWN0dXJlIHRhZ3MuCgoJKiBpbmNsdWRlL21sYW5nLmlkbCwgaW5jbHVkZS93aW5udC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBfV0lOTlRfIGFzIGV4Y2x1c2lvbiBkZWZpbmUgZm9yIHNvdXJjZSBjb21wYXRpYmlsaXR5LgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNYXBwZWQgQVZJU3RyZWFtT3BlbkZyb21GaWxlIHRvIEFWSVN0cmVhbU9wZW5Gcm9tRmlsZUEuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmUgdHJhaWxpbmcgd2hpdGUgc3BhY2UgaW50cm9kdWNlZCBpbiBwcmV2aW91cyBwYXRjaC4KCUZpeGVkIElEaXJlY3RTb3VuZENhcHR1cmVCdWZmZXJfU3RvcCB0byBhbGxvdyBhbm90aGVyIFN0YXJ0IHRvCglzdWNjZWVkLgoJUmVtb3ZlZCBPU1MgY2VudHJpYyBidWZmZXIgcmVjcmVhdGlvbiBoYWNrIHdoZW4gZG9pbmcgaGFyZHdhcmUKCWFjY2VsZXJhdGlvbi4KCUNsZWFuZWQgdXAgZXJyb3IgcmVwb3J0aW5nIGFuZCB0cmFjaW5nLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJTWFrZSBmb3VyIHNocmVnIHRlc3RzIHBhc3Mgb24gWFAuCgoJKiBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzdHViIGZvciBTZXRRdWVyeU5ldFNlc3Npb25Db3VudC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglQYXNzIHRoZSBhZGRyZXNzIG9mIHRoZSBoYW5kbGUgcmF0aGVyIHRoYW4ganVzdCB0aGUgaGFuZGxlIHRvIGZpeCBhCgljcmFzaCB3aXRoIElFLgoKCSogZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGZvcndhcmRzLgoKMjAwNC0xMS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY3J5cHQzMi9jZXJ0LmMsIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIHRoZSBDZXJ0U3RvcmUgY29kZSBhIGxpdHRsZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBTdHViIFNldFNlcnZpY2VPYmplY3RTZWN1cml0eSB0byBwcmV0ZW5kIHRvIHdvcmsgKHJldHVybiB0cnVlKS4KCS0gQ2hhbmdlIFF1ZXJ5U2VydmljZU9iamVjdFNlY3VyaXR5IHNvIGl0IGluaXRpYWxpemVzIHRoZSBBQ0wgd2l0aCBhCgkgIG51bGwgREFDTCwgYW5kIHJldHVybiBhcyB0aG91Z2ggaXQgd29ya2VkLgoJLSBDaGFuZ2VkIFF1ZXJ5U2VydmljZVN0YXR1cyB0byB0ZWxsIGlmIHRoZSBzZXJ2aWNlIGlzIHJ1bm5pbmcgYnkgdGhlCgkgIHByZXNlbmNlIG9mIHNvbWUgbmFtZWQgc2hhcmVkIHN0b3JhZ2UgLSBjb3BpZWQgZnJvbSBTdGFydFNlcnZpY2Ugd2hlbgoJICBpdCBjaGVja3MgdG8gc2VlIGlmIGl0cyBhbHJlYWR5IHJ1bm5pbmcuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglVc2UgU0hEZWxldGVLZXkgdG8gcmVtb3ZlIGxlZnRvdmVyIGtleXMgZnJvbSB0aGUgc2hyZWcgdGVzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBTZXQgY2FjaGUgYml0bWFwIGRpbWVuc2lvbnMgY29ycmVjdGx5IHdoZW4gYSAweDAgaW1hZ2UgbGlzdCBpcyB1c2VkLgoJLSBPcHRpbWl6ZSBXTV9TVFlMRUNIQU5HRUQgaGFuZGxlciB0byBvbmx5IHJlZHJhdyB3aGVuIGEgQ0NTXyogc3R5bGUKCSAgaXMgY2hhbmdlZCwgbGlrZSBuYXRpdmUuCgoJKiBkbGxzL3JzYWVuaC9yc2FlbmguYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQ1BBY3F1aXJlQ29udGV4dDogU2V0IGxhc3QgZXJyb3IgdG8gRVJST1JfU1VDQ0VTUyBpbiBjYXNlIG9mIHN1Y2Nlc3MuCgoyMDA0LTExLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZCBhIGZpcnN0IEFDX0NIRUNLX0hFQURFUlMsIGZvcmNpbmcgY2hlY2tpbmcgb2YgdGhlIGRlZmF1bHQgaW5jbHVkZXMKCWV2ZW4gd2hlbiBidWlsZGluZyB3aW5lIHdpdGhvdXQgWDExLgoKCSogZGxscy9udGRsbC9maWxlLmM6IEhhbWlzaCA8aGFtaXNoX25vc3BhbUB5YWhvby5jb20+CglGaXggZm9yIGFzeW5jIHdyaXRlcyB0byBjb21tIHBvcnRzLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgdGVzdHMgb2YgR2V0QWNjZXB0TGFuZ3VhZ2VzQSBmb3IgcGxhdGZvbXMgOTgsTUUsTlQ0LgoKCSogZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgR2V0RmlsZVZlcnNpb25JbmZvU2l6ZUEgdGVzdHMgb24gTlQ0IHBsYXRmb3JtLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlIHJlZHVuZGFudCBHVUlEIGNoZWNrLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYywgd2luZG93cy9zcHkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIGRvIG5vdCBtb3ZlIHVwZG93biBjb250cm9sIGFuZCBidWRkeSBpZiBhbiBhbGlnbm1lbnQgd2FzIG5vdCByZXF1ZXN0ZWQKCS0gaW4gVURNX1NFVEFDQ0VMIGhhbmRsZXIgZG8gbm90IGZvcmdldCB0byB1cGRhdGUgbnVtYmVyIG9mIGFjY2VsZXJhdG9ycwoJLSB1cGRhdGUgYXJyb3dzIGluZm8gaW4gV01fTEJVVFRPTkRPV04gYXMgd2VsbCBhcyBpbiBXTV9NT1VTRU1PVkUKCS0gdXNlIGFjY2VsZXJhdG9ycyBpbiBXTV9MQlVUVE9ORE9XTiBoYW5kbGVyCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudGF0aW9uIG9mIEdldFRoZW1lQmFja2dyb3VuZEV4dGVudC4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgR2V0VGhlbWVCYWNrZ3JvdW5kUmVnaW9uLgoJQ29ycmVjdCBhIGZldyBjb21tZW50cy4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglDaGFuZ2UgQWxwaGFCbGVuZCB0byB1c2UgZGVzdGluYXRpb24gZGltZW5zaW9ucyByYXRoZXIgdGhlbiBzb3VyY2UuCgoJKiBkbGxzL3V4dGhlbWUvc3lzdGVtLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJRml4IGNyYXNoIHdoZW4gbm8gdGhlbWUgaXMgc2V0IGFuZCBhcHBsaWNhdGlvbiBpZ25vcmVzIGVycm9ycy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOiBXYWx0IE9nYnVybiA8cmV1YmVuQHVnY3MuY2FsdGVjaC5lZHU+CglJbiBPbGVQaWN0dXJlSW1wbF9Mb2FkLCBhbHdheXMgdXNlIERJQl9SR0JfQ09MT1JTIGJlY2F1c2Ugbm8gaW5kZXhlZAoJcGFsZXR0ZSBoYXMgYmVlbiBkZWZpbmVkLgoKMjAwNC0xMS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIGJOdGZVbmljb2RlIGlzIGEgZHVwJyBvZiBiVW5pY29kZSBzbyByZW1vdmUgaXQgYW5kIGZpeCB0aGUgZmV3CgkgIHBsYWNlcyB3aGVyZSBpdCB3YXMgdXNlZC4KCS0gUmVtb3ZlIGEgbG9hZCBvZiB1c2VsZXNzIE5VTEwgaW5mb1B0ciBjaGVja3MuCgktIEhhcmRjb2RlIHRoZSBkZWZhdWx0IHBhZGRpbmcgbGlrZSBuYXRpdmUgaW5zdGVhZCBvZiB1c2luZyBhIHdhY2t5IGZvcm11bGEuCgktIFJlcGxhY2Ugc29tZSB0YWJzIHdpdGggc3BhY2VzIGFuZCByZW1vdmUgTk1IRFIgY2FzdHMuCgoJKiBkbGxzL3VzZXIvbWVudS5jOiBXaWxsaWFtIFBvZXRyYSBZb2dhIEggPHdpbGxpYW1wb2V0cmFAeWFob28uY29tPgoJR2l2ZSB0aGUgZmlyc3QgbWVudSBpdGVtIG9mIGEgcG9wdXAgbWVudSBhIGRpc3RhbmNlIG9mIDEgcGl4ZWwgdG8gdGhlCgl0b3AgYm9yZGVyLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogV2lsbGlhbSBQb2V0cmEgWW9nYSBIIDx3aWxsaWFtcG9ldHJhQHlhaG9vLmNvbT4KCUZpeCB0aGUgc2l6ZSBhbmQgcG9zaXRpb24gb2YgdGhlIHN5c3RlbSBtZW51IGljb24gb24gdGhlIGNhcHRpb24gYmFyLgoKCSogZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL2NwcC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglOb3cgdGhhdCBuYW1lIHVuZGVjb3JhdGlvbiB3b3JrcywgZml4IHRoZSB0eXBlIGluZm8uCgoJKiBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC91bmRuYW1lLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIF9fdW5ETmFtZSBhbmQgX191bkROYW1lRXggZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL2VkaXQuYywgZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3Rlc3RzL2VkaXQuYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJLSByZXR1cm4gIndhbnQgYWxsIGtleXMiIGZvciBXTV9HRVRETEdDT0RFIHdoZW4gbXVsdGktbGluZQoJLSBzaW5nbGUtbGluZSBlZGl0IGNvbnRyb2wgZG9lcyBub3Qgd2FudCBhbGwgbWVzc2FnZXMKCS0gYWRkaXRpb25hbCBzdHlsZSBjb21iaW5hdGlvbnMgYXJlIHBvc3NpYmxlIGZvciBib3RoIG11bHRpLWxpbmUgYW5kCgkgIHNpbmdsZS1saW5lIGVkaXQgY29udHJvbHMKCS0gdGVzdHMgdG8gY29uZmlybSBpdAoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRGltZW5zaW9ucyBvZiBtb250aCBjYWxlbmRhciBjb250cm9sIHNob3VsZCBub3QgZGVwZW5kIG9uIHRoZSBjbGllbnQKCXdpbmRvdyBzaXplLgoKCSogZGxscy9oaGN0cmwub2N4Ly5jdnNpZ25vcmUsIGRsbHMvaGhjdHJsLm9jeC9NYWtlZmlsZS5pbiwKCSAgZGxscy9oaGN0cmwub2N4L3ZlcnNpb24ucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZCB2ZXJzaW9uIGluZm9ybWF0aW9uLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLCBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLAoJICBkbGxzL2RiZ2hlbHAvbWVtb3J5LmMsIGRsbHMvZGJnaGVscC9tb2R1bGUuYywKCSAgZGxscy9kYmdoZWxwL3BlX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvc3RhYnMuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBmaXhlZCBsb2FkaW5nIHN0YWJzIGZyb20gUEUgbW9kdWxlcyBjb21waWxlZCB3aXRoIE1pbmdXCgktIGVuaGFuY2Ugc29tZSBsb2FkaW5nIGxvZ2ljIGJldHdlZW4gRUxGL1BFIERMTCBwYWlycwoJLSByZW1vdmVkIHVudXNlZCBpbmRpcmVjdCBtZW1vcnkgYWNjZXNzIGZ1bmN0aW9uCgktIGdldCByaWQgb2Ygc29tZSBHQ0MgZ2VuZXJhdGVkIHN5bWJvbHMKCgkqIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYywgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBmaXhlZCByZWdyZXNzaW9uIGluIHdhdGNocG9pbnQgc2V0dGluZyAoYnkgYWRkcikKCS0gaW4gYmFja3RyYWNlLCBzaG93IGF0IGxlYXN0IG1vZHVsZSB3aGVuIG5vIHN5bWJvbCBpcyBmb3VuZAoJLSBwcm90ZWN0IGV2ZW50IHBhcnNpbmcgZnJvbSBjb21tYW5kIGxpbmUgKHdoZW4gbm8gcmVhbCBudW1iZXIpCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBXYWx0IE9nYnVybiA8cmV1YmVuQHVnY3MuY2FsdGVjaC5lZHU+CglUdXJuIElTT19MZWZ0X1RhYiBiYWNrIGludG8gYSB0YWIgY2hhcmFjdGVyIGlmIG5lZWRlZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6CglXaWxsaWFtIFBvZXRyYSBZb2dhIEggPHdpbGxpYW1wb2V0cmFAeWFob28uY29tPgoJVXNlIENPTE9SX01FTlVCQVIgKGluc3RlYWQgb2YgQ09MT1JfR1JBRElFTlRJTkFDVElWRUNBUFRJT04pIGFzIHRoZQoJdXBwZXIgbGltaXQgaW4gR2V0U3lzQ29sb3IoKSB2YWxpZGF0aW9uLgoKCSogZGxscy91c2VyL3VpdG9vbHMuYzogV2lsbGlhbSBQb2V0cmEgWW9nYSBIIDx3aWxsaWFtcG9ldHJhQHlhaG9vLmNvbT4KCUZpeCB0aGUgYnV0dG9uIGVkZ2UgY29sb3IsIGJ5IHVzaW5nIHRoZSBCRl9TT0ZUIGJvcmRlciBzdHlsZSBmb3IKCWJ1dHRvbnMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogUultaSBBc3NhaWxseSA8cmVtaS5hc3NhaWxseUBmcmVlLmZyPgoJQWRkIHNvbWUgc3RydWN0dXJlIHRhZ3MuCgoyMDA0LTExLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCUZyZWUgdGhlIG1lbW9yeSB2aWV3IGJlZm9yZSB3ZSB1bmxvYWQgYSBidWlsdGluIGRsbCB0byBhdm9pZCBhIHJhY2UKCWNvbmRpdGlvbi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RpbWUuYywgZGxscy9rZXJuZWwvdGltZS5jLAoJICBkbGxzL21zdmNydC90ZXN0cy90aW1lLmMsIGRsbHMvbXN2Y3J0L3RpbWUuYywKCSAgZGxscy9udGRsbC90ZXN0cy90aW1lLmMsIGRsbHMvbnRkbGwvdGltZS5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJLSBSdGxUaW1lRmllbGRzVG9UaW1lIHNob3VsZCBub3Qgbm9ybWFsaXplIHRoZSB0aW1lIGZpZWxkcwoJICBzdHJ1Y3R1cmUuIEluc3RlYWQgcmV0dXJuIGVycm9yIHdoZW4gaXQgaXMgZ2l2ZW4gYW4gdW5vcm1hbGl6ZWQKCSAgZGF0ZS4KCS0gVXNlIGJldHRlciBhbGdvcml0aG1zIGZvciBSdGxUaW1lVG9UaW1lRmllbGRzIGFuZAoJICBSdGxUaW1lRmllbGRzVG9UaW1lLiBSdGxUaW1lVG9UaW1lRmllbGRzIGlzIGFib3V0IDMgdGltZXMgZmFzdGVyLgoJLSBBZGQgdGVzdHMgZm9yIFJ0bFRpbWVGaWVsZHNUb1RpbWUuCgktIFN5c3RlbVRpbWVUb0ZpbGVUaW1lIG11c3QgZmFpbCBpZiBSdGxUaW1lRmllbGRzVG9UaW1lIGZhaWxzLiBVc2VycwoJICBvZiBTeXN0ZW1UaW1lVG9GaWxlVGltZSBtdXN0IGRvIGxpa2V3aXNlLgoJLSBSZW1vdmUgYSB0b2RvX3dpbmUgZnJvbSBTeXN0ZW1UaW1lVG9GaWxlVGltZSB0ZXN0cy4KCS0gU2luY2UgbXN2Y3J0Lm1rdGltZSBtdXN0IGFjY2VwdCB1bm5vcm1hbGl6ZWQgZGF0ZXMsIGl0IGNhbm5vdCB1c2UKCSAgU3lzdGVtVGltZVRvRmlsZVRpbWUgYW5kIGRvIHRoZSBjYWxjdWxhdGlvbnMgaXRzZWxmLgoJLSBBZGQgc29tZSB0ZXN0cyBmb3IgbWt0aW1lIGFjY2VwdGluZyB1bm5vcm1hbGl6ZWQgZGF0ZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJU3VwcG9ydCBhc3NpZ25pbmcgZm9udCBvYmplY3RzIHRvIG90aGVyIGZvbnQgb2JqZWN0cy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLAoJICBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zeXNsaW5rLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBXTkRQUk9DIGNhc3RzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IGZvcm1hdCBzdHJpbmcgaW4gV1NBQWRkcmVzc1RvU3RyaW5nQSgpLgoKCSogaW5jbHVkZS93aW5lL2xpc3QuaDogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRG9jdW1lbnQgdGhlIGxpbmtlZCBsaXN0IHN1cHBvcnQgY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgVEJOX1JFU1RPUkUgbm90aWZpY2F0aW9uLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglMaW1pdCBTdGFja1dhbGsgaXRlcmF0aW9ucyB0byBwcmV2ZW50IGluZmluaXRlIGxvb3AuCgoyMDA0LTExLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvcnNhZW5oLy5jdnNpZ25vcmUsCgkgIGRsbHMvcnNhZW5oL01ha2VmaWxlLmluLCBkbGxzL3JzYWVuaC9oYW5kbGUuYywgZGxscy9yc2FlbmgvaGFuZGxlLmgsCgkgIGRsbHMvcnNhZW5oL2ltcGxvc3NsLmMsIGRsbHMvcnNhZW5oL2ltcGxvc3NsLmgsIGRsbHMvcnNhZW5oL3JzYWVuaC5jLAoJICBkbGxzL3JzYWVuaC9yc2Flbmguc3BlYywgZGxscy9yc2FlbmgvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9yc2FlbmgvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvcnNhZW5oL3Rlc3RzL3JzYWVuaC5jLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluLCB0b29scy93aW5lLmluZjoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudGVkIGEgc3Vic3RhbnRpYWwgcGFydCBvZiByc2FlbmguZGxsLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWRldi1rZXJuZWwuc2dtbDoKCU1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCURvY3VtZW50IGhvdyBTRUggd29ya3MgaW4gV2luZS4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHVuaXggbG9jYWxlIHRvIGNvZGUgcGFnZSBtYXBwaW5nIGZvciBJU08tODg1OS0xNi4KCgkqIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgV1NBQWRkcmVzc1RvU3RyaW5ne0EsV30uCglBZGQgdGVzdHMgZm9yIFdTQUFkZHJlc3NUb1N0cmluZ3tBLFd9IGFuZCBXU0FTdHJpbmdUb0FkZHJlc3N7QSxXfS4KCUFkZCBUUkFDRXMgdG8gV1NBU3RyaW5nVG9BZGRyZXNze0EsV30uCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBJbnRlcm5ldEdldENvbm5lY3RlZFN0YXRlRXhBLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL3ByaW50Zi5jLCBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOgoJQW5ldXJpbiBQcmljZSA8d2luZUBzaGFkb3ZhbGQuZHluZG5zLm9yZz4KCS0gTW92ZSBwcmludGYgdGVzdHMgZnJvbSBzY2FuZi5jIHRvIHByaW50Zi5jIChhbmQgZml4IG9uZSBvbiB0aGUKCSAgd2F5KS4KCS0gQWRkIHNvbWUgbW9yZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBQYXRoQ2xlYW51cFNwZWMuCgoJKiBsaWJzL3dpbmUvbW1hcC5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCURpc2FibGUgbWVtb3J5IHJlc2VydmF0aW9uIGNvZGUgb24gRnJlZUJTRCwgd2hlcmUgaXQganVzdCBkb2Vzbid0Cgl3b3JrLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jLCBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gaW1wbGVtZW50IExvb2t1cFByaXZpbGVnZU5hbWUKCS0gY29ycmVjdCBMb29rdXBQcml2aWxlZ2VWYWx1ZSAoaGFkIGEgYnVmZmVyIG92ZXJydW4gYW5kIHNvbWV0aW1lcwoJICByZXR1cm5lZCBpbmNvcnJlY3QgTFVJRHMgZm9yIHdlbGwta25vd24gdmFsdWVzKQoJLSBtYWtlIEFsbG9jYXRlTG9jYWxseVVuaXF1ZUlkIGxlc3Mgb2J2aW91c2x5IGluY29ycmVjdAoJLSBhZGQgYSBidW5jaCBvZiB0ZXN0IGNhc2VzCgoyMDA0LTExLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC90ZXN0cy9jaGFuZ2UuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBicm9rZW4gdGhyZWFkIHN0YXJ0IHJvdXRpbmVzLgoKCSogd2luZG93cy9tc2dib3guYzogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCVByb3BlciBpbXBsZW1lbnRhdGlvbiBvZiBzeXNtb2RhbCBtZXNzYWdlIGJveGVzLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJRml4IHVwIGluaXRfZnAgdGVzdCBmb3IgZnJlb3Blbi4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIDMgbW9yZSBjdXN0b20gYWN0aW9uIHR5cGVzCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3NlY3VyaXR5LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUFsbG9jYXRlQW5kSW5pdGlhbGl6ZVNpZCBkb2VzIG5vdCB3b3JrIG9uIFdpbjk4LgoKCSogZGxscy9tc2Ntcy9wcm9maWxlLmMsIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXByb3ZlIHtVbmluc3RhbGwsSW5zdGFsbH1Db2xvclByb2ZpbGV7QSxXfS4KCUJldHRlciB0ZXN0cyBmb3IgdGhlc2UgZnVuY3Rpb25zLgoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBjb25zaWRlciBhIE1NU1lTRVJSX05PVFNVUFBPUlRFRCBmYWlsdXJlIGEgdGVzdCBmYWlsdXJlLgoKMjAwNC0xMS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL21ha2VfcmVxdWVzdHM6IFJlc3RvcmUgY2h1bmsgb2YgY29kZSBsb3N0IGluIHByZXZpb3VzIGNoYW5nZXMuCgoJKiBkbGxzL250ZGxsL3N5bmMuYzogSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJVHVuZSB0aGUgYmVoYXZpb3Igb2YgU2xlZXAoKSBhbmQgV2FpdHh4eCgpIHRvIG1vcmUgY2xvc2VseSByZXNlbWJsZQoJV2luZG93cyBiZWhhdmlvci4gIFRoZSBrZXkgaXMgdG8geWllbGQgaW4gYSBTbGVlcCBhbmQgaW4gYW55IFdhaXQgdGhhdAoJdGltZXMgb3V0LgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglEb3dubG9hZGluZyB0aGUgcGxhdGZvcm0gc2RrIGRvZXNuJ3QgcmVxdWlyZSBJRSBhbnkgbW9yZS4KCgkqIGRsbHMvd2lubW0vdGltZS5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglUaGUgU2xlZXAoMCkgaW4gdGhpcyBsb29wIGlzIGluY29ycmVjdCwgYW5kIHNob3VsZCBiZSByZW1vdmVkLiAgVGhpcwoJZml4ZXMgaVR1bmVzIGFuZCBhIGdhbWUgcmVwb3J0ZWQgYnkgY2hlLgoKCSogZGxscy93aW5lcHMvYml0bWFwLmMsIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU2NhbGUgdGhlIHBhdHRlcm5zIHNvIHRoYXQgdGhleSdyZSByZW5kZXJlZCBhdCAzMDBkcGkuCglDcmVhdGUgdGhlIGltYWdlIGRpY3Rpb25hcnkgb25jZSwgcmF0aGVyIHRoYW4gZXZlcnkgdGltZSB0aGUgUGFpbnRQcm9jCglpcyBjYWxsZWQgLSBzaG91bGQgc3BlZWQgcHJpbnRpbmcgdXAgc29tZXdoYXQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCVN0ZWZhbiBE9nNpbmdlciA8c3RlZmFuZG9lc2luZ2VyQGdteC5hdD4KCUFkZGVkIFdTQUFkZHJlc3NUb1N0cmluZ0EvVyBzdHVicy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBWaXRhbHkgTGlwYXRvdiA8bGF2QGV0ZXJzb2Z0LnJ1PgoJQWRkZWQgTVNLIHRpbWV6b25lIGluZm8uCgoJKiBkbGxzL3dpbnNvY2svcHJvdG9jb2wuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglNYWtlIHN1cmUgd2UgbWF0Y2ggb3V0cHV0IG9mIFdpbjJrIHByb3RvY29sIGVudW1lcmF0aW9uIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBDRVQgdGltZXpvbmUgaW5mby4KCgkqIGRsbHMvZ2RpL2JpdG1hcC5jLCBkbGxzL2dkaS9kaWIuYywgZGxscy9nZGkvdGVzdHMvYml0bWFwLmMsCgkgIGRsbHMveDExZHJ2L2RpYi5jOgoJTWljaGFlbCBLYXVmbWFubiA8aGFsbG9AbWljaGFlbC1rYXVmbWFubi5jaD4KCS0gRXh0ZW5kZWQgc3VwcG9ydCBmb3IgQklUTUFQQ09SRUlORk8gLyBCSVRNQVBDT1JFSEVBREVSIHN0cnVjdHVyZXMuCgktIEFsd2F5cyBjYWxjdWxhdGUgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb2xvciB0YWJsZS4KCS0gQ3JlYXRlQ29tcGF0aWJsZUJpdG1hcDogQ3JlYXRlIGEgRElCIHNlY3Rpb24gaWYgbmVjZXNzYXJ5LgoJLSBBZGRlZCBzb21lIHRlc3RzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBGYWJyaWNlIE3pbmFyZCA8bWVuYXJkLmZhYnJpY2VAd2FuYWRvby5mcj4KCUNoZWNrIHRoZSB0eXBlIG9mIGVycm9yIHJldHVybmVkIGJ5IFNIQ3JlYXRlRGlyZWN0b3J5RXhXLgoKCSogZGxscy9udGRsbC90aW1lLmM6IFJvZ2VyIE9sc29uIDx1NjBAY29tY2FzdC5uZXQ+CglBZGQgUGFjaWZpYyBTdGFuZGFyZCBUaW1lIChQU1QpIHRvIFRaX0lORk8uCgoyMDA0LTExLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy91c2VyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0YXJ0IHRoZSByZWJvb3QgcHJvY2VzcyBpbiBFeGl0V2luZG93c0V4LgoKCSogZGxscy9zaGRvY3Z3Ly5jdnNpZ25vcmUsIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncucmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURvd25sb2FkIHRoZSBNb3ppbGxhIEFjdGl2ZSBYIGNvbnRyb2wgb24gZGVtYW5kLgoKCSogZGxscy93aW5zb2NrL3Byb3RvY29sLmMsIGRsbHMvd2luc29jay90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay90ZXN0cy9wcm90b2NvbC5jLAoJICBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGluY2x1ZGUvd2luc29jazIuaDoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRmlsbCBXU0FQUk9UT0NPTF9JTkZPIHN0cnVjdHVyZXMgaW5zdGVhZCBvZiBQUk9UT0NPTF9JTkZPIHN0cnVjdHVyZXMuCglJbXBsZW1lbnQgV1NDRW51bVByb3RvY29scygpLgoJQWRkIHNvbWUgdGVzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgTmF0aXZlRm9udCBjb250cm9sIHRvIHVuaWNvZGUsIHVzZSBoYnJCYWNrZ3JvdW5kIGFzIGluIG5hdGl2ZS4KCgkqIGRsbHMvYWR2cGFjay9hZHZwYWNrLmMsIGRsbHMvYWR2cGFjay9hZHZwYWNrLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBhZHZwYWNrLkRvSW5mSW5zdGFsbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IHJldHJpZXZlIGluZm9QdHIgdHdpY2UgaW4gVG9vbGJhcldpbmRvd1Byb2MgZW50cnkuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUNyeXB0R2V0VXNlcktleTogU2V0IHJldHVybiBrZXkgaGFuZGxlIHRvIHplcm8gaW4gY2FzZSBvZiBmYWlsdXJlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU2VuZCBub3RpZmljYXRpb24gbWVzc2FnZXMgaW4gdGhlIGZvcm1hdCBkaWN0YXRlZCBieQoJaW5mb1B0ci0+bm90aWZ5Rm9ybWF0LgoKCSogdG9vbHMvTWFrZWZpbGUuaW46IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVB1dCAkKEZSRUVUWVBFTElCUykgYXMgdGhlIGxhc3QgcGFydCwgYXMgaXQgY2FuIGluY2x1ZGUgdGhlIGRpciBvZiBhbgoJb2xkZXIgV2luZSBpbnN0YWxsIHdoaWNoIGRvIG5vdCBoYXZlIHRoZSBzYW1lIGV4cG9ydHMgKHJlcG9ydGVkIGJ5Cglqb29rZSkuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVNldCB0aGUgY29ycmVjdCBsYXN0IGVycm9yIGluIEVudW1VSUxhbmd1YWdlc0EsIHdpdGggdGVzdHMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9zeXNjb2xvci5jOgoJV2lsbGlhbSBQb2V0cmEgWW9nYSBIIDx3aWxsaWFtcG9ldHJhQHlhaG9vLmNvbT4KCUFkZCBDT0xPUl9NRU5VSElMSUdIVCBhbmQgQ09MT1JfTUVOVUJBUiB0byB0aGUgc3lzdGVtIGNvbG9ycy4KCjIwMDQtMTAtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3BhaW50aW5nLmMsIGluY2x1ZGUvd2luLmgsCgkgIHdpbmRvd3MvbWVzc2FnZS5jOgoJR2V0IHJpZCBvZiB0aGUgV0lOX05FRURTX0JFR0lOUEFJTlQgZmxhZywgV2luZG93cyB3aWxsIGhhcHBpbHkgbG9vcAoJZm9yZXZlciB0b28gaWYgV01fUEFJTlQgaXMgbm90IGhhbmRsZWQgcHJvcGVybHkuCgoJKiBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUJhc2VkIG9uIHRoZSBsYXN0IDM2KyBtb250aHMgV2luZSBpcyByZWxlYXNlZCBvbmNlIGEgbW9udGggb24KCWF2ZXJhZ2UuCglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcyBhbmQgdHdlYWtzLgoKCSogZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfQ2EucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0NzLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9EYS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRGUucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0VuLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Fby5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRXMucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0ZpLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Gci5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSHUucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0l0LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9KYS5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfS28ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX05sLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Oby5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfUGwucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1B0LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9SdS5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfU2kucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1NrLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Tdi5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfVWsucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1dhLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9aaC5yYzoKCUl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglSZW1vdmUgRFNfU1lTTU9EQUwgZnJvbSBtc2dib3ggcmVzb3VyY2UuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgUkVHX0VYUEFORF9TWiBpbiBzZXRfcmVnaXN0cnlfdmFyaWFibGVzKCkuCglGaXggcHJvY2Vzc2luZyBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBhcmUgdG9vIGJpZyAoPjEwMjQKCWNoYXJhY3RlcnMpOiB0aGV5IHNob3VsZCBiZSB0cnVuY2F0ZWQsIG5vdCBpZ25vcmVkLgoKCSogdG9vbHMvYzJtYW4ucGwsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFsdGVyIHRoZSBmdW5jdGlvbnMgZGVjbGFyYXRpb24gb3JkZXIgb3IgcHJlZGVjbGFyZSB0aGVtIHNvIHBlcmwgY2FuCgljaGVjayB0aGUgcHJvdG90eXBlcy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvdGltZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCSNpZmRlZiBvdXQgdGhlIHRlc3RzIGlmIGNvbXBpbGluZyB3aXRoIHRoZSBQbGF0Zm9ybSBTREsgaGVhZGVycyBzaW5jZQoJdGhleSBhcmUgbWlzc2luZyBUSU1FX0ZJRUxEUy4KCgkqIGRsbHMvcnBjcnQ0L3Rlc3RzL2dlbmVyYXRlZC5jLCB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNSURMX1NUVUJfTUVTU0FHRS5VbmlxdWVQdHJDb3VudCBoYXMgYmVlbiByZW5hbWVkIGluIHRoZSBsYXRlc3QgU0RLIHNvCglpZ25vcmUgaXQuCgoyMDA0LTEwLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBZGQgc3R1YnMgZm9yIEVudW1QcmludFByb2Nlc3NvcnNBVy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RpbWUuYywgZGxscy9rZXJuZWwvdGltZS5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJLSBTaW1wbGlmeSB0aGUgY2FsY3VsYXRpb24gaW4gVElNRV9EYXlsaWdodENvbXBhcmVEYXRlOwoJLSBFeHBhbmQgdGhlIG51bWJlciBvZiBhcHBsaWNhYmxlIHRlc3QgY2FzZXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvaW5wdXQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHVwIHVzZXIzMi9pbnB1dC5jIHRlc3QsIHJlbW92ZSB0aGUgd3JvbmcgYXNzdW1wdGlvbiB0aGF0IGEKCXdpbmRvdyBhbHdheXMgcmVjZWl2ZXMgaW5wdXQgZm9jdXMgdXBvbiBjcmVhdGlvbi4KCgkqIGluY2x1ZGUvd2luaW5ldC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgc29tZSBleHRyYSBIVFRQX1FVRVJZIHZhbHVlcy4KCgkqIHdpbmRvd3MvdXNlci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglLaWxsIGFsbCB3aW5lIHByb2Nlc3NlcyB3aGVuIGRvaW5nIEV4aXRXaW5kb3dzRXguCgoyMDA0LTEwLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQuYzoKCVRvcmJq9nJuIEFuZGVyc3NvbiA8VG9yYmpvcm4uRS5BbmRlcnNzb25AdGlldG9lbmF0b3IuY29tPgoJRml4ZWQgc2l6ZSBjaGVjayBpbiBHZXREZXZpY2VEYXRhLgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJU3VwcG9zZWRseSBmaXggaHR0cCB0ZXN0IG9uIFdpbmRvd3MuCgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gVk9MVU1FX1JlYWRGQVRTdXBlcmJsb2NrOgoJLSBkbyBub3QgdGVzdCBvbiB0aGUgSk1QIGluc3RydWN0aW9uOiBtb3N0IGJvb3QgYmxvY2tzIGhhdmUgdGhhdAoJLSB0ZXN0IGluc3RlYWQgb24gdGhlICJGQVQiIHN0cmluZ3MgZmlyc3QsIGJlZm9yZSB0aGUgc2l6ZQoJICBjYWxjdWxhdGlvbgoJLSBkbyBzb21lIHBhcmFtZXRlciBjaGVja2luZyB0byBwcmV2ZW50IGFyaXRobWV0aWMgZXJyb3JzCgktIHVzZSBtZWFuaW5nZnVsIG5hbWVzIGluc3RlYWQgb2YgYmxvY2sgb2Zmc2V0cwoJKGJhc2VkIG9uIGEgcmVqZWN0ZWQgcGF0Y2ggZnJvbSBWaW5jZW50IELpcm9uKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJVXNlIFNIQ3JlYXRlRGlyZWN0b3J5RXggZnVuY3Rpb24gaW5zdGVhZCBvZiBkb2luZyBleHBsaWNpdCByZWN1cnNpdmUKCWRpcmVjdG9yeSBjcmVhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkIHRlc3QgZm9yIFNIQ3JlYXRlRGlyZWN0b3J5RXggZnVuY3Rpb24uCglGaXhlZCBzb21lIHR5cG9zLgoKMjAwNC0xMC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9xdWV1ZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVGFrZSBpbnRvIGFjY291bnQgd2luZG93IHZpc2liaWxpdHkgd2hlbiBzZWFyY2hpbmcgZm9yIGEgdGFyZ2V0IGZvciBhCgloYXJkd2FyZSBtb3VzZSBtZXNzYWdlLgoKCSogc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jOiBBZGRlZCBpc193aW5kb3dfdmlzaWJsZSBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJVXNlIGNvcnJlY3QgdHlwZSBpbnN0ZWFkIG9mIHZvaWQqIGluIGl0ZW0gbGlua2VkIGxpc3QuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Gci5yYzoKCUZhYnJpY2UgTeluYXJkIDxtZW5hcmQuZmFicmljZUB3YW5hZG9vLmZyPgoJU29tZSBGcmVuY2ggdHJhbnNsYXRpb25zIGFkZGVkLgoKCSogZGxscy9rZXJuZWwvdGltZS5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCS0gUmVvcmRlcmVkIHNvbWUgY29kZSBmcm9tIHRoZSBleGlzdGluZyBoZWxwZXIgX0dldFRpbWVab25lQmlhcyB0bwoJICBtYWtlIGl0IG1vcmUgZ2VuZXJhbCB1c2VmdWwgKGFuZCBjaGFuZ2VkIHRoZSBoZWxwZXIgbmFtZXMgdG8KCSAgVElNRV94eXopLgoJLSBNYWtlIEdldFRpbWVab25lSW5mb3JtYXRpb24gcmV0dXJuIHRoZSBjb3JyZWN0IHpvbmUgaWQgY29uc3RhbnRzLgoJLSBDaGFuZ2VkIHNvbWUgImNvbnN0IExQWF9ZX1oiIGRlY2xhcmF0aW9ucyB0byAiY29uc3QgWF9ZX1ogKiIuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBiYWQgbWVtb3J5IGFsbG9jYXRpb24gZm9yIHVuaWNvZGUgYnVmZmVyLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgR2V0QWNjZXB0TGFuZ3VhZ2VzQSB0ZXN0cyBmb3IgV2luOTguCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGbHVzaCBwZW5kaW5nIG1lc3NhZ2VzIGJlZm9yZSB0ZXN0aW5nIHBhaW50aW5nIG1lc3NhZ2Ugc2VxdWVuY2VzLgoKCSogZGxscy9tc3ZjcnQvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBNU1ZDUlRfbG9jYWx0aW1lKCkgcmV0dXJuIHRtX2lzZHN0ID0gMCB3aGVuIHRoZXJlIGFyZSBubyBkYXlsaWdodAoJdGltZSBjaGFuZ2VzIGluIHRoZSBsb2NhbCB0aW1lIHpvbmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCV9TSEV4cGFuZEVudmlyb25tZW50U3RyaW5ncyBzaG91bGQgcmV0dXJuIGlucHV0IHN0cmluZyBpZiBubyAlIGZvdW5kCgl0byBleHBhbmQsIGFuZCBzaG91bGQgY2FsbCBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXIGlmIGl0IGRvZXNuJ3QKCWhhbmRsZSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBkaXJlY3RseS4gIEJhc2VkIG9uIGEgcGF0Y2ggZnJvbSBEYW4KCUtlZ2VsLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgcHJvcGVyIHByb3RvdHlwZXMgZm9yIEdldENsYXNzTG9uZ1B0ckEvVyBmb3IgX1dJTjY0IGNhc2UuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1pbm9yIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9ob3RrZXkuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSB0eXBlc2FmZSBzaWduYXR1cmUgd2hlcmUgcG9zc2libGUuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVuYW1lIFNUQVRVU1dJTkRPV0lORk8gdG8gU1RBVFVTX0lORk8sIGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyCgljb250cm9scy4gRml4IHNvbWUgcHJvdG90eXBlcy4gQWx3YXlzIHBhc3MgaW5mb1B0ciBhcm91bmQuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNaW5vciBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgVW5pY29kZSBmdW5jdGlvbnMgd2hlcmUgcG9zc2libGUuCgoJKiBkbGxzL2FkdnBhY2svYWR2cGFjay5jLCBkbGxzL2FkdnBhY2svYWR2cGFjay5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBMYXVuY2hJTkZTZWN0aW9uKEV4KS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQ3J5cHRDcmVhdGVIYXNoOiBTZXQgcmV0dXJuZWQgaGFzaCBoYW5kbGUgdG8gemVybyBpbiBjYXNlIG9mIGZhaWx1cmUuCgoJKiBzZXJ2ZXIvZmQuYzogQWRkZWQgZmFsbGJhY2sgc3lzY2FsbHMgZm9yIGVwb2xsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21wci9tcHIucmMsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvb2xlMzJyZXMucmMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIucmMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCVVzZSBvbmx5IG9uZSAucmVzIGZpbGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy94MTFkcnYveHJlbmRlci5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGQgc3RyZXRjaGluZyBzdXBwb3J0IHRvIEFscGhhQmxlbmQuCgoyMDA0LTEwLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jb25zb2xlcy5zZ21sLCBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaTE4bi5zZ21sLCBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcG9ydGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lZGV2LWNvZGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVkZXYtZ3JhcGhpY2FsLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWRldi1rZXJuZWwuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lZGV2LW90aGVyZGVidWcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lZGV2LXdpbmRvd2luZy5zZ21sOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglSZW9yZ2FuaXppbmcgd2luZS1kZXZlbDoKCS0ga2lsbGluZyB0aGUgYWR2YW5jZWQgcGFydCAoYW5kIG1vdmluZyBpdHMgY2hhcHRlcnMgaW4gYm90aAoJICBkZXZlbG9waW5nIFdpbmUgYW5kIFdpbmUgYXJjaGkgcGFydHMpCgktIGNyZWF0aW5nIGEgbmV3IGJvb2sgb24gY29kaW5nIHByYWN0aWNlcyBmcm9tIGkxOG4uc2dtbCwgcGF0Y2hlcy5zZ21sCgkgIGFuZCBwb3J0aW5nLnNnbWwKCS0gY3JlYXRpbmcgYSBuZXcgYm9vayBvbiBzb21lIGRlYnVnZ2luZyBzdHJhdGVnaWVzIGZyb20gdGhlIG9sZAoJICBhZHZhbmNlZCBib29rIGFuZCBjdnMtcmVncmVzc2lvbi5zZ21sCgktIGNyZWF0aW5nIGEgbmV3IGJvb2sgb24gdGhlIGtlcm5lbCBtb2R1bGVzIChOVERMTCAmIEtFUk5FTDMyKSBmcm9tCgkgIGFyY2hpdGVjdHVyZS5zZ21sIC8gcmVsYXRlZCBETExzIGFuZCBhZGRyZXNzLXNwYWNlLnNnbWwsCgkgIGNvbnNvbGUuc2dtbCwgdGhyZWFkaW5nLnNnbWwKCS0gY3JlYXRpbmcgYSBuZXcgYm9vayBvbiB0aGUgd2luZG93aW5nIGZyb20gYXJjaGl0ZWN0dXJlLnNnbWwgLyBVU0VSMzIKCSAgYW5kIHJlbGF0ZWQKCS0gY3JlYXRpbmcgYSBuZXcgYm9vayBvbiB0aGUgZ3JhcGhpY2FsIHBhcnRzIGZyb20gYXJjaGl0ZWN0dXJlLnNnbWwgLwoJICBHREkzMiBhbmQgcmVsYXRlZAoJT3RoZXIgY2hhbmdlczoKCS0gcmVtb3ZlZCBsaXN0IG9mIERMTHMgYW5kIHRoZWlyIHJvbGUgKGZyb20gdGhlIG1vZHVsZXMgb3ZlcnZpZXcpCgktIHJlbW92ZWQgaW4gWDExIGtleWJvYXJkIG1hcHBpbmcgc2VjdGlvbiB0aGUgcGFydCByZWxhdGVkIHRvIHN1Ym1pdCBhCgkgIHBhdGNoCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uaCwgZGxscy93aW5tbS93aW5lb3NzL2RzY2FwdHVyZS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvZHNyZW5kZXIuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTcGxpdCB1cCBhdWRpby5jIGludG8gdGhyZWUgc2VwYXJhdGUgLmMgZmlsZXM6CglhdWRpby5jOiBPU1MgZnVuY3Rpb25zIGFuZCB3YXZlSW4gYW5kIHdhdmVPdXQgZHJpdmVyIGZ1bmN0aW9ucy4KCWRzY2FwdHVyZS5jOiBkaXJlY3Qgc291bmQgY2FwdHVyZSBkcml2ZXIgaW1wbGVtZW50YXRpb24uCglkc3JlbmRlci5jOiBkaXJlY3Qgc291bmQgcmVuZGVyZXIgZHJpdmVyIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGltZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSB0ZXN0cyBmb3IgdGltZSBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9saXN0Ym94LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIHRoZSBod25kIHNlbGYgaW50byB0aGUgbGlzdGJveCBMQl9ERVNDUiBzdHJ1Y3QuCglVc2UgcHJvcGVyIHR5cGVzL25hbWVzIGluIGFsbCBjYXNlcy4KCUZpeCBzb21lIGJhZCBpbmRlbnRhdGlvbi4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJd2luIDl4IGRvZXNuJ3QgYWx3YXlzIHN1cHBvcnQgd2F2ZU91dEdldERldkNhcHNXIHNvIGRvbid0IGdlbmVyYXRlIGFuCgllcnJvciBmb3IgTU1TWVNFUlJfTk9UU1VQUE9SVEVELgoJUGxheSBvbmUgc2Vjb25kIG9mIHNpbGVuY2UgZm9yIGVhY2ggc291bmQgY2FyZCB3aGVuIG5vdCBpbiBpbnRlcmFjdGl2ZQoJbW9kZS4KCgkqIGRsbHMvdXNlci9idXR0b24uYywgZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgYnV0dG9uIHJldHVybiBleGFjdGx5IHRoZSBzYW1lIGRpYWxvZyBjb2RlcyBhcyBXaW5kb3dzIGRvZXMuCglBZGQgYSB0ZXN0IGNhc2UuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi92ZXJzaW9uLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglVcGRhdGUgc2hlbGwzMidzIHZlcnNpb24gdG8gV2luWFAgbGV2ZWwuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglWZXJpZnlDZXJ0aWZpY2F0aW9uIGlzIG5vdCBhbHdheXMgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6IENvbnZlcnQgQ29tbUNvbmZpZ0RpYWxvZyB0byBVbmljb2RlLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogVGhvcnN0ZW4gS2FuaSA8YmVlYml4QGdteC5uZXQ+CglVc2UgYWRkcmVzcyBvZiB0YWJfaXRlbS5leHRyYSB3aGVuIGJ1aWxkaW5nIGRyYXdpdGVtc3RydWN0LgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGVsbHBhdGguYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeCBDU0lETF9DT05UUk9MUyBhbmQgQ1NJRExfUFJJTlRFUlMgUElETCB0eXBlcywgYW5kIHVwZGF0ZSB0ZXN0cyBub3cKCXRoYXQgdGhleSBwYXNzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL3NlcmlhbHVpL01ha2VmaWxlLmluLAoJICBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU0VSSUFMVUk6IGNvbnZlcnQgdG8gVW5pY29kZS4KCgkqIHRvb2xzL3dpbmFwaS9jX2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGkvY19wYXJzZXIucG0sCgkgIHRvb2xzL3dpbmFwaS9jX3R5cGUucG0sIHRvb2xzL3dpbmFwaS9jb25maWcucG0sCgkgIHRvb2xzL3dpbmFwaS9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpL21ha2VfZmlsdGVyLAoJICB0b29scy93aW5hcGkvbWFrZV9wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXIsCgkgIHRvb2xzL3dpbmFwaS9vcHRpb25zLnBtLCB0b29scy93aW5hcGkvdGVzdHMucG0sIHRvb2xzL3dpbmFwaS90eXBlLnBtLAoJICB0b29scy93aW5hcGkvdXRpbC5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVja19vcHRpb25zLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2NsZWFudXAsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX2VkaXRvci5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9zdGF0ZW1lbnRzLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX21vZHVsZV91c2VyLnBtLCB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBmdW5jdGlvbiBwcm90b3R5cGVzLgoJQ2hhbmdlIHRoZSB3YXkgZnVuY3Rpb25zIGFyZSBjYWxsZWQgYW5kIGVpdGhlciBhbHRlciB0aGVpciBkZWNsYXJhdGlvbgoJb3JkZXIgb3IgcHJlZGVjbGFyZSB0aGVtIHNvIHBlcmwgY2FuIGNoZWNrIHRoZSBwcm90b3R5cGVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDb3JyZWN0bHkgdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgR2V0VGltZVpvbmVJbmZvcm1hdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUltcGxlbWVudCBwcm9wZXIgR1dMX1NUWUxFIGhhbmRsaW5nLCBwcm9wZXIgcmVhY3Rpb24gdG8gc3R5bGUgY2hhbmdlcy4KCU1lcmdlIHt7SW5jLERlY31yZW1lbnQsUmVzZXR7VXAsRG93bn19RmllbGQgaW50byBvbmUgbWV0aG9kLiBGaXggYQoJYnVuY2ggb2YgYnVncyBpbiB0aGUgcHJvY2Vzcy4gIEltcGxlbWVudCBEVE1fW0dTXUVUTUNGT05ULiBJbmRlbnRhdGlvbgoJZml4ZXMsIGNsZWFudXBzLgoKMjAwNC0xMC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3ZpZXcvQ3MucmMsIHByb2dyYW1zL3ZpZXcvdmlld3JjLnJjLCBwcm9ncmFtcy93Y21kL0NzLnJjLAoJICBwcm9ncmFtcy93Y21kL3djbWRyYy5yYywgcHJvZ3JhbXMvd2luZWNmZy9Dcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Dcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Dcy5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYywgcHJvZ3JhbXMvd2luZW1pbmUvQ3MucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmMsIHByb2dyYW1zL3dpbmhlbHAvQ3MucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvcnNyYy5yYzoKCURhdmlkIEtyZWRiYSA8a3JlZGJhQGlib3QuY2FzLmN6PgoJTmV3IEN6ZWNoIHJlc291cmNlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQXZvaWQgY29weWluZyBpbnZhbGlkIGRhdGEgb24gZXJyb3IuCgoJKiB0b29scy93aW5lZHVtcC9mdW5jdGlvbl9ncmVwLnBsOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBzdHJpbmcgaGFuZGxpbmcuCglFbmFibGUgcGVybCB3YXJuaW5ncwoJQWRkIGEgcHJvcGVyIC0taGVscCBvcHRpb24gYW5kIHVzYWdlLgoKCSogdG9vbHMvd2luYXBpL21ha2VfZmlsdGVyX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS9vcHRpb25zLnBtOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIHVzYWdlIGZvciBub24tYm9vbGVhbiBvcHRpb25zLCBhbHdheXMgcHJpbnQgdGhlCglkZXNjcmlwdGlvbi4gVGhpcyBmaXhlcyB0aGUgb3V0cHV0IG9mICdtYWtlX2ZpbHRlciAtLWhlbHAnLgoKCSogaW5jbHVkZS9pbWFnZWhscC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUluY2x1ZGUgd2ludHJ1c3QuaC4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgZGVmaW5lIGZvciBDVVJfQkxPQl9WRVJTSU9OLgoKCSogZGxscy91c2VyL2VkaXQuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSBwcm9wZXIgdHlwZXMvbmFtZXMgaW4gYWxsIGNhc2VzLiBGaXggc29tZSBpbmRlbnRhdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL3RpbWUuYywgZGxscy9tc3ZjcnQvdGltZS5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQ29ycmVjdGx5IHVzZSB0aGUgcmV0dXJuZWQgdmFsdWUgZnJvbSBHZXRUaW1lWm9uZUluZm9ybWF0aW9uLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIFJlbW92ZSBib2d1cyB1c2Ugb2YgblN0YXRDb3VudGVyIGFuZCBoT2xlQXV0MzIgaW4gQ29TZXRTdGF0ZS4KCS0gUmVtb3ZlIGEgY29tbWVudCBhYm91dCBwcm90ZWN0aW5nIHBlciB0aHJlYWQgZGF0YSBieSBhIGNyaXRpY2FsIHNlY3Rpb24uCgoJKiBpbmNsdWRlL3RsaGVscDMyLmg6IFBldGVyIFF1aXJpbmcgPHBxdWlyaW5nQGhvdG1haWwuY29tPgoJQWRkZWQgSEYzMl9ERUZBVUxUIGFuZCBIRjMyX1NIQVJFRCB2YWx1ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIG9ubHkgVW5pY29kZSBmdW5jdGlvbnMsIGl0IG1ha2VzIGl0IGVhc2llciB0byBzZWUgd2UgYXJlIGZ1bGx5CglVbmljb2RlIGNvbXBsaWFudC4KCgkqIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWw6IFNjb3R0IFJpdGNoaWUgPHNjb3R0QG9wZW4tdm90ZS5vcmc+CglSZXZpc2VkIFdpbmUgVXNlciBHdWlkZSBpbnRyb2R1Y3Rpb24uCgoJKiBkbGxzL2tlcm5lbC9lbnZpcm9uLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9lbnYuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBmaXhlZCB0aGUgd2F5IGxlbmd0aCBvZiBtc3ZjcnQgcnVudGltZSBpbmZvIGlzIHBhc3NlZAoJLSBhbHdheXMgcmV0dXJuIGEgTlVMTCBydW50aW1lIGluZm8gYnVmZmVyIGluIGNoaWxkIGlmIHBhcmVudCdzCgkgIHJ1bnRpbWUgaW5mbyBpcyBOVUxMCgktIGZpeGVkIHR5cG8gaW4gc3RhcnR1cGluZm8gc2l6ZQoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvbWl4ZXIuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBjb25zaWRlciBubyBkcml2ZXIgYSB0ZXN0IGZhaWx1cmUuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9uJ3QgY29uc2lkZXIgYSBkZXZpY2UgaW4gdXNlIGEgZmFpbHVyZS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzogU2FtaSBBYXJpbyA8c2FtaS5hYXJpb0BzdXJmZXUuZmk+CglDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBTSEdldERlc2t0b3BGb2xkZXIgY2FsbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERvbid0IGZpbGwgaW4gYW55IG1vcmUgaW5mb3JtYXRpb24gdGhhbiBuYXRpdmUgZG9lcyBmb3Igbm90aWZpY2F0aW9ucy4KCS0gU3RvcmUgaGl0IGNvZGUgaW4gYSBzaWduZWQgaW50ZWdlciBzbyB0aGF0IHdlIGNhbiBzZWUgd2hldGhlciBpdCBpcwoJICBsZXNzIHRoYW4gemVyby4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEb24ndCBsZWFrIG1lbW9yeSB3aGVuIGFuIGFwcCBzZW5kcyBUVE1fU0VUVElUTEUgdHdpY2UuCgktIEFuIGxQYXJhbSBvZiAwIGluZGljYXRlcyB0aGF0IHRoZSB0aXRsZSBzaG91bGQgYmUgcmVtb3ZlZC4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbjogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gQWRkIGluZm8gdGhhdCB0aGUgd2luZSBjb25maWcgZmlsZSBoYXMvbmVlZHMgYSBoZWFkZXIgbGluZS4KCS0gUmVtb3ZlIHNvbWUgaW5mb3MgcmVnYXJkaW5nIGVudHJpZXMgd2hpY2ggd2VyZSByZW1vdmVkIGxhdGVseSBmcm9tCgkgIHRoZSBjb25maWcgZmlsZS4KCgkqIGRsbHMvc2V0dXBhcGkvZGlyaWQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJVXNlIHNoZWxsMzIgdG8gZ2V0IHRoZSB1c2VyIHByb2ZpbGUgZGlyLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglVcGRhdGUgY29tbWVudCBmb3IgTHNhT3BlblBvbGljeS4KCjIwMDQtMTAtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2F2aWZpbDMyL2V4dHJhY2h1bmsuYywgZGxscy9jb21jdGwzMi90ZXN0cy9pbWFnZWxpc3QuYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwKCSAgZGxscy9rZXJuZWwvaGVhcC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6CglDb252ZXJ0ZWQgbW9yZSBvZiB0aGUgKFVuKVJlZ2lzdGVyVHlwZUxpYiBjb2RlIHRvIFVuaWNvZGUuCglGYWN0b3JlZCBvdXQgc29tZSBjb21tb24gcm91dGluZXMuCgoJKiB3aW5kb3dzL21zZ2JveC5jOgoJUmVtb3ZlZCB3cm9uZyBGSVhNRSBmb3IgTUJfQVBQTE1PREFMIChyZXBvcnRlZCBieSBJdmFuIExlbyBQdW90aSkuCgoJKiB0b29scy90ZXN0cnVuOiBHZXQgcmlkIG9mIHRoaXMgb2Jzb2xldGUgc2NyaXB0LgoKCSogdG9vbHMvd2luZS5pbmY6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVNoZWxsIHJlZ2lzdHJ5IGVudHJpZXMgYXJlIG5vdyBjcmVhdGVkIGJ5IHNoZWxsMzIsIGRvbid0IGhhcmRjb2RlIHRoZW0KCWluIHdpbmUuaW5mLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCByZXJlZ2lzdGVyIFByb2dJZHMgb3ZlciBhbmQgb3ZlciwgYWxzbyB3cml0ZSBvdXQgdGhlIG1haW4ga2V5CgliZWZvcmUgdHJ5aW5nIHRvIHJlZ2lzdGVyIHRoZSBQYXJlbnQuIFRoaXMgYXZvaWRzIGxvb3BzIGlmIGEgUHJvZ0lkCgloYXMgaXRzZWxmIGFzIGEgcGFyZW50IG9yIHRoZXJlIGlzIGEgbG9vcCBpbiBkZXBlbmRlbmNpZXMuCgoJKiB0b29scy93aW5lY29uZjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgZnVuY3Rpb24gcHJvdG90eXBlcy4KCUNoYW5nZSB0aGUgd2F5IGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGFuZCB0aGVpciBkZWNsYXJhdGlvbiBvcmRlciBzbwoJcGVybCBjYW4gY2hlY2sgdGhlIHByb3RvdHlwZXMuCgoJKiBkbGxzL3BzYXBpL3Rlc3RzL21vZHVsZS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCBHZXRNb2R1bGVCYXNlTmFtZUEgdGVzdHMgZm9yIFdpblhQLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBVbmljb2RlIGZ1bmN0aW9ucyBpbiBSZWdpc3RlclR5cGVMaWIuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJVktfMC05IGFuZCBWS19BLVogYXJlIG5vdCBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIGhlYWRlcnMsIHJlbW92ZWQgdGhlbQoJKHNwb3R0ZWQgYnkgRnJhbmNvaXMgR291Z2V0KS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogQXZvaWQgY29weWluZyBpbnZhbGlkIGRhdGEgb24gZXJyb3IuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxwYXRoLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBmdW5jdGlvbiBwb2ludGVyIGRlY2xhcmF0aW9ucyBzbyBNU1ZDIGxpa2VzIHRoZW0uCglDU0lETF9QUk9GSUxFUyBpcyBub3QgZGVmaW5lZCBpbiB0aGUgV2luZG93cyBTREsuCglzbnByaW50ZiBhbmQgc3RyY2FzZWNtcCBkb24ndCBleGlzdCBvbiBXaW5kb3dzLiBSZXBsYWNlIHRoZW0gd2l0aAoJd25zcHJpbnRmQSBhbmQgbHN0cmNtcGlBIHJlc3BlY3RpdmVseS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJRml4ZWQgZGVmaW5pdGlvbiBvZiBNQVhfQ09NUFVURVJOQU1FX0xFTkdUSCAoc3BvdHRlZCBieSBNaWtlCglNY0Nvcm1hY2spLgoKCSogZGxscy9tc2Ntcy9oYW5kbGUuYywgZGxscy9tc2Ntcy9tc2Ntc19tYWluLmMsIGRsbHMvbXNjbXMvcHJvZmlsZS5jLAoJICBkbGxzL21zY21zL3Rlc3RzL3Byb2ZpbGUuYywgaW5jbHVkZS9pY20uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRmxlc2ggb3V0IHRoZSBpY20uaCBoZWFkZXIgKGFkZCBDT0xPUk1BVENIU0VUVVAgJiBjbykgc28gaXQgaXMKCW5lY2Vzc2FyeSB0byBmaXJzdCBpbmNsdWRlIHdpbnVzZXIuaCBsaWtlIG9uIFdpbmRvd3MuCgoJKiB0b29scy93aW5hcGkvY19wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpL21zdmNtYWtlciwgdG9vbHMvd2luYXBpL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmV2aWV3IGFuZCBmaXggcmVndWxhciBleHByZXNzaW9ucyBvZiB0aGUgZm9ybSAvXmZvb3xiYXIkLy4KCVJlcGxhY2UgcmVndWxhciBleHByZXNzaW9ucyB3aXRoIHNpbXBsZSBzdHJpbmcgY29tcGFyaXNvbnMgd2hlcmUKCXBvc3NpYmxlLgoJVXNlICcoPzpzdWJyZWdleHApJyBpbnN0ZWFkIG9mICcoc3VicmVnZXhwKScgd2hlcmV2ZXIgcG9zc2libGUuCgknZGxscy9nZGknIGRvZXMgbm90IGhhdmUgYSB3aW4xNmRydiBzdWJkaXJlY3RvcnkgYW55bW9yZSBzbyBzaW1wbGlmeQoJcmVndWxhciBleHByZXNzaW9ucyBhY2NvcmRpbmdseS4KCgkqIGRsbHMva2VybmVsL2hlYXAuYywgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL3NlbGVjdG9yLmMsCgkgIGRsbHMva2VybmVsL3RodW5rLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZXJlIGlzIG5vIHBvaW50IG1ha2luZyAnLS1yZWdpc3RlcicgZnVuY3Rpb25zIHN0ZGNhbGwgc28ganVzdAoJaW1wbGVtZW50IHRoZW0gYXMgY2RlY2wuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGaXhlZCBHZXRBY2NlcHRMYW5ndWFnZXNBIHRlc3RzIGZvciBXaW5YUC4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC90ZXN0cy90aW1lLmMsIGRsbHMvbnRkbGwvdGltZS5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQ29ycmVjdCB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIHllYXIgZm9yIHRoZSAzMSdzdCBvZiBEZWNlbWJlciBvZiAyMDAwCglhbmQgZXZlcnkgNDAwIHllYXJzIGFmdGVyIHRoYXQuIEFkZCBhIHRlc3QgdXNlZCB0byBmaW5kIHRoaXMgYnVnLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeCBpbmRlbnRpbmcgb2YgbGFzdCBwYXRjaCAodGFicyBpbnN0ZWFkIG9mIHNwYWNlcykuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hlbGxsaW5rLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciBjcmVhdGluZyBlbXB0eSBzaGVsbGxpbmsgZmlsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdWRpdCB0aGUgRGF0ZSBUaW1lIENvbnRyb2wuIFVuaWNvZGlmaWNhdGlvbi4KCVR5cGUgc2FmZSBmdW5jdGlvbnMgKHBhc3MgaW5mb1B0ciBhbmQgdHlwZSBzYWZlIHZhbHVlcyBhcm91bmQpLgoJU29tZSBjbGVhbnVwIGFuZCBpbmRlbnRhdGlvbiBmaXhlcy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kX3Rlc3QuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBjb25zaWRlciBhIGJhZCBmb3JtYXQgYW4gZXJyb3IgdW5sZXNzIHRoZSBjYXBhYmlsaXRpZXMgc2F5IGl0CglzaG91bGQgYmUgc3VwcG9ydGVkLgoJRG9uJ3QgY29uc2lkZXIgYSBkZXZpY2UgYWxyZWFkeSBpbiB1c2UgYW4gZXJyb3IuCgoyMDA0LTEwLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CgktIFNIQ3JlYXRlRGlyZWN0b3J5IHNob3VsZCBjcmVhdGUgaW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVzIGlmCgkgIG5lY2Vzc2FyeS4KCS0gUmVtb3ZlIGV4dHJhIGJvb2xlYW4gcGFyYW1ldGVyIGluIFNITm90aWZ5TW92ZUZpbGUgYXMgaXQgaXMgbm90CgkgIHVzZWQuCgktIFVzZSBpbiBTSEZpbGVPcGVyYXRpb24gdGhlIGZ1bmN0aW9uIFNITm90aWZ5Q3JlYXRlRGlyZWN0b3J5IGluc3RlYWQKCSAgb2YgU0hDcmVhdGVEaXJlY3RvcnlFeCBhcyBpdCBkb2VzIG5vdCBhbnltb3JlIHdoYXQgaXMgbmVlZGVkIGhlcmUuCgktIEZpeCBzZXZlcmFsIHVuc2lnbmVkL3NpZ25lZCBtaXNtYXRjaCB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3RhbmRhcmRpemUgb24gJyVsb25nIC0tcG9pbnRlcicuCglVcGRhdGUgaXQgdG8gbWF0Y2ggdGhlIGxhdGVzdCBzb3VyY2UuIEZpeGVzIG1hbnkgd2luYXBpX2NoZWNrCgl3YXJuaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1vbnRoY2FsX1NldFJhbmdlOiBTZXQgcHJvcGVyIHZhbHVlIGZvciBtaW4gZGF0ZS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgZW52IHZhbHVlcyBmcm9tIGNvbmZpZywgdGhleSBhcmUgbm93IG1haW50YWluZWQgaW4gdGhlCglyZWdpc3RyeS4KCgkqIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3RfbWFpbi5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zY2F0LmgsCgkgIGluY2x1ZGUvd2luY3J5cHQuaCwgaW5jbHVkZS93aW50cnVzdC5oLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggc29tZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrOgoJQWRkIG1zY2F0LmggYW5kIHdpbnRydXN0Lmg7IHVwZGF0ZSB3aW5jcnlwdC5oLgoJRml4IHRoZSBDcnlwdENBVEFkbWluQWNxdWlyZUNvbnRleHQoKSBhbmQgV2luVmVyaWZ5VHJ1c3QoKSBwcm90b3R5cGVzCglzbyB0aGV5IHVzZSB0aGUgcHJvcGVyIHR5cGVzLgoJVXBkYXRlIHRoZSB3aW50cnVzdCBzZWN0aW9uIG9mIHdpbjMyLmFwaS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgcmVtb3ZlIFdTX0JPUkRFUiBzdHlsZSBmcm9tIENvbWJvQm94RXggY29udHJvbC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CgktIERvbid0IGRvdWJsZS1xdW90ZSBhbiBhbHJlYWR5IGRvdWJsZS1xdW90ZWQgYXJndW1lbnQuCgktIFByb3Blcmx5IGluY3JlbWVudCB0aGUgZm10IHBvaW50ZXIuCgoJKiBkbGxzL2QzZDkvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwgZGxscy93aW5lZDNkL2RldmljZS5jLAoJICBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLCBkbGxzL3dpbmVkM2Qvc3RhdGVibG9jay5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUltcGxlbWVudCB0aGUgYmVnaW5uaW5ncyBvZiB0aGUgc3RhdGVibG9jayBjbGFzcywgYW5kIGEgZmlyc3QgbWV0aG9kCgl0byB1c2UgaXQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogVGhvcnN0ZW4gS2FuaSA8YmVlYml4QGdteC5uZXQ+CglEb24ndCBhZGQgZXh0cmEgT0ZGU0VUX1gvWSB0byB0aGUgY2FsY3VsYXRpb24gb2YgcmNCaXRtYXAudG9wL2xlZnQsCglqdXN0IHVzZSBHZXRTeXN0ZW1NZXRyaWNzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXYXJuIGFib3V0IGltcGxlbWVudGluZyBhIC1yZWdpc3RlciBmdW5jdGlvbiBhcyBzdGRjYWxsLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgc3VwcG9ydCBmb3IgaW5jbHVkZS9tc3ZjcnQuIEZpeGVzIGEgYnVuY2ggb2Ygc3B1cmlvdXMgd2FybmluZ3MuCglSZW1vdmUga2x1ZGdlcyBmb3Iga2VybmVsX3ByaXZhdGUuaCwgZ2RpX3ByaXZhdGUuaCwgbnRkbGxfbWlzYy5oLAoJdHNfeGxpYi5oLCB4MTFkcnYuaCBhbmQgeDExZm9udC5oLiBUaGV5IGFyZSBub3QgbmVlZGVkIGFueW1vcmUuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglUcmFpbGluZyB3aGl0ZSBzcGFjZSBjbGVhbnVwLgoJQWRkIElDbGFzc0ZhY3RvcnktPkNyZWF0ZUluc3RhbmNlIGFnZ3JlZ2F0aW9uIGNoZWNrcy4KCUlJRF9JRGlyZWN0U291bmRDYXB0dXJlIGFuZCBJSURfSURpcmVjdFNvdW5kQ2FwdHVyZTggYXJlIHNhbWUgc28KCXJlbW92ZSByZWR1bmRhbnQgY2hlY2suCglBbGxvY2F0ZSBjYXB0dXJlIGJ1ZmZlciBmb3IgaHcgZHJpdmVyIGlmIG5lY2Vzc2FyeS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQ2hhbmdlU2VydmljZUNvbmZpZzJBIHVzaW5nIENoYW5nZVNlcnZpY2VDb25maWcyVy4KCgkqIGRsbHMvc2hlbGwzMi9yZWdzdnIuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaCwgZGxscy9zaGVsbDMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3Rlc3RzL3NoZWxscGF0aC5jLAoJICBpbmNsdWRlL3dpbnVzZXIuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gdGhlIGNvcnJlY3QgcmVnaXN0cnkgbG9jYXRpb24gdG8gb3ZlcnJpZGUgaXMgVXNlciBTaGVsbCBGb2xkZXJzLCBub3QKCSAgU2hlbGwgRm9sZGVycwoJLSBpZiBVc2VyIFNoZWxsIEZvbGRlcnMgZG9lc24ndCBleGlzdCBpbiBIS0NVLCBIS0xNIHNob3VsZCBiZSB0cmllZAoJLSBTSEdldFNwZWNpYWxGb2xkZXJQYXRoIHNob3VsZCBjYWxsIFNIR2V0Rm9sZGVyUGF0aCwgbm90IHZpY2UtdmVyc2EKCS0gdGhlIGRlZmF1bHQgdmFsdWVzIHNob3VsZCBiZSBsb2NhbGl6YWJsZQoJLSBzb21lIG9mIHRoZSBwYXJhbWV0ZXIgY2hlY2tpbmcgYW5kIHJldHVybmVkIExQSVRFTUlETElTVHMgd2VyZSBhIGJpdAoJICBvZmYKCgkqIHRvb2xzL21ha2VfcmVxdWVzdHM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGVjbGFyZSBET19EVU1QX0ZVTkMoKSBiZWZvcmUgY2FsbGluZyBpdCBhbmQgY2FsbCBub3JtYWxseSBzbyB0aGF0CglwZXJsIGNhbiBjaGVjayBpdHMgcHJvdG90eXBlLgoKCSogdG9vbHMvbWFrZV9hdXRob3JzOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVN0cmljdGlmaWVkLgoKCSogZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpb2lvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIEhBVkVfTElCQVVESU9JT19NSURJIGFuZCBMSUJBVURJT0lPX01pZGlJbml0KCkuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5zcGVjLCBkbGxzL2RiZ2hlbHAvcGF0aC5jLAoJICBkbGxzL2RiZ2hlbHAvc291cmNlLmMsIGRsbHMvZGJnaGVscC90eXBlLmMsIHRvb2xzL3dpbmFwaS93aW4zMi5hcGk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgZGVjbGFyYXRpb24gb2YgU3ltRW51bVN5bWJvbHMoKSBpbiBkYmdoZWxwLnNwZWMuCglVc2UgUFZPSUQgaW5zdGVhZCBvZiB2b2lkKiBmb3IgY29uc2lzdGVuY3kuCglVcGRhdGUgdGhlIGRiZ2hlbHAgc2VjdGlvbiBpbiB3aW4zMi5hcGkuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2UgdGhlICd3cm9uZyBhcmd1bWVudCBjb3VudCcgd2FybmluZyBjbGVhcmVyIHdoZW4gZGVhbGluZyB3aXRoIGxvbmcKCXZzLiAibG9uZyBsb25nIiBpc3N1ZXMuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQ29ycmVjdCB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIHllYXIgZm9yIHRoZSAzMSdzdCBvZiBEZWNlbWJlciBvZiBsZWFwCgl5ZWFycy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC90aW1lLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CgktIG1rdGltZSBzaG91bGQgY29tcHV0ZSB0aGUgdG1fd2RheSwgdG1feWRheSBhbmQgcmVub3JtYWxpemUgdGhlCgkgIG90aGVyIGZpZWxkcyBvZiB0aGUgc3VwcGxpZWQgdG0gc3RydWN0dXJlLgoJLSBhZGQgcHJvdG90eXBlIGRlY2xhcmF0aW9ucyBmb3IgdGhlIHRpbWUgZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IHRoZSBkYXRlIG9mIHRoZSBjb21wbGV0ZW5lc3MgYXVkaXQuCgoJKiBpbmNsdWRlL3dpbnN2Yy5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgU0VSVklDRV9OT19DSEFOR0UgYW5kIFJlZ2lzdGVyU2VydmljZUN0cmxIYW5kbGVyRXguCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGVzY2FwZWQgcXVvdGUgaGFuZGxpbmcgaW4gc3RyaW5ncy4KCVByb3Blcmx5IGhhbmRsZSBDIGFuZCBDKysgY29tbWVudCBwYXJzaW5nLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJVmFyUGFyc2VOdW1Gcm9tU3RyOiBLZWVwIHplcm9zIGFmdGVyIGRlY2ltYWwgcG9pbnQsIGNvcnJlY3RseSBrZWVwCgl0cmFjayBvZiB0cmFpbGluZyB6ZXJvcyBpbiBhIGRlY2ltYWwgbnVtYmVyLgoJVmFyTnVtRnJvbVBhcnNlTnVtOiBEb24ndCBlcnJvciBvbiBkZWNpbWFsIGV4cHJlc3Npb25zIGZvciB6ZXJvLgoKCSogaW5jbHVkZS9zaGVsbGFwaS5oOiBSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZCBwcm90b3R5cGUgZm9yIFNIRnJlZU5hbWVNYXBwaW5ncy4KCgkqIGRsbHMveDExZHJ2L3dpbnRhYi5jOiBSb2JlcnQgTm9ydGggPDdvd25xMGs0MDJAc25lYWtlbWFpbC5jb20+CglGaXggV1RJbmZvQSBpbiB3aW50YWIuYyBzbyBpdCBjYW4gbm93IHRha2UgbHBPdXRwdXQgPT0gTlVMTCwgYXMgcGVyCglzdGFuZGFyZC4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF1ZGl0IHRoZSBtb250aCBjYWxlbmRhci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERyYXcgd2l0aCBJTERfVFJBTlNQQVJFTlQgaW5zdGVhZCBvZiBJTERfTk9STUFMIHRvIGRyYXcgYml0bWFwcyBmcm9tCgkgIHRoZSBuYXRpdmUgc2hlbGwgaW1hZ2UgbGlzdCBwcm9wZXJseSAocmVwb3J0ZWQgYnkgVGhvcnN0ZW4gS2FuaSkuCgktIFJld3JpdGUgVE9PTEJBUl9Ob3RpZnlGb3JtYXQgdG8gYXZvaWQgc2lkZS1lZmZlY3RzLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBDaGFuZ2VTZXJ2aWNlQ29uZmlnQSB1c2luZyBDaGFuZ2VTZXJ2aWNlQ29uZmlnVy4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0RlLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIHVzZSBJRF9TRUxFQ1RfRk9OVCBpbiBnZXJtYW4gbWVudQoJLSBtb3ZlIHN0cmluZyBjb25zdGFudHMgaW50byBzdHJpbmcgcmVzb3VyY2VzCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBjb25zaWRlciBhIGRldmljZSB0aGF0IGlzIGFscmVhZHkgaW4gdXNlIGEgdGVzdCBmYWlsdXJlLgoKMjAwNC0xMC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA0MTAxOS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNC0xMC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvc3luYy5jLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3VzZXIvd2lucHJvYy5oLCBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLAoJICBkbGxzL3dpbm1tL3dpbm1tLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4IHZhcmlvdXMgZnVuY3Rpb24gcHJvdG90eXBlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2l0c3MvY2htX2xpYi5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sIGxpYnMvcG9ydC9mZnMuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkIGZmcygpIHRvIHBvcnRpbmcgbGlicmFyeSwgbmVlZGVkIGJ5IE1pbkdXLgoKCSogcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6IEFuaXNoIE1pc3RyeSA8bWlzdHJ5LjdAb3N1LmVkdT4KCVJlbmFtZSBnZXRrZXkgYW5kIHNldGtleSBmb3IgRnJlZUJTRC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xvY2FsZS5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBkdW1teSBpbXBsZW1lbnRhdGlvbiBmb3IgRW51bVVJTGFuZ3VhZ2VzQS9XLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYzoKCXdpbmVidWlsZCBzaG91bGRuJ3QgZGVwZW5kIG9uIHRoZSBOT19UUkFDRV9NU0dTIGRlZmluZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIGRsbHMvZHhlcnI4L01ha2VmaWxlLmluLAoJICBkbGxzL2R4ZXJyOS9NYWtlZmlsZS5pbiwgZGxscy9keGd1aWQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc3RybWlpZHMvTWFrZWZpbGUuaW4sIGRsbHMvdXVpZC9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL2RlYnVnLmgsCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbjoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVzZSBhIG5ldyBETExERUZTIHZhcmlhYmxlIGluIGNvbmZpZ3VyZS9NYWtlZmlsZXMgdG8gYWN0dWFsbHkgcmVtb3ZlCglhbGwgdGhlIGRlYnVnIG1lc3NhZ2VzIChtaW51cyBFUlJzKSBpZiB0aGUgdXNlciBkZWNpZGVzIHNvLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgU2V0UGF0aFdvcmRCcmVha1Byb2MgYW5kIE1pcnJvckljb24uCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlYmFyIGNvbXBsZXRlbmVzcyBhdWRpdC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmRvd3Mgd2l0aCBXU19FWF9UT09MV0lORE9XIHN0eWxlIHNob3VsZCBub3QgaGF2ZSBtaW4vbWF4IGJ1dHRvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogV2FycmVuIEJhaXJkIDx3YXJyZW4uYmFpcmRAY2ltbWV0cnkuY29tPgoJLSBhZGRlZCAtZlBJQyB0byB0aGUgTERETExGTEFHUyBsaW5lIGZvciBIUFVYOyB3aW5lZ2NjIG5lZWRzIHRvIHBhc3MKCSAgLWZQSUMgdG8gdGhlIGxpbmsgbGluZSB0byBrZWVwIHRoZSBocCBsaW5rZXIgaGFwcHkKCS0gc2V0IERMTEVYVCB0byAuc2wgb24gSFBVWAoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJUmVnUXVlcnlWYWx1ZVcgbXVzdCByZXR1cm4gY291bnQgaW4gYnl0ZXMgZm9yIGVtcHR5IHN0cmluZyB0b28uCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywgZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IGNvbnNpZGVyIGZhaWx1cmUgd2l0aCBEU0VSUl9OT0RSSVZFUiBhIHRlc3QgZmFpbHVyZS4KCgkqIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIFRyYW5zbGF0ZUFjY2VsZXJhdG9yQSBoYW5kbGUgbmF0aW9uYWwgY2hhcmFjdGVycy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCVBhc3MgY29ycmVjdCB1aVBhcmFtIGZvciBTUElfR0VUTk9OQ0xJRU5UTUVUUklDUy4KCgkqIHRvb2xzL3dpbmUuaW5mOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGQgSEtMTSwlQ3VycmVudHZlcnNpb24lXFNldHVwLCJCb290RGlyIiB0byB0aGUgaW5zdGFsbGF0aW9uCglkZWZhdWx0cy4KCgkqIGRsbHMvd2ludHJ1c3QvTWFrZWZpbGUuaW46CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGQga2VybmVsMzIgYXMgaW1wb3J0IGZvciB3aW50cnVzdC4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IENhbGxOYW1lZFBpcGVBIHVzaW5nIENhbGxOYW1lZFBpcGVXLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJS2VlcCAidHJhaWxpbmciIHplcm9zIG9uIHdob2xlIG51bWJlciBwYXJ0IG9mIGEgZGVjaW1hbC4KCUFkZCBhbiBleGFtcGxlIG9mIHRoaXMgdG8gdGVzdHMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOgoJV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJVGVzdCB0aGF0IFNhZmVBcnJheURlc3Ryb3lEYXRhIGtlZXBzIHRoZSBwb2ludGVyIGlmIEZBREZfU1RBVElDIGlzCglzZXQsIG51bGxzIGl0IG90aGVyd2lzZS4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6IFdhbHQgT2didXJuIDxyZXViZW5AdWdjcy5jYWx0ZWNoLmVkdT4KCVNhZmVBcnJheURlc3Ryb3lEYXRhIC0ga2VlcCBwb2ludGVyLCBkb24ndCBkZXN0cm95IGRhdGEgaWYgRkFERl9TVEFUSUMKCWlzIHNldC4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9jcHBleGNlcHQuYywgZGxscy9tc3ZjcnQvY3BwZXhjZXB0Lmg6CglPdXRwdXQgdGhlIHZpcnR1YWwgdGFibGVzIGZvciB0aGUgZXhjZXB0aW9uIGNsYXNzZXMgdXNpbmcgYXNzZW1ibHkgc28KCXRoYXQgdGhleSBjYW4gaGF2ZSB0aGUgY29ycmVjdCBsYXlvdXQsIGFuZCBnZXQgcmlkIG9mIHRoZQoJY29ycmVzcG9uZGluZyBoYWNrcyBpbiBSVFRJX0dldE9iamVjdExvY2F0b3IuCglCdWlsZCBtb3JlIG9mIHRoZSBjb2RlIG9uIG5vbi1pMzg2IHBsYXRmb3JtcyB0b28uCglQcm90ZWN0IF9fUlREeW5hbWljQ2FzdCBhbmQgZnJpZW5kcyB3aXRoIGV4Y2VwdGlvbiBoYW5kbGVycy4KCUZpeCBoYW5kbGluZyBvZiB0aGUgdnRhYmxlIHBvaW50ZXIgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGRlY2xhcmUKCWFsbCBvYmplY3QgcG9pbnRlcnMgYXMgdHlwZV9pbmZvLgoKCSogc2VydmVyL21haW4uYzogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJQWRkZWQgYSB2ZXJzaW9uIG9wdGlvbiB0byB0aGUgd2luZXNlcnZlci4KCgkqIGluY2x1ZGUvdGNoYXIuaDogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gRml4IHR5cG8gaW4gZXJyb3IgbWVzc2FnZQoJLSBTZXBhcmF0ZSB3aW50X3QgZGVmaW5pdGlvbiBmcm9tIHdjdHlwZV90IGRlZmluaXRpb24gKG5lZWRlZCBmb3IKCSAgQ3lnd2luIHRhcmdldCkuCgoJKiBsb2FkZXIva3RocmVhZC5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVByb3RlY3QgdXNlIG9mIHB0aHJlYWQgZnVuY3Rpb25zIHdpdGggI2lmZGVmIEhBVkVfUFRIUkVBRF9ILgoKCSogZGxscy9zaGVsbDMyL3NobG1lbnUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCB0aGUgc2hlbGxtZW51IGNvZGUgdG8gdXNlIHVuaWNvZGUuCgoyMDA0LTEwLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvbWl4ZXIuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBjb25zaWRlciBNTVNZU0VSUl9OT1RTVVBQT1JURUQgYW4gZXJyb3IgZm9yIHdpZGUgZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJRG9uJ3QgZnJlZSBzdWJjbGFzcyBzdGFjayB3aGlsZSBpdCdzIHN0aWxsIGluIHVzZS4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbDogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCVJlbW92aW5nIHJlZmVyZW5jZXMgdG8gbm93IG9ic29sZXRlIHdpbmVzZXR1cHRrLCBhcyByZXF1ZXN0ZWQgYnkgdXNlcnMuCgoJKiBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5oOgoJRml4ZWQgX19SVER5bmFtaWNDYXN0IHRvIHJldHVybiB0aGUgY29ycmVjdCBwb2ludGVyIGZvciBtdWx0aXBsZQoJaW5oZXJpdGFuY2UgaGllcmFyY2hpZXMgKHRoYW5rcyB0byBNdXNlIFJlc2VhcmNoIGZvciBoZWxwIHdpdGggdGhpcwoJb25lKS4KCUFkZGVkIHNvbWUgZGVidWcgb3V0cHV0LgoKCSogZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jOgoJQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJRHVyaW5nIHN0YXJ0dXAgb2YgdGhlIGNvbm5lY3Rpb24gdG8gYW4gZXh0ZXJuYWwgT0RCQyBwcm92aWRlcgoJKGUuZy4gdW5peE9EQkMpIHJlcGxpY2F0ZSB0aGF0IHByb3ZpZGVyJ3MgZHJpdmVyIGFuZCBEU04gZGF0YSB0byB0aGUKCXJlZ2lzdHJ5IHNvIHRoYXQgV2luZG93cyBwcm9ncmFtcyB0aGF0IGFjdHVhbGx5IHF1ZXJ5IHRoZSByZWdpc3RyeQoJcmF0aGVyIHRoYW4gdGhlIE9EQkMgd2lsbCBmaW5kIGF0IGxlYXN0IHNvbWUgaW5mb3JtYXRpb24uCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsIGRsbHMvZGJnaGVscC9tZW1vcnkuYywKCSAgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9heGNvcmUuaWRsOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4IHNvbWUgdHlwZXMgcHJvYmxlbXMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzogV2FsdCBPZ2J1cm4gPHJldWJlbkB1Z2NzLmNhbHRlY2guZWR1PgoJVGVzdCB6ZXJvIGV4cG9uZW50cyB3aXRoIGFuZCB3aXRob3V0IHNpZ25zLgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLAoJICBkbGxzL3dpbmVkb3MvcmVsYXkuYzoKCU1hcmt1cyBBbXNsZXIgPG1hcmt1cy5hbXNsZXJAb3JpYmkub3JnPgoJUHVzaCBvbiBzdGFjayBpbiAxNiBiaXQgbW9kZSB3aXRoIHNlZ21lbnQgd3JhcCBhcm91bmQuCgoJKiBpbmNsdWRlLy5jdnNpZ25vcmUsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvcmljaGVkaXQuaCwKCSAgaW5jbHVkZS9yaWNob2xlLmgsIGluY2x1ZGUvcmljaG9sZS5pZGw6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbiBJREwgZmlsZSBmb3IgUmljaGVkaXQncyBPTEUgaW50ZXJmYWNlLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglNb2RpZnkgQU5TSSBmdW5jdGlvbnMgdG8gYWxsb2NhdGUgaW50ZXJtZWRpYXRlIFVuaWNvZGUgc3RyaW5ncyBvbiB0aGUKCWhlYXAgaW5zdGVhZCBvZiBzdGFjay4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglSZXZpc2Ugd2lubW0vdGltZS5jIHRvIGZpeCB0aW1lciByZXNvbHV0aW9uIGF0IDEgbXMuIFRoaXMgdGhlbiBhbGxvd3MKCWEgbXVjaCBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aW1lciBldmVudHMgYW5kIHRpbWVHZXRUaW1lLAoJYW5kIGNhbGxlcnMgdGhhdCB1c2VkIHN1YiAxMCBtcyByZXNvbHV0aW9uIHdpbGwgbm93IGdldCBjb3JyZWN0CglyZXN1bHRzLgoKCSogbG9hZGVyL2t0aHJlYWQuYzogUmVzdG9yZSBsb3N0IGNodW5rIG9mIHByZXZpb3VzIHBhdGNoLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9leGRpc3AuaWRsLCBpbmNsdWRlL2V4ZGlzcGlkLmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCBkaXNwaW50ZXJmYWNlczogRFdlYkJyb3dzZXJFdmVudHMgYW5kIERXZWJCcm93c2VyRXZlbnRzMi4KCS0gQWRkZWQgY29jbGFzczogV2ViQnJvd3Nlci4KCS0gQWRkZWQgZXhkaXNwaWQuaC4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGxpYnMvcG9ydC9pbnRlcmxvY2tlZC5jLCBsb2FkZXIva3RocmVhZC5jLAoJICBwcm9ncmFtcy93aW5lZGJnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZGJnL2JlX2FscGhhLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIHNvbWUgbW9yZSBBbHBoYSBhc20gY29kZSBhbmQgQWxwaGEtc3BlY2lmaWMgcGFydHMuCgoJKiBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3RlY3QgVVNFUjMyIGFnYWluc3QgZWFybHkgZ3JhcGhpY3MgZHJpdmVyIHVubG9hZGluZy4KCgkqIGRsbHMvdXNlci9jb21iby5jLCBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy91c2VyL2xpc3Rib3guYywKCSAgaW5jbHVkZS93aW51c2VyLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW1wbGVtZW50IExCU19DT01CT0JPWCwgYW5kIG1ha2UgdXNlIG9mIGl0LgoJQmV0dGVyIHNlcGFyYXRpb24gYmV0d2VlbiB0aGUgTGlzdGJveCBhbmQgQ29tYm9ib3guCglIYXZlIGEgc2luZ2xlIHNldCBvZiB3bmRwcm9jcywganVzdCBsaWtlIFdpbmRvd3MuCgoJKiBkbGxzL2Ftc3RyZWFtL2Ftc3RyZWFtLmMsIGRsbHMvaXRzcy9pdHNzLmMsIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywKCSAgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYzoKCUpvcmlzIEh1aXplciA8am9yaXNodWl6ZXJAcGxhbmV0Lm5sPgoJQWRkZWQgSUNsYXNzRmFjdG9yeS0+Q3JlYXRlSW5zdGFuY2UgYWdncmVnYXRpb24gY2hlY2tzLgoKCSogZGxscy9tc3ZpZGVvL2RyYXdkaWIuYzoKCVBldGVyIFJpb2NyZXV4IDxwYXIrd2luZV9wYXRjaGVzQHNpbGlzdGl4LmNvbT4KCSBNYWtlIERyYXdEaWJEcmF3IGhvbm91ciB0aGUgRERGX0JBQ0tHUk9VTkRQQUwgZmxhZy4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzogTWFya3VzIEFtc2xlciA8bWFya3VzLmFtc2xlckBvcmliaS5vcmc+CglJbml0aWFsaXplIC5DT00gc3RhY2suCgoJKiBkbGxzL3dpbnRydXN0L3dpbnRydXN0LnNwZWMsIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3RfbWFpbi5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBzdHViIGZvciBDcnlwdENBVEFkbWluQWNxdWlyZUNvbnRleHQuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gUnRsUXVlcnlUaW1lem9uZUluZm9ybWF0aW9uIHVzZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSByZWdpc3RyeSBpZiBpdAoJaXMgYXZhaWxhYmxlLgoKCSogZGxscy9nZGkvcGFsZXR0ZS5jOiBEb3VnIFBhdWwgPGRvdWdAZWxlbWVudGFsLmF0aC5jeD4KCUdsZW5uIFd1cnN0ZXIgPGd3dXJzdGVyQHNjcy5jYXJsZXRvbi5jYT4KCURvbid0IHVucmVhbGl6ZSB0aGUgcGFsZXR0ZSBieSBjYWxsaW5nIFNldFBhbGV0dGVFbnRyaWVzLgoJQ2hlY2sgcGVGbGFncyBmb3IgUENfUkVTRVJWRUQuCgoJKiBkbGxzL3gxMWRydi9wYWxldHRlLmM6IERvdWcgUGF1bCA8ZG91Z0BlbGVtZW50YWwuYXRoLmN4PgoJR2xlbm4gV3Vyc3RlciA8Z3d1cnN0ZXJAc2NzLmNhcmxldG9uLmNhPgoJQ2hhbmdlIHJlYWRpbmcgb2YgUENfKEVYUExJQ0lUfE5PQ09MTEFQU0V8UkVTRVJWRUQpIHRvIGhhbmRsZSBtdWx0aXBsZQoJdmFsdWVzLgoKCSogcHJvZ3JhbXMvY2xvY2svQ3MucmMsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L0NzLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvQ3MucmMsIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9Dcy5yYywgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0NzLnJjLCBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmMsCgkgIHByb2dyYW1zL3N0YXJ0L0NzLnJjLCBwcm9ncmFtcy9zdGFydC9yc3JjLnJjLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjOgoJRGF2aWQgS3JlZGJhIDxrcmVkYmFAaWJvdC5jYXMuY3o+CglBZGRlZCBzb21lIEN6ZWNoIHJlc291cmNlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFRCTl9ERUxFVElOR0JVVFRPTiBzZW5kcyB0aGUgY29tbWFuZCBJRCwgbm90IHRoZSBpbmRleC4KCS0gRmlsbCBpbiB0YkJ1dHRvbiBzdHJ1Y3R1cmUgZm9yIFRCTl9ERUxFVElOR0JVVFRPTiBub3RpZmljYXRpb24uCgktIERvY3VtZW50IFRCTl9RVUVSWSogc2VuZGluZyBpbmRpY2VzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBwb3J0IGVudW1lcmF0aW9uLgoKCSogZGxscy9rZXJuZWwvY3B1LmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQXZvaWQgdXNpbmcgZ2V0dGltZW9mZGF5KCkuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglUZXN0IHdoZXRoZXIgdGhlIGZ0X2VuY29kaW5nJ3MgYXJlIGRlZmluZWQsIG5vdCB0aGUgRlRfRU5DT0RJTkcncy4KCgkqIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmdW5jdGlvbiBmb3IgT3BlbklucHV0RGVza3RvcC4KCgkqIGRsbHMvcnBjcnQ0L2Nwcm94eS5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdHViIGltcGxlbWVudGF0aW9uIGZvciBDcmVhdGVQcm94eUZyb21UeXBlSW5mby4KCgkqIGluY2x1ZGUvYmFzZXRzZC5oOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVbmlmb3JtaXplIGVuZGlhbm5lc3MgZGVmaW5pdGlvbi4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglQcm90ZWN0IHNvbWUgbW9yZSB0eXBlcyB3aGljaCBjYW4gYmUgcmVkZWNsYXJlZCBpbiBYbWQuaC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvbGlicmFyaWVzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV0dXJuIG91dCBvZiB0aGUgZGVmYXVsdCBjYXNlLCBhc3NlcnQoKSBpcyByZW1vdmVkIHdpdGggLUROREVCVUcuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggc29tZSBwbGFjZXMgd2hlcmUgbm8gZHJpdmVyIHByZXNlbnQgY2F1c2VzIHByb2JsZW1zLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEltYWdlTGlzdF9TZXRDb2xvclRhYmxlLgoKCSogZGxscy9nZGkvZGliLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglUaGUgImNvbG9ycyIgcGFyYW1ldGVyIG9mIFNldERJQkNvbG9yVGFibGUgc2hvdWxkIGJlIENPTlNULgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBhIHR5cG8gaW4gQ3J5cHRFeHBvcnRLZXkuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIHdyaXRpbmcgZm9yd2FyZCBkZWNsYXJhdGlvbiBvZiBkaXNwaW50ZXJmYWNlLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcHJvdmUgcHJveHkgZGVzdHJ1Y3Rpb24gY29tbWVudC4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1hc2sgU0lHQ0hMRCB0byBwcmV2ZW50IHBhcnRpYWwgd3JpdGVzIGluIHRoZSBuZXdfcHJvY2VzcyBzZXJ2ZXIKCWNhbGwuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCVdpbGxpYW0gUG9ldHJhIFlvZ2EgSGFkaXNvZXNlbiA8d2lsbGlhbXBvZXRyYUB5YWhvby5jb20+CglBZGRlZCBzb21lIHN5c3RlbSBtZXRyaWNzIGRlZmluaXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGRlZCBTSEZyZWVOYW1lTWFwcGluZ3MgaW1wbGVtZW50YXRpb24uCgoJKiBsb2FkZXIva3RocmVhZC5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXggdGhlIGRlY2xhcmF0aW9uIG9mIHB0aHJlYWRfbXV0ZXhhdHRyX2dldHR5cGUoKS4KCjIwMDQtMTAtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9jcHAuYzogRml4ZWQgc3BlbGxpbmcgb2YgJ2hpZXJhcmNoeScuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9nZGkvcHJpbnRkcnYuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkZWQgY2hlY2sgZm9yIGZvcmsoKSB0byBmaXggdGhlIE1pbkdXIGJ1aWxkLgoKCSogdG9vbHMvd2luZS5pbmYsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglJbXBsZW1lbnQgYWN0aW9uIDgzIGluIFN5c3RlbVBhcmFtZXRlcnNJbmZvKCkuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jb250ZXh0X2FscGhhLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDcmVhdGUgdGhlIG5lY2Vzc2FyeSBmdW5jdGlvbnMgZm9yIHdpbmVzZXJ2ZXIgY29udGV4dHMgZm9yIEFscGhhLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy9pbWFnZWxpc3QuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUNvbXBsZXRlbHkgZGlzYWJsZSB1bnVzZWQgZnVuY3Rpb24gc2hvd19pbWFnZSgpLgoKCSogZGxscy9kM2Q5L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L2RpcmVjdHguYywKCSAgZGxscy9kM2Q5L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOS9waXhlbHNoYWRlci5jLCBkbGxzL2QzZDkvcXVlcnkuYywKCSAgZGxscy9kM2Q5L3Jlc291cmNlLmMsIGRsbHMvZDNkOS9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOS9zd2FwY2hhaW4uYywgZGxscy9kM2Q5L3RleHR1cmUuYywgZGxscy9kM2Q5L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDkvdmVydGV4ZGVjbGFyYXRpb24uYywgZGxscy9kM2Q5L3ZlcnRleHNoYWRlci5jLAoJICBkbGxzL2QzZDkvdm9sdW1lLmMsIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS92c2hhZGVyZGVjbGFyYXRpb24uYywgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkM2QvZGV2aWNlLmMsIGRsbHMvd2luZWQzZC9yZXNvdXJjZS5jLAoJICBkbGxzL3dpbmVkM2QvdmVydGV4YnVmZmVyLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBBZGQgc3VwcG9ydCAoYXMgZmFyIGFzIHdhcyBwcmV2aW91c2x5KSBmb3IgdGhlIFZlcnRleEJ1ZmZlciBhbmQKCSAgUmVzb3VyY2UgY2xhc3NlcyBpbiB3aW5lZDNkIGFuZCB1c2Ugd2hlbiBjYWxsZWQgZnJvbSBkM2Q5LgoJLSBSZWR1Y2UgdGhlIGhlYWRlciBpbmNsdWRlcyBpbiBhbGwgdGhlIGQzZDkgaW50ZXJmYWNlIHRvIG9uZSBjb21tb24KCSAgc2V0IGluIHRoZSBwcml2YXRlIGhlYWRlci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglEb24ndCBidWlsZCB3aW5lLXByZWxvYWRlciBmb3Igb3RoZXIgY3B1cyB0aGFuIHg4Ni4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCWdldE1lc3NhZ2UoKSBpcyBvbmx5IGRlZmluZWQgd2hlbiBIQVZFX09TUyBpcyBkZWZpbmVkLgoKCSogZGxscy90YXBpMzIvYXNzaXN0ZWQuYywgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3RhcGkzMi9waG9uZS5jLAoJICBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywgaW5jbHVkZS90YXBpLmg6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglQcm92aWRlIGFuICdBJyB2ZXJzaW9uIG9mIGFwcHJvcHJpYXRlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglQcmVmaXggX2Zzb3BlbiB3aXRoIE1TVkNSVF8gdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggTWluR1cgaGVhZGVyLgoJVHlwbyBmaXguCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCURvbid0IHVzZSBtYWdpYyBzaXplcywgYWN0dWFsbHkgY2FsY3VsYXRlIHRoZW0uCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCU9ubHkgY29tcGlsZSBCdWlsZENhbGxGcm9tMTZGdW5jIG9uIHg4Ni4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6CglCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglGaXggU0hEZWxldGVLZXkgc28gdGhhdCBpdCB3aWxsIGhhbmRsZSBkZWxldGluZyBhIGtleSB3aXRoIG1vcmUgdGhhbgoJb25lIHN1YmtleS4gIEFsc28gaW5jbHVkZXMgdGVzdC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgZGVjbGFyYXRpb25zIGZvciBHZXRDbGFzc0xvbmdQdHJ7QSxXfSwgR0NMUF8qIGRlZmluZXMgYW5kIHVzZXIKCW9iamVjdCBpbmZvcm1hdGlvbiBkZWZpbmVzLgoKMjAwNC0xMC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLnNwZWMsIGRsbHMvZGJnaGVscC9zb3VyY2UuYywKCSAgZGxscy9kYmdoZWxwL3N5bWJvbC5jLCBkbGxzL2RiZ2hlbHAvdHlwZS5jLCBpbmNsdWRlL2RiZ2hlbHAuaCwKCSAgcHJvZ3JhbXMvdGFza21nci9kYmdjaG5sLmMsIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc3ltYm9sLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggZnVuY3Rpb24gYW5kIHN0cnVjdHVyZSBmaWVsZCB0eXBlcyBzbyB3ZSBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZQoJbmF0aXZlIGRiZ2hlbHAuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3ZpcnR1YWwuYywgZGxscy9udGRsbC9lbnYuYywKCSAgZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvcmVsYXkuYywKCSAgZGxscy9udGRsbC90aHJlYWQuYywgZGxscy9udGRsbC92aXJ0dWFsLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBOdEFsbG9jYXRlVmlydHVhbE1lbW9yeSBkZWNsYXJhdGlvbiBhbmQgZml4IHVzZXJzIG9mIHRoZQoJZnVuY3Rpb24uCgoJKiBpbmNsdWRlL21zdmNydC9zeXMvdHlwZXMuaDogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCURlZmluZSBwaWRfdCBhbmQgc3NpemVfdCBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IFdhbHQgT2didXJuIDxyZXViZW5AdWdjcy5jYWx0ZWNoLmVkdT4KCUFsbG93IGV4cG9uZW50cyBvZiB6ZXJvIChsaWtlICIxLjAwMEUwIikgdG8gcGFyc2UKCWNvcnJlY3RseS4gUHJldmlvdXNseSwgdGhleSBjYXVzZWQgRElTUF9FX1RZUEVNSVNNQVRDSC4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglBZGRlZCBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIHN0cnVjdCB0aW1ldmFsIGZvciBmdXRpbWVzLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvc3luYy5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglJbXBsZW1lbnRlZCBOdFlpZWxkRXhlY3V0aW9uLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLCBkbGxzL2RiZ2hlbHAvbXNjLmMsCgkgIGRsbHMvZGJnaGVscC9wZV9tb2R1bGUuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gTW92ZSBoZWFkZXIgcGFyc2luZyB0byBjYWxsZXJzIG9mIHBlX2xvYWRfZGVidWdfZGlyZWN0b3J5LgoJLSBBZGQgc3R1YnMgYW5kIHN0cnVjdHVyZXMgZm9yIExGX1BST0NFRFVSRSB0eXBlcy4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgSE1BQ19JTkZPIHR5cGVkZWYuCgoJKiBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBkbGxzL3dpbm1tL3dpbm1tLmMsCgkgIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGJyaW5nIHRoZSBtdWx0aW1lZGlhIGRvYyB1cC10by1kYXRlCgktIG1vdmVkIHRoZSBUT0RPIGZyb20gdGhlIGRvYyBpbnRvIHRoZSBjb2RlCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYywgd2luZG93cy9tZGkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIFdNX01ESVNFVE1FTlUgaGFuZGxlciBzaG91bGQgdXBkYXRlIG5ldyBmcmFtZSBtZW51IG9ubHkgaWYgYW4gYWN0aXZlCgkgIGFuZCBtYXhpbWl6ZWQgTURJIGNoaWxkIGlzIHZpc2libGUuCgktIEFkZCBhIHRlc3QgY2FzZSBmb3IgTURJIGNoaWxkIGFjdGl2YXRpb24gc2VxdWVuY2UuCgoJKiBkbGxzL2dkaS90ZXN0cy9iaXRtYXAuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFwcGFyZW50bHkgdGhpcyBwb3J0aW9uIG9mIHRoZSB0ZXN0IHdhcyBmYWlsaW5nIHVuZGVyIHNvbWUgdmVyc2lvbnMgb2YKCXdpbnhwLCBzbyByZW1vdmUgaXQuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL2hlYWRlci5oLCB0b29scy93aWRsL3BhcnNlci55LAoJICB0b29scy93aWRsL3Byb3h5LmMsIHRvb2xzL3dpZGwvdHlwZWxpYi5jLCB0b29scy93aWRsL3dpZGwuYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CgktIEFkZGVkIGNyZWF0aW9uIG9mIGRpc3BpbnRlcmZhY2UgaGVhZGVyLgoJLSBBZGRlZCBjcmVhdGlvbiBvZiBjb2NsYXNzIGhlYWRlci4KCS0gQWRkZWQgbWVzc2FnZXMgd2hlbiBmb3BlbiBmYWlscy4KCgkqIGRsbHMva2VybmVsL2Rvc21lbS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUF2b2lkIHVzaW5nIGdldHRpbWVvZmRheS4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbmNsdWRlIHN0ZGlvLmggZm9yIE1pbkdXLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglDcnlwdERlcml2ZUtleSAtIHNldCByZXR1cm4ga2V5IGhhbmRsZSB0byBOVUxMIGluIGNhc2Ugb2YgZmFpbHVyZS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmb2xkZXIuYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJU29ydCBmaWxlcy9mb2xkZXJzIGJlZm9yZSB0ZXN0aW5nLgoKCSogaW5jbHVkZS93aW5udC5oOiBBZGFtIEQuIE1vc3MgPGFkYW1AZ2ltcC5vcmc+CglEZWZpbmUgVkVSX1NVSVRFX0JMQURFLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQ29ycmVjdGx5IGRlZmluZSBXSU5WRVIsIF9XSU4zMl9XSU5OVCBhbmQgX1dJTjMyX0lFIHZlcnNpb25zIGluIGFsbAoJY2FzZXMuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVW5pY29kaWZ5IERJQUxPR19EbGdEaXJTZWxlY3QuIFVzZSBTZW5kTWVzc2FnZVcgd2hlbmV2ZXIgcG9zc2libGUuCgoJKiBkbGxzL3VzZXIvbGlzdGJveC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXVkaXQgdGhlIGxpc3Rib3ggY29udHJvbC4KCUZpeCBzb21lIGluZGVudGF0aW9uIHByb2JsZW1zLgoKCSogbGlicy9wb3J0L2ludGVybG9ja2VkLmMsIGxpYnMvd2luZS9wb3J0LmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbXBsZW1lbnQgaW50ZXJsb2NrZWQqIGFuZCB3aW5lX3N3aXRjaF90b19zdGFjayBmb3IgQWxwaGEuCgoyMDA0LTEwLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUl0ZW1zIGFyZSB2YXJpYWJsZSBzaXplZCwgdXNlIGFuIGFjY2Vzc29yIHRvIGdldCBhdCB0aGVtLgoJQ29tYmluZSBBL1cgY2FsbHMgdG9nZXRoZXIgdG8gcmVtb3ZlIGR1cGxpY2F0aW9uLgoJRG9uJ3QgbGVhayB0ZXh0IHdoZW4gcmVtb3ZpbmcvY2hhbmdpbmcgaXRlbXMuCglUdXJuIG9mZiBob3QgdHJhY2tpbmcgd2hlbiB3ZSBkZWxldGUgdGhlIGxhc3QgaXRlbS4KCVVzZSB0aGUgJ2RlbGV0ZSAxIGl0ZW0nIGxvZ2ljIHdoZW4gZGVsZXRpbmcgYWxsIGl0ZW1zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbnRkbGwvc3luYy5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJTWFkZSBOdERlbGF5RXhlY3V0aW9uIHdpdGggYSAwIHRpbWVvdXQgeWllbGQgdGhlIENQVSwgYXMgaXQgaXMKCXN1cHBvc2VkIHRvLgoKMjAwNC0xMC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJQnVpbGQgV2luZSBhcyAzMi1iaXQgYnkgZGVmYXVsdCBvbiB4ODYtNjQsIGFuZCBhZGRlZCBhIC0tZW5hYmxlLXdpbjY0CglvcHRpb24gZm9yIHBlb3BsZSB3aG8gd2FudCB0byBwbGF5IHdpdGggNjQtYml0IHN1cHBvcnQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHdpbmRvd3MvbWRpLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJvcGVybHkgaGFuZGxlIHRoZSBjYXNlIHdoZW4gbGFzdCBNREkgY2hpbGQgaXMgYmVpbmcgZGVzdHJveWVkLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvY29uc29sZS5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglVbmNvbmRpdGlvbmFsbHkgb3BlbiBhIGZyZXNoIGNvbnNvbGUgZm9yIHRoZSB0ZXN0cy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUHJvcGVybHkgY29tcGFyZSBmaWxlIHZlcnNpb25zIHdoZW4gdXBncmFkaW5nIGZpbGVzIHNvIHRoYXQgbmV3Cgl2ZXJzaW9ucyBnZXQgcHJvcGVybHkgaW5zdGFsbGVkLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW4sCgkgIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJQWRkZWQgLS1sZC1jbWQgYW5kIC0tbm0tY21kIG9wdGlvbnMgaW4gd2luZWJ1aWxkLCBhbmQgbWFrZSB3aW5lZ2NjCglwYXNzIHRoZSBwcm9wZXIgbGQgY29tbWFuZC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYywgZGxscy9tc2Ntcy9wcm9maWxlLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglCZXR0ZXIgZG9jdW1lbnQgc29tZSBhcGlzIGluIGNvbW1kbGcgYW5kIG1zY21zLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVwZGF0ZSB0eXBlcyBjaGVja2VkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGluY2x1ZGUvZXhkaXNwLmlkbDogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIElXZWJCcm93c2UyIGludGVyZmFjZS4KCgkqIGRsbHMva2VybmVsL3BhdGguYywgZGxscy9xdWFydHovbWFpbi5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ29ycmVjdCB0aGUgY2FsbGluZyBjb252ZW50aW9uIG9mIEdldFN5c3RlbVdvdzY0RGlyZWN0b3J5e0EsV30sCglBbXBGYWN0b3JUb0RCIGFuZCBEQlRvQW1wRmFjdG9yLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L2RpcmVjdHguYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL2QzZDl0eXBlcy5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDb3B5IGFuZCB0aWR5IHVwIHRoZSBjb2RlIGZyb20gZHg4IGNyZWF0ZSBkZXZpY2UgaW50byB3aW5lZDNkLiBDYWxsCglmcm9tIHdpbmVkM2QgYW5kIGQzZDgsIGJ1dCBzaG9ydCB0ZXJtIG9ubHkgdXNlIHRoZSBjb2RlIGZvciByZWFsIGZyb20KCWQzZDkuCgoJKiBkbGxzL3VzZXIvc2Nyb2xsLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdWRpdCB0aGUgc2Nyb2xsIGNvbnRyb2wuCglSZW9yZ2FuaXplIHRoZSBkb2N1bWVudGF0aW9uIGluIGEgbW9yZSByZWFkYWJsZSBmb3JtYXQuCgoJKiBkbGxzL3VzZXIvZWRpdC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXVkaXQgdGhlIGVkaXQgY29udHJvbC4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0ZyLnJjOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCVVwZGF0ZSBGcmVuY2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRGlzYWJsZSByZW1haW5pbmcgcGllY2Ugb2YgdGhlIGNvZGUgd2hpY2ggYXV0byBhc3NpZ25zIHZpcnR1YWwga2V5Cgljb2RlcywgaXQgYnJlYWtzIFZLX09FTV8xMDIgaW4gZmlubmlzaC9zd2VkaXNoIGtleWJvYXJkIGxheW91dHMuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3JlYXNvbi5oLCBpbmNsdWRlL3dpbnJlZy5oLAoJICBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSByZWFzb24gY29kZXMgZm9yIEV4aXRXaW5kb3dzRXgoKS4KCUFsc28gYWRkIEVXWF9GT1JDRUlGSFVORy4KCgkqIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQnJpbmcgdXAgdGhlIEZpbGUtPlNhdmUgZGlhbG9nIHdoZW4gcmVjZWl2aW5nIFdNX1FVRVJZRU5EU0VTU0lPTi4KCgkqIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwuYywgZGxscy9oaGN0cmwub2N4L2hoY3RybC5vY3guc3BlYywKCSAgaW5jbHVkZS9odG1saGVscC5oOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCS0gQWRkZWQgZG9XaW5NYWluIHN0dWIKCS0gRml4ZWQgaHRtbGhlbHAuaAoKCSogZGxscy93aW5pbmV0L25ldGNvbm5lY3Rpb24uYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZSAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSC4KCjIwMDQtMTAtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0X21kNC5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0X21kNS5jOgoJUmVtb3ZlZCB3cm9uZyBtZW1zZXQgY2FsbHMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6CglGaXhlZCBNRDRGaW5hbC9NRDVGaW5hbCBlbnRyaWVzIChzcG90dGVkIGJ5IFZpbmNlbnQgQulyb24pLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbXNjbXMvTWFrZWZpbGUuaW4sIGRsbHMvbXNjbXMvaGFuZGxlLmMsCgkgIGRsbHMvbXNjbXMvbGNtc19hcGkuaCwgZGxscy9tc2Ntcy9tc2Ntcy5zcGVjLAoJICBkbGxzL21zY21zL21zY21zX21haW4uYywgZGxscy9tc2Ntcy9tc2Ntc19wcml2LmgsCgkgIGRsbHMvbXNjbXMvcHJvZmlsZS5jLCBkbGxzL21zY21zL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNjbXMvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNjbXMvdGVzdHMvcHJvZmlsZS5jLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2ljbS5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgY29sb3IgcHJvZmlsZSBoYW5kbGVzLgoJSW1wbGVtZW50IE9wZW5Db2xvclByb2ZpbGV7QSxXfSBhbmQgQ2xvc2VDb2xvclByb2ZpbGUuCglJbXBsZW1lbnQgR2V0Q29sb3JEaXJlY3Rvcnl7QSxXfSBhbmQgSW5zdGFsbENvbG9yUHJvZmlsZXtBLFd9LgoJSW1wbGVtZW50IFVuaW5zdGFsbENvbG9yUHJvZmlsZXtBLFd9LgoJRHluYW1pY2FsbHkgbG9hZCBsaWJsY21zLgoJQWRkIHRlc3RzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9wcmVwcm9jZXNzb3IucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY19wYXJzZXIucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgZnVuY3Rpb24gcHJvdG90eXBlcy4KCU1vZGlmeSBmdW5jdGlvbiBjYWxscyBzbyB0aGUgcHJvdG90eXBlcyBhcmUgY2hlY2tlZC4KCgkqIGxpYnMvcG9ydC9mdXRpbWVzLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCU5lZWQgdG8gaW5jbHVkZSBzeXMvdGltZS5oLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsIHByb2dyYW1zL3dpbmVmaWxlL0l0LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9QbC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIHJlbW92ZSB1bnVzZWQgSURTX0ZJTEVfTU9WRV9FUlJPUgoJLSB1c2UgU2V0V2luZG93Rm9udCgpIGluc3RlYWQgb2YgU2VuZE1lc3NhZ2UoV01fU0VURk9OVCkKCS0gcmVtb3ZlIHVudXNlZCBjb21tZW50CgktIHVzZSBHRVRfWF9MUEFSQU0oKSBpbnN0ZWFkIG9mIEdFVF9YX0xQQVJBTSgpCgktIHJlbW92ZSBvbGQgX1JPU18gcHJlcHJvY2Vzc29yIHN0YXRlbWVudHMKCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDb25zdGlmeSBzb21lIHN0YXRpY3MgYW5kIG1ha2UgdGhlbSBzbWFsbGVyLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgZGxscy9jb21jdGwzMi90ZXN0cy9pbWFnZWxpc3QuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbWFnZUxpc3RfTWVyZ2Ugc2hvdWxkIG5vdCBmYWlsIGlmIGluZGljZXMgYXJlIGJhZC4KCUFkZCB0ZXN0cyBmb3IgdGhpcyBjYXNlLCBhIHZpc2libGUgdGVzdCBtb2RlIGFuZCBmaXggRHJhd0luZGlyZWN0IHRlc3QKCXVuZGVyIHNvbWUgbmF0aXZlIGNvbWN0bDMyLmRsbCdzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRHJhdyArLy0gY29ycmVjdGx5IGZvciBsYXJnZSBpY29uIHNpemVzLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgbWlzc2luZyBPRFNfIGNvbnN0YW50cywgdGFnbmFtZS4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglWZWN0b3JzIG5lZWQgYWxsIDMyIGJpdHMgdG8gaGFuZGxlIF9yZWFsbHlfIGxhcmdlIGFwcHMuCgoJKiB0b29scy9nZW5wYXRjaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgZ2VuZXJhdGVkIHBhdGNoIHdhcyBtaXNzaW5nIGEgbGluZSBvZiB0aGUgZGlmZi4KCWdlbnBhdGNoIHdhcyBhbHNvIGRlcGVuZGluZyBvbiB0aGUgbmV3IGZpbGVzIGJlaW5nIGxpc3RlZCBmaXJzdCBieQoJJ2N2cyBkaWZmJyAod2hpY2ggaXMgdGhlIGNhc2UgYnV0IEknbSBub3Qgc3VyZSB0aGVyZSBpcyBhbnkgaGFyZAoJZ3VhcmFudGVlKS4KCVVzZSAncGVybCAtdycgZm9yIG1vcmUgY2hlY2tpbmcsIGZpeCB0aGUgcmVzdWx0aW5nICd1bmRlZmluZWQgdmFsdWUnCgl3YXJuaW5ncy4gSW4gbWFueSBjYXNlcyB3ZSBkb24ndCBqdXN0IHdhbnQgJG9wdGlvbnN7eHh4fSB0byBleGlzdCwgd2UKCXdhbnQgaXQgdG8gYmUgZGVmaW5lZC4KCVJlc3RyaWN0IHRoZSBzY29wZSBvZiB2YXJpYWJsZXMgYW5kIHJlbW92ZSB1bm5lZWRlZCB2YXJpYWJsZXMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4ICJtb3ZlIGZpbGUiIGltcGxlbWVudGF0aW9uLCBpbiBkZXRhaWw6CgktIHVzZSBUQ0hBUiB0byBtYWtlIHRoZSBjb2RlIFVOSUNPREUgY29tcGF0aWJsZQoJLSBwYXNzIHJldHVybiBzdHJpbmcgYnVmZmVyIHRvIHRoZSBkaWFsb2cgcHJvY2VkdXJlCgktIGNhbGwgZGlzcGxheV9lcnJvcigpIGluIGNhc2Ugb2YgZXJyb3JzIHRvIGRpc3BsYXkgdGhlIFdJTjMyIGVycm9yCgkgIG1lc3NhZ2UKCS0gdXNlIHNsYXNoIGluc3RlYWQgb2YgYmFjayBzbGFzaCBmb3IgdW5peCBmaWxlIHN5c3RlbSBjb21wYXRpYmlsaXR5CgktIGZvcm1hdCB0aGUgY29kZSBlcXVhbGx5IHRvIHRoZSByZW1haW5pbmcgd2luZWZpbGUgY29kZQoKCSogZGxscy9udGRsbC9maWxlLmMsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwKCSAgbGlicy9wb3J0L2Z1dGltZXMuYzoKCUFkZGVkIGEgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgZnV0aW1lcy4KCgkqIGRsbHMvZDNkOS9kM2Q5X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2RldmljZS5jLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWQzZC9kZXZpY2UuYywKCSAgZGxscy93aW5lZDNkL2RpcmVjdHguYywgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgYSBJV2luZUQzRERldmljZSBvYmplY3QgdHlwZSAoZW1wdHkgZm9yIG5vdyksIGFuZCBjcmVhdGUgb25lIHdoZW4KCWFuIElEaXJlY3QzRERldmljZSBvYmplY3QgaXMgY3JlYXRlZC4KCgkqIHRvb2xzL3dpbmFwaS9tYWtlX2ZpbHRlcl9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvbXN2Y21ha2VyX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2tfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9jbGVhbnVwX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdF9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdF9vcHRpb25zLnBtOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCBpbXBvcnQgcGFyc2VfY29tbWFfbGlzdCgpIHVubGVzcyBuZWNlc3NhcnkuCgl3aW5hcGlfY2hlY2tfb3B0aW9ucy5wbTogRml4IHR5cG8gaW4gdGhlIHBhcnNlX2NvbW1hX2xpc3QoKQoJcmVmZXJlbmNlLgoKCSogZGxscy9hZHZwYWNrL2FkdnBhY2suYywgZGxscy9hZHZwYWNrL3JlZy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXNlIHRoZSBwcm9wZXIgI2luY2x1ZGUgZmlsZSBkZWxpbWl0ZXIgaW4gYWR2cGFjay4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9JdC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvUGwucmMsIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1tZWRpYXRlbHkgcmVmcmVzaCBjaGlsZCB3aW5kb3dzIGFmdGVyIGNoYW5naW5nIHRoZSBmb250LgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglGb3JjZSBhbGwgdGhlIHRvb2xzIHRvIGJlIHJlYnVpbHQgYmVmb3JlIG1ha2UgZGVwZW5kLCBvdGhlcndpc2UgbWFrZQoJd2lsbCB0cnkgdG8gZG8gdGhhdCBmcm9tIHRoZSBpbmNsdWRlIGRpcmVjdG9yeS4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9wYWludGluZy5jLCB3aW5kb3dzL3BhaW50aW5nLmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jOgoJT25seSBzZW5kIFdNX1BBSU5USUNPTiBhbmQgV01fSUNPTkVSQVNFQktHTkQgdG8gMTYtYml0IHdpbmRvd3MgKGZvdW5kCglieSBKZXJlbXkgV2hpdGUpLgoKCSogZGxscy9hbXN0cmVhbS9hbXN0cmVhbS5jLCBkbGxzL2Ftc3RyZWFtL21haW4uYywgZGxscy9hdGwvYXRsX21haW4uYywKCSAgZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsCgkgIGRsbHMvY29tY2F0L2NvbWNhdF9wcml2YXRlLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLAoJICBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZS5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLCBkbGxzL2QzZDkvdm9sdW1lLmMsCgkgIGRsbHMvZDNkeG9mL2QzZHhvZi5jLCBkbGxzL2QzZHhvZi9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZXZlbnVtL2RldmVudW1fcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2l0c3MvaXRzcy5jLCBkbGxzL2l0c3MvbW9uaWtlci5jLAoJICBkbGxzL2l0c3Mvc3RvcmFnZS5jLCBkbGxzL21hcGkzMi91dGlsLmMsIGRsbHMvbWxhbmcvbWxhbmcuYywKCSAgZGxscy9tc2Rtby9kbW9ydC5jLCBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3N1bWluZm8uYywgZGxscy9tc2kvdGFibGUuYywKCSAgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLAoJICBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywgZGxscy9vbGUzMi9naXQuYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywKCSAgZGxscy9vbGUzMi9vbGUyaW1wbC5jLCBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZTMyL29sZXByb3h5LmMsCgkgIGRsbHMvb2xlMzIvcnBjLmMsIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jLAoJICBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGVhdXQzMi9jb25ucHQuYywgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLAoJICBkbGxzL29sZWF1dDMyL29haWRsX3AuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywKCSAgZGxscy9vbGVhdXQzMi91c3JtYXJzaGFsLmMsIGRsbHMvcXVhcnR6L2VudW1tb25pa2VyLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsCgkgIGRsbHMvcnBjcnQ0L2Nwcm94eS5jLCBkbGxzL3JwY3J0NC9jcHNmLmMsIGRsbHMvcnBjcnQ0L2NzdHViLmMsCgkgIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsIGRsbHMvcnBjcnQ0L25kcl9vbGUuYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLCBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsCgkgIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywKCSAgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywKCSAgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLAoJICBkbGxzL3NobHdhcGkvY2xpc3QuYywgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywKCSAgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3NobHdhcGkvdGhyZWFkLmMsIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgaW5jbHVkZS9vYmpiYXNlLmgsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgZGVmaW5lIENPQkpNQUNST1MgaW4gb2JqYmFzZS5oLgoJVXBkYXRlIHRoZSBXaW5lIHNvdXJjZXMgYWNjb3JkaW5nbHkuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBhbiAndW5pbml0aWFsaXplZCB2YWx1ZScgd2FybmluZy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgVmFySTRGcm9tSTIgQVBJIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZm9sZGVyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ29uZm9ybWFuY2UgdGVzdHMgbXVzdCBub3QgaW5jbHVkZSB3aW5lL2RlYnVnLmguCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4IHNpZ3NlZ3Ygd2hlbiBkb3VibGUgY2xpY2tpbmcgZGlyZWN0b3J5IGVudHJpZXMuCgoyMDA0LTEwLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9leGRpc3AuaWRsLCB0b29scy93aWRsL3BhcnNlci55OgoJQWxsb3cgZGVmaW5lZCB0eXBlcyB0byBiZSB1c2VkIGFzIGZ1bmN0aW9uIG5hbWVzLgoKCSogZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLAoJICBkbGxzL2FkdmFwaTMyL2NyeXB0X21kNC5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0X21kNS5jLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHRfbWQ0LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHRfbWQ1LmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcGxlbWVudCBNRHs0LDV9SW5pdCBNRHs0LDV9VXBkYXRlIGFuZCBNRHs0LDV9RmluYWwuCglBZGQgdGVzdHMgZm9yIHRoZXNlIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3Mvc3B5LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIG1lc3NhZ2Ugc3B5IHRocmVhZCBzYWZlLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJLSBGaXggV1NfZ2V0c29ja29wdCBmb3IgdGhlIG9wdGlvbnMgU09fTElOR0VSLCBTT19SQ1ZUSU1FTyBhbmQKCSAgU09fU05EVElNRU8gYnkgYWRkaW5nIGRhdGEgY29udmVyc2lvbiBmcm9tIFVuaXggdG8gd2luZG93cy4KCS0gQWRkZWQgYSB0ZXN0IGZvciB0aGlzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gcmVtb3ZlIHRyYWlsaW5nIHNlbWljb2xvbnMgZnJvbSBjb25zdGFudCBkZWZpbml0aW9ucwoJLSBhZGQgc29tZSBjb21tZW50cwoJLSBtYWtlIHRpbWVfdG9fZmlsZXRpbWUoKSBhIHN0YXRpYyBmdW5jdGlvbgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeCBnZW5lcmF0aW9uIG9mIGNvbmZpZy5oLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgcHJvdG90eXBlcyBmb3IgR2V0V2luZG93TG9uZ1B0ci9TZXRXaW5kb3dMb25nUHRyLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2tpcCBpbnRlcnRocmVhZCBtZXNzYWdlIHRlc3QgdW5kZXIgd2luOXgsIGl0IGNhdXNlcyBhIGNyYXNoIHRoZXJlLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q5L2RpcmVjdHguYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9nbC5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNb3ZlIHRoZSBHZXREZXZpY2VDYXBzIGludG8gdGhlIHdpbmVkM2QgbGlicmFyeSBhbmQgY2FsbCBmcm9tIGQzZDkuCgoJKiBkbGxzL3VzZXIvY29tYm8uYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdXNlbGVzcyBGSVhNRSBpbiBjb21tZW50LgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeCBtc3ZjbWFrZXIgaW1wb3J0cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IGJ1ZyBmb3VuZCBieSBQaW90ciBDYWJhbiwgd2hlcmUgb3VyIGZ1bmN0aW9uIHRyaWVkIHRvIGRlbGV0ZSBhCglkaXJlY3RvcnkgZXZlbiB0aG91Z2ggdGhlIHVzZXIgY2FuY2VsZWQgdGhlIG9wZXJhdGlvbi4KCjIwMDQtMTAtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbWVudS5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5yYywKCSAgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy9kZWZ3bmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGNhc2UgZm9yIGFjY2VsZXJhdG9ycywgbWFrZSB0aGUgdGVzdCBwYXNzIG9uIFdpbmUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHRlc3QgY2FzZSBmb3IgaW50ZXItdGhyZWFkIERpc3BhdGNoTWVzc2FnZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJUHJldmVudCBEaXNwYXRjaE1lc3NhZ2UgZnJvbSBkaXNwYXRjaGluZyBhIG1lc3NhZ2UgdG8gYSBkaWZmZXJlbnQKCXRocmVhZCAocmVwb3J0ZWQgYnkgRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90eXBlNDIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFrZSBzdXJlIFBvc3RTY3JpcHQgZmxvYXRzIGFyZSBwcmludGVkIHdpdGggTENfTlVNRVJJQz0iQyIuCgoJKiBkbGxzL3VzZXIvbGlzdGJveC5jLCBkbGxzL3VzZXIvdGVzdHMvbGlzdGJveC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURyYXcgYmFja2dyb3VuZCBvZiB0aGUgZW1wdHkgc2VsZWN0ZWQgaXRlbSBpbiBlbXB0eSBsaXN0cy4KCURvbid0IGRyYXcgYSBmb2N1cyByZWN0IGlmIHdlIGRvbnQgaGF2ZSB0aGUgZm9jdXMuCglEb24ndCBzZWxlY3QgaXRlbXMgb24ga2V5IHVwL2Rvd24gaW4gbXVsdGktc2VsZWN0IGxpc3RzLgoJSGFuZGxlIExCU19OT1NFTCBjb3JyZWN0bHksIGZpeCByZW1haW5pbmcgdG9kb193aW5lIHRlc3RzLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3RzIGZvciBQYXRoQ3JlYXRlRnJvbVVybCwgUGF0aElzVVJMLCBVcmxDcmVhdGVGcm9tUGF0aCBhbmQKCVVybFVuZXNjYXBlLgoKCSogZGxscy9zaGx3YXBpL3VybC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmV3cml0ZSBVcmxDcmVhdGVGcm9tUGF0aC4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEb24ndCB1c2UgIi5wcmV2aW91cyIgZm9yIEN5Z3dpbiBidWlsZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywKCSAgZGxscy9kYmdoZWxwL3N5bWJvbC5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLAoJICBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSWRlbnRpZnkgY29tbS5kcnYgYXMgYSAxNmJpdCBkbGwuCgoJKiBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXBsYWNlIHNvbWUgSVVua25vd25fUXVlcnlJbnRlcmZhY2UoKSBjYWxscyB3aXRoIHRoZSBzcGVjaWZpYyBjYWxsCglmb3IgdGhlIG9iamVjdCBiZWluZyB1c2VkLgoKCSogZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIHByb2dyYW1zL2Nsb2NrL1BsLnJjLAoJICBwcm9ncmFtcy9jbG9jay9yc3JjLnJjLCBwcm9ncmFtcy93aW5lbWluZS9QbC5yYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZC91cGRhdGVkIFBvbGlzaCB0cmFuc2xhdGlvbnMuCgoJKiB0b29scy93aW5hcGkvb3V0cHV0LnBtOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUxpbWl0IHRoZSBsZW5ndGggb2YgcHJvZ3Jlc3MgbWVzc2FnZXMgdG8gbGVzcyB0aGFuICRDT0xVTU5TIHx8IDgwCgljaGFyYWN0ZXJzIHNvIHRoZXkgZG9uJ3Qgd3JhcCAod2hpY2ggd291bGQgY2F1c2UgdGhlbSB0byBiZSBiYWRseQoJZXJhc2VkKS4KCU1ha2UgZ29vZCB1c2Ugb2YgdGhlICd4JywgdGhlIHBlcmwgc3RyaW5nIG11bHRpcGxpY2F0aW9uIG9wZXJhdG9yLgoJQWRkIGZ1bmN0aW9uIHByb3RvdHlwZXMuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBmdW5jdGlvbiBwcm90b3R5cGVzLgoKCSogZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQ3JlYXRlRGlzcFR5cGVJbmZvLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgaW5jbHVkZS9zaGx3YXBpLmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmV3cml0ZSBQYXRoQ3JlYXRlRnJvbVVybC4KCgkqIE1ha2UucnVsZXMuaW4sIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvd2lkbC5jLAoJICB0b29scy93aWRsL3dpZGwuaCwgdG9vbHMvd2lkbC93aWRsLm1hbjoKCVJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBJQ09NIGNvbXBhdGliaWxpdHkgbW9kZSBpbiB3aWRsLgoKCSogZGxscy91c2VyL2NvbWJvLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdWRpdCBjb21ibyBjb250cm9sIGNvZGUuCglDaGFuZ2UgW0dTXWV0V2luZG93TG9uZ3ssUHRyfUEgdG8gW0dTXWV0V2luZG93TG9uZ3ssUHRyfVcuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZDNkOC5oLCBpbmNsdWRlL2QzZDkuaCwKCSAgaW5jbHVkZS9kM2R4OGNvcmUuaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2RpbnB1dC5oLAoJICBpbmNsdWRlL2RtcGx1Z2luLmgsIGluY2x1ZGUvZG11c2ljYy5oLCBpbmNsdWRlL2RtdXNpY2kuaCwKCSAgaW5jbHVkZS9kbXVzaWNzLmgsIGluY2x1ZGUvZHBhZGRyLmgsIGluY2x1ZGUvZHBsYXkuaCwKCSAgaW5jbHVkZS9kcGxheTguaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvZHNkcml2ZXIuaCwKCSAgaW5jbHVkZS9kc291bmQuaCwgaW5jbHVkZS9keGRpYWcuaCwgaW5jbHVkZS9keGZpbGUuaCwKCSAgaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL21hcGl1dGlsLmgsIGluY2x1ZGUvbWFwaXguaCwKCSAgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvc2hsb2JqLmgsCgkgIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3Zmdy5oOgoJR2V0IHJpZCBvZiB0aGUgbm9uLXN0YW5kYXJkIEl4eHhfTUVUSE9EUyBtYWNybyBkZWZpbml0aW9ucywgZGVjbGFyZQoJdGhlIGludGVyZmFjZXMgZXhwbGljaXRseSBpbnN0ZWFkLgoKCSogZGxscy9hdmlmaWwzMi9lZGl0c3RyZWFtLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwKCSAgZGxscy9kcGxheXgvbG9iYnlzcC5oLCBkbGxzL29sZTMyL2lmcy5oLCBkbGxzL3NoZWxsMzIvc2hlbGxmb2xkZXIuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglBdm9pZCBkZXBlbmRpbmcgb24gdGhlIG5vbi1zdGFuZGFyZCBJVW5rbm93bl9NRVRIT0RTIG1hY3JvIGluIFdpbmUKCWludGVybmFsIGhlYWRlcnMuCgoJKiBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglBc2sgZm9yIGxpbmsgaWYgcGF0Y2ggaXMgcmVsYXRlZCB0byBhIGJ1ZyBpbiBCdWd6aWxsYS4KCgkqIGRsbHMvc2hsd2FwaS91cmwuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBVcmxVbmVzY2FwZVcuCgoJKiBkbGxzL3VzZXIvc3RhdGljLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdWRpdCB0aGUgc3RhdGljIGNvbnRyb2wgY29kZS4KCUNoYW5nZSBbR1NdZXRXaW5kb3dMb25neyxQdHJ9QSB0byBbR1NdZXRXaW5kb3dMb25neyxQdHJ9Vy4KCgkqIGRsbHMvdXNlci9idXR0b24uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUF1ZGl0IGFuZCBkb2N1bWVudCBidXR0b24gY29kZS4KCUNoYW5nZSBbR1NdZXRXaW5kb3dMb25neyxQdHJ9QSB0byBbR1NdZXRXaW5kb3dMb25neyxQdHJ9Vy4KCUNoYW5nZSBXTV9HRVRETEdDT0RFIGFzIHBlciB0aGUgTVNETiBkb2N1bWVudGF0aW9uLgoKCSogTWFrZWZpbGUuaW46IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJY3Jvc3N0ZXN0IHRhcmdldCBkZXBlbmRzIG9uIGluY2x1ZGUgZmlsZXMuCgoJKiBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBpbmNsdWRlLy5jdnNpZ25vcmUsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvY29udHJvbC5oLCBpbmNsdWRlL2NvbnRyb2wuaWRsLCBpbmNsdWRlL3V1aWRzLmg6CglDb252ZXJ0ZWQgY29udHJvbC5oIHRvIGlkbC4KCgkqIGluY2x1ZGUvYW12aWRlby5pZGwsIGluY2x1ZGUvZXhkaXNwLmlkbCwgaW5jbHVkZS9vY2lkbC5pZGw6CglVc2UgcHJvcGdldC9wcm9wcHV0IGF0dHJpYnV0ZXMgd2hlcmUgYXBwcm9wcmlhdGUuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LAoJICB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIHByb3BnZXQvcHJvcHB1dCBmdW5jdGlvbiBhdHRyaWJ1dGVzLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q5L2RpcmVjdHguYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3V0aWxzLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTW92ZSB0aGUgQ2hlY2sqIHR5cGUgZnVuY3Rpb25zIGludG8gd2luZWQzZCBhbmQgY29weSBmcm9tIGQzZDksIGFuZAoJZmxhZyB0aGF0IHRoZXkgYXJlIG1vc3RseSBzdHVicy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJUXVvdGUgZXZlcnl0aGluZyBmb3IgY29uc2lzdGVuY3kuCglSRkMgMjA2OCBnb3Qgc3VwZXJzZWRlZCBieSBSRkMgMjYxNi4KCgkqIGRsbHMvc2hsd2FwaS91cmwuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVBhdGhJc1VSTCBzaG91bGQgcmV0dXJuIFRSVUUgZXZlbiBpZiBhIHNjaGVtZSBpcyB1bmtub3duLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCB3aW5kb3dzL21kaS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHRoZXJlIG5vIE1ESSBjaGlsZCB0byBhY3RpdmF0ZSBzZXQgaHduZEFjdGl2ZUNoaWxkIHRvIDAgaW4KCVdNX01ESURFU1RST1kgaGFuZGVyLCBhZGQgYSB0ZXN0IGNhc2UuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYywKCSAgZGxscy9yc2FiYXNlL21haW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIGFkdmFwaTMyL2NyeXB0LmMgdGVzdCBwYXNzIHVuZGVyIHdpbjJrIFNQNCwgZG8gc3RyaWN0ZXIgZXJyb3IKCWNoZWNraW5nLCBjb21tZW50IG91dCBhIGNvdXBsZSBvZiB0ZXN0cyBmYWlsaW5nIHVuZGVyIHdpbjJrLCBhZGQgYQoJbm90ZSB3aHkgUlNBX0NQQWNxdWlyZUNvbnRleHQgbWF5IGZhaWwuCgoJKiBkbGxzL2RiZ2hlbHAvcGF0aC5jOiBXb2xmZ2FuZyBTY2h3b3R6ZXIgPHdvbGZnYW5nLnNjaHdvdHplckBnbXgubmV0PgoJTWFrZVN1cmVEaXJlY3RvcnlQYXRoRXhpc3RzOiBSZWN1cnNpdmVseSBjcmVhdGUgcGF0aCB1cCB0byBsYXN0ICdcXCcuCgoyMDA0LTEwLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBGaXhlZCB0eXBvIGluIFByb2dyYW1zVy4KCUNoYW5nZWQgdGhlIGNhc2Ugb2Ygd2luZG93cyBhbmQgc3lzdGVtIGRpcmVjdG9yaWVzIHRvIG1hdGNoIHRoZQoJZGlyZWN0b3JpZXMgd2UgY3JlYXRlIGJ5IGRlZmF1bHQuCgoJKiBpbmNsdWRlL2R4ZmlsZS5oOgoJRml4ZWQgaW5jb21wYXRpYmxlIElESVJFQ1RYRklMRU9CSkVDVF9NRVRIT0RTIG1hY3JvLCBhbmQgYWRkZWQKCUlVTktOT1dOX01FVEhPRFMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbGlicy93aW5lL2NvbmZpZy5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbkBjb2Rld2VhdmVycy5jb20+CglDaGVjayBmb3IgZ2V0dWlkIGFuZCBhdm9pZCB0aGUgdXNlIG9mIGl0IGluIGxpYndpbmUgaWYgd2UgZG9uJ3QgaGF2ZQoJaXQuCgoJKiBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsCgkgIGRsbHMvYWR2YXBpMzIvY3J5cHQuaCwgZGxscy9hZHZhcGkzMi9jcnlwdF9kZXMuYywKCSAgZGxscy9hZHZhcGkzMi9jcnlwdF9sbWhhc2guYywgZGxscy9hZHZhcGkzMi9jcnlwdF9zaGEuYywKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdF9sbWhhc2guYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW1wbGVtZW50IFN5c3RlbUZ1bmN0aW9uMDA2KCkuCglBZGQgYSB0ZXN0IGZvciBTeXN0ZW1GdW5jdGlvbjAwNigpLgoKCSogZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIC5nbnVfZGVidWdsaW5rLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJSmVycnkgSmVua2lucyA8amVycnlfal9qZW5raW5zQHlhaG9vLmNvbT4KCUZpeCBhbiBlcnJvciBtZXNzYWdlLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBwb3J0IGVudW1lcmF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJZiBhbiBhbmltYXRpb24gaXMgYWxyZWFkeSBwbGF5aW5nIGRvIG5vdCByZXN0YXJ0IGl0LgoJUmVtb3ZlIFdNX0NMT1NFIGhhbmRsZXIsIGl0IGxlYWRzIHRvIGEgbWVtb3J5IGNvcnJ1cHRpb24gbGF0ZXIgb24uCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgdG8gbWFrZSBzdXJlIFByb3BTaGVldEluZm8qIGlzIG5vdCBudWxsIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0Cglmb3Igc29tZSB3aW5kb3dzIG1lc3NhZ2VzLgoKCSogaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21lZGlhb2JqLmgsCgkgIGluY2x1ZGUvbWVkaWFvYmouaWRsOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ3JlYXRlIG1lZGlhb2JqLmggZnJvbSBtZWRpYW9iai5pZGwuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1vcmUgbWVzc2FnZSBjb252ZXJzaW9uIHRlc3RzLCBtYWtlIHRoZSB0ZXN0cyBwYXNzIHVuZGVyIFdpbmUuCgoJKiBkbGxzL2RwbGF5eC9kcGxheXNwLmgsIGRsbHMvZHBsYXl4L2xvYmJ5c3AuaCwgaW5jbHVkZS9kc2RyaXZlci5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgdXNlIENPQkpNQUNST1Mgb24gaW50ZXJuYWwgaW50ZXJmYWNlcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS93aW5zb2NrMi5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggY2FsY3VsYXRpb24gb2YgcmVxdWlyZWQgYnVmZmVyIHNpemUuCgktIEFkZCBzdXBwb3J0IGZvciBkZXRlY3RpbmcgdGhlIElGRl9NVUxUSUNBU1QgZmxhZy4KCS0gU3R1YiBmb3IgU0lPX0FERFJFU1NfTElTVF9DSEFOR0UuCgoJKiBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2QzZDguaCwgaW5jbHVkZS9kM2Q5LmgsIGluY2x1ZGUvZGRyYXcuaCwKCSAgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9kcGFkZHIuaCwgaW5jbHVkZS9kcGxheS5oLAoJICBpbmNsdWRlL2RwbGF5OC5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS9kc291bmQuaCwKCSAgaW5jbHVkZS9keGRpYWcuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGluY29ycmVjdCB1c2FnZSBvZiBDT0JKTUFDUk9TLgoJRHVwbGljYXRlIGFuZCBhZGFwdCB0aGUgQ09NIGFjY2VzcyBtYWNyb3Mgc28gdGhleSBhbHNvIHdvcmsgaW4gQysrLgoJRml4IHRoZSBJRGlyZWN0UGxheVggYWNjZXNzIG1hY3Jvcy4KCgkqIGluY2x1ZGUvZDNkeDhjb3JlLmgsIGluY2x1ZGUvZG1wbHVnaW4uaCwgaW5jbHVkZS9kbXVzaWNjLmgsCgkgIGluY2x1ZGUvZG11c2ljaS5oLCBpbmNsdWRlL2RtdXNpY3MuaCwgaW5jbHVkZS9keGZpbGUuaCwKCSAgaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL21hcGl1dGlsLmgsIGluY2x1ZGUvbWFwaXguaCwKCSAgaW5jbHVkZS9vbGVkbGcuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvdmZ3Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBpbmNvcnJlY3QgdXNhZ2Ugb2YgQ09CSk1BQ1JPUy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJRG8gbm90IG9mZmVyIHN1Ym1pdHRpbmcgdGhlIHJlcG9ydCBpZiB0aGUgLW8gb3B0aW9uIHdhcyBnaXZlbi4KCgkqIHByb2dyYW1zL3djbWQvUGwucmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QbC5yYzoKCVBpb3RyIENhYmFuIDxwaW8xM0Bwb2N6dGEub25ldC5wbD4KCUFkZGVkIFBvbGlzaCB0cmFuc2xhdGlvbi4KCgkqIHRvb2xzL3dpbmUuaW5mOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGljY3ZpZC5kbGwgdG8gYW4gaW5pdGlhbCBXaW5lIGNvbmZpZ3VyYXRpb24uCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0X3NoYS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGEgY3Jhc2ggaW4gYWR2YXBpMzIvdGVzdF9zaGFfY3R4LmMgdGVzdCBpZiByZXF1aXJlZCBlbnRyeSBwb2ludHMKCWFyZSBtaXNzaW5nLgoKCSogZGxscy9kYmdoZWxwL3N0YWJzLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQ2hlY2sgZm9yIHN0cmluZyBwb2ludGVyIGJlaW5nIG91dHNpZGUgb2YgdGhlIHN0cmluZyB0YWJsZS4KCS0gT25seSBwYXJzZSB0eXBlZGVmcyBvbiBzdGFicyBlbnRyaWVzIHRoYXQgY2FuIGhhdmUgdGhlbS4KCgkqIGRsbHMvZGJnaGVscC9tc2MuYywgZGxscy9kYmdoZWxwL3BlX21vZHVsZS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBsb2FkaW5nIC5kYmcgZmlsZXMgYnkgbm8gbG9uZ2VyIHVzaW5nIFJ0bEltYWdlTnRIZWFkZXIgd2hpY2gKCXdvdWxkIHJldHVybiBOVUxMIGFuZCB1c2luZyBsb29raW5nIGF0IHRoZSBJTUFHRV9TRVBBUkFURV9ERUJVR19IRUFERVIKCWRpcmVjdGx5IGluc3RlYWQuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglDb3JyZWN0IHByb2JsZW0gd2l0aCAvaSBhcmd1bWVudCBoYW5kbGluZy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCUplcnJ5IEplbmtpbnMgPGplcnJ5X2pfamVua2luc0B5YWhvby5jb20+CglEb24ndCB1c2UgdGhlIFNORF9QQ01fQVNZTkMgZmxhZyBmb3IgdGhlIG1vbWVudC4KCgkqIGRsbHMvaW1tMzIvaW1tLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXZlbnQgY3Jhc2ggdXNpbmcgQ0pLIGxvY2FsZSBidXQgbm8gaW5wdXQgbWV0aG9kLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgdXNlIEdsb2JhbEZyZWUgZm9yIGEgbWVtb3J5IHJldHVybmVkIGJ5IExvYWRSZXNvdXJjZS4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglBZGQgVVRDIHRvIHRoZSB0aW1lIHpvbmUgbGlzdC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJLSBVc2UgYSBtb3JlIHVuaXF1ZSBzZXBhcmF0b3Igc3RyaW5nLgoJLSBBZGQgc29tZSBxdW90aW5nIHRvIHBsZWFzZSBDR0kucG0tMy4wNS4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3dpdGNoIHRvICdwZXJsIC13JyBhbmQgYWRkICd1c2Ugc3RyaWN0OycuCglBZGQgcHJvdG90eXBlcyB0byBhbGwgZnVuY3Rpb25zLgoJUmVtb3ZlICRiYXNodmVyIGFuZCAkb3V0ZmxhZ3MsIHRoZXkgYXJlIG5vdCB1c2VkLgoKCSogaW5jbHVkZS93aW5zcG9vbC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgSm9iSWQgZmllbGQgY2FzZS4KCgkqIGluY2x1ZGUvdGxoZWxwMzIuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgSEVBUEVOVFJZMzIgYW5kIHRoZSByZWxhdGVkIEFQSXMuCgoJKiBpbmNsdWRlL2xtY29ucy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBBUElfUkVUX1RZUEUgYW5kIE5FVF9BUElfRlVOQ1RJT04uCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUhhbmRsZSB0aGUgc3RhdGljIGxpYnJhcmllcyBsaW5rZWQgdG8gdXNpbmcgRVhUUkFMSUJTLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CgktIFRpbWUgb3V0IG9uIHJlY3YgZnJvbSBhbmQgc2VuZCB0byBibG9ja2luZyBzb2NrZXRzLgoJLSBGaXggdGltZW91dCBjYWxjdWxhdGlvbiBpbiBXU19zZXRzb2Nrb3B0LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGQgdGVzdHMgZm9yIGNvbnZlcnNpb24gb2YgbWVzc2FnZSBwYXJhbWV0ZXJzLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywgZGxscy9zaGx3YXBpL3VybC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVybEVzY2FwZSBoYXMgZGlmZmVyZW50IHJ1bGVzIGRlcGVuZGluZyBvbiB0aGUgcHJvdG9jb2wuCglBZGRlZCBhIGxvYWQgb2YgdGVzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRG9uJ3QgbG9vc2UgbGFzdCBiYW5kIG9uIGluc2VydC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUNhbid0IHBhc3MgTlVMTCBhcyBkZWZhdWx0IHZhbHVlIHRvIEdldFByaXZhdGVQcm9maWxlU3RyaW5nLgoKCSogZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUmV3cml0ZSBhIHNlY3Rpb24gb2YgY29kZSBzbyB0aGF0IGl0IGRvZXNuJ3QgdXNlIGV4aXQoMCkgd2hlbiBvdXQgb2YKCW1lbW9yeS4KCgkqIGRsbHMvZGJnaGVscC9tb2R1bGUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgb3V0IGEgc2xpZ2h0bHkgbW9yZSBpbmZvcm1hdGl2ZSBtZXNzYWdlIGlmIGFuIEVMRiBtb2R1bGUgZmFpbHMKCXRvIGxvYWQuCgoJKiB0b29scy9jMm1hbi5wbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgcHJvdG90eXBlcyB0byBhbGwgZnVuY3Rpb25zLgoJTW92ZSAnbWFpbicgdG8gdGhlIGVuZCBzbyB3ZSBkb24ndCBoYXZlIHRvIHByZS1kZWNsYXJlIGFsbCB0aGUKCWZ1bmN0aW9ucy4KCgkqIHRvb2xzL21ha2VfcmVxdWVzdHM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkICd1c2Ugc3RyaWN0Jy4KCUFkZCBwcm90b3R5cGVzIHRvIGFsbCBmdW5jdGlvbnMuCglNb3ZlICdtYWluJyB0byB0aGUgZW5kIHNvIHdlIGRvbid0IGhhdmUgdG8gcHJlLWRlY2xhcmUgYWxsIHRoZQoJZnVuY3Rpb25zLgoKMjAwNC0wOS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzogQXZvaWQgdXNpbmcgZ2V0dGltZW9mZGF5LgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q5L2RpcmVjdHguYywgZGxscy93aW5lZDNkL2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL3dpbmUvd2luZWQzZF9nbC5oLAoJICBpbmNsdWRlL3dpbmUvd2luZWQzZF9pbnRlcmZhY2UuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNb3ZlIGludG8gd2luZWQzZCBhbmQgY2FsbCBmcm9tIGQzZDkgdGhlIEdldEFkYXB0ZXJJZCBmdW5jdGlvbiBhbmQKCWNvcHkgYWxsIHRoZSBnbCBkZWNsYXJhdGlvbnMgaW50byB0aGUgbW9yZSBnbG9iYWwgd2luZWQzZF9nbCBoZWFkZXIKCWZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglLbGVtZW5zIEZyaWVkbCA8ZnJpazg1QGhvdG1haWwuY29tPgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gZHJpdmUgaWNvbiBhcnR3b3JrCgktIGRpc3BsYXkgZGlmZmVyZW50IGRyaXZlIGljb25zIGRlcGVuZGluZyBvbiB0aGUgZHJpdmUgdHlwZQoKCSogZGxscy9zaGx3YXBpL3VybC5jLCBpbmNsdWRlL3NobHdhcGkuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQYXJzZVVSTCBpcyBub3cgZG9jdW1lbnRlZCwgc28gbW92ZSBpdCBpbnRvIHNobHdhcGkuaC4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJZ25vcmUgRm9jdXNPdXQgZXZlbnQgaWYgdGhlcmUgaXMgbm8gZXZlbnQgd2luZG93LgoKCSogZGxscy9rZXJuZWwvcmVzb3VyY2UuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJS2VlcCB0aGUgb3JpZ2luYWwgcmVzb3VyY2VzIGlmICFiRGVsZXRlRXhpc3RpbmdSZXNvdXJjZXMgaW4KCUJlZ2luVXBkYXRlUmVzb3VyY2VXLgoJUGFzcyB0aGUgY29ycmVjdCBoYW5kbGUgdG8gY2FsbGJhY2sgZnVuY3Rpb25zIGluCglCZWdpblVwZGF0ZVJlc291cmNlVy4KCUZpeCBhIGJ1ZyB3aGlsZSBzYXZpbmcgZGF0YSBpbiBtZW1vcnkgaW4gVXBkYXRlUmVzb3VyY2VXLgoKCSogZGxscy91c2VyL2VkaXQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglMaW1pdCBzY3JvbGxpbmcgb2YgdGhlIGVkaXQgY29udHJvbCB0byB0aGUgbGFzdCBsaW5lIG9mIHRleHQuCgoyMDA0LTA5LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJU2ltcGxpZnkgZ2V0dGluZyBjdXN0b20gaWNvbnMgZm9yIGEgZm9sZGVyIGJ5IHV0aWxpc2luZyB0aGUgbmV3CglTSEVMTDMyX0dldEN1c3RvbUZvbGRlckF0dHJpYnV0ZSBmdW5jdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHIuaCwgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgc3VwcG9ydCBmb3IgY3VzdG9tIHNoZWxsIGZvbGRlcnMsIHN1Y2ggYXMgdGhlIEhpc3RvcnkgZm9sZGVyLgoJLSBBbHdheXMgdHJ5IHRvIGluaXRpYWxpemUgZm9sZGVyIHVzaW5nIElQZXJzaXN0Rm9sZGVyMyBpbnRlcmZhY2UgYW5kCgkgIHRoZW4gZmFsbCBiYWNrIG9uIElQZXJzaXN0Rm9sZGVyIGlmIG5vdCBzdXBwb3J0ZWQuCgoJKiBkbGxzL2Ftc3RyZWFtL21haW4uYywgZGxscy9kM2R4b2YvbWFpbi5jLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9kcG5ldC9kcG5ldF9tYWluLmMsIGRsbHMvZHhkaWFnbi9keGRpYWdfbWFpbi5jLAoJICBkbGxzL2l0c3MvaXRzcy5jLCBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvcXVhcnR6L21haW4uYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggYSByZWZlcmVuY2UgbGVhayBvbiBmYWlsdXJlIChzcG90dGVkIGJ5IFJvYiBTaGVhcm1hbikuCglNb3ZlIHNvbWUgY29kZSBvdmVyIHRvIHRoZSBJbnRlcmxvY2tlZCogZnVuY3Rpb25zLgoKCSogZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3NlY19tZ3IuYywgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5oLAoJICBpbmNsdWRlL3VybG1vbi5pZGw6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBJSW50ZXJuZXRTZWN1cml0eU1hbmFnZXIuCglBZGQgYSBjbGFzc2ZhY3RvcnkuCglGaXggY2FsbGluZyBjb252ZW50aW9uIG9mIENvSW50ZXJuZXRDcmVhdGVTZWN1cml0eU1hbmFnZXIuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERvbid0IHBlcmZvcm0gZXZlbnQgY2hlY2sgaWYgaW4gc3lzdGVtIGNvZGUuIEZpeGVzIGluZmluaXRlCgkgIHJlY3Vyc2lvbiBidWcuCgktIEZpeCBzdGFjayBjb3JydXB0aW9uIHRoYXQgY291bGQgb2NjdXIgaW4gSzMyV293Q2FsbGJhY2sxNkV4IGlmIGFuCgkgIGV2ZW50IGNoZWNrIHdhcyBpbnNlcnRlZC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvdGVzdHMvaW1hZ2VsaXN0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCS0gbmF0aXZlIEltYWdlTGlzdF9SZW1vdmUgZG9zbid0IHNwaXQgb3V0IGFuIGVycm9yIG1lc3NhZ2Ugd2hlbgoJICBkZWxldGluZyBhbiBpbmRleCBvdXQgb2YgcmFuZ2Ugc28gZG9uJ3QgZG8gdGhhdCBlaXRoZXIKCS0gYWRkIDIgSW1hZ2VMaXN0X1JlbW92ZSB0ZXN0cwoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEZXRlcm1pbmUgd2hldGhlciB0byBkbyBsYWJlbCBlZGl0IGJlZm9yZSBzZW5kaW5nIE5NX0NMSUNLLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CgktIHN3aXRjaCB4MTFkcnZkbGcgdG8ga2VybmVsX3N0eWxlLCBhbmQgY2xlYW4gdXAgc29tZSBzdXBlcmZsb3VzIGNvZGUKCS0gbW9yZSB3aW4zMiBoZWFwaWZpY2F0aW9uCgktIG1vdmUgZ2V0RGlhbG9nSXRlbVRleHQgaW50byBoZWFkZXIgYW5kIHJlbmFtZSwgdXNlIHNvbWUgbW9yZSBpbgoJICB4MTFkcnYgcGFnZQoJLSBtYWtlIGxhYmVsIHBocmFzaW5nIGNvbnNpc3RlbnQgaW4geDExZHJ2IHBhZ2UKCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9hdWRpby5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvbGlicmFyaWVzLmMsIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaCwgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCU1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCS0gcmV3cml0ZSB0aGUgdHJhbnNhY3Rpb24gc3lzdGVtIHRvIGJlIGJhc2VkIG9uIGEgc2V0dGluZ3Mgb3ZlcmxheSwKCSAgdG8gaGF2ZSBhIG5pY2VyIEFQSSwgYW5kIHRvIGFjdHVhbGx5IHdvcmsgKGFsd2F5cyBhIGJvbnVzKQoJLSBjaGFuZ2UgdGhlIGxpYnJhcmllcyBwYWdlIHRvIGJlIGJhc2VkIG9uIGEgbGlzdGJveCByYXRoZXIgdGhhbiBhCgkgIHRyZWV2aWV3LCBjbGVhbiB1cCBhbmQgc2hyaW5rIHRoZSBjb2RlCgktIGFkZCBhY2NlbGVyYXRvciBrZXlzIHRvIHRoZSBsaWJyYXJpZXMgcGFnZSwgZm9jdXMgbWFuYWdlbWVudAoJLSBtYWtlIHRoZSB3aW5kb3cgdGl0bGUgcmVmbGVjdCB3aGF0IHRoZSB1c2VyIGlzIGN1cnJlbnRseSBlZGl0aW5nCgktIHJlbW92ZSBib2d1cyByb290IHdhcm5pbmcKCS0gcmVtb3ZlIHNvbWUgdW51c2VkIGNvbnRyb2wgSURzIGluIHJlc291cmNlLmgKCS0gc3RhcnQgY29udmVydGluZyB0aGUgeDExZHJ2IGRpYWxvZyB0byBrZXJuZWxfc3R5bGUgZnJvbSBqYXZhU3R5bGUKCS0gYnVnZml4aW5nCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJLSBpbnRyb2R1Y2Uga2V5cGF0aCgpIGZ1bmN0aW9uCgktIHJld3JpdGUgYW5kIGNsZWFuIHVwIGFwcGRlZmF1bHRzLmMsIHVzZSBhIGxpc3R2aWV3IHJhdGhlciB0aGFuCgkgIHRyZWV2aWV3CgktIHVzYWJpbGl0eSB0d2VhazogcmV2ZXJzZSB3aW5kb3dzIHZlcnNpb24gY29tYm8gc28gbW9yZSByZWNlbnQKCSAgdmVyc2lvbnMgY29tZSBmaXJzdAoJLSB1c2FiaWxpdHkgdHdlYWs6IGltcHJvdmUgdGhlIGFkZCBhcHBsaWNhdGlvbiBvcGVuIGRpYWxvZyBib3gKCS0gYWRkIGFjY2VsZXJhdG9yIGtleXMKCS0gZW5hYmxlL2Rpc2FibGUgY29udHJvbHMgY29ycmVjdGx5CgktIGJlZ2luIHRvIHN0YW5kYXJkaXNlIG9uIHVuZGVyc2NvcmVfc3R5bGUgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlCgkgIHJlc3Qgb2Ygd2luZQoJLSBjb21tZW50IG91dCB0aGUgdHJhbnNsYXRpb25zIGZvciBub3csIHRoZSBVSSB3aWxsIGJlIGNoYW5naW5nIG1vcmUKCS0gYmVnaW4gcGhhc2luZyBvdXQgbGliYyBtYWxsb2MgaW4gZmF2b3VyIG9mIHRoZSB3aW4zMiBoZWFwCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9JdC5yYzogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCVRyYW5zbGF0aW9uIHVwZGF0ZS4KCgkqIGluY2x1ZGUvcHN0b3JlLmlkbDogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRml4IElETCBwcm90b3R5cGVzIG9mIElQU3RvcmU6OldyaXRlSXRlbSBhbmQgSVBTdG9yZTo6Q2xvc2VJdGVtLgoKCSogZGxscy9hdGwvYXRsLnNwZWMsIGRsbHMvYXRsL2F0bF9tYWluLmMsIGRsbHMvYXRsL2F0bGJhc2UuaDoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBBdGxNb2R1bGVVbnJlZ2lzdGVyU2VydmVyRXguCgoJKiB0b29scy93aW5lcHJlZml4Y3JlYXRlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgZGlyZWN0b3JpZXMgbWVudGlvbmVkIGluIHNoZWxscGF0aC5jLgoKCSogZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW4sIGZvbnRzL3dpbmVfc2Fuc19zZXJpZi5zZmQ6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGN5cmlsbGljIGdseXBocyB0byB3aW5lX3NhbnNfc2VyaWYgYXQgMjAgcHBlbS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUl0ZW0gaGVpZ2h0L2V4cGFuZCBidXR0b24gd2lkdGggbXVzdCBiZSA+PSB0aGFuIGltYWdlbGlzdCBzaXplLgoJQXZvaWQgYSBtYWdpYyBudW1iZXIsIGFkZCBGSVhNRSBmb3IgaW5jb3JyZWN0ICsvLSBkcmF3aW5nLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9tYWluLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCURpc3BsYXkgbWVzc2FnZSBib3ggdG8gYWxlcnQgdXNlcnMgbW9yZSByZWxpYWJseSB0aGF0IHdpbmVjZmcgaXMKCXVuZmluaXNoZWQuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLAoJICBwcm9ncmFtcy93aW5lZGJnL2Rpc3BsYXkuYywgcHJvZ3JhbXMvd2luZWRiZy9leHByLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmMsIHByb2dyYW1zL3dpbmVkYmcvc291cmNlLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc3ltYm9sLmMsIHByb2dyYW1zL3dpbmVkYmcvdHlwZXMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZml4ZWQgcmVncmVzc2lvbiBpbiBjdHJsLWMgaGFuZGxpbmcKCS0gZml4ZWQgcmVncmVzc2lvbiBpbiAnaW5mbyBzeW1ib2wgWFhYWCcgY29tbWFuZCAoYW5kIGVuaGFuY2VkCgkgIHByZXNlbnRhdGlvbikKCS0gZml4ZWQgcmVncmVzc2lvbiBpbiBsaW5lIHN0ZXBwaW5nCgktIGZpeGVkIHJlZ3Jlc3Npb24gaW4gJiAoYWRkcmVzcyBvcGVyYXRvcikgaGFuZGxpbmcKCS0gZml4ZWQgc29tZSBiYWQgbW9kdWxlIHJlZmVyZW5jZSBmb3IgbG9jYWwgc3ltYm9scwoJLSBlbmhhbmNlZCByZWdpc3RlciBwcmVzZW50YXRpb24gYXMgbG9jYWwgdmFyaWFibGVzCgktIGFkZGVkIHdhcm5pbmcgd2hlbiBsYXVuY2hpbmcgYSBkZWJ1Z2dlZSB3aGljaCBpc24ndCBhIFdpbmUgYXBwCgktIHJlbW92ZWQgdGhlICdsb2NhbCcgZXh0ZW5zaW9uIG9mIGRpc3BsYXkgY29tbWFuZCAoYW5kIGNoZWNrIHdoZW4KCSAgc2V0dGluZyB0aGUgZGlzcGxheSB3aGV0aGVyIHRoZSBleHByIGhhcyBhIGxvY2FsIGJpbmRpbmcpCgktIHNpbXBsaWZpZWQgZXhjZXB0aW9uIGhhbmRsaW5nLCBhbmQgZmFjdG9yaXplZCBzb21lIGNvZGUgd2hlbgoJICBkZWJ1Z2dlciBzdG9wcwoKCSogdG9vbHMvd2lkbC9wYXJzZXIueTogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJLSBGb3JjZSBkZWZhdWx0IFtpbl0gYXR0cmlidXRlIG9uIGFsbCBwYXJhbWV0ZXJzIHdoZXJlIGV4cGxpY2l0IFtpbl0KCSAgb3IgW291dF0gYXR0cmlidXRlcyBhcmVuJ3Qgc3BlY2lmaWVkLgoJLSBGb3JjZSBkZWZhdWx0IFtvdXRdIGF0dHJpYnV0ZSBvbiByZXR1cm4gdmFsdWVzLgoKCSogZGxscy9kM2Q4L01ha2VmaWxlLmluLCBkbGxzL2QzZDgvZDNkOF9tYWluLmMsCgkgIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q5L2RpcmVjdHguYywKCSAgZGxscy93aW5lZDNkL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkM2QvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvdXRpbHMuYywgZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gTWFrZSBkM2Q4IGtub3cgYWJvdXQgdGhlIHdpbmVkM2QgZGV2aWNlIGFuZCBzdGFydCB1c2luZyBpdC4KCS0gTW92ZSBzb21lIG9mIHRoZSBzY3JlZW4gbW9kZSByZWxhdGVkIGZ1bmN0aW9ucyBpbnRvIHdpbmVkM2QgYW5kIGFkZAoJICB1bnRlc3RlZCBzdXBwb3J0IGZvciB0aGUgbmV3IGQzZDkgb3B0aW9ucyBvZiBwcm92aWRpbmcgdGhlIGZvcm1hdCB0bwoJICBzb21lIG9mIHRoZSBjYWxscy4KCS0gTW92ZSBvdGhlciBmdW5jdGlvbnMgZnJvbSB0aGUgZGlyZWN0eCBpbnRlcmZhY2UgaW50byB0aGUgY29tbW9uCgkgIGxpYnJhcnkgYW5kIGltcGxlbWVudCB0aGUgY2FsbHMgZnJvbSBkM2Q5IGFzIHdlbGwuCgktIENvcHkgYWNyb3NzIHRoZSBmaXJzdCBvZiB0aGUgZnVuY3Rpb25zIHVzZWQgdG8gbWFrZSB0cmFjZXMgbW9yZSByZWFkYWJsZSwKCSAgY3JlYXRpbmcgdXRpbHMuYyB0byBzdG9yZSB0aGVtIGluLiBFdmVudHVhbGx5IHRoZSBvbmVzIGluIGQzZDggd2lsbCBiZQoJICByZW1vdmVkIGJ1dCBmb3Igbm93IGp1c3QgZHVwbGljYXRlIHRoZSBjb2RlLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6IE1pY2hhZWwgS2F1Zm1hbm4gPGhhbGxvQG1pY2hhZWwta2F1Zm1hbm4uY2g+CglESUJfRml4Q29sb3JzVG9Mb2FkZmxhZ3M6IFN1cHBvcnQgYml0bWFwcyB3aXRoIGEgQklUTUFQQ09SRUhFQURFUgoJcHJvcGVybHkuCgoyMDA0LTA5LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbGlicy93aW5lL2NvbmZpZy5jOgoJQmFzZSB0aGUgc2VydmVyIGRpcmVjdG9yeSBuYW1lIG9uIHRoZSB1aWQsIG5vdCB0aGUgdXNlcm5hbWUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hZHZwYWNrLy5jdnNpZ25vcmUsCgkgIGRsbHMvYWR2cGFjay9NYWtlZmlsZS5pbiwgZGxscy9hZHZwYWNrL2FkdnBhY2suYywKCSAgZGxscy9hZHZwYWNrL2FkdnBhY2suc3BlYywgZGxscy9hZHZwYWNrL3JlZy5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL2FkdnB1Yi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgYWR2cGFjay5SZWdJbnN0YWxsLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsIHByb2dyYW1zL3dpbmVmaWxlL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lZmlsZS9QbC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UucmMsIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmg6CglQaW90ciBDYWJhbiA8cGlvMTNAcG9jenRhLm9uZXQucGw+CgktIGFkZGVkIGNob29zaW5nIGZvbnRzCgktIGFkZGVkIGZpbGUgbW92aW5nCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCVN0YXJ0IG9ubHkgZmlyc3Qgc2VydmljZSBpbiB0aGUgc2VydmljZSB0YWJsZS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2FsbCBHZXRQcm9jZXNzSGVhcCgpIGluc3RlYWQgb2YgcGFzc2luZyBpdHMgYWRkcmVzcy4KCgkqIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglDYWxsIEdldFByb2Nlc3NIZWFwKCkgaW5zdGVhZCBvZiBwYXNzaW5nIGl0cyBhZGRyZXNzLgoKCSogZGxscy94MTFkcnYvZGliLmM6IE1pY2hhZWwgS2F1Zm1hbm4gPGhhbGxvQG1pY2hhZWwta2F1Zm1hbm4uY2g+CgkgLSBBZGQgYXMgbWFueSBlbnRyaWVzIHRvIHRoZSBjb2xvciBtYXAgYXMgc3BlY2lmaWVkIGJ5IHRoZSBESUIuCgkgLSBTdXBwb3J0IGJpdG1hcHMgd2l0aCBhIEJJVE1BUFZ7NCw1fUhFQURFUi4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZ1bmN0aW9uIHJldHVybiB0eXBlcyBjYW5ub3QgYmUgY29uc3QuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSAtLSBmcm9tIHNoZWxsIGVudHJpZXMsIHNpbmNlIHdpbmUgbm8gbG9uZ2VyIGZpbHRlcnMgaXQuCgoJKiBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdWdnZXN0IHJ1bm5pbmcgY29uZm9ybWFuY2UgdGVzdHMgcHJpb3IgdG8gc2VuZGluZyBhIHBhdGNoLgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLCBkbGxzL2RiZ2hlbHAvbW9kdWxlLmMsCgkgIGRsbHMvZGJnaGVscC9zeW1ib2wuYywgZGxscy9kYmdoZWxwL3R5cGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBub3cgc3RvcmluZyB2ZWN0b3Igb2YgdHlwZXMgb24gYSBwZXIgbW9kdWxlIGJhc2lzIChhbmQgZ2l2aW5nIGl0CgkgIGJhY2sgaW4gU3ltRW51bVR5cGVzKQoJLSBmbGFnZ2luZyBsb2NhbCByZWdpc3RlciB2YXJzIGFzIGxvY2FsIHRvbwoKCSogZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkc6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU3VnZ2VzdCBpbnN0YWxsaW5nIExpdHRsZUNNUyB0byBXaW5lIHBhY2thZ2Vycy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVN0dWIgTUFDUk9fSnVtcENvbnRleHQgdG8gYXQgbGVhc3QgYnJpbmcgdXAgdGhlIGhlbHAgZmlsZS4KCjIwMDQtMDktMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2hvdGtleS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBXU19ESVNBQkxFRCBzdHlsZS4KCS0gSXNzdWUgRU5fQ0hBTkdFIG5vdGlmaWNhdGlvbi4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIGluIGNsaWVudCBhcmVhIGJlZm9yZSBjYXB0aW9uIGFyZWEsIGJlY2F1c2UgdGhlIGFwcCBtYXkgaGF2ZQoJY2hhbmdlZCB0aGUgTkMgYXJlYSBpbiBXTV9OQ0NBTENTSVpFLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgUGF0aFNlYXJjaEFuZFF1YWxpZnkuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCVNIR2V0QXBwQ29tcGF0RmxhZ3MgdGFrZXMgNCBieXRlcyBvZiBwYXJhbWV0ZXJzLgoKCSogcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6IEtlbiBCZWxsZWF1IDxqYW1lekBpdmljLnFjLmNhPgoJLSBSZW1vdmVkIGNvZGUgdGhhdCB0b29rIHRoZSBmb2N1cyBhd2F5IGZyb20gdGhlIGJ1dHRvbnMuCgktIE1ha2UgdGhlIGJ1dHRvbnMgZm9yd2FyZCBXTV9LRVlET1dOIHRvIHRoZWlyIHBhcmVudC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJUmVzdHJ1Y3R1cmVkIGNvZGUgb2YgU3RhcnRTZXJ2aWNlQ3RybERpc3BhdGNoZXJBL1cuCgoyMDA0LTA5LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywKCSAgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMxNi5jLAoJICBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLAoJICBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsCgkgIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy91cmxtb24vdW1vbi5jOgoJSm9yaXMgSHVpemVyIDxqb3Jpc2h1aXplckBwbGFuZXQubmw+CglSZWYgY291bnQgaW5jcmVtZW50L2RlY3JlbWVudCBjbGVhbnVwLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzogSGFqaW1lIFNlZ2F3YSA8d2luZXRpcHNAc2lkZW5ldC5kZG8uanA+CglBZGRlZCBTdGF0dXNGb250U2l6ZSBhbmQgTWVzc2FnZUZvbnRTaXplIGVudHJpZXMgaW4gd2luLmluaS4KCgkqIGRsbHMvZ2RpL2dkaW9iai5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIGEgKHNlZW1pbmdseSB4cCBkZWZhdWx0KSB3aWR0aCBvZiA3IGZvciBzeXN0ZW0gZm9udHMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIFVzZSBzeXN0ZW0gbWV0cmljcyB0byBkZXRlcm1pbmUgaWNvbiBzaXplcy4KCS0gTW92ZSBpbnZhbGlkIGluZGV4IGZyb20gMSB0byAwLgoKCSogbG9hZGVyL3ByZWxvYWRlci5jOgoJU3VwcG9ydCBjb21waWxpbmcgd2l0aCAtZlBJQyBmb3IgcGVvcGxlIHdobyBzb21laG93IHRoaW5rIHRoaXMgaXMgYQoJZ29vZCBpZGVhLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWw6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDaGFuZ2UgdGhlIHNhbXBsZSBhcHAgZnJvbSB3aW5lbWluZSB0byBub3RlcGFkIGZvciB3aW5lbWFrZXIgaW4gdGhlCglXaW5lbGliIFVzZXIgR3VpZGUuCgoJKiBkbGxzL3VzZXIvbWVudS5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCU1lbnVJdGVtRnJvbVBvaW50IHNob3VsZG4ndCBjcmFzaCBpZiB0aGVyZSdzIG5vIG1lbnUuCgoJKiBkbGxzL250ZGxsL2xvYWRvcmRlci5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSBXSU5FRExMT1ZFUlJJREVTIGFsc28gbWF0Y2ggZm9yICpkbGwuCgoyMDA0LTA5LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy93aW5pbmV0L2RpYWxvZ3MuYywgaW5jbHVkZS93aW51c2VyLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb24ndCBkZWZpbmUgR1dMX1VTRVJEQVRBLCBHV0xfSUQsIEdXTF9IV05EUEFSRU5ULCBHV0xfSElOU1RBTkNFIGFuZAoJR1dMX1dORFBST0Mgd2hlbiBjb21waWxpbmcgdGhlIFdpbmUgc291cmNlLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJS2VuIEJlbGxlYXUgPGphbWV6QGl2aWMucWMuY2E+CgktIFJlbW92ZWQgdGhlIGRlcHJlY2F0ZWQgT0ZfU0VBUkNIIGZsYWcuCgktIEhhbmRsZSBxdW90ZXMgaW4gY29tbWFuZC1saW5lIHBhcnNpbmcuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglVc2UgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGhlYXAgYWxsb2NhdGVkIGJ1ZmZlcnMgaW4KCUhUVFBfSW50ZXJwcmV0SFRUUEhlYWRlciB0byBhdm9pZCBidWZmZXIgb3ZlcmZsb3cgb24gbGFyZ2UgaGVhZGVycy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBEb24ndCBjcmFzaCBvbiBkb3VibGUgSW50ZXJuZXRDbG9zZUhhbmRsZS4KCS0gVGVzdCBjYXNlIGZvciB0aGlzLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBTa2lwIHNoZWxsIHdpbmRvdyB0ZXN0IG9uIFdpbjl4IGFuZCByZXN0b3JlIGl0cyBmdW5jdGlvbmFsaXR5IG9uIE5UCgkgIHBsYXRmb3Jtcy4KCS0gVXNlIGtleWJkX2V2ZW50IGluc3RlYWQgb2YgU2VuZElucHV0IGluIG9yZGVyIHRvIHBlcmZvcm0ga2V5Ym9hcmQKCSAgaW5wdXQgdGVzdCBvbiBXaW45NSBhcyB3ZWxsLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQXQgbGVhc3QgcHJpbnQgbWVzc2FnZSBpZiB3ZSdyZSBub3QgcmV0dXJuaW5nIHJlcXVlc3RlZCBkYXRhLgoKCSogZGxscy9jb21jdGwzMi9ob3RrZXkuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIHRoZSBjb250cm9sIGxvb2sgbW9yZSBsaWtlIG5hdGl2ZSBieSB1c2luZyB0aGUgcmlnaHQgZm9udCBhbmQKCSAgc3BhY2luZy4KCS0gVXNlIFRleHRPdXRXIHJhdGhlciB0aGFuIERyYXdUZXh0VyBhcyB3ZSBkb24ndCB1c2UgYW55IGZlYXR1cmVzIG9mCgkgIERyYXdUZXh0Vy4KCS0gRml4IGNhcmV0IHNpemUgYW5kIHBvc2l0aW9uLgoJLSBJbXBsZW1lbnQgV01fQ0hBUiBhbmQgV01fU1lTQ0hBUiBtZXNzYWdlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRml4IG9idmlvdXNseSB3cm9uZyBjb25kaXRpb24gaW4gYW4gImlmIiBzdGF0ZW1lbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJQWRkIG5vdGUgYWJvdXQgdW5pbXBsZW1lbnRlZCBUQl9TQVZFUkVTVE9SRSBtZXNzYWdlLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUgc3RhdGVtZW50cy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzZXJ2ZXIvZmQuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGVwb2xsKCkgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gcG9sbCgpIChiYXNlZCBvbiB0aGUKCXdvcmsgb2YgU2hhY2hhciBTaGVtZXNoIGFuZCBNaWtlIE1jQ29ybWFjaykuCgoJKiBkbGxzL2QzZDkvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOS9kM2Q5X21haW4uYywKCSAgZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLCBkbGxzL2QzZDkvZGlyZWN0eC5jLAoJICBkbGxzL3dpbmVkM2QvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWQzZC9kaXJlY3R4LmMsCgkgIGRsbHMvd2luZWQzZC92ZXJ0ZXhzaGFkZXIuYywgZGxscy93aW5lZDNkL3dpbmVkM2Quc3BlYywKCSAgZGxscy93aW5lZDNkL3dpbmVkM2RfbWFpbi5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZF9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX2ludGVyZmFjZS5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNyZWF0ZSBhIHdpbmVkM2QgaW50ZXJmYWNlLCBhbmQgZ2VuZXJhdGUgYSB3aW5lZDNkIG9iamVjdCBpbiB0aGUgZDNkOQoJY3JlYXRlIG1ldGhvZC4gTWFrZSB0aGUgZmlyc3QgKHNpbXBsZSkgY2FsbCBpbXBsZW1lbnRhdGlvbiBpbnRvIHRoZQoJbmV3IHdpbmVkM2QgaW50ZXJmYWNlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0phLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfVWsucmM6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJU29tZSB3aW5kcmVzIHZlcnNpb25zIGRvbid0IGxpa2UgUE9QVVAiIiwgY2hhbmdlIHRvIFBPUFVQICIiLgoKCSogZGxscy9kYmdoZWxwL3N0YWNrLmMsIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZWJ1Z2dlciBmb3IgZmxhdCBQQyBhbmQgbm9uLWZsYXQgZnJhbWUuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVJlbW92ZSBzb21lIHVubmVlZGVkIGluY2x1ZGUgc3RhdGVtZW50cy4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCURlZmluZSBfV0lOMzJfV0lOTlQgYW5kIF9XSU4zMl9JRSB2ZXJzaW9ucyBmb3IgTVNfVkMgQnVpbGQuCgoyMDA0LTA5LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcxNi5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZzE2LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglHZXRXaW5kb3dMb25nIC0+IEdldFdpbmRvd0xvbmdQdHIuCgoJKiBkbGxzL250ZGxsL3Jlc291cmNlLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCU1vdmUgVFJBQ0UgaW5zaWRlIFRSWSBibG9jay4KCgkqIGRsbHMvbXNhY20vbXNhY20ucmMsIGRsbHMvbXNhY20vbXNhY21fUGwucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX1BsLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMucmMsIHByb2dyYW1zL3dpbmVmaWxlL1BsLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjLCBwcm9ncmFtcy93aW5oZWxwL1BsLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmM6CglQaW90ciBDYWJhbiA8cGlvMTNAcG9jenRhLm9uZXQucGw+CglBZGRlZCBQb2xpc2ggdHJhbnNsYXRpb24uCgoJKiBhY2xvY2FsLm00LCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCVdhcnJlbiBCYWlyZCA8d2FycmVuLmJhaXJkQGNpbW1ldHJ5LmNvbT4KCUZpeCBhdXRvY29uZiB0byBoYXZlIGEgbmV3IFdJTkVfVFJZX1NITElCX0ZMQUdTIGZ1bmN0aW9uIHRoYXQgdGVzdHMgaWYKCXRoZSBwcm92aWRlZCBmbGFncyBjYW4gYmUgdXNlZCB0byBsaW5rIGEgc2hhcmVkIGxpYnJhcnkuCglBZGRlZCB0ZXN0IGZvciBidWlsZGluZyBzaGFyZWQgbGlicyBvbiBIUC1VWCB3aXRoIGdjYy4KCgkqIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5jLAoJICBkbGxzL3VzZXIvZGlhbG9nMTYuYywgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL21zZzE2LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglHZXRXaW5kb3dMb25nIC0+IEdldFdpbmRvd0xvbmdQdHIuCgoJKiBkbGxzL21sYW5nL21sYW5nLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIG1sYW5nIHJldHVybiB0aGUgc2FtZSBjb2RlIHBhZ2UgZGVzY3JpcHRpb25zIGFzIFdpbmRvd3MsIHNvbWUKCWFwcGxpY2F0aW9ucyBkZXBlbmQgb24gaXQuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9EZS5yYywgcHJvZ3JhbXMvd2luZW1pbmUvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL0VzLnJjLCBwcm9ncmFtcy93aW5lbWluZS9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvSXQucmMsIHByb2dyYW1zL3dpbmVtaW5lL05sLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9QdC5yYywgcHJvZ3JhbXMvd2luZW1pbmUvUnUucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL1NpLnJjLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CgktIFJlbW92ZSBvYnNvbGV0ZSBoYW5kbGluZyBvZiBXSU5FX1NUUklDVC9OVUxMX0hBTkRMRS4KCS0gQWxsb3cgbW9yZSBjaGFyYWN0ZXJzIGZvciBXaW5kb3cgdGl0bGUgKGZvciBGciBsb2NhbGUpLgoJLSBIYXJkY29kZSB0aGUgaWNvbiBuYW1lIC0gc28gdGhhdCBpdCdzIGluZGVwZW5kZW50IG9mIGxvY2FsZS4KCS0gU2hvcnRlbiB0aGUgdGV4dCBpbiB0aGUgQWJvdXQgYm94IHNvIHRoYXQgaXQgZG9lc24ndCB3cmFwLgoJLSBVc2UgSEtDVSBpbnN0ZWFkIG9mIEhLTE0gZm9yIHNhdmluZyBzdHVmZi4KCS0gU2F2ZSBZUG9zIHByb3Blcmx5LgoJLSB1c2UgQWRqdXN0V2luZG93UmVjdCBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIHRoZSB3aW5kb3cgc2l6ZSB1c2luZwoJICBHZXRTeXN0ZW1NZXRyaWNzCgktIENvcGUgd2l0aCB0aGUgdXNlciBtb3ZpbmcgdGhlIHdpbmRvdyBvZmZzY3JlZW4gYW5kIG1vdmUgaXQgYmFjay4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJQ2hhbmdlIHZhcmlhYmxlIG5hbWUgZnJvbSBsIHRvIGsuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdHJhc2ggdGhlIGRzdCB2YXJpYW50IGlmIHdlIGNhbid0IGRvIHRoZSB0eXBlIGNvbnZlcnNpb24uCglBZGQgYSB0ZXN0IGZvciB0aGlzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIEhhbmRsZSAiLiIgYW5kICIuLiIgYXMgc3BlY2lhbCBjYXNlIGFuZCBtb3ZlIHRoZW0gYXQgdGhlIHZlcnkgZmlyc3QKCSAgYmVnaW5uaW5nIG9mIGRpcmVjdG9yeSBsaXN0aW5ncy4KCS0gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSB3U3RyaW5nVGFibGVPZmZzZXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglTdG9yZSBhYnNvbHV0ZSBwYXRoIGluIC5sbmsgZmlsZS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXZvaWQgVy0+QSB0cmFuc2l0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVdlIG5vdyBoYXZlIElDQ19MSU5LX0NMQVNTLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVdlIG5vIGxvbmdlciBoYXZlIGEgc2VwYXJhdGUgc2V0dXB4LyBETEwgZGlyLgoKCSogZGxscy9jb21jdGwzMi9zdHJpbmcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFudXAgVy0+QSB0cmFuc2l0aW9uLgoKCSogZGxscy9zaGx3YXBpL3VybC5jLCBpbmNsdWRlL3NobHdhcGkuaDoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCU1vdmUgVVJMX1NDSEVNRSB0eXBlZGVmIHRvIG1hdGNoIFBTREsuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2Ntcy8uY3ZzaWdub3JlLCBkbGxzL21zY21zL01ha2VmaWxlLmluLCBkbGxzL21zY21zL21zY21zLnNwZWMsCgkgIGRsbHMvbXNjbXMvbXNjbXNfbWFpbi5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2ljbS5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglCZWdpbm5pbmdzIG9mIGFuIE1TQ01TIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIExpdHRsZUNNUy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBmb3IgT0xFUGljdHVyZUltcGxfU2F2ZS4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJTW92ZWQgVFJBQ0VzIHRvIHRoZSBiZWdpbm5pbmcgb2YgZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50IElTaGVsbExpbmtBOjpSZXNvbHZlIGFuZCBJU2hlbGxMaW5rVzo6UmVzb2x2ZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3ZlcnNpb24uaCwKCSAgZGxscy9zaGVsbDMyL3ZlcnNpb24ucmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglTaGFyZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGJldHdlZW4gRGxsR2V0VmVyc2lvbiBhbmQgcmVzb3VyY2UgZmlsZS4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzogUmV2ZXJ0IGJyb2tlbiBjaGFuZ2UgaW4gcHJldmlvdXMgcGF0Y2guCgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCU1vdmVkIGNvZGUgZnJvbSBDcmVhdGVUaHJlYWQgdG8gQ3JlYXRlUmVtb3RlVGhyZWFkLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlMzIvdGVzdHMvcHJvcHZhcmlhbnQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvcXVhcnR6L2VudW1yZWdmaWx0ZXJzLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsCgkgIGRsbHMvc2V0dXBhcGkvZGlza3NwYWNlLmMsIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsCgkgIGRsbHMvc2V0dXBhcGkvcXVldWUuYywgZGxscy90dHlkcnYvcGFsZXR0ZS5jLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvdXNlci9jb21tMTYuYywgZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3V4dGhlbWUvc3R5bGVtYXAuYywKCSAgZGxscy91eHRoZW1lL3N5c3RlbS5jLCBkbGxzL3dpbmVkb3MvZG9zY29uZi5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgZGxscy93aW5lZG9zL2lvcG9ydHMuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVkb3MvdnhkLmMsCgkgIGRsbHMvd2luZXBzL2NsaXBwaW5nLmMsIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsIGRsbHMvd2luZXBzL3BzLmMsCgkgIGRsbHMvd2luZXBzL3RleHQuYywgZGxscy93aW5lcHMvdHlwZTFhZm0uYywgZGxscy93aW5lcHMvdHlwZTQyLmMsCgkgIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbm1tLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW50YWIzMi9jb250ZXh0LmMsIGxpYnMvd2luZS9kZWJ1Zy5jLAoJICBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvZGJnY2hubC5jLCBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmMsCgkgIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2luZWJvb3Qvd2luZWJvb3QuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLCBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9icmVhay5jLCBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsCgkgIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKMjAwNC0wOS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmg6CglHZXQgcmlkIG9mIHRoZSBhc3NlbWJseSBjb2RlLCBpdCBkb2Vzbid0IHJlYWxseSBpbXByb3ZlIGFueXRoaW5nCgkocmVwb3J0ZWQgYnkgUmVpbiBLbGF6ZXMpLgoKCSogcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciB0aGUgQ1NJRExfQ09NTU9OXyogbG9jYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IENTSURMX0NPTU1PTl97U1RBUlRNRU5VLFBST0dSQU1TLERFU0tUT1BESVJFQ1RPUll9IHNvIHRoZXkgYWxsIHVzZQoJcGF0aHMgaW4gJ0FsbCBVc2VycycgbGlrZSBDU0lETF9DT01NT05fU1RBUlRVUC4KCVRoZSBDU0lETF9DT01NT05fUFJPR1JBTVMgZml4IHNvbHZlcyBtYW55IG1lbnUgY3JlYXRpb24gcHJvYmxlbXMuCgoJKiBkbGxzL2NvbWN0bDMyL2hvdGtleS5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFN0YXR1cyB1cGRhdGUuCgktIFNob3VsZCBjcmVhdGUgSE9US0VZX0lORk8gc3RvcmFnZSBpbiBXTV9OQ0NSRUFURSByYXRoZXIgdGhhbiBpbgoJICBXTV9DUkVBVEUgc28gdGhhdCB3ZSBjYW4gYWxzbyBhZGQgdGhlIFdTX0VYX0NMSUVOVEVER0Ugc3R5bGUuCgktIFJlbW92ZSBjb2RlIHRoYXQgZHJhd3MgdGhlIGNsaWVudCBlZGdlOyBpdCBpcyBhbHJlYWR5IGRyYXduIGJ5CgkgIERlZldpbmRvd1Byb2MuCgoJKiBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCU1hdGNoIGNsYXNzIG5hbWUgdXNlZCBieSBXaW5kb3dzLgoKCSogdG9vbHMvd2lkbC9wcm94eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglWYXJpb3VzIGZvcm1hdHRpbmcgZml4ZXMuCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC5jLCBkbGxzL2RpbnB1dC9tb3VzZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBkeDMgY2FwYWJpbGl0aWVzLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCURvbid0IGhpZGUgYW5kIHJlc3RvcmUgdGhlIHdpbmRvdyB3aGVuIGNoYW5naW5nIGl0IHRvIGJlIGEgcG9wdXAKCXN0eWxlLgoKCSogd2luZG93cy9tZGkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBXTV9NRElSRUZSRVNITUVOVSBmb3IgdGhlIGNhc2Ugd2hlbiBzZXBhcmF0b3IgaXMgYXQgdGhlIHBvc2l0aW9uCgkwLgoKCSogZGxscy9pdHNzLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwgaW5jbHVkZS8uY3ZzaWdub3JlOgoJSWdub3JlIHRoZSBnZW5lcmF0ZWQgaGVhZGVyIGZpbGVzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvaXRzcy9NYWtlZmlsZS5pbiwgZGxscy9pdHNzL2l0c3MuaCwKCSAgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9kY29tLmgsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvYWN0aXZzY3AuaCwgaW5jbHVkZS9hbXN0cmVhbS5oLCBpbmNsdWRlL2FtdmlkZW8uaCwKCSAgaW5jbHVkZS9hdXN0cmVhbS5oLCBpbmNsdWRlL2NvbWNhdC5oLCBpbmNsdWRlL2Rkc3RyZWFtLmgsCgkgIGluY2x1ZGUvZGlzcGV4LmgsIGluY2x1ZGUvZG9jb2JqLmgsIGluY2x1ZGUvZXhkaXNwLmgsCgkgIGluY2x1ZGUvbWxhbmcuaCwgaW5jbHVkZS9tbXN0cmVhbS5oLCBpbmNsdWRlL29haWRsLmgsCgkgIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGVpZGwuaCwKCSAgaW5jbHVkZS9wcm9waWRsLmgsIGluY2x1ZGUvcHN0b3JlLmgsIGluY2x1ZGUvc2VydnByb3YuaCwKCSAgaW5jbHVkZS9zaGxkaXNwLmgsIGluY2x1ZGUvc2hvYmppZGwuaCwgaW5jbHVkZS9zaHR5cGVzLmgsCgkgIGluY2x1ZGUvc3RybWlmLmgsIGluY2x1ZGUvdW5rbnduLmgsIGluY2x1ZGUvdXJsbW9uLmgsCgkgIGluY2x1ZGUvd3R5cGVzLmg6CglCdWlsZCB0aGUgLmggZmlsZXMgZnJvbSB0aGVpciBpZGwgc291cmNlIGF0IGNvbXBpbGUgdGltZSwgYW5kIHJlbW92ZQoJdGhlbSBmcm9tIENWUy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJVXNlIEludGVybG9ja2VkRGVjcmVtZW50IGFuZCBJbnRlcmxvY2tlZEluY3JlbWVudCBpbnN0ZWFkIG9mICsrLy0tLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgbWVzc2FnZSBmbG93IGZvciBNREkgY3JlYXRpb24vYWN0aXZhdGlvbi9kZXN0cnVjdGlvbiBtb3JlIGxpa2UgaW4KCVdpbmRvd3MuIEFkZCBhIGJ1bmNoIG9mIE1ESSBtZXNzYWdlIHRlc3RzLgoKCSogZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCU1ha2UgUnRsQ3JlYXRlVXNlclRocmVhZCBmYWlsIGlmIHByb2Nlc3MgaGFuZGxlIGlzIG5vdCBmb3IgdGhlIGN1cnJlbnQKCXByb2Nlc3MuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCVBhc3MgYXJndW1lbnRzIHRvIHRoZSBzZXJ2aWNlIHByb2dyYW0uCgoyMDA0LTA5LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglBZGRlZCAvcmVnc2VydmVyIGFuZCAvdW5yZWdzZXJ2ZXIgb3B0aW9ucy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL2l0c3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGluY2x1ZGUvTWFrZWZpbGUuaW46CglCdWlsZCBpZGwgZmlsZXMgYXMgcGFydCBvZiB0aGUgbm9ybWFsIGJ1aWxkIHByb2Nlc3MuCgoJKiBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNvcnJlY3Qgc2V0dGluZyBvZiBkZWZhdWx0IG1lbnUgaXRlbSBpbiBzaGVsbCBjb250ZXh0IG1lbnVzLgoKCSogZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW4sIGZvbnRzL3dpbmVfc2Fuc19zZXJpZi5zZmQ6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgMjAgcHBlbSBzdHJpa2Ugd2l0aCBjcDEyNTIgY292ZXJhZ2UgdG8gV2luZSBTYW5zIFNlcmlmLgoJQWRkIFUrMjAxYSB0byBhbGwgc3RyaWtlcy4KCgkqIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3VzZXIvbWVudS5jLCB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgbWVudSBjb2RlIGNvcGUgd2l0aCBXTV9TWVNLRVkqL1dNX1NZU0NIQVIgbWVzc2FnZXMuCglVbmJsb2NrIG1lbnUgbG9vcCBpZiBhIHdpbmRvdyBiZWluZyBkZXN0cm95ZWQgb3ducyBhIHRyYWNrZWQgbWVudS4KCgkqIGRsbHMvZ2RpL2RpYi5jLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCU1pY2hhZWwgS2F1Zm1hbm4gPGhhbGxvQG1pY2hhZWwta2F1Zm1hbm4uY2g+CglGaXggYSByZWdyZXNzaW9uIGNhdXNlZCBieSBhbiBlYXJsaWVyIHBhdGNoIGZvciBDcmVhdGVESUJpdG1hcC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb1N1c3BlbmRDbGFzc09iamVjdHMgc3R1YiBpbXBsZW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvd2luc3ZjLmg6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglBZGRlZCBzZXJ2aWNlIGRhdGFiYXNlIG5hbWVzLgoKCSogZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIFJFR0ZJTFRFUjIgc3RydWN0dXJlIHdpdGggZHdWZXJzaW9uIGVxdWFsIHRvIDEgd2hlbgoJcmVnaXN0ZXJpbmcgZmlsdGVycy4KCUZpeGVkIGRlZmF1bHQgY2F0ZWdvcnkgd2hlbiBSZWdpc3RlckZpbHRlciBpcyBjYWxsZWQgd2l0aG91dCBvbmUKCXNwZWNpZmllZC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyByZXBsYWNlIHdoYXRldmVyIGlzIGFscmVhZHkgaW4gdGhlIEhUVFAgIkhvc3QiIGhlYWRlci4KCgkqIHNlcnZlci9mZC5jOiBNb3ZlZCB0aW1lb3V0IHByb2Nlc3NpbmcgdG8gYSBzZXBhcmF0ZSBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0NuLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Dcy5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfRGUucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0VuLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fcy5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRnIucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0l0LnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9KYS5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfS28ucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX05sLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9QbC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfUHQucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1J1LnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9TaS5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfVGgucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1VrLnJjLAoJICBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJLSBJbXBsZW1lbnQgUFNNX0lOREVYVE9JRCwgUFNNX0lOREVYVE9QQUdFIGFuZCBQU01fUEFHRVRPSU5ERVggbWVzc2FnZXMuCgktIFBhcnRpYWxseSBpbXBsZW1lbnQgdGhlIFBTSF9XSVpBUkRDT05URVhUSEVMUCBhbmQgUFNIX05PQ09OVEVYVEhFTFAKCSAgc3R5bGVzLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLAoJICBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS93dHlwZXMuaCwKCSAgaW5jbHVkZS93dHlwZXMuaWRsOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBjb3JyZWN0IHRhZyBuYW1lcyBmb3IgY29tcGF0YWJpbGl0eSB3aXRoIGZ3ZCBkZWNscy4KCVNvbWUgb2xkIGNvZGUgY2hlY2tzIHRoYXQgX1dJTkRFRl8gaXMgZGVmaW5lZCBpbiB3aW5kZWYuaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglNYWtlIGRyaXZlIGxldHRlcnMgaW4gUElETHMgYWx3YXlzIHVwcGVyY2FzZSB0byBlbmFibGUgUElETAoJY29tcGFyaXNvbi4KCgkqIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jOiBNaWNoYWVsIEthdWZtYW5uIDxoYWxsb0BtaWNoYWVsLWthdWZtYW5uLmNoPgoJQWRkZWQgYSAzRCBib3JkZXIgZm9yIE5vdGVwYWQncyBlZGl0IGNvbnRyb2wuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBub3ZlbGwuY29tPgoJU2FmZUFycmF5R2V0RWxlbWVudCBvbiBhIFZBUklBTlQgYXJyYXkgZG9lcyBub3QgZnJlZSB0aGUgcHJldmlvdXMKCVZBUklBTlQgaW4gdGhlIHBhc3NlZCBwb2ludGVyLiBBZGRlZCB0ZXN0Y2FzZS4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMy5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZGVkIHN1cHBvcnQgZm9yIGludDMzIHNob3cvaGlkZSBtb3VzZSBjdXJzb3IgY2FsbHMuCgoJKiB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3Byb3h5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIHRoZSBoYW5kbGluZyBvZiBjb21wbGV4IGRhdGEgdHlwZXMgKHN0cmluZ3MgYW5kIHN0cnVjdHMpLgoKCSogZGxscy94MTFkcnYvc2Nyb2xsLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVgxMURSVl9TY3JvbGxEQyBzaG91bGQgbm90IGhhdmUgYSBXSU5BUEkgYXR0cmlidXRlLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb2N1bWVudCBzdGF0dXMgb2YgY29udHJvbCBhZ2FpbnN0IHY2LjAgb2YgbmF0aXZlIHZlcnNpb24uCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUludGVybmV0U2V0U3RhdHVzQ2FsbGJhY2sgY2FuIGJlIHVzZWQgb24gYW55IGhhbmRsZSBhbmQgY2FsbGJhY2tzIGFyZQoJaW5oZXJpdGVkIGJ5IGRlcml2ZWQgaGFuZGxlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZpeCBzb21lIFRSQUNFcwoJLSBNb3JlIEEtPlcgY29udmVyc2lvbnMgbWlzc2VkIGJ5IHByZXZpb3VzIHBhdGNoLgoJLSBGaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiB2YWxpZGF0aW5nIGRyYWctbi1kcm9wIGZyb20gYXZhaWxhYmxlCgkgIGJ1dHRvbnMgbGlzdCBib3ggdG8gYWN0dWFsIGJ1dHRvbnMgbGlzdCBib3guCgktIFVuaWNvZGUgZmxhZyBzaG91bGQgYmUgYmFzZWQgb24gdGhlIG5vdGlmaWNhdGlvbiB3aW5kb3cuCgoyMDA0LTA5LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2lucG9zLmMsIHNlcnZlci9yZWdpb24uYywgc2VydmVyL3VzZXIuaCwKCSAgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJRG9uJ3QgYm90aGVyIHRvIHJldHVybiBwYXJ0aWFsIHJlZ2lvbiBkYXRhIGluIGdldF93aW5kb3dfcmVnaW9uIGFuZAoJZ2V0X3Zpc2libGVfcmVnaW9uLCByZXR1cm4gU1RBVFVTX0JVRkZFUl9PVkVSRkxPVyBpbnN0ZWFkLgoKCSogZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLAoJICBkbGxzL2FkdmFwaTMyL2NyeXB0X3NoYS5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHRfc2hhLmM6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglJbXBsZW1lbnQgQV9TSEEqIGZ1bmN0aW9ucyBwcmVzZW50IGluIFdpbmRvd3MgWFAgYW5kIGxhdGVyIHN5c3RlbXMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHBhdGhzIGVuZCB3aXRoIGEgc2xhc2ggYmVmb3JlIGNvbmNhdGVuYXRpbmcgZmlsZSBuYW1lcy4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2xlYW51cCByZWZlcmVuY2UgY291bnRpbmcuCglBZGRSZWYgYW5kIFJlbGVhc2UgcmV0dXJuIFVMT05HLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglVc2UgSW50ZXJsb2NrZWRJbmNyZW1lbnQvSW50ZXJsb2NrZWREZWNyZW1lbnQgZm9yIHJlZmVyZW5jZSBjb3VudGluZy4KCUZpeCBidWcgaW4gZWZmZWN0IGVudW1lcmF0aW9uIHRoYXQgY3Jhc2hlZCBkeGNhcHN2aWV3ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBVbmljb2RlIHdpbmRvdyBtZXNzYWdlcy4KCjIwMDQtMDktMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbiwgZm9udHMvd2luZV9tYXJsZXR0LnNmZDoKCVRyYW5zR2FtaW5nCglBZGQgYSBNYXJsZXR0IHJlcGxhY2VtZW50IGZvbnQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW5pbmV0L2ludGVybmV0LmgsCgkgIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglBdm9pZCB1c2luZyBzb2NrbGVuX3QuCgoJKiBkbGxzL2dkaS90ZXN0cy9iaXRtYXAuYywgZGxscy94MTFkcnYvYml0Ymx0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2hlbiB3ZSBibGl0IHdpdGggYSBtb25vY2hyb21lIGRpYnNlY3Rpb24gYXMgdGhlIHNvdXJjZSB3ZSBzaG91bGQgdXNlCgl0aGUgY29sb3VyIHRhYmxlIG9mIHRoYXQgZGliLgoJQWRkZWQgYSB0ZXN0IGZvciB0aGlzLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJVXNlIEludGVybG9ja2VkRGVjcmVtZW50IGFuZCBJbnRlcmxvY2tlZEluY3JlbWVudCBpbnN0ZWFkIG9mICsrLy0tLgoKCSogZGxscy91c2VyL2VkaXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIHBhaW50aW5nIHRoZSBib3JkZXIgaWYgV1NfRVhfQ0xJRU5URURHRSBpcyBub3Qgc2V0LgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gY29ycmVjdCBDb252ZXJ0U3RyaW5nU2lkVG9TaWRXIGFuZCBDb252ZXJ0U2lkVG9TdHJpbmdTaWRXLCB3aXRoCgkgIHRlc3RzCgktIGFkZCBDb252ZXJ0U3RyaW5nU2lkVG9TaWRBCgktIGFkZCBtaXNzaW5nIGV4cG9ydHMgZm9yIENvbnZlcnRTdHJpbmdTaWRUb1NpZEEvVwoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglQYXNzIGFyZ3ZbMF0gKHNlcnZpY2UgbmFtZSkgdG8gdGhlIHNlcnZpY2UgcHJvZ3JhbS4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2JpdG1hcC5jLCBkbGxzL3gxMWRydi9kaWIuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSXQncyBpbXBvcnRhbnQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgZGliIGNvbG91ciB0YWJsZSBhbmQgbm90IGp1c3QgdGhlCgljb2xvdXIgbWFwcGluZyBhc3NvY2lhdGVkIHdpdGggYSBkaWIgc2VjdGlvbiAtIGl0J3MgdGhpcyB0YWJsZSB0aGF0CglHZXRESUJDb2xvclRhYmxlIHNob3VsZCByZXRyaWV2ZS4KCUFkZGVkIHNvbWUgR2V0RElCQ29sb3JUYWJsZSB0ZXN0cy4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgY2FzZSBmb3IgV01fS0VZKiB0byBXTV9TWVNLRVkqIG1lc3NhZ2UgY29udmVyc2lvbi4KCgkqIGRsbHMvdXNlci9tZW51LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBY2NlcHQgV01fU1lTQ0hBUiBtZXNzYWdlIGZvciBwcm9jZXNzc2luZyBpbiBUcmFuc2xhdGVBY2NlbGVyYXRvclcuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6CglBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJQWRkZWQgc3R1YnMgZm9yIE1ENCwgTUQ1IGFuZCBTSEEgZnVuY3Rpb25zLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3VybC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgLVdzaWduZWQtY29tcGFyZSB3YXJuaW5ncy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVVzZSBJbnRlcmxvY2tlZERlY3JlbWVudCBhbmQgSW50ZXJsb2NrZWRJbmNyZW1lbnQgaW5zdGVhZCBvZiArKy8tLS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNsZWFudXAgcmVmZXJlbmNlIGNvdW50aW5nLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglBZGQgZGUtaW50ZXJsZWF2aW5nIGZvciBHSUYgaW1hZ2VzLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIERvbid0IHVzZSBUcmFja01vdXNlRXZlbnRzL1dNX01PVVNFTEVBVkUgQVBJIGZvciBoYW5kbGluZyB0aGUgaG90CgkgIGJ1dHRvbjsgdXNlIHBsYWluIG1vdXNlIGNhcHR1cmUgaW5zdGVhZCBsaWtlIG5hdGl2ZS4KCS0gUmV0dXJuIG9ubHkgSFRUUkFOU1BBUkVOVC9IVENMSUVOVCBmcm9tIFdNX05DSElUVEVTVCBhbmQgcmVtb3ZlCgkgIGFzc29jaWF0ZWQgaGFja3Mgb2YgV01fU0VUQ1VSU09SLCBXTV9OQ0xCVVRUT05ET1dOIGFuZAoJICBXTV9OQ0xCVVRUT05VUC4KCS0gUmVmYWN0b3Igc3RhdGUgY2hhbmdlIGNvZGUgc28gdGhhdCBzdGF0ZSBjaGFuZ2VzIGRvbid0IGhhcHBlbiBhcwoJICBzaWRlIGVmZmVjdHMgZnJvbSBtZXNzYWdlcyBzdWNoIGFzIFdNX05DQ0FMQ1NJWkUsIGluc3RlYWQgb25seSBmcm9tCgkgIHVzZXIgaW5wdXQgbWVzc2FnZXMgbGlrZSBXTV9NT1VTRU1PVkUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJVXNlIFVuaWNvZGUgd2luZG93IG1lc3NhZ2VzLgoKCSogZGxscy9oaGN0cmwub2N4L2hoY3RybC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2h0bWxoZWxwLmg6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgaHRtbGhlbHAuaC4KCjIwMDQtMDktMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy93aW5wcm9jLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIHRoZSBXIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uIHdlcmUgd2UgY2FuLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVXNlIHRoZSBwcmVmZXJyZWQgRlRfRU5DT0RJTkcgdmFsdWVzIHJhdGhlciB0aGFuIGZ0X2VuY29kaW5nLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgYSBzdHJheSAnZWxzZScgbGVmdCBieSBhIHByZXZpb3VzIHBhdGNoLgoKCSogZGxscy9tbGFuZy9tbGFuZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gQ0xBU1NfRV9OT0FHR1JFR0FUSU9OIGlmIHBVbmtPdXRlciBpcyBub24tbnVsbC4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9sb2FkZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBGSUxFX1NIQVJFX0RFTEVURSB3aGVuIGxvYWRpbmcgbW9kdWxlcywgYXMgcnVubmluZyBhbiBleGUgdGhhdCdzCglnb2luZyB0byBiZSBkZWxldGVkIHNob3VsZCB3b3JrLgoKMjAwNC0wOS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA0MDkxNC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNC0wOS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IEplbnMgQ29sbGluIDxqZW5zLmNvbGxpbkBsYWtoZWkuY29tPgoJQWRkZWQgbG9va3VwIG9mIGVudmlyb25tZW50IHZhcnMgaW4gU0hFTExfQXJnaWZ5Vy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJUHJvcGVyIGZpbmFsaXphdGlvbiBpbiBTdGFydFNlcnZpY2VXLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgbGV0IGFwcGxpY2F0aW9ucyBhZGQgQ29ubmVjdGlvbiBoZWFkZXIgdG8gcmVxdWVzdC4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvdHdhaW4vUkVBRE1FLAoJICBkbGxzL3R3YWluL2RzX2ltYWdlLmMsIGRsbHMvdHdhaW4vZHNtX2N0cmwuYywgZGxscy90d2Fpbi90d2Fpbl9pLmgsCgkgIGRsbHMvd2luYXNwaS9hc3BpLmgsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBZGRlZCBzdHViIGZvciBOdFNodXRkb3duU3lzdGVtLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3dpbi5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQWRkZWQgc3R1YiBmb3IgU3dpdGNoRGVza3RvcC4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvcGFyc2VyLnk6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZXRlcm1pbmUgUlBDIHN0cnVjdCB0eXBlcyBtb3JlIGV4YWN0bHkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGluY2x1ZGUvY29uZmlnLmguaW46CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBdXRvZGV0ZWN0IGxpYmdpZiBzbyBleHRlbnNpb24gYW5kIHRyeSB0byBsb2FkIGl0LgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIFF1ZXJ5U2VydmljZU9iamVjdFNlY3VyaXR5LgoKCSogZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW4sIGZvbnRzL3dpbmVfY291cmllci5zZmQ6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGNwMTI1MCBnbHlwaHMgdG8gV2luZSBDb3VyaWVyLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBETExWRVJTSU9OSU5GTzIgaW4gRGxsR2V0VmVyc2lvbi4KCgkqIGluY2x1ZGUvd2luZS9ycGNmYy5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtaXNzaW5nIHJwYyB0eXBlLgoKCSogZGxscy9tbGFuZy9tbGFuZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbiBBZGRSZWYgYW5kIFJlbGVhc2UuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSBub3QgdG8gaW50ZXJmZXJlIHdpdGggdGhlIGxhc3RlcnJvciB2YWx1ZSByZXR1cm5lZCBieSB0aGUKCUNTUCBpbiBDcnlwdEFjcXVpcmVDb250ZXh0QS4KCgkqIERFVkVMT1BFUlMtSElOVFM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkZXYgaGludCBsaW5lIGZvciBpdHNzIChwYXJ0IG9mIGh0bWwgaGVscCkuCgoJKiBkbGxzL2tlcm5lbC9yZXNvdXJjZS5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbXBsZW1lbnQgQmVnaW5VcGRhdGVSZXNvdXJjZSBhbmQgVXBkYXRlUmVzb3VyY2UuCglTdHViIG91dCBhIGJpdCBtb3JlIG9mIEVuZFVwZGF0ZVJlc291cmNlLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJU3RhdHVzIHVwZGF0ZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE1ha2UgY3VzdG9taXphdGlvbiBsaXN0IGJveGVzIGludG8gZHJhZyBsaXN0IGJveGVzLgoJLSBPcmRlciBhdmFpbGFibGUgYnV0dG9ucyBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIG5hdGl2ZSB2ZXJzaW9uLgoKCSogZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIENsZWFyIGRhdGEgc3RydWN0dXJlIGFmdGVyIGRyYWdnaW5nLgoJLSBXTV9TRVRDVVJTT1IgZG9lcyBub3QgbmVlZCB0byBiZSBoYW5kbGVkIGFzIGl0IGlzIG5vdCBzZW50IHdoaWxzdAoJICB0aGUgd2luZG93IGlzIGNhcHR1cmVkLgoJLSBNYWtlIHVEcmFnTGlzdE1lc3NhZ2Ugbm9uLXN0YXRpYyBzbyB0aGF0IHdlIGNhbiByZS11c2UgaXQKCSAgZWxzZXdoZXJlLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBSb2RlcmljayBDb2xlbmJyYW5kZXIgPHRodW5kZXJiaXJkMmtAZ214Lm5ldD4KCUdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglNYWtlIFdTMl9zZW5kKCksIFdTX2dldHNvY2tvcHQoKSwgYW5kIFdTX3NldHNvY2tvcHQoKSBJUFggc3VwcG9ydCB3b3JrCglvbiBGcmVlQlNELgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJU3RvcCB0ZXN0aW5nIGEgc2VxdWVuY2UgdXBvbiB0aGUgZmlyc3QgZXhwZWN0ZWQgZXJyb3IsIHRvIGF2b2lkCglzcHVyaW91cyBlcnJvcnMgbGF0ZXIgb24uCgoJKiBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLAoJICBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglTZXQgY2xhc3MgaGJyQmFja2dyb3VuZCBhbmQgc3R5bGUgdG8gdGhlIHNhbWUgYXMgbmF0aXZlLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFNldCBoYnJCYWNrZ3JvdW5kIGNsYXNzIHByb3BlcnR5IHRvIHNhbWUgdmFsdWUgYXMgbmF0aXZlLgoJLSBVc2UgVW5pY29kZSB3aW5kb3cgZnVuY3Rpb25zIGluc3RlYWQgb2YgQU5TSS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU2V0IGhickJhY2tncm91bmQgY2xhc3MgcHJvcGVydHkgdG8gc2FtZSB2YWx1ZSBhcyBuYXRpdmUuCgktIFJlbW92ZSBubyBsb25nZXIgbmVlZGVkIFdNX0VSQVNFQktHTkQgaGFuZGxlci4KCS0gVXNlIFVuaWNvZGUgd2luZG93IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIEFOU0kuCgoJKiBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlmIHdlIGRvIG5vdCBoYXZlIGFuIEljb25zRGlyLCB1c2UgdGhlIHRlbXAgZGlyZWN0b3J5LgoKMjAwNC0wOS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZvbGRlci5jOgoJVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglJU2hlbGxGb2xkZXI6OkNvbXBhcmVJRHMgLSByZXR1cm4gb25seSAtMS8wLzEgaW4gbG93ZXIgMTYgYml0LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2dkaS9lbmhtZXRhZmlsZS5jLCBkbGxzL2dkaS93aW5nLmMsCgkgIHdpbmRvd3MvZGNlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ3JlYXRlRENBIC0+IENyZWF0ZURDVwoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRml4IHJlc2l6aW5nIG9mIHdpemFyZHMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrMi5oOgoJQW5kcmVhcyBSb3NlbmJlcmcgPGFuZHJlYXNfcm9zZW5iZXJnQHdlYi5kZT4KCUltcGxlbWVudGF0aW9uIG9mIFdTQVN0cmluZ1RvQWRkcmVzcyhBL1cpLCBXU0FIdG9ubCwgV1NBSHRvbnMuCgoJKiBkbGxzL2dkaS9kaWIuYywgZGxscy9nZGkvZW5obWV0YWZpbGUuYywgZGxscy9nZGkvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9nZGkvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL3Rlc3RzL2JpdG1hcC5jLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYzoKCU1pY2hhZWwgS2F1Zm1hbm4gPGhhbGxvQG1pY2hhZWwta2F1Zm1hbm4uY2g+CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ3JlYXRlRElCaXRtYXAgc2hvdWxkIHJldHVybiBiaXRtYXBzIGF0IHRoZSBkZXB0aCBvZiB0aGUgc3VwcGxpZWQgZGMuCglBZGQgYSB0ZXN0IHRvIGV4ZXJjaXNlIHRoaXMgYmVoYXZpb3VyLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJU3RvcmUgSFRUUCBob3N0IGhlYWRlciBpbiB0aGUgc2FtZSB3YXkgYXMgbW9zdCBvdGhlciBoZWFkZXJzLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBIQ0JUX1NZU0NPTU1BTkQgaG9vaywgYWRkIGxvZ2dpbmcgZm9yIEhDQlRfU1lTQ09NTUFORAoJaW4gdGhlIG1lc3NhZ2UgdGVzdC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBoSUMuCgktIFJlbW92ZSBjaGVjayBmb3IgSFRUUCBzaWduYXR1cmUgaW4gc2VydmVyIHJlcGx5LgoJLSBGaXggc3R1cGlkIGVycm9yIHdpdGggZnJlZWluZyB0aGUgd3JvbmcgYnVmZmVyLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCU1ha2Ugc3VyZSBUcmVlVmlldyBnZXRzIHJlZHJhd24gYWZ0ZXIgY2FsbGluZyBFbnN1cmVWaXNpYmxlLgoKCSogZm9udHMvLmN2c2lnbm9yZSwgZm9udHMvTWFrZWZpbGUuaW4sIGZvbnRzL3dpbmVfc3lzdGVtLnNmZDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgY3AxMjUwIGdseXBocyB0byBXaW5lIFN5c3RlbS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpbGwgdGhlIGFyZWEgbmV4dCB0byB3YXRlcm1hcmsgYml0bWFwIHdpdGggd2luZG93IGNvbG9yIGFuZCBzdWJjbGFzcwoJZXh0ZXJpb3Igd2l6YXJkIHBhZ2VzIHRvIHN1cHByZXNzIGRyYXdpbmcgYmFja2dyb3VuZC4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBkZXZpY2VzLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgYnVuY2ggb2YgbmV3IE1ESSB0ZXN0cy4KCgkqIE1ha2UucnVsZXMuaW46IFR1cm4gb24gd2FybmluZ3Mgd2hlbiBidWlsZGluZyB0aGUgLmRlZiBmaWxlLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzoKCURvbid0IHRyeSB0byBzdGF0IG5ldHdvcmsgbW91bnRzIGluIHBhcnNlX21vdW50X2VudHJpZXMsIHdlIGNhbid0CglyZXR1cm4gYSBtZWFuaW5nZnVsIGRldmljZSBmb3IgdGhlbSBhbnl3YXkgKHN1Z2dlc3RlZCBieSBSb2JlcnQKCVNoZWFybWFuKS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IFNIU2ltdWxhdGVEcm9wLCBNSU1FX0dldEV4dGVuc2lvbkEvVywgU3RyQ3B5TlhBL1csCglTSEFuc2lUb0Fuc2ksIFNIVW5pY29kZVRvVW5pY29kZS4KCgkqIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLCBkbGxzL21hcGkzMi9wcm9wLmMsCgkgIGRsbHMvbWFwaTMyL3Rlc3RzL3V0aWwuYywgZGxscy9tYXBpMzIvdXRpbC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBIckdldE9uZVByb3AsIEhyU2V0T25lUHJvcCwgRlByb3BFeGlzdHMsIEZyZWVQYWRybGlzdCwKCUZyZWVQcm93cywgU2NEdXBQcm9wc2V0LCBIZXhGcm9tQmluLCBGQmluRnJvbUhleCwgRkVxdWFsTmFtZXMuCglGaXggMiBjYXNlcyB3aGVyZSBpdGVyYXRpbmcgb3ZlciB2YWx1ZSBhcnJheXMgcmV1c2VkIGEgbG9vcCB2YXJpYWJsZQoJaW5jb3JyZWN0bHkuCgoJKiB0b29scy93aW5lLmluZjogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUhlbHYgc2hvdWxkIGJlIGFuIGFsaWFzIGZvciBNUyBTYW5zIFNlcmlmLiBTcG90dGVkIGJ5IEZyYW5jb2lzLgoKCSogZGxscy90d2Fpbi9jYXBhYmlsaXR5LmMsIGRsbHMvdHdhaW4vZHNfYXVkaW8uYywKCSAgZGxscy90d2Fpbi90d2FpbjE2X21haW4uYywgZGxscy90d2Fpbi90d2FpbjMyX21haW4uYywKCSAgZGxscy90d2Fpbi90d2Fpbl9pLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHdlIGluY2x1ZGUgY29uZmlnLmggYmVmb3JlIGluY2x1ZGluZyB0d2Fpbl9pLmguCglGaXhlcyBhbiBhY3RpdmVEUy5kZXZpY2VIYW5kbGUgY29ycnVwdGlvbiBidWcuCgoJKiB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3Byb3h5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIHByb3h5IGNvZGUgZ2VuZXJhdGVkIGZvciBvYWlkbC5pZGwuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVNlbmQgY29ycmVjdCB0cmFjaW5nIG5vdGlmaWNhdGlvbiBtZXNzYWdlcy4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCAoZmluYWxseSkgU2Nyb2xsQ29uc29sZVNjcmVlbkJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsYml0bWFwLmMsIGRsbHMvbnRkbGwvc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZm9udHMvd2luZV9zYW5zX3NlcmlmLnNmZDogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgc2l6ZSBvZiB0aGUgJ0cnIGF0IDE2IHBwZW0uIFRoYW5rcyB0byBEbWl0cnkgZm9yIHNwb3R0aW5nCgl0aGlzLgoKCSogZGxscy9nZGkvZGMuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gREMgbWFwcGluZyBjaGFuZ2VzIHJlc2VsZWN0IGN1cnJlbnQgcGVuIHRvIHVwZGF0ZSBwaHlzaWNhbAoJd2lkdGguCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L21vdXNlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIGJ1ZmZlcmVkIG1vZGUgdG8gam95c3RpY2suCglBZGQgSm95c3RpY2tXSW1wbF9HZXREZXZpY2VJbmZvLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglMb2cgZmxhZ3MgZm9yIFdNX1dJTkRPV1BPU0NIQU5HSU5HL1dNX1dJTkRPV1BPU0NIQU5HRUQgbWVzc2FnZXMsIG1ha2UKCXRoZSB0ZXN0cyBwYXNzIG9uIFdpbjk1L1dpbjk4L1dpbjIwMDAsIGZpeCBzb21lIHRlc3QgZmFpbHVyZXMgdW5kZXIKCVdpbmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglDb3JyZWN0IGRpc3BsYXlpbmcgb2Ygd2l6YXJkIHN1YnRpdGxlLgoKMjAwNC0wOS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZSBsb2NrIG5hbWUgZnJvbSBsb2NrIGRlYnVnIHN0cnVjdHVyZSBiZWZvcmUgZGVsZXRpb24gc28gaXQgZ2V0cwoJZnJlZWQgcHJvcGVybHkuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBVc2UgRkRJIGZ1bmN0aW9ucyBsaWtlIG5hdGl2ZSBpbnN0ZWFkIG9mIGFkdnBhY2suRXh0cmFjdEZpbGVzIGFuZAoJICBjYWJpbmV0LkV4dHJhY3QgKHdoaWNoIGRvZXNuJ3Qgd29yayB3aXRoIG5hdGl2ZSBjYWJpbmV0KQoJLSBJZiBNb3ZlRmlsZSBmYWlscyB0aGUgbWVzc2FnZSBub3cgZGlzcGxheWVzIHRoZSBjb3JyZWN0IGxhc3QgZXJyb3IKCSAgYW5kIGJhaWxzIHJhdGhlciB0aGFuIHNpbGVudGx5IGJyZWFraW5nIHRoZSBpbnN0YWxsLgoKCSogZGxscy91c2VyL21lbnUuYzogTWljaGFlbCBLYXVmbWFubiA8aGFsbG9AbWljaGFlbC1rYXVmbWFubi5jaD4KCU1ha2UgdGhlIG1lbnVzIG9mIERlbHBoaSBhcHBsaWNhdGlvbnMgd29yay4KCgkqIGRsbHMvdXNlci90ZXN0cy9kaWFsb2cuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kaWFsb2cuYzoKCVphY2ggR29ybWFuIDx6YWNoQGFyY2hldHlwZWF1Y3Rpb24uY29tPgoJVGhlIGluaXRpYWwgZGlhbG9nIGZvY3VzIHNob3VsZCBiZSBlc3RhYmxpc2hlZCBieSB0aGUgZGVmYXVsdCBoYW5kbGVyCglmb3IgU2V0Rm9jdXMoKSwgbm90IGluIHRoZSBkaWFsb2cgY3JlYXRpb24gY29kZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9kaWFsb2cuYywgd2luZG93cy9kaWFsb2cuYzoKCVphY2ggR29ybWFuIDx6YWNoQGFyY2hldHlwZWF1Y3Rpb24uY29tPgoJTW9kYWwgZGlhbG9ncyBzaG91bGQgbm90IGJlIHNob3duIHZpYSBTaG93V2luZG93IHVudGlsIHRoZSBtZXNzYWdlCglxdWV1ZSBmaXJzdCBydW5zIGVtcHR5LiBUaGlzIGFsbG93cyBhbGwgaW5pdGlhbGl6YXRpb24gdG8gY29tcGxldGUKCWJlZm9yZSBhIGRlZmF1bHQgZm9jdXMgaXMgYXNzaWduZWQuCgoJKiBkbGxzL2tlcm5lbC9tb2R1bGUuYywgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCURvbid0IHJlamVjdCBPUy8yIHByb2dyYW1zLCB0cnkgdG8gY2Fycnkgb24gaW4gRE9TIG1vZGUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvZGlhbG9nLmMsIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5yYzoKCVphY2ggR29ybWFuIDx6YWNoQGFyY2hldHlwZWF1Y3Rpb24uY29tPgoJQWRkZWQgdGVzdHMgZm9yIGRlZmF1bHQgZm9jdXMgYXNzaWdubWVudCBpbiBkaWFsb2dzLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRG9jdW1lbnQgYWxsIHRoZSBzdHJ1Y3R1cmUgbWVtYmVycyB1cCB0byBTZXNzaW9uSWQgaW4gdGhlIFBFQi4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJSW1wbGVtZW50ZWQgTG9ja1NlcnZpY2VEYXRhYmFzZSBhbmQgVW5sb2NrU2VydmljZURhdGFiYXNlLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYzogRGllZ28gUGV0dGVu8iA8ZGdwODVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJQWRkIHN1cHBvcnQgZm9yIGZpbGU6Ly8vIHVybHMgaW4gUGF0aENyZWF0ZUZyb21VcmwuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU3RyaXAgZGFuZ2xpbmcgXHJcbiBmcm9tIEhUVFBfSHR0cFNlbmRSZXF1ZXN0LgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX1BsLnJjLCBkbGxzL2F2aWZpbDMyL3JzcmMucmM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgUG9saXNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy94MTFkcnYvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXZSB3YW50IGFsbCAxYnBwIGRpYnNlY3Rpb25zIHRvIGhhdmUgYSBtb25vY2hyb21lIGJpdG1hcCBhbmQKCWV2ZXJ5dGhpbmcgZWxzZSB0byBiZSBhdCB0aGUgc2NyZWVuIGRlcHRoLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGQgdGVzdHMgb2YgVHpTcGVjaWZpY0xvY2FsVGltZVRvU3lzdGVtVGltZSBhbmQKCVN5c3RlbVRpbWVUb1R6U3BlY2lmaWNMb2NhbFRpbWUuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeGVkIFR6U3BlY2lmaWNMb2NhbFRpbWVUb1N5c3RlbVRpbWUgYW5kCglTeXN0ZW1UaW1lVG9UelNwZWNpZmljTG9jYWxUaW1lOgoJLSB0YWtlIHRoZSB0aW1lIG9mIGRheSBpbnRvIHRoZSBjYWxjdWxhdGlvbiwgc28gdGhlIGJpYXMgaXMgY2FsY3VsYXRlZAoJICBjb3JyZWN0bHkgZHVyaW5nIHRoZSB0cmFuc2l0aW9uIGRheXM7CgktIHRoZSB0cmFuc2l0aW9uIHRpbWVzIGFyZSBleHByZXNzZWQgYXMgbG9jYWwgdGltZSwgbm90IHN5c3RlbSB0aW1lOwoJLSBjb3JyZWN0IHRoZSBkYXlsaWdodCBsb2dpYyBmb3IgdXNlIG9uIHRoZSBzb3V0aGVybiBoZW1pc3BoZXJlOwoJLSBiZWF1dGlmeSBzb21lIExPTkdMT05HIGFyaXRobWV0aWMuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5zcGVjOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSW1hZ2VEaXJlY3RvcnlFbnRyeVRvRGF0YSBieSBmb3J3YXJkaW5nIGl0IHRvIHRoZSBudGRsbAoJaW1wbGVtZW50YXRpb24gb2YgdGhlIGZ1bmN0aW9uLgoKCSogdG9vbHMvd2lkbC9wcm94eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglPdXRwdXQgTmRyQ29udmVydCwgTmRyQ2xlYXJPdXRQYXJhbWV0ZXJzIGFuZCBJSUQgY29uc3RyYWludHMuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJldHVybiBlcnJvciBmcm9tIGxvdyBsZXZlbCBkcml2ZXIgd2hlbiBuZWNlc3NhcnkuCgoyMDA0LTA5LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMTYuYywKCSAgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi9jb25ucHQuYywKCSAgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywgaW5jbHVkZS9vYmpiYXNlLmg6CglHZXQgcmlkIG9mIHRoZSBub24tc3RhbmRhcmQgSUNPTV9USElTIG1hY3JvLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYywgZGxscy9kc291bmQvYnVmZmVyLmMsCgkgIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsCgkgIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYzoKCVJlbW92ZWQgc29tZSBtb3JlIHVzZXMgb2YgdGhlIG5vbi1zdGFuZGFyZCBJQ09NX1RISVMgbWFjcm8uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9jb25zb2xlLmM6IENvbW1lbnQgb3V0IGFuIHVucmVsaWFibGUgdGVzdC4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL3Rlc3RzL3Byb3B2YXJpYW50LmMsCgkgIGRsbHMvb2xlY2xpL29sZWNsaTE2LmMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29iamlkbC5oLAoJICBpbmNsdWRlL29iamlkbC5pZGwsIGluY2x1ZGUvcHJvcGlkbC5oLCBpbmNsdWRlL3Byb3BpZGwuaWRsLAoJICBpbmNsdWRlL3Nob2JqaWRsLmgsIGluY2x1ZGUvc2hvYmppZGwuaWRsOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb3ZlIHRoZSBQUk9QVkFSSUFOVCBkZWNsYXJhdGlvbiBmcm9tIG9iamlkbC5pZGwgdG8gcHJvcGlkbC5pZGwuCglNb3ZlIHJlbGF0ZWQgQVBJIGRlY2xhcmF0aW9ucyBmcm9tIGluZGl2aWR1YWwgQyBmaWxlcyB0byBwcm9waWRsLmlkbC4KCVJlbW92ZSB1bmVlZGVkIGluY2x1ZGUgb2YgcHJvcGlkbC5oIGluIHRoZSBwcm9wdmFyaWFudC5jIHRlc3QuCgoJKiBkbGxzL21wci9tcHIucmMsIGRsbHMvbXByL21wcl9ObC5yYywgZGxscy9zaGx3YXBpL3NobHdhcGkucmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpX05sLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglEdXRjaCByZXNvdXJjZSB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvdXNlci9lZGl0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGNvcHlpbmcgc2VsZWN0aW9uIHdoZW4gY29udHJvbCBpcyByZWFkIG9ubHkuCgoJKiB0b29scy93aWRsL3Byb3h5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU91dHB1dCBpbnRlcm1lZGlhdGUgdmFyaWFibGVzIGZvciB0aGUgbWV0aG9kIHRvIHdyaXRlIGludG8gaW4gc3R1YnMuCgoJKiBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkZWQgc3R1YiBmb3IgSXNWYWxpZFVSTC4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglvZmZzZXRzIGFycmF5IGlzIHRoZSBzaXplIG9mIHRoZSB3aW5lIGRhdGEgZm9ybWF0IHNvIHRoZXJlIGlzIG5vIG5lZWQKCXRvIHJlYWxsb2NhdGUgaXQgd2hlbiB0aGUgZm9ybWF0IGNoYW5nZXMuCgoJKiBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYzoKCUdldCByaWQgb2YgdGhlIFdJTl9TZXRSZWN0YW5nbGVzIGV4cG9ydCBmcm9tIHVzZXIzMi4KCgkqIHNlcnZlci9mZC5jOgoJVGFrZSBjYXJlIHRvIG5vdCBjbG9zZSB0aGUgZmlsZSBoYW5kbGUgaWYgdGhlcmUgYXJlIG91dHN0YW5kaW5nIGxvY2tzCglhbmQgdGhlIGRpcmVjdG9yeSBvcHRpb25zIGRvbid0IG1hdGNoLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOgoJRml4ZWQgdGhlIGNoZWNrIGZvciByZW1vdmFibGUgbWVkaWEgaW4gbG9hZF9wZV9leGUgKHNwb3R0ZWQgYnkKCUZyYW5jb2lzIEdvdWdldCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU3RhdHVzIHVwZGF0ZS4KCS0gUmVtb3ZlIG5vIGxvbmdlciB2YWxpZCBjb21tZW50LgoJLSBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cHMuCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZXMgYSBtb3VzZSByZWdyZXNzaW9uIGR1ZSB0byBzdHJ1Y3R1cmUgc2l6ZSBjaGFuZ2UuCgoyMDA0LTA5LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBGaXhlZCBzb21lIG1lc3NhZ2Ugc2VxdWVuY2VzIHRvIHN1Y2NlZWQgb24gWFAuCglBZGRlZCBzb21lIHRlc3RzIGZvciBzaG93aW5nL2hpZGluZyBhIGNoaWxkIHdpbmRvdyB3aXRoIGFuIGludmlzaWJsZQoJcGFyZW50LgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCS0gQWRkIGxpbnV4IHRvIGRpbnB1dCBheGlzIG1hcHBpbmcgdXNpbmcgSEtMTS9Tb2Z0d2FyZS9XaW5lL2RpbnB1dAoJICByZWdpc3RyeSBzZXR0aW5ncy4KCS0gRml4IHNvbWUgZm9ybWF0IG1hcHBpbmcgYnVncy4KCS0gQWRkcyBHZXREZXZpY2VJbmZvLgoJLSBBZGRzICBTZXRQcm9wZXJ0eSBESVBIX0RFVklDRSBzdXBwb3J0IGZvciBzZXR0aW5nIGFsbCBwcm9wZXJ0aWVzLgoJLSBVc2Ugd2luZG93cyBjb21wYXRpYmxlIG9iamVjdCBuYW1pbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglEbyBub3QgZGlzdGluZ3Vpc2ggZXh0ZXJpb3Igd2l6YXJkIHBhZ2VzIGJ5IHRoZWlyIHBvc2l0aW9uLCBidXQKCWluc3RlYWQgZXhwZWN0IHRoYXQgZXZlcnkgcGFnZSBpbiB3aXphcmQgdGhhdCBkb2Vzbid0IGhhdmUgaGVhZGVyIGlzCglleHRlcmlvci4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CglNYWtlIHN1cmUgSW50ZXJuZXRSZWFkRmlsZSByZXR1cm5zIGZ1bGwgYnVmZmVycy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIGRzb3VuZCB0ZXN0cyBydW4gd2l0aCBEaXJlY3RYIDwgOC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdGhlIGdldF9od25kKCkgaW1wbGVtZW50YXRpb24gZnJvbSBwcm9wc2V0LmMgYW5kIHJldXNlIHRoZQoJY29tbW9uIG9uZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RpbWVyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU2V0IF9XSU4zMl9XSU5OVCB0byAweDA1MDEgc28gd2UgZ2V0IHRoZSBkZWZpbml0aW9uIG9mCglQVElNRVJBUENST1VUSU5FIGZyb20gdGhlIFdpbmRvd3MgaGVhZGVycy4KCgkqIGRsbHMvb2xlMzIvdGVzdHMvcHJvcHZhcmlhbnQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgdW5pb24gaW4gUFJPUFZBUklBTlQgaXMgYWx3YXlzIG5hbWVsZXNzIG9uIFdpbmRvd3MuIFNvIGRlZmluZSBhCgltYWNybyB0byBkZWFsIHdpdGggaXQgY29ycmVjdGx5LgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IE1hcmt1cyBBbXNsZXIgPG1hcmt1cy5hbXNsZXJAb3JpYmkub3JnPgoJUmVzcGVjdCBnaXZlbiBidWZmZXIgc2l6ZSBpbiBHRVQgRVhURU5ERUQgQ09VTlRSWSBJTkZPUk1BVElPTi4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC90ZXN0cy9oZWFkZXJzLmMsCgkgIGRsbHMvbXN2Y3J0L3RpbWUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIE1TVkNSVF9DTE9DS1NfUEVSX1NFQyBkZWZpbmUuCgoJKiB0b29scy93aWRsL3Byb3h5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUdlbmVyYXRlIHNvbWUgbWFyc2hhbGxpbmcgY29kZSBmb3Igc3R1YnMuCgoJKiBzZXJ2ZXIvZmQuYzoKCUNvbnZlcnRlZCB0aGUgdGltZW91dCBsaXN0IHRvIHVzZSB0aGUgc3RhbmRhcmQgbGlzdCBmdW5jdGlvbnMuCgoJKiBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsIGRsbHMvZDNkOC9pbmRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDgvcmVzb3VyY2UuYywgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3N3YXBjaGFpbi5jLAoJICBkbGxzL2QzZDgvdGV4dHVyZS5jLCBkbGxzL2QzZDgvdXRpbHMuYywgZGxscy9kM2Q4L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDgvdm9sdW1lLmMsIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOS9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q5L2RldmljZS5jLAoJICBkbGxzL2QzZDkvZGlyZWN0eC5jLCBkbGxzL2QzZDkvaW5kZXhidWZmZXIuYywKCSAgZGxscy9kM2Q5L3BpeGVsc2hhZGVyLmMsIGRsbHMvZDNkOS9xdWVyeS5jLCBkbGxzL2QzZDkvcmVzb3VyY2UuYywKCSAgZGxscy9kM2Q5L3N0YXRlYmxvY2suYywgZGxscy9kM2Q5L3N1cmZhY2UuYywgZGxscy9kM2Q5L3N3YXBjaGFpbi5jLAoJICBkbGxzL2QzZDkvdGV4dHVyZS5jLCBkbGxzL2QzZDkvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOS92ZXJ0ZXhkZWNsYXJhdGlvbi5jLCBkbGxzL2QzZDkvdmVydGV4c2hhZGVyLmMsCgkgIGRsbHMvZDNkOS92b2x1bWUuYywgZGxscy9kM2Q5L3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L3ZzaGFkZXJkZWNsYXJhdGlvbi5jLCBkbGxzL2QzZHg4L2QzZHhidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsCgkgIGRsbHMvZGRyYXcvZHBhbGV0dGUvaGFsLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9xdWFydHovYXZpZGVjLmMsCgkgIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmMsIGRsbHMvcXVhcnR6L2NvbnRyb2wuYywKCSAgZGxscy9xdWFydHovZHNvdW5kcmVuZGVyLmMsIGRsbHMvcXVhcnR6L2VudW1maWx0ZXJzLmMsCgkgIGRsbHMvcXVhcnR6L2VudW1tZWRpYS5jLCBkbGxzL3F1YXJ0ei9lbnVtbW9uaWtlci5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtcGlucy5jLCBkbGxzL3F1YXJ0ei9lbnVtcmVnZmlsdGVycy5jLAoJICBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLAoJICBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jYXRvci5jLCBkbGxzL3F1YXJ0ei9waW4uYywKCSAgZGxscy9xdWFydHovc3lzdGVtY2xvY2suYywgZGxscy9xdWFydHovdmlkZW9yZW5kZXJlci5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJlbW92ZWQgc29tZSBtb3JlIHVzZXMgb2YgdGhlIG5vbi1zdGFuZGFyZCBJQ09NX1RISVMgbWFjcm8uCgoJKiBkbGxzL2RkcmF3L2NvbnZlcnQuYywgZGxscy9kZHJhdy9kM2Rjb21tb24uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywKCSAgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kaW5wdXQvZGV2aWNlLmMsCgkgIGRsbHMvZGlucHV0L2RldmljZV9wcml2YXRlLmgsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L21vdXNlLmMsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywKCSAgZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL21peGVyLmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9nZGkvZW5obWV0YWZpbGUuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYywgZGxscy9nZGkvZm9udC5jLCBkbGxzL2dkaS9mcmVldHlwZS5jLAoJICBkbGxzL2dkaS9nZGlvYmouYywgZGxscy9nZGkvbWZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jLCBkbGxzL2dkaS9tZmRydi90ZXh0LmMsIGRsbHMvZ2RpL3BhaW50aW5nLmMsCgkgIGRsbHMvZ2RpL3BhdGguYywgZGxscy9pbW0zMi9pbW0uYywgZGxscy9pcGhscGFwaS9pZmVudW0uYywKCSAgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLAoJICBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLAoJICBkbGxzL21zZG1vL2Rtb3JlZy5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9uZXRhcGkzMi9uYnQuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKCSogc2VydmVyL3JlZ2lvbi5jLCBzZXJ2ZXIvdXNlci5oOgoJQWRkZWQgeG9yX3JlZ2lvbiwgZml4ZWQgcmVjdF9pbl9yZWdpb24uCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLCBkbGxzL3JwY3J0NC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3JwY3J0NC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGluY2x1ZGUvcnBjZGNlLmgsIGluY2x1ZGUvcnBjbmRyLmgsIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGFuZCB1bmlmeSBwYXJzaW5nIG9mIGNhbGxpbmcgY29udmVudGlvbnMuCglIYWNrIGhhbmRsaW5nIG9mICdzdHJ1Y3QgeyB9ICpORFJfU0NPTlRFWFQ7JyBzbyB3ZSBkb24ndCBjYXVzZSBhIHBhcnNlCgllcnJvciBhcyB0aGlzIGlzIGEgdmFsaWQgQyBjb25zdHJ1Y3QuCglHZW5lcmF0ZSB0eXBlIHRlc3RzIGZvciBycGNydDQuCglSZW1vdmUgUFJQQ19CSU5ESU5HX1ZFQ1RPUiBhbmQgUFVVSURfVkVDVE9SLCB0aGV5IGRvbid0IGV4aXN0IG9uCglXaW5kb3dzLgoJRml4IHRoZSBNSURMX1NUVUJfTUVTU0FHRSwgTUlETF9TRVJWRVJfSU5GTyBhbmQKCU1JRExfU1RVQkxFU1NfUFJPWFlfSU5GTyBzdHJ1Y3RzLgoJQWRkIE5EUl9BTExPQ19BTExfTk9ERVNfQ09OVEVYVCwgTkRSX1BPSU5URVJfUVVFVUVfU1RBVEUgYW5kCglDU19TVFVCX0lORk8uCgoJKiBkbGxzL3NobHdhcGkvdXJsLmM6IERpZWdvIFBldHRlbvIgPGRncDg1QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCUFkZCBzdXBwb3J0IGluIFVybElzKCkgZm9yIFVSTElTX0RJUkVDVE9SWSBhbmQgVVJMSVNfRklMRVVSTCBmbGFncy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0IGZ1bGwgYnVmZmVycyBpbiBJbnRlcm5ldF9SZWFkZmlsZS4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvY29uc29sZS5jLCBkbGxzL250ZGxsL2Vudi5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGN0cmwtYyBlbmFibGluZyBmbGFnIGlzIG5vdyBpbmhlcml0ZWQKCS0gZml4ZWQgY29uc29sZS1yZWxhdGVkIGZpZWxkcyBpbiBSVExfVVNFUl9QUk9DRVNTX1BBUkFNRVRFUlMKCS0gdmFyaW91cyBjbGVhbi11cCBpbiBrZXJuZWwzMi5TZXRDb25zb2xlQ3RybEhhbmRsZXIKCS0gb25seSBzZW5kIGEgY29uc29sZSBldmVudCBvbmNlIHRvIGEgcHJvY2VzcyBhbmQgbm90IHRvIGFsbCB0aGUKCSAgcHJvY2VzcycgdGhyZWFkcwoKCSogZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsCgkgIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmMsIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvdGV4dHVyZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoyMDA0LTA5LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL3RpbWVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciB0aW1lcnMuCgoJKiBzZXJ2ZXIvZmQuYzoKCU1ha2Ugc3VyZSB0byBydW4gdGhyb3VnaCB0aGUgcG9sbCBsb29wIG9uY2UgYmVmb3JlIHByb2Nlc3NpbmcgbmV3bHkKCWFkZGVkIHRpbWVycyAocmVwb3J0ZWQgYnkgTWlrZSBNY0Nvcm1hY2spLgoKCSogZGxscy9udGRsbC90aW1lLmM6CglBdm9pZCBpbnRlZ2VyIG92ZXJmbG93cyBpbiBOVERMTF9nZXRfc2VydmVyX3RpbWVvdXQgKHNwb3R0ZWQgYnkgTWlrZQoJTWNDb3JtYWNrKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGluY2x1ZGUvc2hsb2JqLmgsIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGNfcGFyc2VyLnBtIHNvIGl0IGhhbmRsZXMgJ2NvbnN0JyBwcmVjZWVkaW5nIGEgJyonLgoJQWRkIG1pc3NpbmcgI3ByYWdtYSBwYWNrIGRpcmVjdGl2ZXMgZm9yIHRoZSBuZXcgc2hsb2JqLmggdHlwZXMuCglGaXggc29tZSBmaWVsZCBuYW1lcyBpbiBDU0ZWIGFuZCBRQ01JTkZPLgoJVXBkYXRlIHRoZSBnZW5lcmF0ZWQgdGVzdHMgdG8gYWxzbyBjaGVjayBzaHR5cGVzLmggYW5kIHRlc3Qgc29tZSBtb3JlCgl0eXBlcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBNYXJrdXMgQW1zbGVyIDxtYXJrdXMuYW1zbGVyQG9yaWJpLm9yZz4KCUZpeCBmaWxlbmFtZSB0ZXJtaW5hdG9yIHRhYmxlLCBjb3JyZWN0IGV4Y2x1ZGVfbGFzdCB2YWx1ZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbmVkb3MvaW50MTMuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBjb21waWxlIGVycm9yIHdpdGggaW5jbHVkZSBmaWxlcyBmcm9tIExpbnV4IDIuNi43Ky4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS93c253bGluay5oOgoJUm9kZXJpY2sgQ29sZW5icmFuZGVyIDx0aHVuZGVyYmlyZDJrQGdteC5uZXQ+CgktIHNldCBpcHggcGFja2V0IHR5cGUKCS0gYWRkIHN1cHBvcnQgZm9yIHJldHJpZXZpbmcgc29tZSBpcHggaW5mbwoKCSogdG9vbHMvd2luZWJ1aWxkL3JlczMyLmM6CglGaWxsIGluIHRoZSBwcm9wZXIgb2Zmc2V0cyBpbiB0aGUgcmVzb3VyY2UgZGlyZWN0b3J5IGluc3RlYWQgb2YKCXJlbHlpbmcgb24gdGhlIGNvbXBpbGVyIHRvIGRvIGl0LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgdGl0bGVzLgoKCSogZGxscy9jb21jdGwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCAxNngxNiBlcnJvciwgaW5mbyBhbmQgd2FybmluZyBpY29ucy4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGFuZCB0cmFjZSgpIGNhbGxzLgoJUG9pbnQgdG8gdGhlIHByZS1jb21waWxlZCB3aW5ldGVzdCBiaW5hcmllcy4KCUEgY291cGxlIG9mIHNtYWxsIHR3ZWFrcyBoZXJlIGFuZCB0aGVyZS4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBNYWtlIHR5cGVsaWIgbWFyc2hhbGVyIHRocmVhZC1zYWZlIChwcm9ibGVtIHJlcG9ydGVkIGJ5IEFyaWMKCSAgU3Rld2FydCkuCgktIFNldmVyYWwgc21hbGwgY2xlYW51cHMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmg6CglZdm9uIEJlbGxlYXUgPGphbWV6QGl2aWMucWMuY2E+CgktIEltcGxlbWVudGVkIGtleWJvYXJkIG5hdmlnYXRpb24gKFVwIC8gRG93biAvIFBnVXAgLyBQZ0RuIC8gRVNDKS4KCS0gU2hhZG93IHdpbmRvd3MgKGJlaGluZCBwb3B1cHMpIHdlcmUgcmVhY3RpbmcgdG8gbW91c2UgY2xpY2tzIGFuZAoJICB3ZXJlIGdvaW5nIG92ZXIgdGhlIHBvcHVwLiBNYWtlIHRoZW0gY2xvc2UgdGhlIHBvcHVwIGluc3RlYWQuCgktIFRpdGxlIHdhcyBub3QgZGlzcGxheWVkIHdoZW4gdGhlIGhlbHAgZmlsZSB3YXMgb3BlbmVkIGJ5IHRoZSBjb21tYW5kCgkgIGxpbmUuCgktIENvcnJlY3RlZCBpbmNvcnJlY3QgbGlua3MgYmVoYXZpb3IgKGluIHJlbGF0aW9uIHdpdGggdGhlIHNjcm9sbGJhcikuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglXb2xmZ2FuZyBTY2h3b3R6ZXIgPHdvbGZnYW5nLnNjaHdvdHplckBnbXgubmV0PgoJTG9va3VwQWNjb3VudE5hbWVBIHN0dWIgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBTSUQuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgktIFJldmVydCBpbmNvcnJlY3QgY2hhbmdlIHRvIHRhYiBjb250cm9sIHJlc2l6aW5nIGZyb20gcmV2aXNpb24gMS4xMDkuCgktIE1vdmUgdGhlIHByb3BlcnR5IHNoZWV0IHJlc2l6aW5nIGNvZGUgZnJvbSBQUk9QU0hFRVRfQ3JlYXRlUGFnZSB0bwoJICBQUk9QU0hFRVRfU2V0Q3VyU2VsLiBJdCBuZWVkcyB0byBiZSBleGVjdXRlZCBvbiBldmVyeSBwYWdlIGNoYW5nZQoJICBiZWNhdXNlIHRoZSBhcHBsaWNhdGlvbiBjYW4gbW9kaWZ5IGl0IGR1cmluZyB0aGUgbm90aWZpY2F0aW9ucy4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLCB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUZXN0IHNvbWUgbW9yZSBnZGkgdHlwZXMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5lZG9zL2ludDI1LmMsIGRsbHMvd2luZWRvcy9pbnQyNi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBmaXggaW50MjEgYmxvY2sgZGV2aWNlIHJlYWQvd3JpdGUKCS0gbW92ZWQgZGV2aWNlIGJsb2NrIGFjY2VzcyBsb2cgbWVzc2FnZXMgdG8gaW5uZXIgZnVuY3Rpb24gdXNlZCBieSB0d28KCSAgZGlmZmVyZW50IHBsYWNlcwoJLSByZW1vdmVkIGJvZ3VzIENsb3NlSGFuZGxlKCkKCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSB3YXJuaW5ncyBmb3VuZCB3aXRoIC1Xc2lnbi1jb21wYXJlLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglBcyB0ZXN0IHJ1bnMgYXJlIG5vdCBpbnZva2VkIGZyb20gdGhlIG9wdGlvbiBwYXJzaW5nIGxvb3AgYW55bW9yZSwgd2UKCWNhbiBzd2l0Y2ggYmFjayB0byBsaWJjJ3Mgc3RydG9rKCkgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3VybG1vbi90ZXN0cy9nZW5lcmF0ZWQuYywgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGVzdCBzb21lIG1vcmUgdXJsbW9uIHR5cGVzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIGJvZ3VzICNkZWZpbmUgc3RhdGVtZW50LgoKCSogZGxscy91c2VyL2J1dHRvbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVzZXQgQlVUVE9OX0hBU0ZPQ1VTIHN0YXRlIGluIFdNX0tJTExGT0NVUyBoYW5kbGVyIGJlZm9yZSBjYWxsaW5nCglSZWxlYXNlQ2FwdHVyZS4KCgkqIGluY2x1ZGUvZGlucHV0Lmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBtaXNzaW5nIHN0cnVjdC4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvbWl4ZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNvbnNvbGlkYXRlIHNlY29uZGFyeSBidWZmZXIgbGlzdCBwcm9jZXNzaW5nIGFuZCBsb2NraW5nLgoJVHdvIG5ldyBmdW5jdGlvbnMgRFNPVU5EX0FkZEJ1ZmZlciBhbmQgRFNPVU5EX1JlbW92ZUJ1ZmZlcgoJaGF2ZSBiZWVuIGFkZGVkIGFuZCB0aGUgbG9ja2luZyBoYXMgYmVlbiBtb3ZlZCBpbnRvIHRoZXNlIGZ1bmN0aW9ucy4KCVJlbmFtZWQgSURpcmVjdFNvdW5kIGxvY2sgdG8gYnVmZmVyX2xpc3RfbG9jay4KCVJlbW92ZWQgcmVkdW5kYW50IHRlc3QgZm9yIElJRF9JRGlyZWN0U291bmROb3RpZnkgYW5kCglJSURfSURpcmVjdFNvdW5kTm90aWZ5OCBiZWNhdXNlIHRoZXkgYXJlIHRoZSBzYW1lLgoJUmVtb3ZlZCBjaGVjayBmb3IgaW52YWxpZCBidWZmZXJzIG9uIGxpc3QgYmVjYXVzZSB0aGF0IHNob3VsZG4ndAoJaGFwcGVuIGFueW1vcmUgYmVjYXVzZSBvZiBmaXhlZCAzZCBidWZmZXIgcmVmZXJlbmNlIGNvdW50aW5nLgoJTWlub3IgY29kZSBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCS0gRHJhdyB0aGUgV2l6YXJkOTcgaGVhZGVyIGJpdG1hcHMgYmVmb3JlIGRyYXdpbmcgdGhlIGhlYWRlciBzdHJpbmdzLgoJLSBDZW50ZXIgdGhlIGhlYWRlciBiaXRtYXAgb2YgdGhlIG5ldyBXaXphcmQ5NyBjb3JyZWN0bHkuCgktIERpc3BsYXkgdGhlIGNvcnJlY3Qgd2l6YXJkIHRpdGxlIGZvciBhbnkgd2l6YXJkIHR5cGUgYW5kIGRvIG5vdAoJICBjaGFuZ2UgaXQgZm9yIHJlcXVsYXIgcHJvcGVydHkgc2hlZXRzLgoKMjAwNC0wOS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsCgkgIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi90bXBmaWxlLmMsIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jLAoJICBkbGxzL2QzZHhvZi9kM2R4b2YuYywgZGxscy9kM2R4b2YvbWFpbi5jLCBkbGxzL2RtY29tcG9zL2NvbXBvc2VyLmMsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfbWFpbi5jLCBkbGxzL2RtY29tcG9zL3NpZ25wb3N0dHJhY2suYywKCSAgZGxscy9kbWltZS9kbWltZV9tYWluLmMsIGRsbHMvZG1pbWUvcGF0dGVybnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9kbWltZS9zZWdtZW50c3RhdGUuYywKCSAgZGxscy9kbWltZS90b29sLmMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywKCSAgZGxscy9kbXN5bnRoL2Rtc3ludGhfbWFpbi5jLCBkbGxzL2Rtc3ludGgvc3ludGguYywKCSAgZGxscy9kbXN5bnRoL3N5bnRoc2luay5jLCBkbGxzL2RtdXNpYy9idWZmZXIuYywgZGxscy9kbXVzaWMvY2xvY2suYywKCSAgZGxscy9kbXVzaWMvZG11c2ljLmMsIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsCgkgIGRsbHMvZG11c2ljL2Rvd25sb2FkLmMsIGRsbHMvZG11c2ljL2Rvd25sb2FkZWRpbnN0cnVtZW50LmMsCgkgIGRsbHMvZG11c2ljL3BvcnQuYywgZGxscy9kbXVzaWMvcG9ydGRvd25sb2FkLmMsIGRsbHMvZG11c2ljL3RocnUuYywKCSAgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXkuYywKCSAgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L2xvYmJ5c3AuYywKCSAgZGxscy9keGRpYWduL2NvbnRhaW5lci5jLCBkbGxzL2R4ZGlhZ24vZHhkaWFnX21haW4uYywKCSAgZGxscy9keGRpYWduL3Byb3ZpZGVyLmMsIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywKCSAgZGxscy9zaGRvY3Z3L2V2ZW50cy5jLCBkbGxzL3NoZG9jdncvZmFjdG9yeS5jLCBkbGxzL3NoZG9jdncvbWlzYy5jLAoJICBkbGxzL3NoZG9jdncvb2xlb2JqZWN0LmMsIGRsbHMvc2hkb2N2dy9wZXJzaXN0LmMsCgkgIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmM6CglSZW1vdmVkIHNvbWUgdXNlcyBvZiB0aGUgbm9uLXN0YW5kYXJkIElDT01fVEhJUyBtYWNyby4KCgkqIGRsbHMvbXN3c29jay9tc3dzb2NrLnNwZWMsIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zb2NrL3Byb3RvY29sLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgZGxscy93c29jazMyL3Byb3RvY29sLmMsIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCU1vdmUgaW1wbGVtZW50YXRpb24gb2YgRW51bVByb3RvY29sc3tBLFd9IGZyb20gd3NvY2szMiB0byB3czJfMzIuCglGb3J3YXJkIHttc3dzb2NrLHdzb2NrMzJ9LkVudW1Qcm90b2NvbHN7QSxXfSB0byB3czJfMzIuV1NBRW51bVByb3RvY29sc3tBLFd9LgoJSW1wcm92ZSBzb21lIHRyYWNlcy4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL3Rlc3RzL3Byb3B2YXJpYW50LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZpeCBQcm9wVmFyaWFudENvcHkgZm9yIFZUX0xQU1RSIGFuZCBWVF9MUFdTVFIuCgktIFRlc3QgY2FzZSBWVF9CU1RSLCBWVF9MUFNUUiBhbmQgVlRfTFBXU1RSLgoKCSogZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGVzdCBzb21lIG1vcmUgbnRkbGwgdHlwZXMuCgl0ZXN0cy5kYXQ6IFJlbW92ZSB0eXBlcyB0aGF0IGRvbid0IGV4aXN0LCB3aGV0aGVyIGluIHRoZSBXaW5kb3dzIG9yCglXaW5lIGhlYWRlcnMuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1vcmUgZGVmaW5lcyBmb3IgVFpfSU5GTy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIE9iZXkgVEJDRFJGX05PT0ZGU0VUIGZvciB0aGUgYnV0dG9uIHRleHQuCgktIE1ha2UgYW5jaG9yIGhpZ2hsaWdodGluZyBiZWhhdmUgbW9yZSBsaWtlIG5hdGl2ZSB2ZXJzaW9uLgoJLSBEb24ndCByZWNhbGN1bGF0ZSB0b29sYmFyIGluIFRPT0xCQVJfVW5rd240NjAuCgktIE9iZXkgV01fU0VUUkVEUkFXIGZvciB0aGUgV01fRVJBU0VCS0dORCBtZXNzYWdlIGFzIHdlbGwgYXMKCSAgV01fUEFJTlQuCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVdoZW4gYWN0dWFsIG9mZnNldCBkb2Vzbid0IG1hdGNoIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LCB1c2UgdGhlIGFjdHVhbAoJb2Zmc2V0LgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLCBkbGxzL21zaS9wYWNrYWdlLmMsIGluY2x1ZGUvbXNpLmg6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgTXNpR2V0RmlsZVZlcnNpb25BL1cuCgoJKiBpbmNsdWRlL2d1aWRkZWYuaCwgaW5jbHVkZS9ycGNwcm94eS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBHVUlEcyBub24tY29uc3Qgd2hlbiBjb21waWxpbmcgTUlETC93aWRsIGdlbmVyYXRlZCBwcm94aWVzLgoKCSogZGxscy9hbXN0cmVhbS9hbXN0cmVhbS5jLCBkbGxzL2Ftc3RyZWFtL21haW4uYywKCSAgZGxscy9jb21jYXQvZmFjdG9yeS5jLCBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9kZXZlbnVtL2NyZWF0ZWRldmVudW0uYywKCSAgZGxscy9kZXZlbnVtL2ZhY3RvcnkuYywgZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLAoJICBkbGxzL2RldmVudW0vcGFyc2VkaXNwbGF5bmFtZS5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLAoJICBkbGxzL2RtbG9hZGVyL2NsYXNzZmFjdG9yeS5jLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywKCSAgZGxscy9kcG5ldC9hZGRyZXNzLmMsIGRsbHMvZHBuZXQvY2xpZW50LmMsIGRsbHMvZHBuZXQvZHBuZXRfbWFpbi5jLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmVfbWFpbi5jLCBkbGxzL2l0c3MvaXRzcy5jLCBkbGxzL2l0c3MvbW9uaWtlci5jLAoJICBkbGxzL2l0c3Mvc3RvcmFnZS5jLCBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbXNkbW8vZG1vcmVnLmMsCgkgIGRsbHMvbXNpL21zaS5jLCBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9ycGNydDQvY3BzZi5jLCBkbGxzL3JwY3J0NC9jc3R1Yi5jLAoJICBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLCBkbGxzL3NobHdhcGkvYXNzb2MuYywKCSAgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3VybG1vbi91bW9uLmM6CglSZW1vdmVkIHNvbWUgdXNlcyBvZiB0aGUgbm9uLXN0YW5kYXJkIElDT01fVEhJUyBtYWNyby4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvdXJsbW9uL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvd2luaW5ldC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEaXNhYmxlIE1TVkMgd2FybmluZyA0MTE2IHRvIGF2b2lkIHRoZSAndW5uYW1lZCB0eXBlIGRlZmluaXRpb24gaW4KCXBhcmVudGhlc2VzJyB3YXJuaW5nIGNhdXNlZCBieSBUWVBFX0FMSUdOTUVOVCgpLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiB0aGUgY29ycmVjdCBlcnJvciB3aGVuIE9wZW5TZXJ2aWNlIGlzIGNhbGxlZCB3aXRoIGEKCW5vbi1leGlzdGluZyBzZXJ2aWNlLgoKCSogZGxscy9jb21tZGxnL2NkbGdfUGwucmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglUcmFuc2xhdGlvbiB1cGRhdGUuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5nZGkuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIE11bERpdiBwcm90b3R5cGUgZnJvbSB3aW5nZGkuaCB0byB3aW5iYXNlLmggd2hlcmUgaXQgYmVsb25ncy4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc29tZSBkZWZpbmVzIGZvciBDcnlwdHtHZXQvU2V0fUtleVBhcmFtLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNoZWNrIGZvciBtb3JlIHN0YW5kYXJkIGhlYWRlcnMuCgoJKiB0b29scy9iaW4ycmVzLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBiaW4ycmVzIGhlbHAgdGV4dC4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZSBkb2N1bWVudGF0aW9uIGZvciBjcml0aWNhbCBzZWN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglGaXggYnVnIHdpdGggY2hhaW5lZCBtZXNzYWdlcy4KCgkqIHRvb2xzL3dpZGwvcHJveHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJLSBtYWtlIHRoZSB3aWRsIGdlbmVyYXRlZCBwcm94eS1zdHViIGNvZGUgY29tcGlsYWJsZQoJLSBnZW5lcmF0ZSBtYXJzaGFsbGluZyBhbmQgdW5tYXJzaGFsbGluZyBjb2RlIGZvciBwcm94aWVzCgktIGdlbmVyYXRlIGV4Y2VwdGlvbiBoYW5kbGluZyBjb25zdHJ1Y3RzCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3NjaGVtYWRlZi5oLCBpbmNsdWRlL3Rtc2NoZW1hLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURlZmluZSB0aGUgdG1zY2hlbWEuaCBjb25zdGFudHMgdXNpbmcgZW51bWVyYXRpb25zIGFuZCB0aGUgbWFjcm9zCglwcm92aWRlZCBieSBzY2hlbWFkZWYuaC4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYzogS3J6eXN6dG9mIEZvbHRtYW4gPGtmb2x0bWFuQHBvcnRhbC5vbmV0LnBsPgoJLSBSZXZlcnNlZCB0aGUgYXNzZXJ0aW9uIGNhdXNpbmcgSW50ZXJuZXRDb25uZWN0IHRvIGFsd2F5cyBmYWlsLgoJLSBGVFBfQ29udmVydEZpbGVQcm9wOiBXSU4zMl9GSU5EX0RBVEEgY29udGFpbnMgcHJvcGVyIG1vZGlmaWNhdGlvbgoJICBhbmQgY3JlYXRpb24gdGltZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgZXhwb3J0cyBmb3IgbWlzc2luZyBvcmRpbmFscyAxOTEtMTk0LgoJLSBTdHViIGZvciBTSFVwZGF0ZUltYWdlVy4KCgkqIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovcXVhcnR6LnNwZWM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzdHVicyBmb3IgQW1wRmFjdG9yVG9EQiBhbmQgREJUb0FtcEZhY3Rvci4KCUFkZGVkIEdldFByb3h5RGxsSW5mby4KCgkqIGRsbHMvZGJnaGVscC9zdGFicy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgZml4IGZvciBpbmNsdWRlcyB3aXRoIHJlbGF0aXZlIHBhdGhzLgoKMjAwNC0wOS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmgsCgkgIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmMsIGluY2x1ZGUvd2luc29jay5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJVXNlIFdpbmRvd3Mgc29ja2V0cyB3aGVuIGJ1aWxkaW5nIFdpbmluZXQgb24gTWluZ3cuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVhZCBkZXZpY2UgbmFtZSBmcm9tIGRldmljZSBpZiBwb3NzaWJsZS4KCUZpeCBlbnVtZXJhdGUgb3BlbiBidWcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW5pbmV0L2Nvb2tpZS5jLAoJICBkbGxzL3dpbmluZXQvZGlhbG9ncy5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywKCSAgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaDoKCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3Igc29ja2xlbl90LgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHVudXNlZCA8c2NyZWVuPiBzZWN0aW9uLgoKCSogZGxscy91eHRoZW1lL3N0eWxlbWFwLmMsIGluY2x1ZGUvdG1zY2hlbWEuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHR5cG8gaW4gUkJTX1VOQ0hFQ0tFREhPVCAoc3BvdHRlZCBieSBKYW4gU2Nod2VpemVyKS4KCUZpeCB0aGUgSFNBU18gZW51bWVyYXRpb24uCgoJKiBpbmNsdWRlL3JwY25kci5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2Ugb25seSBzdGFuZGFyZCBDIHR5cGVzIGluIHJwY2hkci5oLgoKCSogbGlicy93aW5lL2xvYWRlci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaWxsIGluIHRoZSBNWiBoZWFkZXIgaW4gYnVpbHRpbiBQRSBETExzLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgdGVzdCBvZiBHZXRBY2NlcHRMYW5ndWFnZXNBIG9uIE5UNC4KCgkqIGRsbHMvZGlucHV0L2RhdGFfZm9ybWF0cy5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlZCB0cmFpbGluZyB3aGl0ZSBzcGFjZS4KCUFkZGVkIG1vdXNlIGZvcm1hdHMuCgoJKiBkbGxzL2tlcm5lbC9lbnZpcm9uLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9tc3ZjcnQvZmlsZS5jLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLAoJICBkbGxzL21zdmNydC90ZXN0cy9maWxlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gbXN2Y3J0OiB0aGUgZmlsZSBkZXNjcmlwdG9ycyBhcmUgbm93IGluaGVyaXRlZCBiZXR3ZWVuIHBhcmVudC9jaGlsZAoJICBwcm9jZXNzZXMKCS0ga2VybmVsMzIuQ3JlYXRlUHJvY2VzczogbWFrZSB1c2Ugb2YgdGhlICpyZXNlcnZlZDIgZmllbGRzIGZvcgoJICBDLVJ1blRpbWUgZGF0YSBpbmhlcml0YW5jZQoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGUzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi90ZXN0cy9wcm9wdmFyaWFudC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggUHJvcFZhcmlhbnRDbGVhciB0byByZWplY3QgaW52YWxpZCB0eXBlcy4KCS0gRG9uJ3QgY3Jhc2ggb24gTlVMTCBwb2ludGVycy4KCS0gQWRkIHRlc3QgY2FzZS4KCgkqIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBub24tc3RhbmRhcmQgdHlwZXMgaW4gcnBjZGNlcC5oLgoKCSogaW5jbHVkZS9ycGNuZHIuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBtaXNzaW5nIGZpZWxkIHRvIE1JRExfU1RVQl9NRVNTQUdFLgoKCSogaW5jbHVkZS9ycGNkY2VwLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIG5vbi1zdGFuZGFyZCB0eXBlcy4KCgkqIGluY2x1ZGUvcnBjcHJveHkuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIGEgdXJsLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgcmVhZCBwYXN0IGVuZCBvZiB0YWJsZSBpbiBQYXRoRmlsZUV4aXN0c0RlZkV4dFcuCgoyMDA0LTA5LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywKCSAgZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL3RtcGZpbGUuYywKCSAgZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywgZGxscy9jYWJpbmV0L2NhYmluZXRfbWFpbi5jLAoJICBkbGxzL2NhYmluZXQvZmRpLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsCgkgIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYywgZGxscy9jb21jdGwzMi90YWIuYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywKCSAgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzMxLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggYSBoZWFwIGNvcnJ1cHRpb24gaW4gTUlYX0luaXQgKCBzaXplb2YoKSAhPSBzdHJsZW4oKSApLgoKCSogaW5jbHVkZS9kaW5wdXQuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbmVzLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBBQ1AgZGVmaW5lIGluIE1CL1dDIGNvbnZlcnNpb24gZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCUdldFVwZGF0ZVJlY3Qgc2hvdWxkIHJldHVybiBUUlVFIGV2ZW4gaWYgb25seSB0aGUgbm9uLWNsaWVudCBhcmVhIGlzCglpbnZhbGlkIChyZXBvcnRlZCBieSBSZWluIEtsYXplcykuCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciBhbHRlcm5hdGUgZGF0YSBmb3JtYXRzLgoKCSogZGxscy9tbGFuZy90ZXN0cy9tbGFuZy5jLCBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jLAoJICBkbGxzL3VzZXIvdGVzdHMvY2xpcGJvYXJkLmMsIGRsbHMvdXNlci90ZXN0cy9kaWFsb2cuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgbWlzc2luZyB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS9ycGNkY2UuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBzdGFuZGFyZCB0eXBlcyBpbiBycGNydDQgaGVhZGVycyBzbyB0aGV5IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIE1JREwKCWdlbmVyYXRlZCBwcm94eSBjb2RlLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGaXggYnVmZmVyIG92ZXJmbG93IGluIFBhdGhTZXREbGdJdGVtUGF0aFcgdGhhdCBsZWQgdG8gYSB0cmFzaGVkCglzdGFjay4KCgkqIGRsbHMvZ2RpL2NsaXBwaW5nLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmF1bHQgY2xpcHBpbmcgcmVnaW9uIHNob3VsZCBiZSByZXNvbHV0aW9uIG9mIHRoZSBEQywgbm90IHRoZQoJY3VycmVudCB2aXNpYmxlIHJlZ2lvbi4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvaW1hZ2VsaXN0LmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglBZGRlZCBcbiB0byBvaygpIHN0cmluZ3MgaW4gdGhlIGltYWdlbGlzdCB0ZXN0cy4KCgkqIHRvb2xzL3dpZGwvcHJveHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJT3V0cHV0IGNvZGUgdG8gY2xlYXIgT1VUIHZhcmlhYmxlcyBpbiBwcm94eSBjb2RlLgoKCSogZGxscy9nZGkvdGVzdHMvZ2Rpb2JqLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHRlc3Qgc2hvd2luZyBob3cgR0RJIHNjYWxlcyBiaXRtYXAgZm9udCBtZXRyaWNzLgoKCSogZGxscy9hdGwvYXRsLnNwZWMsIGRsbHMvYXRsL2F0bF9tYWluLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHN0dWIgZm9yIEF0bE1vZHVsZVVwZGF0ZVJlZ2lzdHJ5RnJvbVJlc291cmNlRC4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSB0aGUgaW5zdHJ1Y3Rpb25zIGRlc2NyaWJpbmcgaG93IHRvIGNvbXBpbGUgdGhlIGNvbmZvcm1hbmNlCgl0ZXN0cyB3aXRoIE1TVkMgYW5kIHRoZSBNaWNyb3NvZnQgaGVhZGVycy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURldGVjdCB3aGV0aGVyIFZpc3VhbCBTdHVkaW8gY2FuIGNhc3QgX191aW50NjQncyB0byBmbG9hdHMgYW5kIGRpc2FibGUKCXRoZSByZWxldmFudCB0ZXN0cyBpZiBpdCBjYW5ub3QuCglGaXggYSBkb3VibGUgdG8gZmxvYXQgbGl0ZXJhbCBjb252ZXJzaW9uIHdhcm5pbmcuCgoyMDA0LTA5LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3JlZ2lvbi5jLCBzZXJ2ZXIvdXNlci5oOiBBZGRlZCByZWN0X2luX3JlZ2lvbiBmdW5jdGlvbi4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2tiZDE2LmMsCgkgIGRsbHMvdXNlci9rZXlib2FyZC5kcnYuc3BlYywgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL21vdXNlLmMsCgkgIGRsbHMvdXNlci9tb3VzZTE2LmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9rZXlib2FyZC5jOgoJTW92ZWQga2V5Ym9hcmQuYyB0byBkbGxzL3VzZXIva2JkMTYuYy4KCUtleWJvYXJkLCBtb3VzZSBhbmQgZGlzcGxheSBkcml2ZXJzIGFyZSAxNi1iaXQgb25seS4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDb252ZXJ0IG1vc3RseSB1c2VsZXNzIEVSUiB0byBXQVJOIG1lc3NhZ2UuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJLSByZW1vdmUgdW5uZWNlc3NhcnkgdHlwZSBjb252ZXJzaW9ucwoJLSBhZGRlZCB0ZXN0cyBmb3IgY3J5cHQKCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2NhY2hlLmMsIGRsbHMvdXNlci9jb250cm9scy5oLAoJICBkbGxzL3VzZXIvdGV4dC5jLCBkbGxzL3VzZXIvdWl0b29scy5jLCBpbmNsdWRlL3VzZXIuaCwKCSAgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jOgoJTW92ZWQgc29tZSB3aW5kb3cgcGFpbnRpbmcgZnVuY3Rpb25zIHRvIHVpdG9vbHMuYy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIHdpbmRvd3MvZHJpdmVyLmM6CglHZXQgcmlkIG9mIHRoZSBXSU5FX1VOVVNFRCBtYWNyby4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJV2Ugc3RpbGwgbmVlZCB0byBsb29rIGZvciB0aGUgdG9wIHBhcmVudCB0aGF0IGRvZXNuJ3QgY2xpcCBzaWJsaW5ncyBpbgoJR2V0REMgYmVjYXVzZSBvZiB0aGUgWCB3aW5kb3cgY2xpcHBpbmcuCgoJKiBkbGxzL2dkaS9mb250LmMsIGRsbHMvZ2RpL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2RpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2dkaS90ZXN0cy9nZGlvYmouYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGJhc2ljIEdESSBMT0dGT05UIHRlc3QsIGZpeCBhIGNvdXBsZSBvZiBmYWlsdXJlcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJSW1wbGVtZW50ZWQgUXVlcnlTZXJ2aWNlQ29uZmlnQS4KCgkqIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluLCBmb250cy93aW5lX3N5c3RlbS5zZmQ6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGN5cmlsbGljIGdseXBocyB0byBXaW5lIFN5c3RlbS4KCgkqIGRsbHMvYXRsL2F0bF9tYWluLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQ2hlY2sgZm9yIE5VTEwgYmVmb3JlIGRvaW5nIElzRXF1YWxHVUlEKCkgaW4KCUF0bEludGVybmFsUXVlcnlJbnRlcmZhY2UuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEZpeGVkIGFsaWdubWVudCBvZiBUT0tFTl9TVEFUSVNUSUNTLgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglGdW5jdGlvbiBwYXJhbWV0ZXJzIGRvbid0IG5lZWQgV0lORV9VTlVTRUQuCgoJKiBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL2dkaS9wYXRoLmMsIGRsbHMvbXN2Y3J0L21haW4uYywKCSAgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmg6CglJbmxpbmUgZnVuY3Rpb25zIGRvbid0IG5lZWQgV0lORV9VTlVTRUQuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSByZWZlcmVuY2VzIHRvIElDT01fVEhJUyBhbmQgV0lORV9VTlVTRUQgYXMgdGhleSBkb24ndCBleGlzdCBvbgoJV2luZG93cy4KCURlZmluZSBDT0JKTUFDUk9TIHNvIHdlIGdldCB0aGUgSVJlY29yZEluZm9fKiBtYWNyb3MuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeC91cGRhdGUgdGhlIFRPS0VOX1NUQVRJU1RJQ1MgY2hlY2suCgoJKiB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3Qgb3V0cHV0IHRoZSBERUNMU1BFQ19BTElHTigpIGRpcmVjdGl2ZXMgaW4gdGhlIFRZUEVfRklFTEQgdGVzdHMuCgoJKiBpbmNsdWRlL2RpbnB1dC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nIExQQyB0eXBlZGVmcy4KCgkqIGRsbHMveDExZHJ2Ly5jdnNpZ25vcmUsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi93aW5lY2xpcHNydi5jLCBkb2N1bWVudGF0aW9uL1BBQ0tBR0lORywKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCXdpbmVjbGlwc3J2IGlzIG5vIGxvbmdlciB1c2VkLCByZW1vdmUgaXQuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bGJpdG1hcC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURpc2FibGUgdGhlIFJ0bEJpdE1hcCB0ZXN0cyBpZiBjb21waWxpbmcgd2l0aCB0aGUgTWljcm9zb2Z0IGhlYWRlcnMgYXMKCXRoZXkgYXJlIG1pc3NpbmcgY3JpdGljYWwgc3RydWN0dXJlIGFuZCBBUEkgZGVjbGFyYXRpb25zLgoKCSogZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsCgkgIHByb2dyYW1zL3Rhc2ttZ3Ivb3B0bm1lbnUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBpbmNsdWRlL2RpbnB1dC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nIGRmaW5lcy4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBGaWx0ZXJNYXBwZXIyX0NyZWF0ZUNhdGVnb3J5LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgdGhlIEFVRElPREVWIGFuZCBNSVhFUkRFViBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCgoyMDA0LTA4LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RhdGFfZm9ybWF0cy5jLAoJICBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQvam95c3RpY2tfbGludXguYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBkZWZhdWx0IGRhdGEgZm9ybWF0cyBmb3IgY19kZkRJSm95c3RpY2sgYW5kIGNfZGZESUpveXN0aWNrMi4KCUFkZGVkIG9iamVjdCBwcm9wZXJ0aWVzIGZvciBtb3JlIHRoYW4gb25lIG9iamVjdC4KCUFkZGVkIGVycm9yIGNoZWNrcyBmb3IgYWNxdWlyZWQuCglEZWZhdWx0IHRvIHVzaW5nIGNfZGZESUpveXN0aWNrMiBkYXRhIGZvcm1hdC4KCVRyeSB0byB1c2UgdXNlciBzdXBwbGllZCBkYXRhIGZvcm1hdHMgKG9ubHkgd29ya3MgaWYgc2FtZSBhcyBvbmUgb2YKCXRoZSBkZWZhdWx0cykuCglDb2RlIGNsZWFudXAsIGVycm9yIGNoZWNraW5nIGFuZCB0cmFjaW5nIGFkZGVkLgoJQWRkZWQgc3VwcG9ydCBmb3IgdXAgdG8gOCBheGlzLgoKCSogZGxscy9kc291bmQvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb24ndCB1c2UgRFNCQ0FQU197Q1RSTERFRkFVTFQsQ1RSTEFMTH0gaW4gY2FwYWJpbGl0eS1kdW1waW5nCglmdW5jdGlvbnMgc2luY2UgdGhleSBhcmUgbm90aGluZyBidXQgYSBjb21iaW5hdGlvbiBvZiBvdGhlciBmbGFncyBhbmQKCWFyZSB0aHVzIHJlZHVuZGFudC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBBbGV4YW5kZXIgWWF3b3Jza3kgPHlhd29yc2t5QG1pZ3Vzb2Z0LnJ1PgoJRXhwYW5kIEltYWdlUGF0aCBpbiBRdWVyeVNlcnZpY2VDb25maWdXLgoKCSogZGxscy9pdHNzL2NobV9saWIuYywgZGxscy9pdHNzL2NobV9saWIuaCwgZGxscy9pdHNzL2x6eC5jLAoJICBkbGxzL2l0c3MvbHp4Lmg6CglHZXQgcmlkIG9mIENWUyBrZXl3b3Jkcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCBleHBvcnQgdGhlIHNoZWxsMzIgU0hBbGxvY1NoYXJlZCBmdW5jdGlvbnMgYnkgbmFtZS4KCUltcGxlbWVudCB0aGVtIGJ5IGNhbGxpbmcgb3V0IHRoZWlyIHNobHdhcGkgZXF1aXZhbGVudCAod2hpY2ggaGFkIGEKCW11Y2ggbW9yZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBhbnl3YXkpLgoJRml4IHRoZSBwcm90b3R5cGUgb2Ygc2hsd2FwaSdzIFNIQWxsb2NTaGFyZWQoKS4KCURvbid0IGNyYXNoIGlmIGxwdkRhdGEgaXMgTlVMTCBpbiBTSEFsbG9jU2hhcmVkKCkuCglBZGQgYSBjb25mb3JtYW5jZSB0ZXN0IHRvIHNobHdhcGkuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy9taXhlci5jLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb24ndCBpbmNsdWRlICdtbWRkay5oJywgaXQncyBub3QgbmVlZGVkLiBUaGUgd2lubW0gdGVzdHMgY2FuIG5vdyBiZQoJY29tcGlsZWQgb24gV2luZG93cyB3aXRob3V0IHRoZSBEREsuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL2ltYWdlbGlzdC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1TVkMgZG9lcyBub3QgbGlrZSB0aGUgdHlwZW9mKCkgaW4gdGhlIGZ1bmN0aW9uIHBvaW50ZXIgZGVjbGFyYXRpb24uCglGaXggYSB3YXJuaW5nLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgUFNaIHRvIHdpbmRlZi5oLgoJQWRkIGEgY291cGxlIG1pc3NpbmcgZGVjbGFyYXRpb25zIHRvIHdpbnRlcm5sLmguCglUd2VhayBWTV9DT1VOVEVSUyB0byBtYXRjaCB0aGUgZGRrIGRlY2xhcmF0aW9uLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglTYW5pdHkgY2hlY2sgd2hlbiBjbG9zaW5nIHNlcnZpY2UgaGFuZGxlLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBsYXN0IGVycm9yIHZhbHVlcyBjb21wYXRpYmxlIHdpdGggV2luOXggaW1wbGVtZW50YXRpb24KCW9mIEdldEZpbGVWZXJzaW9uSW5mb1NpemUsIFF1aWNrZW4gaW5zdGFsbGVyIGRlcGVuZHMgb24gaXQuCgoJKiBkbGxzL3dpbmVwcy9nZW5lcmljLnBwZDogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSAxLzQiIG1hcmdpbnMgZm9yIHNvbWUgc3RhbmRhcmQgcGFwZXIgc2l6ZXMuCglUdXJuIFR5cGU0MiBzdXBwb3J0IG9mZiBieSBkZWZhdWx0LgoJQnVtcCB0aGUgRmlsZVZlcnNpb24uCgoJKiBmb250cy93aW5lX2NvdXJpZXIuc2ZkOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ29tcGxldGUgY3AxMjUyIGNvdmVyYWdlLgoJRml4IGhlaWdodCBvZiAnSScuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvYnV0dG9uLmMsIGRsbHMvdXNlci9jb21iby5jLCBkbGxzL3VzZXIvZGVza3RvcC5jLAoJICBkbGxzL3VzZXIvZWRpdC5jLCBkbGxzL3VzZXIvaWNvbnRpdGxlLmMsIGRsbHMvdXNlci9saXN0Ym94LmMsCgkgIGRsbHMvdXNlci9tZW51LmMsIGRsbHMvdXNlci9zY3JvbGwuYywgZGxscy91c2VyL3N0YXRpYy5jLAoJICBkbGxzL3VzZXIvdWl0b29scy5jLCB0b29scy93aW5hcGkvbXN2Y21ha2VyLAoJICB0b29scy93aW5hcGkvd2luYXBpX2NsZWFudXA6CglNb3ZlZCBhbGwgZmlsZXMgZnJvbSB0aGUgY29udHJvbHMvIGRpcmVjdG9yeSB0byBkbGxzL3VzZXIuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmMsIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsIGRsbHMvZ2RpL2dkaTE2LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2dyYXBoaWNzLmMsIGRsbHMvZ2RpL21mZHJ2L3RleHQuYywgZGxscy9nZGkvcGVuLmMsCgkgIGRsbHMvdXNlci9ob29rMTYuYywgZGxscy91c2VyL3VzZXIxNi5jLCBkbGxzL3VzZXIvd25kMTYuYywKCSAgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RlZnduZC5jLAoJICB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICB3aW5kb3dzL3dpbnByb2MuYzoKCUdldCByaWQgb2YgdGhlIG5vbi1zdGFuZGFyZCBDT05WX1BPSU5UIGFuZCBDT05WX1JFQ1QgZnVuY3Rpb25zLgoKMjAwNC0wOC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglNYWtlIENyeXB0U2V0UHJvdmlkZXJFeCBvbmx5IGRlbGV0ZSB0aGUgJ05hbWUnIHZhbHVlIGFuZCBub3QgZGVsZXRlCgl0aGUgZW50aXJlICdUeXBlIFhYWCcga2V5IHdoZW4gZGVsZXRpbmcgdGhlIGRlZmF1bHQgcHJvdmlkZXIuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQWxleGFuZGVyIFlhd29yc2t5IDx5YXdvcnNreUBtaWd1c29mdC5ydT4KCUNoYW5nZWQgU0NfSEFORExFcyBmcm9tIEhLRVlzIHRvIHBvaW50ZXJzIHRvIGludGVybmFsIHN0cnVjdHVyZXMuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvc3RydWN0MzIuYywKCSAgd2luZG93cy9zdHJ1Y3QzMi5oLCB3aW5kb3dzL3dpbnByb2MuYzoKCVJlbW92ZWQgc3RydWN0MzIuW2NoXS4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLmMsIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwKCSAgZGxscy9kYmdoZWxwL2VsZl9tb2R1bGUuYywgZGxscy9kYmdoZWxwL21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvbXNjLmMsCgkgIGRsbHMvZGJnaGVscC9wZV9tb2R1bGUuYywgZGxscy9kYmdoZWxwL3N0YWJzLmMsCgkgIGRsbHMvZGJnaGVscC9zeW1ib2wuYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBGaXggZGVidWcgaW5mbyBsb29rLXVwIChidWcgaW4gdHJhbnNsYXRpbmcgdGhlIFJWQSBvZiB0aGUgZGVidWcKCSAgZGlyZWN0b3J5KS4KCS0gRml4IGNvZGUgZm9yIGFkZGluZyBQRSBleHBvcnQgdGFibGUgYXMgZGVidWcgaW5mbyAoY3Jhc2ggd2l0aCBOVUxMCgkgIHBhc3NlZCB0byBSdGxJbWFnZURpcmVjdG9yeUVudHJ5VG9EYXRhKS4KCS0gRml4IGNvbXB1dGF0aW9uIG9mIG5vbi1yZWxvY2F0YWJsZSBFTEYgc2hhcmVkIG9iamVjdHMgc2l6ZS4KCS0gRml4IGxvYWRpbmcgKHdoaWxlIHBhcnNpbmcgdGhlIGxpbmsgbWFwKSBvZiBuZXcgbm9uLXJlbG9jYXRhYmxlIEVMRgoJICBzaGFyZWQgb2JqZWN0cyAobm8gbG9uZ2VyIHRha2UgYWNjb3VudCBsb2FkLWFkZHJlc3Mgb2YgbGluay1tYXApLgoJLSBGaW5pc2hlZCB0aGUgQVVUT19QVUJMSUMsIE5PX1BVQkxJQ1MgYW5kIFBVQkxJQ1NfT05MWSBzdXBwb3J0IGZvciBQRSBhbmQgRUxGLgoJLSBDbGVhbmVkIHVwIHB1YmxpYyBzeW1ib2wgbWFuYWdlbWVudCAod2hpY2ggc2hvdWxkIG5vdyBwcm9wZXJseSB3b3JrKS4KCgkqIGRsbHMvYXRsL3JlZ3N2ci5jLCBkbGxzL21sYW5nL01ha2VmaWxlLmluLCBkbGxzL21sYW5nL21sYW5nLmMsCgkgIGRsbHMvbWxhbmcvcmVnc3ZyLmMsIHRvb2xzL3dpbmUuaW5mOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQWRkIERsbFJlZ2lzdGVyU2VydmVyIGFuZCBmcmllbmRzIGZvciBtbGFuZy4KCgkqIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWxzbyByZWNvZ25pemUgJy8nIGFzIHRoZSBzdGFydCBvZiBhbiBvcHRpb24uCglJbXBsZW1lbnQgJ25vdGVwYWQgL3AnLgoJU2ltcGxpZnkgbWFueSBzdHJpbmcgcGFyc2luZyBsb29wcy4KCgkqIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggYSBtZW1vcnkgbGVhay4KCUltcHJvdmUgdGhlIEdldEZ1bGxQYXRoTmFtZSgpIGVycm9yIGNoZWNrcy4KCVN0cmljdGVyIG1hdGNoIGNoZWNrIGluIEdldExpbmtMb2NhdGlvbigpLgoJQ2xhcmlmeSB0aGUgJ1Vua25vd24gbGluayBsb2NhdGlvbicgbWVzc2FnZS4KCgkqIGRsbHMvcmljaGVkaXQvcmVhZGVyLmM6IEV2YW4gRGVhdWJsIDx3aW5lQHdhcnBlZHZpZXcuY29tPgoJU3RvcCBwcm9jZXNzaW5nIGlucHV0IHN0cmVhbSB3aGVuIHRoZSBvdXRlcm1vc3QgUlRGIGdyb3VwIGlzIGNsb3NlZC4KCgkqIGRsbHMvdXNlci91c2VyMTYuYywgd2luZG93cy9wYWludGluZy5jOgoJTW92ZWQgYSBjb3VwbGUgb2YgMTYtYml0IGZ1bmN0aW9ucyB0byB1c2VyMTYuYy4KCgkqIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluLCBmb250cy93aW5lX2NvdXJpZXIuc2ZkOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjeXJpbGxpYyBnbHlwaHMgdG8gV2luZSBDb3VyaWVyIGF0IDEzIHBpeGVsIHNpemUuCgoJKiBpbmNsdWRlL2RpbnB1dC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluaXRpb25zLgoKCSogZGxscy91c2VyL2NvbW0xNi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgSGVhcCBmdW5jdGlvbnMgaW5zdGVhZCBvZiBtYWxsb2MvZnJlZS4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBkZWZpbmVzIHVzZWQgaW4gUmljaEVkaXQgMi4wLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CgktIERvbid0IGV4cGVjdCB0aGF0IGRyaXZlIEM6IGV4aXN0cywgdXNlIHRoZSBkcml2ZSBXaW5kb3dzIGlzCgkgIGluc3RhbGxlZCBvbiBpbnN0ZWFkLgoJLSBSZW1vdmUgbWlzbGVhZGluZyBtZXNzYWdlIGFib3V0IGZpbGUgbWFwcGluZy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRm9yIG5vbi1vdmVybGFwcGVkIHdyaXRlcyB0aGUgbHBOdW1iZXJPZkJ5dGVzV3JpdHRlbiBwYXJhbWV0ZXIgb2YKCVdyaXRlRmlsZSBtdXN0bid0IGJlIE5VTEwuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglDb3JyZWN0IHBhcnNpbmcgb2YgL2kgYXJndW1lbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGaXggbG9hZGluZyB3aXphcmQgdGl0bGUgYW5kIHN1YnRpdGxlIGZyb20gcmVzb3VyY2VzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfUGwucmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglQb2xpc2ggdHJhbnNsYXRpb24gdXBkYXRlLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5yYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMl9QbC5yYzoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBQb2xpc2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL2RkcmF3L21haW4uYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGRlZCBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgRGlyZWN0RHJhd0VudW1lcmF0ZUV4LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVRCX01BUktJVEVNIHNob3VsZCByZWRyYXcgYnV0dG9uLgoKCSogZGxscy94MTFkcnYvaW5pdC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU3BlbGxpbmcgZml4LgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgTnRBZGp1c3RHcm91cHNUb2tlbiBhbmQgTnRBbGVydFRocmVhZC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglUZXN0IDMyIGJpdCBmbG9hdCBzYW1wbGVzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSb3VuZCByZXN1bHRzIG9mIGNvbnZlcnNpb25zIGJldHdlZW4gT1NTIGFuZCB3aW5kb3dzIHZhbHVlcy4KCjIwMDQtMDgtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglQcmludCBhIHdhcm5pbmcgd2hlbiBEbGxSZWdpc3RlclNlcnZlciBhbmQgc2ltaWxhciBmdW5jdGlvbnMgYXJlIG5vdAoJbWFya2VkIHByaXZhdGUuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRzIHRlc3RzIHRvIHJlYWQgYW5kIHdyaXRlIGNvbnRyb2wgZGV0YWlscy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU2V0IHByb3BlciB0YXJnZXQgdHlwZS4KCVNldCBwcm9wZXIgbWF4IGFuZCBzdGVwIGZvciBtdXggY29udHJvbC4KCgkqIGRsbHMvbWxhbmcvbWxhbmcuc3BlYywgZGxscy9tc2kvbXNpLnNwZWM6CglBZGRlZCBhIGZldyBtaXNzaW5nIC1wcml2YXRlIGZsYWdzLgoKCSogZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5jLAoJICBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmgsIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsCgkgIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9yaWNoZWRpdC9ydGYuaCwKCSAgZGxscy9yaWNoZWRpdC90ZXh0LXdyaXRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIGJ1ZmZlcnMgcmF0aGVyIHRoYW4gbGlua2VkIGxpc3RzIGZvciBpbnB1dCBhbmQgb3V0IGJ1ZmZlcnMuCglTdG9wIHJlYWRpbmcgaW5wdXQgYXQgYSBudWwgYnl0ZS4KCgkqIGRsbHMvb2xlYWNjL21haW4uYywgZGxscy9vbGVhY2Mvb2xlYWNjLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBEbGxSZWdpc3RlclNlcnZlci9EbGxVbnJlZ2lzdGVyU2VydmVyIGNhbGxzLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSBhIGNvdXBsZSBtb3JlIFNQSV8gY29uc3RhbnRzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUhhY2sgd2luYXBpX3BhcnNlciBzbyB3ZSByZWNvZ25pc2UgRWxmVyhhdXh2X3QpIGFzIGEgdHlwZS4gRml4ZXMgdGhlCglzY3JpcHRzIHRoYXQgY29tcHV0ZSBBUEkgc3RhdGlzdGljcy4KCgkqIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBmZXcgbW9yZSBwcm90b3R5cGVzIHRvIHRoZSBoZWFkZXJzLgoKCSogZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBOdERlbGV0ZUZpbGUgYW5kIE50Q2FuY2VsSW9GaWxlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBzdXBvcnQgZm9yIG9wdGlvbmFsIGFyZ3VtZW50cyBpbiBJVHlwZUluZm86Okludm9rZS4KCjIwMDQtMDgtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglCdXR0b24gc2hvdWxkIGRvIFJlbGVhc2VDYXB0dXJlKCkgb24gV01fS0lMTEZPQ1VTIGlmIGl0J3MgaW4gYSBwcmVzc2VkCglzdGF0ZS4KCUFkZCBhIGNvbXByZWhlbnNpdmUgdGVzdCBjYXNlIGZvciBjYXB0dXJlIGJlaGF2aW91ci4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUJ1dHRvbiBzaG91bGQgc2VuZCBCTV9TRVRTVEFURSBtZXNzYWdlIGFmdGVyIGl0IGhhcyBjaGFuZ2VkIGl0cwoJaW50ZXJuYWwgc3RhdGUuCgoJKiBkbGxzL3gxMWRydi9pbml0LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94Zm9udC5jLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCB0b29scy93aW5lLmluZjoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEZXByZWNhdGUgdGhlICJSZXNvbHV0aW9uIiBlbnRyeSBpbiB0aGUgY29uZmlnIGZpbGUgaW4gZmF2b3VyIG9mCglIS0VZX0NVUlJORVRfQ09ORklHXFNvZnR3YXJlXEZvbnRzXExvZ1BpeGVscy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGcmVlVHlwZSBkb2Vzbid0IHN1cHBseSBhIGNoYXJtYXAgZm9yIGJpdG1hcCBmb250cywgc28gd2UgbXVzdCBkbyBvdXIKCW93biBtYXBwaW5nLiAgVGhhbmtzIHRvIERtaXRyeSBmb3IgdGVzdGluZy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRGUucmMsIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsIHByb2dyYW1zL3JlZ2VkaXQvRnIucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvSXQucmMsIHByb2dyYW1zL3JlZ2VkaXQvTmwucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUGwucmMsIHByb2dyYW1zL3JlZ2VkaXQvUHQucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUnUucmMsIHByb2dyYW1zL3JlZ2VkaXQvU2kucmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIFN5c3RlbSB0byBNUyBTaGVsbCBEbGcuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggZnVsbCBuYW1lIG9mIEhLRVlfQ1VSUkVOVF9DT05GSUcuCgoJKiBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdXNlIGZyZWVkIG1lbW9yeS4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvaW1hZ2VsaXN0LmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBpbWFnZSBsaXN0IHRlc3RzIHRvIGNvbXBpbGUgYW5kIHJ1biBvbiBvbGQgcGxhdGZvcm1zLgoKCSogZGxscy9rZXJuZWwvZGVidWdnZXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZSBkb2N1bWVudGF0aW9uIGZvciBkZWJ1Z2dlciBmdW5jdGlvbnMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggbXNnIHRlc3QgZmFpbHVyZXMgd2hlbiBydW4gdW5kZXIgd2luMmsuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDYWxjdWxhdGUgdGhlIGNvcnJlY3Qgc2l6ZSBvZiBkaWFsb2cgdGVtcGxhdGVzIGluIHRoZSBwcm9wc2hlZXQKCWNvbnRyb2wuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzogRXZhbiBEZWF1YmwgPHdpbmVAd2FycGVkdmlldy5jb20+CglGaXggYW4gRVJSIGxvZyBpbiBYMTFEUlZfQ3JlYXRlV2luZG93LgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRyeSB0byBhdm9pZCBsb2FkaW5nIDE2LWJpdCBETExzIGludG8gbWVtb3J5IGZvciBhY2Nlc3NpbmcgdmVyc2lvbgoJaW5mbywgdGhpcyBtaWdodCBsZWFkIHRvIHVuZGVzaXJlZCBzaWRlIGVmZmVjdHMgbGlrZSBsb2FkaW5nIGEgYnVuY2gKCW9mIG90aGVyIDE2LWJpdCBETExzLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEFsZXhhbmRlciBZYXdvcnNreSA8eWF3b3Jza3lAbWlndXNvZnQucnU+CglTdGFydFNlcnZpY2UgbXVzdCBwYXNzIGZ1bGwgY29tbWFuZCBsaW5lIHRvIHNlcnZpY2UgcHJvZ3JhbS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzoKCUFkZGVkIHNvbWUgdGVzdHMgZm9yIHBhaW50IG1lc3NhZ2VzIGFuZCB1cGRhdGUgcmVnaW9ucy4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglHZXRVcGRhdGVSZ24gc2hvdWxkIGNsaXAgdGhlIHJldHVybmVkIHJlZ2lvbiB0byB0aGUgY2xpZW50IGFyZWEuCglDaGFuZ2VkIEdldFVwZGF0ZVJlY3QgYW5kIEV4Y2x1ZGVVcGRhdGVSZ24gdG8gY2FsbCBHZXRVcGRhdGVSZ24uCglNb3ZlZCB0aGVzZSAzIGZ1bmN0aW9ucyB0byBkbGxzL3VzZXIvcGFpbnRpbmcuYy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFByaW50IHRoZSBXaW5kb3cgY2FwdGlvbiB1c2luZyBVbmljb2RlIGNhbGxzLgoJRG9uJ3Qgc2VuZCBXTV9HRVRURVhUIHRvIHJldHJpZXZlIHRoZSBjYXB0aW9uIHRleHQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL3N1YmNsYXNzLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL3RpbWUuYywKCSAgZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2Rzb3VuZHJlbmRlci5jLAoJICBkbGxzL3F1YXJ0ei92aWRlb3JlbmRlcmVyLmMsIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywgaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvd2lubnQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2NyeXB0MzIvY2VydC5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIG1pc3NpbmcgbGluZSBicmVhay4KCgkqIGRsbHMvbnRkbGwvbnQuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCURvbid0IGNsZWFyIHRoZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUgZm9yIG5vbiBzdXBwb3J0ZWQgY2FzZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUV2YW4gRGVhdWJsIDx3aW5lQHdhcnBlZHZpZXcuY29tPgoJQWRkZWQgR2V0U2VjdXJpdHlJbmZvIHN0dWIuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUVuc3VyZSBkaWdpdHMgYXJlIHByaW50YWJsZSBjaGFyYWN0ZXJzIGZyb20gb2xlYXV0MzIgRm9ybWF0IGNvbW1hbmQuCgoyMDA0LTA4LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOgoJQWxsb3cgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRvZG9fd2luZSBmb3IgZWFjaCBtZXNzYWdlIHNlcXVlbmNlIHNvCgl0aGF0IHdlIGNhbiBwcm9wZXJseSB0ZXN0IHRoZSBzZXF1ZW5jZXMgdGhhdCBhcmUgYWxyZWFkeSBjb3JyZWN0LgoKCSogZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jOiBKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgbWVzc2FnZSBib3ggdG8gaW5mb3JtIHVzZXIgdGhhdCBvbmUgbmVlZHMgTW96aWxsYSBBY3RpdmVYLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywKCSAgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywKCSAgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywKCSAgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsCgkgIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLAoJICBkbGxzL2NvbWN0bDMyL3N5c2xpbmsuYywgZGxscy9jb21jdGwzMi90YWIuYywKCSAgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgR2V0V2luZG93TG9uZyBieSBHZXRXaW5kb3dMb25nUHRyLgoKCSogZGxscy9tc2kvY3JlYXRlLmMsIGRsbHMvbXNpL2Rpc3RpbmN0LmMsIGRsbHMvbXNpL2luc2VydC5jLAoJICBkbGxzL21zaS9vcmRlci5jLCBkbGxzL21zaS91cGRhdGUuYywgZGxscy9tc2kvd2hlcmUuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGcmVlIG1lbW9yeSBhZnRlciB3ZSBmaW5pc2ggdXNpbmcgaXQgaW5zdGVhZCBvZiBqdXN0IGJlZm9yZS4KCgkqIGRsbHMvZ2RpL2dkaW9iai5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0aGUgREVGQVVMVF9HVUlfRk9OVCBzY2FsYWJsZSB3aXRoIHNjcmVlbiByZXNvbHV0aW9uIGFuZCBsZXQgaXQKCWJlIDhwdCBNUyBTaGVsbCBEbGcgZm9yIHNpbXBsZSBzY3JpcHRzLgoKCSogZGxscy93aW5tbS9tY2kuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhbiBvYnZpb3VzIHR5cG8gbGVhZGluZyB0byBhIGNyYXNoLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIFNldFRva2VuSW5mb3JtYXRpb24gY2FsbCBOdFNldEluZm9ybWF0aW9uVG9rZW4uCgoJKiBkbGxzL2ljY3ZpZC9pY2N2aWQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2lnbmVkIGNvbXBhcmUgZml4ZXMuCgoJKiBkbGxzL2l0c3MvY2htX2xpYi5jLCBkbGxzL2l0c3MvaXRzcy5jLCBkbGxzL2l0c3MvaXRzc3Rvci5oLAoJICBkbGxzL2l0c3MvbW9uaWtlci5jLCBkbGxzL2l0c3Mvc3RvcmFnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBJVFMgbW9uaWtlciBpbXBsZW1lbnRhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbDogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCVVwZGF0ZSBjdnMgY29tbWFuZCBsaW5lLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gU2VuZCBOTV9MRE9XTiBub3RpZmljYXRpb24uCgktIE5NX1JEQkxDTEsgb25seSBuZWVkcyB0byBzZW5kIGEgTk1IRFIgc3RydWN0dXJlLgoJLSBPbiBtb3VzZSBub3RpZmljYXRpb25zIHJldHVybmluZyAwIERlZlduZFByb2Mgc2hvdWxkIGJlIGNhbGxlZC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQnJpbmcgY29tbW9uIGNvbnRyb2wgaGVhZGVyIHVwIHRvIGRhdGUgd2l0aCBuZXcgYWRkaXRpb25zIGluIFhQLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgMzIgYml0IGZsb2F0IHN1cHBvcnQuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmRfdGVzdC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURpcmVjdFNvdW5kOCBkb2Vzbid0IGFjY2VwdCAzRCBzdGVyZW8gc2Vjb25kYXJ5IGJ1ZmZlcnMgYnV0CglEaXJlY3RTb3VuZCBkb2VzLgoJQWRkZWQgdGVzdHMuCgoJKiBpbmNsdWRlL2tzbWVkaWEuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIElFRUUgZmxvYXQgYXVkaW8gZGF0YSB0eXBlLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglEbyBub3QgYXNzdW1lIEhLRVlfQ1VSUkVOVF9VU0VSL0Vudmlyb25tZW50IGV4aXN0cyA9PT4gY29uZmlnIGZpbGUgd2FzCgltaWdyYXRlZC4gSW5zdGVhZCB0ZXN0IGZvciBldmVyeSBrZXkgdG8gbWlncmF0ZSB1bmRlcgoJSEtFWV9DVVJSRU5UX1VTRVIvRW52aXJvbm1lbnQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3dpbmluZXQvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUVuYWJsZSB0aGUgZGlzYWJsZWQgdGVzdHMgaW4gdGVzdHMuZGF0YSBvciBhZGQgYSBjb21tZW50IGRlc2NyaWJpbmcKCXdoeSB0aGUgdHlwZSBjYW5ub3QgYmUgdGVzdGVkLgoJVXBkYXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMsIHRoZXkgY29tcGlsZSBhbmQgcnVuIHN1Y2Nlc3NmdWxseSBib3RoIG9uCglXaW5kb3dzICh3aXRoIHRoZSBXaW5kb3dzIGhlYWRlcnMpIGFuZCBpbiBXaW5lLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUZpeCBoYW5kbGluZyBvZiBWQVJJQU5UIHdpdGggVlRfQllSRUYgYW5kIG51bGwgcG9pbnRlciBpbgoJVmFyaWFudENoYW5nZVR5cGVFeC4KCjIwMDQtMDgtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9pdHNzLy5jdnNpZ25vcmUsCgkgIGRsbHMvaXRzcy9NYWtlZmlsZS5pbiwgZGxscy9pdHNzL2NobV9saWIuYywgZGxscy9pdHNzL2NobV9saWIuaCwKCSAgZGxscy9pdHNzL2l0c3MuYywgZGxscy9pdHNzL2l0c3MuaCwgZGxscy9pdHNzL2l0c3MuaWRsLAoJICBkbGxzL2l0c3MvaXRzcy5zcGVjLCBkbGxzL2l0c3MvbHp4LmMsIGRsbHMvaXRzcy9senguaCwKCSAgZGxscy9pdHNzL21vbmlrZXIuYywgZGxscy9pdHNzL3N0b3JhZ2UuYzoKCVN0ZXdhcnQgQ2FpZTxreXpAdWtsaW51eC5uZXQ+CglKZWQgV2luZyA8amVkd2luQHVnY3MuY2FsdGVjaC5lZHU+CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbiBpbXBsZW1lbmF0aW9uIG9mIElUU1MuRExMLgoKCSogZGxscy9tc2kvcmVjb3JkLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglHZXR0aW5nIHRoZSBzdHJpbmcgZm9yIGEgbnVsbCBmaWVsZCBzaG91bGQgbm90IGNyZWF0ZSBhbiBlcnJvci4gQWRkIGEKCW1pc3NpbmcgYnJlYWsuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGFsaWdubWVudCBpc3N1ZXMgZm9yIE1FTU9SWVNUQVRVU0VYLCBXSU4zMl9TVFJFQU1fSUQgYW5kCglJT19DT1VOVEVSUy4gVGhlIGNvcnJlc3BvbmRpbmcgdGVzdHMgbm93IHN1Y2NlZWQgYm90aCB3aGVuIGNvbXBpbGVkCgl3aXRoIHRoZSBXaW5kb3dzIGhlYWRlcnMgYW5kIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgV2luZSBoZWFkZXJzLgoKCSogd2luZG93cy9zY3JvbGwuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJV2hlbiB0aGVyZSBhcmUgbm8gcGl4ZWxzIHRvIHNjcm9sbCwgU2Nyb2xsV2luZG93RXggbXVzdCBzdGlsbCBzY3JvbGwKCWNoaWxkcmVuIGFuZCB1cGRhdGUgdGhlIGhyZ25VcGRhdGUgYW5kIHJjVXBkYXRlIGFyZ3VtZW50cy4KCgkqIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgSURpcmVjdERyYXdDbGlwcGVyX0dldENsaXBMaXN0IGZvciBjYXNlIHdoZXJlIHdlIGhhdmUgYQoJaGFuZGxlIHRvIGEgd2luZG93LgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglJbiBHZXREQyB1c2UgdGhlIHBhcmVudCBkcmF3YWJsZSB3aGVuIERDWF9QQVJFTlRDTElQIGlzIHNldC4KCgkqIGZvbnRzLy5jdnNpZ25vcmUsIGZvbnRzL01ha2VmaWxlLmluLCBmb250cy93aW5lX3NhbnNfc2VyaWYuc2ZkOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBjeXJpbGxpYyBnbHlwaHMgdG8gd2luZV9zYW5zX3NlcmlmIGF0IDEzIGFuZCAxNiBwaXhlbCBzaXplcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWMsCgkgIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgaW5jbHVkZS93aW5iYXNlLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBHZXRQcm9jZXNzSWQuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTW9yZSBzYWZlIGFycmF5IHRlc3RzLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy9pbWFnZWxpc3QuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVRlc3RzIGZvciBpY29uIGFuZCBiaXRtYXAgYWRkaW5nIGFuZCByZW1vdmluZyBhbmQgYml0bWFwIGRyYXdpbmcgd2l0aAoJaW1hZ2UgbGlzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHJlZ3Jlc3Npb24gd2l0aCBJRSdzIE1lbnUgQmFyLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX0NzLnJjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRGUucmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9Fbi5yYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlX0VzLnJjLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRnIucmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9JdC5yYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX05sLnJjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfUHQucmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9SdS5yYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlX1NpLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Dbi5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfQ3MucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0RlLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fbi5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfRXMucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0ZyLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9JdC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfS28ucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX05sLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9QbC5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfUHQucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1J1LnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9TaS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfVGgucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1VrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfQ24ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0NzLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fby5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZpLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywgZGxscy9jb21tZGxnL2NkbGdfSHUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Lby5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsIGRsbHMvY29tbWRsZy9jZGxnX05vLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19UaC5yYywgZGxscy9jb21tZGxnL2NkbGdfVWsucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19aaC5yYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnX0NzLnJjLCBkbGxzL29sZWRsZy9vbGVkbGdfRGUucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19Fbi5yYywgZGxscy9vbGVkbGcvb2xlZGxnX0VzLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfSXQucmMsIGRsbHMvb2xlZGxnL29sZWRsZ19ObC5yYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnX1B0LnJjLCBkbGxzL3NlcmlhbHVpL0NzLnJjLCBkbGxzL3NlcmlhbHVpL0RlLnJjLAoJICBkbGxzL3NlcmlhbHVpL0VuLnJjLCBkbGxzL3NlcmlhbHVpL0VzLnJjLCBkbGxzL3NlcmlhbHVpL0ZyLnJjLAoJICBkbGxzL3NlcmlhbHVpL0l0LnJjLCBkbGxzL3NlcmlhbHVpL05sLnJjLCBkbGxzL3NlcmlhbHVpL1B0LnJjLAoJICBkbGxzL3NlcmlhbHVpL1J1LnJjLCBkbGxzL3NldHVwYXBpL0NzLnJjLCBkbGxzL3NldHVwYXBpL0RlLnJjLAoJICBkbGxzL3NldHVwYXBpL0VuLnJjLCBkbGxzL3NldHVwYXBpL0VzLnJjLCBkbGxzL3NldHVwYXBpL0ZyLnJjLAoJICBkbGxzL3NldHVwYXBpL0l0LnJjLCBkbGxzL3NldHVwYXBpL05sLnJjLCBkbGxzL3NldHVwYXBpL1B0LnJjLAoJICBkbGxzL3NldHVwYXBpL1J1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9DYS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ24ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fby5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZpLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Gci5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSHUucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9KYS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfS28ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05sLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Oby5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUGwucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9SdS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2kucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NrLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tdi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfVWsucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1dhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9aaC5yYywKCSAgZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLnJjLCBkbGxzL3dpbmVwcy93cHNfQ3MucmMsCgkgIGRsbHMvd2luZXBzL3dwc19EZS5yYywgZGxscy93aW5lcHMvd3BzX0VuLnJjLCBkbGxzL3dpbmVwcy93cHNfRXMucmMsCgkgIGRsbHMvd2luZXBzL3dwc19Gci5yYywgZGxscy93aW5lcHMvd3BzX0l0LnJjLCBkbGxzL3dpbmVwcy93cHNfS28ucmMsCgkgIGRsbHMvd2luZXBzL3dwc19ObC5yYywgZGxscy93aW5lcHMvd3BzX1B0LnJjLCBkbGxzL3dpbmVwcy93cHNfUnUucmMsCgkgIGRsbHMvd2luZXBzL3dwc19TaS5yYywgZGxscy93aW5lcHMvd3BzX1NrLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9Dcy5yYywgZGxscy93aW5pbmV0L3dpbmluZXRfRGUucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0VuLnJjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9Fcy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfRnIucmMsIGRsbHMvd2luaW5ldC93aW5pbmV0X0l0LnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9ObC5yYywgZGxscy93aW5pbmV0L3dpbmluZXRfUHQucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X1J1LnJjLCBkbGxzL3dpbmluZXQvd2luaW5ldF9TaS5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvRGUucmMsIHByb2dyYW1zL2NtZGxndHN0L0VuLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9Fcy5yYywgcHJvZ3JhbXMvY21kbGd0c3QvRnIucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L0l0LnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9ObC5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvUHQucmMsIHByb2dyYW1zL2NtZGxndHN0L1J1LnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9TaS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9EYS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Fbi5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9GaS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Gci5yYywgcHJvZ3JhbXMvbm90ZXBhZC9IdS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9JdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9ObC5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9QbC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9SdS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9TaS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Tay5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Tdy5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9UaC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9XYS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9aaC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9EZS5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Gci5yYywgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9ObC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9QbC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9QdC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9SdS5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9TaS5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywgcHJvZ3JhbXMvd2luZWNmZy9JdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywgcHJvZ3JhbXMvd2luZWNmZy9SdS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9TaS5yYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRGUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRnIucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0h1LnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9ObC5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfUHQucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX1J1LnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9aaC5yYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgZGlhbG9ncyB0byB1c2UgTVMgU2hlbGwgRGxnIHJhdGhlciB0aGFuIEhlbHYgb3IgTVMgU2FucyBTZXJpZi4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJV2hlbiBwb3NzaWJsZSwgdXNlIHRoZSBYIHdpbmRvdyBvZiB0aGUgcmVxdWVzdGVkIHdpbmRvdyBpbiBHZXREQwoJaW5zdGVhZCBvZiB0aGUgcGFyZW50IHRvIGF2b2lkIHRyb3VibGUgd2l0aCBPcGVuR0wgY2xpcHBpbmcuCgoJKiBkbGxzL21ha2VfZGxsczogUmVtb3ZlZCBkZWJ1ZyB0cmFjZS4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9hdmlkZWMuYywKCSAgZGxscy9xdWFydHovZHNvdW5kcmVuZGVyLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwgZGxscy9xdWFydHovcmVnc3ZyLmMsCgkgIGRsbHMvcXVhcnR6L3ZpZGVvcmVuZGVyZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIFZpZGVvIFJlbmRlcmVyIChiYXNlZCBvbiBEaXJlY3QgRHJhdykuCglBZGRlZCBEaXJlY3QgU291bmQgQXVkaW8gUmVuZGVyZXIuCglBZGRlZCBBVkkgRGVjb21wcmVzc29yIChWRlcgZGVjb21wcmVzc29ycyB3cmFwcGVyKS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQWRkZWQgc2lnbmFsIHN1cHBvcnQgZm9yIERhcndpbi9pMzg2LgoKCSogd2luZG93cy9kaWFsb2cuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJU2V0IFdTX0VYX0NPTlRST0xQQVJFTlQgd2hlbiBkaWFsb2cgaGFzIERTX0NPTlRST0wuCgoyMDA0LTA4LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hbXN0cmVhbS9hbXN0cmVhbS5jLCBkbGxzL2Ftc3RyZWFtL21haW4uYywKCSAgZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywKCSAgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLCBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL3RtcGZpbGUuYywgZGxscy9hdmlmaWwzMi93YXZmaWxlLmMsCgkgIGRsbHMvY29tY2F0L2ZhY3RvcnkuYywgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywKCSAgZGxscy9jb21jYXQvbWFuYWdlci5jLCBkbGxzL2NvbWNhdC9yZWdpc3Rlci5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9kM2Q4L2Jhc2V0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDgvcmVzb3VyY2UuYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q4L3N3YXBjaGFpbi5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLCBkbGxzL2QzZDgvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOC92b2x1bWUuYywgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDkvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOS9kaXJlY3R4LmMsIGRsbHMvZDNkOS9pbmRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDkvcGl4ZWxzaGFkZXIuYywgZGxscy9kM2Q5L3F1ZXJ5LmMsIGRsbHMvZDNkOS9yZXNvdXJjZS5jLAoJICBkbGxzL2QzZDkvc3RhdGVibG9jay5jLCBkbGxzL2QzZDkvc3VyZmFjZS5jLCBkbGxzL2QzZDkvc3dhcGNoYWluLmMsCgkgIGRsbHMvZDNkOS90ZXh0dXJlLmMsIGRsbHMvZDNkOS92ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kM2Q5L3ZlcnRleGRlY2xhcmF0aW9uLmMsIGRsbHMvZDNkOS92ZXJ0ZXhzaGFkZXIuYywKCSAgZGxscy9kM2Q5L3ZvbHVtZS5jLCBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jLAoJICBkbGxzL2QzZHg4L2QzZHhidWZmZXIuYywgZGxscy9kM2R4b2YvZDNkeG9mLmMsIGRsbHMvZDNkeG9mL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywKCSAgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jLAoJICBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy9oYWwuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9oYWwuYywKCSAgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9nYW1tYS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3RodW5rcy5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgZGxscy9kZXZlbnVtL2NyZWF0ZWRldmVudW0uYywKCSAgZGxscy9kZXZlbnVtL2ZhY3RvcnkuYywgZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLAoJICBkbGxzL2RldmVudW0vcGFyc2VkaXNwbGF5bmFtZS5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvZGlucHV0L21vdXNlLmMsIGRsbHMvZG1iYW5kL2JhbmQuYywKCSAgZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsCgkgIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywgZGxscy9kbWNvbXBvcy9jaG9yZG1hcHRyYWNrLmMsCgkgIGRsbHMvZG1jb21wb3MvY29tcG9zZXIuYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsCgkgIGRsbHMvZG1jb21wb3Mvc2lnbnBvc3R0cmFjay5jLCBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLAoJICBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywgZGxscy9kbWltZS9ncmFwaC5jLAoJICBkbGxzL2RtaW1lL2x5cmljc3RyYWNrLmMsIGRsbHMvZG1pbWUvbWFya2VydHJhY2suYywKCSAgZGxscy9kbWltZS9wYXJhbWNvbnRyb2x0cmFjay5jLCBkbGxzL2RtaW1lL3BhdHRlcm50cmFjay5jLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3NlZ21lbnRzdGF0ZS5jLCBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3NlcXRyYWNrLmMsIGRsbHMvZG1pbWUvc3lzZXh0cmFjay5jLAoJICBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYywgZGxscy9kbWltZS90aW1lc2lndHJhY2suYywKCSAgZGxscy9kbWltZS90b29sLmMsIGRsbHMvZG1pbWUvd2F2ZXRyYWNrLmMsCgkgIGRsbHMvZG1sb2FkZXIvY2xhc3NmYWN0b3J5LmMsIGRsbHMvZG1sb2FkZXIvY29udGFpbmVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmMsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLAoJICBkbGxzL2Rtc2NyaXB0L3NjcmlwdHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9hdWRpdGlvbnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9jaG9yZHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9jb21tYW5kdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLCBkbGxzL2Rtc3R5bGUvbW90aWZ0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvbXV0ZXRyYWNrLmMsIGRsbHMvZG1zdHlsZS9zdHlsZS5jLAoJICBkbGxzL2Rtc3R5bGUvc3R5bGV0cmFjay5jLCBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsCgkgIGRsbHMvZG1zeW50aC9zeW50aC5jLCBkbGxzL2Rtc3ludGgvc3ludGhzaW5rLmMsIGRsbHMvZG11c2ljL2J1ZmZlci5jLAoJICBkbGxzL2RtdXNpYy9jbG9jay5jLCBkbGxzL2RtdXNpYy9jb2xsZWN0aW9uLmMsIGRsbHMvZG11c2ljL2RtdXNpYy5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLCBkbGxzL2RtdXNpYy9kb3dubG9hZC5jLAoJICBkbGxzL2RtdXNpYy9kb3dubG9hZGVkaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9pbnN0cnVtZW50LmMsCgkgIGRsbHMvZG11c2ljL3BvcnQuYywgZGxscy9kbXVzaWMvcG9ydGRvd25sb2FkLmMsIGRsbHMvZG11c2ljL3RocnUuYywKCSAgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXkuYywKCSAgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L2xvYmJ5c3AuYywKCSAgZGxscy9kcG5ldC9hZGRyZXNzLmMsIGRsbHMvZHBuZXQvY2xpZW50LmMsIGRsbHMvZHBuZXQvZHBuZXRfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywgZGxscy9kc3dhdmUvZHN3YXZlLmMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZV9tYWluLmMsIGRsbHMvZHhkaWFnbi9jb250YWluZXIuYywKCSAgZGxscy9keGRpYWduL2R4ZGlhZ19tYWluLmMsIGRsbHMvZHhkaWFnbi9wcm92aWRlci5jLAoJICBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbXNkbW8vZG1vcmVnLmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLAoJICBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsIGRsbHMvb2xlMzIvZ2l0LmMsIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLAoJICBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGVvYmouYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9vbGVhdXQzMi9jb25ucHQuYywKCSAgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsCgkgIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmMsIGRsbHMvcXVhcnR6L2VudW1maWx0ZXJzLmMsCgkgIGRsbHMvcXVhcnR6L2VudW1tZWRpYS5jLCBkbGxzL3F1YXJ0ei9lbnVtbW9uaWtlci5jLAoJICBkbGxzL3F1YXJ0ei9lbnVtcGlucy5jLCBkbGxzL3F1YXJ0ei9lbnVtcmVnZmlsdGVycy5jLAoJICBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jYXRvci5jLCBkbGxzL3F1YXJ0ei9waW4uYywKCSAgZGxscy9xdWFydHovc3lzdGVtY2xvY2suYywgZGxscy9ycGNydDQvY3Byb3h5LmMsIGRsbHMvcnBjcnQ0L2Nwc2YuYywKCSAgZGxscy9ycGNydDQvbmRyX29sZS5jLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsCgkgIGRsbHMvc2hkb2N2dy9ldmVudHMuYywgZGxscy9zaGRvY3Z3L2ZhY3RvcnkuYywgZGxscy9zaGRvY3Z3L21pc2MuYywKCSAgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvcGVyc2lzdC5jLAoJICBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jLCBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsCgkgIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywKCSAgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL3NobHdhcGkvYXNzb2MuYywKCSAgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBpbmNsdWRlL29iamJhc2UuaDoKCUdldCByaWQgb2YgdGhlIG5vIGxvbmdlciB1c2VkIElDT01fTVNWVEFCTEVfQ09NUEFUX0R1bW15UlRUSVZBTFVFCgltYWNyby4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmgsIGRsbHMvbnRkbGwvcnRsYml0bWFwLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsYml0bWFwLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIFJUTF9CSVRNQVAgYW5kIFJUTF9CSVRNQVBfUlVOIHRvIG1hdGNoIHRoZSAyMDAwIERESy4KCU9ubHkgdGVzdCB0aGUgUnRse0luaXRpYWxpemUsU2V0QWxsLENsZWFyQWxsfUJpdHMgbWFjcm9zIGlmIHRoZXkgYXJlCglkZWZpbmVkLgoKCSogZGxscy9oaGN0cmwub2N4L01ha2VmaWxlLmluLCBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLm9jeC5zcGVjLAoJICBkbGxzL2hoY3RybC5vY3gvcmVnc3ZyLmMsIHRvb2xzL3dpbmUuaW5mOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBlbXB0eSBEbGxSZWdpc3RlclNlcnZlci4KCgkqIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jLCBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uaDoKCVRvYmlhcyBCdXJudXMgPGJ1cm51c0BnbXguZGU+CgktIExpbWl0IG51bWJlciBvZiBGSVhNRSgpcyBpbiBDbGlwcGVyX1NldENsaXBMaXN0IGFuZCBkb2N1bWVudAoJICBmdW5jdGlvbi4KCS0gRG9jdW1lbnQgQ2xpcHBlcl9HZXRDbGlwTGlzdC4KCgkqIGRsbHMvb2xlMzIvZGNvbS5oLCBpbmNsdWRlL2FjdGl2c2NwLmgsIGluY2x1ZGUvYW1zdHJlYW0uaCwKCSAgaW5jbHVkZS9hbXZpZGVvLmgsIGluY2x1ZGUvYXVzdHJlYW0uaCwgaW5jbHVkZS9jb21jYXQuaCwKCSAgaW5jbHVkZS9kZHN0cmVhbS5oLCBpbmNsdWRlL2Rpc3BleC5oLCBpbmNsdWRlL2RvY29iai5oLAoJICBpbmNsdWRlL2V4ZGlzcC5oLCBpbmNsdWRlL21sYW5nLmgsIGluY2x1ZGUvbW1zdHJlYW0uaCwKCSAgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vYmppZGwuaCwKCSAgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3BzdG9yZS5oLAoJICBpbmNsdWRlL3JwY3Byb3h5LmgsIGluY2x1ZGUvc2VydnByb3YuaCwgaW5jbHVkZS9zaGxkaXNwLmgsCgkgIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hvYmppZGwuaCwgaW5jbHVkZS9zdHJtaWYuaCwKCSAgaW5jbHVkZS91bmtud24uaCwgaW5jbHVkZS91bmtud24uaWRsLCBpbmNsdWRlL3VybG1vbi5oLAoJICB0b29scy93aWRsL2hlYWRlci5jOgoJR2V0IHJpZCBvZiB0aGUgSUNPTV9NU1ZUQUJMRV9DT01QQVQgc3VwcG9ydCwgZysrIG5vIGxvbmdlciByZXF1aXJlcwoJdGhpcy4KCgkqIHNlcnZlci9jbGlwYm9hcmQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJVGhlIGNsaXBib2FyZCBvd25lciBjYW4gYmUgc2V0IGJ5IHRoZSB0aHJlYWQgdGhhdCBoYXMgdGhlIGNsaXBib2FyZAoJb3Blbi4KCgkqIGRsbHMvZGJnaGVscC9zdGFicy5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglTdG9yZSB0aGUgY3VycmVudCBzb3VyY2UgZGlyZWN0b3J5IGFuZCB1c2UgaXQgd2hlbiBlbmNvdW50ZXJpbmcgYQoJcmVsYXRpdmUgaW5jbHVkZSBzbyB0aGF0IHRoZSBmdWxsIHBhdGggdG8gaXQgaXMgc3RvcmVkIGluc3RlYWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgZXhlUGF0aCBjb250YWlucyB0aGUgcGF0aCBzaW5jZSBpdCBpcyB1c2VkIGxhdGVyIGluIHRoZQoJZnVuY3Rpb24gYXMgd2VsbC4KCgkqIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9tbGFuZy90ZXN0cy9tbGFuZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUVudW1lcmF0ZSBhbGwgYXZhaWxhYmxlIHNjcmlwdHMgaW4gSU11bHRpTGFuZ3VhZ2UyX0VudW1TY3JpcHRzLCBhZGQKCWZpeGVkL3Byb3BvcnRpb25hbCBmb250IG5hbWVzIGludG8gbWxhbmcgZGF0YWJhc2UuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldENQSW5mbyhFeCkgc2hvdWxkIHdvcmsgb24gQ1BfVVRGNy9DUF9VVEY4IHBzZXVkbyBjb2RlIHBhZ2VzLCBhcwoJSXNWYWxpZENvZGVQYWdlIGRvZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGp1c3QgdGhlIHRhYiBjb250ZW50cyB0byBmaXggdGhlIHByb3BzaGVldCBiZXR3ZWVuIFBTTV9LSUxMQUNUSVZFCglhbmQgUFNNX1NFVEFDVElWRS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJT25seSBwcmludCBmb3JtYXQgaW5mbyB3aGVuIGluIGludGVyYWN0aXZlIG1vZGUgZm9yIGNhcHR1cmUgdGVzdC4KCUNsZWFudXAgZXJyb3IgYW5kIGluZm8gbWVzc2dlcy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW92ZSBMRFRfRU5UUlkgdG8gd2lubnQuaC4KCjIwMDQtMDgtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLAoJICBwcm9ncmFtcy93aW5lZGJnL2Rpc3BsYXkuYywgcHJvZ3JhbXMvd2luZWRiZy9leHByLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jLCBwcm9ncmFtcy93aW5lZGJnL3N5bWJvbC5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3R5cGVzLmMsIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGZpeGVkIGJyZWFrcG9pbnQgZW5hYmxlZC9kaXNhYmxlZCBzdGF0ZSBtYW5hZ2VtZW50CgktIGZpeGVkIHJlY3Vyc2lvbiBpbiB0eXBlIHByaW50aW5nCgktIG5vdyBhbGwgdHlwZS1pZCBhcmUgc3RvcmVkIHdpdGggdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgbW9kdWxlIHdoaWNoCgkgIGRlZmluZXMgdGhlIHR5cGUgKHN0cnVjdCBkYmdfdHlwZSB0YWtlcyBjYXJlIG9mIHRoaXMgcGFpcmluZykKCS0gZml4ZWQgYSBjb3VwbGUgb2YgYnVncyBpbiBkaXNwbGF5IGhhbmRsaW5nCgktIGZpeGVkIHN0cmluZ3MgcHJpbnQgYW5kIGV4YW1pbmF0aW9uCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2Rjb20uaCwKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbjoKCUFkZGVkIHJlY3Vyc2l2ZSBpZGwgdGFyZ2V0IHRvIGFsbG93IHVwZGF0aW5nIGlkbCBmaWxlcyBwcml2YXRlIHRvIGEKCWRsbC4KCgkqIGluY2x1ZGUvdW5rbnduLmgsIHRvb2xzL3dpZGwvaGVhZGVyLmM6CglPdXRwdXQgQkVHSU4vRU5EX0lOVEVSRkFDRSBmb3IgQysrIGJhc2UgY2xhc3NlcyB0b28uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL3Rlc3RzL3N1YmNsYXNzLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCU1ha2UgU2V0V2luZG93U3ViY2xhc3MgYmVoYXZlIHdpdGggU2V0V2luZG93TG9uZyBzdWJjbGFzc2VzLgoJQWxsb3cgdW5saW1pdGVkIG51bWJlciBvZiBzdWJjbGFzc2VzLgoJQ29ycmVjdCBpc3N1ZSB3aGVuIFNlbmRNZXNzYWdlIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBhIHN1YmNsYXNzIHByb2MuCglBZGQgcmVncmVzc2lvbiB0ZXN0LgoKCSogZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywgaW5jbHVkZS93aW5udC5oLAoJICB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGUgRlBPX0RBVEEgYW5kIElNQUdFX0xPQURfQ09ORklHX0RJUkVDVE9SWSB0byBtYXRjaCB0aGUgbGF0ZXN0CglwbGF0Zm9ybSBTREsuIFRoaXMgaGVscHMgY29tcGlsZSB0aGUgbnRkbGwgdGVzdHMgb24gV2luZG93cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1vdmVkIGRlY2xhcmF0aW9ucyBmcm9tIHVuZG9jc2hlbGwuaCB0byBzaGxvYmouaCB0byBtYXRjaCB0aGUgbGF0ZXN0CglwbGF0Zm9ybSBTREsuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIG11bHRpcGxlIG1peGVycy4KCUdldCBtaXhlciBuYW1lIGZyb20gT1NTLgoJTW9yZSB0cmFjaW5nLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVkgY29vcmRpbmF0ZSBvZiB0aGUgIm1hZ2ljIiBzdGF0aWMgY29udHJvbCBzaG91bGQgYmUgdHJlYXRlZAoJaW5jbHVzaXZlbHkuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsCgkgIGRsbHMvZG1iYW5kL2RtdXRpbHMuYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19wcml2YXRlLmgsCgkgIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL2RtdXRpbHMuYywKCSAgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsIGRsbHMvZG1zdHlsZS9kbXV0aWxzLmMsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX3ByaXZhdGUuaCwgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwKCSAgZGxscy9kbXVzaWMzMi9kbXVzaWMzMl9tYWluLmMsIGRsbHMvZHN3YXZlL2Rzd2F2ZV9wcml2YXRlLmgsCgkgIGRsbHMvZHhkaWFnbi9keGRpYWdfcHJpdmF0ZS5oLCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3F1ZXJ5LmgsCgkgIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlYXV0MzIvaGFzaC5jLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywKCSAgZGxscy9vbGVhdXQzMi92YXJmb3JtYXQuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGluY2x1ZGUvb2JqYmFzZS5oLAoJICBpbmNsdWRlL3Vua253bi5oLCBpbmNsdWRlL3Vua253bi5pZGwsIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaDoKCURvbid0IGRlZmluZSBCRUdJTl9JTlRFUkZBQ0UgaW4gdW5rbnduLmguCgoJKiBpbmNsdWRlL2FjdGl2c2NwLmgsIGluY2x1ZGUvYW1zdHJlYW0uaCwgaW5jbHVkZS9hbXZpZGVvLmgsCgkgIGluY2x1ZGUvYXVzdHJlYW0uaCwgaW5jbHVkZS9jb21jYXQuaCwgaW5jbHVkZS9kZHN0cmVhbS5oLAoJICBpbmNsdWRlL2Rpc3BleC5oLCBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL2V4ZGlzcC5oLAoJICBpbmNsdWRlL21sYW5nLmgsIGluY2x1ZGUvbW1zdHJlYW0uaCwgaW5jbHVkZS9vYWlkbC5oLAoJICBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlaWRsLmgsCgkgIGluY2x1ZGUvcHN0b3JlLmgsIGluY2x1ZGUvc2VydnByb3YuaCwgaW5jbHVkZS9zaGxkaXNwLmgsCgkgIGluY2x1ZGUvc2hvYmppZGwuaCwgaW5jbHVkZS9zdHJtaWYuaCwgaW5jbHVkZS91bmtud24uaCwKCSAgaW5jbHVkZS91bmtud24uaWRsLCBpbmNsdWRlL3VybG1vbi5oLCB0b29scy93aWRsL2hlYWRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJR2VuZXJhdGUgQkVHSU5fSU5URVJGQUNFLEVORF9JTlRFUkZBQ0UgbWFjcm9zIGluc3RlYWQgb2YKCUlDT01fTVNWVEFCTEVfQ09NUEFUX0ZJRUxEUy4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL21zdmNydC9leGNlcHQuYywKCSAgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5udC5oLCB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdGhlc2UgV2luZS1vbmx5IHR5cGVzOgoJICBFbnVtSUNNUHJvZmlsZXNQcm9jQ2FsbGJhY2sKCSAgUEVYQ0VQVElPTl9SRUdJU1RSQVRJT05fUkVDT1JECglEb24ndCB0ZXN0IHRoZXNlIFdpbmUtb25seSB0eXBlczoKCSAgRU1SU0VUVEVYVEpVU1RJRklDQVRJT04KCSAgRVhDRVBUSU9OX1JFR0lTVFJBVElPTl9SRUNPUkQKCVJlbW92ZSBFWENFUFRJT05fRlJBTUUsIGl0IGRvZXNuJ3QgZXhpc3QgYXQgYWxsLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBidWcgaW4gdm9sdW1lIGNvbnRyb2wgc3RlcCBzaXplIHNvIHRoYXQgaXQgYWN0dWFsbHkgd29ya3MuCglBZGRlZCBhZGRpdGlvbmFsIGRlYnVnIHRyYWNpbmcuCglDb2RlIGNsZWFudXAuCgoJKiB0b29scy93aW5hcGkvY19wYXJzZXIucG06IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJREVDTEFSRV9PTERfSEFORExFIGlzIG5vdCB1c2VkIGFueW1vcmUuCgoJKiB0b29scy9zZm50MmZudC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJSW5jbHVkZSA8c3RkbGliLmg+IGZvciBhIHByb3RvdHlwZSBvZiBleGl0KCkuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL05sLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGRlZCBEdXRjaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi90ZXN0cy9pbWFnZWxpc3QuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglUZXN0IGNhc2UgZm9yIGhvdHNwb3QgaGFuZGxpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBGaXggaG90c3BvdCBoYW5kbGluZwoJLSBSZW1vdmUgdW51c2VkIGZsYWcgZnJvbSB0aGUgSW50ZXJuYWxEcmFnIHN0cnVjdC4KCjIwMDQtMDgtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGluY2x1ZGUvbW1kZGsuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmUgd2luZSBzcGVjaWZpYyBEUlZfUVVFUllEU09VTkRHVUlEIG1lc3NhZ2UgYW5kIGNhbGN1bGF0ZSBpdCBpbgoJZHNvdW5kLmRsbCAobGlrZSBpbiAyay94cCkuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgaW1wbGVtZW50YXRpb24gZm9yIElQZXJzaXN0UHJvcGVydHlCYWdfTG9hZCBvbiBPTEVGb250IChiYXNlZCBvbgoJYSBwYXRjaCBieSBBbGV4IFZpbGxhY+1zIExhc3NvKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVuaWNvZGlmeSBhIGxvYWQgb2Ygc3RyaW5ncy4KCgkqIGRsbHMvZ2RpL2JydXNoLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZXR1cm4gYSBzdG9jayBicnVzaCB3aGVuIGFza2luZyBmb3IgYSBicnVzaCB3aXRoIHRoZSBzYW1lCgljaGFyYWN0ZXJpc3RpY3MsIGFzIHBlciBuYXRpdmUuIERvY3VtZW50IHRoZSBicnVzaCBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsIGluY2x1ZGUvc2hsb2JqLmgsCgkgIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL2NfdHlwZS5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggcGFja2luZyBidWcgaW4gc2hsb2JqLmguCglGaXggdGhlIGRlY2xhcmF0aW9uIG9mIGJpdGZpZWxkcyBzbyB0aGVpciBsYXlvdXQgbWF0Y2hlcyB3aGF0IE1TVkMKCWdlbmVyYXRlcy4KCU1vZGlmeSB3aW5hcGlfdGVzdCB0byBjb21wdXRlIHRoZSBiaXRmaWVsZHMgc2l6ZS9hbGlnbm1lbnQgbGlrZSBNU1ZDCglkb2VzLgoJVXBkYXRlIHRoZSBpbXBhY3RlZCBnZW5lcmF0ZWQuYyBmaWxlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUluIElQZXJzaXN0RmlsZV9TYXZlIGlmIHRoZSBleGUgZmlsZSBpcyBub3QgZm91bmQsIHRydXN0IHRoZSBwYXRoIHdlCglhcmUgZ2l2ZW4gYW5kIGFsbG93IGNyZWF0aW9uIG9mIHRoZSBsaW5rLgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW5wdXQgcGF0aCBjYW4gaGF2ZSB0cmFpbGluZyBzbGFzaC4KCS0gSW1wcm92ZSBzb21lIGRlYnVnZ2luZyBtZXNzYWdlcy4KCgkqIGRsbHMvZ2RpL2NsaXBwaW5nLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEZpeCB0eXBlIGluIEdldFJhbmRvbVJlZ2lvbiBmdW5jdGlvbi4KCS0gQWRkIHByb3RvdHlwZSB0byBoZWFkZXIuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJRW5hYmxlIEVSUk9SX01PUkVfREFUQSB0byBiZSBzZXQgaW4gQ3J5cHRHZXREZWZhdWx0UHJvdmlkZXIuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkZWQgdGVzdHMgZm9yIENyeXB0U2V0UHJvdmlkZXJFeC4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgYSBmZXcgbW9yZSBOYXRpdmUgQVBJIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2hhbmdlIHN0ZXAgc2l6ZSBmcm9tIDAgdG8gMSBmb3Igdm9sdW1lIGNvbnRyb2xzIHRvIHN0b3AgZGl2aWRlIGJ5Cgl6ZXJvIGluIGFwcC4KCUNoYW5nZSBkZWJ1ZyBjaGFubmVsIHRvIG1peGVyLgoJQWRkIG1vcmUgdHJhY2luZyBhbmQgZXJyb3JzLgoKMjAwNC0wOC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB0eXBlcyB0aGF0IGRvbid0IGV4aXN0IGZyb20gdGVzdHMuZGF0LgoJRG9uJ3QgdGVzdCB0eXBlcyB0aGF0IGhhdmUgYSBwbGF0Zm9ybSBkZXBlbmRlbnQgbGF5b3V0LgoJRG9uJ3QgdGVzdCBXaW5lLW9ubHkgdHlwZXMuCglIZWxwcyBnZXQgdGhlIGdlbmVyYXRlZCB0ZXN0cyBjb21waWxpbmcgb24gV2luZG93cy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9vbGVhdXQzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVJlZiBjb3VudGluZyBmaXhlcy4KCgkqIGZvbnRzL2dlbnR0Zi5mZjogR2VuZXJhdGUgdGhlIC50dGYgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggcGFja2luZyBvZiBzaGx3YXBpLmgKCUFkZCBhIERFQ0xTUEVDX0FMSUdOKDgpIHRvIGZvcmNlIERMTFZFUlNJT05JTkZPMiB0byBoYXZlIHRoZSBjb3JyZWN0CglhbGlnbm1lbnQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBpbnNlcnQgbWFya3MuCgktIFJlYXJyYW5nZSBUT09MQkFSX0lORk8uCgoJKiBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0eXBlIG9mIERlbGV0ZUlFM0NhY2hlIGZ1bmN0aW9uLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgMjQvMzIgYml0IHNhbXBsZSBzaXplIGFuZCA0LzYgY2hhbm5lbCBzdXBwb3J0LgoJQWRkZWQgZHNvdW5kIGNhcHR1cmUgd2luZSBzcGVjaWZpYyBtZXNzYWdlIHN1cHBvcnQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hbXN0cmVhbS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZXZlbnVtL01ha2VmaWxlLmluLCBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3N0cm1paWRzLy5jdnNpZ25vcmUsIGRsbHMvc3RybWlpZHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc3RybWlpZHMvc3RybWlpZHMuYywgZGxscy91dWlkL3V1aWQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgJ3N0cm1paWRzLmxpYicuCglNb3ZlZCBDTFNJRF9GaWx0ZXJHcmFwaCBhbmQgdGhlIHJlbGF0ZWQgR1VJRHMgdG8gc3RybWlpZHMuCgoJKiBkbGxzL3F1YXJ0ei90ZXN0cy9maWx0ZXJncmFwaC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURlZmluZSBDT0JKTUFDUk9TLiBGaXhlcyBjb21waWxhdGlvbiBvbiBXaW5kb3dzLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLCBpbmNsdWRlL3NoZWxsYXBpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBuZXcgZmllbGRzIHRvIHRoZSBOT1RJRllJQ09OREFUQSBzdHJ1Y3R1cmUgc28gaXQgbWF0Y2hlcyB0aGUKCWxhdGVzdCBwbGF0Zm9ybSBTREsuCglVcGRhdGUgc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYy4gSXQgbm93IHdvcmtzIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUKCVdpbmRvd3MgaGVhZGVycy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQ2xlYXIgdG9vbHRpcCB3aGVuIHRleHQgaXMgc2V0IHRvIE5VTEwuCglSZXBhaW50IHRvb2x0aXAgd2hlbiBpdGVtIGluZm8gY2hhbmdlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglGb3J3YXJkIGZvY3VzIHRvIGNvbWJvYm94LCBvdGhlcndpc2UgZWRpdCBjb250cm9sIHdvbid0IGdldCBmb2N1cy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSByZWN0YW5nbGUgcGFzc2VkIGluIERSQVdJVEVNU1RSVUNUIGlzIHNsaWdodGx5IHRvbyBsYXJnZSBhcwoJY29tcGFyZWQgd2l0aCBXaW5kb3dzLgoKCSogZm9udHMvd2luZV9zeXN0ZW0uc2ZkOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ29tcGxldGUgY3AxMjUyIGZvciBTeXN0ZW0uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggYW5jaG9yIGhpZ2hsaWdodGluZy4KCS0gUmVtb3ZlIHJlZHVuZGFudCB0ZXN0IGluIFRPT0xCQVJfRHJhd0J1dHRvbi4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgVFJBQ0UncyBmb3Igc29tZSBJbnRlcm5ldCogZnVuY3Rpb25zLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBCdWlsZFRydXN0ZWVXaXRoU2lkLCBpbXBsZW1lbnQgYW5kIHRlc3QgQnVpbGRUcnVzdGVlV2l0aE5hbWUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJQ29uc2lzdGVudGx5IHN1Z2dlc3QgcHJvcGVyIEVtdWxhdGlvbiByYXRoZXIgdGhhbiBFbXVsYXRlZCBmb3IKCUhhcmR3YXJlQWNjZWxlcmF0aW9uIGluIFtkc291bmRdIHNlY3Rpb24gb2YgY29uZmlnIGZpbGUuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIEVDT05OUkVTRVQgaW4gRklMRV9HZXROdFN0YXR1cy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy9udGRsbC9maWxlLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIEVycm9ycyBzaG91bGQgb25seSBiZSByZXBvcnRlZCB0byBJL08gY29tcGxldGlvbiByb3V0aW5lIGFmdGVyCgkgIE50UmVhZEZpbGUgaGFzIHN1Y2NlZWRlZC4KCS0gVGVzdCBjYXNlIGZvciB0aGlzIGJlaGF2aW91ci4KCgkqIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywgZGxscy9xdWFydHovcGluLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFJlbW92ZSBkdXBsaWNhdGVkIGNvZGUgaW4gZmlsZSByZWFkZXIuCgktIFVzZSBuZXcgQ3JlYXRlU3BlY2lmaWMgZnVuY3Rpb24gZm9yIGZpbGUgcmVhZGVyIHRoYXQgZG9lc24ndCBxdWVyeQoJICBmb3IgSU1lbUlucHV0UGluLgoJLSBHZXQgcmlkIG9mIGluZWZmaWNpZW50IHVzZSBvZiBJTWVtSW5wdXRQaW4gaW4gZ2VuZXJhbCBwaW4gY29kZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9maWxlLmMsIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJLSBVcGRhdGUgYnVpbGQgc3lzdGVtIHRvIHN1cHBvcnQgSU9LaXQgYW5kIENvcmVGb3VuZGF0aW9uIGZyYW1ld29ya3MKCSAgb24gRGFyd2luLgoJLSBBZGQgc3VwcG9ydCBmb3IgdGhlIC1mcmFtZXdvcmsgIm5hbWUiIGxpbmtlciBvcHRpb24uCgktIE50UXVlcnlWb2x1bWVJbmZvcm1hdGlvbkZpbGUgc2V0IGRldmljZSBpbmZvIG9uIERhcndpbi4KCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywKCSAgZGxscy93aW5tbS90ZXN0cy93aW5tbV90ZXN0Lmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgMzIgYml0IHNhbXBsZSBzaXplIHRlc3RzIGFuZCA0IGFuZCA2IGNoYW5uZWwgdGVzdHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNsZWFudXAgbWVzc2FnZXMgaW4gc3VwcG9ydGVkRm9ybWF0LgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IHRyeSB0byBmaW5kIGFsdGVybmF0ZSBmb3JtYXRzIGZvciBub24gUENNIGZvcm1hdHMuCgoJKiBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgc3R1YiBmb3IgRGVsZXRlSUUzQ2FjaGUuCgoJKiB3aW5kb3dzL2RlZmRsZy5jOiBaYWNoIEdvcm1hbiA8emFjaEBhcmNoZXR5cGVhdWN0aW9uLmNvbT4KCVdoZW4gc2VhcmNoaW5nIGZvciB0aGUgREVGUFVTSEJVVFRPTiBpbiBhIGRpYWxvZywgcmVjdXJzZSBpbnRvIGNoaWxkCgl3aW5kb3dzIHdpdGggdGhlIFdTX0VYX0NPTlRST0xQQVJFTlQgc3R5bGUgKGlmIHRoZXkgYXJlIHZpc2libGUgYW5kCgllbmFibGVkKS4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueTogWmFjaCBHb3JtYW4gPHphY2hAYXJjaGV0eXBlYXVjdGlvbi5jb20+CglXU19UQUJTVE9QIHNob3VsZCBub3QgYmUgYSBkZWZhdWx0IHN0eWxlIGZvciBHUk9VUEJPWCBjb250cm9scy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglTaG93IHRoZSBwcm9wZXIgbWFrZSBjb21tYW5kIGF0IHRoZSBlbmQgb2YgY29uZmlndXJlLgoKMjAwNC0wOC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc29tZSBkZWZpbmVzIGZvciBDUFNldEtleVBhcmFtLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL29yZGluYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgdGVzdHMgb2YgR2V0QWNjZXB0TGFuZ3VhZ2VzQSBmb3Igd2luMmsgYW5kIHdpbiBYUC4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBbGxvdyB0aGUgdXNlciB0byBtb3ZlIG1hbmFnZWQgd2luZG93cyBieSBkcmFnZ2luZyBvbiBIVENBUFRJT04KCWFyZWFzLgoKCSogZGxscy9tc2kvcGFja2FnZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglEb24ndCBoYXJkY29kZSBjOlx3aW5kb3dzIHBhdGhzIGluIG1zaS5kbGwuCgoJKiBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglEb24ndCBoYXJkY29kZSBDOlx3aW5kb3dzXHN5c3RlbVxzdGFydC5leGUuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6CglUaGUgYXJndiBhcnJheSBwYXNzZWQgdG8gdGhlIGFwcCBuZWVkcyB0byBiZSBpbiB0aGUgQW5zaSBjb2RlcGFnZSwgbm90Cgl0aGUgVW5peCBvbmUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBwcmludGVyIHNlbGVjdGlvbiBpbiBQRF9QUklOVFNFVFVQIHR5cGUgZGlhbG9ncy4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIE9CSl9DT0xPUlNQQUNFIGRlZmluZS4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglEbyBub3QgbWFrZSBhIGRpcmVjdG9yeSByZWFkLW9ubHkuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUF2b2lkIGNyYXNoaW5nIG9uIHVuc3VjY2Vzc2Z1bCBzZW5kLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2xlYW51cCBtZXNzYWdlcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJQWxleCBWaWxsYWPtcyBMYXNzbyA8YV92aWxsYWNpc0BwYWxvc2FudG8uY29tPgoJQWRkIGRldGVjdGlvbiBvZiBncmFwaGljIGZpbGUgaGVhZGVyIGluIHBpY3R1cmUgbG9hZCwgdHJlYXQgaXQgYXMKCW5vLWhlYWRlciBjYXNlLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL21peGVyLmMsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywgZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWxsb2NhdGUgd2F2ZSBmb3JtYXQgc3RydWN0dXJlIGR5bmFtaWNhbGx5IGJhc2VkIG9uIGZvcm1hdC4KCVJlbW92ZSBmb3JtYXQgY2hlY2tzIHRvIGFsbG93IGRyaXZlciB0byBkZWNpZGUgaWYgZm9ybWF0IHN1cHBvcnRlZC4KCUNvZGUgY2xlYW51cHMuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2xlYW51cCBzb21lIG1vcmUgbWVzc2FnZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNvbWUgc291bmQgY2FyZHMgaGF2ZSBkaWZmZXJlbnQgY2FwYWJpbGl0aWVzIHdoZW4gZG9pbmcgZnVsbCBkdXBsZXggc28KCWFkZCBkdXBsZXggY2FwcyBhbmQgcmV0dXJuIHRoZW0gd2hlbiBuZWNlc3NhcnkuCglDbGVhbiB1cCBldmVudCBtZXNzYWdlIHByaW50aW5nLgoKCSogZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglBbGV4IFZpbGxhY+1zIExhc3NvIDxhX3ZpbGxhY2lzQHBhbG9zYW50by5jb20+CglBcHBseSBISU1FVFJJQyB0cmFuc2Zvcm1hdGlvbiBvbiBpY29ucywganVzdCBsaWtlIGJpdG1hcHMuCgoJKiBkbGxzL2RldmVudW0vZGV2ZW51bS5yYzogSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCUFkZGVkIFNwYW5pc2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvc3luYy5jLAoJICBkbGxzL2tlcm5lbC92eGQuYywgZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLAoJICBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlcnZlci5jLAoJICBkbGxzL250ZGxsL3ZpcnR1YWwuYywgZGxscy93aW5lZG9zL2ludDEzLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9mZC5jLAoJICBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zb2NrLmMsIHNlcnZlci90cmFjZS5jOgoJRmQgdHlwZSBpcyBubyBsb25nZXIgdXNlZCwgZ2V0IHJpZCBvZiBpdC4KCjIwMDQtMDgtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBpbmNsdWRlL2FzeW5jLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NlcmlhbC5jLAoJICBzZXJ2ZXIvc29jay5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGJldHRlciBzdXBwb3J0IGZvciBub24tYmxvY2tpbmcgQ09NTSBhbmQgc29ja2V0IHJlYWQvd3JpdGVzOgoJICArIGFkZGVkIG5lY2Vzc2FyeSBzZW1hbnRpY3MgdG8gZmQgZmxhZ3MKCSAgKyBubyBsb25nZXIgdXNlcyBmZCB0eXBlIChidXQgZmQgZmxhZ3MpIHJlYWQvd3JpdGUgc2VtYW50aWMgYmVoYXZpb3IKCS0gZml4ZWQgc29ja2V0IGNvZGUgdG8gdXNlIHRoZSBwcm9wZXIgbWFuaWZlc3QgY29uc3RhbnRzCgktIGZpeGVzIGZvciBrZXJuZWwzMi5HZXRPdmVybGFwcGVkUmVzdWx0IHdpdGhvdXQgaEV2ZW50IHNldAoJLSBpbiBudGRsbC5OdHtSZWFkfFdyaXRlfUZpbGUKCSAgKyBhbHdheXMgcmVzZXQgdGhlIGV2ZW50CgkgICsgYWRkZWQgc3VwcG9ydCBmb3IgbG9uZ2xvbmcgb2Zmc2V0cwoJICArIGJldHRlciBvYmplY3QgZGlzcG9zYWwgaW4gZXJyb3IgaGFuZGxpbmcgY29kZSBwYXRocwoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBmb250cy8uY3ZzaWdub3JlLCBmb250cy9NYWtlZmlsZS5pbiwgZm9udHMvZ2VudHRmLmZmLAoJICBmb250cy93aW5lX2NvdXJpZXIuc2ZkLCBmb250cy93aW5lX3NhbnNfc2VyaWYuc2ZkLAoJICBmb250cy93aW5lX3N5c3RlbS5zZmQsIHRvb2xzLy5jdnNpZ25vcmUsIHRvb2xzL01ha2VmaWxlLmluLAoJICB0b29scy9mbnQyZm9uLmMsIHRvb2xzL3NmbnQyZm50LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRmlyc3Qgc3RhYiBhdCBXaW5lIHZlcnNpb25zIG9mIENvdXJpZXIsIFN5c3RlbSBhbmQgTVMgU2FucyBTZXJpZgoJZm9udHMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUxldCBTdGFydFNlcnZpY2VDdHJsRGlzcGF0Y2hlciBoYW5kbGUgc2VydmljZXMgbm90IHN0YXJ0ZWQgYnkKCVN0YXJ0U2VydmljZS4KCgkqIGRsbHMvbnRkbGwvbnQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGhhbmRsaW5nIG9mIFRva2VuUHJpbWFyeUdyb3VwLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglLcmlzaG5hIE11cnRoeSA8S3Jpc2huYS5NdXJ0aHlAZ3VwdGF3b3JsZHdpZGUuY29tPgoJQWxsb3cgcmVzaXppbmcgd2luZG93cyB3aXRob3V0IHRoaWNrZnJhbWUgc3R5bGUuCgoJKiBkbGxzL21ha2VfZGxsczogQUxUTkFNRVMgaGFzIGJlZW4gcmVtb3ZlZCwgdXNlIFNQRUNfU1JDUzE2IGluc3RlYWQuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWw6IEZlcmdhbCBEYWx5IDxmZXJnYWxAZXNhdGNsZWFyLmllPgoJRG9jdW1lbnQgZG9zZGV2aWNlcy91bmMgbWFwcGluZy4KCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBOdFNldEluZm9ybWF0aW9uVG9rZW4uCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgcmVkcmF3IGRpYWxvZyBvbiBjaGFuZ2luZyBiZXR3ZWVuIHBhZ2VzLgoKCSogZGxscy9jYXBpMjAzMi9jYXAyMHd4eC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglOZXdlciBkZXBlbmRlbnQgbGludXggaGVhZGVycyBoYXZlIF9fdXNlciBub3RhdGlvbnMsIHdoaWNoIHdlIG5lZWQgdG8KCXByb3ZpZGUuIERlZmluZSBpdCB0byBiZSBlbXB0eS4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IGluc3RhbGxlZCBmb250IGxpc3QgdG8gbGlzdC5oLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUlmIHBzelR5cGVOYW1lIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSB0eXBlIG5hbWUgaW4KCUNyeXB0RW51bVByb3ZpZGVyVHlwZXMsIHJldHVybiBFUlJPUl9NT1JFX0RBVEEuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL2NyeXB0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBjYXN0cyBpbiBjcnlwdCB0ZXN0cy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBkaXJlY3RvcnkgbGlzdC4KCjIwMDQtMDgtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL3dpbm1tLmMsIGRsbHMvd2lubW0vd2lubW0uc3BlYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgdGhlIG1tVGFzayogZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglUaGUgZGVza3RvcCBwcm9jZXNzIGlzIG5vdCBhdXRvbWF0aWNhbGx5IHJlc3RhcnRlZCB1bmRlciBXaW45NSwgc28KCXN0b3Aga2lsbGluZyBpdC4KCgkqIGRsbHMvbWFwaTMyL3Rlc3RzL3Byb3AuYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJVGVybWluYXRlIHRlc3QgbG9vcCBvbiB0aGUgZmlyc3QgZXJyb3IgdG8gYXZvaWQgZXhjZXNzaXZlIGxvZyB2b2x1bWUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJSGFuZGxlIHNoZWxsIGxpbmsgZmlsZXMgY29udGFpbmVkIGluIGRvdWJsZSBxdW90ZXMuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIEdldC9TZXRGaWxlU2VjdXJpdHkgQS0+Vy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFphY2ggR29ybWFuIDx6YWNoQGFyY2hldHlwZWF1Y3Rpb24uY29tPgoJT0sgYnV0dG9uIHNob3VsZCBiZSBkZWZhdWx0IGluIG5vbi13aXphcmQgcHJvcGVydHkgc2hlZXRzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLAoJICBkbGxzL3F1YXJ0ei90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3F1YXJ0ei90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9xdWFydHovdGVzdHMvZmlsdGVyZ3JhcGguYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHRlc3RzIGZvciBmaWx0ZXJncmFwaC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Dbi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfQ3MucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0VvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRmkucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19IdS5yYywgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0tvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfTm8ucmMsIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsIGRsbHMvY29tbWRsZy9jZGxnX1RoLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Vay5yYywgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1poLnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVXNlICJNUyBTaGVsbCBEbGciIGluIHRoZSBPcGVuIEZpbGUgZGlhbG9nIHRlbXBsYXRlcyBhcyBpbiBXaW5kb3dzCgktIFJlc2l6ZSBjaGlsZCBkaWFsb2cgd2hlbiBpdHMgY29udHJvbHMgYXJlIG1vdmVkIHJlbGF0aXZlbHkgc3RjMzIKCSAgIm1hZ2ljIiBjb250cm9sLgoKCSogZGxscy9yc2FiYXNlL21haW4uYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJUmVnaXN0ZXIgVHlwZU5hbWUgcmVnaXN0cnkga2V5IHZhbHVlLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZpeCBhbGxvYyB0ZXN0IGluIENyeXB0RW51bVByb3ZpZGVyVHlwZXNXIHRoYXQgZmFpbGVkIGlmIHRoZSBhbGxvYwoJc3VjY2VlZGVkLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUZpeGVkIGEgZmV3IGNyeXB0IHRlc3QgYnVncy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvbWl4ZXIuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgdGVzdCBmb3IgV0FWRUZPUk1BVEVYVEVOU0lCTEUgc3VwcG9ydC4KCUVycm9yIG1lc3NhZ2UgY2xlYW51cC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgV0FWRUZPUk1BVEVYVEVOU0lCTEUgc3VwcG9ydC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUva3MuaCwgaW5jbHVkZS9rc2d1aWQuaCwKCSAgaW5jbHVkZS9rc21lZGlhLmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkcyBlbm91Z2ggb2Yga3MuaCwga3NndWlkLmggYW5kIGtzbWVkaWEuaCB0byBzdGFydCBhZGRpbmcgc3VwcG9ydAoJZm9yIFdBVkVGT1JNQVRFWFRFTlNJQkxFLgoKCSogZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS93aW50ZXJubC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBhbmQgZGVjbGFyYXRpb24gZm9yIE50Q3JlYXRlTmFtZWRQaXBlRmlsZS4KCgkqIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9tbGFuZy90ZXN0cy9tbGFuZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJTXVsdGlMYW5ndWFnZTJfR2V0Q2hhcnNldEluZm8sIGFkZCBhIHRlc3QgY2FzZSBmb3IgaXQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvdGVzdHMvc2VjdXJpdHkuYywKCSAgaW5jbHVkZS9hY2xhcGkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmF0aW9uLCBpbXBsZW1lbnRpb24gYW5kIHRlc3QgZm9yIEJ1aWxkVHJ1c3RlZVdpdGhTaWQuCgoJKiBkbGxzL3F1YXJ0ei9waW4uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IHBvdGVudGlhbCByYWNlIGluIElQaW5JbXBsX0Nvbm5lY3RlZFRvLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglNYWtlIHN1cmUgd2UgY2hlY2sgZm9yIGVncmVwIGJlZm9yZSB3ZSB1c2UgaXQuCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL29wZW5nbDMyL3dnbC5oLCBpbmNsdWRlL3dpbmRlZi5oLAoJICBpbmNsdWRlL3dpbmdkaS5oOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJTW92ZSBzb21lIE9wZW5HTCBkZWZpbmVzIGZyb20gdGhlIHByaXZhdGUgd2dsLmggaGVhZGVyIHRvIHdoZXJlIHRoZXkKCWJlbG9uZy4KCgkqIGRsbHMvcXVhcnR6L2F2aXNwbGl0LmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIGhhbmRsaW5nIG9mICdpZHgxJyAoaW5kZXgpIGNodW5rLgoJQWRkZWQgaGFuZGxpbmcgb2YgJ3JlYyAnIGxpc3QgdGhhdCBlbWJlZHMgc3RyZWFtcyBkYXRhLgoJRGlzYWJsZWQgY2hlY2tpbmcgb2YgdGhlIFRXT0NDIG9mIHN0cmVhbXMgZGF0YSBjaHVuay4gSXQgaXMgbm90CglyZWxldmFudCBpbiBhdmkgZmlsZXMuCglPbmx5IHJlbGVhc2UgbWVkaWEgc2FtcGxlIHdoZW4gdGhlIGRlbGl2ZXJ5IHRvIHRoZSBkb3duc3RyZWFtIGZpbHRlcgoJZG9lcyBub3Qgc3VjY2VlZGVkLgoJU29tZSBjbGVhbi11cC4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9Dcy5yYywgZGxscy9hdmlmaWwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Dcy5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL21wci9tcHIucmMsCgkgIGRsbHMvbXByL21wcl9Dcy5yYywgZGxscy9tc2FjbS9tc2FjbS5yYywgZGxscy9tc2FjbS9tc2FjbV9Dcy5yYywKCSAgZGxscy9tc3JsZTMyL21zcmxlX0NzLnJjLCBkbGxzL21zcmxlMzIvcnNyYy5yYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnX0NzLnJjLCBkbGxzL29sZWRsZy9yc3JjLnJjLCBkbGxzL3NlcmlhbHVpL0NzLnJjLAoJICBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjLCBkbGxzL3NldHVwYXBpL0NzLnJjLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjLCBkbGxzL3dpbmVwcy9yc3JjLnJjLAoJICBkbGxzL3dpbmVwcy93cHNfQ3MucmMsIGRsbHMvd2luaW5ldC9yc3JjLnJjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldF9Dcy5yYywgZGxscy93aW5tbS93aW5tbV9Dcy5yYywKCSAgZGxscy93aW5tbS93aW5tbV9yZXMucmM6CglEYXZpZCBLcmVkYmEgPGtyZWRiYUBpYm90LmNhcy5jej4KCUFkZGVkIEN6ZWNoIHJlc291cmNlcy4KCgkqIGluY2x1ZGUvcHJzaHQuaCwgd2luZG93cy9zcHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIG5ldyBwcm9wc2hlZXQgbWVzc2FnZXMuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURlbGV0ZSBidWZmZXIgYXJyYXkgd2hlbiByZWxlYXNpbmcgbGFzdCBidWZmZXIuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBbGxvdyBwcm9wZXIgcmVsZWFzZSB3aGlsZSBjYXB0dXJpbmcuCgoJKiBkbGxzL250ZGxsL3NlYy5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IGluY29ycmVjdCBzaXplb2YgaW4gUnRsQ3JlYXRlU2VjdXJpdHlEZXNjcmlwdG9yKCkuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIHN0dWIgZGVjbGFyYXRpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJUmVtb3ZlIHJld2luZCBzZWN0aW9uIGR1ZSB0byBsYWNrIG9mIHVwZGF0ZXMuCglSZW1vdmUgb2xkIGxpc3Qgb2YgY29udHJpYnV0b3JzIHRoYXQgZ2F2ZSB0byB0aGUgd3BmLgoJTGluayB0byBoaXN0b3J5IHBhZ2UgaW4gcXVlc3Rpb24gYXNraW5nIGFib3V0IHdpbmUncyBoaXN0b3J5LgoJQ2hhbmdlIFdpbmVYIG5hbWUgdG8gQ2VkZWdhLgoJVXNlIGN1cnJlbnQgd2luZSB2ZXJzaW9uIGluIGFuc3dlci4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBhIGNyYXNoIHNhdmluZyBhIGZpbGUgd2l0aG91dCBmaWxlIG5hbWUgZXh0ZW5zaW9uIGFuZCB3aXRob3V0CglleHRlbnNpb24gZmlsdGVyLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDbGVhbiB1cCBtZXNzeSBjb21tZW50IGluIFNIRmlsZU9wZXJhdGlvbi4KCVJlZHVjZSB0aGUgbnVtYmVyIG9mIGdvdG8gbGFiZWxzIGluIFNIRmlsZU9wZXJhdGlvbiBieSBvbmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBaYWNoIEdvcm1hbiA8emFjaEBhcmNoZXR5cGVhdWN0aW9uLmNvbT4KCVByb3BzaGVldCBwYWdlcyBuZWVkIFdTX0VYX0NPTlRST0xQQVJFTlQgc3R5bGUuCgoJKiBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbWxhbmcvbWxhbmcuc3BlYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBMY2lkVG9SZmMxNzY2W0EvV10uCgoJKiBkbGxzL3F1YXJ0ei9waW4uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgYSBidWcgdGhhdCBtYWRlIHRoZSBjb25uZWN0aW9uIHBvc3NpYmxlIHdoZXJlYXMgbm8gc3VpdGFibGUKCW1lZGlhIHR5cGUgaGFzIGJlIGZvdW5kIGR1cmluZyB0aGUgbmVnb3RpYXRpb24uCglGaXhlZCB0aGUgcmVsZWFzZSBvZiB0aGUgbWVkaWEgc2FtcGxlIGluIFB1bGxQaW5fVGhyZWFkX1Byb2Nlc3MuCglBZGRlZCBhbmQgZml4ZWQgYSBsb3Qgb2YgdHJhY2VzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kZXZndWlkLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJZGV2Z3VpZC5oIGRlZmluZXMgZGV2aWNlIGNsYXNzIEdVSURzIHVzZWQgaW4gZGV2aWNlIGRldGVjdGlvbiBhbmQKCWNsYXNzaWZpY2F0aW9uLgoKCSogaW5jbHVkZS9udGRkc3Rvci5oOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgR1VJRHMgZnJvbSB0aGUgd2luMmsgRERLIHRoYXQgYXJlIHVzZWQgZm9yIFVTQiBkZXZpY2VzLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBpbmNsdWRlL250c2VjYXBpLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIGRlY2xhcmF0aW9uIG9mIExTQSogc3RydWN0cyB0byBudHNlY2FwaS5oLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRoZSBDQ0hJTERSRU5fVElUTEVCQVIrMSBhbmQgTlVNX1BPSU5UUyBtYWNyb3MuCglBZGQgYSBjb3VwbGUgYmFzZSB0eXBlcyB0aGF0IHdpbmFwaV90ZXN0IGRvZXMgbm90IGtub3cgaG93IHRvIHBhcnNlLgoJRml4IGEgYnVnIHNvIHRoYXQgJ3NpZ25lZCcgYW5kICd1bnNpZ25lZCcgYXJlIHJlY29nbmlzZWQgYXMgdmFsaWQKCXR5cGVzLgoKMjAwNC0wOC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA0MDgxMy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNC0wOC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbmVkb3MvdmdhLmM6CglNYXJrdXMgQW1zbGVyIDxtYXJrdXMuYW1zbGVyQG9yaWJpLm9yZz4KCUFkZCBET1MgZWRpdGluZyBrZXkgc3VwcG9ydCBpbiBCVUZGRVJFRCBJTlBVVC4KCgkqIGRsbHMvdXNlci90ZXN0cy9kaWFsb2cuYywgd2luZG93cy9kZWZkbGcuYzoKCVdNX05FWFRETEdDVEwgc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIGRlZmF1bHQgYnV0dG9uIElEIChiYXNlZCBvbiBhCglwYXRjaCBieSBLcmlzaG5hIE11cnRoeSkuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYzogSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCVRyYW5zbGF0aW9uIHVwZGF0ZS4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglGaXggYSBidWcgaW4gcGFzc2luZyBwYXJhbWV0ZXJzIHRvIENGbl9XTUluaXREaWFsb2cgYW5kIENGbl9XTUNvbW1hbmQKCWluIEZvcm1hdENoYXJEbGdQcm9jVy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvZW52LmMsIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvdGVzdHMvbnRkbGxfdGVzdC5oLAoJICBkbGxzL250ZGxsL3Rlc3RzL3BhdGguYywgZGxscy9udGRsbC90ZXN0cy9ydGwuYywKCSAgZGxscy9udGRsbC90ZXN0cy9ydGxiaXRtYXAuYywgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYywKCSAgZGxscy9udGRsbC90ZXN0cy9zdHJpbmcuYywgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXZvaWQgYW5ub3lpbmcgJ21hY3JvIHJlZGVmaW5pdGlvbicgd2FybmluZ3MgYnkgZGVmaW5pbmcKCVdJTjMyX05PX1NUQVRVUyBhdCB0aGUgcmlnaHQgdGltZS4KCURlZmluZSBfV0lOMzJfV0lOTlQgb3RoZXJ3aXNlIHdlIGFyZSBtaXNzaW5nIHNvbWUgc3ltYm9scyB3aXRoIHRoZQoJV2luZG93cyBoZWFkZXJzLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvc2VjLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIGluY2x1ZGUvd2lubnQuaCwKCSAgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBQU0lEIGFuZCBQU0VDVVJJVFlfREVTQ1JJUFRPUiB0eXBlcy4KCUFkZCBQSVNJRCBhbmQgUElTRUNVUklUWV9ERVNDUklQVE9SLgoKCSogZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL3BhdGguYywKCSAgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9yZWxheS5jLCBkbGxzL250ZGxsL3Jlc291cmNlLmMsCgkgIGRsbHMvbnRkbGwvc2VydmVyLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL250ZGxsL3ZlcnNpb24uYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglNb3JlIFdBVkVPVVRDQVBTVyB0ZXN0cy4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUaGUgV2luZG93cyBoZWFkZXJzIGRvbid0IGRlZmluZSBQRVhDRVBUSU9OX1JFR0lTVFJBVElPTl9SRUNPUkQuCglSZW1vdmUgaXQuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvbnRkbGwvdGhyZWFkLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgU2V0VGhyZWFkVG9rZW4gdXNpbmcgTnRTZXRJbmZvcm1hdGlvblRocmVhZC4KCgkqIGRsbHMvd2luaW5ldC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy93aW5pbmV0L3Rlc3RzL3dpbmluZXRfdGVzdC5oLAoJICB0b29scy93aW5hcGkvdGVzdHMuZGF0OgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggY29tcGlsYXRpb24gb2YgdGhlIHdpbmluZXQgZ2VuZXJhdGVkIHRlc3RzIHdpdGggdGhlIFdpbmRvd3MKCWhlYWRlcnMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsCgkgIGRsbHMvd2lubW0vdGVzdHMvbWl4ZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIFdpbmRvd3MgaGVhZGVycyBzdXBwb3J0IGZvciBOT05BTUVMRVNTVU5JT04gYW5kIE5PTkFNRUxFU1NTVFJVQ1QKCWlzIHVudXNhYmxlLiBTbyBkb24ndCBmb3JjZSB0aGlzIG1vZGUuIEluc3RlYWQgY2hlY2sgd2hldGhlcgoJTk9OQU1FTEVTU1VOSU9OIGFuZC9vciBOT05BTUVMRVNTU1RSVUNUIGFyZSBzZXQgKGJ5IHRoZSBXaW5lIGhlYWRlcnMpCglhbmQgZGVmaW5lIGN1c3RvbSBhY2Nlc3MgbWFjcm9zIGFjY29yZGluZ2x5LgoKCSogZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvY2F0b3IuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGZpbGVzb3VyY2Ugb3V0cHV0IHBpbiBjcml0aWNhbAoJc2VjdGlvbi4KCUF2b2lkIGluZGVmaW5pdGUgd2FpdCB3aGVuIGNhbGxpbmcgR2V0T3ZlcmxhcHBlZFJlc3VsdC4KCUZpeGVkIGluaXRpYWwgcmVmY291bnQgb2YgdGhlIElNZW1BbGxvY2F0b3Igb2JqZWN0LgoJSW1wcm92ZWQgc29tZSB0cmFjZXMuCgoJKiBkbGxzL2dkaS9iaXRtYXAuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGEgZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBkZXZpY2UgYml0bWFwcywgdGhlbiBzdG9yZSB0aGUgYml0cyBvbiB0aGUKCWdkaSBzaWRlLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9QbC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjOgoJSmFjZWsgQ2FiYW4gPGphY2tAaXRtYS5wd3Iud3JvYy5wbD4KCUFkZGVkIFBvbGlzaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggZmlyc3QgcGFyYW1ldGVyIG9mIEdldERlZmF1bHRQcmludGVyQXxXLgoKCSogaW5jbHVkZS9tbXJlZy5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIFdBVkVfRk9STUFUX0VYVEVOU0lCTEUuCgoJKiBkbGxzL3gxMWRydi9kaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVN5bmMgd2l0aCBkaWJzZWN0aW9uIGluIFNldERJQml0c1RvRGV2aWNlLgoKCSogZGxscy9rZXJuZWwvaGVhcC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4IEJTRCBidWlsZC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2lubW1fdGVzdC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZSBXaW5kb3dzIGhlYWRlcnMgZG9uJ3QgZGVmaW5lIHRoZSBEUlZfUVVFUllERVZJQ0VJTlRFUkZBQ0UoU0laRSkKCW1hY3Jvcy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIGluY2x1ZGUvd2lubnQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVuYW1lIFJlc291cmNlSGFuZGxlIHRvIFJlc2VydmVkIGluIHRoZSBJTUFHRV9SRVNPVVJDRV9EQVRBX0VOVFJZCglzdHJ1Y3R1cmUgdG8gbWF0Y2ggdGhlIFdpbmRvd3MgaGVhZGVycy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOgoJSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglJZiB0aGUgcHN6UHJvdk5hbWUgcGFyYW0gb2YgQ3J5cHRFbnVtUHJvdmlkZXJzIGlzIHRvbyBzbWFsbCB0byBob2xkCgl0aGUgcHJvdmlkZXIgbmFtZSwgU2V0TGFzdEVycm9yIHRvIEVSUk9SX01PUkVfREFUQS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNYWtlIHBhdHRlcm4gYnJ1c2ggZGF0YSBjb25zdC4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywgZGxscy9kc291bmQvdGVzdHMvZHMzZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZDguYywKCSAgZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU1vcmUgZHNvdW5kIHRlc3RzIGVycm9yIG1lc3NhZ2UgY2xlYW51cHMuCglPbmx5IGRpc3BsYXkgdmVyYm9zZSBpbmZvcm1hdGlvbiB3aGVuIGluIGludGVyYWN0aXZlIG1vZGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUJldHRlciBtbWFwIGZhaWx1cmUgZXJyb3IgbWVzc2FnZS4KCgkqIGRsbHMvY29tY2F0L2NvbWNhdF9wcml2YXRlLmgsIGRsbHMvZG1iYW5kL2RtdXRpbHMuaCwKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19wcml2YXRlLmgsIGRsbHMvZG1pbWUvZG11dGlscy5oLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9wcml2YXRlLmgsCgkgIGRsbHMvZG1zdHlsZS9kbXV0aWxzLmgsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZV9wcml2YXRlLmgsIGRsbHMvbWxhbmcvbWxhbmcuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLAoJICBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLCBkbGxzL3JwY3J0NC9jcHJveHkuYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uaCwgaW5jbHVkZS9vYmpiYXNlLmg6CglNb3ZlZCBJQ09NX1RISVNfTVVMVEkgZGVmaW5pdGlvbiBvdXQgb2Ygb2JqYmFzZS5oIGFuZCBpbnRvIHRoZSBmaWxlcwoJdGhhdCB1c2UgaXQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJV2UgZG9uJ3QgbmVlZCB0aGUgc2hhcmVkIGhlYXAgb24gbm9uLWkzODYgcGxhdGZvcm1zLgoKCSogZGxscy9rZXJuZWwvaGVhcC5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglVc2UgR2xvYmFsTWVtb3J5U3RhdHVzRXggaW4gR2xvYmFsTWVtb3J5U3RhdHVzIHJhdGhlciB0aGFuIHRoZSBvdGhlcgoJd2F5IGFyb3VuZC4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBNYXJrdXMgQW1zbGVyIDxtYXJrdXMuYW1zbGVyQG9yaWJpLm9yZz4KCU1ha2UgRklOREZJUlNUIHdvcmtpbmcgd2l0aCAvLgoKCSogd2luZG93cy9tZGkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZiB0aGUgY3VycmVudCBtZW51IGhhbmRsZSBpcyBhbHJlYWR5IHNldCwgZG8gbm90IHNldCBpdCBhZ2Fpbi4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzogTWFya3VzIEFtc2xlciA8bWFya3VzLmFtc2xlckBvcmliaS5vcmc+CglNYWtlIGVudmlyb25tZW50IHZhcmlhYmxlcyB1cHBlcmNhc2UuCgoJKiBkbGxzL2F0bC9NYWtlZmlsZS5pbiwgZGxscy9hdGwvYXRsLnNwZWMsIGRsbHMvYXRsL3JlZ3N2ci5jLAoJICB0b29scy93aW5lLmluZjoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyLgoKMjAwNC0wOC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYW1zdHJlYW0vYW1zdHJlYW0uYywgZGxscy9hbXN0cmVhbS9tYWluLmMsCgkgIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsCgkgIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi90bXBmaWxlLmMsIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jLAoJICBkbGxzL2NvbWNhdC9jb21jYXRfcHJpdmF0ZS5oLCBkbGxzL2NvbWNhdC9mYWN0b3J5LmMsCgkgIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsIGRsbHMvY29tY2F0L21hbmFnZXIuYywKCSAgZGxscy9jb21jYXQvcmVnaXN0ZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsCgkgIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDgvcmVzb3VyY2UuYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q4L3N3YXBjaGFpbi5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLCBkbGxzL2QzZDgvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOC92b2x1bWUuYywgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYywKCSAgZGxscy9kM2Q5L2Jhc2V0ZXh0dXJlLmMsIGRsbHMvZDNkOS9jdWJldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L2RpcmVjdHguYywKCSAgZGxscy9kM2Q5L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOS9waXhlbHNoYWRlci5jLCBkbGxzL2QzZDkvcXVlcnkuYywKCSAgZGxscy9kM2Q5L3Jlc291cmNlLmMsIGRsbHMvZDNkOS9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOS9zd2FwY2hhaW4uYywgZGxscy9kM2Q5L3RleHR1cmUuYywgZGxscy9kM2Q5L3ZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDkvdmVydGV4ZGVjbGFyYXRpb24uYywgZGxscy9kM2Q5L3ZlcnRleHNoYWRlci5jLAoJICBkbGxzL2QzZDkvdm9sdW1lLmMsIGRsbHMvZDNkOS92b2x1bWV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkeDgvZDNkeDhjb3JlX3ByaXZhdGUuaCwgZGxscy9kM2R4OC9kM2R4YnVmZmVyLmMsCgkgIGRsbHMvZDNkeG9mL2QzZHhvZi5jLCBkbGxzL2QzZHhvZi9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsCgkgIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywKCSAgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZHBhbGV0dGUvaGFsLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZ2FtbWEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLAoJICBkbGxzL2RldmVudW0vY3JlYXRlZGV2ZW51bS5jLCBkbGxzL2RldmVudW0vZmFjdG9yeS5jLAoJICBkbGxzL2RldmVudW0vbWVkaWFjYXRlbnVtLmMsIGRsbHMvZGV2ZW51bS9wYXJzZWRpc3BsYXluYW1lLmMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywKCSAgZGxscy9kaW5wdXQvbW91c2UuYywgZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kbWNvbXBvcy9jaG9yZG1hcC5jLCBkbGxzL2RtY29tcG9zL2Nob3JkbWFwdHJhY2suYywKCSAgZGxscy9kbWNvbXBvcy9jb21wb3Nlci5jLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zX21haW4uYywKCSAgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19wcml2YXRlLmgsIGRsbHMvZG1jb21wb3Mvc2lnbnBvc3R0cmFjay5jLAoJICBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywKCSAgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvZ3JhcGguYywKCSAgZGxscy9kbWltZS9seXJpY3N0cmFjay5jLCBkbGxzL2RtaW1lL21hcmtlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGFyYW1jb250cm9sdHJhY2suYywgZGxscy9kbWltZS9wYXR0ZXJudHJhY2suYywKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS9zZWdtZW50c3RhdGUuYywgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywKCSAgZGxscy9kbWltZS9zZXF0cmFjay5jLCBkbGxzL2RtaW1lL3N5c2V4dHJhY2suYywKCSAgZGxscy9kbWltZS90ZW1wb3RyYWNrLmMsIGRsbHMvZG1pbWUvdGltZXNpZ3RyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdG9vbC5jLCBkbGxzL2RtaW1lL3dhdmV0cmFjay5jLAoJICBkbGxzL2RtbG9hZGVyL2NsYXNzZmFjdG9yeS5jLCBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwgZGxscy9kbWxvYWRlci9sb2FkZXIuYywKCSAgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYywgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLAoJICBkbGxzL2Rtc2NyaXB0L3NjcmlwdHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9hdWRpdGlvbnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9jaG9yZHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9jb21tYW5kdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1zdHlsZS9tb3RpZnRyYWNrLmMsIGRsbHMvZG1zdHlsZS9tdXRldHJhY2suYywKCSAgZGxscy9kbXN0eWxlL3N0eWxlLmMsIGRsbHMvZG1zdHlsZS9zdHlsZXRyYWNrLmMsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywgZGxscy9kbXN5bnRoL2Rtc3ludGhfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3ludGgvc3ludGguYywgZGxscy9kbXN5bnRoL3N5bnRoc2luay5jLCBkbGxzL2RtdXNpYy9idWZmZXIuYywKCSAgZGxscy9kbXVzaWMvY2xvY2suYywgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWMuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwKCSAgZGxscy9kbXVzaWMvZG93bmxvYWQuYywgZGxscy9kbXVzaWMvZG93bmxvYWRlZGluc3RydW1lbnQuYywKCSAgZGxscy9kbXVzaWMvaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9wb3J0LmMsCgkgIGRsbHMvZG11c2ljL3BvcnRkb3dubG9hZC5jLCBkbGxzL2RtdXNpYy90aHJ1LmMsCgkgIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9sb2JieXNwLmMsCgkgIGRsbHMvZHBuZXQvYWRkcmVzcy5jLCBkbGxzL2RwbmV0L2NsaWVudC5jLCBkbGxzL2RwbmV0L2RwbmV0X21haW4uYywKCSAgZGxscy9kcG5ldC9kcG5ldF9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL2J1ZmZlci5jLAoJICBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jLCBkbGxzL2Rzd2F2ZS9kc3dhdmUuYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlX21haW4uYywgZGxscy9kc3dhdmUvZHN3YXZlX3ByaXZhdGUuaCwKCSAgZGxscy9keGRpYWduL2NvbnRhaW5lci5jLCBkbGxzL2R4ZGlhZ24vZHhkaWFnX21haW4uYywKCSAgZGxscy9keGRpYWduL2R4ZGlhZ19wcml2YXRlLmgsIGRsbHMvZHhkaWFnbi9wcm92aWRlci5jLAoJICBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbXNkbW8vZG1vcmVnLmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywKCSAgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsIGRsbHMvb2xlMzIvZ2l0LmMsCgkgIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlczE2LmMsCgkgIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTE2LmMsIGRsbHMvb2xlMzIvb2xlb2JqLmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL2Nvbm5wdC5jLAoJICBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLAoJICBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywKCSAgZGxscy9xdWFydHovZW51bW1vbmlrZXIuYywgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywKCSAgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovc3lzdGVtY2xvY2suYywgZGxscy9ycGNydDQvY3Byb3h5LmMsIGRsbHMvcnBjcnQ0L2Nwc2YuYywKCSAgZGxscy9ycGNydDQvbmRyX29sZS5jLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsCgkgIGRsbHMvc2hkb2N2dy9ldmVudHMuYywgZGxscy9zaGRvY3Z3L2ZhY3RvcnkuYywgZGxscy9zaGRvY3Z3L21pc2MuYywKCSAgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvcGVyc2lzdC5jLAoJICBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jLCBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsCgkgIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywKCSAgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywgZGxscy9zaGVsbDMyL3NobGZzYmluZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL3NobHdhcGkvYXNzb2MuYywKCSAgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9ycGNwcm94eS5oOgoJR2V0IHJpZCBvZiB0aGUgbm9uLXN0YW5kYXJkIElDT01fVlRBQkxFIG1hY3JvLgoKCSogaW5jbHVkZS9zZXR1cGFwaS5oOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBtb3JlIG5lZWRlZCBzdHJ1Y3RzIGFuZCBjb25zdGFudHMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBpbmNsdWRlL3NobHdhcGkuaDoKCUphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglJbXBsZW1lbnRlZCBJc09TIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBUaG9tYXMgV2VpZGVubfxsbGVyIDx3M3NlZWtAcmVhY3Rvcy5jb20+CglDb3JyZWN0IHRvb2x0aXBzIGJlaGF2aW9yLgoKCSogaW5jbHVkZS9udGRkc3Rvci5oOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgMiBtb3JlIGJ1cyB0eXBlcy4KCgkqIGRsbHMvZ2RpL2RpYi5jLCBkbGxzL3gxMWRydi9kaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGVjdCB0aGUgd2lkdGggb2YgYm90aCB0aGUgc3JjIGFuZCBkc3Qgd2hlbiBjYWxjdWxhdGluZyBob3cgbWFueQoJcGl4ZWxzIHRvIGNvcHkgaW4gYSBkaWIgPC0+IGJtcCBvcGVyYXRpb24uCgoJKiBsaWJzL01ha2VsaWIucnVsZXMuaW46IEVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCURlZmluZSAtaW5zdGFsbF9uYW1lIGZvciBkeW5hbWljcyBsaWJyYXJpZXMgdG8gcHJldmVudCB1c2FnZSBvZgoJRFlMRF9MSUJSQVJZX1BBVEguCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXZlbnQgbGlzdHZpZXcgZnJvbSBjcmFzaGluZyB3aGVuIGEgbnVsbCBzb3J0IGZ1bmN0aW9uIGlzIHBhc3NlZCB0bwoJTFZNX1NPUlRJVEVNUy4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTcGVlZCB1cCBtaXhpbmcgYW5kIHVubWl4aW5nIGJ5IG1vdmluZyBzYW1wbGUgc2l6ZSBhbmQgYnVmZmVyIHdyYXAKCXRlc3RzIHRvIG91dHNpZGUgdGhlIGxvb3AuICBUaGUgY29kZSBpcyBub3QgYXMgY29tcGFjdCBvciBwcmV0dHkgYnV0CglpdCBzaG91bGQgYmUgZmFzdGVyLgoKCSogZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywKCSAgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLCBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL3RtcGZpbGUuYywgZGxscy9hdmlmaWwzMi93YXZmaWxlLmMsCgkgIGRsbHMvY29tY2F0L2NvbWNhdF9wcml2YXRlLmgsIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsCgkgIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q5L2QzZDlfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZHg4L2QzZHg4Y29yZV9wcml2YXRlLmgsIGRsbHMvZGV2ZW51bS9kZXZlbnVtX3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywKCSAgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLAoJICBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsIGRsbHMvZG1zeW50aC9kbXN5bnRoX3ByaXZhdGUuaCwKCSAgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwKCSAgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kcGxheXgvZHBsYXlfZ2xvYmFsLmgsCgkgIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9sb2JieXNwLmMsCgkgIGRsbHMvZHBuZXQvZHBuZXRfbWFpbi5jLCBkbGxzL2RwbmV0L2RwbmV0X3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwgZGxscy9kc3dhdmUvZHN3YXZlX21haW4uYywKCSAgZGxscy9keGRpYWduL2R4ZGlhZ19tYWluLmMsIGRsbHMvZHhkaWFnbi9keGRpYWdfcHJpdmF0ZS5oLAoJICBkbGxzL21zZG1vL2Rtb3JlZy5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLCBkbGxzL29sZTMyL2dpdC5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywKCSAgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMxNi5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9vbGUxNi5jLCBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlMzIuaCwgZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLCBkbGxzL3F1YXJ0ei9lbnVtbW9uaWtlci5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywgZGxscy9xdWFydHovc3lzdGVtY2xvY2suYywKCSAgZGxscy9ycGNydDQvbmRyX29sZS5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLAoJICBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmMsIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9zaGx3YXBpL2Fzc29jLmMsCgkgIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgaW5jbHVkZS9vYmpiYXNlLmg6CglHZXQgcmlkIG9mIHRoZSBub24tc3RhbmRhcmQgSUNPTV9WRklFTEQgbWFjcm8uCgoJKiBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLAoJICBkbGxzL2RwbGF5eC9sb2JieXNwLmgsIGRsbHMvb2xlMzIvaWZzLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGZvbGRlci5oLAoJICBpbmNsdWRlL2NvbnRyb2wuaCwgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kM2Q4LmgsIGluY2x1ZGUvZDNkOS5oLAoJICBpbmNsdWRlL2QzZHg4Y29yZS5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGlucHV0LmgsCgkgIGluY2x1ZGUvZG1wbHVnaW4uaCwgaW5jbHVkZS9kbXVzaWNjLmgsIGluY2x1ZGUvZG11c2ljaS5oLAoJICBpbmNsdWRlL2RtdXNpY3MuaCwgaW5jbHVkZS9kcGFkZHIuaCwgaW5jbHVkZS9kcGxheS5oLAoJICBpbmNsdWRlL2RwbGF5OC5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS9kc2RyaXZlci5oLAoJICBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL2R4ZGlhZy5oLCBpbmNsdWRlL2R4ZmlsZS5oLAoJICBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvbWFwaXV0aWwuaCwgaW5jbHVkZS9tYXBpeC5oLAoJICBpbmNsdWRlL21lZGlhb2JqLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZWRsZy5oLAoJICBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS92ZncuaDoKCUdldCByaWQgb2YgdGhlIG5vbi1zdGFuZGFyZCBJQ09NX0RFRklORSBtYWNyby4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU3RhcnQgY2xlYW5pbmcgdXAgZXJyb3IgbWVzc2FnZXMuCglEb24ndCBwcmludCB2ZXJib3NlIGluZm8gdW5sZXNzIGluIGludGVyYWN0aXZlIG1vZGUgb3IgZGVidWdnaW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglBdXRvbWF0aWNhbGx5IGRpc2FibGUgMTYtYml0IHN1cHBvcnQgaW4gdGhlIFBFIGJ1aWxkLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJVXNlIGJ1aWx0aW4gbXNpLmRsbC4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglBZGRlZCB0ZXN0cyBmb3IgQ3J5cHRFbnVtUHJvdmlkZXJzLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUNsZWFudXAgQS0+VyBjcm9zcyBjYWxsIGluIENyeXB0RW51bVByb3ZpZGVycy4KCjIwMDQtMDgtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jdGwzZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLAoJICBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9NYWtlZmlsZS5pbiwKCSAgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3R3YWluL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5ubHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW50YWIzMi9NYWtlZmlsZS5pbjoKCUF2b2lkIHNvbWUgbm9uLXBvcnRhYmxlIG1ha2VmaWxlIGNvbnN0cnVjdHMsIGFuZCBnZXQgcmlkIG9mIHRoZQoJQUxUTkFNRVMgdmFyaWFibGUuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CglVcGRhdGUgdGhlIGRsbHMgc2VjdGlvbi4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9jbGlwcGluZy5jLAoJICBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3gxMWRydi9ncmFwaGljcy5jLCBkbGxzL3gxMWRydi9rZXlib2FyZC5jLAoJICBkbGxzL3gxMWRydi9wYWxldHRlLmMsIGRsbHMveDExZHJ2L3RleHQuYywgZGxscy94MTFkcnYveDExZGRyYXcuYywKCSAgZGxscy94MTFkcnYveGZvbnQuYywgZGxscy94MTFkcnYveGltLmMsIGRsbHMveDExZHJ2L3hyYW5kci5jLAoJICBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzLCBsb2FkZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvbWFrZV9wcm9ncywgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46CglBdm9pZCBzb21lIG5vbi1wb3J0YWJsZSBtYWtlZmlsZSBjb25zdHJ1Y3RzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglEb24ndCB1cGRhdGUgaW5mb1B0ci0+ZHdTdHlsZSBpbiBMSVNUVklFV19XaW5kb3dQcm9jLiBJdCdzIGFscmVhZHkKCWhhbmRsZWQgaW4gTElTVFZJRVdfU3R5bGVDaGFuZ2VkIGFuZCBMSVNUVklFV19DcmVhdGUgcHJvY2Vzc2luZy4KCUlnbm9yZSBXU19WU0NST0xML1dTX0hTQ1JPTEwgZmxhZ3MgaW4gaW5mb1B0ci0+ZHdTdHlsZSBiZWNhdXNlIHRoZXkncmUKCW5vdCBhbHdheXMgdXAtdG8tZGF0ZS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9nZW5lcmF0ZWQuYywgaW5jbHVkZS9zaGxvYmouaCwgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIExQRklMRVNZU1RFTUJJTkREQVRBIGFzIGl0J3Mgbm90IGRlZmluZWQgaW4gdGhlIHN0YW5kYXJkCglXaW5kb3dzIGhlYWRlcnMuCgoJKiBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLCBkbGxzL2RtYmFuZC9kbXV0aWxzLmMsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwKCSAgZGxscy9kbWltZS9kbXV0aWxzLmMsIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3R5bGUvZG11dGlscy5jLCBkbGxzL2Rtc3ludGgvZG1zeW50aF9wcml2YXRlLmgsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsIGRsbHMvZHN3YXZlL2Rzd2F2ZV9wcml2YXRlLmgsCgkgIGRsbHMvbXNpL3JlY29yZC5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywKCSAgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVmb250LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgZGxscy91cmxtb24vdGVzdHMvdXJsLmMsIGluY2x1ZGUvYWN0aXZzY3AuaCwgaW5jbHVkZS9hbXN0cmVhbS5oLAoJICBpbmNsdWRlL2FtdmlkZW8uaCwgaW5jbHVkZS9hdXN0cmVhbS5oLCBpbmNsdWRlL2NvbWNhdC5oLAoJICBpbmNsdWRlL2Rkc3RyZWFtLmgsIGluY2x1ZGUvZGlzcGV4LmgsIGluY2x1ZGUvZG9jb2JqLmgsCgkgIGluY2x1ZGUvZXhkaXNwLmgsIGluY2x1ZGUvbWxhbmcuaCwgaW5jbHVkZS9tbXN0cmVhbS5oLAoJICBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGVpZGwuaCwKCSAgaW5jbHVkZS9wc3RvcmUuaCwgaW5jbHVkZS9zZXJ2cHJvdi5oLCBpbmNsdWRlL3NobGRpc3AuaCwKCSAgaW5jbHVkZS9zaG9iamlkbC5oLCBpbmNsdWRlL3N0cm1pZi5oLCBpbmNsdWRlL3Vua253bi5oLAoJICBpbmNsdWRlL3VybG1vbi5oLCB0b29scy93aWRsL2hlYWRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb2RpZnkgd2lkbCB0byBwdXQgdGhlIEMgQ09NIG1hY3JvcyBpbnNpZGUgYW4gI2lmZGVmIENPQkpNQUNST1MgYmxvY2sKCWFzIGlzIGRvbmUgaW4gdGhlIFdpbmRvd3MgaGVhZGVycy4KCUFkZCAjZGVmaW5lIENPQkpNQUNST1Mgd2hlcmUgbmVlZGVkIGluIFdpbmUuCglGaXhlcyB0aGUgY29tcGlsYXRpb24gb2YgdGhlIG9sZWF1dDMyL3Rlc3RzL29sZWZvbnQuYyBhbmQKCXVybG1vbi90ZXN0cy91cmwuYyBjb25mb3JtYW5jZSB0ZXN0cyB3aXRoIHRoZSBXaW5kb3dzIGhlYWRlcnMuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9oZWFkZXJzLmMsIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IGRlZmluZSBfX1dJTkVfVVNFX01TVkNSVCBpbiB0aGUgVmlzdWFsIEMrKyBwcm9qZWN0LiBJdCBpcyBub3QKCW5lZWRlZCBhcyBpdCBpcyBkZWZpbmVkIGJ5IHRoZSBXaW5lIGhlYWRlcnMuCglVc2UgX19XSU5FX1VTRV9NU1ZDUlQgdG8gZGV0ZWN0IHdoZXRoZXIgd2UgYXJlIGJlaW5nIGNvbXBpbGVkIHdpdGggdGhlCglXaW5lIE1TVkNSVCBoZWFkZXJzIG9yIHRoZSBXaW5kb3dzIG9uZXMuIEluIHRoZSBsYXR0ZXIgY2FzZToKCSAtIGRvbid0IHRyeSB0byBpbmNsdWRlIHRoZSBXaW5lLXNwZWNpZmljIG1zdmNydCBoZWFkZXJzCgkgLSBza2lwIGFsbCB0aGUgaGVhZGVycy5jIHRlc3RzIHNpbmNlIHRoZXJlJ3Mgbm8gTVNWQ1JUXyogc3ltYm9scyB0bwoJICAgY2hlY2sKCgkqIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsCgkgIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLAoJICBkbGxzL21zYWNtL3N0cmVhbS5jLCBkbGxzL21zYWNtL3Rlc3RzL21zYWNtLmMsIGluY2x1ZGUvbW1yZWcuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHNvbWUgbWlzc2luZyBkZWZpbml0aW9ucyB0byBtbXJlZy5oLgoJQWRkICNkZWZpbmUgTk9CSVRNQVAgd2hlcmUgbmVlZGVkIGluIHRoZSBXaW5lIHNvdXJjZXMuCglGaXhlcyB0aGUgY29tcGlsYXRpb24gb2YgbXNhY20vdGVzdHMvbXNhY20uYyB3aXRoIHRoZSBXaW5kb3dzCgloZWFkZXJzLgoKCSogZGxscy9tbGFuZy90ZXN0cy9tbGFuZy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IGluY2x1ZGUgd2luZS9kZWJ1Zy5oIHdoZW4gY29tcGlsaW5nIG9uIFdpbmRvd3MuCglHZXRDUEluZm9FeEEoKSBpcyBtaXNzaW5nIG9uIHNvbWUgV2luZG93cyBwbGF0Zm9ybXMsIGxvYWQgaXQKCWR5bmFtaWNhbGx5LgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy94MTFkcnYveHJlbmRlci5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHRyeSB0byByb3RhdGUgYml0bWFwIGZvbnRzLgoKCSogZGxscy9tbGFuZy9tbGFuZy5jLCBkbGxzL21sYW5nL3Rlc3RzL21sYW5nLmMsIGluY2x1ZGUvbWxhbmcuaCwKCSAgaW5jbHVkZS9tbGFuZy5pZGwsIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gYWRkIHN0dWJiZWQgc3VwcG9ydCBmb3IgSUVudW1TY3JpcHQgaW50ZXJmYWNlCgktIENvbnZlcnRJTmV0TXVsdGlCeXRlVG9Vbmljb2RlL0NvbnZlcnRJTmV0VW5pY29kZVRvTXVsdGlCeXRlIHNob3VsZAoJICByZXR1cm4gcmVxdWlyZWQgdGFyZ2V0IGxlbmd0aCBpZiB0aGUgdGFyZ2V0IGJ1ZmZlciBpcyBOVUxMCgktIGFkZCB0aGUgdGVzdHMgZm9yIGFsbCB0aGUgYWJvdmUKCS0gZml4IElNdWx0aUxhbmd1YWdlMiB2dGFibGUgKGl0IHdhcyBtaXNzaW5nIENvbnZlcnRTdHJpbmdGcm9tVW5pY29kZUV4KQoKCSogdG9vbHMvd2luZXByZWZpeGNyZWF0ZS5pbjogSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglQcm9ncmFtIEZpbGVzIGRpcmVjdG9yeSBzaG91bGQgbm90IGJlIGluIHdpbmRvd3MgZGlyZWN0b3J5LgoKCSogZGxscy9udGRsbC90ZXN0cy9wYXRoLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVwbGFjZSBzdHJjYXNlY21wKCkgd2l0aCBsc3RyY21waUEoKSB0byBoZWxwIGNvbXBpbGF0aW9uIHdpdGggV2luZG93cwoJaGVhZGVycy4KCgkqIGRsbHMvZ2RpL2JpdGJsdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IG1hc2tibHQgdG8gd29yayB3aXRoIGFueSBzZXQgb2Ygcm9wcyBhbmQgdG8gYWxzbyB0YWtlIGludG8gYWNjb3VudAoJdGhlIGN1cnJlbnQgYnJ1c2guICBJdCBhbHNvIG5vdyB3b3JrcyBpZiB0aGUgbWFzayBiaXRtYXAgaXMgYWxyZWFkeQoJc2VsZWN0ZWQgaW50byBhIGRjLgoKCSogZGxscy94MTFkcnYvYnJ1c2guYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUV2ZXIgc2luY2Ugd2luOTggcGF0dGVybiBicnVzaGVzIGhhdmUgYmVlbiBhYmxlIHRvIGJlIGxhcmdlciB0aGFuIDh4OAoJcGl4ZWxzLCBzbyByZW1vdmUgdGhpcyByZXN0cmljdGlvbi4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEZWZpbmUgX1dJTjMyX1dJTk5UIG90aGVyd2lzZSB3ZSBhcmUgbWlzc2luZyBzb21lIGRlZmluaXRpb25zIHdpdGggdGhlCglXaW5kb3dzIGhlYWRlcnMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL21peGVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglPbmx5IHByaW50IG91dCB2ZXJib3NlIGluZm9ybWF0aW9uIHdoZW4gaW4gaW50ZXJhY3RpdmUgbW9kZS4KCgkqIGRsbHMvbXNhY20vdGVzdHMvbXNhY20uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU9ubHkgcHJpbnRvdXQgaW5mb3JtYXRpb24gd2hlbiBpbiBpbnRlcmFjdGl2ZSBtb2RlLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGV2ZXIgcmV0dXJuIGEgYml0bWFwIGZvbnQgaWYgdGhlIGRyaXZlciBjYW4ndCB1c2UgaXQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU9ubHkgY29weSBudW1iZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIHVwIHRvIHNpemUgb2YgRGV2Q2FwcyBzdHJ1Y3R1cmUuCgoJKiBkbGxzL2F0bC9hdGwuc3BlYywgZGxscy9hdGwvYXRsX21haW4uYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIEF0bE1vZHVsZVRlcm0uCgoJKiBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBhIGJ1ZyB3aGVyZSBmcmVxQWRqdXN0IHdhcyBub3QgYmVpbmcgdXBkYXRlZCBwcm9wZXJseSB3aGVuIHRoZQoJcHJpbWFyeSBidWZmZXIgZm9ybWF0IGNoYW5nZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL29sZTMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL3Rlc3RzL3N0b3JhZ2UzMi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSB0ZXN0IGZvciBzdGF0J2luZyBhIG1lbW9yeSBiYXNlZCBzdG9yYWdlIGZpbGUuCgoyMDA0LTA4LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvYXRvbS5jLCBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYywKCSAgZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9jcHUuYywgZGxscy9rZXJuZWwvZWRpdGxpbmUuYywKCSAgZGxscy9rZXJuZWwvZ2xvYmFsMTYuYywgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsCgkgIGRsbHMva2VybmVsL3Jlc291cmNlLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdm9sdW1lLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBob2xkaW5nIHgxMWRydiBsb2NrIHdoaWxlIGNhbGxpbmcgZnVuY3Rpb24gdGhhdCBncmFicyBnZGkKCWxvY2suIFByZXZlbnRzIHBvdGVudGlhbCBkZWFkbHkgZW1icmFjZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIEVJTlRSIHdoZW4gcG9sbGluZy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBob3Jpem9udGFsIHN0cmV0Y2hpbmcgb2YgYml0bWFwIGZvbnRzLCBzbwoJd2Ugc2hvdWxkIGlnbm9yZSBsZldpZHRoLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJc3RhdCBvbiBtZW1vcnkgc3RvcmFnZSBzaG91bGQgcmV0dXJuIGEgTlVMTCBuYW1lLCBub3QgIiIuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHByb2Nlc3Npbmcgb2YgdGhlIGxwc3pIZWFkZXJzIGZpZWxkIGluIEh0dHBTZW5kUmVxdWVzdC4KCjIwMDQtMDgtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9jb21tLmMsIGRsbHMva2VybmVsL3Rlc3RzL21haWxzbG90LmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5ncy4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzogTWFya3VzIEFtc2xlciA8bWFya3VzLmFtc2xlckBvcmliaS5vcmc+CglGaXggRVhFQyBmdW5jdGlvbiAwMSAobG9hZCBidXQgZG9uJ3QgZXhlY3V0ZSk6IGluaXRpYWwgYXggaGFzIHRvIGJlIG9uCgljaGlsZCdzIHN0YWNrLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IE1hcmt1cyBBbXNsZXIgPG1hcmt1cy5hbXNsZXJAb3JpYmkub3JnPgoJRml4ZWQgZHJpdmUgbWFwcGluZyBpbiBHRVQgQUxMT0NBVElPTi4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGJ1dHRvbiBiZWhhdmlvdXIgb24gV01fU0VURk9DVVMvV01fS0lMTEZPQ1VTIHdpdGggYSB0ZXN0IGNhc2UuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJR2V0Q2hhckFCQ1dpZHRocyBzaG91bGQgZmFpbCBmb3Igbm9uLXNjYWxhYmxlIGZvbnRzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpeCBUT09MQkFSX0RyYXdNYXNrZWQgdG8gY29ycmVjdGx5IHVzZSBpbWFnZSBsaXN0IG1hc2suCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglLcmlzaG5hIE11cnRoeSA8S3Jpc2huYS5NdXJ0aHlAZ3VwdGF3b3JsZHdpZGUuY29tPgoJUmVwbGFjZWQgTElTVEJPWF9TZXRDYXJldEluZGV4KCkgd2l0aCBMSVNUQk9YX01vdmVDYXJldCgpIGluCglMQl9TRUxFQ1RTVFJJTkcgaGFuZGxlciBzbyB0aGF0IHRoZSBjYXJldCBtb3ZlcyB0byB0aGUgaW5kZXggYW5kIGl0ZW0KCWlzIGhpZ2hsaWdodGVkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURlbGV0ZSB0aGUgYWJvdXQgZGlhbG9nIGZvbnQgd2hlbiB0aGUgZGlhbG9nIGlzIGNsb3NlZC4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHRoZSBhc3NlcnQoKXMgdGhhdCBjaGVja2VkIHRoYXQgSURpcmVjdFNvdW5kQnVmZmVyX0xvY2soKSBpcwoJZ2l2ZW4gdHdvIGRpc3RpbmN0IHBvaW50ZXJzLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvRXMucmM6IEpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglVcGRhdGVkIHRyYW5zbGF0aW9uLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQS0+VyBjYWxsIGZvciBTZXROYW1lZFNlY3VyaXR5SW5mby4KCgkqIGRsbHMvY3J5cHQzMi9jZXJ0LmMsIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGluY2x1ZGUvd2luZXJyb3IuaDoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgc3R1YiBmb3IgQ2VydEZpbmRDZXJ0aWZpY2F0ZUluU3RvcmUuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL21peGVyLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBjb21waWxhdGlvbiBvZiB3aW5tbSB0ZXN0cy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglUcnkgaGFyZGVyIHRvIG1hdGNoIHRvIGEgZm9udCBpZiB0aGUgZmFtaWx5IG5hbWUgaXMgbWF0Y2hlcywgYnV0IHRoZQoJc3R5bGUgaXMgZG9lc24ndC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCVVzZSBjb3JyZWN0IGRpYWxvZyB0aXRsZSBmb3IgV2l6YXJkIDk3IGFuZCBjb3JyZWN0bHkgZGlzcGxheSBoZWFkZXIKCWJpdG1hcCBmb3Igb2xkLXN0eWxlIFdpemFyZCA5Ny4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglNYWtlIENyeXB0RW51bVByb3ZpZGVyc0EgcGNiUHJvdk5hbWUgcGFyYW1ldGVyIGNvbnRhaW4gdGhlIGNvcnJlY3QKCXNpemUgb2YgdGhlIHByb3ZpZGVyIG5hbWUgb24gcmV0dXJuLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2Q4LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmMsIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLAoJICBkbGxzL3VzZXIvdGVzdHMvZGlhbG9nLmMsIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5jLAoJICBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogRXJpYyBLb2hsIDxlcmljLmtvaGxAdC1vbmxpbmUuZGU+CglNb3ZlIHdhdGVybWFyayBhbmQgaGVhZGVyIGJpdG1hcCBsb2FkaW5nIGNvZGUgZnJvbQoJUFJPUFNIRUVUX0NyZWF0ZVBhZ2UgaW50byBpdHMgb3duIGZ1bmN0aW9uIFBST1BTSEVFVF9Mb2FkV2l6YXJkQml0bWFwcwoJYW5kIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIHByb3BlcnR5IHNoZWV0J3MgZGlhbG9nIHByb2NlZHVyZS4KCgkqIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgSGVhcCBmdW5jdGlvbiBpbiBwcmVmZXJlbmNlIHRvIG1hbGxvYy9mcmVlLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZWZpbml0aW9uIG9mIExvb2t1cFByaXZpbGVnZU5hbWVXIGFuZCBkZWNsYXJlIGl0LgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmMsCgkgIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHdhcm5pbmdzIGdlbmVyYXRlZCB3aXRoIC1Xc2lnbi1jb21wYXJlLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUJyZWFrIGFuZCBkZWZhdWx0IGNoYXIgYXJlIGJvdGggcmVsYXRpdmUgdG8gZmlyc3QgY2hhciBpbiB0aGUgd2luZm50CgloZWFkZXIuCgoJKiBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmMsIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBkZWFkIGNvZGUuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jLCBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3MuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJRml4IGFsbG9jIGZhaWx1cmUgY2hlY2sgaW4gQ3J5cHRFbnVtUHJvdmlkZXJzVy4KCgkqIHByb2dyYW1zL21zaWV4ZWMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbXNpZXhlYy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvbXNpZXhlYy92ZXJzaW9uLnJjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSB2ZXJzaW9uIHJlc291cmNlLgoKCSogZGxscy94MTFkcnYvdGV4dC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRG8gbm90IGluaXRpYWxpemUgdmFyaWFibGVzIGJlZm9yZSBnb2luZyBpbnRvIHRoZSBSZW5kZXIgc2hvcnQtY3V0LgoKCSogZGxscy9kYmdoZWxwL3N5bWJvbC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJbW9kdWxlLT5hZGRyX3NvcnR0YWIgbWF5IGJlIE5VTEwgZHVlIHRvIGEgaGFjayBpbgoJZWxmX25ld193aW5lX3RodW5rcy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQ4LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVGVzdCBkaWZmZXJlbnQgcHJpbWFyeSBidWZmZXIgZm9ybWF0cyB3aGlsZSBrZWVwaW5nIHRoZSBzZWNvbmRhcnkKCWJ1ZmZlciBmb3JtYXQgY29uc3RhbnQuCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFya2VkIHNvbWUgZnVuY3Rpb25zIGluIGRlYnVnaGxwIGFzIHN0YXRpYy4KCURvIG5vdCB1c2UgUkVGSUlEIGFzIHJldHVybiwgYnV0IElJRCouCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOiBPZmlyIFBldHJ1c2thIDxoYXRreUB1c2Vycy5zZi5uZXQ+CglEZWZhdWx0IERlc2t0b3BEb3VibGVCdWZmZXJlZCB0byB0cnVlLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJT25seSB0cmFjZSBGT1VSQ0MgaGFuZGxlciB3aGVuIG9uZSBpcyBzcGVjaWZpZWQKCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy9zZWN1cml0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSB0ZXN0IGZvciBDb252ZXJ0U2lkVG9TdHJpbmdTaWRXLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBDb252ZXJ0U2lkVG9TdHJpbmdTaWRBL1cuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vdGVzdHMvbWl4ZXIuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzb21lIG1peGVyIHRlc3RzLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvRGUucmM6IEhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJVHJhbnNsYXRpb24gdXBkYXRlLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvRnIucmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVRyYW5zbGF0aW9uIHVwZGF0ZS4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL1B0LnJjOiBNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJVHJhbnNsYXRpb24gdXBkYXRlLgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2hhbmdlIE1JWEVSX0dldERldiB0byB0YWtlIHBvaW50ZXIgdG8gcmV0dXJuZWQgYWRkcmVzcyBwb2ludGVyIGFuZAoJcmV0dXJuIG9uZSBvZiAzIHBvc3NpYmxlIHJldHVybiB2YWx1ZXMgcmF0aGVyIHRoYW4gYW4gYWRkcmVzcyBvcgoJTlVMTC4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIG1pc3NpbmcgZGVmaW5lLgoKCSogZGxscy9udGRsbC92ZXJzaW9uLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVwZGF0ZSBXaW5YUCB2ZXJzaW9uIHRvIFNQMi4KCjIwMDQtMDgtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvc3lzbGluay5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglUaG9tYXMgV2VpZGVubfxsbGVyIDx3M3NlZWtAcmVhY3Rvcy5vcmc+CglJbXBsZW1lbnRlZCBzeXNsaW5rIGNvbnRyb2wuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9EZS5yYywgcHJvZ3JhbXMvd2luZW1pbmUvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL0VzLnJjLCBwcm9ncmFtcy93aW5lbWluZS9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvSXQucmMsIHByb2dyYW1zL3dpbmVtaW5lL05sLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9QbC5yYywgcHJvZ3JhbXMvd2luZW1pbmUvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL1J1LnJjLCBwcm9ncmFtcy93aW5lbWluZS9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLCBwcm9ncmFtcy93aW5lbWluZS9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjOgoJSmFjZWsgQ2FiYW48amFja0BpdG1hLnB3ci53cm9jLnBsPgoJLSBBZGRlZCBQb2xpc2ggdHJhbnNsYXRpb24uCgktIE1vdmVkIGNvbnN0ICJOb2JvZHkiIHN0cmluZyB0byByZXNvdXJjZXMgdG8gbWFrZSB0cmFuc2xhdGlvbgoJICBwb3NzaWJsZS4KCgkqIGRsbHMvZ2RpL2JpdGJsdC5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveHJlbmRlci5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFjdHVhbGx5IHBhc3MgdGhlIGJsZW5kIGZ1bmN0aW9uIG9uIHRvIHRoZSBncmFwaGljcyBkcml2ZXIuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb24ndCBsZWFrIGNhY2hlIGltYWdlbGlzdHMgb24gZXhpdC4KCgkqIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhbm90aGVyIHRlc3QgZm9yIEludGVybmV0Q3JhY2tVcmxXLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgZHdVcmxQYXRoTGVuZ3RoIHJldHVybmVkIGJ5IEludGVybmV0Q3JhY2tVcmwgd2hlbgoJbHBzekV4dHJhSW5mbyBpcyBudWxsLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgQ0FQUzIgc3RydWN0dXJlcy4KCgkqIGRsbHMvbWxhbmcvbWxhbmcuYywgZGxscy9tbGFuZy9tbGFuZy5zcGVjLCBpbmNsdWRlL21sYW5nLmgsCgkgIGluY2x1ZGUvbWxhbmcuaWRsOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBDb252ZXJ0SU5ldE11bHRpQnl0ZVRvVW5pY29kZSwgQ29udmVydElOZXRVbmljb2RlVG9NdWx0aUJ5dGUKCWFuZCBJc0NvbnZlcnRJTmV0U3RyaW5nQXZhaWxhYmxlIGJ5IG1vdmluZyBjb21tb24gY29kZSBhcm91bmQsIGFkZCBhCglzdHViIGZvciBDb252ZXJ0SU5ldFN0cmluZy4KCgkqIGluY2x1ZGUvcHN0b3JlLmgsIGluY2x1ZGUvcHN0b3JlLmlkbDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZWNsYXJhdGlvbiBvZiBPcGVuSXRlbS4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNYWludGFpbiBhIGNhY2hlIChjdXJyZW50bHkgb2YgdXAgdG8gMTApIG9mIHVudXNlZCBmb250cy4gIFRoaXMgc3BlZWRzCgl1cCBhcHBzIHRoYXQgcmVwZWF0ZWRseSByZWNyZWF0ZSB0aGUgc2FtZSBmb250LgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgQS0+VyBjYWxsIGZvciBHZXROYW1lZFNlY3VyaXR5SW5mby4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgSURpcmVjdDNERGV2aWNlezIsM306OkdldExpZ2h0U3RhdGUuCglGaXhlZCB0cmFjZXMgaW4gZXhlY3V0ZSBidWZmZXJzLgoJVXBkYXRlZCBjb3B5cmlnaHQgaW5mby4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9zdHJpbmcuYywgZGxscy9tc2kvdG9rZW5pemUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB3YXJuaW5ncyBmb3VuZCB3aXRoIC1Xc2lnbi1jb21wYXJlLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkcyBkZWJ1ZyBuYW1lIHRvIHJlbWFpbmluZyBjcml0aWNhbCBzZWN0aW9ucy4KCjIwMDQtMDgtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJZGxvcGVuIGxpYnVuZ2lmIGFuZCBsaWJqcGVnLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYzoKCU1hcmt1cyBBbXNsZXIgPG1hcmt1cy5hbXNsZXJAb3JpYmkub3JnPgoJUGFzcyBkZWJ1ZyBleGNlcHRpb25zIHRvIHdpbmVkb3MuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tbGFuZy8uY3ZzaWdub3JlLAoJICBkbGxzL21sYW5nL01ha2VmaWxlLmluLCBkbGxzL21sYW5nL21sYW5nLmMsIGRsbHMvbWxhbmcvbWxhbmcuc3BlYywKCSAgZGxscy9tbGFuZy90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21sYW5nL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21sYW5nL3Rlc3RzL21sYW5nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYW4gaW1wbGVtZW50YXRpb24gb2YgbWxhbmcuZGxsIGFuZCB0ZXN0IGNhc2VzIGZvciBpdC4KCgkqIHByb2dyYW1zL3Byb2dtYW4vRXMucmMsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvcnNyYy5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglVcGRhdGVkIHNvbWUgU3BhbmlzaCB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglEZXN0cm95IGFzc29jaWF0ZWQgbGlzdHZpZXcgd2hlbiBJU2hlbGxWaWV3IGlzIGRlc3Ryb3llZC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IGdkaSBmb250IGxpc3QgdG8gdXNlIGxpc3QuaC4KCgkqIHByb2dyYW1zL3djbWQvRGUucmM6IEhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJVXBkYXRlZCB0aGUgR2VybWFuIHRyYW5zbGF0aW9uLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdG9wLWRvd24gZGliIHN1cHBvcnQgdG8gQWxwaGFCbGVuZC4KCgkqIGRsbHMvdXVpZC91dWlkLmMsIGluY2x1ZGUvbWxhbmcuaCwgaW5jbHVkZS9tbGFuZy5pZGw6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQ0xTSUQgYW5kIElJRHMgZm9yIG1sYW5nLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcHJvY2Vzcy5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBGbHVzaEluc3RydWN0aW9uQ2FjaGUgdG8gbnRkbGwuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIENSSVRJQ0FMX1NFQ1RJT04gZGVidWcgaW5mby4KCjIwMDQtMDgtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL3Rlc3RzL2NhcHR1cmUuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmMsCgkgIGRsbHMvd2lubW0vdGVzdHMvd2lubW1fdGVzdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVBsYXkgYmFjayB3aGF0IGhhcyBiZWVuIHJlY29yZGVkIHdoZW4gaW4gaW50ZXJhY3RpdmUgbW9kZSBzbyB0aGF0IHRoZQoJdXNlciBjYW4gdmVyaWZ5IHRoYXQgdGhlIHJlY29yZGluZyBpcyBjb3JyZWN0LgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9yZWxheS5jOgoJTWFrZSByZWxheSBhbmQgc25vb3Bpbmcgd29yayBmb3IgTG9hZExpYnJhcnkrR2V0UHJvY0FkZHJlc3Mgc2VxdWVuY2UKCShiYXNlZCBvbiBhIHBhdGNoIGJ5IERtaXRyeSBUaW1vc2hrb3YpLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkIFMzVEMgc3VwcG9ydCB0byBCbHRGYXN0IChmaXhlcyBOT0xGKQoJLSBwcm9wZXIgc3VyZmFjZSB1bmxvY2tpbmcgaW4gY2FzZSBvZiBlcnJvciBpbiB0aGUgQmx0IGNhc2UKCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IEphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQ2xlYW51cCBBLT5XIGNyb3NzIGNhbGxzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8d2luZS1wYXRjaGVzQHJlYWN0c29mdC5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBQQlNfTUFSUVVFRSBzdHlsZS4KCgkqIGRsbHMvZ2RpL2JpdGJsdC5jLCBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveHJlbmRlci5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBBbHBoYUJsZW5kIHVzaW5nIHRoZSBYUkVOREVSIGV4dGVuc2lvbi4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCUZpeGVkIHNvbWUgbW9yZSBmcmVlaW5nIGlzc3VlcyBpbiBDcnlwdEFjcXVpcmVDb250ZXh0QS4KCgkqIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmM6IEplbnMgQ29sbGluIDxqZW5zLmNvbGxpbkBsYWtoZWkuY29tPgoJVXNlIFNoZWxsRXhlY3V0ZSBpbnN0ZWFkIG9mIENyZWF0ZVByb2Nlc3MgaW4gcnVuIGRpYWxvZy4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgc3RhdGljIHRvIG5vbi1leHBvcnRlZCBtYXJzaGFsIGZ1bmN0aW9ucy4KCS0gUmVtb3ZlIHVudXNlZCBtYXJzaGFsIGZ1bmN0aW9ucy4KCS0gUmVuYW1lIHNldmVyYWwgUlBDIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZHNvdW5kL21peGVyLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglBdm9pZCB1c2luZyByb3VuZCgpLCB3aGljaCBpcyB1bnBvcnRhYmxlLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRGlzY29ubmVjdCBwcm94aWVzIGF0IENPTSBzaHV0ZG93biB0byByZWxlYXNlIHRoZSBjb3JyZXNwb25kaW5nCglzdHVicy4KCgkqIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wcm92ZWQgSURpcmVjdDNEVmlld3BvcnRJbXBsXzNfMl8xX1RyYW5zZm9ybVZlcnRpY2VzIHN0dWIuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgSURpcmVjdFNvdW5kSW1wbF9DcmVhdGUoKSB0byBkZXRlY3QgZXJyb3JzLgoJQWx3YXlzIHNldCAqcHBEUyB0byBOVUxMIGluIGNhc2Ugb2YgZXJyb3IuCgoJKiBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIEQzRE9QX1NUQVRFTElHSFQgb3Bjb2RlLgoJSW1wbGVtZW50ZWQgX2R1bXBfRDNERVhFQ1VURUJVRkZFUkRFU0MuCgoJKiBkbGxzL3dpbmVwcy9kb3dubG9hZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIHJldHVybiB2YWx1ZSBvZiBnZXRfYmJveCgpLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2VkIHVuZGVmaW5lZCBDIGV4cHJlc3Npb24uCgoJKiBkbGxzL3dpbnRhYjMyL2NvbnRleHQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCBpbmNvcnJlY3QgQyBjb21wYXJpc29uIGNvbnN0cnVjdC4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSB0b29sYmFyIHdpdGggYSBub3QgemVybyBkZWZhdWx0IHNpemUsIGl0IGFsbG93cyBhcHBsaWNhdGlvbnMKCXdoaWNoIGNoZWNrIHRvb2xiYXIgc2l6ZSBiZWZvcmUgYWRkaW5nIGJ1dHRvbnMgdG8gaXQgd29yay4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgUFNNX0lOREVYVE9IV05ELgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1vdmVkIGxpYnR4Y19keHQgZGVmaW5pdGlvbnMgaW50byBkZHJhdyBoZWFkZXJzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIEZpeCBjb21waWxhdGlvbiBvbiBib3hlcyB3aXRob3V0IE9wZW5HTCBpbnN0YWxsZWQuCgktIFByaW50IHRoZSB3YXJuaW5nIG1lc3NhZ2Ugb25seSBvbmNlLgoKMjAwNC0wNy0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS9jb25maWcuaC5pbjoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIG5hdGl2ZSBhbmQgZW11bGF0ZWQgUzNUQyBzdXBwb3J0LgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jOgoJRml4ZWQgYnVnIHdpdGggJSBzaWducyBpbiBoZWxwIG91dHB1dCAocmVwb3J0ZWQgYnkgSGVubmluZyBHZXJoYXJkdCkuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCUZpeCBkbGwgdmVyc2lvbiBkZXRlY3Rpb24uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgbWFyc2hhbCBJQ2xhc3NGYWN0b3J5IGludG8gdGhlIGxvY2FsIHNlcnZlciBwaXBlIHVudGlsIHdlIGhhdmUKCWNvbm5lY3RlZCwgb3RoZXJ3aXNlIHdlIG1pZ2h0IGVuZCB1cCB3aXRoIHN0dWJzIHRoYXQgYXJlIG5ldmVyIHVzZWQuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCURpc2Nvbm5lY3QgdGhlIHNlcnZlciBvYmplY3QgZnJvbSB0aGUgc3R1YiBvbiBzdHViIGRlc3RydWN0aW9uLgoKCSogZGxscy9vbGUzMi9ycGMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRml4IGluZmluaXRlIGxvb3BzIGJ5IGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgX2ludm9rZV9vbmVyZXEgYW5kCgliYWlsaW5nIGFwcHJvcHJpYXRlbHkuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2Rzb3VuZC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kc291bmQvdGVzdHMvZHMzZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kOC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmRfdGVzdC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlZmFjdG9yZWQgY29tbW9uIHRlc3QgY29kZSBpbnRvIHN1YnJvdXRpbmVzLgoJQWRkZWQgdGVzdHMgZm9yIGNvcnJlY3QgQ29tcGFjdCBiZWhhdmlvci4KCUFkZGVkIHRlc3RzIGZvciBhbGwgcG9zc2libGUgSURpcmVjdFNvdW5kWzhdIGNyZWF0aW9uIG1vZGVzIHdpdGggZ29vZAoJYW5kIGJhZCBhcmd1bWVudHMuCglTcGxpdCBkc291bmQuYyBhbmQgZHMzZC5jIGludG8gc2VwYXJhdGUgZmlsZXMgZm9yIElEaXJlY3RTb3VuZCBhbmQKCUlEaXJlY3RTb3VuZDggaW50ZXJmYWNlcyBhbmQgYWRkZWQgY29kZSB0byBub3QgZXhlY3V0ZSBJRGlyZWN0U291bmQ4Cgl0ZXN0cyB3aGVuIHJ1biB3aXRoIGEgZHNvdW5kLmRsbCBvZiB2ZXJzaW9uIDcgb3IgZWFybGllci4gIFdlIHNob3VsZAoJbm93IGJlIGFibGUgdG8gcnVuIHRoZXNlIHRlc3RzIG9uIGEgV2luZG93cyBzeXN0ZW0gd2l0aCBEWDcgb3IgZWFybGllcgoJKHVudGVzdGVkKS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgZXJyb3IgY2hlY2tpbmcgdG8gSURpcmVjdFNvdW5kX0NvbXBhY3QuCglGaXhlZCBJRGlyZWN0U291bmRJbXBsX0NyZWF0ZSB0byByZXR1cm4gRFNFUlJfTk9EUklWRVIgZm9yIGEgYmFkCglkZXZpY2UgSUlELgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZWZhY3RvciBzb21lIG90aGVyIGNvZGUgaW4gbXNpZXhlYy4KCgkqIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHBfbWFpbi5jOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPHdpbmUtcGF0Y2hlc0ByZWFjdHNvZnQuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgVG91Y2hGaWxlVGltZXMoKSwgdGhhbmtzIHRvIEZsb3JpYW4gU3RpbmdsbWF5ciBmb3IKCXN1Ym1pdHRpbmcgYSByb3VnaCBkcmFmdC4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVmYWN0b3Igc29tZSBvZiB0aGUgc3RyaW5nIHByb2Nlc3NpbmcgaW4gbXNpZXhlYy4KCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgaW5jbHVkZS9yaWNoZWRpdC5oOgoJSmFjZWsgQ2FiYW48amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgRU1fU0NST0xMQ0FSRVQgZGVmaW5pdGlvbiBpbiBpbmNsdWRlL3JpY2hlZGl0LmggYW5kIGhhbmRsaW5nIGluCglXaW5kb3dQcm9jLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9JdC5yYywgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9SdS5yYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJVW5kZXIgdGhlIERyaXZlcyB0YWIsIHJlbW92ZSB0aGUgJ1dpbmRvd3MgRHJpdmUnIHNlY3Rpb24uCgoJKiBwcm9ncmFtcy93Y21kL0RlLnJjLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJQWRkZWQgYSBHZXJtYW4gdHJhbnNsYXRpb24gdG8gd2NtZC4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcmVzb3VyY2UuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgZ2V0dGluZyBhbmQgc2V0dGluZyB0aGUgVUkgbGFuZ3VhZ2UuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJUHJvY2VzcyBzaWJsaW5nIGtleXMgaXRlcmF0aXZlbHksIHRoZXJlYnkgcHJldmVudGluZyBleGhhdXN0aW9uIG9mIHRoZQoJc3RhY2suCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL0l0LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1B0LnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL1J1LnJjLCBwcm9ncmFtcy93aW5lY2ZnL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaCwgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmVuYW1lIFgxMSBEcml2ZXIgdGFiIG9mIHdpbmVjZmcgdG8gR3JhcGhpY3MuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUltcGxlbWVudCBwcm9wZXIgcHJvcGVydGllcyBoYW5kbGluZyBvbiB0aGUgY29tbWFuZGxpbmUgaW4gbXNpZXhlYy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYSBwb3RlbnRpYWwgZG91YmxlIGNhbGwgdG8gQ1JZUFRfRnJlZSBvbiB2YXJpYWJsZSAidGVtcCIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9yc2FiYXNlL01ha2VmaWxlLmluLAoJICBkbGxzL3JzYWJhc2UvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9yc2FiYXNlL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3JzYWJhc2UvdGVzdHMvcnNhYmFzZS5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSB0aW55IHVuaXQgdGVzdCBmb3IgcnNhYmFzZS5kbGwuCgoJKiB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZS5kZXNrdG9wOgoJQ2hyaXN0aWFuIE5ldW1haXIgPGNocmlzQGdub21lLWRlLm9yZz4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBmcmVlZGVza3RvcC5vcmcgTUlNRSBzeXN0ZW0uCgoJKiBjb250cm9scy9jb21iby5jLCBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZDNkOC92c2hhZGVyZGVjbGFyYXRpb24uYywKCSAgZGxscy9kM2Q5L3ZzaGFkZXJkZWNsYXJhdGlvbi5jLCBkbGxzL2dkaS9kaWIuYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jOgoJSmVyb2VuIEphbnNzZW4gPGphcGpAeHM0YWxsLm5sPgoJVXBkYXRlZCBzb21lIE1TRE4gbGlua3MgaW4gdGhlIGNvZGUuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRW1pdCBmaXhtZSBmb3Iga25vd24gbG9jYWwgd3JvbmcgYmVoYXZpb3VyLgoKCSogZGxscy9kZXZlbnVtL2RldmVudW0ucmM6IEhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJQWRkZWQgR2VybWFuIHJlc291cmNlcyBmb3IgZGV2ZW51bS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXNlIGNvcnJlY3QgY2FsbGluZyBjb252ZW50aW9uIGZvciB0aGUgY3VzdG9tIGFjdGlvbiBoYW5kbGVycy4KCjIwMDQtMDctMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9zdHJpbmcuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIG1zaXN0cmluZ19tYWtlaGFzaCByZXR1cm4gc29tZXRoaW5nIG90aGVyIHRoYW4ganVzdCAxIG9yCgkwLiBBbHNvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgc3RyaW5nIG9yIHN0b3JlZCBzdHJpbmcgaXMgbnVsbC4KCgkqIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglBZGQgUkVTVF9OT05MRUdBQ1lTSEVMTE1PREUgcG9saWN5LgoKCSogZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvcnBjLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgZGlzY29ubmVjdCBmb3IgcHJveGllcyBzbyB0aGF0IHN0dWJzIGFyZSBwcm9wZXJseQoJZGVzdHJveWVkLgoKCSogZGxscy9udGRsbC92ZXJzaW9uLmM6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglDaGFuZ2UgdGhlIE5UIHNlcnZpY2UgcGFjayB2ZXJzaW9uIGZyb20gNiB0byA2YSwgY29ycmVjdCB3aW4yazMgbmFtZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvSXQucmMsIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUnUucmMsIHByb2dyYW1zL3dpbmVjZmcvU2kucmM6CglKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCVJlbW92ZWQgdGhlICdXaW5kb3dzIExvb2s6JyBvcHRpb24gZnJvbSB3aW5lY2ZnLgoKCSogcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbiB0aGUgYWJzZW5jZSBvZiBhbnkgb3RoZXIgb3B0aW9uIHRvIG1zaWV4ZWMsIHRyZWF0IHRoZSBjb21tYW5kbGluZQoJYXMgYSBwYWNrYWdlIG5hbWUgdG8gaW5zdGFsbC4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb2N1bWVudCB3cm9uZyBiZWhhdmlvdXIgZm9yIElSdW5uaW5nT2JqZWN0VGFibGUuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJRml4IHJlZiBjb3VudGluZyBpbiBTdGRNYXJzaGFsSW1wbF9NYXJzaGFsSW50ZXJmYWNlIGZvciBjYXNlIHdoZXJlIHRoZQoJc3R1YiBhbHJlYWR5IGV4aXN0cy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSBpbmFjY3VyYWNpZXMgaW4gYSBjb21tZW50IGFuZCByZWZvcm1hdC4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGNvbW1lbnQgb24gdGhlIFNlbmRSZWNlaXZlIGJlaGF2aW91ci4gSW1wcm92ZSB0d28gb3RoZXJzLgoKCSogZGxscy9kZXZlbnVtL2RldmVudW0ucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL1B0LnJjLCBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCUxvY2FsaXphdGlvbiBvZiBkZXZlbnVtIHRvIFBvcnR1Z3Vlc2UgYW5kIG1pbm9yIGNvcnJlY3Rpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9vbGUuc2dtbDogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJQWRkIERDT00gZG9jdW1lbnRhdGlvbiB0byBkZXZlbG9wZXJzIGd1aWRlLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLCBpbmNsdWRlL21zaS5oLAoJICBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUltcGxlbWVudCBwYXRjaGluZyBpbiBtc2lleGVjLgoKCSogaW5jbHVkZS93aW5jcnlwdC5oOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbmNsdWRlIGRlY2xhcmF0aW9ucyBuZWVkZWQgZm9yIGRldmVsb3BpbmcgY3J5cHRvZ3JhcGhpYyBzZXJ2aWNlCglwcm92aWRlcnMuCgoJKiBkbGxzL21zaS9jb25kLnk6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJRml4IHBhcnNpbmcgb2Ygc3RyaW5nIGxpdGVyYWxzLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9JdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJUmVtb3ZlIHRoZSBVc2VUYWtlRm9jdXMgb3B0aW9uIGZyb20gd2luZWNmZy4KCgkqIHRvb2xzL2MybWFuLnBsOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglGaXggYzJtYW4gZm9yIHRoZSBjYXNlIHdoZXJlIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYXJlIG9uIG1vcmUgdGhhbiBvbmUKCWxpbmUuCgoJKiBkbGxzL250ZGxsL3NlcnZlci5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglEb2N1bWVudGF0aW9uIGZvciBXaW5lIGNsaWVudC1zaWRlIHNlcnZlciBpbnRlcmZhY2UuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVVzZSAiTEQiIGluc3RlYWQgb2YgImxkIiBpbiB3aW5lYnVpbGQgdG8gYmUgYWJsZSB0byB1c2UgYSBkaWZmZXJlbnQgbGQKCW9yIGxkIG9wdGlvbnMuCgoyMDA0LTA3LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6CglEb24ndCBjcmFzaCBvbiBOVUxMIGRhdGEgaW4gUmVnU2V0VmFsdWVFeEEgKHJlcG9ydGVkIGJ5IE1pa2UgSGVhcm4gYW5kCglBbmRyZWFzIE1vaHIpLgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiB1bm5lY2Vzc2FyeSB2ZXJzaW9uIGNoZWNrcy4KCgkqIGxpYnMvd2luZS9tbWFwLmM6CglSZXNlcnZlIHRoZSBET1MgYXJlYSBpbiBtbWFwX2luaXQgaWYgaXQgd2Fzbid0IGFscmVhZHkgZG9uZSBieSB0aGUKCXByZWxvYWRlci4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW1wcm92ZSBtc2lleGVjIHVzYWdlIHByb21wdC4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJLSBDaGFuZ2VkIHNvbWUgRklYTUVzIHRvIFRSQUNFcywgc2luY2UgdGhleSByZXBvcnQgb24gYSBwcm9ibGVtIGluIHRoZQoJICB3YXkgdGhlIGNsaWVudCB1c2VzIHRoZSBkbGwgcmF0aGVyIHRoYW4gaW4gdGhlIGRsbCBpdHNlbGYuCgktIENvdmVyIHRoZSBjYXNlLCB3aGVuIHRoZSBwc3pQcm92aWRlciBwYXJhbWV0ZXIgcG9pbnRzIHRvIGFuIGVtcHR5CgkgIHN0cmluZy4KCS0gRml4ZWQgc29tZSBpbXByZWNpc2lvbnMgaW4gZXJyb3IgcmVwb3J0aW5nLgoJLSBSZW1vdmVkIHRoZSAid2luZV90b2RvJ3MiIGFycm91bmQgdGhlIGNvcnJlc3BvbmRpbmcgdW5pdC10ZXN0cy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogS3Jpc2huYSBNdXJ0aHkgPEtyaXNobmEuTXVydGh5QGd1cHRhd29ybGR3aWRlLmNvbT4KCU1vZGlmaWVkIEVESVRfV01fQ2hhcigpIHRvIHJlc3RyaWN0IGtleWluZyBpbiBvZiBsZXR0ZXJzIG90aGVyIHRoYW4KCW51bWJlcnMgd2hlbiBFU19OVU1CRVIgc3R5bGUgaXMgc2V0LgoKMjAwNC0wNy0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNpL21zaS5jLCBpbmNsdWRlL21zaS5oLCBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYywKCSAgcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbXBsZW1lbnQgbG9nZ2luZyBpbiBtc2lleGVjLgoJQ29ycmVjdCBNc2lFbmFibGVMb2d7QSxXfSBwcm90b3R5cGUuCgoJKiBpbmNsdWRlL21zaS5oLCBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUltcGxlbWVudCB0aGUgVUkgbGV2ZWwgY2hhbmdlIHBhcnQgb2YgbXNpZXhlYy4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIHRoZSBjb3JyZWN0IGRlZmF1bHQgbW9kZSB0byB0aGUgcmVwYWlyIG9wdGlvbi4KCgkqIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRHVtcCAodmlhIFRSQUNFcykgYWxsIHRoZSBhcmd1bWVudHMgb2YgbXNpZXhlYy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmUgbGFzdCB3aW5lZGVmYXVsdC5yZWcgcmVmZXJlbmNlIGluIHRoZSBjb2RlLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIHByb2dyYW1zL3djbWQvRW4ucmMsIHByb2dyYW1zL3djbWQvUnUucmMsCgkgIHByb2dyYW1zL3djbWQvU2kucmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYnl0ZXNfdG9fbW10aW1lKCkgdG8gY29udmVydCB0aGUgc3RyZWFtIHBvc2l0aW9uIGZyb20gYnl0ZXMgdG8KCXRoZSByZXF1ZXN0ZWQgTU1USU1FIGZvcm1hdC4gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgaWRlbnRpY2FsIGluIGFsbAoJZHJpdmVycy4KCVJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBjb2RlIGZyb20gd29kR2V0UG9zaXRpb24oKSBhbmQKCXdpZEdldFBvc2l0aW9uKCkgYW5kIHVzZSBieXRlc190b19tbXRpbWUoKSBpbnN0ZWFkLgoJYnl0ZXNfdG9fbW10aW1lKCkgdXNlcyBubyBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIHRvIGNvbXB1dGUKCVRJTUVfU01QVEUgYW5kIG5vIGxvbmdlciB1c2VzIHJvdW5kKCkuIEl0IHNob3VsZCBoYXZlIG5vIGludGVnZXIKCW92ZXJmbG93cyBlaXRoZXIuCgoJKiBpbmNsdWRlL21zaS5oLCBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYywKCSAgcHJvZ3JhbXMvbXNpZXhlYy9tc2lleGVjLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbXBsZW1lbnQgdGhlIGFkdmVydGlzZSBwYXJ0IG9mIG1zaWV4ZWMuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IElOVEVSTkVUX09QVElPTl9DT05ORUNURURfU1RBVEUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Gci5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRGUucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJRnJlbmNoIHRyYW5zbGF0aW9uIGFuZCBvdGhlciBhZGp1c3RtZW50cy4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU21hbGwgY2xlYW51cCBpbiBJRGlyZWN0U291bmRCdWZmZXJJbXBsX1NldFBhbigpLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHMzZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgdGhhdCBtb2RpZnlpbmcgdGhlIHNlY29uZGFyeSBidWZmZXIgdm9sdW1lL3BhbiBkb2VzIG5vdCBjaGFuZ2UKCXRoZSBwcmltYXJ5IGJ1ZmZlcidzIHZvbHVtZSBhbmQgcGFuLgoKCSogZGxscy9vbGUzMi9ycGMuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJU2V0IFJQQyBkYXRhIHJlcHJlc2VudGF0aW9uLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL3JwYy5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJUGFzcyAtRW1iZWRkaW5nIHN3aXRjaCB0byBFWEUgc2VydmVycywgbW9yZSB0cmFjaW5nLgoKCSogZGxscy9rZXJuZWwvcmVzb3VyY2UxNi5jOgoJQXZvaWQgbHZhbHVlIGNhc3RzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IE1hcmN1cyBNZWlzc25lcikuCgoJKiBkbGxzL2RldmVudW0vZGV2ZW51bS5yYzogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIEl0YWxpYW4gc3RyaW5ncy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9taXhlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSB2b2x1bWUgYW5kIGJhbGFuY2Ugb2YgcHJpbWFyeSBidWZmZXJzIHNvIGl0IGlzIHRoZSBzeXN0ZW0ncwoJdm9sdW1lIGFuZCBiYWxhbmNlLCBsaWtlIG9uIFdpbmRvd3MuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dpbm1tX3Rlc3QuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTb3J0IHRoZSB3aW5tbSB0ZXN0IGZvcm1hdHMgYnkgaW5jcmVhc2luZyBzYW1wbGluZyByYXRlLgoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglUZXN0IHdhdmVJbkdldERldkNhcHNXLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglXaW5kb3dzIDk1IGRvZXNuJ3Qgc3VwcG9ydCB3YXZlT3V0R2V0RGV2Q2Fwc1cuCgoyMDA0LTA3LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5zcGVjOgoJUmVtb3ZlZCBzb21lIGZ1bmN0aW9ucyB0aGF0IGRvbid0IGV4aXN0IGluIG1zdmNydDIwIChyZXBvcnRlZCBieSBKYW4KCVZhbiBCdWdnZW5ob3V0KS4KCgkqIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvbWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcnBjLmM6CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIFJlbW92ZSB1bm5lZWRlZCBTVFVCTUdSX1N0YXJ0IGNhbGwuCgktIENsZWFudXAgY29tcG9ial9wcml2YXRlLmguCgoJKiBkbGxzL3F1YXJ0ei9hdmlzcGxpdC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+Cglja2lkSlVOSyBpcyBhIEZPVVJDQyBub3QgYSBUV09DQyBzbyByZXdyaXRlIHRoZSBjYXNlIHN0YXRlbWVudAoJYXBwcm9wcmlhdGVseS4KCgkqIHByb2dyYW1zL25vdGVwYWQvRGUucmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgdXAgc29tZSBzbWFsbCBwcm9ibGVtcyBpbiB0aGUgR2VybWFuIHN0cmluZyB0YWJsZS4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgMiBtb3JlIGNhc3RlZCBsdmFsdWUgaXNzdWVzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CgktIFJlbW92ZSB0aGUgLXUgb3B0aW9uLCB0aGUgVVJMIGlzIGluIGEgcmVzb3VyY2Ugbm93LgoJLSBSZXNldCB0aGUgV0lORVRFU1RfKiBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyB0byB0aGVpciBkZWZhdWx0cwoJICBiZWZvcmUgZm9ya2luZyB0aGUgdGVzdHMuCgktIEFkZCB0aGUgLWUgb3B0aW9uIHRvIG9wdGlvbmFsbHkgcHJlc2VydmUgdGhlIGVudmlyb25tZW50LgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogRml4ZWQgYSBjb3VwbGUgb2Ygb2ZmLWJ5LW9uZSBlcnJvcnMuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb3duZ3JhZGUgdGVzdHMgdG8gRFg4IGxldmVsIHNvIGl0IGNhbiBidWlsZCBvbiBhbGwgd2luZG93cwoJcGxhdGZvcm1zLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRGUucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L0RlLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0RlLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0RlLnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglNaW5vciBmaXhlcyBhbmQgdXBkYXRlcyB0byB0aGUgR2VybWFuIHJlc291cmNlIGZpbGVzLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVJvYiBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBTdGRNYXJzaGFsOjpSZWxlYXNlTWFyc2hhbERhdGEuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgbGlicy93aW5lL01ha2VmaWxlLmluOgoJRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJU2V0IHNlZ21lbnQgYWRkcmVzcyBvZiB3aW5lIGV4ZWN1dGFibGUgYW5kIGxpYndpbmUuZHlsaWIgb24gRGFyd2luLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsIHByb2dyYW1zL3dpbmVjZmcvSXQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYzoKCUl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCBJdGFsaWFuIHJlc291cmNlcy4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURyYXcgdW5kZXJsaW5lIGFuZCBzdHJpa2VvdXQgbGluZXMgaW4gdGhlIG5vbi14cmVuZGVyIGNhc2VzIHRvby4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglJbmNsdWRlIHRoZSBkc291bmQgdGVzdHMuCgoJKiBkbGxzL29sZTMyL3JwYy5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglVbnJlZiBzdHViIGFmdGVyIGludm9raW5nIG9uIGl0LgoKCSogZGxscy9hdmlmaWwzMi9leHRyYWNodW5rLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglSZW1vdmUgdXNlcyBvZiB0aGUgY2FzdC1hcy1sdmFsdWUgR0NDIGV4dGVuc2lvbiB3aGljaCBoYXMgYmVlbgoJZGVwcmVjYXRlZC4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9hZHZhcGkzMi90ZXN0cy9jcnlwdC5jOgoJTWljaGFlbCBKdW5nIDxtanVuZ0Bpc3MudHUtZGFybXN0YWR0LmRlPgoJLSBGaXhlZCBhIHByb2JsZW0gd2l0aCBkd1Byb3ZUeXBlIHZhbHVlcyBncmVhdGVyIHRoYW4gOTkgaW4KCSAgQ1JZUFRfR2V0VHlwZUtleU5hbWUuCgktIEZpeGVkIGVycm9yIHJlcG9ydGluZyBpbiB0aGUgY2FzZSBvZiBkd1Byb3ZUeXBlID09IDAuCgktIFJlbW92ZWQgInRvZG9fd2luZSIgZnJvbSB0aGUgY29ycmVzcG9uZGluZyB1bml0IHRlc3QuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0bVVuZGVybGluZWQgYW5kIHRtU3RydWNrT3V0IHJlZmxlY3QgdGhlIHZhbHVlcyB1c2VkIHRvIGNyZWF0ZQoJdGhlIGZvbnQuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUR1bXAgRGlyZWN0U291bmQgY2FwYWJpbGl0aWVzIGZsYWdzLgoKCSogZGxscy9kc291bmQvcHJvcHNldC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmMsCgkgIGRsbHMvZHhndWlkL2R4Z3VpZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlbW92ZXMgZHNjb25mIElJRHMgZnJvbSBkeGd1aWQubGliLgoJRml4ZXMgcHJvcHNldCBmaWxlcyBmb3IgbWlzc2luZyBJSURzLgoKMjAwNC0wNy0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sOgoJSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCVJlbW92ZSByZWZlcmVuY2VzIHRvIGRlYnVnbXNnIGFuZCB3aW5lZGVmYXVsdC5yZWcuCgoJKiBkbGxzL21wci9tcHIucmMsIGRsbHMvbXByL21wcl9JdC5yYywgZGxscy9zaGx3YXBpL3NobHdhcGkucmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpX0l0LnJjLCBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjOgoJSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIEl0YWxpYW4gcmVzb3VyY2VzLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGaXggQ3JlYXRlTWFwcGVkQml0bWFwIGZvciBwYWxldHRlLWxlc3MgYml0bWFwcy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCS0gUHJvcGVybHkgY2FsY3VsYXRlIGNhcHRpb24gbGVuZ3RoIHdoZW4gY29udmVydGluZyBtdWx0aS1ieXRlIHN0cmluZwoJICB0byB3aWRlIGNoYXJhY3RlciBvbmUuCgktIFdpemFyZCBjb250ZW50cyBzaG91bGRuJ3QgYmUgbW92ZWQgYnkgdGhlIHNpemUgb2Ygd2F0ZXJtYXJrIGJpdG1hcC4KCS0gRml4IFBTSF9XSVpBUkQ5N19bTkVXL09MRF0gY2hlY2tzLgoJLSBCbGl0IHRoZSB3YXRlcm1hcmsgZXZlbiBpZiBQU0hfVVNFSEJNV0FURVJNQVJLIGZsYWcgaXNuJ3Qgc2V0IGFuZAoJICBibGl0IG9ubHkgdGhlIHBhcnQgdGhhdCBmaXRzIGludG8gdGhlIGRpYWxvZy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUh0dHBRdWVyeUluZm8gcmV0dXJucyBidWZmZXIgbGVuZ3RoIGluY2x1ZGluZyBudWxsIHRlcm1pbmF0b3Igb24KCWluc3VmZmljaWVudCBidWZmZXIgbGVuZ3RoIGFuZCBidWZmZXIgbGVuZ3RoIGV4Y2x1ZGluZyBudWxsIHRlcm1pbmF0b3IKCW9uIHN1Y2Nlc3M6CgktIEZpeCBIVFRQX0h0dHBRdWVyeUluZm9XIGZvciB0aGVzZSBzZW1hbnRpY3MuCgktIEZpeCBIdHRwUXVlcnlJbmZvQSB0byBjb3JyZWN0bHkgY29weSB0aGUgbnVsbCB0ZXJtaW5hdG9yIGluIHRoZSBjYWxsCgkgIHRvIFdpZGVDaGFyVG9NdWx0aUJ5dGUuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVbmljb2RlIGZpbGUgZGlhbG9ncyBzZW5kIGFuZCByZWNlaXZlIHVuaWNvZGUgbWVzc2FnZXMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0RlLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0ZyLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCVZpc3VhbCB1cGRhdGVzIGFuZCB0cmFuc2xhdGlvbnMgZm9yIHJlZ2VkaXQuCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYWR2YXBpMzIvdGVzdHMvY3J5cHQuYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHNvbWUgdW5pdCB0ZXN0cyBmb3IgdGhlIENyeXB0QWNxdWlyZUNvbnRleHQgQVBJIGZ1bmN0aW9uLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtaXNsZWFkaW5nIHdhcm5pbmcgb2xlIENvR2V0Q2xhc3NPYmplY3QuCgoJKiBkbGxzL3dpbmluZXQvY29va2llLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCVJld3JpdGUgY29va2llcyB0byB1c2Ugc2hhcmVkIGxpc3QuaCBsaXN0IGNvZGUuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggSFRUUCBQT1NUIHJlcXVlc3RzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9iaXRtYXAuYywKCSAgZGxscy9nZGkvYnJ1c2guYywgZGxscy9nZGkvY2xpcHBpbmcuYywgZGxscy9nZGkvZGMuYywgZGxscy9nZGkvZGliLmMsCgkgIGRsbHMvZ2RpL2VuaG1ldGFmaWxlLmMsIGRsbHMvZ2RpL2ZvbnQuYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwKCSAgZGxscy9nZGkvZ2Rpb2JqLmMsIGRsbHMvZ2RpL21ldGFmaWxlLmMsIGRsbHMvZ2RpL3BhbGV0dGUuYywKCSAgZGxscy9nZGkvcGVuLmMsIGRsbHMvZ2RpL3JlZ2lvbi5jOgoJTW92ZWQgYWxsIGZpbGVzIGZyb20gdGhlIG9iamVjdHMvIGRpcmVjdG9yeSB0byBkbGxzL2dkaS4KCU1lcmdlZCB0ZXh0LmMgaW50byBmb250LmMgYW5kIGRjdmFsdWVzLmMgaW50byBkYy5jLgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL3BhaW50aW5nLmM6CglNb3ZlZCBMaW5lRERBIGltcGxlbWVudGF0aW9uIHRvIGRsbHMvZ2RpL3BhaW50aW5nLmMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB3ZSB3b24ndCBnZXQgYW4gb3ZlcmZsb3cgaW4gY2hlY2tfcG9zaXRpb24oKSBldmVuIGlmIHdlIHBsYXkKCWxvbmdlciB0ZXN0IHRvbmVzLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTYXZlIGVudW1lcmF0ZWQgR1VJRHMgaW4gYSBnbG9iYWwgYXJyYXkgc28gdGhleSBwZXJzaXN0IGFmdGVyCgllbnVtZXJhdGlvbi4KCVdoaXRlIHNwYWNlIGNsZWFudXAuCglBZGQgdGVzdHMgZm9yIG9wZW5pbmcgZGVmYXVsdCBkZXZpY2VzLgoKCSogZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvdGVzdHMvc3RyaW5nLmM6CglGaXhlZCBmbGFncyBoYW5kbGluZyBpbiBTdHJJc0ludGxFcXVhbEEvVyAoc3BvdHRlZCBieSBKYW1lcyBIYXdraW5zKS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLCBkbGxzL3dpbm1tL3dpbm1tLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkcyAqR2V0RGV2Q2Fwc1cgYmFkIHBvaW50ZXIgY2hlY2suCglBZGRzIHdhdmVPdXRHZXREZXZDYXBzVyB0ZXN0LgoKCSogZGxscy91dWlkL3V1aWQuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9hY3RpdnNjcC5oLAoJICBpbmNsdWRlL2FjdGl2c2NwLmlkbCwgaW5jbHVkZS9kaXNwZXguaCwgaW5jbHVkZS9kaXNwZXguaWRsOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGQgaWRsIGZpbGVzIHJlcXVpcmVkIGZvciBzY3JpcHRpbmcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbG9hZGVyL3B0aHJlYWQuYzoKCUVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCXdpbmVfcHRocmVhZF9pbml0X3RocmVhZDogcmV0cmlldmUgdGhlIHN0YWNrIGluZm8gb24gRGFyd2luLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CglWaXN1YWwgdXBkYXRlcyB0byBXaW5lY2ZnLgoKCSogZGxscy93aW5tbS93aW5tbS5jLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGluY2x1ZGUvbW1kZGsuaDoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCS0gSW1wbGVtZW50YXRpb24gb2YgbW1UYXNrQ3JlYXRlLiBCYXNlZCBvbiBwYXRjaCBieSBFcmljIFBvdWVjaC4KCS0gRmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaW4gd2F2ZU91dFtVbl1QcmVwYXJlSGVhZGVyLgoKCSogZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sOiBJdmFuIExlbyBQdW90aSA8cHVvdGlAaW53aW5kLml0PgoJRml4IHdpbmUudXNlcnJlZyBuYW1lIChzcG90dGVkIGJ5IERhdmUgV2FzaGJ1cm4pLgoKMjAwNC0wNy0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglHZXQgcmlkIG9mIHdpbmRvdyByZWdpb24gb24gdGhlIGNsaWVudCBzaWRlLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVnaW9uLmMsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmMsCgkgIHdpbmRvd3Mvd2lucG9zLmM6CglNb3ZlZCB0aGUgV2luZG93RnJvbVBvaW50IGZ1bmN0aW9uYWxpdHkgdG8gdGhlIHNlcnZlciBzbyB0aGF0IHdlIGNhbgoJcHJvcGVybHkgdGFrZSBpbnRvIGFjY291bnQgdGhlIHdpbmRvdyByZWdpb24uCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglSZXdyb3RlIGxvYWRfbWVzc2FnZUEvVyB0byBkZWFsIHByb3Blcmx5IHdpdGggbXVsdGlieXRlIGNoYXJhY3RlcnMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJldmVydCBteSBwcmV2aW91cyBpbmNvcnJlY3QgY2hlY2tfcG9zaXRpb24oKSBwYXRjaDogV2luZG93cyByZXR1cm5zCglleGFjdGx5IHRoZSBudW1iZXIgb2Ygc2FtcGxlcy9ieXRlcyBwbGF5ZWQgKG5vIHBsdXMgb25lIHRoZXJlKS4KCU1vZGlmeSBjaGVja19wb3NpdGlvbigpIHRvIHdvcmsgb2ZmIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIGFzCgljYWxjdWxhdGVkIGJ5IHdhdmVfZ2VuZXJhdGVfbGEoKS4gVGhpcyBmaXhlcyBwcm9ibGVtcyBkdWUgdG8gcm91bmRpbmcKCXdoZW4gZHVyYXRpb24gaXMgbm90IGEgbmVhdCBpbnRlZ2VyLgoJUm91bmQgdXAgdGhlIGZyYW1lIGZpZWxkIHdoZW4gY2hlY2tpbmcgVElNRV9TTVBURS4KCgkqIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy90ZXh0LmM6CglaYWNoIEdvcm1hbiA8emFjaEBhcmNoZXR5cGVhdWN0aW9uLmNvbT4KCUFkZCB0ZXN0IHRvIGRlbW9uc3RyYXRlIERyYXdUZXh0KCkgd2l0aCBEVF9DQUxDUkVDVCBpbmNvcnJlY3QgYmVoYXZpb3IKCWluIE1NX0hJRU5HTElTSCBtYXBwaW5nIG1vZGUuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL0RlLnJjLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCVVwZGF0ZWQgdGhlIEdlcm1hbiB0cmFuc2xhdGlvbi4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueToKCUZpeGVkIGhhbmRsaW5nIG9mIExBTkdVQUdFIHN0YXRlbWVudCBmb3IgbWVzc2FnZSB0YWJsZXMgKGZvdW5kIGJ5CglaaGFuZ3JvbmcgSHVhbmcpLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglOb3RpZnkgd2hlbiBwb3NpdGlvbiBmb3JtYXQgbm90IHN1cHBvcnRlZC4KCVRlc3QgdGhhdCBwb3NpdGlvbiBpcyAwIGF0IHN0YXJ0LgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJZiB0aGUgZGF0YSB0YWJsZSBmb3IgYSBjYWxsZWQgYWN0aW9uIGRvZXMgbm90IGV4aXN0IChmb3IgZXhhbXBsZQoJQ3JlYXRlRm9sZGVycyB3YW50cyBhIENyZWF0ZUZvbGRlciB0YWJsZSB0byByZWFkIHRoZSBkYXRhIGZyb20pIGRvIG5vdAoJZmFpbCwgaW5zdGVhZCBqdXN0IGRvIG5vdCBwZXJmb3JtIHRoZSBhY3Rpb24uCgoJKiB0b29scy93bWMvd3JpdGUuYzogWmhhbmdyb25nIEh1YW5nIDxoemhyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCUNhbGwgd2luZV9jcF93Y3N0b21icygpIHRvIHJldHJpZXZlIGFjdHVhbCBsZW5ndGggb2YgYnVmZmVyIGJlZm9yZQoJY29udmVyc2lvbi4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzdHJpbmcgbGVuZ3RoIHJldHVybiBmcm9tIEh0dHBRdWVyeUluZm9BLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglNYWtlIFNUQVJUVVBJTkZPLmxwRGVza3RvcCB0ZXN0cyBwYXNzIG9uIE5ULgoKMjAwNC0wNy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIHBvaW50ZXJzIGludGVybmFsbHkgYW5kIHJlZmNvdW50IGFsbCBvYmplY3RzLgoKCSogZGxscy9tc2kvY29uZC55LCBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJU2V0IFZlcnNpb25Nc2kgcHJvcGVydHkuCglBY2NlcHQgYSBkb3QgaW4gYSBudW1iZXIgdmFsdWUuCgoJKiBkbGxzL21zdmNydC9lbnZpcm9uLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21zdmNydC90ZXN0cy9lbnZpcm9uLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSB0ZXN0IGNhc2VzIGZvciBfd3B1dGVudiwgZml4IGRlbGV0aW9uIG9mIG5vbi1leGlzdGVudAoJZW52aXJvbm1lbnQgdmFyaWFibGVzLCByZXR1cm4gLTEgb24gZXJyb3IuCgoJKiBjb250cm9scy9tZW51LmM6IFphY2ggR29ybWFuIDx6YWNoQGFyY2hldHlwZWF1Y3Rpb24uY29tPgoJU2V0IHRoZSB0b3BfcG9wdXAgZ2xvYmFsIHZhcmlhYmxlIHRvIHplcm8gaW4gTUVOVV9FeGl0VHJhY2tpbmcoKSwKCWZpeGluZyBNRU5VX0lzTWVudUFjdGl2ZSgpIGFuZCB0aGVyZWZvcmUgVktfRjEgV01fSEVMUCBtZXNzYWdlCglnZW5lcmF0aW9uLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIHRoYXQgd2UgYXJlIHN0aWxsIHBsYXlpbmcgaW4gd29kVXBkYXRlUGxheWVkVG90YWwoKS4gSWYgbm90LAoJdGhlbiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgc25kX3BjbV9kZWxheSgpIGlzIG5vdCB1c2FibGUgc28gYXNzdW1lCglkZWxheT0wLiBUaGlzIGdldHMgdGhlIHdpbm1tIHRlc3QgdG8gY29tcGxldGUgaW4gaW50ZXJhY3RpdmUgbW9kZSB3aXRoCgl3aW5lYWxzYS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIGxpc3RlbmVyL3NvdW5kIHBvc2l0aW9uIHVwZGF0ZSBkdXJhdGlvbiBhbmQgVElNRV9TTElDRQoJaW5kZXBlbmRlbnQuCglTZXQgdGhlIHNvdW5kIGFuZCBsaXN0ZW5lciB2ZWxvY2l0eSBhbmQgaW5jcmVhc2UgdGhlIHNvdW5kIHNvdXJjZQoJdmVsb2NpdHkgc28gd2UgbWF5IGdldCBzb21lIGRvcHBsZXIgZWZmZWN0LgoJQWRkZWQgc29tZSB0cmFjZXMgc28gb25lIGNhbiBtb25pdG9yIHRoZSBsaXN0ZW5lci9zb3VuZCBwb3NpdGlvbnMgd2l0aAoJV0lORVRFU1RfREVCVUc9My4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW4gaW50ZXJhY3RpdmUgbW9kZSwgY2hlY2sgdGhhdCB0aGUgdG9uZSBkdXJhdGlvbiBpcyB3aXRoaW4gMTAlIG9mIHRoZQoJZXhwZWN0ZWQgdmFsdWUuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsIGluY2x1ZGUvbXNpLmgsCgkgIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW1wbGVtZW50IHRoZSByZXBhaXIgbWVjaGFuaXNtIGluIG1zaWV4ZWMsIGFuZCBzdHViIGl0IG91dCBpbgoJbXNpLmRsbC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUhvbm91ciBJTlRFUk5FVF9GTEFHX05PX0NPT0tJRVMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJQnVpbGQgd2luZS1wdGhyZWFkIG9uIERhcndpbi4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IEh0dHBRdWVyeUluZm8oSFRUUF9RVUVSWV9SQVdfSEVBREVSUyopIHNvIHRoYXQgaXQgcmV0dXJucyB0aGUKCWFjdHVhbCBoZWFkZXJzIHJlY2VpdmVkLCBub3QganVzdCByZWNvbnN0aXR1dGluZyB0aGVtIGZyb20gcHJvY2Vzc2VkCglkYXRhLgoKCSogZGxscy9tcHIvbXByLnJjLCBkbGxzL21wci9tcHJfUHQucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5yYywgZGxscy9zaGx3YXBpL3NobHdhcGlfUHQucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUHQucmMsIHByb2dyYW1zL3dpbmVjZmcvUHQucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJVXBkYXRlIGxvY2FsaXphdGlvbiBmb3IgUG9ydHVndWVzZSBsYW5ndWFnZS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBjaGVja19wb3NpdGlvbigpIHRlc3Q6IG9uIFdpbmRvd3Mgd2F2ZU91dEdldFBvc2l0aW9uKCkgcmV0dXJucwoJdGhlIG51bWJlciBvZiBzYW1wbGVzIHBsYXllZCBwbHVzIG9uZSAoYWxzbyBvbmUgZXh0cmEgc2FtcGxlIGZvciB0aGUKCWJ5dGUgY291bnQpLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVXNlIHJvdW5kKCkgaW5zdGVhZCBvZiBjZWlsKCkgaW4gd29kR2V0UG9zaXRpb24oVElNRV9TTVBURSkuCglGaXhlcyB0aGUgY29ycmVzcG9uZGluZyB3aW5tbSBjb25mb3JtYW5jZSB0ZXN0LgoKCSogZGxscy9kc291bmQvZHNvdW5kLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvIGluaXRpYWxpemF0aW9uIHRvIG1hdGNoIHdpbmRvd3MgYmVoYXZpb3IgKHdpdGggdGVzdCkuCgoJKiBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNsZWFudXAgb2YgdGhlIHByb3BlcnRpZXMgbGFzdCBzcGFjZSByZW1vdmFsLCBzaW5jZSBpdCBjYW4gYmUgdXNlZCBub3QKCW9ubHkgd2l0aCBJbnN0YWxsLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9tc2lleGVjLy5jdnNpZ25vcmUsIHByb2dyYW1zL21zaWV4ZWMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL21zaWV4ZWMvbXNpZXhlYy5jLCBwcm9ncmFtcy9tc2lleGVjL21zaWV4ZWMuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpcnN0IGRyYWZ0IGZvciBhIG1zaWV4ZWMuZXhlIHJlcGxhY2VtZW50LgoKCSogdG9vbHMvd2luZWluc3RhbGw6IFBhdWwgVnJpZW5zIDxwdnJpZW5zQHhzNGFsbC5ubD4KCUNyZWF0ZSB+Ly53aW5lIGlmIG5vdCBwcmVzZW50IGR1cmluZyB3aW5laW5zdGFsbC4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUJldHRlciBmaXggZm9yIGNvbGxhdGUgaWNvbiBiZWhhdmlvci4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9zcWwueToKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgcmV0dXJuIGNvZGUgb2YgTXNpRGF0YWJhc2VPcGVuVmlldy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZXMgdGhlIHJpZ2h0IGJ1Z3MgYW5kIGtlZXBzIGludGVudCBvZiB0ZXN0LgoJQWRkcyBtb3JlIHJlZmVyZW5jZSBjb3VudCBjaGVja3MuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9EZS5yYywgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYzoKCUhlbm5pbmcgR2VyaGFyZHQgPGhlbm5pbmcuZ2VyaGFyZHRAd2ViLmRlPgoJQWRkZWQgYSBHZXJtYW4gdHJhbnNsYXRpb24gZm9yIFdpbmVNaW5lLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9EZS5yYzoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAdmxzaS5pbmZvcm1hdGlrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHNvbWUgR2VybWFuIHRyYW5zbGF0aW9ucy4KCgkqIGluY2x1ZGUvd2lubnQuaDogRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJUmVtb3ZlIGltcGxlbWVudGF0aW9uIG9mIE50Q3VycmVudFRlYiBmb3IgcHBjIGhvc3QuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglGb3J3YXJkIHNobHdhcGkuNDU5LzQ2MCAoU0hFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NBL1cpIHRvCglrZXJuZWwzMi5FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NBL1cuCgoJKiBkbGxzL3dpbmluZXQvY29va2llLmM6IFJvYmVydCBTaGVhcm1hbiA8cm9iQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzaXplIHJldHVybiBmcm9tIEludGVybmV0R2V0Q29va2llVy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglVc2Ugc3lzdGVtIG1ldHJpY3MgdmFsdWVzIGluIFRPT0xCQVJfRHJhd1BhdHRlcm4gaW5zdGVhZCBvZiBoYXJkY29kZWQKCXZhbHVlcy4KCjIwMDQtMDctMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNDA3MTYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDQtMDctMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSW1wbGVtZW50ZWQgR2V0VUlWZXJzaW9uIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFN0ZWZhbiBMZWljaHRlcikuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHRyeSB0byBjcmVhdGUgYSBJRGlyZWN0U291bmQzREJ1ZmZlciwgcGFydGx5IHRvIGtlZXAgdGhpcyB0ZXN0CglzaW1wbGUgYW5kIHBhcnRseSBiZWNhdXNlIGl0J3MgZ29pbmcgdG8gZmFpbCBzaW5jZSB3ZSBkaWQgbm90IHJlcXVlc3QKCURTQkNBUFNfQ1RSTDNELiBGaXhlcyBhIGNyYXNoIG9uIFdpbmRvd3MuCglEb24ndCByZXF1ZXN0IHVubmVlZGVkIGNhcHMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc2hlbWVzaC5iaXo+CglTeXN0ZW0gZGVmYXVsdCBsb2NhbGUgaW4gV2luZG93cyBkZXRlcm1pbmVzIHRoZSBBTlNJIGVuY29kaW5nCgkoTENfQ1RZUEUgb24gVW5peCkuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglGaXhlZCBjb2xsYXRlIGljb24gYmVoYXZpb3IuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldCBhbmQgcHJpbnQgdGhlIERpcmVjdFNvdW5kIHByaW1hcnkgYnVmZmVyIHZvbHVtZS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2RzM2QuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kX3Rlc3QuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglLZWVwIHRyYWNrIG9mIGhvdyBtdWNoIGhhcyBiZWVuIHBsYXllZCBhbmQgZ2V0IHJpZCBvZiBsYXN0X3Bvcy4gVGhpcwoJZml4ZXMgYSBidWcgd2hlcmUgYnVmZmVyX3NlcnZpY2UoKSB3b3VsZCBub3QgZGV0ZWN0IHRoYXQgZXZlcnl0aGluZwoJaGFkIGJlZW4gcGxheWVkLgoJQ2hlY2sgdGhhdCB0aGUgYWN0dWFsIHNvdW5kIGR1cmF0aW9uIHdhcyB3aXRoaW4gMTAlIG9mIHRoZSBleHBlY3RlZAoJdmFsdWUuCglNYWtlIEJVRkZFUl9MRU4gYW5kIFRJTUVfU0xJQ0UgaW5kZXBlbmRlbnQsIG1ha2Ugc3VyZSBUSU1FX1NMSUNFIGRvZXMKCW5vdCBkaXZpZGUgQlVGRkVSX0xFTiB0byBzcGljZSB0aGluZ3MgdXAgYSBiaXQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvZGlhbG9nLmM6CglLcmlzaG5hIE11cnRoeSA8S3Jpc2huYS5NdXJ0aHlAZ3VwdGF3b3JsZHdpZGUuY29tPgoJQWRkZWQgcmVncmVzc2lvbiB0ZXN0IGZvciBXTV9ORVhURExHQ1RMIGFuZCBkZWZhdWx0IGJ1dHRvbiBJRAoJYmVoYXZpb3IuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJUHJldmVudCBnYXJiYWdlIGJlaW5nIHBhc3NlZCBmb3Igd2luZG93cyBkaXJlY3RvcnkuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGwgSURpcmVjdFNvdW5kOjpJbml0aWFsaXplKCkgYXMgcGVyIE1TRE4gYmVmb3JlIHVzaW5nIHRoZQoJRGlyZWN0U291bmQgb2JqZWN0LiBGaXhlcyBhIGNyYXNoIG9uIFdpbmRvd3MuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglPbiBXaW5kb3dzIEdldFBhbigpIG1heSBub3QgcmV0dXJuIHRoZSB2YWx1ZSB0aGF0IHdhcyBqdXN0IHNldCB3aXRoCglTZXRQYW4oKS4KCgkqIGRsbHMvbXNodG1sL21haW4uYywgZGxscy9tc2h0bWwvbXNodG1sLnNwZWM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBEbGxJbnN0YWxsIGFuZCBEbGxSZWdpc3RlclNlcnZlci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglNYWtlIHRoZSBwYXR0ZXJuIGRyYXdpbmcgaW4gVE9PTEJBUl9EcmF3UGF0dGVybiBsb29rIGJldHRlci4KCgkqIGRsbHMvbXNybGUzMi9tc3JsZTMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgbHZhbHVlIGNhc3RzIGZvciBuZXcgY29tcGlsZXIuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglGaXhlZCBzb21lIGR1cGxpY2F0ZSBDUllQVF9GcmVlIGNhbGxzIChzcG90dGVkIGJ5IE1pY2hhZWwgSnVuZykuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIFBST1ZfRU5VTUFMR1NbX0VYXSBzdHJ1Y3RzIGFuZCB0eXBlZGVmcy4KCUFkZGVkIHNvbWUgZGVmaW5lcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBpbmNsdWRlL21tc3lzdGVtLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogdG9vbHMvbWFrZV9jdGVzdHMsIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IG1zdmNtYWtlciBzbyB0aGUgZ2VuZXJhdGVkIHRlc3RsaXN0LmMgZmlsZXMgaW5jbHVkZSBzdGRhcmcuaC4KCUFkZCBjb21tZW50cyBwb2ludGluZyBvdXQgdGhlIHJlbGF0aW9uIGJldHdlZW4gbXN2Y21ha2VyIGFuZAoJbWFrZV9jdGVzdHMuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogSmFtZXMgSGF3a2lucyA8dHJ1aWtlbkBnbWFpbC5jb20+CglDaGVjayBmb3IgZW1wdHkgUHJpbnRlck5hbWUgaW4gUFJJTlRETEdfV01Db21tYW5kVy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEaXN0aW5ndWlzaCBiZXR3ZWVuIE9wZW4gYW5kIEV4cGxvcmUgY29tbWFuZHMuCglFeGVjdXRlIGl0ZW1zIGJ5IGRlZmF1bHQuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglQYXNzIHRoZSBlbnZpcm9ubWVudCBmb3IgYSBjaGlsZCBwcm9jZXNzIHRocm91Z2ggdGhlIHNlcnZlciBpbnN0ZWFkIG9mCglyZWx5aW5nIG9uIHRoZSBVbml4IGVudmlyb25tZW50LgoKCSogdG9vbHMvd2luZS5pbmY6CglTcGVjaWZ5IHRoZSBQQVRIIHZhcmlhYmxlIGluIHVwcGVyY2FzZSB0byBhdm9pZCBnZXR0aW5nIHR3byBmbGF2b3JzIG9mCglQQVRIIHdoZW4gY29udmVydGluZyB0aGUgVW5peCBlbnZpcm9ubWVudC4KCgkqIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzogSW1wbGVtZW50ZWQgX3NwYXdubGUgYW5kIF9zcGF3bmxwZS4KCgkqIHRvb2xzL3dpbmV3cmFwcGVyOgoJSW52b2tlIHdpbmVwcmVmaXhjcmVhdGUgaWYgdGhlIC53aW5lIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdC4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYzoKCVN1cHBvcnQgZm9yIGxhcmdlIHByb2ZpbGUgdmFsdWVzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFJvYmVydAoJU2hlYXJtYW4pLgoJRml4ZWQgUFJPRklMRV9GbHVzaEZpbGUgdG8gY29ycmVjdGx5IHRydW5jYXRlIHRoZSBmaWxlIGJlZm9yZSBzYXZpbmcKCWl0LgoKCSogcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCURlZmluZSB0aGUgYmFja2VuZF9jcHUgcmVnYXJkaW5nIHRoZSBob3N0IHByb2Nlc3Nvci4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVJlbW92ZWQgdGhlIGNyb3NzY2FsbHMgKHVuaWNvZGUgdG8gYXNjaWkpIGZyb20gR2V0QWNjZXB0TGFuZ3VhZ2VzVy4KCVJlbW92ZWQgdG9kb193aW5lIGZyb20gR2V0QWNjZXB0TGFuZ3VhZ2VzQSB0ZXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb24ndCBjcmFzaCBvbiBOVUxMIHRhYiB0ZXh0LgoKMjAwNC0wNy0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBvbmUgbHZhbHVlIGNhc3RlZCBhc3NpZ25tZW50IGZvciB0aGUgbmV3IGNvbXBpbGVyLgoKCSogZGxscy9zaGx3YXBpL21zZ2JveC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBhc3NpZ24gdG8gY2FzdGVkIHZhbHVlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL3JwYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgZmV3IHNlcmlvdXMgcmFjZSBjb25kaXRpb25zIGluIHRoZSBPTEUgb2JqZWN0IHBpcGUgc2VydmVyLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL2xvYWRvcmRlci5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oOgoJU2V0IHRoZSBzeXN0ZW0gZGlyZWN0b3J5IGluIG50ZGxsIGFzIHNvb24gYXMgd2UgaGF2ZSBkZXRlcm1pbmVkIGl0LgoKCSogZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jOgoJRG9uJ3QgZ2V0IHN5c3RlbSBkaXJlY3RvcnkgZnJvbSB0aGUgZW52aXJvbm1lbnQsIHVzZQoJR2V0U3lzdGVtRGlyZWN0b3J5IGluc3RlYWQuCgoJKiBzZXJ2ZXIvbmFtZWRfcGlwZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBkb3VibGUgZnJlZSBpbiB0aGUgbmFtZWQgcGlwZSBjb2RlLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNaWNoYWVsIEp1bmcgPG1qdW5nQGlzcy50dS1kYXJtc3RhZHQuZGU+CglVc2UgUmVnUXVlcnlWYWx1ZUV4QSBpbnN0ZWFkIG9mIFJlZ1F1ZXJ5VmFsdWVBIGluCglDcnlwdEVudW1Qcm92aWRlclR5cGVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglEYXJ3aW4vTWFjIE9TIFggV2VhayBpbXBvcnQgd29ya2Fyb3VuZC4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJLSBCZSBtb3JlIGFjY3VyYXRlIG9uIERhcndpbiBzdGFjayBzaXplLgoJLSBEZWxheSBpbXBvcnQgZml4IG9uIFBvd2VyUEMgaG9zdHMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CgktIENoYW5nZSB0aGUgd2F5IHRoYXQgdGhlIHJlc3BvbnNlIGhlYWRlcnMgYXJlIHJlY29uc3RydWN0ZWQgdG8gcmVkdWNlCgkgIHRoZSBjaGFuY2Ugb2YgbWVtb3J5IGJlaW5nIGluY29ycmVjdGx5IGFsbG9jYXRlZC4KCS0gUmV0dXJuIHRoZSBjb3JyZWN0IGVycm9yIHdoZW4gYSBoZWFkZXIgaXMgbm90IGZvdW5kLgoJLSByZW1vdmUgYWxsIHRoZSByZXNwb25zZSBoZWFkZXJzIGJlZm9yZSByZWNlaXZpbmcgbmV3IG9uZXMgc28gdGhhdCB3ZQoJICBkb24ndCBtZXJnZSBoZWFkZXJzIGZyb20gdHdvIHJlc3BvbnNlcy4KCS0gQWRkIGV4dHJhIHN0YW5kYXJkIGZpZWxkcy4KCS0gU3BsaXQgdGhlIHN0YXR1cyBsaW5lIGludG8gaHR0cCB2ZXJzaW9uLCBzdGF0dXMgY29kZSBhbmQgc3RhdHVzIHRleHQKCSAgYW5kIHN0b3JlIHRob3NlIGluIHRoZSByZXNwb25zZSBkYXRhLCB3aXRob3V0IHVzaW5nIHVzZSBhIGZha2UKCSAgZmllbGQuCgoyMDA0LTA3LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUtyaXNobmEgTXVydGh5IDxLcmlzaG5hLk11cnRoeUBndXB0YXdvcmxkd2lkZS5jb20+CglBZGQgdGhlIHNlbGVjdGVkIGV4dGVuc2lvbiBmcm9tIGZpbGUgdHlwZSBmaWx0ZXIgaWYgZmlsZSBuYW1lIGRvZXMgbm90Cgljb250YWluIHRoZSBmaWxlIGV4dGVuc2lvbi4KCgkqIGRsbHMvdXNlci9kZGUvY2xpZW50LmM6IEVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJRml4ZWQgbWVtb3J5IGFsbG9jYXRpb24gYnVnLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQW4gU05EQ1RMX0RTUF9TRVREVVBMRVggZmFpbHVyZSBzaG91bGQgYmUgYSBXQVJOKCksIG5vdCBhbiBFUlIoKSwKCXNpbmNlIHRoZSBPU1Mgc3BlY2lmaWNhdGlvbnMgc2F5IHdlIGhhdmUgdG8gY2FsbCBpdCBiZWZvcmUga25vd2luZyBpZgoJdGhlIHNvdW5kIGNhcmQgaXMgZnVsbC1kdXBsZXggY2FwYWJsZS4KCgkqIGluY2x1ZGUvd2lucmVnLmg6IE1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIFJlZ09wZW5DdXJyZW50VXNlciBwcm90b3R5cGUuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcG9ydCB3aW4yayBzZXJ2aWNlIHBhY2sgNCBpbnN0ZWFkIG9mIDMuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgdGhlIGZ1bmN0aW9uYWxpdHkgdGhhdCBhbGxvd3Mgb25lIHRvIGNhbGwgTXNpT3BlblBhY2thZ2UKCXdpdGggI25ubiB3aGVyZSBubm4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBoYW5kbGUgdG8gYW4gb3BlbgoJZGF0YWJhc2UuCgoJKiB0b29scy93aW5lLmluZjogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVVuY29tbWVudCBpbXBsZW1lbnRlZCBpbiBXaW5lIG1zdmlkYzMyIChNU1ZDL0NSQU0pIGNvZGVjLgoKCSogZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIGl0IHBvc3NpYmxlIHRvIG9wZW4gcmVhZC1vbmx5IEFWSSBmaWxlcyBmb3IgYSBwbGF5YmFjay4KCgkqIGRsbHMvbXNpL3ZlcnNpb24ucmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgdGhlIE1TSSB2ZXJzaW9uIHRvIGJlIHRoZSBzYW1lIGFzIG9uIHdpbjJrLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBmb250IHJlcGxhY2VtZW50cyB0byB3b3JrIHdpdGggYml0bWFwIGZvbnRzLgoJRW51bWVyYXRlIFN5c3RlbSwgVGVybWluYWwsIEZpeGVkU3lzIGluIHRoYXQgb3JkZXIuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCURlbGF5ZWQgaW1wb3J0IGZpeCBmb3IgRGFyd2luIGFuZCBQb3dlclBDIEhvc3QuCgoJKiBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywgZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLnJjOgoJU2FtaSBBYXJpbyA8c2FtaS5hYXJpb0BzdXJmZXUuZmk+CglBZGRlZCB0ZXN0cyBmb3IgcmVnaXN0ZXJpbmcgYSBkaWFsb2cgYm94IGNyZWF0ZWQgYnkgdXNpbmcgdGhlIENMQVNTCglkaXJlY3RpdmUgaW4gYSByZXNvdXJjZSBmaWxlLCB0aGVuIGNyZWF0aW5nIHRoZSBkaWFsb2cgdXNpbmcKCUNyZWF0ZURpYWxvZ1BhcmFtLgoKCSogZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMvdXNlci9kaWFsb2cxNi5jLCB3aW5kb3dzL2RlZmRsZy5jLAoJICB3aW5kb3dzL2RpYWxvZy5jOgoJQWxsb2NhdGUgdGhlIGRpYWxvZyBpbmZvIGluIERJQUxPR19DcmVhdGVJbmRpcmVjdCBpZiB0aGlzIHdhc24ndAoJYWxyZWFkeSBkb25lIGJ5IHRoZSBkaWFsb2cgcHJvY2VkdXJlLgoKCSogZGxscy9kYmdoZWxwL3N0YWJzLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglQcmV2ZW50IHRoZSBkZWJ1ZyBidWZmZXIgZnJvbSBvdmVyZmxvd2luZyBvbiBsb25nIHN0YWJzLgoKCSogZGxscy9kYmdoZWxwL3N0YWJzLmM6IEZpeGVkIGhhbmRsaW5nIG9mIGluY2x1ZGVzIHN0YWNrLgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnMzEuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGczMS5oOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUZpeCAxNi8zMiBiaXQgc2VwYXJhdGlvbi4KCjIwMDQtMDctMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWRsZy9vbGVkbGdfRGUucmMsIGRsbHMvc2VyaWFsdWkvRGUucmMsCgkgIGRsbHMvd2lubW0vd2lubW1fRGUucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9EZS5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLAoJICBwcm9ncmFtcy9zdGFydC9EZS5yYywgcHJvZ3JhbXMvc3RhcnQvcnNyYy5yYywgcHJvZ3JhbXMvdmlldy9EZS5yYywKCSAgcHJvZ3JhbXMvdmlldy92aWV3cmMucmM6CglIZW5uaW5nIEdlcmhhcmR0IDxoZW5uaW5nLmdlcmhhcmR0QHdlYi5kZT4KCU1vcmUgR2VybWFuIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9kc291bmQuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwgZGxscy9kc291bmQvcHJpbWFyeS5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlIERpcmVjdFNvdW5kIHJlZmVyZW5jZSBjb3VudHMgYnkgYnVmZmVycyBhbmQgYWRkIERlc3Ryb3kKCWZ1bmN0aW9ucyB0byBidWZmZXIgY29tcG9uZW50cyBhbmQgRGlyZWN0U291bmQgdG8gYWxsb3cgcHJvcGVyCglkZXN0cnVjdGlvbiBldmVuIHdpdGggb3V0c3RhbmRpbmcgcmVmZXJlbmNlcy4KCVJlbW92ZSB0cmFpbGluZyB3aGl0ZSBzcGFjZS4KCUFkZCB0ZXN0cyBmb3IgcHJvcGVyIHJlbGVhc2UgZXZlbiB3aXRoIGFjdGl2ZSBidWZmZXJzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWNjZXB0IGhlYWRlcnMgd2l0aG91dCBcclxuIGVuZGluZyBpbiBIdHRwQWRkUmVxdWVzdEhlYWRlcnMuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuaDoKCU1pY2hhZWwgSnVuZyA8bWp1bmdAaXNzLnR1LWRhcm1zdGFkdC5kZT4KCVJlZmVyZW5jZSBjb3VudGluZyBmb3IgQ1JZUFRQUk9WIG9iamVjdHMuCglJbXBsZW1lbnRlZCBDcnlwdENvbnRleHRBZGRSZWYuCgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gR2V0Vm9sdW1lSW5mb3JtYXRpb25XIGhhbmRsZSB0aGUgY2FzZSB3aGVuIHRoZXJlIGFyZSBubyBwZXJtaXNzaW9ucwoJYWNjZXNzaW5nIHRoZSBkZXZpY2UgdGhlIHNhbWUgd2F5IGFzIHdoZW4gbm8gZGV2aWNlIGlzIGZvdW5kLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOiBKYW1lcyBIYXdraW5zIDx0cnVpa2VuQGdtYWlsLmNvbT4KCUFkZGVkIGFuZCBjbGVhbmVkIEFQSSBkb2NzLgoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCUFsbG93IHNwZWNpZnlpbmcgbXVsdGlwbGUgZ3JhcGhpY3MgZHJpdmVycyBhbmQgdXNlIHRoZSBmaXJzdCBvbmUgdGhhdAoJbG9hZHMgc3VjY2Vzc2Z1bGx5LgoKCSogZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2luaXQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglNYWtlIHgxMWRydiBmYWlsIHRvIGxvYWQgd2hlbiBpdCBjYW4ndCBvcGVuIHRoZSBkaXNwbGF5LCBpbnN0ZWFkIG9mCglraWxsaW5nIHRoZSB3aG9sZSBwcm9jZXNzLgoKCSogdG9vbHMvd2luZWR1bXAvbmUuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGR1bXBpbmcgZXhwb3J0ZWQgZW50cnkgcG9pbnRzIGluIE5FIG1vZHVsZXMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3R3YWluLy5jdnNpZ25vcmUsIGRsbHMvdHdhaW4vTWFrZWZpbGUuaW4sCgkgIGRsbHMvdHdhaW4vdHdhaW4uc3BlYywgZGxscy90d2Fpbi90d2FpbjE2X21haW4uYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIDE2IGJpdCBwYWlyIERMTCBmb3IgVFdBSU4uCgoyMDA0LTA3LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvY29tYm8uYywgd2luZG93cy9ub25jbGllbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc3dpdGNoICh1bnNpZ25lZCBpbnQpIHsgY2FzZSAtMSAvIC0yOiB9IHByb2JsZW1zLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvaGVhZGVycy5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglEb24ndCB0ZXN0IGkzODYgdHlwZXMgb24gbm9uIGkzODYuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBmZXcgc3R1YiBpbXBsZW1lbnRhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBSb2JlcnQgU2hlYXJtYW4gPHJvYkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBQU01fSFdORFRPSU5ERVguCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsCgkgIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYzoKCUphbWVzIEhhd2tpbnMgPHRydWlrZW5AZ21haWwuY29tPgoJQWRkZWQgc29tZSBtb3JlIEFQSSBkb2NzLgoKCSogZGxscy9tc2kvY29uZC55OiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUHJvcGVybHkgaGFuZGxlIHF1b3RlZCBudW1iZXIgbGl0ZXJhbHMgaW4gTVNJIGNvbmRpdGlvbiBzdGF0ZW1lbnRzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0dWJzIGZvciBzb21lIG5ldyBwcm9wZXJ0eSBzaGVldCBtZXNzYWdlcy4KCgkqIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGFjY2VsZXJhdG9ycy4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIFdpbmRvd3MgYWx3YXlzIHN0cmlwcyB0aGUgaGlnaCBiaXQgKDB4ODApIG9mIHRoZSBmVmlydCBtZW1iZXIgaW4gdGhlCgkgIGFjY2VsZXJhdG9yIHN0cnVjdHVyZS4KCS0gSWYgdGhlIEZWSVJUS0VZIGJpdCBvZiBmVmlydCBpcyBzZXQsIHRoZSB2YWx1ZSBvZiB0aGUga2V5IGZpZWxkIGlzCgkgIGxpbWl0ZWQgdG8gdGhlIHJhbmdlIG9mIG9uZSBieXRlLgoJLSBSZW1vdmUgYW5ub3lpbmcgZml4bWVzIGFib3V0IGFjY2VsZXJhdG9yIHRhYmxlIGNoZWNraW5nLiAgV2luZG93cwoJICBhcHBlYXJzIHRvIGRvIG5vIG1vcmUgY2hlY2tpbmcgdGhhbiB0aGUgYWJvdmUuCgoJKiBkbGxzL21zcmxlMzIvbXNybGVfSmEucmMsIGRsbHMvbXNybGUzMi9yc3JjLnJjLCBkbGxzL3dpbmluZXQvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfSmEucmMsIHByb2dyYW1zL3JlZ2VkaXQvSmEucmMsCgkgIHByb2dyYW1zL3djbWQvSmEucmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjOgoJSGFqaW1lIFNlZ2F3YSA8d2luZXRpcHNAc2lkZW5ldC5kZG8uanA+CglBZGRlZCBKYXBhbmVzZSB0cmFuc2xhdGlvbiBmb3IgbXNybGUzMiwgd2luaW5ldCwgd2NtZC4KCUZpeGVkIHVudHJhbnNsYXRlZCBtZXNzYWdlcyBvZiByZWdlZGl0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Gci5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Vay5yYywKCSAgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCVVwZGF0ZWQgdGhlIFNwYW5pc2ggc2hlbGwzMiB0cmFuc2xhdGlvbiBhbmQgbWFkZSBzb21lIGNvcnJlY3Rpb25zIHRvCglvdGhlciBsYW5ndWFnZSBmaWxlcy4KCgkqIGluY2x1ZGUvcHJzaHQuaDogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIGRlZmluaXRpb25zIGZvciB2NS44MCBtZXNzYWdlcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCBjb21tYW5kIGxpbmUgcGFyc2luZy4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIENvcHlBY2NlbGVyYXRvclRhYmxlIGNhbiBjYXVzZSBhIGJ1ZmZlciBvdmVyZmxvdyBiZWNhdXNlIGl0IHVzZXMgYW4KCSAgaW5jb3JyZWN0IGNvbXBhcmlzb24gYmV0d2VlbiB0aGUgbnVtYmVyIG9mIGFjY2VsZXJhdG9yIGVudHJpZXMKCSAgYXZhaWxhYmxlIGFuZCB0aGUgbnVtYmVyIG9mIGFjY2VsZXJhdG9yIGVudHJpZXMgaW4gdGhlIG91dHB1dCBidWZmZXIuCgktIE15IHRlc3RzIHNob3cgdGhhdCBDb3B5QWNjZWxlcmF0b3JUYWJsZSBhbHdheXMgc3RyaXBzIHRoZSBoaWdoIGJpdAoJICBvZiB0aGUgZlZpcnQgbWVtYmVyIG9mIHRoZSBhY2NlbCBzdHJ1Y3QuCgktIENhbGxpbmcgRGVzdHJveUFjY2VsZXJhdG9yVGFibGUgd2l0aCBhIE5VTEwgYWNjZWxlcmF0b3Igc2hvdWxkCgkgIHJldHVybiBGQUxTRS4KCgkqIGRsbHMvbXByL21wci5yYywgZGxscy9tcHIvbXByX0RlLnJjLCBkbGxzL21zYWNtL21zYWNtLnJjLAoJICBkbGxzL21zYWNtL21zYWNtX0RlLnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0RlLnJjLAoJICBkbGxzL29sZWRsZy9vbGVkbGdfRGUucmMsIGRsbHMvb2xlZGxnL3JzcmMucmMsIGRsbHMvc2VyaWFsdWkvRGUucmMsCgkgIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWlfcmMucmMsIGRsbHMvc2V0dXBhcGkvRGUucmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnJjLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaV9EZS5yYywgZGxscy93aW5pbmV0L3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0RlLnJjOgoJSGVubmluZyBHZXJoYXJkdCA8aGVubmluZy5nZXJoYXJkdEB3ZWIuZGU+CglUcmFuc2xhdGVkIHNvbWUgRW5nbGlzaCByZXNvdXJjZSBmaWxlcyBpbnRvIEdlcm1hbi4KCgkqIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgKExQRElSRUNUTVVTSUNMT0FERVI4KSBjYXN0LgoKCSogb2JqZWN0cy9yZWdpb24uYzogUm9iZXJ0IFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgZmV3IHJlZ2lvbiBkZWJ1ZyBtZXNzYWdlcy4KCgkqIGRsbHMvbXNpL21zaS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNaW5vciBzcGVsbGluZyBmaXguCgoJKiBkbGxzL3VzZXIvZXh0aWNvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdG9wIFByaXZhdGVFeHRyYWN0SWNvbnMgZnJvbSBjcmFzaGluZyBnaXZlbiBhbiBpbnZhbGlkIGljb24gaW5kZXguCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmUgbHZhbHVlIGNhc3RzIHRoYXQgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQuCgoJKiBkbGxzL21zaS90YWJsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgYSBwaWVjZSBvZiBkZWFkIGNvZGUgY2F1c2luZyBhIHdhcm5pbmcuCgoJKiBkbGxzL3NlY3VyMzIvc2VjdXIzMi5jLCBkbGxzL3NlY3VyMzIvc2VjdXIzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIEdldENvbXB1dGVyT2JqZWN0TmFtZS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2VjZXh0Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc2VjZXh0LmguCgoJKiBkbGxzL3NoZWxsMzIvY29udHJvbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBkb3VibGUgYXBwbGV0ID0gYXBwbGV0ID0gYXNzaWdubWVudC4KCVJlbW92ZWQgc2ljX2hkcGEgb25seSB1c2VkIGluIDEgQyBmaWxlIGFzIHN0YXRpYyB2YXIuCglNYWtlIFZUX1NoZWxsX0lNYWxsb2MzMiBhbmQgcmVsYXRlZCB2YXJpYWJsZXMgc3RhdGljLgoKCSogZGxscy9vbGUzMi9yZWdzdnIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJSURfSU9iamVjdFdpdGhTaXRlIGlzIGFscmVhZHkgaW4gbGlidXVpZCwgbm8gbmVlZCB0byBkZWNsYXJlIGhlcmUuCgoJKiBkbGxzL29sZTMyL2lmcy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlNYWxsb2MgdnRhYmxlcyBhcmUgc3RhdGljLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXlfZ2xvYmFsLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vdmUgZGVmaW5pdGlvbnMgb2Ygc3RhdGljIHZ0YWJsZXMgZnJvbSBoZWFkZXIgdG8gZHBsYXkuYy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBIS0VZX0RZTl9EQVRBXENvbmZpZyBNYW5hZ2VyXEVudW0gdG8gcmVnaXN0cnkuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgcmVncmVzc2lvbiBvbiAnYnQgPHRpZD4nIGNvbW1hbmQuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglCZXR0ZXIgaGFuZGxlIHRoZSBmcmFtZS1idWZmZXIgbG9ja2luZyBjYXNlLgoKCSogZGxscy9wc2FwaS90ZXN0cy9tb2R1bGUuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4IHRlc3RzIG9mIEdldE1vZHVsZUZpbGVOYW1lQSBvbiA5OC9YUC4KCgkqIGRsbHMveDExZHJ2L2RpYl9jb252ZXJ0LmMsIGRsbHMveDExZHJ2L2RpYl9zcmNfc3dhcC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCBsdmFsdWUgY2FzdHMgLyBwb3N0aW5jcmVtZW50IG1peGVzLgoKCSogZGxscy9kc291bmQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCS0gQ3JlYXRlIElEaXJlY3RTb3VuZCBhbmQgSURpcmVjdFNvdW5kOCBvYmplY3RzIHVzaW5nIHRoZQoJICBDb0NyZWF0ZUluc3RhbmNlIENPTSBmdW5jdGlvbiB0byB0ZXN0IHRoZSBDbGFzcyBGYWN0b3J5IGludGVyZmFjZXMuCgktIENyZWF0ZSBJRGlyZWN0U291bmQgYW5kIElEaXJlY3RTb3VuZDggb2JqZWN0cyB1c2luZyBDcmVhdGVEaXJlY3RTb3VuZAoJICBhbmQgQ3JlYXRlRGlyZWN0U291bmQ4IHVzaW5nIGEgTlVMTCBkZXZpY2UgR1VJRC4KCjIwMDQtMDctMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY29uZC55LCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvcGFja2FnZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaVZlcmlmeVBhY2thZ2UsIGNvc21ldGljIGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oLAoJICBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglJbXBsZW1lbnQgTWVzc2FnZUJveC1iYXNlZCBSZXN0YXJ0RGlhbG9nKCkgYW5kIFJlc3RhcnREaWFsb2dFeCgpLCB1c2UKCXN0cmluZyByZXNvdXJjZXMgZm9yIEV4aXRXaW5kb3dzRGlhbG9nKCkgdG8gYWxsb3cKCWludGVybmF0aW9uYWxpemF0aW9uLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2NvbmQueSwgZGxscy9tc2kvY3JlYXRlLmMsCgkgIGRsbHMvbXNpL2Rpc3RpbmN0LmMsIGRsbHMvbXNpL2hhbmRsZS5jLCBkbGxzL21zaS9pbnNlcnQuYywKCSAgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvbXNpcXVlcnkuYywKCSAgZGxscy9tc2kvb3JkZXIuYywgZGxscy9tc2kvcGFja2FnZS5jLCBkbGxzL21zaS9yZWNvcmQuYywKCSAgZGxscy9tc2kvc2VsZWN0LmMsIGRsbHMvbXNpL3N1bWluZm8uYywgZGxscy9tc2kvdGFibGUuYywKCSAgZGxscy9tc2kvdXBkYXRlLmMsIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVmY291bnQgYWxsIG9iamVjdHMsIGFuZCB1c2UgcG9pbnRlcnMgaW50ZXJuYWxseS4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYzogUm9iIFNoZWFybWFuIDxyb2JAY29kZXdlYXZlcnMuY29tPgoJQWRkIFRSQUNFIHRvIFJlYWRGaWxlRXguCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglXcml0ZSB0aGUgZW5jb2RlZCBHVUlEcyBmb3IgcHJvZHVjdCByZWdpc3RyYXRpb24gaW4gdGhlIEluc3RhbGxlcgoJcmVnaXN0cnkuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLAoJICBkbGxzL21zaS9tc2lxdWVyeS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFudXAgb2YgYWN0aW9ucy4KCgkqIGRsbHMvbXNpL21zaS5zcGVjLCBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9yZWNvcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYSBzdHViIGZvciBNc2lNb2RpZnlWaWV3LCBmaXggYSBjb3VwbGUgb2YgYnVncy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb3NtZXRpYyBmaXhlcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGxvZ2dpbmcuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglPdXRwdXQgWDExIHByb3RvY29sIGVycm9ycyBiZWZvcmUgYnJlYWtpbmcgaW50byBkZWJ1Z2dlci4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQmV0dGVyIGVycm9yIGNoZWNraW5nIGFuZCByZWNvdmVyeS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBjYXNlIGZvciBzY3JvbGwgQVBJcywgZml4IGEgZmV3IGJ1Z3Mgc3BvdHRlZCBieSBpdC4KCjIwMDQtMDctMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9ub3RlcGFkL21haW4uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBXU19IU0NST0xMIHN0eWxlIHRvIHRoZSBub3RlcGFkJ3MgZWRpdCBjb250cm9sLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9nZGlvYmouYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVNldmVyYWwgR0RJIG9iamVjdCBoYW5kbGluZyBmdW5jdGlvbnMgYXJlIGRlZmluZWQgdG8gdGFrZSBhIEhHRElPQkoKCWluc3RlYWQgb2YgYSBIQU5ETEUuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCS0gU2V0dGluZyB0aGUgc2Nyb2xsIHJhbmdlIHdpdGggdGhlICJiUmVkcmF3IiBmbGFnIHNldCB0byB0cnVlIG9uIGEKCSAgbm9uLWNvbnRyb2wgc2Nyb2xsYmFyIHJlc3VsdGVkIGluIHRoZSBzY3JvbGxiYXIgYmVpbmcgZHJhd24gb3ZlciB0aGUKCSAgd2hvbGUgd2luZG93IGFyZWEuCgktIElmIHlvdSBkb24ndCBzZXQgV1NfSFNDUk9MTC9XU19WU0NST0xMIG9uIHdpbmRvdyBjcmVhdGlvbiwgc2V0dGluZyBhIHNjcm9sbAoJICByYW5nZSBkb2VzIG5vdGhpbmcuIFNldHRpbmcgdGhlIHNjcm9sbCByYW5nZSB0byBhIG5vbi16ZXJvIHJhbmdlIHNob3VsZCBjYXVzZQoJICBzY3JvbGwgYmFycyB0byBiZSBkaXNwbGF5ZWQuIFNldHRpbmcgdGhlIHJhbmdlIHRvIGEgemVybyByYW5nZQoJICBzaG91bGQgY2F1c2UgdGhlIHJlbGV2YW50IHNjcm9sbCBiYXIgdG8gYmUgaGlkZGVuLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHRoZSBzZWxlY3Rpb24gb3duZXIgZG9lc24ndCB1bmRlcnN0YW5kIFRBUkdFVFMsIHRyeSByZXRyaWV2aW5nCglYQV9TVFJJTkcuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgY2FzZSB3aGVuIGRhdGEgdHlwZSBpcyBub3QgcmVnaXN0ZXJlZC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvY2hpbGR3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBIS0VZX0RZTl9EQVRBIHN1cHBvcnQuCgoyMDA0LTA3LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGhyZWFkLmM6CglSb2dlciBPbHNvbiA8dTYwQGNvbWNhc3QubmV0PgoJQWRkZWQgc3R1YiBmb3IgQ3JlYXRlUmVtb3RlVGhyZWFkKCkuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTnVtYmVyIG9mIGFyZ3VtZW50cyB0byBJRGlyZWN0U291bmRCdWZmZXI4X0dldE9iamVjdEluUGF0aCB3YXMgd3JvbmcuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGluY2x1ZGUvd2lubnQuaDoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglBZGQgbWlzc2luZyBwcml2aWxlZ2UgbmFtZXMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWxpemUgYWxzbyBBQ1AsIE9FTUNQIGFuZCBNQUNDUCBpbiByZWdpc3RyeSBvbiBsb2NhbGUgY2hhbmdlLgoKCSogZGxscy9udGRsbC9kaXJlY3RvcnkuYzogRW1tYW51ZWwgTWFpbGxhcmQgPGUucnN6QGxpYmVydHlzdXJmLmZyPgoJQWRkZWQgRGFyd2luIHN1cHBvcnQgaW4gZ2V0X2RlZmF1bHRfZHJpdmVfZGV2aWNlLgoKMjAwNC0wNy0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBGaXhlZCBYMTFEUlZfR2V0REMgZm9yIHRoZSBkZXNrdG9wIHdpbmRvdy4KCVVzZSB0aGUgY2xpZW50IHdpbmRvdyBhcyBkcmF3YWJsZSB3aGVuIHBvc3NpYmxlLgoKCSogc2VydmVyL3dpbmRvdy5jOgoJZ2V0X3Zpc2libGVfcmVnaW9uOiBkbyBub3QgY2xpcCBvdXQgc2libGluZ3Mgb2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMva2VybmVsL3Z4ZC5jOgoJTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJQ29ycmVjdCBlcnJvciBjb2RlIHJldHVybmVkIGJ5IENyZWF0ZUZpbGUgd2hlbiBnaXZlbiBhIG5vbi1leGlzdGVudAoJVnhEIG9uIE5ULCBhZGQgYSB0ZXN0IGNhc2UuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVmY291bnRpbmcgZml4ZXMuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgZXhwbGFuYXRpb25zIHRvIGNvbXBvYmouYywgaW1wbGVtZW50IGZsdXNoaW5nIG1lc3NhZ2UgcXVldWUKCW9uIHNodXRkb3duLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgYSB0b29sdGlwIG9uIGRlbWFuZCBpbiB0aGUgTGlzdHZpZXcuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWw6CglSaWNoYXJkIFN0b25laG91c2UgPHJpY2hhcmRAcnN0b25laG91c2UuY28udWs+CglVcGRhdGVkIGZvciB0aGUgbmV3ICdkb3NkZXZpY2VzJyBkaXJlY3Rvcnkgc3lzdGVtLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLCBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglTdXBwcmVzcyBzb21lIG1vcmUgZXJyb3IgbWVzc2FnZSBib3hlcy4KCVRydW5jYXRlIHJlcG9ydCBmaWxlIGlmIHRvbyBiaWcuCgoJKiBkbGxzL21hcGkzMi90ZXN0cy9wcm9wLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUF2b2lkIHNlZ2ZhdWx0cyBvbiB1bmluaXRpYWxpemVkIGRhdGEuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXggYSB0eXBvIGluIHRoZSBUYWJDdHJsX1NldEl0ZW0gbWFjcm8uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdGwvLmN2c2lnbm9yZSwKCSAgZGxscy9hdGwvTWFrZWZpbGUuaW4sIGRsbHMvYXRsL2F0bC5zcGVjLCBkbGxzL2F0bC9hdGxfbWFpbi5jLAoJICBkbGxzL2F0bC9hdGxiYXNlLmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRmlyc3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFkdmFuY2VkIFRlbXBsYXRlIExpYnJhcnksIHdpdGgganVzdCBhIGZldwoJZnVuY3Rpb25zIGltcGxlbWVudGVkLgoKCSogZGxscy9udGRsbC9udC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVwb3J0IE5PVF9JTVBMRU1FTlRFRCBmb3Igbm90IGltcGxlbWVudGVkIHRva2VuIGNsYXNzZXMuCgoJKiBzZXJ2ZXIvZmlsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUcmFuc2xhdGUgRU5PREVWIGFuZCBFTlhJTyBlcnJvciBjb2RlcyB0byBOVCBzdGF0dXMgY29kZXMuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nICoqTFBMUCB0eXBlZGVmcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglDaGVjayBmb3IgLWxyZXNvbHYgZm9yIERhcndpbi4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbWxhbmcuaCwgaW5jbHVkZS9tbGFuZy5pZGw6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgTXVsdGkgTGFuZ3VhZ2Ugc3VwcG9ydCBJREwgYW5kIGhlYWRlcnMuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jLCBpbmNsdWRlL2Rzb3VuZC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBJRGlyZWN0U291bmRCdWZmZXI4X0luaXRpYWxpemUgZnVuY3Rpb24gcHJvdG90eXBlIGFuZCB1c2UuCgoJKiB0b29scy93cmMvbmV3c3RydWMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZW5lcmljIFNLSVBfVEFHIHRvIHNraXAgYSBudW1iZXIgb2YgYnl0ZXMsIHVzZSBpdCB3aGVyZSBhcHBsaWNhYmxlLgoKCSogd2luZG93cy93aW5wcm9jLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZSBsdmFsdWUgY2FzdHMgb2YgcG9zdCBpbmNyZW1lbnRzIGZvciBuZXdlciBjb21waWxlci4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDcmVhdGUgRGlyZWN0U291bmQgb3IgRGlyZWN0U291bmQ4IGRlcGVuZGluZyBvbiByaWlkLgoKCSogZGxscy9tc2kvdGFibGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgYmluYXJ5IGZpZWxkcyB3aXRoIHN0cmVhbSBuYW1lcyBsb25nZXIgdGhhbiB0YWJsZSBuYW1lcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jLCBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgQ3JlYXRlU2hvcnRjdXQgYW5kIFB1Ymxpc2hQcm9kdWN0LgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2NyZWF0ZS5jLCBkbGxzL21zaS9kaXN0aW5jdC5jLAoJICBkbGxzL21zaS9pbnNlcnQuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jLAoJICBkbGxzL21zaS9vcmRlci5jLCBkbGxzL21zaS9zZWxlY3QuYywgZGxscy9tc2kvdGFibGUuYywKCSAgZGxscy9tc2kvdXBkYXRlLmMsIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGZXRjaCBiaW5hcnkgc3RyZWFtcyBhdCB0aGUgdGFibGUgbGV2ZWwuCgoJKiBkbGxzL21zaS9wYWNrYWdlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNc2lHZXRQcm9wZXJ0eSBzaG91bGQgcmV0dXJuIGVtcHR5IHN0cmluZ3Mgb24gZXJyb3IuCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHJlZ2lzdGVyaW5nIENsYXNzZXMgYW5kIFByb2dJRC4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgUmVnaXN0ZXJUeXBlTGlicmFyaWVzLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2NvbmQueSwgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgUHJvY2Vzc0NvbXBvbmVudHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVNlbmQgcHJvZ3Jlc3MgYW5kIGFjdGlvbiBtZXNzYWdlcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgQURETE9DQUwgdG8gb3ZlcnJpZGUgSU5TVEFMTExFVkVMLCBpbXBsZW1lbnQgTGF1bmNoQ29uZGl0aW9ucy4KCgkqIGxvYWRlci9wcmVsb2FkZXIuYzogQXZvaWQgdXNpbmcgc3RybGVuLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvaGVhZGVycy5jOiBBZGRlZCB0ZXN0cyBmb3IgZGl2X3QgYW5kIGxkaXZfdC4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5oOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglEZWZpbmUgTVNWQ1JUX2Rpdl90IGFuZCBNU1ZDUlRfbGRpdl90LgoKCSogaW5jbHVkZS9hY2xhcGkuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRydXN0ZWUgZnVuY3Rpb25zLgoKCSogZGxscy9kc291bmQvZHNvdW5kLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUdldCBjZXJ0aWZpY2F0aW9uIGZvciBWZXJpZnlDZXJ0aWZpY2F0aW9uIGZyb20gZHJpdmVyIHRvIG1hdGNoCglHZXRDYXBzLgoJQ2hhbmdlIE9TUyBkcml2ZXIgdG8gcmVwb3J0IGNlcnRpZmllZC4KCUNoYW5nZSBPU1MgZHJpdmVyIHRvIHNob3cgbWVzc2FnZSBuYW1lIHJhdGhlciB0aGFuIG51bWJlciBpbiB0cmFjZXMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNPUFlfQ09MT1JLRVlfRlg6IERvIG5vdCB1c2UgbHZhbHVlIGNhc3RzLgoKCSogZGxscy9tc2kvYWN0aW9uLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXggYnVncyBpbiByZXNvbHZlX2ZvbGRlci4KCjIwMDQtMDctMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFjdGl2YXRlIGZlYXR1cmVzIGFuZCBjb21wb25lbnRzIGJhc2VkIG9uIHRoZWlyIHZhcmlvdXMgY29uZGl0aW9ucy4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY29uZC55LAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCZWdpbm5pbmdzIG9mIGNvc3RpbmcgYW5kIG9yZ2FuaXppbmcgaW50byBjb21wb25lbnRzIGFuZCBmZWF0dXJlcy4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IGNvbW1hbmQgbGluZSBwcm9jZXNzaW5nIGFuZCBmb2xkZXIgcGF0aHMuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IE1zaUdldFRhcmdldFBhdGgsIE1zaUdldFNvdXJjZVBhdGggYW5kIE1zaVNldFRhcmdldFBhdGguCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgbmV3bHkgaW1wbGVtZW50ZWQgVVBEQVRFIGNvZGUgdG8gc2V0IHByb3BlcnRpZXMuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvcXVlcnkuaCwgZGxscy9tc2kvc3FsLnksCgkgIGRsbHMvbXNpL3VwZGF0ZS5jLCBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHRoZSBVUERBVEUgcXVlcnkuCgoJKiBkbGxzL21zaS9xdWVyeS5oLCBkbGxzL21zaS9zcWwueSwgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSB0aGUgV0hFUkUgcGFydCBvZiBhIHF1ZXJ5IGluIG9uZSBmdW5jdGlvbiBjYWxsLgoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9wYWNrYWdlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFNldFRhcmdldFBhdGgsIHN0YXJ0IHRoZSBiYXNpY3MgZm9yIHRyYWNraW5nIFVJIGxldmVsLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmMsIHByb2dyYW1zL3dpbmVkYmcvc3ltYm9sLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGVuaGFuY2VkICdpbmZvIHNoYXJlJyBvdXRwdXQKCS0gbWFkZSB1c2Ugb2YgbmV3IGRiZ2hlbHAgcHVyZSBFTEYgc3ltYm9sIGxvb2t1cAoKCSogZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL3BhY2thZ2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvc21ldGljIGZpeGVzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQnVpbGQgaHR0cCByZXF1ZXN0cyBpbiBhIG1vcmUgY29uc2lzdGVudCB3YXkuCglGaXggdGhlIHNpemUgb2YgdGhlIHJlcXVlc3QgYnVmZmVyLgoJRG9uJ3QgdHJ5IGNvbnZlcnRpbmcgdGhlIG9wdGlvbmFsIGluZm9ybWF0aW9uIGZyb20gVyB0byBBLgoKCSogZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jOiBGaXhlZCBhIHdhcm5pbmcuCgoJKiBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvZHNvdW5kLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgaW5jbHVkZS9kc291bmQuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTZXBhcmF0ZWQgRGlyZWN0U291bmRDcmVhdGU4IGludG8gdHdvIGZ1bmN0aW9ucyBhbmQgYWRkZWQgYQoJSURpcmVjdFNvdW5kIGltcGxlbWVudGF0aW9uLgoJQWRkZWQgcHJvcGVyIENPTSBiZWhhdmlvciBmb3IgUXVlcnlJbnRlcmZhY2UgZm9yIElEaXJlY3RTb3VuZCBhbmQKCUlEaXJlY3RTb3VuZDguCglGaXhlZCBhIGJ1ZyBpbiB0aGUgZHNvdW5kLmggaGVhZGVyIGZpbGUgZm9yIElEaXJlY3RTb3VuZDgKCUNyZWF0ZVNvdW5kQnVmZmVyIGFuZCBEdXBsaWNhdGVTb3VuZEJ1ZmZlci4KCUFkZGVkIG5ldyB0ZXN0cyBmb3IgcHJvcGVyIENPTSBiZWhhdmlvciBhbmQgZW5hYmxlcyBzb21lIGNvbW1lbnRlZCBvdXQKCWNvZGUgZm9yIHRlc3RzIHRoYXQgd29yayBvbiB3aW5kb3dzLiAgQWRkZWQgbmV3IHRlc3RzIGZvcgoJSURpcmVjdFNvdW5kOC4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzdHJpbmcgY29udmVyc2lvbiBidWdzLgoKCSogZGxscy9zaGVsbDMyL2F1dG9jb21wbGV0ZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBidWZmZXIgb3ZlcnJ1biBpbiBhdXRvY29tcGxldGUuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5jLCBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsCgkgIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9tb2R1bGUuYywKCSAgZGxscy9kYmdoZWxwL3N0YWJzLmMsIGRsbHMvZGJnaGVscC9zeW1ib2wuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBhZGRlZCBzdXBwb3J0IGZvciBHQ0Mgc3RhdGljIGxvY2FsIHZhcmlhYmxlcwoJLSBmaXhlZCBzb21lIGJ1Z3MgaW4gU1lNT1BUX05PX1BVQkxJQ1MgYW5kIFNZTU9QVF9QVUJMSUNTX09OTFkKCSAgaGFuZGxpbmcKCS0gaW4gc3RhYnMgcGFyc2luZywganVzdCBkcm9wIGFueSBkZWJ1ZyBpbmZvIGZvciBhIG1vZHVsZSBpZiBzdGFicwoJICBwYXJzaW5nIGZhaWxzIChpbnN0ZWFkIG9mIGFzc2VydCgpJ2luZykKCS0gc3ltYm9sIGxvb2t1cCBub3cgYWxsb3dzIGxvb2t1cCBpbiBwdXJlIEVMRiBtb2R1bGVzCgktIGZpeGVkIHNvbWUgYnVncyBpbiBzeW1ib2wgZW51bWVyYXRpb24KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgdmFyaWFudCBjb2RlIHRvIGl0cyBvd24gZGVidWcgY2hhbm5lbC4KCgkqIGRsbHMvbXByL21wci5yYywgZGxscy9tcHIvbXByX0VzLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCUFkZGVkIFNwYW5pc2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogVml0YWx5IExpcGF0b3YgPGxhdkBhbHRsaW51eC5ydT4KCVJldHVybiBwcm9wZXIgY29kZXBhZ2UgdmFsdWUgaW4gR2V0Q1BJbmZvRXguCgoJKiBkbGxzL21zaS9hY3Rpb24uYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0YXJ0IGltcGxlbWVudGluZyBGZWF0dXJlIGFuZCBDb21wb25lbnQgbGV2ZWwgaW5zdGFsbCBjb250cm9sLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG9jYXRlIHRoZSBjb3JyZWN0IHNpemUgc3RyaW5nIGluIEludGVybmV0Q3JhY2tVcmwuCgoJKiBkbGxzL3NobHdhcGkvYXNzb2MuYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvdXJsLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggbWVtb3J5IGFsbG9jYXRpb24gcHJvYmxlbXMuCgoyMDA0LTA2LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvcmVjb3JkLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCByZXRyaWV2YWwgb2YgbnVsIHJlY29yZHMgYXMgc3RyaW5ncy4KCgkqIGRsbHMvbXNpL2luc2VydC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIElOU0VSVCBxdWVyeSB3aGVuIGluc2VydGluZyBpbnRlZ2VycyBpbnRvIGEgdGFibGUuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvYWN0aW9uLmMsIGRsbHMvbXNpL2NvbmQueSwKCSAgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcGFja2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0YXJ0IGltcGxlbWVudGluZyBNc2lPcGVuUGFja2FnZS4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9yZWNvcmQuYywgZGxscy9tc2kvc3RyaW5nLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTZXQgdGhlIHN0b3JhZ2UgZmlsZSdzIEdVSUQgc28gbmF0aXZlIE1TSSByZWNvZ25pemVzIGl0LgoJRml4IGNyYXNoIHdoZW4gaW5zZXJ0aW5nIG11bHRpcGxlIGNvbHVtbnMgdGhhdCBhcmUgaW52YWxpZC4KCgkqIGRsbHMvbXNpL2NyZWF0ZS5jLCBkbGxzL21zaS9zcWwueToKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhY2sgZmllbGQgdHlwZXMsIGZpeCByZWYgY291bnRpbmcuCgoJKiBkbGxzL21zaS9yZWNvcmQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGJ1ZmZlciBvdmVyZmxvdy4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvc3FsLnksIGRsbHMvbXNpL3N0cmluZy5jLAoJICBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBVUERBVEUgcXVlcnkuCgoJKiBkbGxzL21zaS9jcmVhdGUuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBmaWVsZCBudW1iZXJpbmcgc28gdGhlIENSRUFURSBxdWVyeSB3b3JrcyBmb3IgbXVsdGlwbGUgY29sdW1ucy4KCgkqIGRsbHMvbXNpL2luc2VydC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBJTlNFUlQgcXVlcnkuCgoJKiBkbGxzL21zaS9pbnNlcnQuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9xdWVyeS5oLAoJICBkbGxzL21zaS9yZWNvcmQuYywgZGxscy9tc2kvc2VsZWN0LmMsIGRsbHMvbXNpL3NxbC55LAoJICBkbGxzL21zaS9zdHJpbmcuYywgZGxscy9tc2kvdGFibGUuYywgZGxscy9tc2kvdG9rZW5pemUuYywKCSAgZGxscy9tc2kvd2hlcmUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIFNRTCBpbnNlcnQgcXVlcnkgd29yay4KCgkqIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwuYywgZGxscy9pbW0zMi9pbW0uYywgZGxscy9tcHIvd25ldC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSGVhcEFsbG9jIGZvciBXU1RSIG11c3QgYWxsb2NhdGUgbGVuKiBzaXplb2YoV0NIQVJTKS4KCgkqIGRsbHMvbXNpL2FjdGlvbi5jOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglGaXhlZCBFeHRyYWN0IHByb3RvdHlwZS4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtb3JlIE1ESSBtZXNzYWdlIHRlc3RzLgoKCSogd2luZG93cy9tZGkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBkbyBTZXRXaW5kb3dQb3MoU1dQX0ZSQU1FQ0hBTkdFRCkgaW4gdGhlCglEZWZGcmFtZVByb2MoV01fU0VUVEVYVCkgaGFuZGxlciwgRGVmV2luZG93UHJvYyBhbHJlYWR5IHRha2VzIGNhcmUgb2YKCWl0LgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1VrLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBjb250cm9sIGNvb3JkaW5hdGVzIGluIEdlcm1hbiBhbmQgRnJlbmNoIHZlcnNpb25zIG9mIG9wZW4gZmlsZQoJZGlhbG9nLgoJUmVtb3ZlIGR1cGxpY2F0ZSBjb250cm9sIGlkcyBpbiBDYXRhbGFuLCBSdXNzaWFuIGFuZCBVa3JhaW5pYW4KCWRpYWxvZ3MuCgoJKiBkbGxzL29kYmMzMi9wcm94eW9kYmMuYzogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJU2V0IFJUTERfR0xPQkFMIHdoZW4gbG9hZGluZyB0aGUgb2RiYyBkcml2ZXIgbWFuYWdlciBzbyB0aGF0IHdoZW4gaXQKCWxvYWRzICBpdHMgb3duIGRyaXZlciB0aGF0IGRyaXZlciBjYW4gY2FsbCBiYWNrIGludG8gdGhlIG1hbmFnZXIgKGFzCgl0aGUgT3JhY2xlIEJldGEgZHJpdmVyIGRvZXMsIGZvciBleGFtcGxlKS4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIGFuIGVycm9yIGluIENvTWFyc2hhbEludGVyZmFjZSBpZiB0aGUgSVVua25vd24gcG9pbnRlciBpcyBOVUxMCglhbmQgZG9uJ3QgY3Jhc2guCgoJKiBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJRml4IElGaWxlU3lzdGVtQmluZERhdGEgbWV0aG9kIG9yZGVyLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS93aW5lbW0uaCwKCSAgZGxscy93aW5tbS93aW5tbS5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUxvb2t1cCBkcml2ZXIgaW5mb3JtYXRpb24gaW4gcmVnaXN0cnkgYW5kIHN5c3RlbS5pbmkuCglNYWtlIHRoZSBjb2RlIGluc3BlY3QgdGhlIHJlZ2lzdHJ5L3N5c3RlbS5pbmkgYXQgY2FsbCB0aW1lLCByYXRoZXIKCXRoZW4gaW5pdGlhbGl6YXRpb24gdGltZS4KCUNvZGUgY2xlYW51cHMuCgoJKiBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL2ludGVybmFsLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTG9vayB1cCBkcml2ZXIgaW5mbyBpbiB0aGUgcmVnaXN0cnkgYXMgd2VsbCBhcyBpbiBzeXN0ZW0uaW5pLgoKCSogd2luZG93cy9kcml2ZXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNtYWxsIGRvY3VtZW50YXRpb24gY2xlYW51cC4KCjIwMDQtMDYtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUxvb2sgdXAgZHJpdmVyIGluZm8gaW4gdGhlIHJlZ2lzdHJ5IGFzIHdlbGwgYXMgaW4gc3lzdGVtLmluaS4KCUNsZWFudXAgaGFuZGxpbmcgb2YgZHJpdmVyIGVudW1lcmF0aW9uIGFuZCBmb3VyQ0MuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpLnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaUdldFNvdXJjZVBhdGguCglJbXBsZW1lbnQgQmluYXJ5IGFuZCBEd29yZCBkYXRhIHR5cGUgZm9yIHJlZ2lzdHJ5IHdyaXRpbmcuCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBjdXN0b20gYWN0aW9ucyB0eXBlIDEgYW5kIDIuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRHVtcCBkYXRhYmFzZSB0YWJsZSBuYW1lcyBvbiBzdGFydHVwLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlZ2lvbi5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJQWRkZWQgc3VwcG9ydCBmb3Igd2luZG93IHJlZ2lvbnMgaW4gdGhlIHNlcnZlci4KCgkqIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL3JlY29yZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHJlZmNvdW50aW5nIG9mIHN0cmVhbXMuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBJZ25vcmUgZW1wdHkgcmVjdGFuZ2xlcyBpbiBFeHRDcmVhdGVSZWdpb24uCgoJKiBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY29uZC55LCBkbGxzL21zaS9tc2kuc3BlYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBNc2lHZXRUYXJnZXRQYXRoQS9XLgoKCSogZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9yZWNvcmQuYywKCSAgZGxscy9tc2kvdGFibGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IHJlYWRpbmcgcmVjb3JkcyBjb250YWluaW5nIHN0cmVhbXMuCgoyMDA0LTA2LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2kvY29uZC55OiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0aGUgd2F5IHRoZSBwYXJzZXIgdGFrZXMgaW5wdXQgc3RyaW5ncy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJVXNlIFgxMURSVl9HZXRSZWdpb25EYXRhIHRvIGltcGxlbWVudCBYMTFEUlZfU2V0V2luZG93UmduIGluc3RlYWQgb2YKCWR1cGxpY2F0aW5nIHRoYXQgZnVuY3Rpb25hbGl0eS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCVNldCB0aGUgcGFsZXR0ZSBmb3IgaW1hZ2UgbGlzdCBESUJzIHRoYXQgaGFzIDggb3IgbGVzcyBiaXRzIHBlcgoJcGl4ZWwuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglTdGFydCBvZiBiYWxsb29uIHRpcCBzdXBwb3J0LgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOiBIYW5udSBWYWx0b25lbiA8SGFubnUuVmFsdG9uZW5AaHV0LmZpPgoJRG9uJ3QgZGlzcGxheSB0aGUgY29tbWFuZGxpbmUgdGV4dCAoQSB0cmFjZSBzdGlsbCBnaXZlcyBpdCkuCglTZXQgYSBmZXcgZm9udHMgdG8gYXZvaWQgdXNpbmcgdGhlIGhvcnJpYmxlIHN5c3RlbSBmb250IG9uIG5hdGl2ZQoJV2luZG93cy4KCgkqIGRsbHMvdmVyc2lvbi90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIHRlc3RzIG9mIEdldEZpbGVWZXJzaW9uSW5mb1NpemVBIGZvciB3aW45OCAvIFhQLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglNYWtlIHR5cGVsaWIgbWFyc2hhbGxlciBzYWZlIGZvciBzeXN0ZW1zIHRoYXQgZG9uJ3QgYWxsb3cgZXhlY3V0YWJsZQoJY29kZSBvbiB0aGUgaGVhcCwgcGx1ZyBhIGxlYWsgb2YgdGhlIGFzc2VtYmx5IHN0dWIgYmxvY2suCgoJKiBwcm9ncmFtcy9jbG9jay9Fcy5yYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRXMucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJQWRkZWQgc29tZSBTcGFuaXNoIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9KYS5yYywgZGxscy9hdmlmaWwzMi9yc3JjLnJjLCBkbGxzL21wci9tcHIucmMsCgkgIGRsbHMvbXByL21wcl9KYS5yYywgZGxscy9tc2FjbS9tc2FjbS5yYywgZGxscy9tc2FjbS9tc2FjbV9KYS5yYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnX0phLnJjLCBkbGxzL29sZWRsZy9yc3JjLnJjLCBkbGxzL3NlcmlhbHVpL0phLnJjLAoJICBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjLCBkbGxzL3NldHVwYXBpL0phLnJjLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5yYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGlfSmEucmMsIGRsbHMvd2luZXBzL3JzcmMucmMsCgkgIGRsbHMvd2luZXBzL3dwc19KYS5yYywgZGxscy93aW5tbS93aW5tbV9KYS5yYywKCSAgZGxscy93aW5tbS93aW5tbV9yZXMucmMsIHByb2dyYW1zL25vdGVwYWQvSmEucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYywgcHJvZ3JhbXMvcmVnZWRpdC9KYS5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjOgoJSGFqaW1lIFNlZ2F3YSA8d2luZXRpcHNAc2lkZW5ldC5kZG8uanA+CglBZGRlZCBzb21lIEphcGFuZXNlIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9hY3Rpb24uYywgZGxscy9tc2kvY29uZC55LAoJICBkbGxzL21zaS9oYW5kbGUuYywgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLAoJICBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3NxbC55LCBkbGxzL21zaS90YWJsZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0YXJ0IGltcGxlbWVudGluZyBhY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgaW5jbHVkZS9zaGxvYmouaDoKCUdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglNYXRjaCBwcm90b3R5cGVzIHRvIFBsYXRmb3JtIFNESy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglEdW1wIGZ1bmN0aW9uIHJldHVybiB0eXBlIGluIHR5cGVsaWIgdHJhY2VzLCBhZGQgdHJhY2Ugc3VwcG9ydCBmb3IKCVZUX0hSRVNVTFQuCgoJKiBkbGxzL29sZWF1dDMyL29haWRsX3AuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIFJFRklJRCB0byBJSUQqIGZvciBzdGFjayBkZWNsYXJhdGlvbnMgdG8gYXZvaWQgaW5pdGlhbGl6ZXJzCgliZWluZyBkaXNjYXJkZWQuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglTa2lwIHRlc3RzIG9mIEdldEFjY2VwdExhbmd1YWdlc0EgaWYgYSBjb3JyZWN0IGNhbGwgdG8gdGhlIGZ1bmN0aW9uCglkb2VzIG5vdCByZXR1cm4gYW55dGhpbmcgdXNlZnVsLgoKCSogZGxscy9wc2FwaS90ZXN0cy9tb2R1bGUuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJU2tpcCB0ZXN0cyB3aXRob3V0IGVycm9yIGlmIHBzYXBpLmRsbCBjb3VsZCBub3QgYmUgbG9hZGVkLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNoYW5nZSBkZXNrdG9wIHNpemUgZm9yIF9JTlM1NTc2Ll9NUC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBDbGVhbiB1cCB0aGUgbWFzayBkcmF3aW5nIGNvZGUuCgktIEltcHJvdmUgYml0bWFwIG5vdCBmb3VuZCBtZXNzYWdlLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHRoZSBmdW5jdGlvbiBuYW1lcyBpbiBzb21lIG9mIHRoZSBjb21tZW50cy4KCgkqIGxvYWRlci9wcmVsb2FkZXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIEFUX1NZU0lORk9fKiBpZiBpdCdzIG1pc3NpbmcuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDb3JyZWN0IHN0cnVjdCB0YWcgbmFtZSBmb3IgVURBQ0NFTC4KCUFkZCBtaXNzaW5nIFRDSVRFTUhFQURFUiBhbmQgb2xkIG5hbWVzIFRDX0lURU1IRUFERVIvVENfSVRFTS4KCjIwMDQtMDYtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaS9tc2lwcml2LmgsIGRsbHMvbXNpL3N0cmluZy5jLCBkbGxzL21zaS90YWJsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUHVsbCB0aGUgY29kZXBhZ2UgZnJvbSB0aGUgc3RyaW5nIHRhYmxlLgoKCSogZGxscy9tc2kvc3FsLnksIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggY3Jhc2ggdGhhdCBvY2N1cnJlZCB3aGVuIGFuIGludmFsaWQgcXVlcnkgc3RyaW5nIHdhcyBkZWxldGVkCgl0d2ljZS4KCgkqIGxvYWRlci9wcmVsb2FkZXIuYzoKCVJlbW92ZSB0aGUgQVRfU1lTSU5GTyBhbmQgQVRfU1lTSU5GT19FSERSIHZhbHVlcyBpZiB0aGUgc3lzaW5mbyBwYWdlCglpcyBpbiBvbmUgb2Ygb3VyIHJlc2VydmVkIHJhbmdlcy4KCgkqIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcXVlcnkuaCwgZGxscy9tc2kvc3FsLnksCgkgIGRsbHMvbXNpL3N0cmluZy5jLCBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHF1ZXJpZXMgYnkgc3RyaW5nIHZhbHVlLgoKCSogaW5jbHVkZS9tc2kuaCwgaW5jbHVkZS9tc2lxdWVyeS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBoZWFkZXIgZGVjbGFyYXRpb25zIGZvciBtc2kuCgoyMDA0LTA2LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywKCSAgc2VydmVyL2NsaXBib2FyZC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHRlc3QgY2FzZSBmb3IgY2xpcGJvYXJkIGZ1bmN0aW9uYWxpdHkgYW5kIGZpeCBzb21lIGJ1Z3MgcmV2ZWFsZWQKCWJ5IGl0LgoKCSogZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZjcnQvY3BwLmMsCgkgIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLCBkbGxzL21zdmNydC9jdHlwZS5jLCBkbGxzL21zdmNydC9kYXRhLmMsCgkgIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9lbnZpcm9uLmMsIGRsbHMvbXN2Y3J0L2Vycm5vLmMsCgkgIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9leGl0LmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywKCSAgZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbWFpbi5jLAoJICBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbWlzYy5jLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywKCSAgZGxscy9tc3ZjcnQvc2NhbmYuYywgZGxscy9tc3ZjcnQvc3RyaW5nLmMsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0L3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydC90ZXN0cy9oZWFkZXJzLmMsIGRsbHMvbXN2Y3J0L3RocmVhZC5jLAoJICBkbGxzL21zdmNydC90aW1lLmMsIGRsbHMvbXN2Y3J0L3djcy5jLCBpbmNsdWRlL21zdmNydC9jb25pby5oLAoJICBpbmNsdWRlL21zdmNydC9jdHlwZS5oLCBpbmNsdWRlL21zdmNydC9kaXJlY3QuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvZG9zLmgsIGluY2x1ZGUvbXN2Y3J0L2VoLmgsIGluY2x1ZGUvbXN2Y3J0L2Vycm5vLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2ZjbnRsLmgsIGluY2x1ZGUvbXN2Y3J0L2Zsb2F0LmgsIGluY2x1ZGUvbXN2Y3J0L2lvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2xvY2FsZS5oLCBpbmNsdWRlL21zdmNydC9tYWxsb2MuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvbWF0aC5oLCBpbmNsdWRlL21zdmNydC9tYmN0eXBlLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L21ic3RyaW5nLmgsIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc2VhcmNoLmgsIGluY2x1ZGUvbXN2Y3J0L3NldGptcC5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRkZWYuaCwgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsIGluY2x1ZGUvbXN2Y3J0L3N0cmluZy5oLAoJICBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oLCBpbmNsdWRlL21zdmNydC9zeXMvdGltZWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3R5cGVzLmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy91dGltZS5oLAoJICBpbmNsdWRlL21zdmNydC90aW1lLmgsIGluY2x1ZGUvbXN2Y3J0L3djaGFyLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3djdHlwZS5oLCBpbmNsdWRlL3dpbnNvY2suaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTcGxpdCB0aGUgTVNWQ1JUIGltcGxlbWVudGF0aW9uIGhlYWRlcnMgZnJvbSB0aGUgcHVibGljIGhlYWRlcnMuCglGaXggc29tZSBuYW1pbmcgY29udmVudGlvbnMgYWJlcnJhdGlvbnMuCglBZGQgdGVzdHMgdG8gZW5zdXJlIGNvbnNpc3RlbmN5IGJldHdlZW4gdGhlIHR3byBzZXRzIG9mIHN5bWJvbHMuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDb3JyZWN0IHRhZyBuYW1lcyBmb3IgUkVDVEwgYW5kIFNDUk9MTElORk8gc3RydWN0cy4KCgkqIGRsbHMvcnNhYmFzZS9tYWluLmM6CglNaWNoYWVsIEp1bmcgPG1qdW5nQHJiZy5pbmZvcm1hdGlrLnR1LWRhcm1zdGFkdC5kZT4KCUNoYW5nZWQgdHlwZSBvZiAiU2lnbmF0dXJlIiByZWdpc3RyeSBrZXkgdmFsdWUgdG8gUkVHX0JJTkFSWS4KCjIwMDQtMDYtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9oZWFwLmM6CglJbiBHbG9iYWxNZW1vcnlTdGF0dXMsIGFsc28gY2FwIHRoZSBzdW0gb2YgZHdBdmFpbFBoeXMgYW5kCglkd0F2YWlsUGFnZUZpbGUgYXQgMkdiIHRvIGF2b2lkIGEgYnVnIGluIFBob3Rvc2hvcCA0LgoKCSogbG9hZGVyL2t0aHJlYWQuYzoKCVVzZSB3aW5lX2Rsc3ltIGluc3RlYWQgb2YgZGxzeW0gdG8gYXZvaWQgdGhlIGdsaWJjIGRsZXJyb3IgYnVnLgoJQ2FsbCBkbHN5bSB3aXRoIFJUTERfREVGQVVMVCBmb3Igc3ltYm9scyB0aGF0IHdlIGRvbid0IHJlZGVmaW5lIHRvCgl3b3JrIGFyb3VuZCBhbm90aGVyIGdsaWJjIGJ1Zy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRml4IHNtYWxsIG1pc3Rha2UgaW4gdGhlIHByZXZpb3VzIHZpc2libGUgcmVnaW9uIHBhdGNoLgoKMjAwNC0wNi0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIHByb3RvdHlwZSBmb3IgTURJIG1lc3NhZ2UgdGVzdHMuCgoJKiB3aW5kb3dzL21kaS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoYXQgYm90aCBkZWFjdGl2YXRlZCBhbmQgYWN0aXZhdGVkIE1ESSBjaGlsZHJlbiByZWNlaXZlCglXTV9NRElBQ1RJVkFURSBtZXNzYWdlIGluIGFsbCBjYXNlcy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJV01fV0lORE9XUE9TQ0hBTkdFRCBzaG91bGQgYWx3YXlzIGNvbnRhaW4gYSBmaW5hbCB3aW5kb3cgcG9zaXRpb24uCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZWdpb24uYywKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYzoKCU1vdmVkIHZpc2libGUgcmVnaW9uIGNhbGN1bGF0aW9uIHRvIHRoZSBzZXJ2ZXIuCgoJKiB3aW5kb3dzL211bHRpbW9uLmM6CglGaXhlZCB3cm9uZyBVbmljb2RlIHN0cmluZyBzeW50YXggaW4gR2V0TW9uaXRvckluZm9XLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJLSBEb24ndCBFUlIgb24gYSB1c2VkIGNvbm5lY3Rpb24gYmVpbmcgZGVzdHJveWVkLgoJLSBEb24ndCBwcmludCBhbiBleHRyYSBuZXdsaW5lIGluIHRoZSBvbGVyZWxheSBjb2RlLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sLAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglBZGQgYSAtLWNvbW1hbmQgb3B0aW9uIHRvIHdpbmVkYmcsIGFkZCBhbiAiYWxsIiBvcHRpb24gdG8gdGhlCgliYWNrdHJhY2UgY29tbWFuZC4KCjIwMDQtMDYtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCVdlIG5vIGxvbmdlciBuZWVkIHRvIG1ha2UgdGhlIGltcG9ydCBkaXJlY3Rvcnkgd3JpdGFibGUsIHRoZSBsb2FkZXIKCXRha2VzIGNhcmUgb2YgdGhhdCBub3cuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvcHJlbG9hZGVyLmM6CglEbyBkaXJlY3QgTGludXggc3lzdGVtIGNhbGxzIGluIHRoZSBwcmVsb2FkZXIgdG8gYXZvaWQgdHJvdWJsZSB3aXRoCglzb21lIGJyb2tlbiBzdGF0aWMgbGliY3MuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOiBGaWxpcCBOYXZhcmEgPG5hdmFyYWZAcmVhY3Rvcy5jb20+CglVbnByb3RlY3QgSW1wb3J0IEFkZHJlc3MgVGFibGUgd2hpbGUgZmlsbGluZyBpdC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvc3RhY2suYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXggY29tcGlsZSBlcnJvciBvbiBub24taTM4Ni4KCjIwMDQtMDYtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NldHVwYXBpL3NldHVwY2FiLmMsIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsCgkgIHByb2dyYW1zL3dpbmVsYXVuY2hlci5pbiwgd2luZG93cy9tc2dib3guYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlcGxhY2Ugc29tZSBtb3JlIC1kZWJ1Z21zZyByZWZlcmVuY2VzIGZvciBXSU5FREVCVUcuCgoJKiBkbGxzL250ZGxsL3ZlcnNpb24uYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRGVmYXVsdCB0byBXaW45OCBpbiBETEwgbGlua2FnZSBoZXVyaXN0aWNzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfQ2EucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NuLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dcy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGEucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW8ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9GaS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0h1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSmEucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0tvLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9ObC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfTm8ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1BsLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUnUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NpLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tay5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU3YucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1VrLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9XYS5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfWmgucmM6CglSb3ljZSBNaXRjaGVsbCBJSUkgPHJveWNlM0BldjEubmV0PgoJU2hlbGwzMiBydW4gZGlhbG9nIGNvbWJvYm94IHNob3VsZCBhbHNvIGhhdmUgV1NfVEFCU1RPUCBzdHlsZS4KCgkqIGRsbHMvZDNkOC91dGlscy5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglTb21lIG1vcmUgdGV4dHVyZSBvcHMgZml4ZXMuCgoyMDA0LTA2LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglPbmx5IHVubWFwIHRoZSB3aW5kb3cgd2hlbiBpdCBnZXRzIG1vdmVkIG9mZi1zY3JlZW4gYnkgdGhlIGFwcCwgbm90IGJ5Cgl0aGUgd2luZG93IG1hbmFnZXIuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJSGFyZGNvZGUgIndpbmVzaGVsbGxpbmsiIGluIHdpbmVtZW51YnVpbGRlciwgcmVtb3ZlIGl0IGZyb20gdGhlIGNvbmZpZwoJZmlsZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogS3Jpc2huYSBNdXJ0aHkgPEtyaXNobmEuTXVydGh5QGd1cHRhd29ybGR3aWRlLmNvbT4KCU1vZGlmaWVkIEVESVRfRU1fVW5kbygpOiBSZW1vdmVkIHVuZG8gYnVmZmVyIGxlbmd0aCBjaGVjayBmb3IKCWVtcHR5LiBFRElUX0VNX1JlcGxhY2VTZWwoKSBpcyBjYWxsZWQgd2l0aCBzZW5kX3VwZGF0ZSBwYXJhbWV0ZXIgc2V0Cgl0byBUUlVFLgoKCSogd2luZG93cy9tc2dib3guYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJQWRkIGEgZGVkaWNhdGVkIGRlYnVnIGNoYW5uZWwgZm9yIG1lc3NhZ2UgYm94ZXMgd2hpY2ggb3V0cHV0cyB0aGUKCWNvbnRlbnRzIG9mIHRoZSBtZXNzYWdlLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTaG93V2luZG93IHNob3VsZG4ndCBmaXggU1dQXyBmbGFncywgaXQncyB0aGUgam9iIG9mIFNldFdpbmRvd1Bvcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CgktIERldGVjdGlvbiBvZiAuc2l6ZSBpbnN0cnVjdGlvbi4KCS0gRGV0ZWN0aW9uIG9mIHRoZSBhc3NlbWJsZXIgbmFtZSBwcmVmaXguCgoJKiBkbGxzL250ZGxsL3JlbGF5LmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUZpeCBhIGNvbXBpbGUgZXJyb3IgZm9yIFNOT09QX0dldFByb2NBZGRyZXNzIGFuZCBSRUxBWV9HZXRQcm9jQWRkcmVzcwoJb24gbm9uLWkzODYuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgdGVzdHMgZm9yIGNoaWxkIGFjdGl2YXRpb24gYnkgU2hvd1dpbmRvdy9TZXRXaW5kb3dQb3MuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgYWxsb3cgY3JlYXRpb24gb2Ygbm90IGFsaWduZWQgRU1GIHJlY29yZHMgYnkgR0RJIGNvZGUuCgoJKiBjb250cm9scy9tZW51LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVc2UgYmV0dGVyIGRpbWVuc2lvbnMgZm9yIE1ESSBzeXN0ZW0gbWVudSBidXR0b25zIHRvIGF2b2lkIE1ESSBjbGllbnQKCXdpbmRvdyByZXNpemluZy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9vcmRpbmFsLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZCBsb2dnaW5nIHRvIHRoZSBHZXRBY2NlcHRMYW5ndWFnZXNBIHRlc3RzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIElNQUdFX0ZJTEVfTEFSR0VfQUREUkVTU19BV0FSRSBmbGFnLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCU1ha2Ugb2xlMzIgYSBkZWxheS1sb2FkIGltcG9ydCBvZiBzaGVsbDMyLgoKMjAwNC0wNi0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzoKCVRha2Ugc3BpbiBjb3VudCBpbnRvIGFjY291bnQgaW4gUnRsRW50ZXJDcml0aWNhbFNlY3Rpb24uCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzoKCURvbid0IHVzZSBsc2VlayB3aGVuIHRydW5jYXRpbmcgYSBmaWxlIHRvIGF2b2lkIGNvcnJ1cHRpbmcgdGhlIGN1cnJlbnQKCWZpbGUgcG9zaXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0eXBlbGliIG1hcnNoYWxsZXIgcmVsYXlpbmcsIGFkZCBhIGNvbW1lbnQgZGVzY3JpYmluZyB3aGF0IGl0IGlzLAoJZG9uJ3QgcHJpbnQgdGhlIHVnbHkgTCIiIHBhcnRzIG9mIFVuaWNvZGUgc3RyaW5ncyBpbiB0aGUgcmVsYXkgdHJhY2UuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2Rzb3VuZC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kczNkLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmRfdGVzdC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVNwbGl0IHRoZSAnZHNvdW5kJyB0ZXN0IGludG8gdHdvIHBhcnRzOgoJLSB0aGUgc291bmQgZm9ybWF0IHRlc3QuIFBsYXlzIGEgNSBzZWNvbmQgcmVmZXJlbmNlIHRvbmUgdG8gaGVscAoJICBkZWJ1ZyBpc3N1ZXMgd2l0aCB0aGUgdG9uZSBkdXJhdGlvbiBhbmQgaGVscCBkZXRlY3Qgc3R1dHRlciBpc3N1ZXMuCgkgIFByaW50cyBleHBsYW5hdGlvbnMgZGVzY3JpYmluZyB0aGUgc291bmQgZm9ybWF0IGludGVyYWN0aXZlCgkgIHRlc3QuIFRoZW4gcGxheXMgYSAxIHNlY29uZCB0ZXN0IHRvbmUgZm9yIGVhY2ggc3VwcG9ydGVkIHNvdW5kCgkgIGZvcm1hdC4KCS0gdGhlIDNEIHNvdW5kIHRlc3RzLiBQZXJmb3JtcyB0aGUgdm9sdW1lLCBwYW5uaW5nLCBtb3ZpbmcgbGlzdGVuZXIKCSAgdGVzdHMsIGV0Yy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglJbmNsdWRlIG5ldyBvciBmb3Jnb3R0ZW4gdGVzdHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wcm9maWxlLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeCB0aGUgR2V0UHJpdmF0ZVByb2ZpbGVJbnRBIHRlc3RzIGZvciB0aGUgd2luOXggcGxhdGZvcm0uCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHVzZXIvdGVzdHMvd2luLmMgdGVzdHMgcGFzcyB1bmRlciBXaW5kb3dzOTguCgoJKiBzZXJ2ZXIvcXVldWUuYzoKCVByb3Blcmx5IHJlc2V0IG1zZ190aHJlYWQgd2hlbiByZWxlYXNpbmcgdGhlIHRocmVhZCBpbnB1dCBzdHJ1Y3R1cmUuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUhpZGUgdGhlIF9pbml0IGFuZCBfZmluaSB3cmFwcGVycyBvbiBkYXJ3aW4uCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzogSXZhbiBMZW8gUHVvdGkgPHB1b3RpQGlud2luZC5pdD4KCVJlbW92ZWQgdGhlIHdpbmVkZWZhdWx0LnJlZyBtZXNzYWdlLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOgoJTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJUmVtb3ZlIHRoZSBSUEMgY29ubmVjdGlvbiBjYWNoZSBhcyBXaW5kb3dzIGRvZXMgbm90IGFsbG93IG11bHRpcGxlCgliaW5kcyBvbiB0aGUgc2FtZSBjb25uZWN0aW9uLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIHNvbWUgbWlzc2luZyBzdGF0aWMgY29udHJvbCBzdHlsZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYzoKCUFkZGVkIGEgY291cGxlIG9mIHRlc3RzIGZvciBTZXRDdXJyZW50RGlyZWN0b3J5QS4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJQ2hlY2sgZm9yIG5vbi1leGlzdGVudCBkaXJlY3RvcnkgaW4gSU5UMjFfU2V0Q3VycmVudERpcmVjdG9yeSB0bwoJcmV0dXJuIGEgcHJvcGVyIGVycm9yIHdoZW4gdGhlIGRpcmVjdG9yeSBpcyBub3Qgb24gdGhlIGN1cnJlbnQgZHJpdmUuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCB0ZXN0cyBmb3IgR2V0QWNjZXB0TGFuZ3VhZ2VzQS4KCjIwMDQtMDYtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jOiBNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglDb3JyZWN0IGNvbm5lY3Rpb24gcmVsZWFzZXMgb24gZXJyb3IgcGF0aCBpbiBSUENSVDRfT3BlbkJpbmRpbmcuCgoJKiBkbGxzL3dpbnNwb29sL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgc29tZSBsb2dnaW5nIHRvIHRoZSBHZXRQcmludGVyRHJpdmVyRGlyZWN0b3J5QSB0ZXN0cy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTG9nIHRoZSBmb3JtYXQgd2hlbiBtYXBwaW5nIHRoZSBzb3VuZCBkZXZpY2UgKG9yIGZhaWxpbmcgdG8pLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIG9iamVjdHMvZm9udC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBiaXRtYXAgZm9udHMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbjogQWRkZWQgbWlzc2luZyBkZXBlbmRlbmN5LgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJUmVtb3ZlIGluY29ycmVjdCBzdXBwb3J0IGZvciBGcmVlQlNEIGFuZCBOZXRCU0QgaW4KCURWRF9TdGFydFNlc3Npb24oKS4KCgkqIGRsbHMvcnNhYmFzZS9tYWluLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglBdm9pZCB1bnVzZWQgdmFyaWFibGUgd2FybmluZy4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBhbiBpbmNvcnJlY3QgTGVhdmVDcml0aWNhbFNlY3Rpb24uCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLAoJICBkbGxzL2tlcm5lbC90aHVuay5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIGlsbGVnYWwgbHZhbHVlIGNhc3RzIC8gaW5jcmVtZW50cy4KCjIwMDQtMDYtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6IFJlbGVhc2UgMjAwNDA2MTUuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDQtMDYtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBVVRIT1JTOiBVcGRhdGVkIGF1dGhvcnMgbGlzdC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC9SRUFETUUsIHByb2dyYW1zL3dpbmV0ZXN0L2Rpc3QucmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5jLCBwcm9ncmFtcy93aW5ldGVzdC9ndWkucmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2d1aXJlcy5oLCBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L21ha2V0ZXN0LCBwcm9ncmFtcy93aW5ldGVzdC9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmMsIHByb2dyYW1zL3dpbmV0ZXN0L3V0aWwuYywKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuaCwgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QucmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CgktIFJlc291cmNlIHNjcmlwdCByZXN0cnVjdHVyaW5nLgoJLSBCdWlsZCBpbmZvIGV0IGFsLiBpcyBnaXZlbiBieSBmaWxlcyBpbnN0ZWFkIG9mIGVudi4gdmFycy4KCS0gU3RvcmUgdGhhdCBpbmZvcm1hdGlvbiBpbiByZXNvdXJjZXMuCgktIE1ha2UgdGhlIG1haW4gd2luZG93cyBub3QgcmVzaXplYWJsZS4KCS0gSW5zaXN0IG9uIGNyZWF0aW5nIGEgZnJlc2ggbG9nIGZpbGUuCgktIEludHJvZHVjZSB0aGUgbWFrZSBkaXN0IHRhcmdldC4KCgkqIGxpYnMvd2luZS9jb25maWcuYywgbG9hZGVyL3ByZWxvYWRlci5jOgoJQWRkIHRoZSBwcmVsb2FkZXIgaXRzZWxmIGFzIGFyZ3ZbMF0gYW5kIHJlbW92ZSBpdCBhZ2FpbiBiZWZvcmUgcnVubmluZwoJdGhlIHJlYWwgbG9hZGVyLCB0aGlzIHdheSB0aGUgcHMgb3V0cHV0IG1ha2VzIG1vcmUgc2Vuc2UuCgoJKiBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywKCSAgZGxscy9tc2kvc3RyaW5nLmMsIGxvYWRlci9tYWluLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGFuZCBjYXNlIGZpeGVzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGNoZWNrIGZvciBTTkRDVExfRFNQX0dFVENBUFMgc28gdGhhdCBpdCBpcyBjb21wbGlhbnQgd2l0aCB0aGUKCU9TUyBzcGVjaWZpY2F0aW9uLgoJT25seSB0ZXN0IHRoZSBkaWZmZXJlbnQgZm9ybWF0cyBpZiB0cmFjaW5nIGlzIG9uLgoKCSogZGxscy93aW5zcG9vbC90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeCB0aGUgdGVzdHMgb2YgR2V0RGVmYXVsdFByaW50ZXJBIG9uIHdpbjJrIGlmIG5vIGRlZmF1bHQgcHJpbnRlciBpcwoJY29uZmlndXJlZC4KCgkqIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgdGhlIEFSVFNfSW5pdCgpIGVycm9yIG1lc3NhZ2UgZnJvbSBhbiBFUlIoKSB0byBhIFdBUk4oKSBzaW5jZQoJaXQgY2FuIGhhcHBlbiBpbiBwZXJmZWN0bHkgbm9ybWFsIGNvbmRpdGlvbnMuCgoJKiBpbmNsdWRlL2RwYWRkci5oLCBpbmNsdWRlL3V4dGhlbWUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgdXNlIFVuaWNvZGUgc3RyaW5nIGxpdGVyYWxzIHVubGVzcyB3ZSBzcGVjaWZpY2FsbHkga25vdyB0aGV5IGRvCgl3aGF0IHdlIHdhbnQgdG8uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9wc2FwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9wc2FwaS9wc2FwaV9tYWluLmMsIGRsbHMvcHNhcGkvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9wc2FwaS90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9wc2FwaS90ZXN0cy9tb2R1bGUuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgR2V0TW9kdWxlQmFzZU5hbWUgZnJvbSBhc2NpaSB0byB1bmljb2RlLCBhZGRlZAoJc29tZSB0ZXN0cyBmb3IgR2V0TW9kdWxlQmFzZU5hbWVBLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTSEVMTF9FeGVjdXRlVygpIHBhc3NlcyBhIFVuaWNvZGUgZW52aXJvbm1lbnQgdG8gQ3JlYXRlUHJvY2Vzc1coKSBzbwoJaXQgbXVzdCBzcGVjaWZ5IHRoZSBDUkVBVEVfVU5JQ09ERV9FTlZJUk9OTUVOVCBmbGFnLiBBbHNvIHRoZQoJU0hFTExfRXhlY3V0ZVczMigpIGZ1bmN0aW9ucyB3aWxsIGFsd2F5cyBiZSBjYWxsZWQgd2l0aCBhIFVuaWNvZGUKCWVudmlyb25tZW50IHNvIGFkanVzdCB0aGVpciBwcm90b3R5cGUgYWNjb3JkaW5nbHkuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciBjbGllbnQvbm9uY2xpZW50IHdpbmRvdyBkaW1lbnNpb25zIGNhbGN1bGF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwgZG9jdW1lbnRhdGlvbi90aHJlYWRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWw6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglBZGQgZG9jdW1lbnRhdGlvbiBvbiB0aGUgV2luZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGluY2x1ZGUvdXNlci5oLCB3aW5kb3dzL3Njcm9sbC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJU2Nyb2xsREMgc2hvdWxkIHRha2UgaW50byBhY2NvdW50IG92ZXJsYXBwZWQgd2luZG93cy4gV2l0aCB0aGlzIGNoYW5nZQoJU2Nyb2xsV2luZG93RXggY2FuIGJlIG1vdmVkIG91dCBvZiBYMTFkcnYuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHdhcm5pbmdzIGludHJvZHVjZWQgYnkgbXkgbGFzdCBwYXRjaC4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBGaXggZXJyb25lb3VzIHVzZSBvZiBMT0NBTEVfU0RBVEUgaW4gdGhlIHBsYWNlIG9mIExPQ0FMRV9TU0hPUlREQVRFLgoJLSBGaXggaW5jb3JyZWN0IGFzc3VtcHRpb25zIGFib3V0IGZvcm1hdCBzdHJpbmdzIHdoZW4gcGFyc2luZyBkYXRlCgkgIGZvcm1hdHMgYW5kIHNldHRpbmcgTE9DQUxFX0lEQVRFIGFuZCBMT0NBTEVfSUxEQVRFIHZhbHVlcy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRGUucmMsIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYzoKCU1pY2hhZWwgRnJpdHNjaGVyIDxtaWNoYWVsQGZyaXRzY2hlci5uZXQ+CglBZGRlZCBhIEdlcm1hbiB0cmFuc2xhdGlvbiBvZiBSZWdlZGl0LgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgYWxsb2NhdGUgYSBnbHlwaHNldCB1bnRpbCB3ZSBhY3R1YWxseSBuZWVkIGl0LgoKCSogZGxscy9rZXJuZWwvZmlsZS5jOgoJQWRkZWQgbWFnaWMgbnVtYmVyIGluIHRoZSBGaW5kRmlyc3RGaWxlIHN0cnVjdHVyZSB0byBhbGxvdyBtb3JlIHJvYnVzdAoJZGV0ZWN0aW9uIG9mIGJhZCBoYW5kbGVzICh3aXRoIGhlbHAgZnJvbSBBcmljIFN0ZXdhcnQpLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC90aHJlYWQuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJU3RvcmUgdGhlIG51bWJlciBvZiBwcm9jZXNzb3JzIGluIHRoZSBQRUIgc3RydWN0dXJlLgoJTW9yZSBjb3JyZWN0IHN1cHBvcnQgZm9yIHNldHRpbmcgY3JpdGljYWwgc2VjdGlvbiBzcGluIGNvdW50cyAoYmFzZWQKCW9uIGEgcGF0Y2ggYnkgUm9iZXJ0IFNoZWFybWFuKS4KCgkqIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL2xvYWRvcmRlci5jLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9yZWxheS5jLCBkbGxzL250ZGxsL3Jlc291cmNlLmMsCgkgIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsYml0bWFwLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglDb25zdCBjb3JyZWN0bmVzcy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVN1cHBvcnQgZm9yIHJlYWRpbmcgZW5jcnlwdGVkIERWRHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVzdG9yZSBkZWZhdWx0ICJvcGVuIiBmdW5jdGlvbmFsaXR5IG9mIFNoZWxsRXhlY3V0ZS4KCjIwMDQtMDYtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJUmV3cm90ZSBTZXRGaWxlUG9pbnRlciB0byB1c2UgU2V0RmlsZVBvaW50ZXJFeC4KCgkqIGRsbHMvdXNlci9kZGUvc2VydmVyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggJ3BvaW50ZXJzIGFyZSBub3QgcGVybWl0dGVkIGFzIGNhc2UgdmFsdWVzJyBjb21waWxlIGVycm9yLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gVXNlIGhvdXJnbGFzcyBjdXJzb3IgZm9yIGJldHRlciBmZWVkYmFjayB3aGVuIGV4cGFuZGluZyBub2Rlcy4KCS0gVHVybiBvZmYgcmVkcmF3aW5nIHdoZW4gZXhwYW5kaW5nIHRvIG1ha2UgaXQgZmFzdGVyLgoKCSogYWNsb2NhbC5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CgktIHN0cmlwIHN1cHBvcnQgZm9yIGRhcndpbgoJLSBXSU5FX0dFVF9TT05BTUUgc3VwcG9ydCBmb3IgZGFyd2luCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSWdub3JlIERkZUNsaWVudFRyYW5zYWN0aW9uIGVycm9yIGluIFNoZWxsRXhlY3V0ZS4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90aGluZyBpbiBTaG93V2luZG93KFNXX1NIT1cpIGlmIGEgd2luZG93IGlzIGFscmVhZHkgdmlzaWJsZS4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLnNwZWMsIGRsbHMvZGJnaGVscC9tc2MuYywgZGxscy9kYmdoZWxwL3BhdGguYywKCSAgZGxscy9kYmdoZWxwL3BlX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvdHlwZS5jLCBpbmNsdWRlL2RiZ2hlbHAuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBpbXBsZW1lbnRlZCBFbnVtRGlyVHJlZSwgU2VhcmNoVHJlZUZvckZpbGUsIFN5bUZpbmRGaWxlSW5QYXRoLAoJICBTeW1NYXRjaEZpbGVOYW1lCgktIG1hZGUgdXNlIG9mIFN5bUZpbmRGaWxlSW5QYXRoIHRvIGxvb2t1cCAuZGJnIGFuZCAucGRiIGZpbGVzCgktIGZpeGVkIGEgY3Jhc2ggaW4gQ29kZVZpZXcgZW51bSBoYW5kbGluZwoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvb2xlcHJveHkuYywKCSAgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLCBkbGxzL3JwY3J0NC9jcHJveHkuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEZpeCByZWYgY291bnQgb24gc3RhbmRhcmQgcHJveHkgY3JlYXRpb24uCgktIFJlbGVhc2UgY2hhbm5lbCBidWZmZXIgaW4gU3RkTWFyc2hhbF9Vbm1hcnNoYWxJbnRlcmZhY2UsIHNpbmNlIHdlIG5vCgkgIGxvbmdlciB1c2UgaXQgYW5kIHRoZSBwcm94eSBzaG91bGQgaGF2ZSB0YWtlbiBhIHJlZmVyZW5jZSBvbiBpdC4KCS0gQWRkIGEgZmV3IGNvbW1lbnRzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUGFzcyBwb2ludGVycyBhcm91bmQgaW50ZXJuYWxseSBpbnN0ZWFkIG9mIGhhbmRsZXMuCgoJKiBkbGxzL21zdmNydGQvZGVidWcuYywgZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzdHViIGZvciBfQ3J0Q2hlY2tNZW1vcnkuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBTZXRGaWxlUG9pbnRlckV4LgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIDMyLT4xNiBtYXBwaW5nIGZvciBTQk1fR0VUUkFOR0UvU0JNX1NFVFJBTkdFIG1lc3NhZ2VzLgoJQWRkZWQgc3VwcG9ydCBmb3IgU0JNX0dFVFJBTkdFMTYgbWVzc2FnZSBpbiB0aGUgc2Nyb2xsYmFyIHdpbmRvdwoJcHJvYy4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCB0cmFjaW5nIHRvIGFsbCBmdW5jdGlvbnMuCglBZGRlZCBlcnJvciBleHBsYW5hdGlvbnMuCglDaGFuZ2VkIGRlYnVnIGNoYW5uZWwgZnJvbSBtc2FjbSB0byB3YXZlbWFwIHNvIG5vdCBjb25mdXNlZCB3aXRoCgltc2FjbS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmVkIDExIGJpdCBzYW1wbGUgc2l6ZSBjYXB0dXJlIHRlc3QgYmVjYXVzZSBhdCBsZWFzdCAyCgltYW51ZmFjdHVyZXJzIHNvdW5kIGNhcmRzIG9uIHR3byBkaWZmZXJlbnQgT1NzIHNlZW0gdG8gc3VwcG9ydCB0aGlzLgoJQWRkZWQgc29tZSBpbnZhbGlkIHBhcmFtZXRlciBjaGVja3MgdG8gd2F2ZVtJbixPdXRdR2V0RGV2Q2Fwcy4KCU9uZSB0ZXN0IGlzIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSB3aW5lIGRvZXNuJ3QgaGFuZGxlIGl0IHByb3Blcmx5LgoJTWlub3IgaW5mbyBwcmludGluZyBjbGVhbnVwLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBxdW90aW5nICJmaWxlOi8vJTEiIGxpa2UgZm9ybWF0IHN0cmluZ3MuCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJzL3dpbmUvbG9hZGVyLmMsIGxvYWRlci9tYWluLmM6CglZZXQgYW5vdGhlciBmaXggZm9yIHRoZSBNYWNPUyBYIGVudmlyb24gYnJhaW4gZGFtYWdlLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9kb3NtZW0uYywKCSAgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL2tlcm5lbC9oZWFwLmMsIGRsbHMva2VybmVsL2luc3RyLmMsCgkgIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC9wcm9maWxlLmMsIGRsbHMva2VybmVsL3NlbGVjdG9yLmMsCgkgIGRsbHMva2VybmVsL3RocmVhZC5jLCBtaXNjL3JlZ2lzdHJ5LmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUNvbnN0IGNvcnJlY3RuZXNzLCBwb2ludGVyIGNhc3QgY29ycmVjdG5lc3MsIHJlbW92ZWQgZXh0cmFuZW91cyAnOycuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvcHJvY2Vzcy5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIEFkZGVkIFByb2Nlc3NCYXNpY0luZm9ybWF0aW9uIGNsYXNzIHRvIG50ZGxsLk50UXVlcnlJbmZvcm1hdGlvblByb2Nlc3MuCgktIE1ha2UgdXNlIG9mIGl0IGluIGtlcm5lbDMyLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJRG9uJ3QgdXNlIC5wcmV2aW91cyBpbnN0cnVjdGlvbiBvbiBEYXJ3aW4uCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglVc2UgdGhlIHNhbWUgcGF0aCB0cmFuc2Zvcm1hdGlvbiBmb3IgV2FpdE5hbWVkUGlwZSBhbmQKCUNyZWF0ZU5hbWVkUGlwZS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVJlc2V0IHBsYXllZCB2YXJpYWJsZXMgb24gb3Blbi4KCgkqIGRsbHMva2VybmVsL2FjdGN0eC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglTZXQgbGFzdCBlcnJvciB2YWx1ZSB0byBFUlJPUl9DQUxMX05PVF9JTVBMRU1FTlRFRCBpbiBRdWVyeUFjdEN0eFcoKQoJdG8gbWFrZSBQaG90b3Nob3AgNy4wIHdvcmsgYWdhaW4uCgoJKiBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWw6IE9maXIgUGV0cnVza2EgPGhhdGt5QHVzZXJzLnNmLm5ldD4KCVJlcGxhY2UgLWRlYnVnbXNnIGJ5IFdJTkVERUJVRy4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCU1ha2UgVXNlWHJhbmRyIGRlZmF1bHQgdG8gdHJ1ZSBpbiB0aGUgbm8gY29uZmlnIGZpbGUgY2FzZS4KCgkqIGRsbHMvdXNlci9kZGUvY2xpZW50LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTZXQgbGFzdCBEREUgZXJyb3IgaW4gWFRZUF9FWEVDVVRFIGhhbmRsZXIgYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZQoJcmV0dXJuZWQgYnkgYW4gYXBwbGljYXRpb24uCgoJKiBpbmNsdWRlL2RkZW1sLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggQ0JSX0JMT0NLIGRlZmluaXRpb24uCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC91dGlscy5jLCBkbGxzL2QzZDgvdmVyc2lvbi5yYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBmaXggdmVyc2lvbiBzdHJpbmcKCS0gc29tZSBmaXhlcyB0byBBVEkgc3BlY2lmaWMgcGF0aHMgb2Ygc2V0X3RleF9vcCAoQ2hyaXN0aWFuIG5lZWRzIHRvCgkgIGNvbXBsZXRlIGl0KQoJLSBmaXggdXNlIG9mIEdMX1NVUFBPUlQoTlZfVEVYR0VOX1JFRkxFQ1RJT04pLiBJIGhhdmUgdXNlZCB0aGUgd3JvbmcKCSAgZGVmaW5lLCBJJ2xsIGdldCBhIGJyb3duIHBhcGVyIGJhZyA6KAoKCSogZGxscy9pY2N2aWQvaWNjdmlkLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglTdXBwb3J0IDE1LSBhbmQgMTYtYml0IGNvbG91ciBvdXRwdXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBSZWFsRHJpdmVUeXBlLgoKCSogZGxscy93aW5pbmV0L3V0aWxpdHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgQVNDSUkgcmVkaXJlY3QgY2FsbGJhY2tzLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIFNldFNjcm9sbFJhbmdlIGJlaGF2ZSBsaWtlIEdldFNjcm9sbFJhbmdlIGRvZXMsIGkuZS4gc2VuZAoJbWVzc2FnZXMgdG8gdGhlIGNvbnRyb2wgZm9yIFNCX0NUTCBjYXNlLgoKCSogZGxscy93aW5tbS9wbGF5c291bmQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IFBsYXlTb3VuZC4KCgkqIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBdm9pZCBjcmFzaCBieSBwYXNzaW5nIHBvaW50ZXIgdG8gUmVnU2V0VmFsdWVFeC4KCgkqIGRsbHMvd2luc3Bvb2wvdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglMb2cgdGhlIGxhc3QgZXJyb3IgdG9vIGlmIHRoZSB0ZXN0cyBmYWlsIHdpdGhvdXQgZGVmYXVsdCBwcmludGVyLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9hY2xhcGkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgYWNsYXBpLmggaGVhZGVyIGZpbGUuCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCB0cnkgdG8gbWFwIHRoZSBtYXBwZXIgZGV2aWNlLgoKMjAwNC0wNi0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJTW92ZSB0aGUgRlBTIGNvbXB1dGF0aW9uIGZyb20gdGhlIEQzRCBjb2RlIHRvIHRoZSBjb21tb24gY29kZS4KCgkqIGRsbHMvZDNkeG9mL2QzZHhvZi5jLCBkbGxzL2QzZHhvZi9kM2R4b2ZfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZHhvZi9tYWluLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZW1vdmVkIGNvbXBpbGF0aW9uIHdhcm5pbmdzICsgc29tZSBmaXhlcy4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVdpbiAyMDAwLCBYUCwgZXRjLiBmYWlsIHRoZSBzeXNwYXJhbXMgdGVzdHMgd2hlbiBydW4KCW5vbi1pbnRlcmFjdGl2ZWx5LCBzbyBhdm9pZCBydW5uaW5nIHRoZSB0ZXN0cyBpbiB0aGF0IGNhc2UuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgVENNX1NFVElURU1FWFRSQS4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQva2V5Ym9hcmQuYywgZGxscy9kaW5wdXQvbW91c2UuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNvbWUgbmV3IGxvZ2dpbmcgb24gZGV2aWNlIGVudW1lcmF0aW9uCgktIGZpeCB2ZXJzaW9uIHNldHRpbmcgaW4gRGlyZWN0SW5wdXRDcmVhdGUoQS9XKSBmdW5jdGlvbnMKCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IGEgY3Jhc2ggd2hlbiBsYXVuY2hpbmcgVW5peCBleGVjdXRhYmxlcy4KCgkqIHdpbmRvd3Mvc3B5LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcmludCBtZWFuaW5nZnVsIG1lc3NhZ2UgdmFsdWVzIGluc3RlYWQgb2YgdmFndWUgbmFtZXMgZm9yIHVua25vd24KCW1lc3NhZ2VzLgoKCSogZGxscy93aW5zcG9vbC90ZXN0cy9pbmZvLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTb21lIG9mIG91ciB0ZXN0ZXJzIGRvbid0IGhhdmUgYSBkZWZhdWx0IHByaW50ZXIsIHNpbXBseSBza2lwIHRoZQoJd2luc3Bvb2wgdGVzdHMgaWYgdGhhdCdzIHRoZSBjYXNlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbiBXaW45eCwge0NyZWF0ZSxSZW1vdmV9RGlyZWN0b3J5IHJldHVybnMgRVJST1JfUEFUSF9OT1RfRk9VTkQgd2hlbgoJZ2l2ZW4gZGlyZWN0b3JpZXMgY29udGFpbmluZyAnKicgb3IgJz8nLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvYWxsb2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVdpbjl4IGRvZXMgbm90IGNvbnZlcnQgRklYRUQgdG8gTU9WRUFCTEUuIEl0IGFsc28gZGlzY2FyZHMgbG9ja2VkCgltZW1vcnkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhciB0aGUgc3RhdGUgaW1hZ2UgYml0cyBvbmx5IGlmIExWU19FWF9DSEVDS0JPWEVTIGlzIHNldC4KCUZpeCBvYnZpb3VzIGxvZ2ljYWwgZXJyb3IgaW4gZm9jdXMgaGFuZGxpbmcuCglJbmRlbnRhdGlvbiBhbmQgZm9ybWF0dGluZyBmaXhlcy4KCShiYXNlZCBvbiBhIHBhdGNoIGJ5IEtyaXNobmEgTXVydGh5KS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywKCSAgZGxscy93aW5tbS90ZXN0cy93aW5tbV90ZXN0Lmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVHJlYXQgV0FWRV9NQVBQRVIgYXMgYSByZWFsIGRldmljZSBhbmQgcGVyZm9ybXMgYWxsIHRlc3RzIG9uIGl0LgoJQWRkZWQgMTYwMDBIeiBiZWNhdXNlIHdpbjl4IGhhcmR3YXJlIHNwZWMgcmVxdWlyZXMgaXQuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJSGFuZGxlIGNhc2Ugd2hlcmUgcGFydGlhbCBzdHJ1Y3R1cmUgdXBkYXRlIHJlcXVlc3RlZC4KCU1pbm9yIHdoaXRlIHNwYWNlIGNsZWFudXAuCgoJKiBsaWJzL3dpbmUvbW1hcC5jOiBBdm9pZCB6ZXJvIHNpemUgYWxsb2NhdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWwsCgkgIHByb2dyYW1zL3dpbmVkYmcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVkYmcvYmVfY3B1LmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvYmVfaTM4Ni5jLCBwcm9ncmFtcy93aW5lZGJnL2JlX3BwYy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2JyZWFrLmMsIHByb2dyYW1zL3dpbmVkYmcvZGJfZGlzYXNtLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvZGVidWcubCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL2Rpc3BsYXkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9lbGYuYywgcHJvZ3JhbXMvd2luZWRiZy9leHByLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZXh0X2RlYnVnZ2VyLmMsIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmMsIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2ludHZhci5oLCBwcm9ncmFtcy93aW5lZGJnL21lbW9yeS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL21vZHVsZS5jLCBwcm9ncmFtcy93aW5lZGJnL21zYy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3BlLmMsIHByb2dyYW1zL3dpbmVkYmcvcmVnaXN0ZXJzLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc291cmNlLmMsIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zdGFjay5jLCBwcm9ncmFtcy93aW5lZGJnL3N5bWJvbC5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3R5cGVzLmMsIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcubWFuOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGFsbCBzeW1ib2wgaW5mb3JtYXRpb24gc3RvcmFnZSBpcyBub3cgbW9kdWxlIHJlbGF0aXZlLCBzbyB3ZSBjYW4KCSAgdW5sb2FkIGEgbW9kdWxlIChhbmQgaXQncyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24pLCBhbmQgYSBwcm9jZXNzCgkgIHdpdGhvdXQgcGFpbgoJLSBwb3J0YWJpYmxpdHkgdG8gYW5vdGhlciBDUFUgc2hvdWxkIGJlIGVhc2llciBub3cgKENQVSBkZXBlbmRlbnQgYmFja2VuZCkKCS0gc3BlZWQgdXAgbWVtb3J5IGFsbG9jYXRpb24KCS0gc3RhYnMgcmVsYXRlZCBmaXhlczoKCSAgICAgICsgbm93IGNvcnJlY3RseSBoYW5kbGluZyBzeW1ib2wncyBzaXplCgkgICAgICArIGJsb2NrcyB7fSBpbiBmdW5jdGlvbnMgYXJlIG5vdyBjb3JyZWN0bHkgcmVjb2duaXplZCBhbmQgc3RvcmVkCgkgICAgICAgIChhbHNvIGFwcGxpZXMgdG8gbG9jYWwgdmFyaWFibGVzIHNjb3BpbmcpCgkgICAgICArIGJldHRlciBiYXNpYyB0eXBlcyBtYW5hZ2VtZW50IChsZXNzIHdpbGQgZ3Vlc3NlcyBpbiB0aGUgY29kZSkKCSAgICAgICsgZnVsbCBzdXBwb3J0IG9mIGlubGluZSBmdW5jdGlvbnMgKHNvdXJjZSBzdGVwcGluZyBub3cgc2hvd3MgdGhlCgkgICAgICAgIGNvZGUgaW4gLmggZmlsZXMgZm9yIGV4YW1wbGUpCgktIHJlbW92YWwgb2YgZXh0ZXJuYWwgZGVidWdnZXIgKGF0dGFjaGluZyB3aXRoIGdkYiBpcyBqdXN0IGZpbmUgdG8KCSAgZGVidWcgd2luZWRiZykKCS0gZml4ZWQgYSBjb3VwbGUgb2YgaXNzdWVzIGZvciBzeW1ib2wgYWRkcmVzcyBoYW5kbGluZyAoYWRkcmVzcwoJICBsb29rdXAsIGluY29ycmVjdCB0eXBlIGJpbmRpbmcpCgktIHdpbmVkYmcgbm93IGhhcyBhIG1hbiBwYWdlCgoyMDA0LTA2LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3ByZWxvYWRlci5jOgoJTWFrZSBpdCBwb3NzaWJsZSB0byBhZGQgYXV4aWxpYXJ5IHZhbHVlcyB0byB0aGUgZXhpc3RpbmcgYXJyYXk7IHRoaXMKCWlzIHJlcXVpcmVkIGZvciBvbGRlciBrZXJuZWxzLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUlnbm9yZSBhdHRlbXB0cyB0byBoaWRlIGFuIGFscmVhZHkgaW52aXNpYmxlIHdpbmRvdy4gQWRkIGEgdGVzdCBjYXNlCglmb3IgdGhpcyBiZWhhdmlvdXIsIHBhc3NlcyBvbiBXaW5lIGFuZCBXaW5kb3dzIDIwMDAuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gSU5UMjFfR2V0RnJlZURpc2tTcGFjZSBhZGp1c3QgdGhlIHNlY3RvcnMtcGVyLWNsdXN0ZXIgdmFsdWUgdG8gbWFrZQoJdGhlIHRvdGFsIG51bWJlciBvZiBjbHVzdGVycyBmaXQgaW4gYSAxNiBiaXQgcmVnaXN0ZXIuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkaXRpb25hbCBLTEZfeHh4IGRlZmluZXMuCgoJKiBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglTdHViIGZvciBEcmF3RGliUHJvZmlsZURpc3BsYXkuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUkgZ290IHRoZSB0ZXN0IGZvciBmYWlsdXJlIG9uIE5UIHdyb25nIGluIG15IGxhc3QgcGF0Y2guIFRoZSBmdW5jdGlvbgoJcmV0dXJucyAwIG9uIGVycm9yIGFuZCBzZXRzIGxhc3QgZXJyb3IgdG8gRVJST1JfSU5WQUxJRF9GTEFHUy4KCgkqIGRsbHMvcnNhYmFzZS9tYWluLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQ3JlYXRlZCBtb3JlIG5lZWRlZCByZWdpc3RyeSBrZXkgaW4gRGxsUmVnaXN0ZXJTZXJ2ZXIuCgoJKiBsaWJzL3dpbmUvbW1hcC5jOgoJQ2hlY2sgZm9yIGV4aXN0aW5nIHJlc2VydmVkIGFyZWFzIGluIG1tYXBfaW5pdCB0byBhdm9pZCBkb2luZwoJZHVwbGljYXRlIHdvcmsuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQWRkZWQgX3ZzbndwcmludGYgKG5lZWRlZCBieSBzb21lIG5hdGl2ZSBYUCBkbGxzKS4KCgkqIGRsbHMva2VybmVsL21vZHVsZS5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGluY2x1ZGUvbW9kdWxlLmg6CglTZXQgdGhlIFdJTkVQUkVMT0FEUkVTRVJWRSB2YXJpYWJsZSB3aGVuIHN0YXJ0aW5nIGEgbmV3IHByb2Nlc3MuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCU1pbkdXIHBvcnRhYmlsaXR5IGZpeC4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCB3aW5kb3dzL3dpbi5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRW5hYmxlV2luZG93IHNob3VsZCBub3QgcmVtb3ZlIHRoZSBmb2N1cyBvZiBjaGlsZCB3aW5kb3dzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZDNkeG9mLy5jdnNpZ25vcmUsCgkgIGRsbHMvZDNkeG9mL01ha2VmaWxlLmluLCBkbGxzL2QzZHhvZi9kM2R4b2YuYywKCSAgZGxscy9kM2R4b2YvZDNkeG9mLnNwZWMsIGRsbHMvZDNkeG9mL2QzZHhvZl9wcml2YXRlLmgsCgkgIGRsbHMvZDNkeG9mL21haW4uYywgZGxscy9kM2R4b2YvcmVnc3ZyLmMsIGRsbHMvZDNkeG9mL3ZlcnNpb24ucmMsCgkgIGRsbHMvZHhndWlkL2R4Z3VpZC5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2R4ZmlsZS5oLCB0b29scy93aW5lLmluZjoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIGQzZHhvZiBkbGwsIHBhcnQgb2YgRGlyZWN0M0QuCgoyMDA0LTA2LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3ByZWxvYWRlci5jOgoJQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyB0aGUgUEUgZXhlIGFkZHJlc3MgcmFuZ2UgdGhyb3VnaCB0aGUKCVdJTkVQUkVMT0FEUkVTRVJWRSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBBZGRlZCBjaGVjayBmb3Igc3RhdGljIGxpYmMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIGNhc2Ugd2hlbiBpdGVtIHRleHQgaXMgZW1wdHkuCglBY2NvcmRpbmcgdG8gTVNETiwgbGVuZ3RoIHNob3VsZCBiZSByZXR1cm5lZCB3aGVuIGxQYXJhbSBpcyBOVUxMLgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglXaGVuIHdlIHNlbmQgb3V0IGEgbm90aWZpY2F0aW9uIHRvIGEgcmVnaXN0ZXJlZCB3aW5kb3cgd2l0aAoJU0hDTlJGX05ld0RlbGl2ZXJ5LCB3ZSBzaG91bGQgc2VuZCBhIExQTk9USUZJQ0FUSU9OTElTVCBhbmQgdGhlCglwcm9jZXNzIGlkIG9mIHRoZSBjYWxsZXIuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIEZJTEVETEdfU2NhbkRpciBkbyBub3QgdHJ5IHRvIHNldCB0aGUgY3VycmVudCBkaXJlY3RvcnkgdG8gYSBwYXRoCgl0aGF0IGlzIGVtcHR5LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN0dWIgZm9yIFdTQ1VuSW5zdGFsbE5hbWVTcGFjZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3BhdGguYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJU2VtaSBzdHVicyBmb3IgR2V0U3lzdGVtV293NjREaXJlY3RvcnlbQVddLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZGlucHV0L2RldmljZV9wcml2YXRlLmgsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQvbW91c2UuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNvbWUgVFJBQ0VpbmcgaW1wcm92ZW1lbnRzCgktIGZpeCBtb3VzZSBBY3F1aXJlIHdoaWNoIHN3aXRjaGVkIHJpZ2h0IGFuZCBtaWRkbGUgYnV0dG9ucwoJLSByZXNldCB0aGUgbW91c2UgY3Vyc29yIGF0IGl0cyBvcmlnaW5hbCBsb2NhdGlvbiBvbiBVbmFjcXVpcmluZyB0aGUKCSAgZGV2aWNlCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgZml4IHRoZSBkcml2ZSBsZXR0ZXIgdG8gJ0MnLCBpdCBmYWlscyBvbiBvdGhlciBwZW9wbGUncyBib3hlcy4KCgkqIGRsbHMvcnNhYmFzZS9tYWluLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglDcmVhdGVkIG5lZWRlZCByZWdpc3RyeSBrZXkgaW4gRGxsUmVnaXN0ZXJTZXJ2ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCURvbid0IGRyYXcgd2hvbGUgYnV0dG9uIHByZXNzZWQgd2hlbiBzZXBhcmF0ZSBkcm9wZG93biBwcmVzc2VkLCBqdXN0Cgl0aGUgc2VwYXJhdGUgZHJvcGRvd24gaXRzZWxmLgoKCSogZGxscy9kM2Q4L3V0aWxzLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQ29tcGlsZSBmaXguCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvd2NzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb3B5IHRoZSB2c25wcmludGZXIGltcGxlbWVudGF0aW9uIGZyb20gbGlidW5pY29kZS5zbyB0byBtc3ZjcnQgYW5kCglhZGQgYSBoYW5kbGVyIGZvciB0aGUgJVMgZmxhZy4gIFRoYXQgcmVxdWlyZXMgYSBjb252ZXJzaW9uIHRvIHVuaWNvZGUKCWFuZCBrbm93bGVkZ2Ugb2YgdGhlIGN1cnJlbnQgQVNDSUkgY29kZSBwYWdlLgoKCSogZG9jdW1lbnRhdGlvbi9hZGRyZXNzLXNwYWNlLnNnbWwsIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJVXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiBvbiBXaW5lIGFyY2hpdGVjdHVyZSAmIGZ1bmRhbWVudGFscy4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBjYWIuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJUmVwbGFjZWQgdGhlIGNhbGwgdG8gR2V0RnVsbFBhdGhOYW1lQSBieSBhIGNhbGwgdG8gR2V0RnVsbFBhdGhOYW1lVyB0bwoJZ2V0IHJpZCBvZiB0aGUgVy0+QSBjcm9zcyBjYWxscy4KCjIwMDQtMDYtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggY2FsY3VsYXRpb24gb2YgU01QVEUgdGltZSAocm91bmQgdXAgdG8gZnVsbCBmcmFtZSkuCglNb3JlIGFjY3VyYXRlIG1zIGNhbGN1bGF0aW9uLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBhIHRlc3QgdG8gY2hlY2sgcGxheWJhY2sgcG9zaXRpb24gYWZ0ZXIgZG9uZSBwbGF5aW5nLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJU3R1YiBmb3IgU0hGbHVzaFNGQ2FjaGVXcmFwLgoKCSogZGxscy93aW5pbmV0L2RpYWxvZ3MuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggcHJveHkgc3VwcG9ydCwgcmVtb3ZlIHR5cGVjYXN0cy4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZXR1cm5zIHByb3BlciBlcnJvciBjb2RlIHdoZW4gdHJ5aW5nIHRvIGdldCBjYXBzIHdoZW4gbm8gZGV2aWNlcwoJcHJlc2VudC4KCgkqIGxvYWRlci9wcmVsb2FkZXIuYzogQSBmZXcgc21hbGwgZml4ZXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUZXN0IHdoZXRoZXIgd2UgY2FuIGRlc3Ryb3kgYSBtZW51IGFzc2lnbmVkIHRvIGEgd2luZG93LgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIFBQT0lOVEwsIGEgcG9pbnRlciB0byBhIFBPSU5UTCBzdHJ1Y3QuCgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW46IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJTGluayB0byBudGRsbC4KCgkqIGRsbHMva2VybmVsL2V4Y2VwdC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglVc2UgVFJBQ0UgcmF0aGVyIHRoYW4gRklYTUUgZm9yIGNoZWNrX3Jlc291cmNlX3dyaXRlLgoKCSogZGxscy9oaGN0cmwub2N4L01ha2VmaWxlLmluLCBkbGxzL2hoY3RybC5vY3gvaGhjdHJsLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglEaXNwbGF5IG1vcmUgaW5mb3JtYXRpdmUgbWVzc2FnZSB3aGVuIEh0bWxIZWxwIHN0dWIgaXMgaW52b2tlZCwgYWRkCglBL1cgY29udmVyc2lvbiBjb2RlLCByZW1vdmUgdXNlbGVzcyAoYW5kIHdyb25nKSBodW5nYXJpYW4gbm90YXRpb24KCWZyb20gZnVuY3Rpb24gcHJvdG90eXBlcy4KCgkqIGRsbHMvZG1pbWUvc2VnbWVudC5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUNvcnJlY3QgdHlwbyBpbiBMb2FkV2F2ZSAod2F2ZSBpcyBhbiBETU9iamVjdCBub3QgYSBETVRyYWNrKS4KCgkqIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWxzbyBoYW5kbGUgT1MyIHYxLnggKEFLQSB3aW5kb3dzIDIuMCkgYml0bWFwcy4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTZXRNaXRlckxpbWl0OiBSZXR1cm4gc3VjY2Vzczogc29tZSBjYWxsZXJzIGNoZWNrIHRoaXMuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCB0aGUgY2FzZSB3aGVyZSBscHN6U2VhcmNoRmlsZSBpcyBOVUxMIGluIEZ0cEZpbmRGaXJzdEZpbGUuCgoJKiBpbmNsdWRlL2V4ZGlzcC5oLCBpbmNsdWRlL2V4ZGlzcC5pZGw6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBkZWZpbml0aW9ucyBmb3IgdGhlIElTaGVsbFdpbmRvd3MgaW50ZXJmYWNlLgoKCSogaW5jbHVkZS9zaGxkaXNwLmgsIGluY2x1ZGUvc2hsZGlzcC5pZGw6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBkZWZpbml0aW9ucyBmb3IgdGhlIElGb2xkZXJWaWV3T0MgaW50ZXJmYWNlLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGEgYnVnIHdoZXJlIHdyb25nIGEgcmV0dXJuIHZhbHVlIHdhcyByZXR1cm5lZCB3aGVuIG1hcHBpbmcgaXMKCW5vdCBwb3NzaWJsZS4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCB0cmFjZSBhbmQgZGVidWcgcHJpbnRpbmcgaW5mby4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5tbS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNvbWUgdHJhY2UgYW5kIGRlYnVnIHByaW50aW5nLgoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGFub3RoZXIgcG9zc2libGUgd2luZG93cyBmYWlsdXJlIG1vZGUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgZGlhbG9nIGNsYXNzIG5hbWUgdG8gdGhlIGxpc3Qgb2YgY2xhc3NlcyBoYW5kbGVkIGJ5IGhvb2ssIGFkZCBob29rCgltZXNzYWdlcyB0byB0aGUgbW9kYWwgZGlhbG9nIG1lc3NhZ2UgdGVzdC4KCjIwMDQtMDUtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU5UIDQuMCBkb2Vzbid0IHN1cHBvcnQgTUFQX0VYUEFORF9MSUdBVFVSRVMgc28gc2tpcCB0ZXN0IGlmIGl0IHJldHVybnMKCUVSUk9SX0lOVkFMSURfRkxBR1MuCgoJKiBkbGxzL250ZGxsL3NlcnZlci5jOgoJVXNlIHdpbmVfZXhlY193aW5lX2JpbmFyeSBpbiBhbGwgY2FzZXMgdG8gc3RhcnQgdGhlIHNlcnZlci4KCgkqIGxpYnMvd2luZS9jb25maWcuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4ZWQgcHJlbG9hZGVyX2V4ZWMuCgoJKiB0b29scy93cmMvd3JjLm1hbjogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvY3VtZW50IHRoZSAtLXZlcmJvc2Ugc3dpdGNoLgoKMjAwNC0wNS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnMvd2luZS9sb2FkZXIuYywKCSAgbG9hZGVyL21haW4uYzoKCVBhc3MgdGhlIGVudmlyb24gdmFyaWFibGUgZnJvbSBtYWluIHRvIHRyeSB0byBhdm9pZCBEYXJ3aW4ncwoJX05TR2V0RW52aXJvbigpIHVnbGluZXNzLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglGaXhlZCBDb01hcnNoYWxJbnRlclRocmVhZEludGVyZmFjZUluU3RyZWFtIGFuZAoJQ29HZXRJbnRlcmZhY2VBbmRSZWxlYXNlU3RyZWFtLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglSZW1vdmVkIGRjb20gbGluay4KCgkqIGNvbnRyb2xzL2VkaXQuYzogS3Jpc2huYSBNdXJ0aHkgPEtyaXNobmEuTXVydGh5QGd1cHRhd29ybGR3aWRlLmNvbT4KCUVESVRfRU1fUmVwbGFjZVNlbCBzaG91bGQgc2ltcGx5IHRydW5jYXRlIGNoYXJhY3RlcnMgdGhhdCBleGNlZWQgdGhlCglsaW1pdC4KCjIwMDQtMDUtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL3NlcnZlci5jLAoJICBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJzL3dpbmUvY29uZmlnLmMsIGxvYWRlci8uY3ZzaWdub3JlLAoJICBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9nbGliYy5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbWFpbi5oLAoJICBsb2FkZXIvcHJlbG9hZGVyLmM6CglJbml0aWFsIHZlcnNpb24gb2YgdGhlIFdpbmUgcHJlbG9hZGVyLCB1c2VkIHRvIHJlc2VydmUgbWVtb3J5CglhcmVhcyBhdCBzdGFydHVwLiBCYXNlZCBvbiB0aGUgd29yayBvZiBNaWtlIE1jQ29ybWFjay4KCgkqIHNlcnZlci91c2VyLmMsIHdpbmRvd3Mvd2luLmM6CglPbmx5IGFsbG9jYXRlIGV2ZW4tbnVtYmVyZWQgd2luZG93IGhhbmRsZXMsIE1TIFByb2plY3QgZGVwZW5kcyBvbiB0aGF0CgkoZm91bmQgYnkgRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJTWFrZSBzdXJlIF9fQVNNX0dMT0JBTF9GVU5DIGdlbmVyYXRlcyBjb2RlIGluIHRoZSB0ZXh0IHNlZ21lbnQuCgoJKiBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IG1vZHVsZSBuYW1lIHdoZW4gY2FsbGluZyBMaWJNYWluLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoYXQgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwYXNzZWQgdG8gUmVnU2V0VmFsdWVFeFcgaXMgaW4KCWJ5dGVzIG5vdCBXQ0hBUnMuCgoJKiB3aW5kb3dzL3NweS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHNvbWUgbmV3IG1lc3NhZ2UgbmFtZXMgdG8gdGhlIG1lc3NhZ2Ugc3B5LgoKCSogZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsIHdpbmRvd3MvY2xhc3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciBhY2Nlc3NpbmcgY2xhc3NlcyBmcm9tIGFub3RoZXIgdGhyZWFkLgoJRml4IFVucmVnaXN0ZXJDbGFzcyBiZWhhdmlvdXIgd2l0aCBOVUxMIGhJbnN0YW5jZS4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vYWRkcmVzcy1zcGFjZS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbDoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGRvY3VtZW50YXRpb24gb24gdGhlIGFkZHJlc3Mgc3BhY2UgbGF5b3V0IGluIFdpbmUuCgoJKiB0b29scy93aW5lLmluZjoKCVVzZSBwcm9wZXIgZGlyaWRzIGluc3RlYWQgb2YgaGFyZGNvZGluZyBjOlxQcm9ncmFtIEZpbGVzLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmMsIGxpYnMvd2luZS9tbWFwLmM6CglEb24ndCByZWx5IG9uIHRoZSByZXNlcnZlZCBhcmVhIGxpc3QgYmVpbmcgZW1wdHkgaW4gcmVzZXJ2ZV9hcmVhLAoJc2luY2UgdGhlIHByZWxvYWRlciB3aWxsIG5lZWQgdG8gYWRkIHRoaW5ncyB0byB0aGUgbGlzdCBiZWZvcmUKCXN0YXJ0dXAuCgoJKiBkbGxzL2tlcm5lbC9kb3NtZW0uYzoKCUVuc3VyZSB0aGF0IHdlIGNhbiBpbml0aWFsaXplIHRoZSBET1MgbWVtb3J5IGFyZWEgY29ycmVjdGx5IGV2ZW4gaWYgaXQKCWhhcyBiZWVuIHByZS1yZXNlcnZlZCBhbHJlYWR5LgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9kaXJpZC5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgZGlyaWRzIHRoYXQgbWFwIHRvIGEgQ1NJREwgdmFsdWUgKGJhc2VkIG9uIGEgcGF0Y2gKCWJ5IE1pa2UgTWNDb3JtYWNrKS4KCgkqIGRsbHMveDExZHJ2L2luaXQuYzogTWlrZSBIZWFybiA8bWlrZUBuYXZpLmN4PgoJRGVmYXVsdCB0byA5NmRwaSB3aGVuIG5vdCBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZyBmaWxlLgoKCSogZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L3V0aWxzLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBzb21lIHRleHR1cmUgb3BlcmF0aW9ucyB1c2luZyBBVElfdGV4dHVyZV9lbnZfY29tYmluZTMuCglGaXhlZCBEM0RUT1BfTEVSUC4KCUZpeGVkIHNvbWUgY2hlY2tHTGNhbGwgZXJyb3IgbWVzc2FnZXMuCgoyMDA0LTA1LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS93aW5tbS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgbWlzc2luZyBpbnZlcnNpb24gaW4gYml0IG1hbmlwdWxhdGlvbi4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS93aW5tbS5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGEgcHJvYmxlbSB3ZXJlIGEgdHJhY2UgYWNjZXNzZXMgYSBkYXRhIG1lbWJlciB0aGF0IG1heSBiZQoJb3V0c2lkZSBvZiB0aGUgYWN0dWFsIGRhdGEgc3RydWN0dXJlIHBhc3NlZCBpbi4KCUFkZGVkIHNvbWUgbW9yZSBkZWJ1ZyB0cmFjZXMuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBc3N1bWUgTUFYX1BBVEggbGVuZ3RoIGZvciBwc3pEaXNwbGF5TmFtZS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIHR5cG8uCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUdpdmUgYSBzdHJ1Y3QgdGFnIHRvIE9QRU5JTEVOQU1FQS9XIHRvIGFsbG93IGZvcndhcmQgZGVjbGFyYXRpb25zLgoKCSogZGxscy9rZXJuZWwvc25vb3AxNi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggdGhlIG1pc3NpbmcgdHJlYWQgSUQgb2Ygc29tZSBzbm9vcCByZXR1cm4gdHJhY2VzLgoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3dpbm1tX3Rlc3QuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBXQVZFX01BUFBFRCBmbGFnIHRlc3QuCglBZGRlZCA4MDAwIEh6IHRlc3QgYXMgYSB0eXBpY2FsbHkgc3VwcG9ydGVkIGZvcm1hdC4KCUFkZGVkIDEyMDAwIEh6IHRlc3QgYXMgYSB0eXBpY2FsbHkgdW5zdXBwb3J0ZWQgZm9ybWF0LgoJVGVzdCBlcnJvciByZXBvcnRpbmcgYmV0dGVyIGJ5IHRlc3RpbmcgdW5zdXBwb3J0ZWQgZm9ybWF0cy4KCVRlc3QgdXNpbmcgUENNV0FWRUZPUk1BVCBpbiBwbGFjZSBvZiBXQVZFRk9STUFURVguCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfSXQucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0l0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywgZGxscy9kM2RybS9kM2RybV9tYWluLmMsCgkgIGRsbHMvZDNkcm0vdmVyc2lvbi5yYywgZGxscy9tc2FjbS9tc2FjbV9JdC5yYywKCSAgZGxscy9tc3JsZTMyL21zcmxlX0l0LnJjLCBkbGxzL29sZWRsZy9vbGVkbGdfSXQucmMsCgkgIGRsbHMvcWNhcC92ZXJzaW9uLnJjLCBkbGxzL3NlcmlhbHVpL0l0LnJjLCBkbGxzL3NldHVwYXBpL0l0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSXQucmMsCgkgIGRsbHMvd2luZXBzL3dwc19JdC5yYywgZGxscy93aW5pbmV0L3dpbmluZXRfSXQucmMsCgkgIGRsbHMvd2lubW0vd2lubW1fSXQucmMsIGRvY3VtZW50YXRpb24vUkVBRE1FLml0LAoJICBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmMsCgkgIHByb2dyYW1zL2Nsb2NrL0l0LnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9JdC5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9JdC5yYywgcHJvZ3JhbXMvcHJvZ21hbi9JdC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5yYywKCSAgcHJvZ3JhbXMvc3RhcnQvSXQucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmMsCgkgIHByb2dyYW1zL3ZpZXcvSXQucmMsIHByb2dyYW1zL3dpbmVmaWxlL0l0LnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9JdC5yYywgdG9vbHMvYnVnX3JlcG9ydC5wbDoKCUl2YW4gTGVvIFB1b3RpIDxwdW90aUBpbndpbmQuaXQ+CglDaGFuZ2VkIG15IG5hbWUsIHNvIHVwZGF0ZSBjb3B5cmlnaHQgaW5mby4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogVHJveSBSb2xsbyA8d2luZUB0cm95LnJvbGxvLm5hbWU+CglNYWtlIHVuZGVybGluaW5nIG9mIGZvbnRzIGRyYXduIGF0IGFuIGFuZ2xlIGZvbGxvdyB0aGUgdGV4dC4KCgkqIG9iamVjdHMvZGliLmM6IEFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCVJldHVybiBsaW5lIGNvdW50IHdoZW4gdGhlIGJpdHMgcGFyYW1ldGVyIGlzIE5VTEwuCgoJKiBkbGxzL2QzZDgvZDNkOC5zcGVjLCBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZDNkOC91dGlscy5jLAoJICBkbGxzL2QzZDgvdnNoYWRlcmRlY2xhcmF0aW9uLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gdGhlIGhhcmR3YXJlIEdMIHZlbmRvcnMgKE5WaWRpYSBhbmQgQVRJKSBjYW4gc3VwcG9ydCBtb3JlIHRoYW4gOTUKCWNvbnN0YW50cyAodGhlIE1lc2EgYnVnKSBhbmQgVlJhbGx5IHVzZSB0aGUgMC4uOTUgaW5kZXhlcyBzbyBmaXggaXQKCS0gZml4IG5vcm1hbGl6ZSBmb3Igc29tZSBIVyBWZXJ0ZXhTaGFkZXIgaW5wdXRzCgktIHRyeWluZyB0byBmaXggdGhlIGNvbWJpbmF0aW9uIG9mIE5WX3RleHR1cmVfY29tYmluZV80IHdpdGgKCXRleHR1cmVfY29tYmluZV9FWFQgKGltcGwgb2YgRDNEVE9QX0RJU0FCTEUsIEQzRFRPUF9NT0RVTEFURSBmb3IKCU5WX3RleHR1cmVfY29tYmluZV80KQoJLSBpZiBzaGFkZXJzIGRpc2FibGVkIGRlY2xhcmUgdG8gc3VwcG9ydCAwIGZvciBNYXhWZXJ0ZXhTaGFkZXJDb25zdC4KCgkqIGRsbHMvdXNlci90ZXN0cy9kaWFsb2cuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglSZW1vdmUgcGFydCBvZiB0ZXN0IHRoYXQgY3Jhc2hlcyB3aW45NS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCUFsZXggVmlsbGFj7XMgTGFzc28gPGFfdmlsbGFjaXNAcGFsb3NhbnRvLmNvbT4KCUFkZGVkIHN0dWIgZm9yIEdldFJlY29yZEluZm9Gcm9tR3VpZHMuCgoJKiBsaWJzL3dpbmUvbW1hcC5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeGVkIGxhc3QgbW1hcCBpc3N1ZSB3aXRoIG1pbmd3IHdpbmRvd3MgYnVpbGQuCgoJKiBkbGxzL2RtaW1lL3NlZ21lbnQuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglTdXBwb3J0IGxvYWRpbmcgb2YgV2F2ZSBzZWdtZW50cyBvbiBJRGlyZWN0TXVzaWNTZWdtZW50OC4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4aW5wdXQuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIGpveXN0aWNrIGRldmljZSB0eXBlIGZvciBkaW5wdXQ4LgoKCSogZGxscy9zaGVsbDMyL2NvbnRyb2wuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNb3ZlZCBzdHViIG9mIENvbnRyb2xfRmlsbENhY2hlX1J1bkRMTCBmcm9tIGFzY2lpIHRvIHVuaWNvZGUuCgoJKiBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBkb24ndCB1c2UgYSBzdHVwaWQgIndoaWxlICgxKTsiIHRocmVhZCB3aGVuIERNUGVyZm9ybWFuY2UgTVNHIFF1ZXVlIGVtcHR5CgktIHRyeSB0byB1c2UgbGF0ZW5jeSBhbmQgTVNHIHN5bmNocm8gZm9yIHRpbWVvdXQgKGJ1dCBhcyBpJ20gbm90IGEKCSAgc291bmQgZXhwZXJ0IGRvbid0IGV4cGVjdCB0b28gbXVjaCkKCjIwMDQtMDUtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsaWJzL3dpbmUvbW1hcC5jOiBQb3J0YWJpbGl0eSBmaXguCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJzL3dpbmUvY29uZmlnLmMsIGxpYnMvd2luZS9sb2FkZXIuYzoKCU1vdmVkIGVudmlyb24gZGVmaW5pdGlvbiB0byBwb3J0LmguCgoJKiBjb250cm9scy9lZGl0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB1cGRhdGUgcmVnaW9uIGNhbGN1bGF0aW9uIGZvciB0aGUgY2FzZSB3aGVyZSBhIHdvcmQgd3JhcHMgdXAgdG8KCXRoZSBwcmV2aW91cyBsaW5lLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIGEgY291cGxlIG9mIG1pc3NpbmcgbGlzdHZpZXcgbWFjcm9zLgoKCSogd2luZG93cy9tZGkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBhY3RpdmF0ZSBhbiBNREkgY2hpbGQgaWYgdGhlIGNoaWxkIGlzIGludmlzaWJsZS4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWx3YXlzIHVzZSAkKENDKSBmb3IgYnVpbGRpbmcgdGhlIGdlbmVyYXRlZCAuc3BlYy5jIGZpbGUuCgoJKiBkbGxzL2tlcm5lbC9oZWFwLmM6CglBbGxvY2F0ZSB0aGUgc2hhcmVkIGhlYXAgaW5zaWRlIHRoZSBXaW45eCBzaGFyZWQgbWVtb3J5IGFyZWEuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJT25seSBjcmVhdGUgdGhlIHNoYXJlZCBoZWFwIHdoZW4gV2luZG93cyB2ZXJzaW9uIGlzIFdpbjl4LgoKCSogbGlicy93aW5lL2NvbmZpZy5jLCBsaWJzL3dpbmUvbG9hZGVyLmM6CglFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglBZGRlZCBlbnZpcm9uIHN1cHBvcnQgZm9yIERhcndpbi4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCVJlbW92ZWQgRFRfTk9DTElQIGZvcm1hdCBmbGFnLgoKCSogY29udHJvbHMvc3RhdGljLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVdoZW4gcmVwYWludGluZyBhIHN0YXRpYyBjb250cm9sLCB3aXRoIFNTX0JJVE1BUCBzdHlsZSwgZG8gbm90IGVyYXNlCgl0aGUgYmFja2dyb3VuZC4gS2VlcCBzZW5kaW5nIHRoZSBXTV9DVExDT0xPUlNUQVRJQyBub3RpZmljYXRpb24gYXMKCVdpbmRvd3MgZG9lcy4KCgkqIGxpYnMvd2luZS9wb3J0LmM6CglFbW1hbnVlbCBNYWlsbGFyZCA8bWFpbGxhcmQuZW1tYW51ZWxAbGliZXJ0eXN1cmYuZnI+CglBZGp1c3Qgc3RhY2sgcG9pbnRlciBpbiB3aW5lX3N3aXRjaF90b19zdGFjayB0byBwcmV2ZW50IHNlZ21lbnRhdGlvbgoJZmF1bHQgb24gZGFyd2luL3BwYy4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLAoJICBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglNb3ZlIGFsbCBGVFAgZnVuY3Rpb25zIHRvIHVuaWNvZGUuCglJbXByb3ZlIEZUUCBMSVNUIHBhcnNpbmcuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLAoJICBsaWJzL3dpbmUvTWFrZWZpbGUuaW4sIGxpYnMvd2luZS9sb2FkZXIuYywgbGlicy93aW5lL21tYXAuYywKCSAgbGlicy93aW5lL3BvcnQuYywgbGlicy93aW5lL3dpbmUuZGVmLCBsaWJzL3dpbmUvd2luZS5tYXAsCgkgIGxvYWRlci9tYWluLmM6CglBZGRlZCBzdXBwb3J0IGZvciBtYW5hZ2luZyByZXNlcnZlZCBtZW1vcnkgYXJlYXMgaW4gbGlid2luZSBhbmQgbnRkbGwuCglUcnkgdG8gcmVzZXJ2ZSBldmVyeXRoaW5nIGFib3ZlIDB4ODAwMDAwMDAgb24gc3RhcnR1cC4KCgkqIGRsbHMvc2hsd2FwaS9zdG9wd2F0Y2guYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTW92ZWQgc3R1YiBvZiBTdG9wV2F0Y2ggZnJvbSBhc2NpaSB0byB1bmljb2RlLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglXaWxsaWFtIExhaHRpIDxjb21wdXRlcm1hbjQxM0BlenJzLmNvbT4KCUltcGxlbWVudGVkIEFyZUFueUFjY2Vzc2VzR3JhbnRlZC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGEgZmFpbHVyZSB1bmRlciBXaW45eC4KCjIwMDQtMDUtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGVsZl9yZWFkX3dpbmVfbG9hZGVyX2RiZ19pbmZvKCkgZm9yIHRoZSAhX19FTEZfXyBjYXNlLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1lc3NhZ2UgdGVzdCBmb3IgRHJhd01lbnVCYXIuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGZvciBmb2N1cyBjaGFuZ2Ugb24gU2hvd1dpbmRvdyhjaGlsZCwgU1dfSElERSkuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscC5jLCBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLAoJICBkbGxzL2RiZ2hlbHAvbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9tc2MuYywgZGxscy9kYmdoZWxwL3BlX21vZHVsZS5jLAoJICBkbGxzL2RiZ2hlbHAvc3ltYm9sLmMsIGRsbHMvZGJnaGVscC90eXBlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gc29tZSBtb3JlIGZpeGVzIHRvIGVsZiBtb2R1bGUncyBzeW1ib2wgdGFibGUgaGFuZGxpbmcgKGluY2x1ZGluZwoJICBzdGF0aWMvZ2xvYmFsIGRpZmYgZm9yIHZhcmlhYmxlcykKCS0gbm93IHJlLXN5bmNocm9uaXppbmcgRUxGIGxpc3QgaW4gYWxsIGNhc2VzIChubyBsb25nZXIgZGVwZW5kaW5nIG9uCgkgIFJUX0NPTlNJU1RFTlQgc3RhdGUpCgktIG5vdyBzaG91bGQgYmUgYWJsZSB0byBkaWZmZXJlbnRpYXRlIHByb3Blcmx5IGEgbmF0aXZlIGZyb20gYSBidWlsdGluCgkgIG1vZHVsZQoJLSBpbiBzeW1ib2wgbG9va3VwLCBub3cgdXNpbmcgc2l6ZSBvZiBzeW1ib2wgKGlmIGtub3duKQoJLSBTeW1HZXRUeXBlSW5mbyBub3cgY2hlY2tzIGFuZCB1c2VzIEJhc2VBZGRyZXNzCgktIGluIE1TQy1DViwgcmVhbGx5IGdlbmVyYXRlIHRodW5rIG9iamVjdHMKCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDeWd3aW4ncyBtbnRlbnQuaCByZXF1aXJlcyBzdGRpby5oIHRvIGJlIGluY2x1ZGVkIGZpcnN0LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRXhwbGljaXRseSBzcGVjaWZ5IG5hbWUgb2YgdGhlIHBpcGUgaW4gdGhlIHBpcGUgdGVzdC4KCgkqIGRsbHMva2VybmVsL3Rvb2xoZWxwLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJU29tZSBmaXhlcyB0byBtb2R1bGUgYnJvd3NpbmcuCgoyMDA0LTA1LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2ZkLmM6CglNYWtlIHN1cmUgd2UgZG9uJ3QgdHJ1bmNhdGUgdGhlIGZpbGUgb24gb3BlbiBiZWZvcmUgd2UgaGF2ZSBjaGVja2VkCgl0aGUgc2hhcmluZyBtb2RlcyAodGhhbmtzIHRvIERtaXRyeSBUaW1vc2hrb3YgZm9yIHRoZSB0ZXN0IGNhc2UpLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3Igb3BlbmluZyBhbiBhbHJlYWR5IG9wZW5lZCBmaWxlIGZvciB3cml0aW5nIGluIGEgbm90Cgljb21wYXRpYmxlIHNoYXJpbmcgbW9kZS4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSB0cmFjZXMgdG8ga2VybmVsIGZpbGUgZnVuY3Rpb25zLgoKMjAwNC0wNS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3ZpcnR1YWwuYywgZGxscy9rZXJuZWwvdmlydHVhbC5jLAoJICBkbGxzL250ZGxsL3ZpcnR1YWwuYywgaW5jbHVkZS93aW5lL2xpc3QuaDoKCUNvbnZlcnRlZCB0aGUgbWVtb3J5IHZpZXdzIGxpc3QgdG8gdXNlIHRoZSBzdGFuZGFyZCBmdW5jdGlvbnMgZnJvbQoJd2luZS9saXN0LmguCglSZXN0cnVjdHVyZWQgc29tZSBmdW5jdGlvbnMgdG8gYWx3YXlzIHJldHVybiBwcm9wZXIgTlQgc3RhdHVzIGNvZGVzLgoJQSBjb3VwbGUgb2Ygb3B0aW1pemF0aW9ucy4KCUFkZGVkIGEgZmV3IHRlc3RzIGZvciBmaWxlIG1hcHBpbmdzLgoKCSogZGxscy9kcGxheS8uY3ZzaWdub3JlLCBkbGxzL2RwbGF5L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5L3ZlcnNpb24ucmMsCgkgIGRsbHMvcWNhcC9xY2FwX21haW4uYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCVRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCS0gYWRkIHZlcnNpb24gaW5mbyB0byBkcGxheS5kbGwKCS0gYWRkIGxpY2VuY2UgaW5mbyB0byBxY2FwCgktIGFkZCBkM2RybSBhbmQgZHBuaHBhc3QgdG8gZGxsIG92ZXJyaWRlcwoKCSogZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3dpbm1tX3Rlc3QuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBhIGJ1ZyBJIGludHJvZHVjZWQgaW4gd2F2ZUluR2V0RGV2Q2Fwc0EoV0FWRV9NQVBQRVIpIHRlc3QuCglNb3ZlZCBmb3JtYXQgc3RydWN0dXJlIGFycmF5IHRvIGhlYWRlciBmaWxlIGFuZCByZXN0b3JlZAoJTkJfV0lOX0ZPUk1BVFMgbWFjcm8gdG8gY2FsY3VsYXRlIGFycmF5IHNpemUuCglBZGRlZCBtb3JlIGVycm9yIHJlc3VsdHMgYW5kIHVzZWQgbWFjcm8gYXMgc3VnZ2VzdGVkIGJ5IEFuZHJlYXMgTW9oci4KCUNsZWFuZWQgdXAgZXJyb3IgcmVzdWx0IHByaW50aW5nIHRvIGJlIG1vcmUgY29uc2lzdGVudC4KCgkqIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCByZXRyaWV2YWwgb2YgQVRJIGluZm8uCgoJKiBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywKCSAgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUyaW1wbC5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldmVydCBicm9rZW4gc3RyaWN0IGFsaWFzaW5nIGZpeC4KCgkqIG9iamVjdHMvZm9udC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglMZXQgR2V0Rm9udExhbmd1YWdlSW5mbygpIHJldHVybiB0aGUgR0NQX1JFT1JERVIgZmxhZyBvbmx5IGluIGNhc2UgdGhlCglEQyBhbGlnbm1lbnQgaXMgcmlnaHQtdG8tbGVmdC4KCgkqIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3Igd2luZG93J3MgaGluc3RhbmNlLgoKMjAwNC0wNS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vdGVzdHMvLmN2c2lnbm9yZSwgZGxscy93aW5tbS90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS90ZXN0cy9jYXB0dXJlLmMsIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3dpbm1tX3Rlc3QuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTcGxpdCBvZmYgdGhlIHdpbm1tIGNhcHR1cmUgdGVzdC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL21vZHVsZS5jOiBEb24ndCB1c2UgdGhlIFdpbmUgZGVidWcgZnVuY3Rpb25zLgoJRml4ZWQgd3JvbmcgQS9XIGxlbmd0aCBjaGVja3MuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIE1ha2UgbmV3IHRlc3RzIHBhc3Mgb24gd2luMmsgU1A0IGFuZCB3aW45NSBPU1IyLgoJLSBBZGQgbG9nZ2luZyBvZiBzb21lIHVzZWZ1bCBtZXNzYWdlcyBpbiB0aGUgcGFyZW50IHdpbmRvdy4KCS0gQWRkIGxvZ2dpbmcgb2Ygd3BhcmFtIGZvciBXTV9JTUVfU0VUQ09OVEVYVC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgNSBzZWNvbmQgdGVzdCB0b25lIHRvIGhlbHAgZGVidWcgaXNzdWVzIHdpdGggdGhlIHRvbmUgZHVyYXRpb24KCWFuZCBoZWxwIGRldGVjdCBzdHV0dGVyIGlzc3Vlcy4KCUFkZCBleHBsYW5hdGlvbnMgZGVzY3JpYmluZyB0aGUgaW50ZXJhY3RpdmUgdGVzdC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRyaWdnZXJzIHRvIGRpc2FibGUgdGhlIHNvdW5kIGlucHV0L291dHB1dCBzaWRlIHdlIGRvbid0IGNhcmUKCWFib3V0IHdoZW4gaW4gcHNldWRvIGZ1bGxkdXBsZXggbW9kZS4KCgkqIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL2dyYXBoLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUJldHRlciBoYW5kbGluZyBvZiBVc2VyIElEaXJlY3RNdXNpY1Rvb2xzLgoKMjAwNC0wNS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvc3RhdGVibG9jay5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdXRpbHMuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBmaXJzdCBkcmFmdCBvZiBEM0RDTElQU1RBVFVTOCBoYW5kbGluZyAobm90IHJlYWxseSB1c2VkIGZvciBub3cpCgktIGFkZCBhIG5ldyBERUJVR19TSU5HTEVfTU9ERSAjZGVmaW5lIChmb3IgZGVidWcgY2FwcyBuZWVkcykKCS0gYmV0dGVyIHRyYWNlcyBmb3Igc3VyZmFjZSBkdW1waW5nCgktIG11Y2ggYmV0dGVyIFRleHR1cmUgc3VwcG9ydCBvbiBVdGlsaXRpZXMgZnVuY3Rpb25zIGFuZCBvbgoJICBDaGVja0RldmljZVR5cGUKCS0gRDNEUlNfWlZJU0lCTEUgYXMgdW5zdXBwb3J0ZWQgKGFzIHNlZW4gaW4gbXNkbikKCgkqIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLAoJICBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLCBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBCZXR0ZXIgbG9hZGluZyBvZiBJRGlyZWN0TXVzaWNTZWdUcmlnZ2VyVHJhY2sgKGludGVybmFsIGxpc3Qgb2YKCSAgc3VidHJhY2tzKQoJLSBCZXR0ZXIgc3R1YnMgZm9yIElEaXJlY3RNdXNpY1RlbXBvVHJhY2s6OkluaXRQbGF5IGFuZAoJICBJRGlyZWN0TXVzaWNUZW1wb1RyYWNrOjpFbmRQbGF5IChJbml0UGxheSBzaG91bGQgcmV0dXJuIGEgdmFsaWQKCSAgbWVtb3J5IHBvaW50ZXIgc28gYWxsb2NhdGUgaXQpLiBTaG91bGQgYmUgZXh0ZW5kZWQgZm9yIGFsbAoJICBJRGlyZWN0TXVzaWNUcmFjayBvYmplY3RzLgoKCSogZGxscy9kZXZlbnVtL2RldmVudW1fbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL21vZHVsZS5jLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL21vZHVsZS5jLCBkbGxzL2tlcm5lbC92ZXJzaW9uLmMsCgkgIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9wc2FwaS9wc2FwaV9tYWluLmMsIGRsbHMvcnBjcnQ0L2Nwc2YuYywKCSAgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS91cmwuYywgZGxscy91c2VyL2hvb2suYywKCSAgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy93aW5tbS9wbGF5c291bmQuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglHZXRNb2R1bGVGaWxlTmFtZVtBV10gZG9lc24ndCB0ZXJtaW5hdGUgdGhlIHN0cmluZyBpZiB0aGUgYnVmZmVyIGlzCgl0b28gc21hbGwuCgoyMDA0LTA1LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kYmdoZWxwL2RiZ2hlbHAuYywgZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLAoJICBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9tc2MuYywKCSAgZGxscy9kYmdoZWxwL3BlX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvc3RhYnMuYywKCSAgZGxscy9kYmdoZWxwL3N0b3JhZ2UuYywgZGxscy9kYmdoZWxwL3N5bWJvbC5jLCBkbGxzL2RiZ2hlbHAvdHlwZS5jLAoJICBpbmNsdWRlL2N2Y29uc3QuaCwgaW5jbHVkZS9kYmdoZWxwLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gcmVtb3ZlZCBmaWxlIGV4dGVuc2lvbiBmcm9tIG1vZHVsZSAoYW5kIHN1ZmZpeGVkIEVMRiBtb2R1bGVzIHdpdGgKCSAgPGVsZj4pCgktIGFkZGVkIGdlbmVyaWMgdGh1bmsgc3VwcG9ydCBmb3IgYnVpbHRpbiBtb2R1bGVzICh3aXRoIHRoZSBoZWxwIG9mCgkgIHdpbmVidWlsZCdzIG5ldyBtYXJrZXJzIGZvciB0aHVua3MpCgktIGZvciBFTEYgbW9kdWxlcywgbm8gbG9uZ2VyIGdlbmVyYXRpbmcgU3ltVGFnUHVibGljU3ltYm9scyBvYmplY3RzCgkgIGZyb20gRUxGIHB1YmxpYyBzeW1ib2wgdGFibGUKCS0gYmVjYXVzZSBvZiBsYXN0IHBvaW50LCByZXdyb3RlIHN0YWJzIHN5bWJvbHMnIGFkZHJlc3MgYW5kIHNpemUKCSAgbWFuYWdlbWVudCBieSBwYXJzaW5nIGRpcmVjdGx5IHRoZSBzeW10YWIgaW5zdGVhZCBvZiB1c2luZwoJICBTeW1UYWdQdWJsaWNTeW1ib2xzIG9iamVjdHMKCS0gY2xlYW5lZCB1cCBTeW1UYWdQdWJsaWNTeW1ib2xzIG9iamVjdCBuYW1lcyBmb3IgbmF0aXZlIG1vZHVsZXMKCS0gZml4ZWQgb2ZmIGJ5IG9uZSBlcnJvcnMgaW4gYXJyYXkgbWFuYWdlbWVudAoJLSBTeW1Mb2FkTW9kdWxlKGhQcm9jLDAsMCwwLDApICh3aW5lIGV4dGVuc2lvbikgd2lsbCBmb3JjZSB0aGUKCSAgcmVzeW5jaHJvbml6YXRpb24gb2YgaW50ZXJuYWwgRUxGIG1vZHVsZXMgbGlzdCkKCS0gbmV3IG9wdGlvbiAoMHg0MDAwMDAwMCkgZm9yIFN5bXtHZXR8U2V0fU9wdGlvbiB0byByZXBvcnQgRUxGIG1vZHVsZXMKCSAgaW4gU3ltRW51bU1vZHVsZXMgKGFzIHdlbGwgYXMgbG9hZGVyIHdpdGggPHdpbmUtbG9hZGVyPikKCS0gc29tZSBtaW5vciBpbnRlcm5hbCBjbGVhbi11cHMKCS0gZW5oYW5jZWQgY29uc3QgY29ycmVjdG5lc3MKCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBhZGRlZCBzaXplIGluZm9ybWF0aW9uIGFib3V0IG1vc3Qgb2YgdGhlIGdlbmVyYXRlZCB0aHVua3MgKGltcG9ydCwKCSAgMTYvMzIgcmVsYXkuLi4pCgktIG1hcmtlZCB0aGUgd2luZSB0aHVua3MgYnkgaW5zZXJ0aW5nIHNwZWNpZmljIHN5bWJvbHMgKHRvIGJlIG1hbmFnZWQKCSAgYnkgd2luZSdzIGRiZ2hlbHApCgktIHJlbW92ZWQgdGhlIHN0YWJzIGdlbmVyYXRpb246CgkgICsgbW9zdGx5IHVzZWQgYnkgd2luZWRiZywgYW5kIHRoZSBwcmV2aW91cyBpdGVtIHdpbGwgcmVwbGFjZSBpdCBmb3IKCSAgICBkYmdoZWxwCgkgICsgc3RpbGwgYnJva2VuIGZvciBnZGIgYW55d2F5CgktIGVuaGFuY2VkIGNvbnN0IGNvcnJlY3RuZXNzCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJQWN0aXZhdGUgYW5vdGhlciB3aW5kb3cgd2hlbiB0aGUgZGlhbG9nIGdldHMgaGlkZGVuIGluIEVuZERpYWxvZy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLnJjOgoJQWRkZWQgc29tZSBvcHRpb25hbCBtZXNzYWdlcyB0byBtYWtlIGFsbCB0ZXN0cyBzdWNjZWVkIG9uIFhQLgoJQWRkZWQgdGVzdHMgZm9yIEVuZERpYWxvZyBhbmQgYSBzaW1wbGUgbW9kYWwgZGlhbG9nLgoKCSogZGxscy9nZGkvcGFpbnRpbmcuYywgZGxscy9rZXJuZWwvcmVnaXN0cnkxNi5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmNvbi5oLCBpbmNsdWRlL3dpbmdkaS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG1pc3NpbmcgcHJvdG90eXBlcy4KCgkqIGRsbHMvd2luZXBzL2NsaXBwaW5nLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXaGVuIGJ1aWxkaW5nIFBvc3RTY3JpcHQgcGF0aHMgd2l0aCB0aGUgKl9QQVRIIGVzY2FwZXMsIGRvbid0IGNsaXAgdGhlCglwYXRoIGJ1aWxkaW5nIHByaW1pdGl2ZXMuICBUaGUgY2xpcHBpbmcgY29tZXMgaW50byBwbGF5IHdoZW4gd2UKCWFjdHVhbGx5IGRyYXcgc29tZXRoaW5nLgoKCSogZGxscy9tc2kvLmN2c2lnbm9yZSwgZGxscy9tc2kvTWFrZWZpbGUuaW4sIGRsbHMvbXNpL3ZlcnNpb24ucmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCB2ZXJzaW9uIGluZm8gdG8gTVNJIGRsbC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21zdmNydGQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0ZC9kZWJ1Zy5jLCBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjLAoJICBkbGxzL21zdmNydGQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnRkL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydGQvdGVzdHMvZGVidWcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJSW1wbGVtZW50ZWQgdGhlIGRlYnVnIHZlcnNpb24gb2Ygb3BlcmF0b3IgbmV3IChDKyspLgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZDNkcm0vLmN2c2lnbm9yZSwgZGxscy9kM2RybS9NYWtlZmlsZS5pbiwgZGxscy9kM2RybS9kM2RybS5zcGVjLAoJICBkbGxzL2QzZHJtL2QzZHJtX21haW4uYywgZGxscy9kM2RybS92ZXJzaW9uLnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCBlbXB0eSAoc3R1YnMgaW4gc3BlYyBvbmx5KSBkM2RybS4KCgkqIHdpbmRvd3Mvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglPbmx5IGNoaWxkIHdpbmRvd3MgcmVjZWl2ZSBXTV9TSE9XV0lORE9XIGluIERlc3Ryb3lXaW5kb3coKSB1bmRlcgoJV2luZG93cy4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogQWRkZWQgYSBjb3VwbGUgb2YgdGVzdHMgZm9yIFNldEFjdGl2ZVdpbmRvdy4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9zaGFkZXIuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUVuYWJsZWQgcGl4ZWwgc2hhZGVycyAxLjQuCglGaXhlZCBoYW5kbGluZyBvZiBtYWNyb3MgYXQgdGhlIGVuZCBvZiB2ZXJ0ZXggc2hhZGVycy4KCUhhbmRsZWQgTk9QIGFuZCBQSEFTRSBpbnN0cnVjdGlvbnMuCglGaXhlZCB2ZXJzaW9ucyBvZiBzZXZlcmFsIGluc3RydWN0aW9ucy4KCUltcHJvdmVkIHBpeGVsIHNoYWRlciBkdW1wIHRyYWNlcy4KCUZpeGVkIHdyaXRlIG1hc2suCglGaXhlZCBYMiBhbmQgLVgyIHNvdXJjZSBtb2RpZmllcnMgYW5kIGltcGxlbWVudHMgRFogYW5kIERXIG9uZXMuCglJbXBsZW1lbnRlZCB0ZXhjcmQsIHRleGxkLCB0ZXhtM3gzcGFkLCB0ZXhtM3gzdGV4LCB0ZXhtM3gzc3BlYyBhbmQKCXRleG0zeDN2c3BlYyBpbnN0cnVjdGlvbnMgKGFuZCBwYXJ0aWFsbHkgdGV4YmVtKS4KCUFkZGVkIGNuZCwgY21wIGFuZCBscnAgaW5zdHJ1Y3Rpb25zLgoJUmV3cml0ZSBvZiB0aGUgImF1dG9wYXJhbSIgY29kZSBzbyB3ZSBjYW4gYWRkIG1vcmUgY29tcGxpY2F0ZWQKCWluc3RydWN0aW9ucyAob25seSBjbmQgYW5kIGNtcCBhcyB3ZWxsIGFzIHNpbXBsZSBpbnN0cnVjdGlvbnMgdXNlIHRoYXQKCWNvZGUgYXQgdGhlIG1vbWVudCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gVEJOX0RSQUdPVVQgYW5kIE5NX1JEQkxDTEsgbm90aWZpY2F0aW9ucy4KCS0gUmVtb3ZlIHVubmVlZGVkIG1lbWJlciBvZiBwcml2YXRlIHRvb2xiYXIgc3RydWN0LgoKMjAwNC0wNS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmM6CglBZGRlZCBzdXBwb3J0IGZvciBtYXBwaW5nIFVOQyBmaWxlbmFtZXMgdG8gdGhlIGRvc2RldmljZXMgZGlyZWN0b3J5LgoKCSogZGxscy9kYmdoZWxwL3N5bWJvbC5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHhkaWFnbi9keGRpYWdfbWFpbi5jLCBkbGxzL2R4ZGlhZ24vcmVnc3ZyLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbXByL21wcl9tYWluLmMsIGRsbHMvbXNpL21zaS5jLAoJICBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL250ZGxsL3RocmVhZC5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLAoJICBkbGxzL3NlY3VyMzIvc2VjdXIzMi5jLCBkbGxzL3NlY3VyMzIvd3JhcHBlci5jLAoJICBkbGxzL3NldHVwYXBpL2Rldmluc3QxNi5jLCBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3V4dGhlbWUvdXh0aGVtZS5zcGVjLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL3N0cmluZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdHJTcG5XIGRvZXNuJ3QgZXhpc3QgaW4gY29tY3RsMzIuZGxsIGJ1dCBTdHJDU3BuVyBkb2VzLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3VybG1vbi5pZGw6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHRoZSBJSW50ZXJuZXRTZXNzaW9uIGludGVyZmFjZS4KCgkqIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlcyB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmg6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4IHNjYW5mIGhhbmRsaW5nIG9mIGZsb2F0IG51bWJlcnMgKGJlZ2lubmluZyB3aXRoIGEgZG90KS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IFRob21hcyBXZWlkZW5tdWVsbGVyIDx3M3NlZWtAcmVhY3Rvcy5jb20+CglDb21ib2JveCBwb3B1cHMgc2hvdWxkIGJlIGFsd2F5cy1vbi10b3AuCgoJKiBkbGxzL2QzZDgvZHJhd3ByaW0uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSGFuZGxlIFhZWlJIVyB2ZXJ0ZXggbW9kZSBjb3JyZWN0bHkgaW4gc2xvdyBwYXRoLgoKCSogZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBGaXJzdCBkcmFmdHMgZm9yIElEaXJlY3RNdXNpY1NlZ21lbnQ6OkdldFBhcmFtIGFuZAoJICBJRGlyZWN0TXVzaWNUZW1wb1RyYWNrOjpHZXRQYXJhbSAobmVlZCBtb2RpZiBvbiBMb2FkKS4KCS0gUmV0dXJuIHZhbHVlIGZpeGVzIGZvciBHZXRDbGFzc0lEIG9mIFRlbXBvVHJhY2sgYW5kIFNlZ21lbnQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCS0gTGV0IHRoZSBzdWJjbGFzc2luZyBzdGFjayBncm93IHRoZSBvcHBvc2l0ZSB3YXkgdG8gbWFrZSB0aGUgY29kZQoJICBtb3JlIHRyYW5zcGFyZW50LgoJLSBSZW1vdmUgU3ViY2xhc3NXbmRQcm9jIGFuZCBtb3ZlIGl0cyBsb2dpYyB0byBEZWZTdWJjbGFzc1Byb2MuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gSWYgYSBjcnlwdG8gcHJvdmlkZXIgZG9lcyBub3QgaGF2ZSBhIFNpZ25hdHVyZSBpbiB0aGUgcmVnaXN0cnksCgkgIGNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIFNpZ0luRmlsZSB2YWx1ZSBiZWZvcmUgZmFpbGluZy4KCS0gR2V0IHJpZCBvZiBhIGNvdXBsZSByZWR1bmRhbnQgYXNzaWdubWVudHMuCgoyMDA0LTA1LTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL2ZpbGUuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci9zbWIuYywgc2VydmVyL3RyYWNlLmM6CglSZW1vdmVkIHRoZSBubyBsb25nZXIgdXNlZCBTTUIgZmlsZSBJL08gc3VwcG9ydCwgd2UgY2FuJ3QgZG8gcmVsaWFibGUKCWZpbGUgSS9PIGluIHVzZXIgc3BhY2UgYW55d2F5LgoKCSogZGxscy9udGRsbC9wYXRoLmMsIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jOgoJQmV0dGVyIGZpeCBmb3IgcmVtb3ZpbmcgdHJhaWxpbmcgc3BhY2VzIGluIFJ0bEdldEZ1bGxQYXRoTmFtZV9VLgoJTmVlZCB0byByZW1vdmUgdHJhaWxpbmcgZG90cyB0b28gKHJlcG9ydGVkIGJ5IEtlbiBCZWxsZWF1KS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIG1pc2MvcmVnaXN0cnkuYzoKCVVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW5zdGVhZCBvZiBjb25maWcgZmlsZSBlbnRyaWVzIHRvIHNwZWNpZnkKCXBhdGgsIHByb2ZpbGUsIHRlbXAsIHdpbmRvd3MgYW5kIHN5c3RlbSBkaXJlY3Rvcmllcy4KCUNvbnZlcnQgZXhpc3RpbmcgY29uZmlnIGZpbGUgZW50cmllcyB0byByZWdpc3RyeSB2YWx1ZXMgdW5kZXIKCUhLQ1VcRW52aXJvbm1lbnQuCgoJKiB0b29scy93aW5lLmluZjogQWRkZWQgRW52aXJvbm1lbnQgc2VjdGlvbi4KCUZpeGVkIHBhdGggb2Ygc2hlbGwgZm9sZGVycyBrZXkgaW4gSEtFWV9VU0VSUy4KCgkqIGRsbHMvYW1zdHJlYW0vdmVyc2lvbi5yYywgZGxscy9kM2Q4L3ZlcnNpb24ucmMsIGRsbHMvZDNkOS92ZXJzaW9uLnJjLAoJICBkbGxzL2QzZGltL3ZlcnNpb24ucmMsIGRsbHMvZGRyYXcvdmVyc2lvbi5yYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW0ucmMsIGRsbHMvZGlucHV0L3ZlcnNpb24ucmMsCgkgIGRsbHMvZGlucHV0OC92ZXJzaW9uLnJjLCBkbGxzL2RtYmFuZC92ZXJzaW9uLnJjLAoJICBkbGxzL2RtY29tcG9zL3ZlcnNpb24ucmMsIGRsbHMvZG1pbWUvdmVyc2lvbi5yYywKCSAgZGxscy9kbWxvYWRlci92ZXJzaW9uLnJjLCBkbGxzL2Rtc2NyaXB0L3ZlcnNpb24ucmMsCgkgIGRsbHMvZG1zdHlsZS92ZXJzaW9uLnJjLCBkbGxzL2Rtc3ludGgvdmVyc2lvbi5yYywKCSAgZGxscy9kbXVzaWMvdmVyc2lvbi5yYywgZGxscy9kbXVzaWMzMi92ZXJzaW9uLnJjLAoJICBkbGxzL2RwbGF5eC92ZXJzaW9uLnJjLCBkbGxzL2RwbmV0L3ZlcnNpb24ucmMsCgkgIGRsbHMvZHBuaHBhc3QvdmVyc2lvbi5yYywgZGxscy9kc291bmQvdmVyc2lvbi5yYywKCSAgZGxscy9kc3dhdmUvdmVyc2lvbi5yYywgZGxscy9keGRpYWduL3ZlcnNpb24ucmMsIGRsbHMvbXNkbW8vcnNyYy5yYywKCSAgZGxscy9xY2FwLy5jdnNpZ25vcmUsIGRsbHMvcWNhcC9NYWtlZmlsZS5pbiwgZGxscy9xY2FwL3ZlcnNpb24ucmMsCgkgIGRsbHMvcXVhcnR6L3ZlcnNpb24ucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVVwZGF0ZWQgdGhlIHZlcnNpb24gaW5mbyBvZiBhbGwgRGlyZWN0WCBkbGxzIHRvIHRoZSB2ZXJzaW9uIG51bWJlcnMgb2YKCURpcmVjdFggOS4wYiBmb3IgV2luZG93cyAyMDAwL1hQLgoKCSogZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsIGRsbHMvZG1zdHlsZS9zdHlsZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIFBhcnNlIERNU3R5bGUgbW90aWZzIChpZSBwYXR0ZXJucykgYW5kIGJhbmRzIChmaWxsIGxpc3RzKS4KCS0gSW1wbGVtZW50ICBJRGlyZWN0TXVzaWNTZWdtZW50ODo6SW5zZXJ0VHJhY2sgYW5kCgkgIElEaXJlY3RNdXNpY1NlZ21lbnQ4OjpSZW1vdmVUcmFjayAobm93IEVudW1UcmFjayBHZXRQYXJhbSwgYW5kCgkgIEdldFRyYWNrIHNob3VsZCBiZSBlYXN5IHRvIGRvKS4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCVNvbWUgdXBkYXRlcyB0byB0aGUgZmFxLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOgoJU2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyBmcm9tIHRoZSBIS0NVXEVudmlyb25tZW50IGtleSB0b28uCglNb3ZlZCBjdXJyZW50IGRpcmVjdG9yeSBpbml0aWFsaXNhdGlvbiB0byBwcm9jZXNzLmMuCglNYWtlIHN1cmUgdG8gYWx3YXlzIHBhc3MgdGhlIGNvcnJlY3QgY3VycmVudCBkaXJlY3RvcnkgaW4gdGhlIHByb2Nlc3MKCXBhcmFtZXRlcnMgZm9yIGNoaWxkIHByb2Nlc3Nlcy4KCgkqIGRsbHMvZG1iYW5kL01ha2VmaWxlLmluLCBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLAoJICBkbGxzL2RtYmFuZC9kbXV0aWxzLmMsIGRsbHMvZG1iYW5kL2RtdXRpbHMuaCwgZGxscy9kbWltZS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbWltZS9kbWltZV9tYWluLmMsIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLAoJICBkbGxzL2RtaW1lL2RtdXRpbHMuYywgZGxscy9kbWltZS9kbXV0aWxzLmgsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLCBkbGxzL2Rtc3R5bGUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3R5bGUvZG11dGlscy5jLCBkbGxzL2Rtc3R5bGUvZG11dGlscy5oLCBkbGxzL2Rtc3R5bGUvc3R5bGUuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBBZGQgdGhlIHNhbWUgbmV3IGZpbGVzIChkbXV0aWxzLmMvZG11dGlscy5oKSBpbnRvIGRtaW1lLGRtYmFuZCBhbmQKCSAgZG1zdHlsZSBkaXJlY3RvcnkgdGhhdCBzaGFyZSB0aGUgZGVidWcgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIGRtdXNpYwoJICBkbGxzIChhcyBSb2sncyBpZGVhIGZvciBkbWxvYWRlcikuCgktIFVzZSBuZXcgaGVscGVycyBmdW5jdGlvbnMgdG8gbG9hZCBSZWZlcmVuY2VzIG9uCgkgIElEaXJlY3RNdXNpY1NlZ1RyaWdnZXJUcmFjayBsb2FkaW5nIChjdXJyZW50bHkgdGhleSBsZWFrKS4KCS0gSURpcmVjdE11c2ljU3R5bGUgKGFsbW9zdCBwYXJ0aWFsKSBsb2FkaW5nLgoJLSBNaW5vciBmaXhlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzoKCUZpeGVkIHNvbWUgb2YgdGhlIEdldFNob3J0UGF0aE5hbWUgdGVzdHMgdG8gdXNlIHRoZSBzaG9ydCB2ZXJzaW9uIG9mCgl0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2hlcmUgbmVlZGVkLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglQcmludCBodW1hbi1yZWFkYWJsZSBjYXBhYmlsaXRpZXMgZmxhZy4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOgoJTWFrZSBzdXJlIHRvIHNhdmUgdGhlIHJlZ2lzdHJ5IGZpbGVzIGV2ZW4gaWYgd2UgZmFpbGVkIHRvIGxvYWQgdGhlbS4KCgkqIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVNhbXBsZSByYXRlIHNhbml0eSBjaGVjay4KCUZpeCBTTVBURSB0aW1lLgoKCSogdG9vbHMvd2luZWluc3RhbGwsIHRvb2xzL3dpbmVwcmVmaXhjcmVhdGUuaW46CglNYWtlIHdpbmVpbnN0YWxsIHVzZSB3aW5lcHJlZml4Y3JlYXRlIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlCglmdW5jdGlvbmFsaXR5LgoKMjAwNC0wNS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2NoYW5nZS5jLCBkbGxzL2tlcm5lbC9maWxlLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMva2VybmVsL21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9wYXRoLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdm9sdW1lLmM6CglBZGRlZCBwcm9wZXIgc3VwcG9ydCBmb3Igc3dpdGNoaW5nIGZpbGUgQVBJcyBiZXR3ZWVuIEFOU0kgYW5kIE9FTQoJY29kZXBhZ2VzLiBPcHRpbWl6ZWQgc29tZSBvZiB0aGUgQS0+VyBjb252ZXJzaW9ucyBieSB1c2luZyB0aGUKCXBlci10aHJlYWQgVW5pY29kZSBzdHJpbmcgYnVmZmVyLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+Cgl3YXZlT3V0R2V0RGV2Q2Fwc0EgY2FuIGZhaWwgd2l0aCBNTVNZU0VSUl9CQURERVZJQ0VJRCBvcgoJTU1TWVNFUlJfTk9EUklWRVIgd2hlbiBubyBkcml2ZXJzIHByZXNlbnQuCglBZGQgYmV0dGVyIGVycm9yIG1lc3NhZ2VzLgoKCSogZGxscy9kaW5wdXQ4L3ZlcnNpb24ucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJVXBkYXRlIHRvIHZlcnNpb24gOS4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFjY2VwdCBFTVJfRVhUVEVYVE9VVCByZWNvcmRzIHdpdGggZW1ydGV4dC5vZmZEeCBzZXQgdG8gMC4KCgkqIERFVkVMT1BFUlMtSElOVFM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNpdGVzdGFyLm5ldD4KCUFkZCBuZXcgZGxscyBhbmQgZml4IGFscGhhYmV0aWNhbCBsb2NhdGlvbiBvZiBhIGNvdXBsZSBkbGxzLgoKCSogZGxscy9udGRsbC9wYXRoLmMsIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jOgoJUmVtb3ZlIHRyYWlsaW5nIHNwYWNlcyBmcm9tIHRoZSBmaWxlbmFtZSBpbiBSdGxHZXRGdWxsUGF0aE5hbWVfVS4KCgkqIGRsbHMvZG1iYW5kL2JhbmQuYywgZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsCgkgIGRsbHMvZG1pbWUvc2VnbWVudC5jLCBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvY2hvcmR0cmFjay5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIEZld2VyIEZJWE1Fcy4KCS0gQmV0dGVyIHRyYWNlcy4KCS0gSURpcmVjdE11c2ljQmFuZCBsb2FkaW5nIGZpeGVzOgoJICAtIGxvYWQgY29ycmVjdGx5IGluc3RydW1lbnRzIChhbmQgUmVmZXJlbmNlcwoJICAtIGxvYWQgSURpcmVjdE11c2ljQ29sbGVjdGlvbiBvYmplY3QgKHVzaW5nIERNTG9hZGVyKQoJICAtIGluc2VydCB0aGUgdHdvIG9uIHRoZSBsaXN0CgktIElEaXJlY3RNdXNpY0JhbmRUcmFjayBsb2FkaW5nIGZpeGVzIChmaWxsIE9CSkVDVERFU0MgYW5kIHBhcnNlIFVORk8KCSAgaW5mb3MpLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2l0ZXN0YXIubmV0PgoJU29tZSB1cGRhdGVzIHRvIHRoZSBmYXEuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglGcmVlIHVwIHRoZSBvcmlnaW5hbCBidWZmZXIgcG9pbnRlciBpbnN0ZWFkIG9mIHRoZSBvbmUgd2UgYWR2YW5jZWQuCglPbmx5IGNhbGwgZ2V0RHJpdmUoKSBvbmNlIGluc2lkZSBvZiBhZGREcml2ZSgpLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0Lmg6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCVByZXZlbnQgbWVtb3J5IGxlYWsgYW5kIHN1cGVyZmx1b3VzIHN0YXR1cyBub3RpZmljYXRpb25zLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBGaXhlZCBjb3B5L3Bhc3RlIGJ1ZyBpbiBwcmV2aW91cyBjaGFuZ2UuCgoJKiBkbGxzL2RtbG9hZGVyL01ha2VmaWxlLmluLCBkbGxzL2RtbG9hZGVyL2NsYXNzZmFjdG9yeS5jLAoJICBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLCBkbGxzL2RtbG9hZGVyL2RlYnVnLmMsCgkgIGRsbHMvZG1sb2FkZXIvZGVidWcuaCwgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9tYWluLmMsCgkgIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLCBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CglkbWxvYWRlcjogY29tcGxldGUgcmV3cml0ZSBhbmQgZnVsbCBpbXBsZW1lbnRhdGlvbi4KCjIwMDQtMDUtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RtYmFuZC9iYW5kLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJSURpcmVjdE11c2ljQmFuZCBsb2FkaW5nLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglQYXNzIGNyeXB0IHByb3ZpZGVyIGFuZCB0eXBlIHRvIENQQWNxdWlyZUNvbnRleHQuCgoJKiBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWMsIGRsbHMvbXN2Y3J0NDAvbXN2Y3J0NDAuc3BlYywKCSAgZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYzoKCUZpeGVkIHRoZSBwcm90b3R5cGVzIG9mIHRoZSBfYWRqX2ZkaXZfKiBmdW5jdGlvbnMuCgoJKiBkbGxzL2RtYmFuZC9iYW5kdHJhY2suYywgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kbWltZS9zZWdtZW50LmMsIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jLCBkbGxzL2Rtc3R5bGUvY2hvcmR0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvc3R5bGV0cmFjay5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIFNlZ21lbnQgbG9hZGluZyBmaXggKGNvcnJlY3QgRk9VUkNDX1JJRkYgdHJhY2tzIGhhbmRsaW5nKS4KCS0gSURpcmVjdE11c2ljU3R5bGVUcmFjayBsb2FkaW5nIChuZWVkIERNIFJlZmVyZW5jZXMpLgoJLSBJRGlyZWN0TXVzaWNCYW5kVHJhY2sgbG9hZGluZyAobmVlZCBJRGlyZWN0TXVzaWNCYW5kIGxvYWRpbmcpLgoKCSogZGxscy9kaW5wdXQ4Ly5jdnNpZ25vcmUsIGRsbHMvZGlucHV0OC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kaW5wdXQ4L3ZlcnNpb24ucmM6CglUb20gV2lja2xpbmUgPHR3aWNrbGluZUBzaXRlc3Rhci5uZXQ+CglBZGRlZCB2ZXJzaW9uIGluZm8uCgoJKiBkbGxzL3dpbmVwcy9lc2NhcGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBQb3N0U2NyaXB0IGNsaXAgb3BlcmF0b3IgZG9lc24ndCBjbGVhciB0aGUgY3VycmVudCBwYXRoLCBzbyBhZnRlcgoJdGhlIENMSVBfVE9fUEFUSCBlc2NhcGUgd2Ugd2FudCB0byBjbGVhciBpdCBvdXJzZWx2ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJQWRkIERUX0VORF9FTExJUFNJUyBhcyBkZWZhdXQgc3R5bGUgZm9yIHRleHQuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglQcm9wZXJseSByZXRyaWV2ZSBhbmQgcmVsZWFzZSBoYW5kbGVzLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9maWxlLmMsIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gcmV3cm90ZSB0aGUgZmlsZSBjb2RlIHNvIHRoYXQgc3RyZWFtcyBtYW5hZ2UgbG93IGxldmVsIGZpbGUgZGVzYwoJICAodGhlIGNvZGUgd2FzIHdyaXR0ZW4gdGhlIG90aGVyIHdheSBhcm91bmQpCgktIHJld29ya2VkIHRoZSBmbGFnIGhhbmRsaW5nIGNvZGUgKG5vdyB0aGUgc3RyZWFtLl9mbGFnIGlzIGNsb3NlciB0bwoJICB3aGF0IE1TIGRvZXMpCgktIHNpbXBsaWZpZWQgdGVtcCBmaWxlcyBoYW5kbGluZyBieSB1c2luZyBGSUxFX0ZMQUdfREVMRVRFX09OX0NMT1NFIGluCgkgIENyZWF0ZUZpbGUKCS0gZml4ZWQgYSBjb3VwbGUgb2YgYnVncwoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCVdvbGZnYW5nIFNjaHdvdHplciA8d29sZmdhbmcuc2Nod290emVyQGdteC5uZXQ+CglTdXBwb3J0IGxwc3RyQ3VzdG9tRmlsdGVyIGFuZCByZXR1cm4gbkZpbHRlckluZGV4IGluIGZpbGUgZGlhbG9nLgoKCSogdG9vbHMvd2luZS5pbmY6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRzIG1zZzcxMSB3aW5lbXAzIHRvIGxpc3Qgb2YgY29kZWNzLgoKMjAwNC0wNS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLCBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywKCSAgZGxscy9kbWltZS9zZWd0cmlnZ2VydHJhY2suYywgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywKCSAgZGxscy9kbXN0eWxlL2Nob3JkdHJhY2suYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL2RtdXNpY2YuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBUeXBvIGZpeCBpbiBkbXVzaWNmLmguCgktIElEaXJlY3RNdXNpY0Nob3JkVHJhY2sgbG9hZGluZy4KCS0gTWFueSBJc0RpcnR5IGFuZCBHZXRDbGFzc0lEIHN0dWJzLgoKCSogZGxscy9pbWFnZWhscC9pbnRlZ3JpdHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEltYWdlRW51bWVyYXRlQ2VydGlmaWNhdGVzIGFuZCBJbWFnZUdldENlcnRpZmljYXRlSGVhZGVyLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBDcm9hdGlhbiBrZXlib2FyZCBsYXlvdXQgdG8gYmV0dGVyIG1hdGNoIHRoZSBYRnJlZTg2IG9uZS4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBhIHRlc3QgZm9yIEdldFdpbmRvd0luZm8sIGl0IHNob3VsZCBub3QgY2hlY2sgY2JTaXplIG1lbWJlciBvZgoJICB0aGUgV0lORE9XSU5GTyBzdHJ1Y3R1cmUuCgktIEFkZCB0ZXN0cyBmb3Igd2luZG93IHN0YXRlIGF0IHRoZSB0aW1lIHRoZSBzeXN0ZW0gY2FsbHMKCSAgSENCVF9DUkVBVEVXTkQgKGZhaWxpbmcgdW5kZXIgV2luZSBhdCB0aGUgbW9tZW50KS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIGNhc2Ugd2hlcmUgaXRlcmF0b3IgcmFuZ2UgY29udGFpbnMgMCBlbGVtZW50cy4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmMsIGxpYnMvd2luZS9jb25maWcuYywgdG9vbHMvd2luZXByZWZpeGNyZWF0ZS5pbjoKCUluaXRpYWwgc3VwcG9ydCBmb3IgYXV0b21hdGljYWxseSBjcmVhdGluZyB0aGUgfi8ud2luZSBkaXJlY3Rvcnkgb24KCXN0YXJ0dXAuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jOgoJSmFrZSBIYW1ieSA8amhhbWJ5QGFub2JqZWN0LmNvbT4KCVNldmVyYWwgb2YgdGhlIHJlZ2lzdHJ5IGtleXMgZm9yIHN5c3RlbSBjb2xvcnMgYW5kIHN5c3RlbSBtZXRyaWNzIHdlcmUKCWluY29ycmVjdC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZCBhbiBpbnRlcmZhY2UgbmFtZSB0byB3aW5lb3NzLCB3aW5lYWxzYSwgd2luZWFydHMgYW5kIHdpbmVqYWNrLgoJQWRkIHN1cHBvcnQgZm9yIHdhdmUgaW50ZXJmYWNlIG1lc3NhZ2Ugd2hlcmUgbWlzc2luZy4KCgkqIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLAoJICBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsIGRsbHMvZG1pbWUvdGVtcG90cmFjay5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIE1hbnkgSURpcmVjdE11c2ljU2VnbWVudCBmaXhlcyAobG9hZGluZykuCgktIEF1ZGlvUGF0aCBjcmFzaCBmaXggKGRvbid0IHVzZSBEU291bmQgQVBJcyBpZiBidWZmZXIgaXMgbnVsbCkuCgktIE1vdmUgZ2VuZXJpYyBmdW5jdGlvbnMgdG8gZG1pbWVfbWFpbi5jIGZvciBmdXR1cmUgcmV1c2UgKGZyb20KCSAgc2VnbWVudC5jKS4KCS0gSURpcmVjdE11c2ljVGVtcG9UcmFjayBsb2FkaW5nIChtYW55IHRlbXBvIGNhc2UgbXVzdCBiZSBoYW5kbGVkKS4KCS0gSURpcmVjdE11c2ljU2VnVHJpZ2dlclRyYWNrIGxvYWRpbmcgaW1wbGVtZW50YXRpb24gKG5vdwoJICBETVJGL0RpcmVjdE11c2ljIFJlZmVyZW5jZXMgbG9hZGluZyBzaG91bGQgYmUgZG9uZSkuCgoJKiBkb2N1bWVudGF0aW9uL3RocmVhZGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbDoKCU1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIGRvY3VtZW50YXRpb24gb24gaG93IHRocmVhZGluZyBpcyBpbXBsZW1lbnRlZCBpbiBXaW5lLgoJQ292ZXJzIGJhc2ljIFdpbjMyIHRocmVhZGluZyBwcmltaXRpdmVzLCBzeXNsZXZlbHMsIHRoZSBURUIgYW5kCglwdGhyZWFkcyB2cyBrdGhyZWFkcy4KCjIwMDQtMDUtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jOgoJRml4ZWQgYnVmZmVyIHNpemUgaGFuZGxpbmcgaW4gR2V0VXNlck5hbWVBIChyZXBvcnRlZCBieSBIYW5udQoJVmFsdG9uZW4pLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Dbi5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfRGUucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0VuLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fcy5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRnIucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0l0LnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9KYS5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfS28ucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX05sLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9QbC5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfUHQucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX1J1LnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9TaS5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfVGgucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1VrLnJjLAoJICBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglJbXBsZW1lbnRlZCBQU0hfV0laQVJEOTdfT0xEIGFuZCBQU0hfV0laQVJEOTdfTkVXIHByb3BlcnR5IHNoZWV0CglzdHlsZXMuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIFcgYnVmZmVyIGhhbmRsaW5nLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRml4IGNsaXBib2FyZCByZWdyZXNzaW9uLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1vcmUgU2hvd1dpbmRvdy9TZXRXaW5kb3dQb3MgdGVzdHMuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglDbGVhbnVwIGNvbnZlcnNpb24gZnJvbSBBLT5XLgoKCSogaW5jbHVkZS90aHJlYWQuaDogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglCZXR0ZXIgaGF2ZSBpbnRlcm5hbCAmIGV4dGVybmFsIFRFQiBkZWZpbml0aW9ucyBoYXZlIHRoZSBzYW1lIHNpemUuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgYSBtaXNzaW5nIHR5cGVkZWYuCgoJKiBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvZHJhd3ByaW0uYywgZGxscy9kM2Q4L3NoYWRlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgcGl4ZWwgc2hhZGVycyB1c2luZyBBUkJfZnJhZ21lbnRfcHJvZ3JhbSBleHRlbnNpb24uCgoJKiBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLAoJICBkbGxzL21zYWNtL3Rlc3RzL21zYWNtLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTW9yZSBwYXJhbWV0ZXIgY2hlY2tpbmcgZml4ZXMgd2l0aCB0ZXN0cy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglDb3JyZWN0bHkgY3JlYXRlIHRoZSBieXRlIGFycmF5IG9mIGdpZiBpbWFnZXMgdG8gbWF0Y2ggd2hhdAoJQ3JlYXRlRElCaXRtYXAgZXhwZWN0cy4KCgkqIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLAoJICBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLAoJICBkbGxzL2RtaW1lL3NlZ21lbnQuYywgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9wcml2YXRlLmgsCgkgIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gUmVsZWFzZSBEU0J1ZmZlciBvbiBBdWRpb1BhdGggZGVzdHJ1Y3Rpb24uCgktIFNlbWkgc3R1YiBmb3IgQXVkaW9QYXRoIEFjdGl2YXRlLgoJLSBJRGlyZWN0TXVzaWNQZXJmb3JtYW5jZTg6OkNyZWF0ZUF1ZGlvUGF0aCBzdHViLgoJLSBNb3N0IG9mIHRoZSBJRGlyZWN0TXVzaWNTZWdtZW50OF9bU2V0LEdldF0qICh1c2luZyBoZWFkZXIpLgoJLSBMb2FkIG9mIFN0cmVhbWVyIElEaXJlY3RNdXNpY1NlZ21lbnQ4IGhlYWRlci4KCgkqIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2JqaWRsLmlkbDoKCUpha2UgSGFtYnkgPGpoYW1ieUBhbm9iamVjdC5jb20+CglJTWVzc2FnZUZpbHRlcjo6SGFuZGxlSW5Db21pbmdDYWxsKCkgc2hvdWxkIGJlIEhhbmRsZUluY29taW5nQ2FsbCgpLgoKCSogZGxscy90YXBpMzIvbGluZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbXBsZW1lbnRhdGlvbiBvZiBsaW5lR2V0VHJhbnNsYXRlQ2Fwcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX1VrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Vay5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfVWsucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1VrLnJjOgoJSWx5YSBLb3JuaXlrbyA8a19pbHlhQHVrci5uZXQ+CglFbmNvZGluZyBmaXhlcyBpbiBVa3JhaW5pYW4gdHJhbnNsYXRpb24uCgoyMDA0LTA1LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZWdpc3RyeS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCU1vdmVkIGxvYWRpbmcgb2YgdGhlIGhvbWUgcmVnaXN0cnkgZmlsZXMgdG8gdGhlIHNlcnZlciwgdGhlcmUncyBubwoJcmVhbCBuZWVkIHRvIG1ha2UgdGhlc2UgY29uZmlndXJhYmxlLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9zZWMuYzoKCVVzZSB0aGUgVW5peCBjb2RlcGFnZSB0byBjb252ZXJ0IHRoZSB1c2VyIG5hbWUgdG8gVW5pY29kZS4KCgkqIGRsbHMvbXByL3duZXQuYzogS3Jpc2huYSBNdXJ0aHkgPEtyaXNobmEuTXVydGh5QGd1cHRhd29ybGR3aWRlLmNvbT4KCVdOZXRHZXRDb25uZWN0aW9uKCk6IHVzZSBRdWVyeURvc0RldmljZSB0byByZXR1cm4gYSBmYWtlIHJlbW90ZSBuYW1lCglpbnN0ZWFkIG9mIHRoZSBkcml2ZSBsYWJlbC4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS91cmxtb24uaWRsOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnRlZCBJc0FzeW5jTW9uaWtlci4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy94MTFkcnYvd2luZG93LmMsIHdpbmRvd3Mvd2lucG9zLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBXTV9HRVRNSU5NQVhJTkZPIGRlZmF1bHQgYmVoYXZpb3VyIG1vcmUgbGlrZSB0aGUgV2luZG93cyBvbmUuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYzoKCU1hdHRoZXcgRGF2aXNvbiA8bWpkNzdAY2FtLmFjLnVrPgoJVXBkYXRlIHNwZWMgZmlsZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogS3Jpc2huYSBNdXJ0aHkgPEtyaXNobmEuTXVydGh5QGd1cHRhd29ybGR3aWRlLmNvbT4KCUVNX1VORE8gc2hvdWxkIGFsd2F5cyByZXR1cm4gVFJVRSBmb3Igc2luZ2xlIGxpbmUgZWRpdC4KCjIwMDQtMDUtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBSRUFETUUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLmRlLCBkb2N1bWVudGF0aW9uL1JFQURNRS5mciwKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUuaXQsIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0X2JyLAoJICBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLAoJICBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9vcHRpb25zLmMsCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgbGFzdCByZW1haW5pbmcgd2luZSBvcHRpb25zIHdoZW4gcnVubmluZyBwcm9ncmFtcy4KCUtlZXAgc3VwcG9ydCBmb3IgLS1oZWxwLCBhbmQgLS12ZXJzaW9uIHdoZW4gdGhleSBhcmUgdGhlIG9ubHkgb3B0aW9ucwoJb24gdGhlIGNvbW1hbmQgbGluZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYzoKCUZpeGVkIGNyYXNoIHdoZW4gc2VsZWN0aW5nIHRoZSBkcml2ZSBsZXR0ZXIgY29tYm8gYm94LgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6CglSZW1vdmVkIGhhbmRsaW5nIG9mIHNwZWNpYWwgcm9vdCBrZXlzLCB0aGlzIGlzIGRvbmUgYnkgdGhlIGNsaWVudCBub3cuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOiBBbmRyZXkgUGFub3YgPHBhdkBtZXRpYi5ydT4KCUluIGdldF9idWZmZXJfc3BhY2UoKSBmdW5jdGlvbiwgSGVhcFJlQWxsb2MoKSB3aWxsIG5vdCBhbGxvY2F0ZSBtZW1vcnkKCWlmIHBhc3NlZCAqYnVmZmVyIHZhbHVlIGlzIE5VTEwuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGluY2x1ZGUvdXNlci5oLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgYXBwbGljYXRpb25zLCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRvIHNldCBkYXRhIGludG8gdGhlCgljbGlwYm9hcmQgZXZlbiBpZiB0aGV5IGFyZSBub3QgdGhlIGNsaXBib2FyZCBvd25lcnMuCgoJKiBkbGxzL2lwaGxwYXBpL3Rlc3RzL2lwaGxwYXBpLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSXQncyBPSyB0byBoYXZlIGR3TnVtRW50cmllcyA9PSAwIGlmIHRoZXJlIGlzIG5vIG5ldHdvcmsgY29ubmVjdGlvbi4KCgkqIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gUE1zZyBwcm9jZXNzaW5nIHRocmVhZCAoY3VycmVudGx5IG9ubHkgTm90aWZpY2F0aW9ucyBoYW5kbGluZykKCS0gYSBjaGFpbmVkIGxpc3QgYnVnCgktIHRocmVhZC1zYWZlIGxpc3RzCgktIHJlYWwgY2xvc2Ugb24gQ2xvc2VEb3duCgoyMDA0LTA1LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDQwNTA1LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA0LTA1LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuZGUsIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyLAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5pdCwgZG9jdW1lbnRhdGlvbi9SRUFETUUucHRfYnI6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglLZWVwIHRoZSB0cmFuc2xhdGVkIFJFQURNRXMgaW4gc3luYyB3aXRoIHRoZSBFbmdsaXNoIG9uZS4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jLAoJICBkbGxzL3F1YXJ0ei9zeXN0ZW1jbG9jay5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglJbXBsZW1lbnRlZCBTeXN0ZW1DbG9jayAoSVJlZmVyZW5jZUNsb2NrIGJ5IGRzaG93KS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJUmVtb3ZlIGJpdG1hcHMgdGhhdCB3ZXJlIG9ubHkgdXNlZCBmb3IgdGhlIDMuMSBsb29rLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogV29sZmdhbmcgU2Nod290emVyIDx3b3NjaHdvdEBnbXgubmV0PgoJVXBkYXRlIE9GTl9SRUFET05MWSBmbGFnIHdoZW4gY2xvc2luZyBmaWxlIGRpYWxvZy4KCgkqIHRvb2xzL3dpbmVwcmVmaXhjcmVhdGUuaW46CglBZGRlZCBvcHRpb25zIHRvIHVwZGF0ZSBhbiBleGlzdGluZyBXSU5FUFJFRklYIGRpcmVjdG9yeSBhbmQgdG8gcnVuCglmcm9tIGluc2lkZSBhIFdpbmUgc291cmNlIHRyZWUuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6CglTZXQgYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXQgc3RhcnR1cCBmcm9tCglIS0xNXFN5c3RlbVxDdXJyZW50Q29udHJvbFNldFxDb250cm9sXFNlc3Npb24gTWFuYWdlclxFbnZpcm9ubWVudC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCUphbWVzIENvdXJ0aWVyLUR1dHRvbiA8SmFtZXNAc3VwZXJidWcuZGVtb24uY28udWs+CglVcGRhdGVkIHRvIHRoZSBuZXcgYWxzYSBhcGkuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6CglBIGNvdXBsZSBvZiBjaGFuZ2VzIHRvIGF2b2lkIHNvbWUgZmFpbHVyZXMgb24gWFAuCgoJKiBkbGxzL3NldHVwYXBpL2RpcmlkLmM6IEFkZGVkIHN1cHBvcnQgZm9yIERJUklEX1VTRVJQUk9GSUxFLgoKCSogY29udHJvbHMvaWNvbnRpdGxlLmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVJlbW92ZSB1bnVzZWQgaGVhZGVyLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglUaGUgbXNhY20gZGlyZWN0b3J5IGlzIHNwZWNpYWwuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUcmFjZSB0aGUgc3lzdGVtIGFuZCB1c2VyIGxvY2FsZXMgdXBvbiBzdGFydHVwLgoJUHJpbnQgdGhlIHJldHVybmVkIHN0cmluZyBpZiBWYXJEYXRlQ2hhbmdlVHlwZUV4IGZhaWxzLgoKCSogZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBmaXggY1JlZiBMZWFrIChpbml0IHRvIDEsIHNob3VsZCBiZSAwKSBvZiBJRE1QZXJmb3JtYW5jZQoJLSBTZW5kUE1zZyBpbXBsZW1lbnRhdGlvbgoJLSBiZWdpbiBvZiBQZXJmb3JtYW5jZSBQcm9jZXNzaW5nIHF1ZXVlcyBpbXBsZW1lbnRhdGlvbgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglJbml0aWFsaXplIG50ZGxsIGRlYnVnZ2luZyBlYXJsaWVyIG9uIHNvIHRoYXQgd2UgY2FuIHRyYWNlIHRoZSBzZXJ2ZXIKCXN0YXJ0dXAgdG9vLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBpbmNsdWRlL3dpbmNvbi5oOgoJUmVwbGFjZWQgTFBJTlBVVF9SRUNPUkQgYnkgUElOUFVUX1JFQ09SRC4KCgkqIERFVkVMT1BFUlMtSElOVFMsIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkc6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglNaW5vciBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL250ZGxsL2Vudi5jOgoJRml4ZWQgUnRsU2V0RW52aXJvbm1lbnRWYXJpYWJsZSB0byBkZWFsIHByb3Blcmx5IHdpdGggVW5pY29kZSBzdHJpbmdzCgl0aGF0IGFyZW4ndCBudWxsLXRlcm1pbmF0ZWQuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVdlIHNob3VsZCBub3QgbWFrZSBkZXN0c3RyaW5nIHN0YXRpYyBzaW5jZSB3ZSBjb3VudCBvbiBpdCBiZWluZyBmcmVzaAoJYW5kIGNsZWFuIHdoZW4gZW50ZXJpbmcgdGVzdF9SdGxDb3B5U3RyaW5nKCkuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBkbGxzL2RtaW1lL2F1ZGlvcGF0aC5jLCBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwKCSAgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBmaXggRGlyZWN0U291bmQgQ3JlYXRpb24gYnkgZG11c2ljIChmaXggcmVjZW50IFVucmVhbDIgcmVncmVzc2lvbikKCSAgdXNpbmcgUm9iZXJ0IFJlaWYgcGF0Y2gKCS0gdXNlIG9mIEZvcmVncm91bmRXaW5kb3cgaWYgaFduZCBpcyBOVUxMIChhcyBzcGVjaWZpZWQgb24gbXNkbiBkb2NzKQoJLSBiZWdpbiBvZiBQZXJmb3JtYW5jZSBQTXNnIGltcGxlbWVudGF0aW9uICh3ZSBzaG91bGQgdXNlIGEgcHJvY2Vzc2luZwoJICB0aHJlYWQpCgktIGJldHRlciBTZWdtZW50IGxvYWRpbmcKCS0gc29tZSBzdHVicyBmb3IgSXNEaXJ0eSAoYWx3YXlzIEZBTFNFKQoKCSogZGxscy9kbXNjcmlwdC9zY3JpcHQuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglNYWtlIElEaXJlY3RNdXNpY1NjcmlwdEltcGxfSURpcmVjdE11c2ljU2NyaXB0X0NhbGxSb3V0aW5lIHJldHVybiBTX09LCgkod2l0aCBFX05PVElNUEwgd2UgaGF2ZSBzb21lIGFwcHMgY3Jhc2hlcykuCgoJKiBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgaW5jbHVkZS91cmxtb24uaCwKCSAgaW5jbHVkZS91cmxtb24uaWRsOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnRlZCBDb0ludGVybmV0Q29tYmluZVVybCBhbmQgQ29JbnRlcm5ldENvbXBhcmVVcmwuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbCwgcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3N0cmluZy5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglXaW5kb3dzIDk1IGhhcyBubyBTdHJSZXRUb0JTVFIsIGFkZCBkeW5hbWljIGxvb2t1cCB0byBhdm9pZCBibG9ja2luZwoJZGlhbG9nLgoKCSogZGxscy91c2VyL3Rlc3RzL2lucHV0LmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVByZXZlbnQgV2luZG93cyA5NSBmcm9tIGJsb2NraW5nIG9uIGxpbmtpbmcgaXNzdWUuCgoJKiBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJd2luZWphY2suZHJ2IG9ubHkgc3VwcG9ydHMgMTZiaXQgc291bmQgc28gd2UgY2FuIHNpbXBsaWZ5IHRoZSBzb3VuZAoJZm9ybWF0IGNoZWNrcy4KCgkqIGRsbHMvd2lubW0vd2luZWFydHMvYXJ0cy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSWYgQVJUU19XYXZlSW5pdCgpIGZhaWxlZCB0aGVuIHRyYW5zbWl0IHRoZSBmYWlsdXJlIHVwc3RyZWFtIGluCglBUlRTX0RyaXZlclByb2MoKS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgbXNhY20zMiB0byB0aGUgdGVzdHMuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUYWtpbmcgaW50byBhY2NvdW50IHdhdmVtYXAgYW5kIG1pZGltYXAgdGhlcmUgY2FuIGJlIHVwIHRvIDggb3V0cHV0Cglkcml2ZXJzLiBTbyBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgTU1EcnZzIGFycmF5IGFjY29yZGluZ2x5LgoJU2tpcCBhbHJlYWR5IGxvYWRlZCBkcml2ZXJzIGJlZm9yZSBjb21wbGFpbmluZyAoYXNzZXJ0aW5nKSB0aGF0IHRoZXkKCWRvbid0IGZpdCBpbiB0aGUgTU1EcnZzIGFycmF5LgoKMjAwNC0wNS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCVNvbWUgbW9yZSB0ZXN0cyBmb3IgZm9jdXMgYmVoYXZpb3Igd2hlbiBoaWRpbmcvc2hvd2luZyB3aW5kb3dzLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9pcGhscGFwaS9pcHN0YXRzLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL21haWxzbG90LmMsIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYywKCSAgZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jLCBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jLAoJICBkbGxzL21zdmNydC90ZXN0cy9zdHJpbmcuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5jLAoJICBkbGxzL3dpbmVwcy9kb3dubG9hZC5jLCBkbGxzL3dpbmVwcy9wZW4uYywgZGxscy93aW5lcHMvcHMuYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdHlwZTQyLmMsIGRsbHMveDExZHJ2L3dpbmVjbGlwc3J2LmMsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5jLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jLCBwcm9ncmFtcy93Y21kL2JhdGNoLmMsCgkgIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywKCSAgcHJvZ3JhbXMvd2NtZC93Y21kLmgsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLCBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvc3RyaW5nLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5oLAoJICB0b29scy93aWRsL3dpZGwuYywgdG9vbHMvd21jL21jbC5jLCB0b29scy93bWMvbWN5LnksCgkgIHRvb2xzL3dtYy91dGlscy5jLCB0b29scy93cmMvcmVhZHJlcy5jLCB0b29scy93cmMvd3JjLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2Ugb3VyIGFzY2lpIHN0cmluZ3Mgc3RhdGljIGNvbnN0LgoJUmVtb3ZlIGEgY291cGxlIHN0cmluZyB2YXJpYWJsZXMgdGhhdCB3ZXJlIHVzZWQgb25seSBvbmNlIGFuZCB1c2UgdGhlCglzdHJpbmcgbGl0ZXJhbCBkaXJlY3RseS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLAoJICBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJpbXBsLmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc3RyaWN0IGFsaWFzaW5nIGlzc3VlcyBpbiBkbGxzL29sZTMyLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCURvbid0IGNsb3NlIHRoZSBjdXJyZW50IHRocmVhZCBkaXNwbGF5IG9uIHByb2Nlc3MgZXhpdCwgd2UgZG9uJ3QgY2xvc2UKCXRoZSBvdGhlciBvbmVzIGFueXdheS4gU2hvdWxkIGF2b2lkIFhSZW5kZXIgZXJyb3IgaW4gbWV0YWZpbGUgdGVzdC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJSW1wbGVtZW50ZWQgYW4gYXJyYXkgb2YgMjYgZHJpdmVzIGFuZCBpbnRlcmZhY2UgZnVuY3Rpb25zIGZvciBhZGRpbmcsCgljb3B5aW5nLCBtb3ZpbmcgYW5kIGRlbGV0aW5nIGRyaXZlcy4KCUFkZGVkIGEgIlNob3cvSGlkZSBBZHZhbmNlZCIgYnV0dG9uIGluIHRoZSBkcml2ZSBlZGl0IGRpYWxvZyB0aGF0Cgl0b2dnbGVzIHRoZSBkaXNwbGF5IG9mIGFkdmFuY2VkIG9wdGlvbnMgYW5kIHJlc2l6ZXMvbW92ZXMgY29udHJvbHMuCglEaXNhYmxlIHRoZSAnYXV0b2RldGVjdCcgcmFkaW8gYnV0dG9uIGluIHRoZSBkcml2ZSBlZGl0IGRpYWxvZyB1bnRpbAoJd2UgaGF2ZSBhdXRvZGV0ZWN0aW9uIHN1cHBvcnQuCglNYXAgd2luZG93ICd4JyBidXR0b24gdG8gZGlhbG9nIGNsb3NlLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Gci5yYywgcHJvZ3JhbXMvcmVnZWRpdC9JdC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9ObC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9QbC5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9QdC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9SdS5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9TaS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9jaGlsZHduZC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CgktIEYyIGlzIG5vdyBhbiBhY2NlbGVyYXRvciBmb3IgcmVuYW1lCgktIHBhbmVsIHN3aXRjaGluZyB2aWEgVEFCIGRvZXNuJ3QgdXNlIElzRGlhbG9nTWVzc2FnZSBhbnltb3JlCgktIGZvY3VzIGlzIGNvcnJlY3RseSBzZXQgYWZ0ZXIgbWFpbiB3aW5kb3cgYWN0aXZhdGlvbiAoQWx0K1RBQiBldGMpLAoJICByZW1vdmVkIHNvbWUgZm9jdXMtcmVsYXRlZCBidWdzCgktIHByZXNzaW5nIEVOVEVSIG9yIGRvdWJsZS1jbGlja2luZyBhIHZhbHVlIGVkaXRzIGl0CgktIHNldHRpbmcgYSB2YWx1ZSB0byBhbiBlbXB0eSBzdHJpbmcgaXMgbm93IGFsbG93ZWQKCS0gYWRkaW5nIGEgbmV3IHZhbHVlIHN0YXJ0cyByZW5hbWUgYXV0b21hdGljYWxseQoJLSByZW5hbWluZyBhIHZhbHVlIGRvZXNuJ3QgbW92ZSB0aGUgY3Vyc29yCgktIHJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBjb2RlIChOTV9SQ0xJQ0sgaW4gTGlzdFZpZXcgZXRjKQoJLSByaWdodC1jbGljayBvbiB0cmVlIHZpZXcgZGlzcGxheXMgIk5ldy4uLiIgbWVudQoJLSBkZWZhdWx0IHZhbHVlcyBhcmUgdHJlYXRlZCBsaWtlIGluIFdpbmRvd3MgUmVnRWRpdCAoZGlzcGxheWVkIGV2ZW4KCSAgd2hlbiB0aGV5IGFyZW4ndCBwaHlzaWNhbGx5IHByZXNlbnQsIGNhbid0IGJlIHJlbmFtZWQgb3IgZGVsZXRlZCkKCS0gUG9saXNoIHRyYW5zbGF0aW9uIGhhZCBzb21lIHdlaXJkIGNoYXJhY3RlcnMgYWRkZWQgYmVmb3JlIFBvbGlzaAoJICBsZXR0ZXJzCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCURlbGVnYXRlcyBtZXNzYWdlcyBkaXJlY3RseSB0byB0aGUgZWRpdCBjb250cm9sIHdpbmRvdyBwcm9jIGluc3RlYWQgb2YKCWNvbnRhaW5pbmcgYW4gZWRpdCBjb250cm9sLiBGaXhlcyBwcm9ibGVtcyB3aXRoIHN1YmNsYXNzaW5nIHRoZQoJcmljaGVkaXQgY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglBZGQgTk1fUkNMSUNLIG5vdGlmaWNhdGlvbiBzdXBwb3J0IGZvciB0b29sYmFycy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CgktIEZpeCBwYWxldHRlIGNyZWF0aW9uLgoJLSBGaXggdXBzaWRlIGRvd24gR2lmLgoJLSBBZGQgc3VwcG9ydCBmb3IgdHJhbnNwYXJlbnQgR2lmLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOgoJQXZvaWQga2lsbGluZyB0aHJlYWRzIHdpdGggVGVybWluYXRlVGhyZWFkLCB0aGlzIGNhbiBjYXVzZSBkZWFkbG9ja3MuCgoJKiBpbmNsdWRlL2F4Y29yZS5pZGwsIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL3N0cm1pZi5oLAoJICBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCUV4cGxpY2l0bHkgc3BlY2lmeSBhbGlnbm1lbnQgb2YgNjQtYml0IHR5cGVzLgoKCSogZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3NoZWxsMzIvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy91cmxtb24vdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy93aW5pbmV0L3Rlc3RzL2dlbmVyYXRlZC5jOgoJVXBkYXRlZCB0aGUgYXV0by1nZW5lcmF0ZWQgdGVzdHMuCgoJKiB0b29scy93aW5hcGkvY190eXBlLnBtLCB0b29scy93aW5hcGkvdGVzdHMuZGF0LAoJICB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCS0gQXNzdW1lIDggYnl0ZSBtYXhpbXVtIGFsaWdubWVudC4KCS0gU3luYyB0eXBlIHRlc3RpbmcgZGF0YSB3aXRoIHRoZSBoZWFkZXJzLgoKMjAwNC0wNS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jOgoJTWFrZSBHZXRWb2x1bWVJbmZvcm1hdGlvbiBkZWZhdWx0IHRvIHJlcG9ydGluZyBOVEZTIGZvciBub24tRkFUCglmaWxlc3lzdGVtcy4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYzogT0ZfQ1JFQVRFIHNob3VsZCBmb3JjZSB3cml0ZSBhY2Nlc3MgaW4gT3BlbkZpbGUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Dbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy9jb21tZGxnL2NkbGdfS28ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywgZGxscy9jb21tZGxnL2NkbGdfVGgucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1VrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19aaC5yYzoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglNYWtlIHRoZSBmaWxlIHR5cGUgY29tYm9ib3ggbm9uLWVkaXRhYmxlLgoKCSogaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL21hcGl1dGlsLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIHRoZSBJTUFQSVByb3AvSVByb3BEYXRhIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS93aW5lL3Rlc3QuaDogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJRGlzYWJsZSBidWZmZXJpbmcgb2YgdGVzdCBvdXRwdXQgdG8ga2VlcCBtb3JlIGluZm9ybWF0aW9uIGluIGNhc2Ugb2YgYQoJY3Jhc2guCgoJKiBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9tYXBpMzIvcHJvcC5jLAoJICBkbGxzL21hcGkzMi90ZXN0cy9wcm9wLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IGFuZCB0ZXN0IFNjQ29weVByb3BzL1NjUmVsb2NQcm9wcy4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0cmlwIGxlYWRpbmcgd2hpdGVzcGFjZSB3aGVuIGFkZGluZyBhIG5ldyB2YWx1ZSBhbmQgbm90IGp1c3Qgd2hlbgoJcmVwbGFjaW5nIGEgY3VycmVudCB2YWx1ZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLAoJICBkbGxzL21zYWNtL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNhY20vdGVzdHMvbXNhY20uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCB0ZXN0cyBmb3IgbXNhY20zMi5kbGwuCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUJldHRlciBmdW5jdGlvbiBwYXJhbWV0ZXIgY2hlY2tpbmcuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJV29sZmdhbmcgU2Nod290emVyIDx3b2xmZ2FuZy5zY2h3b3R6ZXJAZ214Lm5ldD4KCU1ha2UgZmlsZSBkaWFsb2cgc3VwcG9ydCBGTkVSUl9CVUZGRVJUT1NNQUxMIGlmIGJ1ZmZlciB0b28gc21hbGwuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJVXNlIFdJTkVERUJVRyBpbnN0ZWFkIG9mIC0tZGVidWdtc2cuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9jb25zb2xlLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCVByZXZlbnQgZnJvbSBjcmFzaGluZy9oYW5naW5nIGluIFdpbmRvd3MgOTUgT1NSMi4KCgkqIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3VybG1vbi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdGVzdHMvdXJsLmMsCgkgIGRsbHMvdXJsbW9uL3Vtb24uYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSGFuZGxlIGNvbnRleHQgaW4gQ3JlYXRlVVJMTW9uaWtlci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggdGhlIHNpemUgb2YgdGhlIGxpc3R2aWV3IGl0ZW1zIGluIHRoZSBjdXN0b21pemUgZGlhbG9nLgoKCSogZGxscy9jZmdtZ3IzMi9jZmdtZ3IzMi5zcGVjOiBNYXR0aGV3IERhdmlzb24gPG1qZDc3QGNhbS5hYy51az4KCVVwZGF0ZWQgdG8gaW5jbHVkZSBmdW5jdGlvbnMgZnJvbSB3aW5kb3dzIDk4U0UuCgoyMDA0LTA1LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglGaXhlcyBmb3IgcmVuZGVyaW5nIHRhcmdldHMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IEdlIHZhbiBHZWxkb3JwIDxndmdAcmVhY3Rvcy5jb20+CglBbHdheXMgcmVzZXQgQVVUT19SRVNJWkUgZmxhZyBvbiBleGl0IGZyb20gUkVCQVJfRm9yY2VSZXNpemUuCgoJKiBkbGxzL3dpbmVwcy90ZXh0LmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglJbmNsdWRlIDxzdGRsaWIuaD4gdG8gb2J0YWluIGEgcHJvdG90eXBlIG9mIGFicygpLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIG1lbWNweSBpbnN0ZWFkIG9mIHdlaXJkIGNhc3RzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCBUQl9HRVRTVFlMRSBtZXNzYWdlIHRvIHJldHVybiB0aGUgc3R5bGUgb2YgdGhlIHRvb2xiYXIgYW5kIG5vdCB0aGUKCXN0eWxlIG9mIGEgYnV0dG9uLgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgQ29SZWxlYXNlTWFyc2hhbERhdGEuCgoJKiBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCBhIHN0cmluZyBhbGxvY2F0aW9uLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgVFZTX05PU0NST0xMLgoKMjAwNC0wNS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL2ZpbGUxNi5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC9wYXRoLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvcHJvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3ZvbHVtZS5jLCBkbGxzL2tlcm5lbC92eGQuYywKCSAgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2ZpbGUuYywgZmlsZXMvc21iLmMsIGluY2x1ZGUvZmlsZS5oLAoJICBtaXNjL3JlZ2lzdHJ5LmM6CglNb3ZlZCBtb3N0IHJlbWFpbmluZyBmaWxlIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCVJlbW92ZWQgZmlsZXMvZmlsZS5jIGFuZCBpbmNsdWRlL2ZpbGUuaC4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jOgoJRml4ZWQgbGFzdCBlcnJvciBjb2RlIGNoZWNrIGluIEdldFZvbHVtZUluZm9ybWF0aW9uVywgb3BlbmluZyBhCglub24tZXhpc3RlbnQgZGV2aWNlIHJldHVybnMgRVJST1JfRklMRV9OT1RfRk9VTkQgbm93LgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2lnbmFsLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJVXNlIHByZWFkL3B3cml0ZSBldmVyeXdoZXJlIHRvIGF2b2lkIGNoYW5naW5nIHRoZSBmaWxlIHBvc2l0aW9uIHdoaWxlCgl0aGUgY2xpZW50IGlzIHVzaW5nIGl0LgoJR2V0IHJpZCBvZiB0aGUgbm8gbG9uZ2VyIHVzZWQgdHJ1bmNhdGVfZmlsZSByZXF1ZXN0LgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZmlsZXMvZmlsZS5jOgoJUmVpbXBsZW1lbnRlZCBHZXRGaWxlVHlwZSBhbmQgU2V0RW5kT2ZGaWxlIHVzaW5nIG50ZGxsIGZ1bmN0aW9ucy4KCgkqIGxpYnMvTWFrZWZpbGUuaW46IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCVN1cHBvcnQgRGFyd2luIHZlcnNpb25pbmcgY29udmVudGlvbi4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvSXQucmMsIHByb2dyYW1zL3JlZ2VkaXQvUGwucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYzoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCS0gY2hhbmdlZCBDYW5jZWwgREVGUFVTSEJVVFRPTiB0byBQVVNIQlVUVE9OCgktIGZpeGVkIGNhcHRpb24gSUREX0VESVRfRFdPUkQgZnJvbSAiRWRpdCBTdHJpbmciIHRvICJFZGl0IERXT1JEIgoJLSBhZGRlZCBQb2xpc2ggdHJhbnNsYXRpb24KCgkqIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLCBkbGxzL21hcGkzMi91dGlsLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUveGNtYy5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVN0dWIgY21jX3F1ZXJ5X2NvbmZpZ3VyYXRpb24oKSBhbmQgYWRkIHhjbWMuaCBoZWFkZXIgZmlsZS4KCjIwMDQtMDQtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJQWRkZWQgYSBmZXcgbW9yZSBpbmZvIGNsYXNzZXMgaW4gTnRRdWVyeUluZm9ybWF0aW9uRmlsZS4KCVVzZSBOVCBmaWxlIG5hbWVzIGluIENyZWF0ZU5hbWVkUGlwZVcuCglSZWltcGxlbWVudGVkIEdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlLCBHZXRGaWxlU2l6ZSBhbmQgR2V0RmlsZVRpbWUKCXVzaW5nIG50ZGxsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBmaWxlcy9maWxlLmM6CglNb3ZlZCBzdXBwb3J0IGZvciBvcGVuaW5nIG5hbWVkIHBpcGVzIHRvIG50ZGxsLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6CglBdm9pZCBhdXRvZGV0ZWN0aW5nIHRoZSBwcmVmaXggd2hlbiBsb2FkaW5nIHRoZSBjb25maWcgZmlsZSBzaW5jZSB0aGUKCWZpcnN0IGtleSBtYXkgYmUgbmFtZWQgJ3dpbmUnLgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBidWZmZXIgb3ZlcmZsb3cuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBWYXJEYXRlRnJvbVVkYXRlRXguCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYywgZGxscy9vbGUzMi9zdG9yYWdlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGx2YWx1ZSBjYXN0cy4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgaW5jbHVkZS9vYmpiYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgc3R1YiBmb3IgU3RnQ3JlYXRlU3RvcmFnZUV4KCkuIFJldHVybnMKCVNUR19FX1VOSU1QTEVNRU5URURGVU5DVElPTiBhcyBwZXIgTVNETi4gRml4ZXMgYW4gZXJyb3Igc2F2aW5nIGZpbGVzCglpbiBXb3JkIFhQLgoKCSogZGxscy9rZXJuZWwvcGF0aC5jOgoJVXNlIFJ0bERvc1BhdGhOYW1lVG9OdFBhdGhOYW1lX1UgdG8gYnVpbGQgdGhlIHJlZ2lzdHJ5IGVudHJpZXMgZm9yCglNT1ZFRklMRV9ERUxBWV9VTlRJTF9SRUJPT1QuCgoJKiBkbGxzL2RiZ2hlbHAvZGJnaGVscF9wcml2YXRlLmgsIGRsbHMvZGJnaGVscC9zdGFjay5jLAoJICBkbGxzL2RiZ2hlbHAvc3ltYm9sLmMsIGRsbHMvZGJnaGVscC90eXBlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZml4ZWQgc29tZSBidWdzIGluIFN0YWNrV2FsayAoY2xhaW1lZCBmb3IgYnV0IGZvcmdvdHRlbiBpbiBsYXN0CgkgIHBhdGNoKQoJLSByZW1vdmVkIGxvY2F0aW9uIGZpZWxkIGluIHN5bXRfZGF0YSwgYW5kIHJld29ya2VkIHRoZSBhY3R1YWwKCSAgbG9jYXRpb24gb2YgaW5mb3JtYXRpb24gYmFzZWQgb24gdGhlICdraW5kJyBmaWVsZAoJLSBzaG9ydGVuIGRlYnVnIGNoYW5uZWwgbmFtZQoJLSBhZGRlZCBzdXBwb3J0IGZvciBiaXRmaWVsZCBpbiBzdHJ1Y3Q6cwoJLSBjbGVhbmVkIHVwIHNvdXJjZSBsaW5lIGluZm9ybWF0aW9uIHN1cHBvcnQKCS0gbm93IHN0b3JpbmcgY29uc3RhbnRzIHZhbHVlcyBhcyBWQVJJQU5UCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIHdQYXJhbSB2YWx1ZXMgZm9yIFdNX1BBUkVOVE5PVElGWSBtZXNzYWdlIGJ5IGFwcHJvcHJpYXRlCglzeW1ib2xpYyBuYW1lcy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJWW91IGhhdmUgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgZGV2aWNlIGJlZm9yZSB5b3UgY2FuIGhhdmUgYSBkZWZhdWx0CglkZXZpY2UuCgoJKiBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCS0gRml4IHRoZSByZXR1cm4ga2V5IGhhbmRsaW5nIGFuZCBjbGVhbiB1cCB0aGUgY29kZS4KCS0gQWRkIHN1cHBvcnQgZm9yIHF1aWNrQ29tcGxldGUgd2l0aCBDdHJsK1JldHVybi4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUVuYWJsZSBxdWVyeWluZyBvZiBJSURfRmlsdGVyR3JhcGggaW50ZXJmYWNlIGZyb20gZmlsdGVyZ3JhcGggbWFuYWdlcgoJKHNwb3R0ZWQgYnkgUm9iZXJ0IFJlaWYpLgoKMjAwNC0wNC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsCgkgIGRsbHMvbnRkbGwvZmlsZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJQWRkZWQgYXV0by1kZXRlY3Rpb24gb2YgRE9TIGRyaXZlIGRldmljZXMgYmFzZWQgb24gZmluZGluZyB0aGUKCWNvcnJlc3BvbmRpbmcgbW91bnQgcG9pbnQgaW4gL2V0Yy9tdGFiIG9yIC9ldGMvZnN0YWIuCgoJKiBkbGxzL2tlcm5lbC9oZWFwLmM6CglDcmVhdGUgdGhlIHN5c3RlbSBoZWFwIGV2ZW50IGJlZm9yZSB0aGUgc2hhcmVkIG1hcHBpbmcgdG8gYXZvaWQgYSByYWNlCgljb25kaXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb24gZm9yIFNIRmluZEZpbGVzLgoKCSogZGxscy93aW5lcHMvdGV4dC5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CglNYWtlIHN1cmUgYXNjZW50L2Rlc2NlbnQgdmFsdWVzIGRvbid0IGJlY29tZSBuZWdhdGl2ZSBhZnRlciBjb29yZGluYXRlCgltYXBwaW5nLgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3IgY3JlYXRpb24gb2YgYSBtYXhpbWl6ZWQgY2hpbGQgd2luZG93LgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9wc3RvcmUuaCwgaW5jbHVkZS9wc3RvcmUuaWRsOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgcHN0b3JlLmggYW5kIGFuIElETCBmaWxlIHRvIGdlbmVyYXRlIGl0LgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdm9sdW1lLmMsCgkgIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwKCSAgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsCgkgIG1pc2MvcmVnaXN0cnkuYzoKCVVzZSBzeW1saW5rcyBpbiBkb3NkZXZpY2VzLyBmb3IgdGhlIGRyaXZlIGRldmljZXMgdG9vLgoJU3RvcmUgZHJpdmUgdHlwZXMgaW4gdGhlIHJlZ2lzdHJ5IGluc3RlYWQgb2YgaW4gdGhlIGNvbmZpZyBmaWxlLgoJQWRkZWQgc29tZSBtb3JlIGNvZGUgdG8gY29udmVydCBleGlzdGluZyBjb25maWcgdG8gdGhlIG5ldyBzY2hlbWUuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGb3Jnb3QgdG8gbGltaXQgY2FwdHVyZSBzYW1wbGUgcmF0ZXMuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOC91dGlscy5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIEZpeCBjb21waWxhdGlvbiBhZ2FpbiB1c2luZyBvbGRlcnMgR0wgaGVhZGVycwoJICAoZ2xDb21wcmVzc2VkVGV4SW1hZ2UyREFSQiBwcm9ibGVtKS4KCS0gRml4IHR5cG8gb24gY29uc3RhbnQuCgktIERldGVjdGlvbiBvZiBOVmlkaWEgdGV4dHVyZV9zaGFkZXIgYW5kIHJlZ2lzdGVyX2NvbWJpbmVycwoJICBleHRlbnNpb25zLgoJLSBCZWdpbiB0byBpbXBsZW1lbnQgQlVNUE1BUFBJTkcgdXNpbmcgTlZpZGlhIFRleHR1cmUgc2hhZGVyIGV4dGVuc2lvbgoJICAobm90IHJlYWxseSB3b3JraW5nIGZvciBub3cpLgoKMjAwNC0wNC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC90aW1lLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywKCSAgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaDoKCVJlbW92ZWQgYSBudW1iZXIgb2YgaW50ZXJuYWwgZmlsZSBmdW5jdGlvbnMgdGhhdCBhcmUgbm8gbG9uZ2VyIHVzZWQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglBZGRlZCB0ZXN0IGZvciBzZXR0aW5nIGZvY3VzIHRvIGFuIGludmlzaWJsZSB3aW5kb3cuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IEpha29iIEVyaWtzc29uIDxqYWtvdkB2bWxpbnV4Lm9yZz4KCUZpeGVkIHRlc3RzIHRvIHN1Y2NlZWQgb24gYWxsIFdpbmRvd3MgdmVyc2lvbnMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFub3RoZXIgZXJyb3IgcmV0dXJuIHZhbHVlIGNoZWNrIGFkZGVkIGFmdGVyIGxvb2tpbmcgYXQgdGhlIHdpbmRvd3MKCXRlc3RzIHJlc3VsdHMuCglSZXBsYWNlZCAtMSB3aXRoIFdBVkVfTUFQUEVSLgoKCSogZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVJlaW1wbGVtZW50IFV1aWRDcmVhdGUoKSB3aXRoIFdpbjMyIEFQSXMuCgoJKiBkbGxzL2tlcm5lbC9maWxlMTYuYywgZGxscy9rZXJuZWwvcGF0aC5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvZmlsZS5oOgoJUmVpbXBsZW1lbnRlZCBHZXQvU2V0Q3VycmVudERpcmVjdG9yeVcgdXNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbnRkbGwKCWZ1bmN0aW9ucy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJRml4ZWQgdW5zaWduZWQgY29tcGFyaXNvbiBpc3N1ZSBpbiBwcmV2aW91cyBjaGFuZ2UuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsIGluY2x1ZGUvbXNpLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYWRkIHNvbWUgcHJvdG90eXBlcy90eXBlZGVmcyB0byBtc2kuaAoJLSBpbXBsZW1lbnRzIHNvbWUgQSAtPiBXIGNhbGxzIChXIGNhbGxzIG11c3QgYmUgaW1wbGVtZW50ZWQpCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9tYXBpMzIvcHJvcC5jLAoJICBkbGxzL21hcGkzMi91dGlsLmMsIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLCBpbmNsdWRlL21hcGl0YWdzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIGEgY291cGxlIG9mIGJ1Z3MuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRXhwbGFpbiBob3cgdG8gcmVkdWNlIGxvZyBzaXplLCB1c2luZyBwaXBlcy4KCjIwMDQtMDQtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJUmVwbGFjZSBlbXB0eSB3aW5kb3cgcmVjdCBjaGVja3MgYnkgYSBuZXcgWDExRFJWX2lzX3dpbmRvd19yZWN0X21hcHBlZAoJZnVuY3Rpb24gc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhhdCBzdXBwb3J0IGZvciBvZmYtc2NyZWVuIHdpbmRvd3MuCgoJKiBkb2N1bWVudGF0aW9uL29sZS5zZ21sOiBXaWxsaWFtIExhaHRpIDxjb21wdXRlcm1hbjQxM0BlenJzLmNvbT4KCUZpeGVkIHR5cG8uCgoJKiBkbGxzL21wci9wd2NhY2hlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFdOZXRFbnVtQ2FjaGVkUGFzc3dvcmRzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXggZmFpbHVyZXMgdW5kZXIgd2luMmsuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVcGRhdGUgVmFyWG9yLFZhckFicyxWYXJOb3QgZm9yIGFsbCBpbnB1dCB0eXBlcy4KCVRlc3QgVmFyT3I7IGZpeCBhIGZhaWx1cmUgd2l0aCBsYXRlciBvbGVhdXQzMiB2ZXJzaW9ucy4KCVNwZWVkIHVwIGNvbXBpbGF0aW9uIGJ5IHNoYXJpbmcgZmFpbHVyZSBzdHJpbmdzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgVmFyT3IuCglGaXhlcyBmb3IgdW50ZXN0ZWQgVmFyWG9yLFZhckFicyxWYXJOb3QgaW5wdXQgdHlwZXMuCgoJKiB3aW5kb3dzL21kaS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQmVmb3JlIHJlbW92aW5nIG1lbnUgaXRlbXMgaW4gdGhlIE1ESSBXaW5kb3cgbWVudSBjaGVjayB3aGV0aGVyIGEgbWVudQoJaXRlbSBmb2xsb3dpbmcgYSBzZXBhcmF0b3IgaGFzIG91ciAibWFnaWMiIHZhbHVlLgoKCSogZGxscy9zaGx3YXBpL3VybC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBbGxvdyBVcmxDb21iaW5lIHRvIGNhbGN1bGF0ZSBzaXplIG9mIHJlcXVpcmVkIGJ1ZmZlci4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVzdG9yZSB0aGUgMiBNSHogc2FtcGxlIHJhdGUgdGVzdCBhbmQgZml4IHRoZSB3aW5lYWxzYSBkcml2ZXIgZm9yCglyZWFzb25hYmxlIGxpbWl0cy4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jOgoJRGVmaW5lRG9zRGV2aWNlVzogaW1wbGVtZW50ZWQgdGhlIERERF9SRU1PVkVfREVGSU5JVElPTiBmbGFnLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOgoJUmVtb3ZlZCB0b2RvX3dpbmUgZnJvbSBzb21lIHRlc3RzIHRoYXQgc3VjY2VlZCBub3cuCgoJKiBkbGxzL2tlcm5lbC9wYXRoLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBzZXJ2ZXIvZmQuYzoKCVJlaW1wbGVtZW50ZWQgQ3JlYXRlRGlyZWN0b3J5VyBhbmQgUmVtb3ZlRGlyZWN0b3J5VyB1c2luZyBudGRsbAoJZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvcGF0aC5jLCBkbGxzL2tlcm5lbC92b2x1bWUuYywgZGxscy9udGRsbC9kaXJlY3RvcnkuYywKCSAgZGxscy9udGRsbC9maWxlLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVBhc3MgdGhlIGNyZWF0aW9uIGRpc3Bvc2l0aW9uIHRvIHdpbmVfbnRfdG9fdW5peF9maWxlX25hbWUgc28gdGhhdCBpdAoJY2FuIHJldHVybiB0aGUgY29ycmVjdCBlcnJvciBjb2RlIGluIGFsbCBjYXNlcy4KCUNoYW5nZWQgTW92ZUZpbGVFeFcgdG8gdXNlIHdpbmVfbnRfdG9fdW5peF9maWxlX25hbWUgdG8gYXZvaWQKCWNvbXB1dGluZyB0aGUgTlQgbmFtZSB0d2ljZS4KCUZpeGVkIGNyYXNoIGluIEdldERyaXZlVHlwZVcgd2l0aCBhIE5VTEwgcm9vdC4KCjIwMDQtMDQtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Vay5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Vay5yYywgZGxscy9jb21tZGxnL3JzcmMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1VrLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Vay5yYzoKCUlseWEgS29ybml5a28gPGtfaWx5YUB1a3IubmV0PgoJQWRkZWQgVWtyYWluaWFuIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3V0aWxzLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBmYXN0IHJlbmRlcmluZyB0byBhIHRleHR1cmUgdXNpbmcgZ2xDb3B5VGV4SW1hZ2UyRAoJRml4ZWQgU2V0Vmlld3BvcnQuCglGaXhlZCBTZXRSZW5kZXJUYXJnZXQgKGJhc2VkIG9uIEphc29uIEVkbWVhZGVzJyB3b3JrKS4KCUltcHJvdmVkIHRyYWNlLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuaCwKCSAgZGxscy9ycGNydDQvcnBjX2RlZnMuaCwgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYywKCSAgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuaCwgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJTWFrZSBSUENSVDQgdXNlIFdpbmRvd3MgY29tcGF0aWJsZSBwcm90b2NvbCAoRENFIHY1LjApIGZvcgoJY29tbXVuaWNhdGlvbi4KCgkqIGluY2x1ZGUvdGNoYXIuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlZmluZSBfVFtVU1hdP0NIQVIvX1RJTlQvVENIQVIgdHlwZXMsIGZvciBjb21wYXRpYmlsaXR5LgoJRG8gbm90IGRlcGVuZCBvbiBvdGhlciBmaWxlcyBiZWluZyBpbmNsdWRlZCBmaXJzdC4KCUhhdmUgdGhlIHNhbWUgaW5jbHVkZSBncmFwaCBhcyB0aGUgTVMgaGVhZGVycy4KCVByb3RlY3QgYWdhaW5zdCB0cnlpbmcgdG8gdXNlIGxpYmMgd2hlbiBub3QgcG9zc2libGUuCglDbGVhbnVwcy4KCgkqIGluY2x1ZGUvbXN2Y3J0L2N0eXBlLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3djaGFyLmgsIGluY2x1ZGUvbXN2Y3J0L3djdHlwZS5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCB0aGUgX1dDVFlQRV9UX0RFRklORUQgc2VudHJ5IGZvciBjb21wYXRpYmlsaXR5LgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGUgJ2Fsc2EgaGFuZGxlJyBpcyBpbml0aWFsaXplZCB0byBOVUxMIGJlZm9yZSBjYWxsaW5nCglzbmRfcGNtX29wZW4oKS4gT3RoZXJ3aXNlIGlmIGl0IGZhaWxzIHdlIGdldCBhIGNyYXNoIHRyeWluZyB0byBjbG9zZQoJYW4gaW52YWxpZCBhbHNhIGhhbmRsZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZCB0ZXN0aW5nIG9mIFBlZWtOYW1lZFBpcGUsIG11bHRpcGxlIHdyaXRlcywgYW5kIG1lc3NhZ2UgbW9kZS4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJd2F2ZU91dEdldERldkNhcHMoLTEuLi4pIG11c3QgcmV0dXJuIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIFdhdmUKCW1hcHBlci4KCURSVl9RVUVSWURFVklDRUlOVEVSRkFDRSBpcyBub3Qgc3VwcG9ydGVkIG9uIGFsbCBXaW5kb3dzIHZlcnNpb25zLgoJQ2hlY2sgdGhlIGxlbmd0aCByZXR1cm5lZCBieSBEUlZfUVVFUllERVZJQ0VJTlRFUkZBQ0VTSVpFIGFuZCBmaXgKCW1lbW9yeSBsZWFrLgoJU29tZSBXaW5kb3dzIHNvdW5kIGRyaXZlcnMgYWxsb3cgd2lsZCBmcmVxdWVuY2llcyBzdWNoIGFzIHRoZSAyTUh6CglvbmUuIFNvIG1vZGlmeSB0aGlzIHRlc3QgdG8gdXNlIGFuIGludmFsaWQgbnVtYmVyIG9mIGJpdHMgcGVyIHNhbXBsZQoJaW5zdGVhZCAoaG9wZWZ1bGx5IHRoYXQgd2lsbCBmYWlsIHJlYWxseSBldmVyeXdoZXJlKS4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglNYWtlIHdpZGwgcGFyc2UgdGhlICd0cmFuc21pdF9hcycgYW5kICdlbmRwb2ludCcga2V5d29yZHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLCBkbGxzL3VzZXIvZGRlL2RkZV9wcml2YXRlLmgsCgkgIGRsbHMvdXNlci9kZGUvbWlzYy5jLCBkbGxzL3VzZXIvZGRlL3NlcnZlci5jLCBpbmNsdWRlL2RkZW1sLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBEREUgUEZOQ0FMTEJBQ0sgcHJvdG90eXBlLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgc3RyaWN0IGFsaWFzaW5nIGlzc3VlcyBpbiBkbGxzL2QzZDguCglJbmNvcnBvcmF0ZWQgYnVnZml4IGZyb20gQ2hyaXN0aWFuIENvc3RhIGluIHZzaGFkZXJfZXhwcC4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglSZXBsYWNlIC0tZGVidWdtc2cgYnkgV0lORURFQlVHLgoKCSogZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdXRpbHMuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBpbXBsZW1lbnQgU2V0UmVuZGVyU3RhdGUgRDNEUlNfRk9HRU5BQkxFL0QzRFJTX1JBTkdFRk9HRU5BQkxFCgktIGltcGxlbWVudCBTZXRSZW5kZXJTdGF0ZSBEM0RSU19SQU5HRUZPR0VOQUJMRQoJLSBmaXggU2V0UmVuZGVyU3RhdGUgRDNEUlNfRk9HVkVSVEVYTU9ERSBDYXBzL0RldGVjdGlvbiB0cmFjZXMKCS0gZml4IElEaXJlY3QzRDg6OkdldEFkYXB0ZXJJZGVudGlmaWVyIHRvIHVzZSBGaWxsR0xDYXBzIGFuZCBwcm92aWRlCgkgIG1vcmUgZXhhY3QgaW5mb3MgKGRyaXZlciB2ZXJzaW9ucywgdmVuZG9yLCAuLi4pCgktIHNwbGl0IEZha2UgR0wgQ29udGV4dCBjcmVhdGlvbiBmcm9tIEdldERldmljZUNhcHMgZm9yIGV4dGVybmFsIHVzZQoJLSBhZGQgYSBuZXcgY2hhbm5lbCAoZDNkX2NhcHMpIGZvciBhbGwgSURpcmVjdDNEOCBDYXBzL2RldGVjdGlvbiB0cmFjZXMKCS0gcmVuYW1lIGZwcyBjaGFubmVsIHRvIGQzZF9mcHMKCS0gaGlnaCB1c2Ugb2YgcnVudGltZSBkZXRlY3RlZCBPcGVuR0wgQ2FwcyBpbnN0ZWFkIG9mIGRlZmluZXMKCS0gdXBkYXRlIHN1cHBvcnRlZCBDYXBzIHVzaW5nIHJ1bnRpbWUgZGV0ZWN0aW9uCgoJKiBkbGxzL3NoZWxsMzIvYXV0b2NvbXBsZXRlLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUltcGxlbWVudGVkIHRoZSBBQ09fQVVUT1NVR0dFU1QsIEFDT19BVVRPQVBQRU5ELCBBQ09fVVBET1dOS0VZRFJPUFNMSVNUCglzdHlsZXMuCgoJKiBkbGxzL3gxMWRydi9iaXRibHQuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJSWYgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgdGhlIHNhbWUgb2JqZWN0LCBkb24ndCBsb2NrIHRoZSBvYmplY3QKCXR3aWNlIGFzIGl0IHdpbGwgb25seSBiZSB1bmxvY2tlZCBvbmNlLgoKCSogZGxscy93aW5lZDNkL3ZlcnRleHNoYWRlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHBvc2l0aW9uIG9mIHRtcC5mIGFzc2lnbmVkIGxpa2UgaW4gZGxscy9kM2Q4L3NoYWRlci5jLgoJRml4ZWQgc3RyaWN0IGFsaWFzaW5nIHByb2JsZW0uCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJSW1wbGVtZW50IERPUzcgY2Fub25pY2FsaXplIHBhdGggZnVuY3Rpb24gYXMgYSBjb252ZXJzaW9uIHRvIHNob3J0CglmaWxlIG5hbWUuCgoJKiB3aW5kb3dzL21kaS5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkIHRyYWNpbmcgbWVzc2FnZXMgdG8gTURJLgoKCSogZGxscy93aW5tbS93aW5lamFjay9qYWNrLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggYSB3YXJuaW5nIGluIEpBQ0tfZHJ2TG9hZCgpLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2Ugb25seSBzdXBwb3J0IDggYW5kIDE2IGJpdCBzb3VuZCBzbyB3ZSBzaG91bGQgcmVqZWN0IHRoZSBvdGhlcgoJZm9ybWF0cy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnMTYuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJZiBscHN0clRpdGxlIGlzIE5VTEwsIHNldCBpdCB0byBlaXRoZXIgJ09wZW4gRmlsZScgb3IgJ1NhdmUgYXMnLgoJQ29uc3RpZnkgdGhlIHN0cmluZyBjb25zdGFudHMuCgoJKiBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvZGRlL3NlcnZlci5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhbGwgYXBwcm9wcmlhdGUgRGVmV2luZG93UHJvYyBpbiBEREUgY2xpZW50L3NlcnZlciB3aW5kb3cgcHJvY3MKCWRlcGVuZGluZyBvbiB3aGV0aGVyIGEgd2luZG93IHByb2MgaXMgdW5pY29kZSBvciBBTlNJLgoKMjAwNC0wNC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jLCBmaWxlcy9kcml2ZS5jOgoJUmVpbXBsZW1lbnRlZCBHZXRMb2dpY2FsRHJpdmVzLCBHZXRMb2dpY2FsRHJpdmVTdHJpbmdzIGFuZAoJR2V0RHJpdmVUeXBlIHVzaW5nIHRoZSBuZXcgc3ltbGluayBtZWNoYW5pc20uCglNYWRlIEdldERyaXZlVHlwZSBhdHRlbXB0IHRvIGF1dG9kZXRlY3QgdGhlIHR5cGUgaWYgbm90IHNwZWNpZmllZCBpbgoJdGhlIHJlZ2lzdHJ5LgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglSZW1vdmUgdGhlIHdpbmVsb2FkZXIgdmFyaWFibGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9tYXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9tYXBpMzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFwaTMyL3Rlc3RzL3Byb3AuYywKCSAgZGxscy9tYXBpMzIvdGVzdHMvdXRpbC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRlc3RzIGZvciBuZXdseSBhZGRlZCBNQVBJIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbWFwaTMyL01ha2VmaWxlLmluLCBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywKCSAgZGxscy9tYXBpMzIvbWFwaTMyX21haW4uYywgZGxscy9tYXBpMzIvcHJvcC5jLCBkbGxzL21hcGkzMi91dGlsLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IE1BUEkgcHJvcGVydHkgJiB1dGlsaXR5IGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXVpZC91dWlkLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbWFwaWNvZGUuaCwKCSAgaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL21hcGlndWlkLmgsIGluY2x1ZGUvbWFwaXRhZ3MuaCwKCSAgaW5jbHVkZS9tYXBpdXRpbC5oLCBpbmNsdWRlL21hcGl2YWwuaCwgaW5jbHVkZS9tYXBpeC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVwZGF0ZS9BZGQgTUFQSSBoZWFkZXJzLgoKCSogZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGZpbGVzL2RyaXZlLmMsCgkgIG1pc2MvcmVnaXN0cnkuYzoKCU1vdmVkIGNyZWF0aW9uIG9mIHRoZSBDRFJPTSByZWdpc3RyeSBrZXlzIGludG8gdGhlIHJlZ2lzdHJ5IGxvYWRpbmcKCWNvZGUuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvdXNlci9kZGUvbWlzYy5jLAoJICBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvZGRlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgYnVnIGluIFNoZWxsRXhlY3V0ZSB3aGljaCBjYWxsZWQgRGRlQ3JlYXRlU3RyaW5nSGFuZGxlVyB3aXRoIGEKCXdyb25nIHBhcmFtZXRlci4gUmV2ZXJ0IHByZXZpb3VzIGVycm9uZW91cyBmaXguCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUZXN0IENsZWFyQ3VzdERhdGEoKSBhbmQgVUlOVC0+STQgY29udmVyc2lvbi4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBDbGVhckN1c3REYXRhLgoKCSogZGxscy9vbGVhdXQzMi92YXJ0eXBlLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglDaGVjayB0aGUgY29ycmVjdCBwYXJhbSBmb3IgMiBERUNJTUFMIG9wZXJhdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNvbnZlcnNpb24gZnJvbSBWVF9VSU5UIHRvIFZUX0k0IGlnbm9yZXMgb3ZlcmZsb3cuCgoJKiB0b29scy9jMm1hbi5wbDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFjY2VwdCBleHBvcnRzIHdpdGggJ0AnIGluIHRoZWlyIG5hbWUuCglMaW5rIHRvIHdpbmVocSBzb3VyY2UgZm9yIGltcGxlbWVudGVkIGZ1bmN0aW9ucy4KCgkqIGRsbHMvZDNkOC9zaGFkZXIuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglEb24ndCB0cnkgdG8gY3JlYXRlIEhXIFZlcnRleCBTaGFkZXJzIHdoZW4gY29kZSBpcyBOVUxMIChpZSB1c2UKCWRlZmF1bHQgcmVuZGVyaW5nIGNvZGUgdXNpbmcgVmVydGV4U2hhZGVyRGVjbGFyYXRpb24gZm9yIGRhdGFzKSBhcyBHTAoJZHJpdmVycyBkb24ndCBsaWtlIGVtcHR5IHByb2dyYW1zLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXggc29tZSByYW5kb20gY3Jhc2hlcyBmb3VuZCBvbiBzb21lIGdhbWVzIGluIHRoZSBuZXcgY29kZSAobGl2ZQoJR0xYL0dMIGRyaXZlcnMpLgoKCSogZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvdm9sdW1lLmMsCgkgIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGZpbGVzL2ZpbGUuYzoKCU1vdmVkIHN1cHBvcnQgZm9yIG9wZW5pbmcgRE9TIGRldmljZSBmaWxlcyB0byBudGRsbC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJVW5jb25kaXRpb25hbGx5IHRlc3QgV2luZSBwcmVzZW5jZS4KCUFkZCB0aGUgQnVpbGQgaW5mbyBzZWN0aW9uIHRvIHRoZSBvdXRwdXQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9wYXRoLmMsCgkgIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzoKCU1ha2UgRElSX250X3RvX3VuaXggcmV0dXJuIFNUQVRVU19OT19TVUNIX0ZJTEUgaW5zdGVhZCBvZgoJU1RBVFVTX09CSkVDVF9OQU1FX05PVF9GT1VORCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBsYXN0IGNvbXBvbmVudAoJZGlkbid0IGV4aXN0IHRvIGFsbG93IGRpc3Rpbmd1aXNoaW5nIGl0IGZyb20gbGVnaXRpbWF0ZSBlcnJvcnMuCglFeHBvcnQgaXQgZnJvbSBudGRsbCwgcmVuYW1lZCB0byB3aW5lX250X3RvX3VuaXhfZmlsZV9uYW1lLgoKCSogZmlsZXMvZmlsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIGEgcGFzc2VkIFNlY3VyaXR5RGVzY3JpcHRvciBpbiBDcmVhdGVGaWxlVy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJU2tpcCBvdmVyIG1vc3Qgb2YgdGhlIHVudXNlZCB2YXJpYW50IHR5cGVzIHRvIHNwZWVkIHVwIHRoZSB2YXJpYW50Cgl0ZXN0cy4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCVVzZSBOdE9wZW5GaWxlIGluc3RlYWQgb2YgRklMRV9DcmVhdGVGaWxlIHRvIG9wZW4gVW5peCBmaWxlcy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJQWRkZWQgV2luZSBkZXRlY3Rpb24uCgoyMDA0LTA0LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURkZUNsaWVudFRyYW5zYWN0aW9uIHJldHVybnMgemVybyBvbiBlcnJvci4KCgkqIGRsbHMvdXNlci9kZGUvbWlzYy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVW5pY29kZSB2ZXJzaW9uIG9mIERkZUNyZWF0ZVN0cmluZ0hhbmRsZSBzaG91bGQgaWdub3JlIGNvZGVwYWdlIHBhcmFtZXRlci4KCgkqIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gbW9yZSBGSVhNRSAtPiBUUkFDRQoJLSBiZWdpbiB2ZW5kb3IvY2FyZCBkZXRlY3Rpb24gKHZlcnNpb25zL25hbWVzKQoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIGNvbXBhdGliaWxpdHkgbWFjcm9zLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglXaGVuIHRoZSBXaW5kb3dzIGRpcmVjdG9yeSB3YXMgc29tZXRoaW5nIGVsc2UgdGhhbiBDOlxXSU5ET1dTCgl0ZXN0X0dldFRlbXBGaWxlTmFtZUEoKSBmYWlsZWQuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsIHByb2dyYW1zL3dpbmV0ZXN0L3V0aWwuYywKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuaDoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCS0gY29uc3RpZnkgc29tZSBzdHJpbmdzCgktIGludHJvZHVjZSAtdSBvcHRpb24gdG8gd3JpdGUgYXJjaGl2ZSB1cmwgaW50byB0aGUgcmVwb3J0CgktIGJ1bXAgb3V0cHV0IGZvcm1hdCB2ZXJzaW9uIHRvIDMKCgkqIGZpbGVzL2ZpbGUuYzogTWFrZSBDcmVhdGVGaWxlVyB1c2UgTnRDcmVhdGVGaWxlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaGhjdHJsLm9jeC8uY3ZzaWdub3JlLCBkbGxzL2hoY3RybC5vY3gvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaGhjdHJsLm9jeC9oaGN0cmwuYywgZGxscy9oaGN0cmwub2N4L2hoY3RybC5vY3guc3BlYzoKCUtyenlzenRvZiBGb2x0bWFuIDxrZm9sdG1hbkBwb3J0YWwub25ldC5wbD4KCUFkZGVkIGR1bW15IGhoY3RybC5vY3ggd2l0aCBzdHVicyBvZiBIdG1sSGVscEEgYW5kIEh0bWxIZWxwVy4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvaGVhZGVyLmgsIHRvb2xzL3dpZGwvcGFyc2VyLnksCgkgIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglNYWtlIHdpZGwgY29tcGlsZSB3aXRob3V0IG1vc3Qgb2YgV2luZG93cy9XaW5lIGhlYWRlcnMsIHNvIGl0IGNhbiBiZQoJcmV1c2VkIGJ5IG90aGVyIHByb2plY3RzLgoKMjAwNC0wNC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYzoKCVByZWxvYWQga2V5Ym9hcmQuZHJ2IHdoZW4gV2luZG93cyB2ZXJzaW9uIGlzIFdpbjl4LgoKCSogZGxscy9rZXJuZWwvcGF0aC5jLCBmaWxlcy9maWxlLmM6CglDaGFuZ2VkIE1vdmVGaWxlRXggdG8gdXNlIG50ZGxsIGZ1bmN0aW9ucywgYW5kIG1vdmVkIGl0IHRvCglkbGxzL2tlcm5lbC9wYXRoLmMuCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL2ZpbGUuYzoKCVByb3Blcmx5IHNldCBJT19TVEFUVVNfQkxPQ0suSW5mb3JtYXRpb24gaW4gTnRDcmVhdGVGaWxlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRGVsZXRpbmcgY29sdW1uIHplcm8gc2hvdWxkIG9ubHkgZGVsZXRlIHRoZSBjb2x1bW4gYW5kIG5vdCB0aGUgaXRlbQoJZGF0YS4KCgkqIGRsbHMvbmV0YXBpMzIvYXBpYnVmLmMsIGRsbHMvbmV0YXBpMzIvdGVzdHMvYXBpYnVmLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXggTmV0QXBpQnVmZmVyUmVhbGxvY2F0ZSBhbmQgdGVzdHMgYmFzZWQgb24gcmVzdWx0cyBmcm9tIHdpbmV0ZXN0LgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQ29udmVydGVkIHNvbWUgRklYTUVzIGludG8gVFJBQ0VzLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CgktIG5leHQvcHJldiBtb250aCBkb24ndCBzdGljayBhbnltb3JlCgktIG1pbi9tYXggcmFuZ2VzIGluaXRpYWxpemVkIHRvIHNvbWUgcmVhc29uYWJsZSB2YWx1ZXMKCS0gZml4ZWQgc29tZSBidWdzIGNhdXNlZCBieSByZXZlcnNlZCBvcmRlciBvZiBhcmd1bWVudHMgb2YgTU9OVEhDQUxfQ29weVRpbWUKCS0gdXBkYXRlIGN1cnJlbnQgbW9udGgveWVhciBhZnRlciBzZXR0aW5nIGN1cnJlbnQgZGF0ZQoJLSBjaGFuZ2luZyBtb250aHMgZXRjIGRvZXNuJ3Qgc2VuZCBNQ05fU0VMRUNUICh3aGljaCBjb3VsZCBiZSBzZW50CgkgIG9ubHkgYWZ0ZXIgYSBwYXJ0aWN1bGFyIGRheSB3YXMgY2xpY2tlZCkKCS0gY2hhbmdlZCAoaGl0ICYmIE1DSFRfQ0FMRU5EQVJEQVRFKSB0byAoaGl0ID09IE1DSFRfQ0FMRU5EQVJEQVRFKQoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOiBLcnp5c3p0b2YgRm9sdG1hbiA8a2ZvbHRtYW5AcG9ydGFsLm9uZXQucGw+CgktIG1ha2UgbW9udGhjYWwgYSBjaGlsZCBvZiBkYXRldGltZSAoaXQgd2FzIGEgc2libGluZyBiZWZvcmUsIGNhdXNpbmcKCSAgY29tcGxldGVseSBpbmNvcnJlY3QgbWVzc2FnZSBmbG93KQoJLSB1cGRhdGUgbW9udGhjYWwgYWZ0ZXIgZGF0ZSBjaGFuZ2UgaW4gZGF0ZXRpbWUKCS0gY2hvb3NlIGRpZmZlcmVudCBjb29yZGluYXRlcyB3aGVuIERUU19TSE9XTk9ORSBpcyBub3QgdXNlZAoJLSBlbWJlZGRlZCBtb250aGNhbCBpcyBub3cgMjAwIHBpeGVscyB3aWRlCgktIHNlbGVjdGluZyBhIGRheSBpbiBlbWJlZGRlZCBtb250aGNhbCB1cGRhdGVzIHRoZSBkYXRldGltZSBhbmQgaGlkZXMKCSAgdGhlIG1vbnRoY2FsCgktIGNoYW5naW5nIG1vbnRocy95ZWFycyBieSBjbGlja2luZyBtb250aCBuYW1lL3llYXIgaW4gdGl0bGUgYmFyIHdvcmtzCgktIGVtYmVkZGVkIG1vbnRoIGNhbGVuZGFyIGlzIGNvcnJlY3RseSBkZXN0cm95ZWQgKGl0IHVzZWQgdG8gc3RpY2sgb24KCSAgdGhlIHNjcmVlbiBsb25nIGFmdGVyIHRoZSBkYXRldGltZSdzIGNvbnRhaW5lciB3YXMgY2xvc2VkKQoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUZpeCBiYWQgRU1GIGV4dGVudHMgaW4gU2V0V2luTWV0YUZpbGVCaXRzLgoKCSogZGxscy9rZXJuZWwvY3B1LmM6IEVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCUdldFN5c3RlbUluZm8gc3VwcG9ydCBmb3IgRGFyd2luLgoKCSogaW5jbHVkZS93aW50ZXJubC5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSB2YWx1ZXMgdG8gdGhlIFNZU1RFTV9JTkZPUk1BVElPTl9DTEFTUyBlbnVtZXJhdGlvbi4KCjIwMDQtMDQtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbDoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJUmVwbGFjZSAtLWRlYnVnbXNnIHdpdGggV0lORURFQlVHLgoKCSogZGxscy9kM2Q4L3NoYWRlci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIHR5cG9zLgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jOiBKYWtvYiBFcmlrc3NvbiA8amFrb3ZAdm1saW51eC5vcmc+CglGaXhlZCB0eXBvLgoKCSogZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaDogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXggdGhlIGQzZGNvcmVfZ2wgcGFydCBvZiBIVyB2ZXJ0ZXggc2hhZGVyIHN1cHBvcnQgZm9yIGJyb2tlbnMgR0wKCWhlYWRlcnMuCgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJUmVpbXBsZW1lbnRlZCBHZXRGaWxlQXR0cmlidXRlc0V4VyBhbmQgR2V0Q29tcHJlc3NlZEZpbGVTaXplVyB1c2luZwoJdGhlIGNvcnJlc3BvbmRpbmcgbnRkbGwgZnVuY3Rpb25hbGl0eS4KCgkqIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9zdGFjay5jLAoJICBkbGxzL2RldmVudW0vY3JlYXRlZGV2ZW51bS5jLCBkbGxzL2RldmVudW0vZGV2ZW51bV9wcml2YXRlLmgsCgkgIGRsbHMvc2hsd2FwaS91cmwuYywgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGluY2x1ZGUvd2luc3Bvb2wuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCglSZW1vdmUgd3N6UmVnU2VwYXJhdG9yIGZyb20gZGV2ZW51bV9wcml2YXRlLmggc2luY2UgaXQncyBuZWl0aGVyCglleHBvcnRlZCBieSBjcmVhdGVkZXZlbnVtLmMgbm9yIHVzZWQgYnkgYW55b25lIGVsc2UuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBtZXNzYWdlIHRlc3QgZm9yIGN1c3RvbSBkaWFsb2cgaW5pdGlhbGl6YXRpb24uCgoJKiB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJU2FudG9zaCBTaWRkaGVzaHdhciA8c2FudG9zaC5zQHNvbmF0YS1zb2Z0d2FyZS5jb20+CglBbGxvY2F0ZSBESUFMT0dJTkZPIHN0cnVjdHVyZSBpbiBEZWZEbGdQcm9jIGluc3RlYWQgb2YgaW4KCURJQUxPR19DcmVhdGVJbmRpcmVjdCwgc28gdGhhdCBpdCBnZXRzIGNyZWF0ZWQgY29ycmVjdGx5IGZvciBub24KCXRlbXBsYXRlLWJhc2VkIGRpYWxvZ3MuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbDogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglSZXBsYWNlIC0tZGVidWdtc2cgd2l0aCBXSU5FREVCVUcuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJLSBDaGFuZ2UgdG8gY29uc29sZSBtb2RlIHNvIHRoYXQgd2luZXRlc3QgcnVucyB1bmRlciBXaW5SYXNoLgoJLSBNb3ZlIGZyb20gc3Bhd252cCgpIHRvIENyZWF0ZVByb2Nlc3MoKS4KCS0gRm9yY2UgYSAyLW1pbnV0ZSB0aW1lb3V0IG9uIGluZGl2aWR1YWwgdGVzdHMuCgoJKiBkbGxzL25ldGFwaTMyL3Rlc3RzL3drc3RhLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSBVbmljb2RlIHN0cmluZ3MgJ3N0YXRpYyBjb25zdCcuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywKCSAgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9keGVycjgvZHhlcnI4LmMsIGRsbHMvZHhlcnI5L2R4ZXJyOS5jLCBkbGxzL2dkaS9mcmVldHlwZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2Zvcm1hdF9tc2cuYywKCSAgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYywgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9xdWFydHovZmlsZXNvdXJjZS5jLCBkbGxzL3NldHVwYXBpL2Rpc2tzcGFjZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywKCSAgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS91cmwuYywKCSAgZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLAoJICBkbGxzL3V4dGhlbWUvc3lzdGVtLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2UgVW5pY29kZSBzdHJpbmdzIHN0YXRpYyBjb25zdC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9yZXNvdXJjZS5jLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJU3R1YiBhbmQgZG9jdW1lbnRhdGlvbiBmb3IgUnRsRm9ybWF0TWVzc2FnZS4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jOiBNaW5vciBmaXhlcy4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBpbmNsdWRlL2ZpbGUuaDoKCVJlaW1wbGVtZW50ZWQgR2V0RmlsZUF0dHJpYnV0ZXNXLCBTZXRGaWxlQXR0cmlidXRlc1cgYW5kIFNldEZpbGVUaW1lCgl1c2luZyB0aGUgY29ycmVzcG9uZGluZyBudGRsbCBmdW5jdGlvbmFsaXR5LgoKCSogY29udHJvbHMvaWNvbnRpdGxlLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsCgkgIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2FjbS93aW5lYWNtLmgsCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYywgZGxscy9tc2FjbS9tc2FkcDMyL21zYWRwMzIuYywKCSAgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmMsIGRsbHMvbXNhY20vd2luZW1wMy9tcGVnbDMuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywKCSAgZGxscy9zZWN1cjMyL3NlY3VyMzIuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywgZGxscy93aW5tbS9wbGF5c291bmQuYywKCSAgZGxscy93c29jazMyL3Byb3RvY29sLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsIHRvb2xzL3dtYy9tY2wuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSBzdGF0aWMgVW5pY29kZSBzdHJpbmdzIGNvbnN0LgoKCSogZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2QzZDgvc2hhZGVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCByZWxhdGl2ZSBhZGRyZXNzaW5nLgoJRW5hYmxlIGh3IHZlcnRleCBzaGFkZXJzIGJ5IGRlZmF1bHQuCglNb3ZlZCByZWdpc3RyeSBkM2QgY29uZmlnIGtleSB0byBTb2Z0d2FyZVxXaW5lXERpcmVjdDNELgoKMjAwNC0wNC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBpbmNsdWRlL3dpbm50Lmg6CglGaXhlZC91cGRhdGVkIHRoZSBmaWxlIGF0dHJpYnV0ZXMgZGVmaW5lcy4KCgkqIE1ha2VmaWxlLmluOiBjcm9zc3Rlc3QgdGFyZ2V0IG5lZWRzIHRoZSB0b29scyB0byBiZSBidWlsdCBmaXJzdC4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksCgkgIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBIYW5kbGUgIj8gOiIgY29uZGl0aW9uYWxzLgoJLSBBbGxvdyBbaGFuZGxlXSBhdHRyaWJ1dGUgZm9yIHR5cGVzLgoKCSogZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbDoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJVXNlIFdJTkVERUJVRyBpbnN0ZWFkIG9mIC0tZGVidWdtc2cuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0l0LnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVNtYWxsIGZpeC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBkZXRlY3Rpb24gb2YgNDhrSHogYW5kIDk2a0h6IHN1cHBvcnQuIEZpeGVkIGEgdGhpbmtvLCBhbmQgc29tZQoJbWlzbGVhZGluZyBpbmRlbnRhdGlvbi4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvc2hhZGVyLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZml4IHRoZSBTZXRUZXh0dXJlU3RhZ2VTdGF0ZSBmb3IgRDNEVEFERFJFU1NfTUlSUk9SIHVzaW5nIGR5bmFtaWMgR0wKCSAgZGV0ZWN0aW9uIChhbmQgbm90IGJ1aWxkIHRpbWUgR0wgaGVhZGVycykKCS0gYWRkIGEgbmV3IGRlYnVnIGNoYW5uZWwgZm9yIGhhcmR3YXJlIHZlcnRleCBzaGFkZXJzCgktIGhhcmR3YXJlIFZTICJjb21waWxlciIgZml4ZXM6CgkgIC0+IHNwZWNpYWwgY2FzZSBmb3IgYWRkcmVzcyByZWdpc3RlcnMgKE1PViBtdXN0IGJlIHJlcGxhY2VkIGJ5IEFSTCkKCSAgLT4gYWRkIGxpbmUgbnVtYmVycyB0byB0cmFjZSAoYmV0dGVyIHRvIGZpbmQgd2h5IE5WaWRpYSBkcml2ZXJzIGNvbXBsYWlucykKCSAgLT4gb25lIHBhcnNlIHRvIGRldGVybWluZSB0ZW1wb3JhcnkgYW5kIGFkZHJlc3MgcmVnaXN0ZXJzIG5lZWRzCgkgICAgKEB0b2RvOiBjaGVjayBHTCBsaW1pdHMpCgkgIC0+IHJlbW92ZSBkdXBsaWNhdGUgdHJhY2VzIGZyb20gR2VuZXJpYyBQYXJzZVByb2dyYW0KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19lcG1hcC5jLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsIGluY2x1ZGUvcnBjZGNlLmg6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglGaXggc29tZSBSUEMgcHJvdG90eXBlcyB0byBnZXQgaXQgY29tcGlsaW5nIHdpdGggVzMyQVBJLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IENvcHlNZXRhRmlsZUEgdG8gd29yayB3aXRoIE5VTEwgZmlsZW5hbWUuCgoJKiBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsCgkgIGRsbHMvY3J5cHQzMi9tYWluLmMsIGRsbHMvZGV2ZW51bS9kZXZlbnVtX21haW4uYywKCSAgZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLCBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2tlcm5lbC9jb21tLmMsCgkgIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMvbXNodG1sL21haW4uYywKCSAgZGxscy9tc2kvY3JlYXRlLmMsIGRsbHMvbXNpL2luc2VydC5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9tc2kvcmVjb3JkLmMsIGRsbHMvbXNpL3N1bWluZm8uYywgZGxscy9tc2kvdGFibGUuYywKCSAgZGxscy9uZXRhcGkzMi9hY2Nlc3MuYywgZGxscy9uZXRhcGkzMi90ZXN0cy9hY2Nlc3MuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywKCSAgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYywKCSAgZGxscy93aW5pbmV0L2Nvb2tpZS5jLCBkbGxzL3dpbmluZXQvZGlhbG9ncy5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIFVuaWNvZGUgY29uc3Qgc3RyaW5ncyBzdGF0aWMgc28gdGhleSBhcmUgbm90IGNvcGllZCB0byB0aGUgc3RhY2sKCWVhY2ggdGltZSB3ZSBlbnRlciB0aGUgZnVuY3Rpb24uCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9hdXRvY29tcGxldGUuYywKCSAgZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsIGRsbHMvc2hlbGwzMi9yZWdzdnIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy91dWlkL3V1aWQuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9zaGxkaXNwLmgsCgkgIGluY2x1ZGUvc2hsZGlzcC5pZGwsIGluY2x1ZGUvc2hsZ3VpZC5oOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglBZGQgdGhlIElBdXRvQ29tcGxldGUgYW5kIElBdXRvQ29tcGxldGUyIGltcGxlbWVudGF0aW9uIChidXQgbWV0aG9kcwoJc3R1YmJlZCBmb3Igbm93KS4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCVdvbGZnYW5nIFNjaHdvdHplciA8d29sZmdhbmcuc2Nod290emVyQGdteC5uZXQ+CglTSEJyb3dzZUZvckZvbGRlcjogc3VwcG9ydCBscEJyb3dzZUluZm8tPnBzekRpc3BsYXlOYW1lIGJlaW5nIE5VTEwuCgoJKiBkbGxzL250ZGxsL250LmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglOdFF1ZXJ5SW5mb3JtYXRpb25Ub2tlbiBpc24ndCBhIHN0dWIgc28gY2hhbmdlIHRoZSBGSVhNRSB0byBhIFRSQUNFLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIERMTE1PREUgaGFuZGxpbmcgKC0tbW9kZSBpcyBub3cgLS1zdWJzeXN0ZW0gYW5kIHVzZXMgLVdiKS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglDb2RlIGFuZCBjb25jZXB0cyBtZXJnZWQgaW4gZnJvbSB3aW5lb3NzIGluIG9yZGVyIHRvIGdldCB0aGUKCW5vbi1kc291bmQgd2F2ZSBvdXRwdXQgcGVyZm9ybWFuY2UgaW4gd2luZWFsc2EgdG8gYW4gYWNjZXB0YWJsZQoJbGV2ZWwuIEl0J3Mgc3RpbGwgcG9zc2libGUgdG8gZG8gYmV0dGVyIHRoYW4gdGhlIGN1cnJlbnQgY29kZSwgYnV0Cgl0aGlzIHNob3VsZCBkbyBmb3Igbm93LgoKCSogZGxscy9ycGNydDQvY3Byb3h5LmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9udGRsbC9ydGxzdHIuYzoKCUZpeGVkIG50ZGxsX3djc3RvdW1icyBhbmQgV2lkZUNoYXJUb011bHRpQnl0ZSB0byBzZXQgdGhlICd1c2VkJyBmbGFnCglmb3IgVVRGLTggY29kZXBhZ2UgdG9vLiBUaGlzIHdhcyBjYXVzaW5nIERJUl9udF90b191bml4IHRvIGZhaWwgaW4KCXNvbWUgY2FzZXMgKHRyYWNrZWQgZG93biB3aXRoIGhlbHAgZnJvbSBBbGV4IFBhc2FkeW4pLgoKCSogZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3JlZ3N2ci5jLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJTW9yZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBEbGwoVW4pUmVnaXN0ZXJTZXJ2ZXIgaW4gdXJsbW9uLCBiYXNlZAoJb24gdGhlIHdvcmsgb2YgSm9obiBLLiBIb2htIGZvciBvdGhlciBkbGxzLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2tfbGludXhpbnB1dC5jOgoJQ2hyaXN0b3BoIEZyaWNrIDxmcmlja0BzYy1uZXR3b3Jrcy5kZT4KCS0gYWRkZWQgY29kZSB0byBoYXZlIHRoZSBqb3lzdGljayBzdGF0ZSBiZSBzZXQgdG8gdGhlIGFzc3VtZWQgY2VudGVyCgkgIHZhbHVlcyBvZiB0aGUgam95c3RpY2sgbWFwcGVkIHRvIHRoZSByYW5nZSB0aGUgYXBwbGljYXRpb24gd2FudHMKCSAgdGhlbQoJLSBnZW5lcmF0ZSBldmVudHMgYWZ0ZXIgc2V0dGluZyB0aGUgYXByb3BpYXRlIHZhbHVlcyBpbiBUaGlzLT5qcwoJLSByZXBsYWNlZCBtYWdpYyBpbnRzIHdpdGggZGVmaW5lcyBmcm9tIGxpbnV4L2lucHV0LmgKCS0gcmVtb3ZlZCBtYXBwaW5nIGNvZGUgdGhhdCBnZW5lcmF0ZWQgd3JvbmcgdmFsdWVzIGZvciBheGVzLCB0aGF0IGhhdmUKCSAgdGhlIGNlbnRlciBvbiB0aGUgbWluIG9yIG1heAoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgaW5jbHVkZS9kc291bmQuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlcyBzdXBwb3J0IGZvciBvbGRlciB2ZXJzaW9ucyBvZiBkaXJlY3Qgc291bmQuCglBZGRzIHN1cHBvcnQgZm9yIGRlbGV0aW5nIG5vdGlmaWNhdGlvbiBhcnJheS4KCU1pbm9yIGRlYnVnIGFuZCB3aGl0ZSBzcGFjZSBjbGVhbnVwcy4KCgkqIGRsbHMvZGJnaGVscC9kYmdoZWxwLmMsIGRsbHMvZGJnaGVscC9kYmdoZWxwX3ByaXZhdGUuaCwKCSAgZGxscy9kYmdoZWxwL21zYy5jLCBkbGxzL2RiZ2hlbHAvc3RhYnMuYywgZGxscy9kYmdoZWxwL3N5bWJvbC5jLAoJICBkbGxzL2RiZ2hlbHAvdHlwZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGltcGxlbWVudGVkIHN1cHBvcnQgZm9yIGZ1bmN0aW9uIGRlYnVnIHN0YXJ0L3N0b3AgYW5kIGxhYmVscyAobXNjLmMKCSAgYW5kIHN0YWJzLmMpCgktIHN0YXJ0ZWQgaW1wbGVtZW50aW5nIHR5cGVkZWYgc3VwcG9ydAoJLSBmdW5jdGlvbnMgbm93IGhhdmUgYSByZWFsIGZ1bmN0aW9uIHNpZ25hdHVyZSAob25seSBpbiBzdGFicy5jLCBzdGlsbAoJICB0byBiZSBkb25lIGluIG1zYy5jKQoJLSBzbWFsbCBlbmhhbmNlbWVudHMgdG8gVElfR0VUX1RZUEUgZm9yIGZ1bmN0aW9ucwoJLSBhZGRlZCBzdXBwb3J0IGZvciBmdW5jdGlvbnMnIGJsb2NrIGFuZCBsb2NhbCB2YXJpYWJsZXMgaW4gcmVnaXN0ZXJzCgkgIChtc2MuYykKCS0gZml4ZWQgc29tZSBidWdzIGluIFN0YWNrV2FsawoJLSBjb25zdGFudHMgYXJlIG5vdyBzdG9yZWQgYXMgdmFyaWFudHMgKGluc3RlYWQgb2YgdW5zaWduZWQgaW50cykKCS0gZml4ZWQgcmVndWxhciBleHByZXNzaW9uIG1hbmFnZW1lbnQgKGRiZ2hlbHAncyBSRSBhcmUgbm90IHRoZSBzYW1lCgkgIGFzIFBPU0lYIG9uZXMpCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gT3B0aW1pc2UgYWNjZXNzaW5nIHRvb2xiYXIgc3R5bGUgYnkgc3RvcmluZyBpdCBpbiB0aGUgVE9PTEJBUl9JTkZPCgkgIHN0cnVjdHVyZS4KCS0gUmVwbGFjZSB7R2V0LFNldH1XaW5kb3dMb25nIGJ5IHtHZXQsU2V0fVdpbmRvd0xvbmdQdHIgd2hlcmUKCSAgYXBwcm9wcmlhdGUuCgoJKiBkbGxzL2R4ZGlhZ24vTWFrZWZpbGUuaW4sIGRsbHMvZHhkaWFnbi9jb250YWluZXIuYywKCSAgZGxscy9keGRpYWduL2R4ZGlhZ19wcml2YXRlLmgsIGRsbHMvZHhkaWFnbi9wcm92aWRlci5jLAoJICBpbmNsdWRlL2R4ZGlhZy5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGZpeCBkeGRpYWcuaCAoYWdhaW4pCgktIElEeERpYWdDb250YWluZXJJbXBsIGltcGxlbWVudGF0aW9uCgktIElEeERpYWdQcm92aWRlcjo6R2V0Um9vdENvbnRhaW5lciAodGhhdCBjcmVhdGVzIHRoZSByb290IGNvbnRhaW5lcikKCgkqIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCVByZXZlbnQgY3Jhc2hlcyBpbiBJX1JwY1NlbmQgb24gV2luZG93cyBYUC4KCjIwMDQtMDQtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYywgZmlsZXMvZHJpdmUuYzoKCVJlaW1wbGVtZW50ZWQgR2V0RGlza0ZyZWVTcGFjZVcgYW5kIEdldERpc2tGcmVlU3BhY2VFeFcgb24gdG9wIG9mIHRoZQoJY29ycmVzcG9uZGluZyBudGRsbCBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9jaGFuZ2UuYywgZGxscy9rZXJuZWwvZmlsZS5jOgoJTWFrZSBGaW5kRmlyc3RGaWxlRXhXIGFuZCBGaW5kRmlyc3RDaGFuZ2VOb3RpZmljYXRpb25XIHVzZSBOdE9wZW5GaWxlCglkaXJlY3RseSBzbyB0aGF0IHRoZXkgY2FuIHRha2UgYWR2YW50YWdlIG9mIHRoZSBGSUxFX0RJUkVDVE9SWV9GSUxFCglvcHRpb24uCgoJKiBsaWJzL01ha2VmaWxlLmluOiBFbW1hbnVlbCBNYWlsbGFyZCA8ZS5yc3pAbGliZXJ0eXN1cmYuZnI+CglDcmVhdGUgc3ltbGlua3MgZm9yIC5keWxpYiBsaWJyYXJpZXMgdG9vLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglNaWtlIEhlYXJuIDxtaWtlQG5hdmkuY3g+CglEb2N1bWVudGF0aW9uIGZvciBTeXN0ZW1GdW5jdGlvbjA0MCBhbmQgU3lzdGVtRnVuY3Rpb24wNDEgaGFzIGJlY29tZQoJYXZhaWxhYmxlLCBzbyBzdHViIHRoZW0gb3V0IGluIGNhc2UgYXBwbGljYXRpb25zIHVzZSB0aGVtLgoKCSogZGxscy9kYmdoZWxwL3N0YWNrLmM6IEVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCUZpeGVkIGEgY29tcGlsZSBlcnJvciBvbiBub24taTM4Ni4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CgktIHN0YXJ0IGFzc2lnbmluZyBjdXN0b20gVksgY29kZXMgZnJvbSBWS19PRU1fOCBzaW5jZSB0aGlzIGNvZGUKCSAgYWxyZWFkeSBwcmVzZW50cyBpbiB0aGUgbGF5b3V0IHRhYmxlcwoJLSBzZWFyY2ggdGhlIGxheW91dCB0YWJsZXMgb25seSBpZiBYTG9va3VwU3RyaW5nIHJldHVybmVkIG5vbiB6ZXJvCgkgIG51bWJlciBvZiBjaGFyYWN0ZXJzIGZvciBhIGtleXN5bSwgb3RoZXJ3aXNlIHRoYXQncyBhIG5vbiBjaGFyYWN0ZXIKCSAga2V5CgktIGF2b2lkIGluc2VydGluZyBWS19PRU1feCBjb2RlcyBpbnRvIHVuYXNzaWduZWQgcG9zaXRpb25zIHNpbmNlIHRoZXNlCgkgIGNvZGVzIG1pZ2h0IGFscmVhZHkgYmUgaW4gdGhlIGxheW91dCB0YWJsZSwgdGh1cyBjcmVhdGluZyBhIGNvbmZsaWN0CgoJKiBkbGxzL250ZGxsL3JlbGF5LmM6IEVtbWFudWVsIE1haWxsYXJkIDxlLnJzekBsaWJlcnR5c3VyZi5mcj4KCUZpeCBhIGNvbXBpbGUgZXJyb3IgZm9yIFNOT09QX0dldFByb2NBZGRyZXNzIG9uIG5vbi1pMzg2LgoKMjAwNC0wNC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9maWxlLmMsCgkgIHNlcnZlci9maWxlLmMsIHNlcnZlci90cmFjZS5jOgoJRml4ZWQgYSBudW1iZXIgb2YgTlQgc3RhdHVzIHZhbHVlcyB0byBiZSBjbG9zZXIgdG8gTlQgYmVoYXZpb3IuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUltcGxlbWVudCBzdXBwb3J0IGZvciB0aGUgLXggPGxhbmc+IG9wdGlvbi4KCgkqIGNvbnRyb2xzL21lbnUuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCVNldHVwIG1lbnUgZHJhd2luZyBjb2xvcnMgYmVmb3JlIGNhbGxpbmcgb3duZXIgZHJhdyByb3V0aW5lLgoKCSogZGxscy9yaWNoZWRpdC9yZWFkZXIuYzogR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCS0gV29yayBhcm91bmQgcHJvYmxlbSBpbiBOU0lTIGluc3RhbGxlcnMgd2hpY2ggY2FuJ3QgaGFuZGxlIDEgY2hhciBhdAoJICBhIHRpbWUgcmVhZGluZyBvZiBSVEYgdGV4dC4KCS0gSW5jcmVhc2UgYnVmZmVyIHRvIDQwOTYgYnl0ZXMgZm9yIGJldHRlciBjb21wYXRpYmlsaXR5LgoKCSogdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbjogUGF1bCBWcmllbnMgPHB2cmllbnNAeHM0YWxsLm5sPgoJQ29ycmVjdCByZW1vdmluZyB3aW5lZysrIGxpbmsgb24gYW4gdW5pbnN0YWxsLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMvbnRkbGwvZW52LmMsCgkgIGRsbHMvbnRkbGwvcGF0aC5jLCBpbmNsdWRlL3dpbnRlcm5sLmgsIGluY2x1ZGUvdGhyZWFkLmgsCgkgIHNlcnZlci90cmFjZS5jOgoJUnRsU2V0Q3VycmVudERpcmVjdG9yeV9VOiBzdG9yZSBhIGhhbmRsZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkKCWFsb25nIHdpdGggaXRzIG5hbWUuCgoJKiBmaWxlcy9maWxlLmMsIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIEZJTEVfRElSRUNUT1JZX0ZJTEUgYW5kIEZJTEVfTk9OX0RJUkVDVE9SWV9GSUxFIG9wZW4KCW9wdGlvbnMuCgoJKiBtaXNjL29wdGlvbnMuYzogUmVtb3ZlZCBzdXBwb3J0IGZvciB0aGUgLS1kZWJ1Z21zZyBvcHRpb24uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9keGRpYWduLy5jdnNpZ25vcmUsCgkgIGRsbHMvZHhkaWFnbi9NYWtlZmlsZS5pbiwgZGxscy9keGRpYWduL2R4ZGlhZ19tYWluLmMsCgkgIGRsbHMvZHhkaWFnbi9keGRpYWdfcHJpdmF0ZS5oLCBkbGxzL2R4ZGlhZ24vZHhkaWFnbi5zcGVjLAoJICBkbGxzL2R4ZGlhZ24vcHJvdmlkZXIuYywgZGxscy9keGRpYWduL3JlZ3N2ci5jLAoJICBkbGxzL2R4ZGlhZ24vdmVyc2lvbi5yYywgdG9vbHMvd2luZS5pbmY6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZGVkIGR4ZGlhZ24uZGxsIHdpdGggYSBzaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgSUR4RGlhZ1Byb3ZpZGVyLgoKCSogZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL250ZGxsL3BhdGguYywKCSAgaW5jbHVkZS90aHJlYWQuaDoKCUFkZGVkIGhhY2sgdG8gZmV0Y2ggdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGZyb20gdGhlIHN1YnN5c3RlbSB0aWQgc28KCXRoYXQgaXQgaXMgaGFuZGxlZCBjb3JyZWN0bHkgaW4gbnRkbGwgYWxzbyBmb3IgMTYtYml0IHRhc2tzLgoKCSogZGxscy9rZXJuZWwvZmlsZTE2LmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJVXBkYXRlIHRoZSBkcml2ZSBlbnZpcm9ubWVudCBzdHJpbmdzIHdoZW4gY2hhbmdpbmcgdGhlIGN1cnJlbnQKCWRpcmVjdG9yeSBmcm9tIDE2LWJpdCBvciBET1MgY29kZS4KCjIwMDQtMDQtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2R4ZGlhZy5oOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUZpeGVkIHNvbWUgYnVncy4KCgkqIGRsbHMvZDNkOC9NYWtlZmlsZS5pbiwgZGxscy9kM2Q4L2QzZDhfbWFpbi5jLAoJICBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsIGRsbHMvZDNkOC9zaGFkZXIuYywKCSAgZGxscy9kM2Q4L3ZzaGFkZXJkZWNsYXJhdGlvbi5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIHZlcnRleCBzaGFkZXIgKHVzaW5nIEFSQl92ZXJ0ZXhfcHJvZ3JhbSBleHRlbnNpb24pLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL250ZGxsL3RocmVhZC5jLAoJICBpbmNsdWRlL3RocmVhZC5oOgoJR2V0IHJpZCBvZiB0aGUgVEVCIGZsYWdzLCB0aGV5IGFyZSBubyBsb25nZXIgdXNlZC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNvcnJlY3QgcmV0dXJuIHZhbHVlIGluIGEgY291cGxlIG9mIGVycm9yIGNhc2VzLgoKCSogaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVByZXZlbnQgQ1kgdHlwZSBmcm9tIGJlaW5nIHJlZGVmaW5lZC4KCgkqIGRsbHMvZGJnaGVscC9lbGZfbW9kdWxlLmMsIGRsbHMvZGJnaGVscC9zdGFicy5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglGaXggYSBmZXcgY29tcGlsZSBlcnJvcnMgd2hlbiBjcm9zcyBjb21waWxpbmcuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUhhdmUgd2luZWRiZyBzZW5kIGl0cyBvdXRwdXQgdG8gc3RkZXJyIHdoZW4gaW52b2tlZCB3aXRoIHRoZSAtLWF1dG8KCW9wdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBtYWtlIGRyaXZlIGxldHRlcnMgaW4gUElETHMgYWx3YXlzIHVwcGVyY2FzZSB0byBlbmFibGUgUElETAoJICBjb21wYXJpc29uCgktIFVuaWNvZGlmeSBfSUxDcmVhdGVEcml2ZSgpCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2R4ZGlhZy5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGRlZCB0aGUgZHhkaWFnLmggaGVhZGVyLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ29ycmVjdCBlcnJvciBoYW5kbGluZyBpbiBTSEVMTDMyX1BhcnNlTmV4dEVsZW1lbnQoKS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJT25seSBjcmVhdGUgdGhlIGRldmljZSBzeW1saW5rcyB0aGUgZmlyc3QgdGltZSBhcm91bmQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvdGFzay5jOgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgc3VwcG9ydCBmb3IgdGhlIFN1YlN5c3RlbVRpYiBmaWVsZCBpbiB0aGUgVEVCIG9mCgkxNi1iaXQgdGhyZWFkcy4gVGhpcyBhbGxvd3MgR2V0TW9kdWxlRmlsZU5hbWVXIHRvIGF2b2lkIGNhbGxpbmcgMTYtYml0CglmdW5jdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGQgYWRkaXRpb25hbCBuYW1lcyBvZiBtaW5ndyB0b29scy4KCjIwMDQtMDQtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIGdsRGVsZXRlT2JqZWN0QnVmZmVyQVRJIGZ1bmN0aW9uLgoJRml4IGZvciB0eXBlcyB0aGF0IGhhdmUgYSBjb21tb24gcm9vdC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJUmV0dXJuICJmaWxlIG5vdCBmb3VuZCIgZXJyb3IgdmFsdWVzIGluc3RlYWQgb2YgRV9JTlZBTElEQVJHIGlmCglfSUxDcmVhdGVGcm9tUGF0aEEoKSBmYWlsZWQgdG8gZmluZCBmaWxlcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9kaXJlY3RvcnkuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL3dpbmVkb3MvZG9zY29uZi5jLCBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYywKCSAgcHJvZ3JhbXMvd2luZXBhdGgvd2luZXBhdGguYzoKCU1vdmVkIHdpbmVfZ2V0X3VuaXhfZmlsZV9uYW1lIGltcGxlbWVudGF0aW9uIHRvIG50ZGxsLCBhbmQgY2hhbmdlZCBpdAoJdG8gcmV0dXJuIGFuIGFsbG9jYXRlZCBidWZmZXIgaW5zdGVhZCBvZiBhIGZpeGVkIHNpemUgb25lLgoKCSogZGxscy9nZGkvYml0Ymx0LmMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWMsCgkgIGRsbHMvbXNpbWczMi9tc2ltZzMyX21haW4uYywgaW5jbHVkZS93aW5nZGkuaDoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJUGFydGlhbCBzdHViIG9mIEdkaUFscGhhQmxlbmQvQWxwaGFCbGVuZC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBIHdvcmthcm91bmQgZm9yIG1pc3NpbmcgcmVhbCBzdXBwb3J0IGZvciBrZXlib2FyZCBsYXlvdXQgQVBJcy4KCgkqIG9iamVjdHMvdGV4dC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgc291cmNlIGNoYXJzZXQgYXMgd2VsbCBhcyBhIHJlc3VsdGluZyBjb2RlcGFnZSBpbiBGT05UX21idG93Yy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQWRkIG1pc3NpbmcgUE9TSVggYmF1ZCByYXRlcyB0byBHZXRDb21tU3RhdGUgYW5kIFNldENvbW1TdGF0ZS4KCgkqIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywgZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglDb3JyZWN0IHNvbWUgUElETCB0eXBlcyBhbmQgZWxpbWluYXRlIHNvbWUgbWFnaWMgbnVtYmVycyBpbiBQSURMCglhbGxvY2F0aW9uOyBjb3JyZWN0IGEgY29weS1wYXN0byBmcm9tIGEgcHJldmlvdXMgcGF0Y2guCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJZiBhIGZvbGRlciBjb250YWlucyBhIGRlc2t0b3AuaW5pLCBjaGVjayBpdCBmb3IgdGhlIGljb24gbG9jYXRpb24KCWJlZm9yZSB1c2luZyB0aGUgZGVmYXVsdCBmb2xkZXIgaWNvbi4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmM6CglBZGRlZCBzdXBwb3J0IGZvciByZXN0YXJ0aW5nIGRpcmVjdG9yeSBzY2FucyBvbiBwbGF0Zm9ybXMgd2hlcmUKCXNlZWtkaXIgcmV0dXJuIHZhbHVlcyBjYW5ub3QgYmUgcmV1c2VkIG9uIGEgZGlmZmVyZW50IGRpcmVjdG9yeQoJb2JqZWN0LgoJQWRkZWQgc29tZSBjaGVja3MgZm9yIGludmFsaWQgZmlsZSBuYW1lcyBpbiBESVJfbnRfdG9fdW5peC4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jOgoJRml4ZWQgaGFuZGxpbmcgb2YgXFw/XCBwcmVmaXggaW4gUnRsRG9zUGF0aE5hbWVUb050UGF0aE5hbWVfVS4KCUZpeGVkIHBhcnNpbmcgb2YgVU5DIGZpbGUgbmFtZXMgaW4gUnRsR2V0RnVsbFBhdGhOYW1lX1UuCgoJKiBkbGxzL2tlcm5lbC92eGQuYywgZGxscy93aW5lZG9zL2ludDIxLmM6CglSZXBsYWNlZCBjcmVhdGVfZmlsZSBzZXJ2ZXIgcmVxdWVzdHMgYnkgYSBjYWxsIHRvIE50Q3JlYXRlRmlsZS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBpbmNsdWRlL3JwY2RjZS5oOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRml4IHRoZSBjYXNlIG9mIFJwY05ldHdvcmtJc1Byb3RzZXFWYWxpZFtBV10gKHdhcwoJUnBjTmV0d29ya0lzUHJvdFNlcVZhbGlkW0FXXSkgbmFtZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglSZXR1cm4gVFJVRSBmb3IgVFZNX0VYUEFORCBpZiB0cmVldmlldyBpdGVtIGlzIGFscmVhZHkgZXhwYW5kZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZvcmNlIHJlc2l6ZSBiZWZvcmUgY2FsbGluZyBSQk5fSEVJR0hUQ0hBTkdFIG5vdGlmaWNhdGlvbi4KCjIwMDQtMDQtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJVXBkYXRlZCB0byBsYXRlc3QgdmVyc2lvbidzIGV4cG9ydHMsIGFuZCBhZGRlZCBhIGZldyBtb3JlIGZvcndhcmRzLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCB0eXBvLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglBZGQgYml0IGFib3V0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSBXaW5kb3dzIGRyaXZlcnMgdG8gUHJpbnQgZXRjLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBmb3IgR1dfSFdORExBU1QuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgc3R1YiBmb3IgU2hlbGxEREVJbml0IHRvIGxldCBXaW5kb3dzIGV4cGxvcmVyLmV4ZSBnZXQgcGFzdCB0aGUKCWJlZ2lubmluZy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUlTaGVsbFZpZXcgc2VlbXMgcmVhc29uYWJseSBjb21wbGV0ZSwgY2hhbmdlIGEgRklYTUUgdG8gYSBUUkFDRSB0bwoJc3BlZWQgdXAgb3Blbi9zYXZlIGRpYWxvZ3MuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBGaXhlZCBhIHdhcm5pbmcuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC91dGlsLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglEbyBub3QgaW5jbHVkZSA8d2luZG93cy5oPiwgdG8gYXZvaWQgZHVwbGljYXRlIGRlY2xhcmF0aW9uIG9mCglzZWxlY3QoKS4KCgkqIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglDb3JyZWN0IElTaGVsbEZvbGRlcjo6R2V0QXR0cmlidXRlc09mKCkgZm9yIHRoZSBjYXNlICpyZ2ZJbk91dD0wLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNoZWNrIGZvciBmb2xkZXJzIGluIFNoZWxsRXhlY3V0ZSgpLgoKMjAwNC0wNC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglTZXQgbGFzdCBlcnJvciB0byAwIG9uIHN1Y2Nlc3MgaW4gVkVSU0lPTl9HZXRGaWxlVmVyc2lvbkluZm9fUEUgbm93Cgl0aGF0IExvYWRMaWJyYXJ5VyBkb2Vzbid0IGRvIHRoaXMgYW55bW9yZS4KCgkqIGRsbHMvbnRkbGwvZGlyZWN0b3J5LmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9wYXRoLmM6CglJbXBsZW1lbnRlZCBOdENyZWF0ZWxGaWxlIHVzaW5nIHRoZSBuZXcgc3ltbGluayBzY2hlbWUuCglVc2UgTnRDcmVhdGVGaWxlIGluIHRoZSBsb2FkZXIsIGFuZCBnZXQgcmlkIG9mIHRoZSBDcmVhdGVGaWxlVyB1cGNhbGwKCWhhY2suCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGluY2x1ZGUvd2luZXJyb3IuaCwgc2VydmVyL2ZpbGUuYywKCSAgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmM6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglHZXQgcmlkIG9mIG5vbi1zdGFuZGFyZCBFUlJPUl9VTktOT1dOIHZhbHVlLgoKCSogZGxscy93aW5pbmV0L2Nvb2tpZS5jLCBkbGxzL3dpbmluZXQvZGlhbG9ncy5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgdW5pY29kZSBzdHJpbmdzIHRvIGNvbnN0LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIFdNX1FVRVJZTkVXUEFMRVRURSBpbiBhcHByb3ByaWF0ZSBwbGFjZXMgb2YgdGhlIG1lc3NhZ2UgdGVzdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIHJlbmFtZSAnd3N6Q29tbWFuZGxpbmUnIHRvICd3c3pQYXJhbWV0ZXJzJwoJLSBzZXBhcmF0ZSBvdXQgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBmcm9tIGV4ZWN1dGFibGUgZmlsZSBuYW1lCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIGVsaW1pbmF0ZSBNU1ZDIHR5cGUgY29udmVyc2lvbiB3YXJuaW5nCgktIElTaGVsbExpbms6OkdldEljb25Mb2NhdGlvbigpOiBnZXQgaWNvbnMgZm9yIHNoZWxsIGxpbmtzIGlmIG5vdAoJICBhbHJlYWR5IHNldAoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDbGVhbnVwIHJlZmVyZW5jZSBjb3VudGluZy4KCU1vdmUgbm90aWZ5IGFycmF5IHRvIGJ1ZmZlci4KCUFkZCBzdGF0ZSBpbmZvIGFuZCBmaXggR2V0U3RhdHVzLgoJUmVtb3ZlIHVubmVjZXNzYXJ5IGRyaXZlciBkZXNjcmlwdGlvbiBmbGFncy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJT3BlblNlcnZpY2VXOiBkb24ndCB1c2UgdGhlIHJlcXVlc3RlZCBzZXJ2aWNlIGFjY2VzcyByaWdodHMgZm9yIHRoZQoJcmVnaXN0cnkga2V5IGFjY2VzcyByaWdodHMsIHRoZXkgYXJlIG5vdCB0aGUgc2FtZSB0aGluZy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYzoKCUNyZWF0ZSB0aGUgZGV2aWNlcyBlYXJsaWVyIG9uIGR1cmluZyBzdGFydHVwLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOiBPcGVuU0NNYW5hZ2VyQS9XIGFyZ3VtZW50cyBhcmUgc3RyaW5ncy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDogSmVmZiA8amVmZmxAZGVmY2VuLmdvdi5hdT4KCUNsYXJpZnkgdGhlIGF0dGFjaCBjb21tYW5kLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9oZWxwZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGQgdGhlIHBvc3NpYmlsaXR5IHRvIHNhdmUgYSBzbmFwc2hvdCBvZiB0aGUgYmFja2J1ZmZlciBhdAoJZmxpcC10aW1lLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYmV0dGVyIGxvZyB0aGUgR2V0RGV2aWNlU3RhdGUgZnVuY3Rpb24KCS0gbG9nIGNoYW5nZXMgdG8gdGhlIERJbnB1dEtleVN0YXRlIHRhYmxlCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBHZXRDb21tU3RhdGUgYW5kIFNldENvbW1TdGF0ZSwgc28gdGhhdCB0aGVzZSBmdW5jdGlvbnMgY2FuIGJlIHVzZWQKCXRvIHNldC9jbGVhci9yZWFkIHRoZSBEVFIgYW5kIFJUUyBsaW5lcy4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglDb3JyZWN0IHNwZWMgZW50cnkgZm9yIE1zaUxvYWRTdHJpbmcqLgoJUHNldWRvIHN0dWJzIGZvciBNc2lMb2NhdGVDb21wb25lbnQqLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSB0ZXN0IGNhc2UgZm9yIGNoaWxkcmVuIFogb3JkZXJpbmcgYXQgd2luZG93IGNyZWF0aW9uIHRpbWUuCgoJKiBkbGxzL3RhcGkzMi9hc3Npc3RlZC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbXBsZW1lbnQgdGFwaUdldExvY2F0aW9uSW5mby4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIHRvb2xzL3dpbmVpbnN0YWxsOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUmVtb3ZlICJQYXRoIiBsaW5lcyBmcm9tIHNhbXBsZSBjb25maWcuCglTZXR1cCB0aGUgbGlua3MgZm9yIHRoZSBkZWZhdWx0IERPUyBkcml2ZXMgaW4gd2luZWluc3RhbGwuCgoJKiB0b29scy93cmMvd3JjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgLS12ZXJib3NlIGZvciBjb21wYXRpYmlsaXR5LgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGJhY2sgd2luMTYgc3R5bGUgZGlhbG9ncyBmb3Igd2luMzIgYXBwcy4KCgkqIGluY2x1ZGUvaW1tLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEb24ndCBkZWNsYXJlIEdESSBzdHVmZiB3aGVuIE5PR0RJIGlzIGRlZmluZWQuCgoJKiBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywKCSAgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBpbmNsdWRlL3dpbmVycm9yLmg6CglGaWxpcCBOYXZhcmEgPHhuYXZhcmFAdm9sbnkuY3o+CglHZXQgcmlkIG9mIEVfVU5TUEVDIG5vbi1zdGFuZGFyZCBlcnJvciB2YWx1ZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlIHRyYWlsaW5nIHdoaXRlIHNwYWNlLgoJQ2xlYW51cCB3aGl0ZSBzcGFjZSBhbmQgZm9ybWF0IGluIGRpcmVjdCBzb3VuZCBjYXB0dXJlIHJvdXRpbmVzLgoKMjAwNC0wNC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dyYy9wYXJzZXIubDoKCUZpeGVkIGxpbmUgbnVtYmVyIGhhbmRsaW5nIGZvciBlc2NhcGVkIGVuZCBvZiBsaW5lcyBpbnNpZGUgc3RyaW5ncy4KCgkqIHRvb2xzL3dpbmVkdW1wL1JFQURNRSwgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAubWFuOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gcmVtb3ZlIGZyb20gUkVBRE1FIHRoZSBzdHVmZiB0aGF0J3MgYWxyZWFkeSBpbiB0aGUgbWFuIHBhZ2UKCS0gbW9yZSBzdHVmZiBnb2VzIGZyb20gUkVBRE1FIHRvIHRoZSBtYW4gcGFnZQoJLSBzcGVsbGluZyBmaXhlcwoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbmRpdGlvbmFsbHkgY29tcGlsZSBjb2RlIHdoaWNoIHVzZXMgWEtfRXVyb1NpZ24gZGVmaW5pdGlvbi4KCgkqIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglMaW5rIHRvIG50ZGxsLgoKCSogZGxscy9tc2kvbXNpLnNwZWM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQ29ycmVjdCBzcGVjIGVudHJ5IGZvciBEbGxHZXRDbGFzc09iamVjdC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUGF0Y2ggdGhlIGZyYWdtZW50IHNpemUgaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgc291bmQKCWZvcm1hdC4gVGhpcyBzYXZlcyB1cyBmcm9tIHRyaWdnZXJpbmcgYSBrZXJuZWwgZnJlZXplIG9uIHNvbWUgT1NTIDIuNAoJKyBTb3VuZEJsYXN0ZXIgMTYgc3lzdGVtcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ2xlYW51cCB0aGUgaGFuZGxpbmcgb2YgdGhlIGV4dGVuc2lvbiBpbiBTSEVMTF9GaW5kRXhlY3V0YWJsZSgpOgoJLSBFbGltaW5hdGUgdGhlIGNvcnJlc3BvbmRpbmcgZml4ZWQtc2l6ZSBidWZmZXIgd2hpY2ggcmVtb3ZlcyB0aGUKCSAgbGltaXRhdGlvbiB0byAzIGNoYXJhY3RlciBleHRlbnNpb25zLgoJLSBGaXggaGFuZGxpbmcgb2YgdGhlIHRyYWlsaW5nICcuJyBjYXNlLgoJLSBEbyBhIGNhc2UtaW5zZW5zaXRpdmUgY2hlY2sgZm9yIHRoZSBleHRlbnNpb24gaW4gd2luLmluaS4KCUluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBjb21tYW5kIGJ1ZmZlciB0byAxMDI0LgoKCSogZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBkbGxzL3NobHdhcGkvdGhyZWFkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBuYW1lZCBjb25zdGFudHMgaW5zdGVhZCBvZiBtYWdpYyBudW1iZXJzLgoKCSogaW5jbHVkZS9tc3ZjcnQvbWF0aC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgZGVmaW5pdGlvbiBmb3IgSFVHRV9WQUwuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNwZWNpZnkgdGhlIHJpZ2h0IG5hbWUgZm9yIHRoZSBXaW5lbGliIHNoYXJlZCBvYmplY3QuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHN0cnVjdCBuYW1lIGZvciBCSVRNQVBJTkZPLgoKMjAwNC0wNC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDA0MDQwOC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwNC0wNC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmgsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIG1vdmUgQ3JlYXRlTXlDb21wRW51bUxpc3QgYW5kIENyZWF0ZURlc2t0b3BFbnVtTGlzdCB0byB0aGVpcgoJICByZXNwZWN0aXZlIGZpbGVzCgktIHJld3JpdGUgQ3JlYXRlRm9sZGVyRW51bUxpc3QgdG8gb25seSBGaW5kRmlyc3RGaWxlL0ZpbmROZXh0RmlsZSBvbmNlCgoJKiBkbGxzL21zdmNydC9tYXRoLmM6IFBvcnRhYmlsaXR5IGZpeC4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jOiBEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCXdjc3RvZDogYWRkZWQgZXhwb25lbnQgcGFyc2luZyBhbmQgZml4ZWQgaGFuZGxpbmcgb2YgbmVnYXRpdmUgc2lnbi4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVzdG9yZSBjb3JyZWN0IGZvY3VzIGhhbmRsaW5nIGZvciBTaG93V2luZG93KFNXX0hJREUpIGNhc2UuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLAoJICBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbWIuYywgc2VydmVyL3NvY2suYywKCSAgc2VydmVyL3RyYWNlLmM6CglSZW1vdmVkIHRoZSBnZXRfZmlsZV9pbmZvIHJlcXVlc3QuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJldmVydCBhbiBlcnJvbmVvdXMgcGF0Y2guCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgV01fU0VUUkVEUkFXIHRlc3QuCgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglFbXB0eSB2YWx1ZXMgbmVlZCB0byBiZSBwcmVzZXJ2ZWQgYXMgZW1wdHkgdmFsdWVzIGFuZCBub3QgYXNzdW1lZCB0bwoJYmUgbm9uZXhpc3RlbnQgdmFsdWVzLgoKCSogaW5jbHVkZS90YXBpLmg6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZCBzb21lIHN0cnVjdHVyZXMgYW5kIGRlZmluZXMuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglBdXRvbWF0aWNhbGx5IGRldGVjdCB3aGV0aGVyIHRoZSBlbnRyeSBwb2ludCBpcyBtYWluIG9yIFdpbk1haW4KCWluc3RlYWQgb2YgZGVwZW5kaW5nIG9uIHRoZSBzdWJzeXN0ZW0gdHlwZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy9udGRsbC9maWxlLmMsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS93aW5iYXNlLmg6CglSZXBsYWNlIHRoZSBnZXRfZmlsZV9pbmZvIHJlcXVlc3QgYnkgYW4gZnN0YXQoKSBvbiB0aGUgY2xpZW50IHNpZGUuCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jOiBSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBiYWQgaW5pdGlhbGl6YXRpb24gb2YgVW5pY29kZSBsZW5ndGggcGFyYW1ldGVycyBpbgoJUnRsU3RyaW5nRnJvbUdVSUQuCgoJKiBkbGxzL2RwbmV0L2FkZHJlc3MuYywgZGxscy9kcG5ldC9jbGllbnQuYywKCSAgZGxscy9kcG5ldC9kcG5ldF9wcml2YXRlLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYWRkIHRyYWNlcyB0byBjbGllbnQuYyBhbmQgYWRkcmVzcy5jIHN0dWIgZnVuY3Rpb25zCgktIGltcGxlbWVudCBzb21lIGRlYnVnZ2luZyBmdW5jdGlvbnMgKGRlYnVnc3RyX1NQKQoJLSBpbXBsZW1lbnQgSURpcmVjdFBsYXk4QWRkcmVzczo6R2V0U1AvSURpcmVjdFBsYXk4QWRkcmVzczo6U2V0U1AKCgkqIGRsbHMvc2hlbGwzMi9jcGFuZWwuaCwgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5oLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglNb3ZlIGNvbnRyb2wgcGFuZWwgYXBwbGV0IGVudW1lcmF0aW9uIHRvIGNwYW5lbGZvbGRlci5jLgoKMjAwNC0wNC0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglIYW5kbGUgdGhlIHNldF9maWxlX3BvaW50ZXIgcmVxdWVzdCBvbiB0aGUgY2xpZW50IHNpZGUuCgoJKiBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJRml4IGNvbXBpbGluZyB1bmRlciBNU19WQyA2LgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gU0hCaW5kVG9QYXJlbnQoKTogcmVxdWVzdCBjb3JyZWN0IENPTSBpbnRlcmZhY2UgZnJvbSBkZXNrdG9wLgoJLSBfSUxDcmVhdGVGcm9tRmluZERhdGFBKCk6IHR5cGUgY2FzdCB0byBlbGltaW5hdGUgTVNWQyBjb21waWxlcgoJICB3YXJuaW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZHBuZXQvLmN2c2lnbm9yZSwKCSAgZGxscy9kcG5ldC9NYWtlZmlsZS5pbiwgZGxscy9kcG5ldC9hZGRyZXNzLmMsIGRsbHMvZHBuZXQvY2xpZW50LmMsCgkgIGRsbHMvZHBuZXQvZHBuZXQuc3BlYywgZGxscy9kcG5ldC9kcG5ldF9tYWluLmMsCgkgIGRsbHMvZHBuZXQvZHBuZXRfcHJpdmF0ZS5oLCBkbGxzL2RwbmV0L3BlZXIuYywgZGxscy9kcG5ldC9yZWdzdnIuYywKCSAgZGxscy9kcG5ldC9zZXJ2ZXIuYywgZGxscy9kcG5ldC92ZXJzaW9uLnJjLCB0b29scy93aW5lLmluZjoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQWRkZWQgc2ltcGxlIGRwbmV0LmRsbCBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9jcGFuZWxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBjb21tZW50IGZpeGVzCgktIGltcHJvdmVkIGVycm9yIGNoZWNraW5nIGFuZCBjb25mb3JtYW5jZSB3aXRoIFdpbmRvd3MKCS0gcmVtb3ZlIHNvbWUgc3B1cmlvdXMgZXJyb3IgbWVzc2FnZXMKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvbWlzYy5jLAoJICBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3ZkbWRiZy8uY3ZzaWdub3JlLAoJICBkbGxzL3ZkbWRiZy9NYWtlZmlsZS5pbiwgZGxscy92ZG1kYmcvdmRtZGJnLmMsCgkgIGRsbHMvdmRtZGJnL3ZkbWRiZy5zcGVjOgoJU2FtaSBBYXJpbyA8c2FtaS5hYXJpb0BzdXJmZXUuZmk+CglTdHVicyB0byBwcmV2ZW50IHRhc2ttZ3IuZXhlIGZyb20gY3Jhc2hpbmcgb3IgYWJvcnRpbmcgZHVyaW5nCglzdGFydHVwLgoKCSogZmlsZXMvZmlsZS5jOiBCZXR0ZXIgZmFsbGJhY2sgaW4gU2V0RmlsZVRpbWUgd2hlbiBmdXRpbWVzIGlzIG1pc3NpbmcuCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogTWljaGFlbCBKYWNvYnNlbiA8aW1fbm90dEBob3RtYWlsLmNvbT4KCUNsZWFuZWQgdXAgdGhlIHRleHQgY29uY2VybmluZyB0aGUgbmVlZCBmb3IgY29uZm9ybWFuY2UgdGVzdHMuCgoJKiBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJQ2FzdCB0aGlyZCBwYXJhbWV0ZXIgb2YgZWxmX3NlYXJjaF9hbmRfbG9hZF9maWxlKCkgdG8gcHJvcGVyIHR5cGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkdW1iIGVycm9yIGZyb20gcmV2LiAxLjE1OC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGZpeCBEYmdQcmludCBhbmQgaW1wbGVtZW50IERiZ1ByaW50RXgKCS0gc3R1YiBmb3IgTnRJbXBlcnNvbmF0ZUFub255bW91c1Rva2VuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBpbmNsdWRlL2RwYWRkci5oLCBpbmNsdWRlL2RwbGF5OC5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglDb3JyZWN0IGRwbGF5OCBoZWFkZXJzIGZvciBmdXR1cmUgdXNlLgoKCSogZGxscy91eHRoZW1lL3N5c3RlbS5jLCBkbGxzL3V4dGhlbWUvdXh0aGVtZS5zcGVjOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnQgQ2hlY2tUaGVtZVNpZ25hdHVyZS4KCgkqIHRvb2xzL21ha2VkZXAuYzoKCUFkZGVkIHNvbWUgY2hlY2tzIGZvciB0aGUgY29uZmlnLmggaW5jbHVzaW9uIHJ1bGVzIGluIHRoZSBXaW5lIHRyZWUuCgoJKiBkbGxzL2RkcmF3L21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3VzZXIvY29tbTE2LmMsCgkgIGRsbHMvd2luZXBzL3R5cGUxLmMsIGRsbHMvd2luZXBzL3R5cGU0Mi5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgaGVhZGVyIGZpbGVzIG9yZGVyaW5nIGlzc3Vlcy4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOgoJQmV0dGVyIHN1cHBvcnQgZm9yIGRldmljZSBoYW5kbGVzIGluIE50UXVlcnlWb2x1bWVJbmZvcm1hdGlvbkZpbGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy94MTFkcnYveHJhbmRyLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglMb2FkIHRoZSBYUmFuZFIgZXh0ZW5zaW9uIGR5bmFtaWNhbGx5ICh3aXRoIGhlbHAgZnJvbSBBbGV4IFBhc2FkeW4pLgoKCSogZmlsZXMvc21iLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVByb3Blcmx5IG1hcCBTTUIgZXJyb3JzIHVzaW5nIERPUy1zdHlsZSBlcnJvciBjb2Rlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglSZXNvbHZlIHNoZWxsIHNob3J0Y3V0cyBhbmQgcHJvY2VzcyBJRCBsaXN0cyBpbiBTaGVsbEV4ZWN1dGUoKQoJZnVuY3Rpb25zLgoKMjAwNC0wNC0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3ZvbHVtZS5jLCBkbGxzL2tlcm5lbC92eGQuYywgZGxscy93aW5lZG9zL2ludDIxLmMsCgkgIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvbWFwcGluZy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCUdldCByaWQgb2YgdGhlIHJlbW92YWJsZSBtZWRpYSBoYW5kbGluZyBpbiB0aGUgc2VydmVyLgoKCSogZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBkbGxzL250ZGxsL3ZpcnR1YWwuYywgaW5jbHVkZS93aW50ZXJubC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jOgoJSGFuZGxlIGZpbGUgbWFwcGluZ3Mgb24gcmVtb3ZhYmxlIG1lZGlhIGVudGlyZWx5IGluc2lkZSBudGRsbC4KCgkqIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gcmVuYW1lIFBUX1NQRUNJQUwgdG8gUFRfU0hFTExFWFQKCS0gcmVtb3ZlIHVubmVjZXNzYXJpbHkgY29tcGxleCBfSUxDcmVhdGUKCS0gY29tYmluZSBfSUxDcmVhdGVWYWx1ZSBhbmQgX0lMQ3JlYXRlRm9sZGVyLCBzaW5jZSB0aGVpciBvdXRwdXRzCgkgIGRpZmZlcmVkIGJ5IG9ubHkgb25lIGJ5dGUuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCUZpeGVkIHNvbWUgcG90ZW50aWFsIHJhY2VzIGluIHRoZSBoYW5kbGluZyBvZiB0aGUgdmlldyBzdHJ1Y3R1cmVzLgoKCSogZGxscy93aW5lZG9zL2ludDE1LmM6IEZsb3JpYW4gR290aCA8Q2FwdGFpbnNpZmZmQGdteC5kZT4KCUFkZGVkIHNvbWUgbW9yZSBzdHVicyBhZnRlciBleGFtaW5pbmcgdGhlIGRvc2JveCBzb3VyY2UgY29kZS4KCgkqIGRsbHMvZGJnaGVscC9zdG9yYWdlLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglBdm9pZCBjb21waWxlciB3YXJuaW5nIGluIHZlY3Rvcl9wb3NpdGlvbigpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IFNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHNoZW1lc2guYml6PgoJU3RhdGljIGxpYnJhcmllcyBuYW1lcyBmb3IgSUNVIGFyZSBsaWJzaWN1Ki5hIG5vdy4KCUFkZCBwcmludG91dCBvZiB0aGUgbGlua2luZyB0ZXN0LgoKCSogZGxscy91c2VyL3Rlc3RzL21zZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB1c2Ugb2YgdGhlICdkZWZ3aW5wcm9jJyBmbGFnIGluIHRoZSBtZXNzYWdlIHRlc3QuCgoJKiBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kaW5wdXQvcmVnc3ZyLmMsIHRvb2xzL3dpbmUuaW5mOgoJSmFtZXMgUGVycnkgPGphbWVzcEBlcGNjLmVkLmFjLnVrPgoJTWFrZSBkaW5wdXQuZGxsIHNlbGYgcmVnaXN0ZXIuCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9jYXB0dXJlLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgZGVhZGxvY2sgaW4gY2FwdHVyZSBjYWxsYmFjay4KCUZpeGVkIGNhcHR1cmUgdGVzdCB0byBjaGVjayBhbGwgbm90aWZpY2F0aW9ucy4KCUFkZGVkIGJldHRlciBkZWJ1ZyBtZXNzYWdlcyB0byBjYXB0dXJlIHRlc3QuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzoKCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgTnRRdWVyeVZvbHVtZUluZm9ybWF0aW9uRmlsZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sIGxpYnMvcG9ydC9mc3RhdHZmcy5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgZnN0YXR2ZnMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywgZGxscy9tc2FjbS9tc2FjbS5yYywgZGxscy9tc2FjbS9tc2FjbV9Fcy5yYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnX0VzLnJjLCBkbGxzL29sZWRsZy9yc3JjLnJjLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5yYywgZGxscy9zaGx3YXBpL3NobHdhcGlfRXMucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0VzLnJjLCBkbGxzL3dpbmVwcy93cHNfRXMucmMsCgkgIHByb2dyYW1zL2Nsb2NrL0VzLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9Fcy5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL0VzLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLCBwcm9ncmFtcy93Y21kL0VzLnJjLAoJICBwcm9ncmFtcy93Y21kL3djbWRyYy5yYzoKCUpvc+kgTWFudWVsIEZlcnJlciBPcnRpeiA8am1mbzE5ODJAeWFob28uZXM+CglVcGRhdGVkIFNwYW5pc2ggdHJhbnNsYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUmVuYW1lIFBUX01ZQ09NUCB0byBQVF9HVUlELCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdW5pb24gbWVtYmVyIGZyb20KCW15Y29tcCB0byBndWlkLgoKCSogZGxscy91c2VyL21pc2MuYzogU2FtaSBBYXJpbyA8c2FtaS5hYXJpb0BzdXJmZXUuZmk+CglGaXggcmV0dXJuIHR5cGVzIG9mIEdldFRocmVhZERlc2t0b3AgYW5kIE9wZW5EZXNrdG9wQS4KCjIwMDQtMDQtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21wci8uY3ZzaWdub3JlLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tcHIvbXByLnJjLAoJICBkbGxzL21wci9tcHJfRW4ucmMsIGRsbHMvbXByL21wcl9tYWluLmMsIGRsbHMvbXByL21wcnJlcy5oLAoJICBkbGxzL21wci92ZXJzaW9uLnJjLCBkbGxzL21wci93bmV0LmMsIGRsbHMvbXByL3duZXRwcml2LmgsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbnBhcGkuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gaW1wbGVtZW50IGxvYWRpbmcgbmV0d29yayBwcm92aWRlcnMKCS0gaW1wbGVtZW50IGVudW1lcmF0aW9uIGZ1bmN0aW9ucwoJLSBzb21lIGltcHJvdmVkIGVycm9yIGNoZWNraW5nIGFuZCBBLT5XIGNvbnZlcnNpb24KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJVXNlIHN5bWJvbGljIGNvbnN0YW50cyBmb3IgbWFnaWMgbnVtYmVycyBpbiBTSEdldEZvbGRlclBhdGhXLCBhdm9pZAoJZG9pbmcgTXVsdGlCeXRlVG9XaWRlQ2hhciBvbiB2YWx1ZXMgdGhhdCBkb24ndCBuZWVkIGl0LAoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwKCSAgZGxscy92ZXJzaW9uL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdmVyc2lvbi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy92ZXJzaW9uL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQgdGVzdHMgZm9yIEdldEZpbGVWZXJzaW9uSW5mb1NpemVBLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRGaWxlVmVyc2lvbkluZm9TaXplIGZyb20gYXNjaWkgdG8gdW5pY29kZSwKCWZpeGVkIGZhaWxpbmcsIGNyYXNoaW5nIHRlc3QgY2FzZXMuCgoJKiBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLAoJICBkbGxzL2ltYWdlaGxwL2RlYnVnLmMsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHAuc3BlYywKCSAgZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmMsIGRsbHMvaW1hZ2VobHAvc3ltYm9sLmMsCgkgIGluY2x1ZGUvaW1hZ2VobHAuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZWQgcXVpdGUgYSBmZXcgZnVuY3Rpb25zIHRvIGRiZ2hlbHAgKHJlbW92ZWQgZGVidWcuYyBhbmQgc3ltYm9sLmMKCWZpbGVzKS4KCgkqIHByb2dyYW1zL3Rhc2ttZ3IvZGJnY2hubC5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVNldCBjb3JyZWN0IG9wdGlvbnMgZm9yIGRiZ2hlbHAgKEVMRiBsb2FkaW5nICYgcGFyc2luZyBzcGVlZCkuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrMi5oLAoJICBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBXU0FMb29rdXBTZXJ2aWNlQmVnaW5BL1cuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglHZXQgcmlkIG9mIGEgZmV3IHBvaW50bGVzcyBBL1cgY29udmVyc2lvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kYmdoZWxwLy5jdnNpZ25vcmUsCgkgIGRsbHMvZGJnaGVscC9NYWtlZmlsZS5pbiwgZGxscy9kYmdoZWxwL2RiZ2hlbHAuYywKCSAgZGxscy9kYmdoZWxwL2RiZ2hlbHAuc3BlYywgZGxscy9kYmdoZWxwL2RiZ2hlbHBfcHJpdmF0ZS5oLAoJICBkbGxzL2RiZ2hlbHAvZWxmX21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvaW1hZ2UuYywKCSAgZGxscy9kYmdoZWxwL21lbW9yeS5jLCBkbGxzL2RiZ2hlbHAvbWluaWR1bXAuYywKCSAgZGxscy9kYmdoZWxwL21vZHVsZS5jLCBkbGxzL2RiZ2hlbHAvbXNjLmMsIGRsbHMvZGJnaGVscC9wYXRoLmMsCgkgIGRsbHMvZGJnaGVscC9wZV9tb2R1bGUuYywgZGxscy9kYmdoZWxwL3NvdXJjZS5jLAoJICBkbGxzL2RiZ2hlbHAvc3RhYnMuYywgZGxscy9kYmdoZWxwL3N0YWNrLmMsIGRsbHMvZGJnaGVscC9zdG9yYWdlLmMsCgkgIGRsbHMvZGJnaGVscC9zeW1ib2wuYywgZGxscy9kYmdoZWxwL3R5cGUuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9jdmNvbnN0LmgsIGluY2x1ZGUvZGJnaGVscC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXJzdCBzaG90IGF0IGltcGxlbWVudGluZyBkYmdoZWxwLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfQ24ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRXMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSmEucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9TaS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2sucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1poLnJjOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUFkZCByZXNvdXJjZSBzdHJpbmdzIGZvciBjb250cm9sIHBhbmVsIGZvbGRlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglPcHRpbWl6YXRpb246IG51bGwgdGVybWluYXRlIHN0cmluZyBidWZmZXJzIGluc3RlYWQgb2YgZmlsbGluZyB0aGVtCgljb21wbGV0ZWx5IHdpdGggMC4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglHZXQgaWNvbnMgZm9yIHNoZWxsIGxpbmsgZmlsZXMuCgoJKiBkbGxzL250ZGxsL3BhdGguYywgaW5jbHVkZS93aW50ZXJubC5oOgoJRml4ZWQgUnRsRG9zUGF0aE5hbWVUb050UGF0aE5hbWVfVSBwcm90b3R5cGUuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZhbGxiYWNrIHRvIGEgY29tcHJlc3Npb24gc2NoZW1lIHNwZWNpZmllZCBpbiB0aGUgc3RyZWFtIGZvcm1hdCBpbiB0aGUKCWNhc2UgRk9VUkNDIGhhbmRsZXIgZG9lcyBub3QgZXhpc3Qgb3IgZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQuCgoJKiBpbmNsdWRlL3dpbmNyeXB0Lmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZCBhIGJ1bmNoIG9mIG1pc3NpbmcgZGVjbGFyYXRpb25zLgoKCSogaW5jbHVkZS93aW5udC5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglpZmRlZiBndWFyZCBUQ0hBUiBkZWNsYXJhdGlvbiBsaWtlIFBTREsgZG9lcy4KCgkqIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLAoJICBkbGxzL25ldGFwaTMyL3Rlc3RzL2FjY2Vzcy5jLCBkbGxzL25ldGFwaTMyL3Rlc3RzL3drc3RhLmMsCgkgIGRsbHMvbmV0YXBpMzIvd2tzdGEuYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gZml4IGEgY291cGxlIHRlc3RzIGFuZCB0cmFjZXMKCS0gYWRkIGEgY291cGxlIHN0dWJzIHJlcXVpcmVkIGJ5IG5hdGl2ZSBudGxhbm1hbi5kbGwKCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglEbyBub3QgY3Jhc2ggaWYgdGhlIGNsaXBib2FyZCBmb3JtYXQgaXMgdW5rbm93bi4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJRml4IGN1dCduJ3Bhc3RlIGVycm9yOiBsZWF2ZSB0aGUgQ3JpdGljYWxTZWN0aW9uIG5vdCBlbnRlciBpdCBhZ2FpbgoJKGZvdW5kIGJ5IHNtYXRjaCkuCgoJKiBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYywKCSAgaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBpbXBsZW1lbnRlZCBNQ0lfU09VTkQgY29tbWFuZAoJLSBmaXhlZCBNQ0kgY29tbWFuZCB0YWJsZSBpbiByZXNvdXJjZQoJLSBhZGRlZCBhIFRPRE8gbGlzdCBvbiBNQ0kgaGFuZGxpbmcKCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGQgYmV0dGVyIE5VTEwgY2hlY2tzIHRvIGxzdHJjbXBbaV0oQS9XKSBmdW5jdGlvbnMuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRG9jdW1lbnRhdGlvbiBmb3IgbW9zdCBvZiB0aGUgcmVnaW9uIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gZml4IGRpcnR5IGZsYWcgb24gc2hlbGxsaW5rIGxvYWRpbmcgYW5kIHNhdmluZwoJLSB1cGRhdGUgYWJzb2x1dGUgcGF0aCB3aGVuIGNoYW5naW5nIHJlbGF0aXZlIHBhdGgKCgkqIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnRlZCBFbnVtVGhlbWVzLgoKMjAwNC0wNC0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBkbGxzL2tlcm5lbC92b2x1bWUuYywKCSAgZmlsZXMvZmlsZS5jOgoJUmVpbXBsZW1lbnRlZCBEZWxldGVGaWxlIGJ5IHVzaW5nIENyZWF0ZUZpbGUgd2l0aAoJRklMRV9GTEFHX0RFTEVURV9PTl9DTE9TRS4gQWRkZWQvZml4ZWQgYSBmZXcgdGVzdHMuCgoyMDA0LTA0LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmMsIGRsbHMva2VybmVsL3Z4ZC5jLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sCgkgIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIG1pc2MvcmVnaXN0cnkuYzoKCVJlbW92ZWQgdGhlIEZhaWxSZWFkT25seSBvcHRpb24sIHRoaXMgaXMgbm93IHRoZSBkZWZhdWx0IGJlaGF2aW9yLgoKCSogaW5jbHVkZS9tc3ZjcnQvbGltaXRzLmg6CglGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCURlZmluZSBhbGwgbWFjcm9zIGRlc2NyaWJlZCBvbiBNU0ROLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglTZXBhcmF0ZSBVUyBFbmdsaXNoIHJlc291cmNlcyBmcm9tIEVuZ2xpc2ggb25lcy4KCgkqIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmg6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4IHRoZSBHTF9NQVhfVkVSVEVYX1VOSVRTX0FSQiB1bmRlY2xhcmVkIGNvbXBpbGF0aW9uIGVycm9yLgoKCSogZGxscy9udGRsbC90aW1lLmM6IEEgY291cGxlIG9mIG9wdGltaXphdGlvbnMgYW5kIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBuZXcgdGVzdHMgZm9yIHZhcmlvdXMgd2luZG93IGNyZWF0aW9uL3Bvc2l0aW9uaW5nIGJlaGF2aW91cnMuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBTV1BfTk9aT1JERVIgaW4gdGhlIGNhc2UgaXQncyBub3QgbmVlZGVkLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBIGRlY2lzaW9uIHdoZXRoZXIgYWRkIFNXUF9OT0FDVElWQVRFIG9yIG5vdCBzaG91bGQgYmUgYmFzZWQgb24KCUdldEFjdGl2ZVdpbmRvdygpIHRlc3QuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNob3dXaW5kb3cgc2hvdWxkIG5vdCBvcHRpbWl6ZSBTV19ISURFLCBpdCdzIHRoZSBqb2Igb2YgU2V0V2luZG93UG9zLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTZW5kaW5nIFdNX1NIT1dXSU5ET1cgaXMgYSBqb2Igb2YgU2V0V2luZG93UG9zLgoKCSogZGxscy94MTFkcnYvd2luZG93LmMsIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2V0dGluZyBXU19WSVNJQkxFIHN0eWxlIGRvZXMgbm90IHJlcXVpcmUgYW55IHNwZWNpYWwgaGFuZGxpbmcuCgoJKiB3aW5kb3dzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJV01fUEFSRU5UTk9USUZZIHNob3VsZCBub3QgYmUgc2VudCB0byBXU19QT1BVUCB3aW5kb3dzLgoKCSogc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmg6CglNb3ZlZCBGSUxFX0RFTEVURV9PTl9DTE9TRSBzdXBwb3J0IHRvIHRoZSBpbm9kZSBvYmplY3Qgc28gdGhhdCB3ZQoJcmVhbGx5IHdhaXQgZm9yIHRoZSBsYXN0IGNsb3NlLgoJQWRkZWQgRklMRV9TSEFSRV9ERUxFVEUgc3VwcG9ydC4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIGxpYnMvdW5pY29kZS9zdHJpbmcuYywKCSAgbGlicy91bmljb2RlL3dpbmVfdW5pY29kZS5kZWYsIGxpYnMvdW5pY29kZS93aW5lX3VuaWNvZGUubWFwOgoJQWRkZWQgbWVtaWNtcFcuCgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmM6CglEb24ndCB0cnkgdG8gZ2V0IHRoZSBmaWxlIHRpbWUgaWYgdGhlIGZpbGUgd2Fzbid0IGZvdW5kLgoKCSogY29udHJvbHMvbWVudS5jOiBCb2JieSBCaW5naGFtIDxiaW5naGFtLjIxQG9zdS5lZHU+CglGaXggdHJhY2tpbmcgdGhlIGN1cnJlbnRseSBoaWdobGlnaHRlZCBpdGVtIGluIG1lbnVzIHdoZW4gdGhlIG1vdXNlCglidXR0b24gaXMgbm90IGhlbGQgZG93bi4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggaW5jb3JyZWN0IGNhbGN1bGF0aW9uIG9mIGxlYXAgeWVhciBpbiBSdGxUaW1lRmllbGRzVG9UaW1lKCkuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUdldENvbnNvbGVJbmZvKCkgcHNldWRvIHN0dWIuCgoJKiBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJTmV0U2VydmVyR2V0SW5mbygpIHBzZXVkbyBzdHViLgoKCSogZGxscy9nZGkvcGFpbnRpbmcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGJ1ZyBpbiBHZGlHcmFkaWVudEZpbGwuCgoJKiBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUluaXRpYWxpemUgY29ycmVjdGx5IHRoZSBETVVTX09CSkVDVERFU0MgbG9jYWwgc3RydWN0dXJlLgoKMjAwNC0wNC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy91aXRvb2xzLmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkcsCgkgIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLCBpbmNsdWRlL3VzZXIuaCwgcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9SdS5yYywgcHJvZ3JhbXMvd2luZWNmZy9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLCBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmgsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSByZXN0IG9mIHRoZSBUd2VhayBsb29rIGhhY2suCgoJKiBkbGxzL250ZGxsL3N5bmMuYzogUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglOdFB1bHNlRXZlbnQ6IERvbid0IHByaW50IEZJWE1FIGZvciBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgaWYgaXQgaXNuJ3QKCXVzZWQuCgoJKiBpbmNsdWRlL3NoZWxsYXBpLmg6IFJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkIHNvbWUgZGVjbGFyYXRpb25zIGZvciBhZGRpdGlvbmFsIFNIRmlsZU9wZXJhdGlvbiBmZWF0dXJlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCVVzZSBuYW1lZCBjb25zdGFudCBpbnN0ZWFkIG9mIGEgc2ltcGxlIG51bWJlciAoZ2V0cyByaWQgb2Ygc2lnbmVkCgl3YXJuaW5nIHRvbykuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRml4IExCdXR0b25Eb3duIGZyb20gcHJldmlvdXMgY2hhbmdlLgoJLSBEb24ndCB1c2UgQkZfQURKVVNUIGZsYWcgZm9yIGRyb3Bkb3duIGJ1dHRvbnMuCgktIEZpeCBMQnV0dG9uRGJsQ2xrLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gVFRNX1RSQUNLQUNUSVZBVEUgY2FuIGhhdmUgTlVMTCBsUGFyYW0gd2hlbiBkZWFjdGl2YXRpbmcuCgktIEZhY3RvciBvdXQgY29tbW9uIGNvZGUgZnJvbSBUT09MVElQU19EZWxUb29se0EsV30uCgktIFVwZGF0ZSBhbGwgaW5kaWNlcyBjb3JyZWN0bHkgYWZ0ZXIgZGVsZXRlLgoKCSogdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVwcmVmaXhjcmVhdGUuaW46CglCZWdpbm5pbmdzIG9mIGEgc2NyaXB0IHRvIGluaXRpYWxpemUgdGhlIC53aW5lIGRpcmVjdG9yeSAod2l0aCBoZWxwCglmcm9tIENocmlzIE1vcmdhbikuCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZWRpdC5jLAoJICBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsCgkgIGNvbnRyb2xzL3N0YXRpYy5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGluY2x1ZGUvbm9uY2xpZW50LmgsIGluY2x1ZGUvdXNlci5oLAoJICB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21zZ2JveC5jLAoJICB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLAoJICB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgc3VwcG9ydCBmb3IgdGhlIFdpbiAzLjEgTG9vay4KCgkqIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL250ZGxsL3BhdGguYzoKCU1ha2UgUnRsR2V0RnVsbFBhdGhOYW1lX1UgaGFuZGxlIFVuaXggcGF0aHMsIHVzaW5nIHRoZSBuZXcgc3ltbGlua3MKCXNjaGVtZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglBZGRlZCBzdXBwb3J0IGZvciBDU0lETF9SRVNPVVJDRVMgcGF0aC4KCjIwMDQtMDMtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NhcmRzLy5jdnNpZ25vcmUsIGRsbHMvY2FyZHMvTWFrZWZpbGUuaW46Cglqci5ibXAgaXNuJ3QgZ2VuZXJhdGVkLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogRml4ZWQgbGVuZ3RoIGhhbmRsaW5nIGluIEh0dHBRdWVyeUluZm9XLgoKCSogdG9vbHMvYzJtYW4ucGw6IFBhdWwgVnJpZW5zIDxwdnJpZW5zQHhzNGFsbC5ubD4KCUFkZGVkIG1pc3NpbmcgY29tbWEgaW4gaW5kZXguaHRtbC4KCgkqIGRsbHMvb3BlbmdsMzIvLmN2c2lnbm9yZSwgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vcGVuZ2wzMi92ZXJzaW9uLnJjOgoJVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglTZXQgdmVyc2lvbiB0byBXaW4gWFAgU2VydmljZSBwYXRjaCAyLgoKCSogZGxscy9kM2Q4L3V0aWxzLmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGFuZCBjYXNlIGZpeGVzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglEb24ndCBmcmVlIEFMU0EgZGV2aWNlIHN0cmluZyB3aGVuIHRoZSBkZXZpY2UgaXMgY2xvc2VkIHNpbmNlIGl0IG1pZ2h0CgliZSByZW9wZW5lZC4KCgkqIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dzMnRjcGlwLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2Ugc3VyZSBpcF9tcmVxIGlzIG5vdCBleHBvcnRlZCBieSB3aW5zb2NrMi5oLgoJQWRkIGlwX21yZXEsIGlwX21yZXFfc291cmNlIGFuZCBpcF9tc2ZpbHRlciB0byB3czJ0Y3BpcC5oLgoKCSogZGxscy9nZGkvcGFpbnRpbmcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJT3B0aW1pemUgR2RpR3JhZGllbnRGaWxsIGJ5IGRyYXdpbmcgbGluZXMgaW5zdGVhZCBvZiBwaXhlbHMuCgoJKiBkbGxzL3VybG1vbi91bW9uLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50ZWQgSXNFcXVhbC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTW9yZSBkdXBsZXggbW9kZSBzb3VuZGNhcmQgaW5mby4KCgkqIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglEbyBub3Qgc3RyaXAgc3RkY2FsbCBkZWNvcmF0aW9uIGluIHNwZWMgZmlsZXMuCglGaXhlZCBtYXBpMzIgb3JkaW5hbHMuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCUZpeGVkIGhhbmRsaW5nIG9mIC5zbyBhbmQgLmEgbGlicmFyaWVzIHNwZWNpZmllZCBhcyBpbnB1dCBmaWxlcy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYzogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJR2l2ZSBTZXRFcnJvck1vZGUgdGhlIHJpZ2h0IGFyZ3VtZW50IHRvIHN1cHByZXNzIGNyYXNoIGRpYWxvZ3MuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVNtYWxsIGZpeC4KCjIwMDQtMDMtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC92b2x1bWUuYywgZmlsZXMvZHJpdmUuYzoKCUdldCB0aGUgZHJpdmUgcm9vdCBkaXJlY3RvcmllcyBmcm9tIHRoZSBzeW1saW5rcyBpbiBkb3NkZXZpY2VzLyBpZgoJdGhleSBleGlzdC4KCUFkZGVkIGNyZWF0aW9uIG9mIGRyaXZlIHN5bWxpbmtzIGluIHRoZSBkZXZpY2UgdHJhbnNpdGlvbiBjb2RlLgoKCSogZGxscy9rZXJuZWwvdm9sdW1lLmM6CglBZGRlZCBzdXBwb3J0IGZvciBET1MgZHJpdmVzIGluIFF1ZXJ5RG9zRGV2aWNlIGFuZCBEZWZpbmVEb3NEZXZpY2UuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUZpeGVkIHNvbWUgdmFsdWVzLgoKCSogZGxscy93aW5lZG9zL2ludDE2LmMsIGRsbHMvd2luZWRvcy9pbnQxNy5jOgoJRmxvcmlhbiBHb3RoIDxDYXB0YWluc2lmZmZAZ214LmRlPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcmVnc3ZyLmMsIHRvb2xzL3dpbmUuaW5mOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglJbXBsZW1lbnQgRGxsR2V0Q2xhc3NPYmplY3QsIERsbFJlZ2lzdGVyU2VydmVyLCBEbGxVbnJlZ2lzdGVyU2VydmVyCgkoYXMgdGhlIGludGVyZmFjZXMgYXJlbid0IGRvY3VtZW50ZWQgd2Ugb25seSBoYXZlIHN0dWJzKS4KCgkqIGRsbHMveDExZHJ2L2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2UgZG9uJ3Qgc3VwcG9ydCBHZXRESUJpdHMgd2l0aCBCSV9STEU0LzgsIHNvIGZvciBub3cgcmV0dXJuIGFuCgl1bmNvbXByZXNzZWQgYml0bWFwIGlmIHRoZSBiaXRzIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2guCgoJKiBvYmplY3RzL2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU2VsZWN0IHRoZSBkaWJzZWN0aW9uIGludG8gYSBkYyBiZWZvcmUgY2FsbGluZyBHZXRESUJDb2xvclRhYmxlLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgQ1A5MzIsIENQOTM2LCBDUDk0OSBhbmQgQ1A5NTAgdG8gdGhlIGNoYXJzZXQgbWFwLgoKCSogZGxscy93aW5pbmV0L2Nvb2tpZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVbmljb2RpZnkgdGhlIGNvb2tpZSBoYW5kbGluZyBjb2RlLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBIdHRwUXVlcnlJbmZvQSBmdW5jdGlvbiBidWZmZXIgc2l6ZS4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYnVpbHRpbiBORSBtb2R1bGUgcmVmY291bnRpbmcgb2YgMzJiaXQgcGFyZW50LgoKCSogZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvdXRpbHMuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBtb3JlIEV4dGVuc2lvbnMgd29yayAoYmVnaW4gdG8gZGV0ZWN0IEFUSSBleHRlbnNpb25zKQoJLSB0cnkgdG8gZml4IEQzRFRBRERSRVNTX0JPUkRFUiwgRDNEVEFERFJFU1NfTUlSUk9SLAoJICBEM0RUQUREUkVTU19NSVJST1JPTkNFIHVzaW5nIE9wZW5HTCBleHRlbnNpb25zCgktIGJldHRlciBzZXRfdGV4X29wOiBub3cgdXNlIFJ1bnRpbWUgRXh0ZW5zaW9uIHN1cHBvcnQgKGFuZCBub3QKCSAgY29tcGlsZSBzdXBwb3J0KQoKCSogZGxscy9vbGUzMi9vbGUyLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZWdpc3RlckRyYWdEcm9wOiBmYWlsIG9uIE5VTEwgZHJvcCB0YXJnZXQuCgoJKiBsb2FkZXIvcHRocmVhZC5jOgoJRml4ZWQgcm91bmRpbmcgYnVnIGluIHRoZSBzdGFjayBpbmZvIGNhbGN1bGF0aW9uIHdoZW4gd2UgZG9uJ3QgaGF2ZQoJcHRocmVhZF9nZXRhdHRyX25wLgoKCSogZGxscy93aW5pbmV0L2Nvb2tpZS5jLCBkbGxzL3dpbmluZXQvZGlhbG9ncy5jLCBkbGxzL3dpbmluZXQvZnRwLmMsCgkgIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L25ldGNvbm5lY3Rpb24uYywKCSAgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgaW5jbHVkZS93aW5pbmV0Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IHRoZSB3aW5pbmV0IEhUVFAgZnVuY3Rpb25zIHRvIFVuaWNvZGUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJSW52YWxpZCAiRGVza3RvcCIgdmFsdWVzIHdvdWxkIGNyYXNoIHdpbmVjZmcsIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZQoJaW5zdGVhZC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjOiBNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJTWlub3IgdXBkYXRlcyBpbiByZXNvdXJjZSBmb3IgUG9ydHVndWVzZS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJSW1wcm92ZWQgdmVyc2lvbiByZXNvdXJjZSBpbmZvLgoKCSogaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJSW4gcmVzb3VyY2UgaW5mbyBhbGxvdyBPcmlnaW5hbEZpbGVuYW1lIGFuZCBJbnRlcm5hbE5hbWUgdG8gYmUKCWRpZmZlcmVudC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywgcHJvZ3JhbXMvd2luZXRlc3QvdXRpbC5jOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJRG9uJ3QgZXhwZWN0IHN0ZG91dCBiZSB1c2FibGUgYWZ0ZXIgZXhjaGFuZ2luZyBmaWxlIGRlc2NyaXB0b3JzIHVuZGVyCglpdC4KCjIwMDQtMDMtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVJlbW92ZSByZWZlcmVuY2VzIHRvIHdpbmVjaGVjayBmcm9tIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBpbnNlcnQgYQoJVE9ETyB0aGF0ICBtZW50aW9ucyB0aGF0IHRoZSBmdW5jdGlvbmFsaXR5IGlzIHRvIGJlIG1vdmVkIGludG8KCXdpbmVjZmcuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJRW5hYmxlIEl0YWxpYW4gdHJhbnNsYXRpb25zLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9JdC5yYzogRml4ZWQgbGFuZ3VhZ2UgZGVjbGFyYXRpb25zLgoKCSogZGxscy9rZXJuZWwvdmVyc2lvbi5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglXSU5FX0ZJTEVERVNDUklQVElPTl9TVFIgaXMgYWxyZWFkeSBkZWZpbmVkIGluIHdpbmVfY29tbW9uX3Zlci5yYy4KCgkqIGRsbHMvb2xlYWNjL21haW4uYywgZGxscy9vbGVhY2Mvb2xlYWNjLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgTHJlc3VsdEZyb21PYmplY3QgYW5kCglBY2Nlc3NpYmxlT2JqZWN0RnJvbVdpbmRvdy4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVdyaXRlIEVNUlBPTFlMSU5FMTYgaWYgcG9pbnRzIGZpdCBpbnRvIGEgU0hPUlQuCgoJKiBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBFTVIqMTYgZGVmaW5pdGlvbnMgdG8gd2luZ2RpLmgsIGFzIHRoZXkncmUgcGFydCBvZiB0aGUgV0lOMzIgQVBJLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBTbG92ZW5pYW4ga2V5Ym9hcmQgbGF5b3V0IHRvIGJldHRlciBtYXRjaCB0aGUgWEZyZWU4NiBvbmUuCgoJKiBjb250cm9scy9zY3JvbGwuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNjcm9sbGJhciBzaG91bGQgYWxzbyByZWFjdCBvbiBXTV9MQlVUVE9OREJMQ0xLLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgVHJhZGl0aW9uYWwgQ2hpbmVzZSBCaWc1IGFuZCBTaW1wbGlmaWVkIENoaW5lc2UgR0JLIG1hcHBpbmdzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUZpeGVkIGVycm9yIHJlcG9ydGluZy4KCgkqIGRsbHMvd2lubmxzL3dpbm5scy5jLCBkbGxzL3dpbm5scy93aW5ubHMzMi5zcGVjOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc3R1YiBmb3IgV0lOTkxTMzJFbmFibGVJTUUuCgoJKiBjb250cm9scy9lZGl0LmMsIHRvb2xzL3dpbmVjaGVjazogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZCBzb21lIFRSQUNFaW5nIHRvIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogV2FycmVuIFR1cmthbCA8d3RAbWlkc291dGgucnIuY29tPgoJRml4ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIENvVHJlYXRBc0NsYXNzLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3VybG1vbi5pZGw6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudCBsb2FkaW5nIGFuZCBzYXZpbmcgdG8gYSBzdHJlYW0sIGFuZCBhIGZldyBvdGhlciBiYXNpYwoJZnVuY3Rpb25zLgoKCSogb2JqZWN0cy9kaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUhvbm91ciBESUJfUEFMX0NPTE9SUyB3aGVuIHRoZSBiaXRtYXAgZGVwdGhzIG1hdGNoLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglQcmludCBvdXQgc291bmQgY2FyZCBpbmZvIGZvciBwbGF5YmFjaywgY2FwdHVyZSBhbmQgZHVwbGV4IG1vZGVzLgoJSGFyZHdhcmUgY2FwYWJpbGl0aWVzIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB1c2FnZSBtb2RlLgoJUHJpbnQgb3V0IGZvcm1hdCByZXF1ZXN0ZWQgYW5kIGFjdHVhbCBmb3JtYXQgcmV0dXJuZWQuCgoJKiBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVuaWNvZGlmeSBDcmVhdGVNZXRhRmlsZS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIENyZWF0ZUV2ZW50VyBpbiBwcmVmZXJlbmNlIHRvIENyZWF0ZUV2ZW50QS4KCgkqIGRsbHMvY2FyZHMvLmN2c2lnbm9yZSwgZGxscy9jYXJkcy9NYWtlZmlsZS5pbiwgZGxscy9jYXJkcy9jYXJkcy5jLAoJICBkbGxzL2NhcmRzL2NhcmRzLmgsIGRsbHMvY2FyZHMvY2FyZHMucmM6CglTYW1pIE5vcGFuZW4gPHhhc214QG9wdG9ubGluZS5uZXQ+CglJbXBsZW1lbnRlZCBpbnZpc2libGVnaG9zdCwgZGVja3ggYW5kIGRlY2tvIGRyYXdpbmcgbW9kZXMsIGFuZAoJaW1wcm92ZWQgZ2hvc3QgZHJhd2luZyBtb2RlLgoKMjAwNC0wMy0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmg6CglDaGVjayBmaWxlIHNoYXJpbmcgcGVybWlzc2lvbnMgYmFzZWQgb24gdGhlIGZpbGUgaW5vZGUgaW5zdGVhZCBvZiB0aGUKCWZpbGUgbmFtZS4KCUFkZGVkIHJlZ3Jlc3Npb24gdGVzdCBmb3Igc2hhcmluZyBwZXJtaXNzaW9ucy4KCgkqIGZpbGVzL2ZpbGUuYzoKCUZpeGVkIGNvcHkvcGFzdGUgZXJyb3IgaW4gcHJldmlvdXMgcGF0Y2ggKHNwb3R0ZWQgYnkgRGltaXRyaWUKCU8uIFBhdW4pLgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBmZXcgbWlzc2luZyBfX0FTTV9OQU1FIG1hY3Jvcy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2xlYW4gdXAgd2hpdGUgc3BhY2VzLgoJRml4IHNwZWxsaW5nIGVycm9yLgoJSW1wcm92ZSBjYXB0dXJlIGVycm9yIG1lc3NhZ2VzLgoJRml4IGVycm9yIHJlcG9ydGluZyB3aGVuIGNhcHR1cmluZyBmcm9tIG5vbmV4aXN0ZW50IGRldmljZS4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJVXNlIFdJTkVERUJVRyBpbnN0ZWFkIG9mIC0tZGVidWdtc2cuCgoJKiBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGV2aWNlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gc3VwcG9ydCBvZiBEM0RUU1NfTUFYTUlQTEVWRUwKCS0gc3VwcG9ydCBvZiBEM0RUU1NfTUlQTUFQTE9EQklBUyAodXNpbmcgRVhUX1RFWFRVUkVfTE9EX0JJQVMgZXh0ZW5zaW9uKQoJLSBjb3JyZWN0IHN1cHBvcnQgb2YgRDNEVFNTX01BWEFOSVNPVFJPUFkgZm9yIEQzRFRTU19NQUdGSUxURVIgYW5kCgkgIEQzRFRTU19NSU5GSUxURVIKCS0gZml4ZXMgZm9yIEQzRFRTU19NQUdGSUxURVIgYW5kIEQzRFRTU19NQUdGSUxURVIKCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVdvcmthcm91bmQgYSBtc3ZjcnQucmVhbGxvYyBidWcgdW5kZXIgV2luOXggYnkgdXNpbmcgV2luMzIgQVBJcyBpbnN0ZWFkLgoJVGFrZSBpbnRvIGFjY291bnQgdGhhdCBIZWFwUmVhbGxvYyBtYXkgbW92ZSB0aGUgYWxsb2NhdGVkIG1lbW9yeSBibG9jay4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglDYWxsIElTaGVsbEV4ZWN1dGVIb29rIGludGVyZmFjZSBmb3IgU2hlbGxFeGVjdXRlKCkgY2FsbHMgd2l0aCBJRAoJbGlzdHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJVXNlIGZ1dGltZXMoKSBpbnN0ZWFkIG9mIHV0aW1lKCkgdG8gaW1wbGVtZW50IFNldEZpbGVUaW1lLCBzbyB0aGF0IGl0CgljYW4gYmUgZG9uZSBvbiB0aGUgY2xpZW50IHNpZGUuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsCgkgIGRsbHMvc2hlbGwzMi9jcGFuZWwuaCwgZGxscy9zaGVsbDMyL2NwYW5lbGZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLAoJICBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSBjb250cm9sIHBhbmVsIGZvbGRlciBpbiBzaGVsbCBuYW1lc3BhY2UuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglBbGxvdyBjb25maWd1cmF0aW9uIG9mIG91dHB1dCBkZXZpY2VzIHRvIHVzZSBhbmQgY2hhbmdlIHN0YW5kYXJkCglvdXRwdXQgcGx1Z2luIHJlcXVlc3RlZCB0byAiZGVmYXVsdCIuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEZpeFNsYXNoZXNBbmRDb2xvblcgYW5kIGFkZCBzdHViIGZvciBTSEdldEFwcENvbXBhdEZsYWdzLgoKCSogZGxscy94MTFkcnYvcGFsZXR0ZS5jOgoJQXZvaWQgY3Jhc2ggaW4gWDExRFJWX0lzU29saWRDb2xvciBmb3IgVHJ1ZUNvbG9yIGRpc3BsYXlzLgoKCSogZGxscy94MTFkcnYvZGliLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglCdWlsZCB0aGUgY29ycmVjdCBjb2xvdXIgbWFwIHdoZW4gdGhlIG1vZGUgaXMgRElCX1BBTF9DT0xPUlMuCgoJKiBvYmplY3RzL2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2hlbiB1c2luZyBESUJfUEFMX0NPTE9SUyBzZWxlY3QgdGhlIGN1cnJlbnQgcGFsZXR0ZSBpbnRvIHRoZSBtZW1vcnkKCWRjIHNvIHRoYXQgU2V0RElCaXRzIHdvcmtzIGNvcnJlY3RseS4KCgkqIGRsbHMvZGRyYXcvbWVzYS5jOiBKYW1lcyBQZXJyeSA8amFtZXNwQGVwY2MuZWQuYWMudWs+CglGaXggaGFuZGxpbmcgb2YgRDNEQkxFTkRfQk9USCogYmxlbmQgbW9kZXMuCgoyMDA0LTAzLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZmlsZTE2LmM6CglGaXhlZCBHZXREcml2ZVR5cGUxNiByZXR1cm4gdmFsdWUgZm9yIG5vbi1leGlzdGVudCBkcml2ZXMuCglGaXhlZCBidWcgaW4gT3BlbkZpbGUxNiBpbnRyb2R1Y2VkIGJ5IHByZXZpb3VzIGNoYW5nZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gRml4IGhhbmRsaW5nIG9mICUyLCAlMywgLi4uIGFuZCBsb3dlciBjYXNlIGZvcm1hdCBjaGFyYWN0ZXJzIGluCgkgIFNIRUxMX0FyZ2lmeVcoKS4KCS0gTW92ZSAiJUkiIGV4cGFuc2lvbiBmcm9tIFNoZWxsRXhlY3V0ZUV4KCkgaW50byBjb21tb24gZnVuY3Rpb24KCSAgU0hFTExfQXJnaWZ5VygpLgoJLSBQYXNzIGJ1ZmZlciBsZW5ndGggdG8gU0hFTExfRmluZEV4ZWN1dGFibGUoKS4KCS0gRklYTUUgY29tbWVudCBmb3IgbGVuIHBhcmFtYXRlciBpbiBTSEVMTF9BcmdpZnlXKCkuCgoJR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCS0gQWRkIGRvdWJsZSBxdW90YXRpb24gbWFya3MgdW5sZXNzIHdlIGFscmVhZHkgaGF2ZSB0aGVtIChlLmcuOiAiJTEiCgkgICUqIGZvciBleGVmaWxlKS4KCS0gUmVtb3ZlIHVubmVjZXNzYXJ5IGRvdWJsZSBxdW90YXRpb24gbWFya3MgYW5kIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgYSBwcm9jZWR1cmUgZm9yIGxvZ2dpbmcgV01fUEFSRU5UTk9USUZZIG1lc3NhZ2VzLgoKCSogZGxscy9rZXJuZWwvZmlsZTE2LmMsIGRsbHMva2VybmVsL3BhdGguYywgZmlsZXMvZGlyZWN0b3J5LmM6CglTdG9yZSB0aGUgd2luZG93cyBhbmQgc3lzdGVtIGRpcmVjdG9yaWVzIGFzIGxvbmcgcGF0aCBuYW1lcy4KCU1vdmVkIEdldFRlbXBQYXRoIGFuZCBHZXRUZW1wRHJpdmUgdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmMsIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBEZXN0cm95V2luZG93KCkgbm90IG1lc3Mgd2l0aCBhIHdpbmRvdyBmb2N1cywgdGhpcyBzaG91bGQgYmUKCXRha2VuIGNhcmUgb2YgYnkgU2hvd1dpbmRvdyhTV19ISURFKS4KCUFkZCBhIHRlc3QgZm9yIERlc3Ryb3lXaW5kb3coKSBvbiBhIGZvY3VzZWQgY2hpbGQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvbXNnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgJ2hvb2snIGZsYWcgZm9yIG1lc3NhZ2VzLiBBZGQgYSB0ZXN0IGZvciBDQlQgaG9vayBtZXNzYWdlcy4KCjIwMDQtMDMtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvcGF0aC5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGZpbGVzL2RpcmVjdG9yeS5jLAoJICBpbmNsdWRlL2ZpbGUuaDoKCVJlaW1wbGVtZW50ZWQgU2VhcmNoUGF0aFcgdXNpbmcgbnRkbGwgZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50YXRpb24gb2YgSVBlcnNpc3RGaWxlOjpJc0RpcnR5KCkuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDogRmVsaXggTmF3b3RobmlnIDxmZWxpeC5uYXdvdGhuaWdAdC1vbmxpbmUuZGU+CglEZWZpbmUgaXBfbXJlcS4KCgkqIGluY2x1ZGUvbXN2Y3J0L2Zsb2F0Lmg6IEZlbGl4IE5hd290aG5pZyA8ZmVsaXgubmF3b3RobmlnQHQtb25saW5lLmRlPgoJRGVmaW5lIChMKURCTF8qIGFuZCBGTFRfKi4KCgkqIGRsbHMvdXNlci90ZXN0cy9tc2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCAnb3B0aW9uYWwnIGZsYWcgZm9yIG1lc3NhZ2VzLCBtYWtlIHRoZSB0ZXN0IHJ1biB1bmRlciB3aW4yay4KCgkqIGRsbHMva2VybmVsL2ZpbGUuYywgZGxscy9rZXJuZWwvZmlsZTE2LmMsIGZpbGVzL2ZpbGUuYzoKCVNwbGl0IE9wZW5GaWxlIGltcGxlbWVudGF0aW9uIGluIHNlcGFyYXRlIDE2LSBhbmQgMzItYml0IHZlcnNpb25zLCBhbmQKCWNoYW5nZWQgaXQgdG8gdXNlIGV4cG9ydGVkIEFQSXMgaW5zdGVhZCBvZiBpbnRlcm5hbCBmdW5jdGlvbnMgd2hlcmUKCXBvc3NpYmxlLgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCUNoYW5nZWQgTG9hZExpYnJhcnlFeDMyVzE2IHRvIHVzZSBPcGVuRmlsZTE2IHRvIGxvb2sgZm9yIHRoZSBmaWxlCglpbnN0ZWFkIG9mIERJUl9TZWFyY2hQYXRoLgoKCSogZGxscy93aW5pbmV0L2RpYWxvZ3MuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmgsCgkgIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IFdJTklORVRBUFBJTkZPQSBzdHJ1Y3R1cmUgdG8gdW5pY29kZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmUgZmxhZ3MgZm9yIEdldFVzZXJPYmplY3RJbmZvcm1hdGlvbi4KCgkqIGRsbHMvd2luZWRvcy9pbnQxNS5jOiBGbG9yaWFuIEdvdGggPENhcHRhaW5zaWZmZkBnbXguZGU+CglBZGRlZCBzdHVicyBmb3IgYSBmZXcgZnVuY3Rpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgaW5jbHVkZS9jb25maWcuaC5pbjoKCVJlbW92ZWQgY2hlY2sgZm9yIC1sbSwgd2luZWdjYyB0YWtlcyBjYXJlIG9mIHRoYXQuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbiwKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglSZXBsYWNlZCB0aGUgLS1tb2RlIHdpbmVidWlsZCBvcHRpb24gYnkgYSAtLXN1YnN5c3RlbSBvcHRpb24gZm9yCgliZXR0ZXIgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBQRSBiaW51dGlscy4KCgkqIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW46IFRha2UgRVhFRVhUIGludG8gYWNjb3VudCBmb3IgUEUgYnVpbGRzLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL3RpbWUuYywgZGxscy9tc3ZjcnQvdGltZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ29ycmVjdCBlcnJvcnMgd2l0aCBtb3ZlIHRvIGtlcm5lbCB0aW1lIGZ1bmN0aW9ucy4KCUFkZCB0ZXN0IGNhc2UuCgoJKiBpbmNsdWRlL21zdmNydC93Y2hhci5oOiBGZWxpeCBOYXdvdGhuaWcgPGZlbGl4Lm5hd290aG5pZ0B0LW9ubGluZS5kZT4KCURlZmluZSBzdGF0IGluIG1zdmNydC93Y2hhci5oLgoKMjAwNC0wMy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9ndWkucmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywgcHJvZ3JhbXMvd2luZXRlc3QvbWFrZXRlc3QsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYzoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCS0gRXh0cmFjdCByZXZpc2lvbiBpbmZvIGZyb20gQ1ZTL0VudHJpZXMuCgktICNpbmNsdWRlICJ3aW5ldGVzdC5yYyIgaW50byBndWkucmMuICBNaW5HVyBjYW4ndCBsaW5rIGluCgkgIG1vcmUgdGhhbiBvbmUgcmVzb3VyY2UgZmlsZXMuCgktIEVubGFyZ2UgY2h1bmsgc2l6ZSBvZiBuZXR3b3JrIHRyYW5zZmVyLgoKCSogZGxscy9jYXJkcy9jYXJkcy5jLCBkbGxzL2NhcmRzL2NhcmRzLmg6CglTYW1pIE5vcGFuZW4gPHhhc214QG9wdG9ubGluZS5uZXQ+CglJbXBsZW1lbnRlZCBjYXJkIGRyYXdpbmcgbW9kZSBmbGFnIGZvciByb3VuZGluZyBjYXJkIGNvcm5lcnMuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJVGhlIG5hbWUgaXMgX2xvbmdqbXBleCAod2l0aCB0aGUgdW5kZXJzY29yZSkuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmM6CglDaHJpc3RvcGggRnJpY2sgPGZyaWNrQFNDLU5ldHdvcmtzLmRlPgoJLSBBZGRlZCBtaXNzaW5nIGJyZWFrIHN0YXRlbWVudC4KCS0gQ2hhbmdlZCB0aGUgbWFwcGluZyBvZiB0aGUgYXhpcyB0byBhIHNpbXBsZXIgZm9ybXVsYSwgdGhhdCBpZ25vcmVzCgkgIHRoZSBtaWRkbGUgb2YgYW4gYXhpcy4KCS0gTWluL21heCB2YWx1ZXMgd2hlcmUgaW5pdGFsaXplZCBzd2l0Y2hlZC4KCS0gQWRkZWQgdGhlIG1pc3NpbmcgYnV0dG9uIGFuZCBheGlzIGV2ZW50cyB0aGF0IGFyZSByZWdpc3RlcmVkIGVhcmxpZXIKCSAgaW4gdGhlIGNvZGUgYnV0IG5ldmVyIG1hZGUgaXQgdG8gdGhlIGFwcGxpY2F0aW9uLgoJLSBBZGRlZCBhIGxpdHRsZSBtb3JlIGRlc2NyaXB0aXZlIGNvbW1lbnQgYWJvdXQgdGhlIGRlYWR6b25lLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCVJlbW92ZWQgdGhlIFVuaWNvZGUgZXhlIG1vZGVzLCBhbmQgaW5zdGVhZCBkZXRlY3QgYXV0b21hdGljYWxseSB3aGljaAoJbW9kZSB0byB1c2UgYmFzZWQgb24gdGhlIGV4aXN0ZW5jZSBvZiBtYWluIG9yIHdtYWluLgoKCSogZGxscy8qLy5jdnNpZ25vcmU6Cgkuc3BlYy5jIGZpbGVzIGFyZSBubyBsb25nZXIgdXNlZCBmb3IgMzItYml0IGRsbHMuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW46CglCdWlsZCB0aGUgZGxscyB3aXRoIHdpbmVnY2MuCgoyMDA0LTAzLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2QzZDgvdXRpbHMuYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsCgkgIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2lmcy5jLAoJICBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYywKCSAgZGxscy9vbGVhdXQzMi92YXJ0eXBlLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCB0b29scy93aW5lZHVtcC9taXNjLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBPZmlyIFBldHJ1c2thIDxoYXRreUB1c2Vycy5zZi5uZXQ+CglLZWVwIHRoZSBjaGVja0dMY2FsbCBnbEFjdGl2ZVRleHR1cmUvZ2xBY3RpdmVUZXh0dXJlQVJCIHNlcGFyYXRpb24gaW4KCWFsbCB0aGUgZmlsZS4KCgkqIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQWRkIGN1cnNvciByZXNvdXJjZS4KCS0gSW1wbGVtZW50IFRCX01PVkVCVVRUT04uCgktIEltcGxlbWVudCBkcmFnIGN1c3RvbWlzZS4KCS0gU2VuZCBUQk5fVE9PTEJBUkNIQU5HRSBhbmQgVEJOX0RFTEVUSU5HQlVUVE9OLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgYSBkZWZhdWx0IC5kbGwgZXh0ZW5zaW9uIG9ubHkgd2hlbiBubyBleHRlbnNpb24gaXMgcHJlc2VudC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ29tcHV0ZSBkd0xlbiBhZnRlciBwYXNzaW5nIHRoZSBzdHJpbmcgdGhyb3VnaAoJUkVHUFJPQ191bmVzY2FwZV9zdHJpbmcoKSBzbyB3ZSBkb24ndCBzYXZlIGdhcmJhZ2UgY2hhcmFjdGVycyBpbiB0aGUKCXJlZ2lzdHJ5LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCURvIG5vdCByZXR1cm4gYW4gZXJyb3Igd2hlbiBzZXR0aW5nIGEgbWF0ZXJpYWwgdG8gTlVMTC4KCUZpeGVkIGFjY2VzcyB0byBkM2QgcHJpdmF0ZSBkYXRhLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBPZmlyIFBldHJ1c2thIDxoYXRreUB1c2Vycy5zZi5uZXQ+CglEZWZpbmUgRVhUUkFfVFJBQ0VTIGluc3RlYWQgb2YgI2lmIDAuCgoJKiBkbGxzL2NhcmRzL2NhcmRzLmM6IEFkZGVkIG1pc3NpbmcgXG4gaW4gdHJhY2UuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3Rhc2ttZ3IvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdGFza21nci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdGFza21nci9hYm91dC5jLCBwcm9ncmFtcy90YXNrbWdyL2FmZmluaXR5LmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvYXBwbHBhZ2UuYywgcHJvZ3JhbXMvdGFza21nci9jb2x1bW4uYywKCSAgcHJvZ3JhbXMvdGFza21nci9jb2x1bW4uaCwgcHJvZ3JhbXMvdGFza21nci9kYmdjaG5sLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvZGVidWcuYywgcHJvZ3JhbXMvdGFza21nci9lbmRwcm9jLmMsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvZ3JhcGguYywgcHJvZ3JhbXMvdGFza21nci9ncmFwaGN0bC5jLAoJICBwcm9ncmFtcy90YXNrbWdyL2dyYXBoY3RsLmgsIHByb2dyYW1zL3Rhc2ttZ3Ivb3B0bm1lbnUuYywKCSAgcHJvZ3JhbXMvdGFza21nci9wZXJmZGF0YS5jLCBwcm9ncmFtcy90YXNrbWdyL3BlcmZkYXRhLmgsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvcGVyZnBhZ2UuYywgcHJvZ3JhbXMvdGFza21nci9wcmlvcml0eS5jLAoJICBwcm9ncmFtcy90YXNrbWdyL3Byb2NsaXN0LmMsIHByb2dyYW1zL3Rhc2ttZ3IvcHJvY3BhZ2UuYywKCSAgcHJvZ3JhbXMvdGFza21nci9yZXNvdXJjZS5oLCBwcm9ncmFtcy90YXNrbWdyL3J1bi5jLAoJICBwcm9ncmFtcy90YXNrbWdyL3Rhc2ttZ3IuYywgcHJvZ3JhbXMvdGFza21nci90YXNrbWdyLmgsCgkgIHByb2dyYW1zL3Rhc2ttZ3IvdGFza21nci5yYywgcHJvZ3JhbXMvdGFza21nci90cmF5aWNvbi5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglQb3J0ZWQgdGhlIFJlYWN0T1MgdGFza21nciB3cml0dGVuIGJ5IEJyaWFuIFBhbG1lci4KCgkqIHRvb2xzL3dpbmVnY2MvdXRpbHMuYywgdG9vbHMvd2luZWdjYy91dGlscy5oLCB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXJzdCBjdXQgYXQgLXNoYXJlZCBzdXBwb3J0LgoKMjAwNC0wMy0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc29tZSB0ZXN0cyBmb3IgUnRsR2V0RnVsbFBhdGhOYW1lX1UuCgoJKiBkbGxzL250ZGxsL3BhdGguYzoKCU1vdmVkIHNsYXNoIGNvbnZlcnNpb24gdG8gY29sbGFwc2VfcGF0aCwgYW5kIHJlbW92ZSBkdXBsaWNhdGUKCWJhY2tzbGFzaGVzIHRvby4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeCBmb3IgcmVjZW50IHNoZWxsbGluayBwYXRjaCwgd2hpY2ggcmVtb3ZlZCB0aGUgaW1wb3J0YW50IHBhcnQgb2YKCXJldHVybmluZyB0aGUgcmVzdWx0IHBvaW50ZXIgZnJvbSBJU2hlbGxMaW5rX0NvbnN0cnVjdEZyb21GaWxlKCkuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWxsb3cgcGFzc2luZyBOVUxMIHRvIElMRmluZExhc3RJRC4KCgkqIGluY2x1ZGUvcnBjbmRyLmg6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGRlZCBzb21lIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQlNUUiBvZiBsZW5ndGggMCBpcyBhbGxvd2VkLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUVuYWJsZSBjcmVhdGlvbiBvZiBhIHpidWZmZXIgaW4gc3lzdGVtIG1lbW9yeS4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeCByZWNlbnQgVW5pY29kZS1pZmljYXRpb24gcGF0Y2guCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZC5oLAoJICBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgc2V0bG9jYWwvZW5kbG9jYWwuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsbG9jYXRlIHRoZSBjb3JyZWN0IG5yIG9mIGJ5dGVzIGZvciBscHN6Q29va2llcyBpbiBIVFRQX0h0dHBPcGVuUmVxdWVzdEEuCglBbGxvY2F0ZSB0aGUgY29ycmVjdCBuciBvZiBieXRlcyBmb3IgcmVxdWVzdCBzdHJpbmdsZW4gd2l0aG91dCBvcHRpb25zLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJU3R1YiBDb21tYW5kTGluZUZyb21Nc2lEZXNjcmlwdG9yIHRvIHByZXZlbnQgYSBjcmFzaCBpbiBBY2NlbGVyeXMKCU1hdGVyaWFscyBTdHVkaW8uCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglSZW1vdmUgcmVmZXJlbmNlIHRvIG9sZCBncmFwaGljcyBkaXJlY3RvcnkKCgkqIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi91bW9uLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudCBGaW5kTWltZUZyb21EYXRhLgoKCSogZGxscy9pcGhscGFwaS90ZXN0cy9pcGhscGFwaS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCURvbid0IGluY2x1ZGUgY29uZmlnLmguCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBwYXRoIGZyb20gcmVsYXRpdmUgcGF0aCBvbiBsb2FkaW5nLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglEYXJ3aW4gc3VwcG9ydCBmb3IgX2luaXQvX2ZpbmkgZnVuY3Rpb25zIGFuZCBfZW5kIHN5bWJvbC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy90aW1lLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB0ZXN0cyBmb3IgdGltZSBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVW5pY29kZS1pZnkgdGhlIGljb24gY2FjaGUgYW5kIFNIR2V0RmlsZUluZm8uCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDb3JyZWN0bHkgc2l6ZSB0aGUgc3BpX2xvYWRlZCBhcnJheSBwcmV2ZW50cyBvdmVyd3JpdGluZyBvZiBzeXN0ZW0KCXBhcmFtZXRlcnMuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsbG9jYXRlIGNvcnJlY3QgbnVtYmVyIG9mIHBvaW50ZXJzIGZvciBzekFjY2VwdFR5cGVzLCBzaW5jZSB3ZSBuZWVkCglpdCBOVUxMIHRlcm1pbmF0ZWQuCglIZWFwUmVBbGxvYyB3aWxsIG1vZGlmeSB0aGUgcG9pbnRlciwgc28gc3RvcmUgaXQgdGhlcmUuCgoJKiBkb2N1bWVudGF0aW9uL2RkcmF3LnNnbWw6IFJ1ZG9sZiBLYXN0bCA8Y2hlNjY2QHVuaS5kZT4KCUFkZGVkIG1pc3NpbmcgcGFyYSB0YWcuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9zaGx3YXBpL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvb3JkaW5hbC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRlc3QgU0hTZWFyY2hNYXBJbnQuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUZXN0cyBmb3IgVmFyWG9yL1ZhckVxdi4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IFZhclhvciBhbmQgc2ltcGxpZnkgVmFyRXF2IHRvIHVzZSBpdC4KCgkqIGluY2x1ZGUvcnBjbmRyLmg6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgQysrIHN1cHBvcnQuCgoJKiBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglQb3J0aW5nIGZpeGVzLgoKMjAwNC0wMy0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogRml4ZWQgdHlwbyBpbiBwcmV2aW91cyBjaGFuZ2UuCgoJKiBmaWxlcy9maWxlLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIE9wZW5GaWxlIHJldHVybmVkIHZhbHVlIHdoZW4gT0ZfRVhJU1QgZmxhZyBpcyBzcGVjaWZpZWQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIG9yZGVyIG9mIEVuYWJsZVdpbmRvdy9EZXN0cm95V2luZG93IGluIHRoZSBjYXNlIG9mIGZhaWx1cmUgaW4KCURJQUxPR19DcmVhdGVDb250cm9sczMyLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9kZHJhdy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RkcmF3LnR4dCwgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWw6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJQ29udmVydCBkZHJhdy50eHQgdG8gZGRyYXcuc2dtbCBhbmQgYWRkIGl0IHRvIHRoZSB3aW5lLWRldmVsCglkb2N1bWVudGF0aW9uLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IGEgcG9zc2libGUgbnVsbCBwb2ludGVyIGNyYXNoIGluIEZJTEVETEc5NV9MT09LSU5fSW5pdC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L21ha2V0ZXN0OgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCByZXZpc2lvbiBzdXBwb3J0IHRvIHdpbmV0ZXN0LmV4ZS4KCgkqIHRvb2xzL3dpbmUuaW5mOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZCBDb250ZW50IFR5cGVzIGZvciBhIGZldyBjb21tb24gZXh0ZW5zaW9ucy4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9pbnNlcnQuYywgZGxscy9tc2kvcXVlcnkuaCwKCSAgZGxscy9tc2kvc3FsLnksIGRsbHMvbXNpL3doZXJlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdGFydCBpbXBsZW1lbnRpbmcgdGhlIFNRTCBpbnNlcnQgcXVlcnkuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcHJvdmUgRDNENyBjb21wYXRpYmlsaXR5LgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRSZWYgdGV4dHVyZSBvbmx5IGlmIHRoZXJlIGlzIG9uZSBmb3IgdGhlIHJlcXVlc3RlZCBzdGFnZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL3ZvbHVtZS5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLAoJICBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oOgoJUmV3cm90ZSBoYW5kbGluZyBvZiBDT00gYW5kIExQVCBkZXZpY2VzIHRvIHVzZSBzeW1saW5rcyBpbgoJJFdJTkVQUkVGSVgvZG9zZGV2aWNlcywgd2l0aCBzdWl0YWJsZSBkZWZhdWx0cyBpZiB0aGUgc3ltbGlua3MgYXJlCgltaXNzaW5nLgoJUmV3cm90ZSBRdWVyeURvc0RldmljZSBhbmQgRGVmaW5lRG9zRGV2aWNlIHRvIHVzZSB0aGUgbmV3IHNjaGVtZS4KCUFkZGVkIHRlbXBvcmFyeSBjb2RlIHRvIGNyZWF0ZSB0aGUgc3ltbGlua3MgYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mCgl0aGUgY29uZmlnIGZpbGUuCgoyMDA0LTAzLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglGaXggdHlwbyBpbiBGb3JtYXRNZXNzYWdlVy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYywgcHJvZ3JhbXMvd2luZXRlc3QvdXRpbC5jOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJLSBSZWZhY3RvciBhbmQgZml4IGNvbm5lY3Rpb24gb3BlbmluZy4KCS0gVGFyZ2V0IHRlc3Qud2luZWhxLm9yZy4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUp1c3QgdXBkYXRlIGZyb20vdG8gcG9pbnRlcnMgYW5kIGV4aXQgb24gYSBzdWJzZXF1ZW50IE1DSV9QTEFZCgljb21tYW5kLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBjYXNlIHdoaWNoIGNvbmZpcm1zIHRoYXQgU2V0TWVudSBpbXBsZW1lbnRhdGlvbiBpbiBXaW5lIGlzCgljb3JyZWN0LgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhlIHJlYmFyIHNpemUgaXMgYWJvdmUgYSBtaW5pbXVtLgoKCSogZGxscy9tc2kvY3JlYXRlLmMsIGRsbHMvbXNpL2hhbmRsZS5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9yZWNvcmQuYywKCSAgZGxscy9tc2kvc3RyaW5nLmMsIGRsbHMvbXNpL3N1bWluZm8uYywgZGxscy9tc2kvdGFibGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBoYW5kbGUgYWxsb2NhdGlvbiBhbmQgdGhlIENSRUFURSBUQUJMRSBxdWVyeS4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglBZGRlZCB3b3JrYXJvdW5kIGZvciBicm9rZW4gZGxscyB0aGF0IG1vZGlmeSBlYnggaW4gdGhlaXIgZW50cnkgcG9pbnQKCShyZXBvcnRlZCBieSBDaHJpc3RpYW4gQ29zdGEpLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLmMsIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJLSBGaXggcmVwb3J0KCkgZGlzcGF0Y2guCgktIFN0cmlwICJfdGVzdC4uLiIgZnJvbSB0ZXN0IGZpbGUgbmFtZXMuCgktIFVzZSBteXN0cnRvaygpIGZvciBjb21tYW5kIGxpbmUgcGFyc2luZyB0byBhdm9pZCBjb2xsaXNpb24gd2l0aCB0aGUKCSAgb25lIGluIGdldF9zdWJ0ZXN0cygpLgoJLSBDaGFuZ2UgVXNlci1BZ2VudCBIVFRQIGhlYWRlciB0byAiV2luZXRlc3QgU2hlbGwiLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21zdmNydC90ZXN0cy9zdHJpbmcuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlbGF5IG1zdmNydF9tZW1jcHkgdG8gbWVtbW92ZSwgQ1N0cmluZzo6SW5zZXJ0IHNlZW1zIHRvIHJlbHkgb24gdGhhdAoJYmVoYXZpb3VyLiBBZGQgYSB0ZXN0IGNhc2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBTSEVMTF9FeGVjdXRlVywgaWYgYSBuZXcgY3VycmVudCBkaXJlY3RvcnkgaXMgc3BlY2lmaWVkLCBjaGFuZ2UgdG8KCWl0IGJlZm9yZSBjYWxsaW5nIENyZWF0ZVByb2Nlc3Mgc28gdGhhdCBpdCB3aWxsIGZpbmQgdGhlIGNvcnJlY3QKCWV4ZWN1dGFibGUuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgRm9ybWF0TWVzc2FnZVcgdG8gdXNlIHVuaWNvZGUgZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL2NvbW0xNi5jOgoJR2V0IHJpZCBvZiB0aGUgcmVnaXN0cnkgbG9va3VwcywgcmVseSBlbnRpcmVseSBvbiB0aGUga2VybmVsIGRldmljZXMKCWluc3RlYWQuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL21haW4uYzoKCUF2b2lkIGluY2x1ZGluZyB3aW5kb3dzLmggc2luY2UgaXQgY29uZmxpY3RzIHdpdGggdW5pc3RkLmguCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jOiBNaWtlIEhlYXJuIDxtaEBjb2Rld2VhdmVycy5jb20+CglUaGUgS2V5bWFwTm90aWZ5IGV2ZW50IGRvZXMgbm90IHVzZSB0aGUgd2luZG93IG1lbWJlciwgc28gZG9uJ3Qgd2FybgoJYWJvdXQgaXQgYmVpbmcgdW5rbm93bi4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC90aW1lLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVJlaW1wbGVtZW50IHRpbWUgZnVuY3Rpb25zIHdpdGggV2luMzIgQVBJcy4KCUltcGxlbWVudCBsb2NhbHRpbWUoKS9nbXRpbWUoKS4KCgkqIGRsbHMvbXNpL2NyZWF0ZS5jLCBkbGxzL21zaS9kaXN0aW5jdC5jLCBkbGxzL21zaS9tc2kuYywKCSAgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9vcmRlci5jLCBkbGxzL21zaS9xdWVyeS5oLAoJICBkbGxzL21zaS9zZWxlY3QuYywgZGxscy9tc2kvc3FsLnksIGRsbHMvbXNpL3N0cmluZy5jLAoJICBkbGxzL21zaS90YWJsZS5jLCBkbGxzL21zaS90b2tlbml6ZS5jLCBkbGxzL21zaS93aGVyZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRmlyc3QgZ28gYXQgd3JpdGUgc3VwcG9ydC4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCUp1c3RpbiBDaGV2cmllciA8amNoZXZyaWVyQG5leGljb20ubmV0PgoJSW1wbGVtZW50ZWQgU1BJe0dFVCxTRVR9TU9VU0VIT1ZFUldJRFRILCBTUEl7R0VULFNFVH1NT1VTRUhPVkVSSEVJR0hULAoJU1BJe0dFVCxTRVR9TU9VU0VIT1ZFUlRJTUUsIFNQSXtHRVQsU0VUfU1PVVNFU0NST0xMTElORVMsCglTUEl7R0VULFNFVH1NRU5VU0hPV0RFTEFZLgoKMjAwNC0wMy0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9maWxlLmMsCgkgIHNlcnZlci9maWxlLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmM6CglNYWtlIHRoZSBzdGFuZGFyZCBjcmVhdGVfZmlsZSByZXF1ZXN0IGhhbmRsZSBzZXJpYWwgcG9ydHMgdG9vLCBhbmQKCXJlbW92ZSB0aGUgY3JlYXRlX3NlcmlhbCByZXF1ZXN0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglFeHBhbmQgZW52aXJvbm1lbnQgc3RyaW5ncyBpbiBjb21tYW5kLCBwYXJhbWV0ZXIgYW5kIGRpcmVjdG9yeSBzdHJpbmdzCglvZiBTaGVsbEV4ZWN1dGVFeFczMigpLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvbXNpcXVlcnkuYywKCSAgZGxscy9tc2kvc3RyaW5nLmMsIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglXaGVuIGxvYWRpbmcgdGFibGUgZGF0YSwgc3BsaXQgaXQgdXAgaW50byByb3dzLgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBoYW5kbGluZyBvZiAiZWNoby4iCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRml4IFNldEJpdG1hcFNpemUuCgktIEZpeCBTZXRCdXR0b25JbmZvLgoKCSogY29udHJvbHMvbWVudS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVHJhbnNsYXRlQWNjZWxlcmF0b3Igc2hvdWxkIG9ubHkgaWdub3JlIGNvbW1hbmRzIHdoZW4gbW91c2UgY2FwdHVyZSBpcwoJaW4gZWZmZWN0IG9yIHRoZSB3aW5kb3cgaXMgZGlzYWJsZWQsIGlmIHRoZSBjb21tYW5kIGNvcnJlc3BvbmRzIHRvIGEKCW1lbnUgaXRlbS4gIE90aGVyd2lzZSBpdCBzaG91bGQgcHJvY2VzcyB0aGVtIGFzIG5vcm1hbC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUludmFsaWRhdGUgdGhlIGZvY3VzZWQgaXRlbSB3aGVuIHNjcm9sbGluZyBob3Jpem9udGFsbHkgc28gdGhhdCBpdAoJcmVwYWludHMgY29ycmVjdGx5LgoKCSogZGxscy9zaGx3YXBpLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGx3YXBpL21zZ2JveC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3NobHdhcGkvcmVzb3VyY2UuaCwgZGxscy9zaGx3YXBpL3NobHdhcGkucmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX0VuLnJjLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IFNITWVzc2FnZUJveENoZWNrIGZ1bmN0aW9ucyAmJiBhZGQgZGlhbG9nIHJlc291cmNlcy4KCUFkZCBTSFdhaXRGb3JTZW5kTWVzc2FnZVRocmVhZCwgU0hBbnNpVG9Vbmljb2RlQ1AsU0hTdHJpcE1uZXVtb25pY1csCglTSFNlYXJjaE1hcEludC4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZGVidWdidWZmZXIuYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCVN0dWIgaW1wbGVtZW50YXRpb25zIG9mIFJ0bENyZWF0ZVF1ZXJ5RGVidWdCdWZmZXIsCglSdGxEZXN0cm95UXVlcnlEZWJ1Z0J1ZmZlciBhbmQgUnRsUXVlcnlQcm9jZXNzRGVidWdJbmZvcm1hdGlvbi4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglSZW1vdmUgZHVwbGljYXRlIGNvZGUgYnkgdXNpbmcgTnQqIGZ1bmN0aW9ucyBmb3IgUHVsc2VFdmVudCwKCVJlc2V0RXZlbnQgYW5kIFNldEV2ZW50LgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglBZGRlZCBzb21lIHRyYWNlcy4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZWxlYXNlIGxvY2sgYmVmb3JlIHdhdmUgY2FsbHMgdGhhdCBnZW5lcmF0ZSBub3RpZmljYXRpb24uCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFsbG93IFJlZ0Nvbm5lY3RSZWdpc3RyeVcgdG8gdGhlIGxvY2FsIG1hY2hpbmUgbmFtZS4KCjIwMDQtMDMtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZmlsZXMvZG9zX2ZzLmM6CglSZWltcGxlbWVudGVkIEZpbmRGaXJzdEZpbGUvRmluZE5leHRGaWxlIG9uIHRvcCBvZgoJTnRRdWVyeURpcmVjdG9yeUZpbGUuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaXByaXYuaCwKCSAgZGxscy9tc2kvc3RyaW5nLmMsIGRsbHMvbXNpL3RhYmxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIHRoZSBzdHJpbmcgdGFibGUgb3V0IGludG8gYSBzZXBhcmF0ZSBmaWxlLCBpbXByb3ZlIGxvb2t1cHMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBWYXJFcXYuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUZpeCByZWxhdGl2ZSBzY3JlZW4gcmVzaXppbmcuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCVJlbW92ZSAuIGZyb20gZGVmYXVsdCBsaWJyYXJ5IHNlYXJjaCBwYXRoLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCUZpeCBjdXJzb3IgcG9zaXRpb24gb3B0aW1pemF0aW9uLgoKCSogd2luZG93cy9wYWludGluZy5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CglGSVhNRV8od2luKSAtPiBGSVhNRS4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1ha2UgY29waWVzIG9mIGtleXMgd2hlbiBjcmVhdGluZywgZnJlZSB0aGVtIHdoZW4gZG9uZS4KCVVzZSBLRVlfQUxMX0FDQ0VTUyB3aGVuIHdyaXRpbmcgVVMgcmVnIHZhbHVlcy4KCVNIUmVnV3JpdGVVU1ZhbHVlVzogSGFuZGxlIGFsbCBmbGFnIGNvbWJpbmF0aW9ucy4KCU1ha2Ugc29tZSBBIGNhbGxzIHVzZSB0aGUgVyB2ZXJzaW9uLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlIGZ1bmN0aW9uIHB0cnMgZm9yIGNhbGwgb25seSBwcmVzZW50IGluIGxhdGVyIHZlcnNpb25zLgoJRml4IHRlc3RzIHRoYXQgZmFpbCB3aXRoIG9sZCB2ZXJzaW9ucy4KCgkqIGRsbHMvaWNjdmlkL2ljY3ZpZC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IGdlb21ldHJ5IGVycm9yIGluIHRoZSBJQ0NWSUQgY29kZWMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRG9jdW1lbnRhdGlvbiB1cGRhdGUuCgktIEJldHRlciBob3QgaXRlbSBoYW5kbGluZy4KCS0gRml4IERyYXdNYXNrZWQgdG8gYWx3YXlzIHVzZSB0aGUgcmlnaHQgaW1hZ2UgbGlzdCBhbmQgYml0bWFwIGluZGV4LgoKCSogZGxscy9udGRsbC9wYXRoLmM6CglSZXdyb3RlIHRoZSBjb2xsYXBzaW5nIG9mIC4gYW5kIC4uIGluIFJ0bEdldEZ1bGxQYXRoTmFtZV9VIGZvciBiZXR0ZXIKCWNvbXBhdGliaWxpdHkuCgoJKiBkbGxzL2tlcm5lbC9wYXRoLmM6CglSZXRyaWV2ZSBhIHNob3J0IG5hbWUgaW4gR2V0U2hvcnRQYXRoTmFtZVcgaWYgdGhlIGxvbmcgbmFtZSBjb250YWlucwoJc3BhY2VzLgoKCSogY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYzoKCUZpbmRGaXJzdEZpbGUgY2FuIHJldHVybiBhbiBlbXB0eSBzaG9ydCBuYW1lIGlmIHRoZSBsb25nIG5hbWUgaXMgYQoJdmFsaWQgRE9TIG5hbWUsIGZpeGVkIGNhbGxlcnMgdG8gaGFuZGxlIHRoYXQgcHJvcGVybHkuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL2Rpc2tzcGFjZS5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglCZWdpbm5pbmdzIG9uIGltcGxlbWVudGF0aW9ucyBvZiBTZXR1cENyZWF0ZURpc2tTcGFjZUxpc3RBL1csCglTZXR1cFF1ZXJ5U3BhY2VSZXF1aXJlZE9uRHJpdmVBLCBTZXR1cERlc3Ryb3lEaXNrU3BhY2VMaXN0IGFuZAoJU2V0dXBBZGRJbnN0YWxsU2VjdGlvblRvRGlza1NwYWNlTGlzdEEgZm9yIE1EQUMgaW5zdGFsbC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsCgkgIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZW1vdmUgdW51c2VkIGxvY2suCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9zeW5jLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZGVkIHN0dWIgZm9yIFNpZ25hbE9iamVjdEFuZFdhaXQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUFkZCBzdHVicyBmb3IgRW51bU1vbml0b3JzW0EvV10uCgoyMDA0LTAzLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogRWxpYXMgUm9zcyA8Z2VubWFuQG1haXNvbi1vdGFrdS5uZXQ+CglBZGRlZCAyNC1iaXQgY29sb3Iga2V5IHN1cHBvcnQgaW4gRElCX0RpcmVjdERyYXdTdXJmYWNlX0JsdEZhc3QuCgoJKiBkbGxzL21zaS9NYWtlZmlsZS5pbjogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUV4cGxpY2l0bHkgc3BlY2lmeSBvdXRwdXQgZmlsZSBuYW1lcyBmb3IgYmlzb24uCgoJKiBkbGxzL250ZGxsL2RpcmVjdG9yeS5jOiBPX0RJUkVDVE9SWSBpcyBub3QgcmVhbGx5IG5lZWRlZC4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9jcmVhdGUuYywgZGxscy9tc2kvbXNpLmMsCgkgIGRsbHMvbXNpL21zaXByaXYuaCwgZGxscy9tc2kvcXVlcnkuaCwgZGxscy9tc2kvc3FsLnksCgkgIGRsbHMvbXNpL3Rva2VuaXplLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglFeHRlbmQgdGhlIHBhcnNlciB0byBkZWFsIHdpdGggdGhlIENSRUFURSBUQUJMRSBxdWVyeS4gVGhlIHF1ZXJ5Cglkb2Vzbid0IGRvIGFueXRoaW5nIGFzIHlldC4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9lcnJuby5jLCBkbGxzL21zdmNydC9leGl0LmMsCgkgIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgZGxscy9tc3ZjcnQvc3RyaW5nLmMsCgkgIGluY2x1ZGUvbXN2Y3J0L2RpcmVjdC5oLCBpbmNsdWRlL21zdmNydC9kb3MuaCwgaW5jbHVkZS9tc3ZjcnQvaW8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaCwgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0cmluZy5oLCBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oLAoJICBpbmNsdWRlL21zdmNydC90aW1lLmgsIGluY2x1ZGUvbXN2Y3J0L3djaGFyLmg6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCS0gUHJlZml4IG1hbnkgbW9yZSBmdW5jdGlvbnMsIHR5cGVzLCBzdHJ1Y3RzLCBldGMuIHdpdGggTVNWQ1JUXy4KCS0gQ29ycmVjdCBwcm90b3R5cGVzIGZvciBfbWVtY2NweSgpL19tZW1pY21wKCkuCgktICJkZWZpbmUgYmVmb3JlIHVzZSIgcmVvcmRlcmluZyBpbiBmaWxlLmMuCgktIFVzZSB0aGUgbmV3IG1hdGguaC9mbG9hdC5oLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJRmFiaWFuIENlbmVkZXNlIDxDZW5lZGVzZUBpbmRlbC5jaD4KCUxldCBWYXJQYXJzZU51bUZyb21TdHIgYW5kIFZhck51bUZyb21QYXJzZU51bSBjb3BlIHdpdGggaGV4IGFuZCBvY3QKCXN0cmluZ3MuIE5lZWRlZCBmcm9tIFZCIGNvbnZlcnNpb25zIHN1Y2ggYXMgQ0xuZywgQ0ludCwgQ0J5dGUuLi4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJU3VwcG9ydCBmb3IgUkJCU19ISURFVElUTEUgc3R5bGUuCgoJKiBkbGxzL2NhcmRzL2NhcmRzLmMsIGRsbHMvY2FyZHMvY2FyZHMuaDoKCVNhbWkgTm9wYW5lbiA8eGFzbXhAb3B0b25saW5lLm5ldD4KCS0gRW51bWVyYXRlZCBkaWZmZXJlbnQgZHJhd2luZyBtb2Rlcy4KCS0gSW1wbGVtZW50ZWQgSElMSVRFLCBSRU1PVkUgYW5kIEdIT1NUIGRyYXdpbmcgbW9kZXMuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHVicyBuZWVkZWQgYnkgc29tZSBXaW5kb3dzIFVwZGF0ZSBpbnN0YWxscy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglBZGQgY2FzdCB0byBjb3JyZWN0bHkgaW50ZXJwcmV0IHNpZ25lZCBjb29yZGluYXRlIHZhbHVlcy4KCgkqIGRsbHMvbXNpLy5jdnNpZ25vcmUsIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9jb25kLnksCgkgIGRsbHMvbXNpL21zaS5zcGVjLCBkbGxzL21zaS9zcWwueSwgZGxscy9tc2kvdG9rZW5pemUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0YXJ0IGltcGxlbWVudGF0aW9uIG9mIE1zaUV2YWx1YXRlQ29uZGl0aW9uQS9XLgoKCSogTWFrZS5ydWxlcy5pbiwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUuZGUsIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyLAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5pdCwgZG9jdW1lbnRhdGlvbi9SRUFETUUucHQsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0X2JyOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVxdWlyZSBiaXNvbiB0byBjb21waWxlIFdpbmUuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9yZWxheS5jOgoJTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgZGVidWcgU25vb3BGcm9tSW5jbHVkZS9Tbm9vcEZyb21FeGNsdWRlIG9wdGlvbnMuCgktIENvcnJlY3QgVFJBQ0UgZGVidWcgY2hhbm5lbCB1c2FnZSBpbiBTTk9PUF9TZXR1cERMTC4KCS0gUmVmYWN0b3IgY2hlY2tfcmVsYXlfZnJvbV9yZWxheS4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBNQ0lfREdWX1dIRVJFX01BWCBmbGFnIGluIE1DSUFWSV9tY2lXaGVyZS4KCUZpeGVkIFdIRVJFX1dJTkRPVy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jOiBOZWVkIHRvIGluY2x1ZGUgY29uZmlnLmguCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2RpcmVjdG9yeS5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGluY2x1ZGUvd2ludGVybmwuaDoKCUltcGxlbWVudGVkIE50UXVlcnlEaXJlY3RvcnlGaWxlIChwYXJ0bHkgYmFzZWQgb24gYSBwYXRjaCBieSBFcmljCglQb3VlY2gpLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBIGZldyB1cGRhdGVzLgoKCSogZGxscy9rZXJuZWwvaW5zdHIuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglEUE1JIHByb2dyYW1zIG5vdyBoYW5kbGUgcGVuZGluZyBldmVudHMuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSGFuZGxlIGF2aSBmaWxlcyB3aXRoIG5vbiBzdGFuZGFyZCB2aWRlbyBzdHJlYW0gbmFtZXMuCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNQ0kgc3RyaW5ncyBhcmUgY2FzZSBpbnNlbnNpdGl2ZS4KCUZpeGVkIGEgcmV0dXJuZWQgZXJyb3IgdmFsdWUuCgoJKiBkbGxzL3dpbm1tL21taW8uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRGVmYXVsdCB0byBGT1VSQ0NfRE9TIGlmIG5vIElPUHJvYyBmb3VuZC4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXhlZCBkZWFkbG9jayB3aGVuIHN0b3BwaW5nIHBsYXliYWNrLgoKCSogZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmg6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUREX1NUUlVDVF9DT1BZX0JZU0laRTogRG8gbm90IGNsZWFyIG1vcmUgdGhhdCBzdHJ1Y3Qgc2l6ZS4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVybENhbm9uaWNhbGl6ZVc6IFJlbW92ZSBcciBhbmQgXG4gYXQgdGhlIGVuZCBvZiBscHN6VXJsQ3B5LCB3aXRoIHRlc3QKCWNhc2VzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUhUVFBfSHR0cFNlbmRSZXF1ZXN0QTogUmVtb3ZlIFxyIGFuZCBcbiBhdCB0aGUgZW5kIG9mCglscHdoci0+bHBzelBhdGguCgoyMDA0LTAzLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY2FyZHMvLmN2c2lnbm9yZSwKCSAgZGxscy9jYXJkcy9NYWtlZmlsZS5pbiwgZGxscy9jYXJkcy9jYXJkcy5jLCBkbGxzL2NhcmRzL2NhcmRzLmgsCgkgIGRsbHMvY2FyZHMvY2FyZHMucmMsIGRsbHMvY2FyZHMvY2FyZHMuc3BlYywgZGxscy9jYXJkcy92ZXJzaW9uLnJjOgoJU2FtaSBOb3BhbmVuIDx4YXNteEBvcHRvbmxpbmUubmV0PgoJSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBjYXJkcy5kbGwuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBzZXR0aW5nIHRoZSBidWRkeSB0byAwIHRoZW4gd2UgbXVzdCBzdGlsbCByZXNpemUgdGhlIHVwZG93bgoJY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBEb2N1bWVudCBjb21wbGV0ZW5lc3MuCgktIEZpbmlzaCB0b29sdGlwIHN1cHBvcnQuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2NoaWxkd25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQcm9wZXJseSBpbXBsZW1lbnQgYWxsIGtleSBvcGVyYXRpb25zOiBuZXcsIGRlbGV0ZSwgcmVuYW1lLgoJRml4IHJlbmFtZSBjb21tYW5kIHRvIGhhbmRsZSBib3RoIGtleXMgYW5kIHZhbHVlcy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbDogQm9heiBIYXJyb3NoIDxib2F6QGhpc2hvbWUubmV0PgoJVGlwcyBmb3IgdXNpbmcgbmF0aXZlIE1TIFNRTCBPREJDIGRyaXZlcnMuCgoJKiBpbmNsdWRlL21zaS5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIE1zaUdldFByb2R1Y3RQcm9wZXJ0eUEvVy4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBDU19IUkVEUkFXLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9tYWluLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglNZXNzYWdlIGJveCB0byBzdWdnZXN0IHRoZSB1c2VyIG5vdCBydW4gd2luZSBhcyByb290LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gVW5pY29kZSBub3RpZmljYXRpb24gZGV0ZWN0aW9uIHNob3VsZCBiZSBsb2NhbCB0byBlYWNoIHRvb2wuCgktIEltcGxlbWVudCBUVE5fR0VURElTUElORk9XIG5vdGlmaWNhdGlvbi4KCgkqIGRsbHMva2VybmVsL2luc3RyLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUVtdWxhdGluZyBTVEkgaW5zdHJ1Y3Rpb24gbm93IHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlcmUgYXJlIHBlbmRpbmcKCWV2ZW50cy4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW1vdmUgc3VwcG9ydCBmb3IgZ2VuZXJhdGluZyBpbnRlcnJ1cHQgaGFuZGxlcnMuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9JdC5yYzogT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglGaXggc21hbGwgdHlwby4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jLCBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGFsbCBuZWVkZWQgYWNjZWxlcmF0b3JzIHRvIHJlZ2VkaXQuIENsZWFudXBzLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsIGluY2x1ZGUvc2V0dXBhcGkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFNldHVwQ3JlYXRlRGlza1NwYWNlTGlzdCBzdHViLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6IE1pa2UgSGVhcm4gPG1pa2VAbmF2aS5jeD4KCUltcHJvdmUgbWVzc2FnZSBnaXZlbiBvbiBpbWFnZSBtYXAgZmFpbHVyZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBIb25vdXIgV01fU0VUUkVEUkFXLgoJLSBGaXggYWxsIGNhbGxzIG9mIEludmFsaWRhdGVSZWN0LgoKCSogdG9vbHMvd2luZWdjYy91dGlscy5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglTdXBwb3J0IERhcndpbiAiLmR5bGliIi4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvSXQucmM6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQgImNhbid0IHF1ZXJ5IGtleSIgdHJhbnNsYXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCUltcGxlbWVudGF0aW9uIG9mIElDcmVhdGVUeXBlSW5mbzJfU2V0SGVscENvbnRleHQsCglJQ3JlYXRlVHlwZUluZm8yX1NldFR5cGVEZXNjQWxpYXMsIElUeXBlTGliMl9HZXRUeXBlSW5mb0NvdW50LAoJSVR5cGVMaWIyX0dldFR5cGVJbmZvVHlwZSwgYW5kIElUeXBlTGliMl9Jc05hbWUuCglGaXggdG8gSUNyZWF0ZVR5cGVJbmZvMl9TZXRWYXJOYW1lIHRvIGZpeCBhIGNhc2Ugd2hlcmUgbXVsdGlwbGUKCWluc3RhbmNlcyBvZiB0aGUgc2FtZSBuYW1lIGFyZSB1c2VkIGluIHRoZSBzYW1lIHR5cGVsaWIuCgoyMDA0LTAzLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglJbXBsZW1lbnRlZCBJVHlwZUxpYjJfR2V0VHlwZUluZm8oKSBhbmQKCUlUeXBlTGliMl9HZXRUeXBlSW5mb09mR3VpZCgpLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglJbXByb3ZlIGhvdyB0aGUgR1VJRCBoYXNoIHN5c3RlbSB3b3Jrcy4gTWFpbmx5IGEgY2xlYW51cCBzbyB0aGF0IHRoZQoJaGFzaCBsb29rdXBzIGNhbiBiZSBkb25lIGZyb20gb3RoZXIgZnVuY3Rpb25zLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmgsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzoKCUFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCVJlbmFtZSBzb21lIG9mIHRoZSBmaWVsZHMgaW4gdHlwZWxpYi5oIHRvIG1ha2VzIG1vcmUgZXZvY2F0aXZlIHRoYW4KCSd1bmswMCcuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0byB0YWtlIGFjY291bnQgb2YgaGlkZGVuIGJhbmRzIGR1cmluZyBsYXlvdXQuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglQcmV2ZW50IG5lZ2F0aXZlIGNvb3JkcyBmb3IgbGluZSwgdHVybiBvZmYgcmVkcmF3IHdoZW4gaW5pdGlhbGl6aW5nLAoJZG9jdW1lbnQgb25lIGRpZmZlcmVuY2UgaW4gbmF0aXZlL2J1aWx0aW4gYmVoYXZpb3IuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gSW1wbGVtZW50IFRCX0xPQURJTUFHRVMsIFRCX01BUEFDQ0VMRVJBVE9Se0EsV30sIFRCX01BUktCVVRUT04gYW5kCgkgIHVuZG9jdW1lbnRlZCBtZXNzYWdlIDB4NDYwLgoJLSBCZXR0ZXIgZGVidWcgb3V0cHV0IG9mIHVuZG9jdW1lbnRlZCBtZXNzYWdlIDB4NDVELgoKMjAwNC0wMy0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXNhY20vc3RyZWFtLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYnVnIHdoZW4gUENNV0FWRUZPUk1BVCBpcyBwYXNzZWQgaW50byBhY21TdHJlYW1PcGVuLgoJRml4ZWQgYnVnIHdoZXJlIGludGVycG9sYXRpb24gaXMgZG9uZSB3aXRoIGRhdGEgcGFzdCBlbmQgb2YgYnVmZmVyLiBBCglwcm9wZXIgZml4IHdvdWxkIGJlIHRvIHByb2plY3QgdGhlIGxhc3Qgc2FtcGxlIGJhc2VkIG9uIHRoZSBwcmV2aW91cwoJdHdvIGJ1dCB0aGF0IHJlcXVpcmVzIHNpZ25pZmljYW50IGNoYW5nZXMuCglBZGRlZCBUUkFDRSBhbmQgV0FSTiB3aGVyZSBuZWVkZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQWRkIHN1cHBvcnQgZm9yIGEgdG9vbGJhciBnbG9iYWwgaUxpc3RHYXAuCgktIE1ha2UgVE9PTEJBUl9DYWxjVG9vbGJhciBhbmQgVE9PTEJBUl9EcmF3QnV0dG9uIG5vdCByZWx5IG9uICJtYWdpYwoJICBudW1iZXJzIiBhbmQgY2FsY3VsYXRlIHNpemVzIGFuZCBwb3NpdGlvbnMgbW9yZSBsaWtlIG5hdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgY2FsY3VsYXRlIHRoZSByZWR1bmRhbnQgYW5kIHVudXNlZCBSRUJBUl9ST1cgc3RydWN0dXJlcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJRml4ZWQgaW1wbGliIHRhcmdldCBicm9rZW4gYnkgcHJldmlvdXMgY2hhbmdlLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc3ZjcnQvZmxvYXQuaCwgaW5jbHVkZS9tc3ZjcnQvbWF0aC5oOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglUaGUgYmVnaW5uaW5ncyBvZiBtYXRoLmggYW5kIGZsb2F0LmguCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL3gxMWRydi9kaWIuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmdkaS5oLAoJICBvYmplY3RzL2RpYi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZURJQlNlY3Rpb24gdGFrZXMgYSBjb25zdCBwb2ludGVyIHRvIEJJVE1BUElORk8uCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5oOgoJWmltbGVyIEF0dGlsYSA8aGlqYXN6dUBobGZzbGludXguaHU+CglBZGQgZGVsZXRlIGtleSBzdXBwb3J0LgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywgcHJvZ3JhbXMvd2luZWNmZy9SdS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSBGaWxlU3lzdGVtIG9wdGlvbiBmcm9tIHRoZSBkcml2ZSBjb25maWd1cmF0aW9uLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglFbmFibGUgZXhhY3QgcG9zaXRpb24gY2FsY3VsYXRpb24gd2hlbiBoYXJkd2FyZSBzdXBwb3J0cyBpdC4KCgkqIGluY2x1ZGUvbW1yZWcuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIFdBVkVGT1JNQVRFWFRFTlNJQkxFLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglGaXggcmViYXIgYmFuZCBpbnNlcnRpb24gYW5kIG5vbi1jbGllbnQgY2FsY3VsYXRpb24gaW4gcGFnZXIgY29udHJvbC4KCgkqIGRsbHMva2VybmVsL2V4Y2VwdC5jLCB0b29scy93aW5lLmluZjoKCVdlIG5vIGxvbmdlciBuZWVkIHRvIHBhc3MgLS1kZWJ1Z21zZyAtYWxsIHRvIHdpbmVkYmcuCgoJKiBmaWxlcy9maWxlLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgdHlwbyBpbiBET1MgZGV2aWNlIGNoZWNrIGluIENyZWF0ZUZpbGVXLgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBkbGxzL250ZGxsL2Vudi5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcGF0aC5jLAoJICBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3JlbGF5LmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsCgkgIGRsbHMvbnRkbGwvc2VjLmM6CglHZXQgcmlkIG9mIG50ZGxsX2dldF9wcm9jZXNzX2hlYXAgYW5kIG50ZGxsX2dldF9wcm9jZXNzX3BtdHMgYnkgdXNpbmcKCXN0YW5kYXJkIEFQSXMgaW5zdGVhZC4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCUNoYW5nZWQgdGhlIGNyZWF0ZV9maWxlIHNlcnZlciByZXF1ZXN0IHRvIHRha2UgTnRDcmVhdGVGaWxlIGZsYWdzCglpbnN0ZWFkIG9mIENyZWF0ZUZpbGVXIG9uZXMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgRXJpYyBQb3VlY2gpLgoKCSogZGxscy9kbWltZS9zZWdtZW50LmMsIGRsbHMvZG1sb2FkZXIvY29udGFpbmVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gc2NyaXB0cyBzdWItY29udGFpbmVycyBsb2FkaW5nCgktIGJldHRlciBzZWdtZW50cyBMb2FkIGFuZCBQYXJzZURlc2NyaXB0b3IgYmVoYXZpb3JzCgoJKiBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmMsIGluY2x1ZGUvY29tbWRsZy5oOgoJR2UgdmFuIEdlbGRvcnAgPGd2Z0ByZWFjdG9zLmNvbT4KCUNoYW5nZSBHZXRGaWxlVGl0bGVBL1cgcHJvdG90eXBlIHRvIG1hdGNoIFBTREsuCgoyMDA0LTAzLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBtaXNjL29wdGlvbnMuYzoKCUdldCByaWQgb2YgdGhlIFdJTkVPUFRJT05TIHZhcmlhYmxlIGFuZCBpbnN0ZWFkIHVzZSBXSU5FREVCVUcgdG8KCWluaGVyaXQgZGVidWcgb3B0aW9ucy4KCVN0YXJ0IGRlcHJlY2F0aW5nIHRoZSAtLWRlYnVnbXNnIG9wdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBHZSB2YW4gR2VsZG9ycCA8Z3ZnQHJlYWN0b3MuY29tPgoJRXhwbGljaXRseSBhc2sgZm9yIGltYWdlIGxpc3Qgd2l0aCBzY3JlZW4gZGVwdGggYXMgSUxDX0NPTE9SIGNhbi93aWxsCglsaW1pdCB0aGUgZGVwdGggdG8gNGJwcCBub3cuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGZpbGVzL2ZpbGUuYzoKCVRoZSBPcGVuQ29uc29sZVcgaW5oZXJpdCBhcmd1bWVudCBpcyBhIGJvb2xlYW4gbm90IGEKCVNFQ1VSSVRZX0FUVFJJQlVURVMgcG9pbnRlci4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQnVpbGQgYWxsIGZpbGUgY29uc2lzdGVudGx5LCB3aXRob3V0IHNob3J0Y3V0cy4KCURvIG5vdCBwYXNzIHdpbmVidWlsZCBlc2NhcGVkIG9wdGlvbnMgdG8gdGhlIGNvbXBpbGVyLgoKCSogcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbjogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUFkZCB0aGUgTERGTEFHUyB3aGVuIGxpbmtpbmcgaGxwMnNnbWwuCgoJKiBkbGxzL250ZGxsL3djc3RyaW5nLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJX3d0b3tsLGksaTY0fSBwYXJhbWV0ZXJzIGFyZSBjb25zdC4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglGaXggc3ViY2xhc3NpbmcgdG8gc3VwcG9ydCBuZXN0ZWQgbWVzc2FnZXMuCgoJKiBwcm9ncmFtcy93aW5lYnJvd3Nlci9tYWluLmM6CglXZSBzaG91bGQgbm8gbG9uZ2VyIG5lZWQgdG8gdW5zZXQgVE1QIGFuZCBURU1QLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3gxMWRydi93aW5wb3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglXaW5kb3dzIHRydW5jYXRlcyB3aW5kb3dzIGNvb3JkaW5hdGVzIGF0IDE2IGJpdHMgd2hlbiBtb3Zpbmcgb3IKCXJlc2l6aW5nIGEgd2luZG93LgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuZGU6IENocmlzdGlhbiBCcml0eiA8Y2JyaXR6QGdteC5uZXQ+CglDb3JyZWN0aW9uIG9mIHNtYWxsIHNwZWxsaW5nIG1pc3Rha2VzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglSZXdyaXRlIGRyYXdpbmcgY29kZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbmVzLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBmaWxlcy9kaXJlY3RvcnkuYzoKCURvIG5vdCBwdXQgdGhlIFRFTVAgYW5kIFRNUCB2YXJpYWJsZXMgaW50byB0aGUgVW5peCBlbnZpcm9ubWVudCwgdXNlCglXSU5FVEVNUCBhbmQgV0lORVRNUCBpbnN0ZWFkLCBsaWtlIHdlIGFscmVhZHkgZG8gZm9yIFBBVEguCgoJKiBkbGxzL2tlcm5lbC9leGNlcHQuYzoKCVJlbW92ZSB0aGUgV0lORURFQlVHIHZhcmlhYmxlIGZyb20gdGhlIGVudmlyb25tZW50IG9mIHRoZSBkZWJ1Z2dlcgoJcHJvY2Vzcy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jLCBmaWxlcy9zbWIuYzogUG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWw6IEFkZGVkIGEgY291cGxlIG9mIG1pc3NpbmcgY2xvc2UgdGFncy4KCgkqIGRsbHMvbXN2Y3J0L3RpbWUuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglJbXBsZW1lbnQgX2Z0aW1lIHdpdGggV2luMzIgQVBJcy4KCgkqIGNvbnRyb2xzL21lbnUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG5lZWQgdG8gc2V0IHRoZSBuZXcgdGV4dCBldmVuIGlmIHRoZSBvbGQgdGV4dCBzdHJpbmcgd2FzIE5VTEwuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCURvIG5vdCBraWxsIHRoZSBhbmltYXRpb24gdGhyZWFkIHdpdGggVGVybWluYXRlVGhyZWFkLCBsZXQgaXQgZmluaXNoCglwcm9wZXJseS4KCUZpeGVkIGEgY291cGxlIG9mIHJhY2VzIHdpdGggdGhlIGFuaW1hdGlvbiB0aHJlYWQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglTcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIERvY3VtZW50IGNvbnRyb2wgY29tcGxldGVuZXNzLgoJLSBSZW1vdmUgdW5uZWVkZWQgaW5jbHVkZS4KCS0gRml4IFRFWFQgZGVmaW5lLgoJLSBGaXggdGFicy4KCS0gU21hbGwgb3B0aW1pc2F0aW9uIGluIERyYXdJbnNlcnQuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9oZWFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglIZWFwIHRlc3RzIGNsZWFudXAuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9iaXRibHQuYywgZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvbWFwcGluZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUVsaW1pbmF0ZSBzb21lIHVubmVjZXNzYXJ5IGRpcmVjdCBhY2Nlc3NlcyB0byBEQyBpbnRlcm5hbHMgZnJvbSBFTUYKCWRyaXZlci4KCjIwMDQtMDMtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNDAzMDkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDQtMDMtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9maWxlMTYuYywgZGxscy9rZXJuZWwvcHJvZmlsZS5jLCBmaWxlcy9kaXJlY3RvcnkuYywKCSAgZmlsZXMvZHJpdmUuYzoKCU1vdmVkIGEgbnVtYmVyIG9mIDE2LWJpdCBmdW5jdGlvbnMgdG8gZmlsZTE2LmMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCURvIG5vdCBjcmVhdGUgc3ltbGlua3MgZm9yIHRoZSBQRSBidWlsZCBzaW5jZSB0aGV5IGNhbiBjb25mbGljdCB3aXRoCgl0aGUgZGlyZWN0b3J5IG5hbWVzLgoKCSogbGlicy9wb3J0L3N0YXR2ZnMuYzogQ2hlY2sgdGhhdCB3ZSBoYXZlIHN0YXRmcyBiZWZvcmUgdXNpbmcgaXQuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJQWRkZWQgZGVmaW5pdGlvbnMgZm9yIFNfSVhVU1IsIFNfSVhHUlAgYW5kIFNfSVhPVEguCgoJKiB0b29scy93aW5lZ2NjL3V0aWxzLmM6IGNobW9kIGlzIG1vcmUgcG9ydGFibGUgdGhhbiBmY2htb2QuCgoJKiBmaWxlcy9kb3NfZnMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1ha2UgSVNfRU5EX09GX05BTUUgYW4gaW5saW5lIGZ1bmN0aW9uLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3Rhc2suYywKCSAgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywgZmlsZXMvZGlyZWN0b3J5LmMsCgkgIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3NtYi5jLAoJICBpbmNsdWRlL2RyaXZlLmgsIGluY2x1ZGUvZmlsZS5oOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGRlZmluaXRpb25zIGZyb20gZmlsZS5oLgoJR290IHJpZCBvZiBkcml2ZS5oLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzoKCUFTQ0lJIHN0cmluZyBjb21wYXJpc29ucyBzaG91bGQgbm90IGRlcGVuZCBvbiB0aGUgbG9jYWxlLgoKCSogZGxscy9jb21jdGwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywKCSAgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gSW1wbGVtZW50IHRoZSBkcmFnIGxpc3QgY29udHJvbC4KCS0gRml4IHRhYnMgaW4gTEJJdGVtRnJvbVB0LgoKCSogd2luZG93cy9tZGkuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG5lZWQgdG8gYXQgbGVhc3QgcmVmcmVzaCB0aGUgd2luZG93IG1lbnUgaW4gQ2hpbGRBY3RpdmF0ZSwgc28gZm9yCglub3cgcmVtb3ZlIHRoZSAnaXMgYWxyZWFkeSBhY3RpdmF0ZWQnIG9wdGltaXphdGlvbi4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL2R4ZXJyOC8uY3ZzaWdub3JlLCBkbGxzL2R4ZXJyOC9NYWtlZmlsZS5pbiwKCSAgZGxscy9keGVycjgvZHhlcnI4LmMsIGRsbHMvZHhlcnI4L2Vycm9ycy5hd2ssIGRsbHMvZHhlcnI4L2Vycm9ycy5kYXQsCgkgIGRsbHMvZHhlcnI4L2Vycm9ycy5oLCBkbGxzL2R4ZXJyOC9tYWtlX2Vycm9ycywKCSAgZGxscy9keGVycjkvLmN2c2lnbm9yZSwgZGxscy9keGVycjkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHhlcnI5L2R4ZXJyOS5jLCBkbGxzL2R4ZXJyOS9lcnJvcnMuYXdrLCBkbGxzL2R4ZXJyOS9lcnJvcnMuZGF0LAoJICBkbGxzL2R4ZXJyOS9lcnJvcnMuaCwgZGxscy9keGVycjkvbWFrZV9lcnJvcnM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgZHhlcnI4IGFuZCBkeGVycjkgbGlicmFyaWVzLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywKCSAgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9kcml2ZS5oLCBpbmNsdWRlL2ZpbGUuaDoKCUdldCByaWQgb2YgdGhlIEZpbGVzeXN0ZW0gb3B0aW9uIGluIHRoZSBkcml2ZSBjb25maWcsIHRoaXMgd2FzIG1vcmUKCWNvbmZ1c2luZyB0aGFuIHVzZWZ1bC4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6IEFkZGVkIHN0YXR2ZnMgcHJvdG90eXBlLgoKCSogZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9wcml2YXRlLmgsIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUJldHRlciBkbXNjcmlwdCBsb2FkaW5nIChub3cgd2UgbG9hZCB0aGUgc2NyaXB0IHZlcnNpb24sIHNjcmlwdAoJbGFuZ3VhZ2UgaWRlbnRpZmllciBhbmQgdGhlIHNjcmlwdCBzb3VyY2UpLgoKCSogZGxscy9nZGkvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9nZGkvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL3Rlc3RzL21ldGFmaWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYW4gRU1GIHRlc3Qgc3VpdGUuCgoJKiB3aW5kb3dzL21kaS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2luZG93cyBhbHdheXMgYWRkcyBhIHNlcGFyYXRvciB0byB0aGUgYm90dG9tIG9mIHRoZSBuZXcgd2luZG93CgltZW51LiBUaGFua3MgdG8gRG1pdHJ5IFRpbW9zaGtvdiBmb3IgY29uZmlybWluZyB0aGlzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUNoZWNrIGZvciBOVUxMIHBvaW50ZXJzIHJldHVybmVkIGJ5IEhlYXBBbGxvYy4KCgkqIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLAoJICBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9leHBhbmQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ3N2cjMyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ycGNzcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcnVuZGxsMzIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3N0YXJ0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWJvb3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVicm93c2VyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWRiZy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVwYXRoL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXZkbS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluOgoJVGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG5ldyB3aW5lZ2NjIC1CIHN1cHBvcnQuCgoJKiB0b29scy93aW5lZ2NjL3V0aWxzLmMsIHRvb2xzL3dpbmVnY2MvdXRpbHMuaCwgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglBbGxvdyBtdWx0aXBsZSAtQiBvcHRpb25zLgoJRG8gbm90IHBhc3MgdGhlIC1CdG9vbHMvd2luZWJ1aWxkIG1hZ2ljIG9wdGlvbiB0byB0aGUgY29tcGlsZXIgdG8KCWF2b2lkIHdhcm5pbmdzLgoJUGFzcyB0byB0aGUgbGlua2VyIGV2ZW4gdGhlIGxpYnJhcmllcyB3ZSBkaWRuJ3QgZmluZCBpbiB0aGUgbGliIHNlYXJjaAoJcGF0aCwgaW4gY2FzZSB3ZSBhcmUgbm90IHVzaW5nIHRoZSBzdGFuZGFyZCBwYXRocy4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGEgd2luZSBzcGVjaWZpYyBtb2RlLiBJZiBpcyBhY3RpdmF0ZWQgaWYgdGhlIC1CIHByZWZpeCBlbmRzIHdpdGgKCS90b29scy93aW5lYnVpbGQuIElmIHlvdSBoYXBwZW4gdG8gaGF2ZSBzdWNoIGEgcHJlZml4LCBidXQgeW91IGRvbid0Cgl3YW50IHRoaXMgYmVoYXZpb3VyLCBzaW1wbHkgYWRkIGEgdHJhaWxpbmcgJy8nLiBJbiB0aGlzIHNwZWNpYWwgbW9kZSwKCW5vIGRlZmF1bHQgV2luMzIgRExMcyBhcmUgbGlua2VkIGluLCB3ZSBkb24ndCBmb3JjZSB0aGUgc2hvcnQgd2NoYXJfdCwKCWFuZCB0aGUgc3RhbmRhcmQgZGlycyBhcmUgbm90IHNlYXJjaGVkLgoKCSogdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwgdG9vbHMvd2lkbC93aWRsLm1hbjoKCUhhbm51IFZhbHRvbmVuIDxIYW5udS5WYWx0b25lbkBodXQuZmk+CglBZGRlZCBhIG1hbiBwYWdlIGZvciB3aWRsLgoKCSogdG9vbHMvd2luZWdjYy91dGlscy5jLCB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCUZpeGVkIGEgY291cGxlIG9mIGNyYXNoZXMuCgoJKiB0b29scy9iaW4ycmVzLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBY2NlcHQgJy12JyBmbGFnLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCByZWdpc3RyeSBlbnRyaWVzIGZvciBhbnkgZm9udHMgZm91bmQgYnkgZm9udGNvbmZpZyBvciB0aGF0IGFyZSBpbgoJdGhlIEZvbnREaXJzIGRpcmVjdG9yaWVzLgoKCSogdG9vbHMvd2luZWdjYy91dGlscy5jLCB0b29scy93aW5lZ2NjL3V0aWxzLmgsCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCAtQiBwcmVmaXggc3VwcG9ydC4gU21hbGwgY29uc2lzdGVuY3kgY2xlYW51cHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hbXN0cmVhbS8uY3ZzaWdub3JlLAoJICBkbGxzL2Ftc3RyZWFtL01ha2VmaWxlLmluLCBkbGxzL2Ftc3RyZWFtL2Ftc3RyZWFtLmMsCgkgIGRsbHMvYW1zdHJlYW0vYW1zdHJlYW0uc3BlYywgZGxscy9hbXN0cmVhbS9hbXN0cmVhbV9wcml2YXRlLmgsCgkgIGRsbHMvYW1zdHJlYW0vbWFpbi5jLCBkbGxzL2Ftc3RyZWFtL3JlZ3N2ci5jLAoJICBkbGxzL2Ftc3RyZWFtL3ZlcnNpb24ucmMsIGRsbHMvdXVpZC91dWlkLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvYW1zdHJlYW0uaCwgaW5jbHVkZS9hbXN0cmVhbS5pZGwsIGluY2x1ZGUvYXVzdHJlYW0uaCwKCSAgaW5jbHVkZS9hdXN0cmVhbS5pZGwsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kZHN0cmVhbS5oLAoJICBpbmNsdWRlL2Rkc3RyZWFtLmlkbCwgaW5jbHVkZS9tbXN0cmVhbS5oLCBpbmNsdWRlL21tc3RyZWFtLmlkbCwKCSAgdG9vbHMvd2luZS5pbmY6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGQgYW1zdHJlYW0gZGxsIChNdWx0aU1lZGlhIFN0cmVhbXMpLCBwYXJ0IG9mIERpcmVjdCBTaG93LgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3ZvbHVtZS5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLAoJICBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2RyaXZlLmgsIGluY2x1ZGUvd2lubnQuaDoKCVJlaW1wbGVtZW50ZWQgR2V0Vm9sdW1lSW5mb3JtYXRpb24gYW5kIFNldFZvbHVtZUxhYmVsOyB2b2x1bWUgbGFiZWwKCWFuZCBzZXJpYWwgbnVtYmVyIGFyZSBub3cgc3RvcmVkIGluIHRoZSBmaWxlc3lzdGVtIGluc3RlYWQgb2YgaW4gdGhlCgljb25maWcgZmlsZSAocGFydGx5IGJhc2VkIG9uIGEgcGF0Y2ggYnkgRXJpYyBQb3VlY2gpLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdXBwb3J0IHByb2Nlc3NvcnMgbWFkZSB1cCBvZiBkaWZmZXJlbnQgY29tbWFuZHMuCglSZW5hbWUgc29tZSBwcm9jZXNzb3IgZW51bXMgZm9yIGNvbnNpc3RlbmN5LgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuZGU6IENocmlzdGlhbiBCcml0eiA8Y2JyaXR6QGdteC5uZXQ+CglBZGRlZCBHZXJtYW4gdHJhbnNsYXRpb24gb2YgdGhlIFJFQURNRSBmaWxlLgoKCSogZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJQm9iYnkgQmluZ2hhbSA8YmluZ2hhbS4yMUBvc3UuZWR1PgoJU3R1YiBFbnVtRGVza3RvcHNXIGZvciBub3cuCglJbXBsZW1lbnQgRW51bURlc2t0b3BzQSBpbiB0ZXJtcyBvZiBFbnVtRGVza3RvcHNXLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgdGFrZSBpbnRvIGFjY291bnQgTENfQ1RZUEUgYW5kIExDX01FU1NBR0VTIHdoaWxlIGRldGVjdGluZyBhCgl1c2VyIGxvY2FsZS4KCjIwMDQtMDMtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9kaWIuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNhbGN1bGF0ZSB0aGUgc2l6ZSBvZiBCSV9CSVRGSUVMRFMgZGliIHNlY3Rpb25zIHZpYSB0aGUgd2lkdGggYW5kCgloZWlnaHQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC90ZXN0cy9pbmZvLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIEdldERlZmF1bHRQcmludGVyIGZyb20gYXNjaWkgdG8gdW5pY29kZSwgYWRkZWQKCXRlc3RzIGZvciBHZXREZWZhdWx0UHJpbnRlckEuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbGlicy9wb3J0L3N0YXR2ZnMuYzoKCUFkZGVkIGNoZWNrIGZvciBmX25hbWVsZW4gaW4gc3RydWN0IHN0YXRmcy4KCgkqIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXggb25lIHVnbHkgYnVnIChob3JyaWJsZSBjYXN0KSBpbnRvIGRtdXNpYyBjb2RlIHRvIGdldCBVbnJlYWwyCgljcmFzaGluZyBsYXRlciAod2hlbiB0cnlpbmcgdG8gbGF1bmNoIGxvYWRlZCBzb3VuZCkgOikKCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRG9uJ3QgYWxsb2NhdGUgc3BhY2UgZm9yIHRleHQgd2hlbiBuTWF4VGV4dFJvd3MgPSAwLgoKMjAwNC0wMy0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sIGxpYnMvcG9ydC9zdGF0ZnMuYywKCSAgbGlicy9wb3J0L3N0YXR2ZnMuYzoKCVVzZSBzdGF0dmZzIGluc3RlYWQgb2Ygc3RhdGZzLCBhbmQgcHJvdmlkZSBhIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaW4KCWxpYndpbmVfcG9ydCBpZiBuZWNlc3NhcnkuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6CglEbyBub3Qgc3RvcmUgdGhlIFVuaXggZmlsZSBkZXNjcmlwdG9yIGluIHRoZSBjYWNoZSBzdHJ1Y3R1cmUuCglQcm90ZWN0IHRoZSBnbG9iYWwgY2FjaGUgd2l0aCBhIGNyaXRpY2FsIHNlY3Rpb24uCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVN0dWIgZm9yIFJlZ2lzdGVyRGV2aWNlTm90aWZpY2F0aW9uVy4KCgkqIGRsbHMvd2lubW0vbW1pby5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJSGFuZGxlIHBsYXlpbmcgb2YgZmlsZXMgY29udGFpbmluZyBhICcrJyBhcyBwYXJ0IG9mIHRoZSBmaWxlbmFtZS4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIElNZWRpYUV2ZW50U2luayBhbmQgSU1lZGlhRXZlbnRFeCBpbnRlcmZhY2VzLgoKMjAwNC0wMy0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvZGV2aWNlLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJT3BlbiBhIHJlYWwgZmlsZSBoYW5kbGUgZm9yIGRyaXZlIGRldmljZXMsIGFuZCBnZXQgcmlkIG9mIHRoZSBzZXJ2ZXIKCWRldmljZSBoYWNrcyAoYmFzZWQgb24gYSBwYXRjaCBieSBFcmljIFBvdWVjaCkuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2dkaS9lbmhtZmRydi9iaXRibHQuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwgZGxscy9nZGkvZW5obWZkcnYvb2JqZWN0cy5jLAoJICBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL2dkaS9tZmRydi9iaXRibHQuYywKCSAgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaCwgZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jLAoJICBkbGxzL2dkaS9wYWludGluZy5jLCBkbGxzL2dkaS93aW5nLmMsIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywKCSAgZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2JydXNoLmMsIGRsbHMveDExZHJ2L2RpYi5jLAoJICBkbGxzL3gxMWRydi9wYWxldHRlLmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGluY2x1ZGUvYml0bWFwLmgsCgkgIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcGFsZXR0ZS5oLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsCgkgIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywKCSAgb2JqZWN0cy9wYWxldHRlLmM6CglNb3ZlZCBtb3JlIEdESSBkZWZpbml0aW9ucyB0byBnZGlfcHJpdmF0ZS5oLgoJR2V0IHJpZCBvZiBiaXRtYXAuaCBhbmQgcGFsZXR0ZS5oLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUVudW1lcmF0ZSBhbGwgInNoZWxsXDx2ZXJiPlxjb21tYW5kIiBlbnRyaWVzIGluIHRoZSByZWdpc3RyeSBpbnN0ZWFkCglvZiBzZWFyY2hpbmcgb25seSBmb3IgInNoZWxsXG9wZW5cY29tbWFuZCIgZW50cmllcy4KCgkqIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3gxMWRydi9pbml0LmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBvYmplY3RzL2RjLmM6CglDaGFuZ2VkIHRoZSBDcmVhdGVEQyBkcml2ZXIgZW50cnkgcG9pbnQgdG8gdXNlIGFuIEhEQyBpbnN0ZWFkIG9mIGEgREMKCXBvaW50ZXIuCgoJKiBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvZGliLmMsIGRsbHMveDExZHJ2L2luaXQuYywKCSAgZGxscy94MTFkcnYveDExZHJ2Lmg6CglHZXQgcmlkIG9mIHRoZSBYMTFEUlZfRENfRnVuY3MgaGFjay4KCVJlbW92ZWQgYSBjb3VwbGUgb2YgdW51c2VkIGJpdG1hcCBmdW5jdGlvbnMuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovZW51bWZpbHRlcnMuYywKCSAgZGxscy9xdWFydHovZW51bXJlZ2ZpbHRlcnMuYywgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywKCSAgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmg6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBJRmlsdGVyR3JhcGhJbXBsX0VudW1GaWx0ZXJzIGFuZCBJRW51bUZpbHRlcnMgaW50ZXJmYWNlLgoJUmVuYW1lZCBjb25zdHJ1Y3RvciBvZiBJRW51bVJlZ0ZpbHRlcnMgaW50ZXJmYWNlLgoJU21hbGwgZml4IGluIElGaWx0ZXJNYXBwZXJfRW51bU1hdGNoaW5nRmlsdGVycy4KCgkqIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYzogSmVzc2UgQWxsZW4gPHVoX2phQGdteC5uZXQ+CglBZGRlZCBJbW1Bc3NvY2lhdGVDb250ZXh0RXggc3R1Yi4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUHJlc2VydmUgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGZpbGVzIGFuZCBsaWJyYXJpZXMuIFdlIGRvIHNvIGJ5CgltYWludGFpbmluZyBhIHVuaXF1ZSBsaXN0IG9mIGZpbGVzIGFuZCBsaWIsIGVhY2ggbWFya2VkIHdpdGggdGhlCglhcHByb3ByaWF0ZSBtZXRhZGF0YS4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywKCSAgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3gxMWRydi90ZXh0LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZGxscy94MTFkcnYveGZvbnQuYywgb2JqZWN0cy9mb250LmM6CglQYXNzIHRoZSBnZGlGb250IG9iamVjdCB0byB0aGUgU2VsZWN0Rm9udCBkcml2ZXIgZW50cnkgcG9pbnQgc28gdGhhdAoJd2UgZG9uJ3QgbmVlZCB0byBsb29rIGludG8gdGhlIERDIHN0cnVjdHVyZSBmb3IgaXQuCgoJKiBkbGxzL3gxMWRydi90ZXh0LmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCUF2b2lkIGRpcmVjdCBhY2Nlc3NlcyB0byB0aGUgeGZvcm1Xb3JsZDJWcG9ydCBEQyBmaWVsZC4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL21mZHJ2L3RleHQuYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90ZXh0LmMsCgkgIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3gxMWRydi90ZXh0LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveHJlbmRlci5jLCBvYmplY3RzL3RleHQuYzoKCVBhc3MgdGhlIGJyZWFrRXh0cmEgdmFsdWUgaW4gdGhlIEV4dFRleHRPdXQgZHJpdmVyIGNhbGwsIHNpbmNlIHRoZXJlCglpcyBubyBmdW5jdGlvbiB0byByZXRyaWV2ZSBpdCBmcm9tIHRoZSBIREMuCgoJKiBjb250cm9scy9kZXNrdG9wLmMsIGRsbHMvdXNlci9jb250cm9scy5oLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJSnVzdGluIENoZXZyaWVyIDxidXJuZXIxQGhvdG1haWwuY29tPgoJTW92ZSBpbXBsZW1lbnRhdGlvbiBvZiBTeXNQYXJhbWV0ZXJzSW5mbyBmcm9tIEFzY2lpIHRvIFVuaWNvZGUuCgoyMDA0LTAzLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW46CglBdm9pZCBzb21lIHJlZHVuZGFudCBsaWJyYXJpZXMgb24gdGhlIHdpbmVnY2MgY29tbWFuZCBsaW5lLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglQdXQgdGhlIC5zcGVjLm8gZmlsZSBmaXJzdCBhbmQgdGhlIHNvIGxpYnJhcmllcyBsYXN0IG9uIHRoZSBsaW5rCgljb21tYW5kIGxpbmUuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzoKCVNtYXJ0ZXIgYWxsb2NhdGlvbiBhbGdvcml0aG0gZm9yIHRoZSBzdHJpbmcgYnVmZmVyLCB0byBhbGxvdwoJZGlzcGxheWluZyBtb3JlIGNoYXJhY3RlcnMgZm9yIHN0cmluZ3Mgd2l0aG91dCB0b28gbWFueSBlc2NhcGVzLgoKCSogZGxscy93aW5lcHMvYnVpbHRpbi5jLCBkbGxzL3gxMWRydi90ZXh0LmMsIGluY2x1ZGUvZ2RpLmgsCgkgIG9iamVjdHMvZGMuYywgb2JqZWN0cy9mb250LmM6CglDaGFuZ2VkIHRoZSBHZXRUZXh0RXh0ZW50UG9pbnQgZ3JhcGhpY3MgZHJpdmVyIGVudHJ5IHBvaW50IHRvIHJldHVybgoJZGV2aWNlIGNvb3JkaW5hdGVzLgoJUmVtb3ZlZCBub3QgdXNlZCBicmVha0NvdW50IGZpZWxkIGluIHRoZSBEQyBzdHJ1Y3R1cmUuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgdG9vbHMvd2luZWdjYy9NYWtlZmlsZS5pbjoKCVJlbmFtZWQgdGhlIHN5bWJvbCBmb3IgdGhlIGNwcCBiaW5hcnkgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGgKCWNvbmZpZ3VyZSBpbnRlcm5hbHMuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvcGF0aC5jLCBkbGxzL3NobHdhcGkvdXJsLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUZpeCBVcmxDYW5vbmljYWxpemUgYW5kIGFkZCByZWdyZXNzaW9uIHRlc3QuCgoJKiB0b29scy93aW5lZ2NjL3V0aWxzLmMsIHRvb2xzL3dpbmVnY2MvdXRpbHMuaCwKCSAgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG9uJ3QgdGllIHRoZSBzY3JpcHQgbmFtZSB0byB0aGUgLmV4ZS5zbyBuYW1lLgoKCSogZGxscy92bmJ0LnZ4ZC9NYWtlZmlsZS5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglMaW5rIHRvIHdzMl8zMi4KCgkqIGRsbHMvZ2RpL2dkaTE2LmMsIGRsbHMvZ2RpL2dkaV9wcml2YXRlLmgsIGluY2x1ZGUvZ2RpLmgsCgkgIG9iamVjdHMvZGMuYzoKCUltcGxlbWVudGVkIEdldC9TZXRCb3VuZHNSZWN0IGJhc2VkIG9uIGEgcGF0Y2ggYnkgS2VuIEJlbGxlYXUuCgoJKiBkbGxzL3NobHdhcGkvdXJsLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJUHJldmVudCBjcmFzaCB3aXRoIGludmFsaWQgYXJncyBpbiBhIGZldyBVUkwgZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeCBidWZmZXIgbGVuZ3RoIHVzYWdlIGZvciBSZWdRdWVyeVZhbHVlVygpIGNhbGxzIGF0IHZhcmlvdXMgcGxhY2VzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIFN1cHBvcnQgY3VzdG9tIGNoZWNrIGJhY2tncm91bmQuCgktIFJlZHVjZSBudW1iZXIgb2YgcGFyYW1ldGVycyBuZWVkZWQgZm9yIERyYXdTdHJpbmcgZnVuY3Rpb24uCgoJKiBpbmNsdWRlL3JwY25kci5oLCBpbmNsdWRlL3dpbmUvcnBjZmMuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEFkZCBtb3JlIFJQQyBmb3JtYXQgY2hhcmFjdGVycy4KCS0gQWRkIHNvbWUgTkRSIGZ1bmN0aW9ucyBhbmQgc3RydWN0dXJlcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgQ0VYVFJBIEFORCBDWFhFWFRSQSBmaWVsZHMgc28gd2UgY2FuIHBhc3MgLW1uby1jeWd3aW4gdG8gd2luZWdjYwoJYnV0IG5vdCB0byB3cmMgd2hpY2ggY2hva2VzIG9uIGl0LiBBZGQgUkNFWFRSQSBmb3Igc3ltZXRyeSBhbmQgZm9yIHRoZQoJdXNlci4KCVJlbW92ZSBUX0lOSVQgYW5kIGdldF9kZWZhdWx0X2luaXQoKS4gVGhlc2UgYXJlIG9ic29sZXRlICh1c2VkIHRvCglzZWxlY3QgdGhlIGVudHJ5LXBvaW50LCBXaW5NYWluIG9yIG1haW4pLgoJSWYgdGhlIGRpcmVjdG9yeSBjb250YWlucyBoZWFkZXJzLCB0aGVuIGFkZCAnLicgdG8gSU5DTFVERV9QQVRILgoJU3BlY2lmeSAtbW5vY3lnd2luIGR1cmluZyB0aGUgbGluayBzdGFnZSBpZiB3ZSBhcmUgdG8gbGluayB3aXRoIHRoZQoJbXN2Y3J0LgoJVHJhbnNmb3JtIFhYWF9BUFBNT0RFIGludG8gWFhYX0xERkxBR1MgZm9yIG1vcmUgZmxleGliaWxpdHkuCglDb3JyZWN0bHkgcGFzcyAnLW1jb25zb2xlJyBvciAnLW13aW5kb3dzJyB0byB0aGUgbGluayBzdGFnZS4KCVJlbW92ZSBYWFhfQkFTRU1PRFVMRSwgWFhYX1NQRUNfU1JDUyBhbmQgU1BFQ19TUkNTLiBUaGV5IGFyZQoJb2Jzb2xldGUuCglBZGQgaW1wbGljaXQgYnVpbGQgcnVsZXMgZm9yIC5jLCAuY3BwLCAuY3h4IGZpbGVzIHNvIHRoYXQgb3VyIHNldHRpbmdzCgkoZS5nLiBJTkNMVURFX1BBVEgpIGFyZSB1c2VkLgoJRml4IHRoZSBydWxlIGZvciBidWlsZGluZyBSQyBmaWxlcyAoaXQgd2FzIGludmFsaWQgYW5kIHJlamVjdGVkIGJ5CgltYWtlKS4gQ29udmVydCBpdCB0byBhbiBpbXBsaWNpdCBydWxlIGxpa2UgdGhlIG90aGVycy4KCUFkZCBydWxlcyBmb3IgJ21ha2UgY2xlYW4nLgoJQWRkIHRoZSBtaXNzaW5nIHJ1bGVzIGZvciByZWN1cnNpdmUgY29tcGlsYXRpb24uCglSZW1vdmUgb2Jzb2xldGUgZWxlbWVudHMgZnJvbSB0aGUgbGluayBjb21tYW5kIChMRERMTEZMQUdTLAoJQUxMX0xJQlJBUllfUEFUSCwgTElCUykuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2V2Y29kZS5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgZXZjb2RlLmggaW5jbHVkZS4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUhhbmRsZSBudWxsIGFuZCBkdXBsaWNhdGUgbmFtZSB3aGVuIGFkZGluZyBhIGZpbHRlciB0byB0aGUKCWZpbHRlcmdyYXBoLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGltZS5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW1wbGVtZW50ZWQgR2V0RGF5bGlnaHRGbGFnLgoKMjAwNC0wMy0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2RkcmF3L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvZHNvdW5kL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2RpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvaXBobHBhcGkvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnQvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9uZXRhcGkzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9ycGNydDQvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGVsbDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3VybG1vbi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5pbmV0L3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5zb2NrL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvd2luc3Bvb2wvdGVzdHMvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY29udHJvbC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9leHBhbmQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ2VkaXQvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcmVnc3ZyMzIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcnBjc3MvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcnVuZGxsMzIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvc3RhcnQvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdmlldy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93Y21kLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVib290Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVicm93c2VyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVjZmcvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWRiZy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lZmlsZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZW1pbmUvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZXBhdGgvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZXZkbS8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbnZlci8uY3ZzaWdub3JlOgoJV2Ugbm8gbG9uZ2VyIHVzZSB0aGUgLmV4ZS5zcGVjLmMgZmlsZXMuCgoJKiBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvZXhwYW5kL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdzdnIzMi9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcnBjc3MvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3J1bmRsbDMyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9zdGFydC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVib290L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lYnJvd3Nlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVkYmcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVmaWxlL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lcGF0aC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV2ZG0vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbjoKCUJ1aWxkIGFsbCB0aGUgcHJvZ3JhbXMgd2l0aCB3aW5lZ2NjLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCU1ha2Ugc3VyZSB0ZXh0IGlzbid0IGN1dCBvZmYgYnkgdGhlIGNsb3NlIGJ1dHRvbi4KCgkqIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvcnNhYmFzZS9tYWluLmMsIGRsbHMvc2hsd2FwaS9hc3NvYy5jLAoJICBkbGxzL3V4dGhlbWUvZHJhdy5jLCBkbGxzL3gxMWRydi9rZXlib2FyZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBhbmQgY2FzZSBmaXhlcy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRW5hYmxlIHJlc2l6aW5nIGlmIFdTX1RISUNLRlJBTUUgaXMgc2V0LgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmMsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHN5bmMgdXAgd2l0aCBsYXRlc3QgT3BlbkdMIHNwZWNpZmljYXRpb25zCgktIHNvbWUgZml4ZXMgaW4gbWFrZV9vcGVuZ2wgdG8gc3VwcG9ydCB0aGUgbmV3IHR5cGVzCgoJKiBpbmNsdWRlL3dpbnNvY2syLmg6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkZWQgcHJvdG9jb2wgdHlwZSBjb25zdGFudHMuCgoJKiB0b29scy93aW5laW5zdGFsbDogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCUZpeGVkIHR5cG8gaW4gdGVzdCBhcmd1bWVudHMuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluOiBCdWlsZCB0aGUgdGVzdHMgd2l0aCB3aW5lZ2NjLgoKCSogdG9vbHMvd2luZWdjYy91dGlscy5jLCB0b29scy93aW5lZ2NjL3V0aWxzLmgsCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBwYXNzaW5nIG9wdGlvbnMgdG8gd2luZWJ1aWxkIHZpYSAtV2IuCglHZW5lcmF0ZSBvbmx5IHRoZSBsb2FkZXIgc2NyaXB0IHdoZW4gZ2l2ZW4ganVzdCB0aGUgLmV4ZS5zby4KCUFkZCBmdW5jdGlvbiB0byBkZWxldGUgZWxlbWVudCBmcm9tIGEgc3RyYXJyYXkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCVdlIG5lZWQgdG8gdXNlIEFDX0NIRUNLX1RPT0wgdG8gY2hlY2sgZm9yIGNwcCBpbiBvcmRlciB0byBzdXBwb3J0Cgljcm9zcy1jb21waWxhdGlvbiBwcm9wZXJseS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZHhlcnI4LmgsIGluY2x1ZGUvZHhlcnI5Lmg6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgZHhlcnI4LmggYW5kIGR4ZXJyOS5oIGhlYWRlciBmaWxlcy4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHN0dWIgZm9yIFJhc0dldEVudHJ5UHJvcGVydGllc0EuCgoJKiB0b29scy93aW5lZHVtcC9vdXRwdXQuYzoKCVJlbW92ZWQgb2Jzb2xldGUgZGVmaW5pdGlvbnMgZnJvbSBnZW5lcmF0ZWQgbWFrZWZpbGVzLgoKCSogdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglSZW1vdmVkIG9ic29sZXRlIC0tZGxsIG9wdGlvbiBmcm9tIGxvYWRlciBzY3JpcHQuCglBZGRlZCBzdXBwb3J0IGZvciBXSU5FQlVJTEQgZW52aXJvbm1lbnQgdmFyaWFibGUuCglEb24ndCBnZW5lcmF0ZSB0aGUgbG9hZGVyIHNjcmlwdCBpZiB0aGUgb3V0cHV0IGZpbGUgbmFtZSBlbmRzIGluCgkuZXhlLnNvLgoJRml4ZWQgaGFuZGxpbmcgb2YgLUwgb3B0aW9uLgoJU3RhdGljIGxpYnJhcmllcyBoYXZlIHRvIGJlIGxpbmtlZCBpbiBhZnRlciBvYmplY3QgZmlsZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zZWN1cjMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2VjdXIzMi9NYWtlZmlsZS5pbiwgZGxscy9zZWN1cjMyL3NlY3VyMzIuYywKCSAgZGxscy9zZWN1cjMyL3NlY3VyMzIuc3BlYywgZGxscy9zZWN1cjMyL3NlY3VyMzJfcHJpdi5oLAoJICBkbGxzL3NlY3VyMzIvdGh1bmtzLmMsIGRsbHMvc2VjdXIzMi90aHVua3MuaCwgZGxscy9zZWN1cjMyL3dyYXBwZXIuYywKCSAgaW5jbHVkZS93aW5lcnJvci5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQWRkZWQgYSBzZWN1cjMyLmRsbCB0aGF0IGxvYWRzIG90aGVyIFNTUCBETExzIGFuZCBmb3J3YXJkcyBjYWxscyB0bwoJdGhlbS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJQWRqdXN0IGFsbCBkaW1lbnNpb25zIHRvIG1hdGNoIG5hdGl2ZS4KCUludmFsaWRhdGUgd2hvbGUgdGFiIGFyZWEgd2hlbiBtdWx0aS1saW5lLgoJSW4gdmVydGljYWwgdGFiIHBsYWNlbWVudCBnbyBmcm9tIHRvcCB0byBib3R0b20uCglGaXggYW5ub3lpbmcgdmlzdWFsIGFydGlmYWN0cy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluLCB0b29scy93aW5lZ2NjL3V0aWxzLmMsCgkgIHRvb2xzL3dpbmVnY2MvdXRpbHMuaCwgdG9vbHMvd2luZWdjYy93aW5lZ2NjLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW5zdHJ1bWVudCB3aW5lZ2NjIHRvIHVzZSB0aGUgY29tcGlsZXJzIGFuZCBvcHRpb25zIGRldGVjdGVkIGF0Cgljb25maWd1cmUgdGltZS4gQWRkIHN1cHBvcnQgZm9yIHBhcnNpbmcvZm9ybWF0dGluZyBhIHN0cmluZyBhcnJheQoJZnJvbS90byBhIGNoYXIgc3RyaW5nLiBBZGQgb3B0aW9uIHRvIGRpc2FibGUgc2hvcnQgd2NoYXIgc3VwcG9ydCBpbgoJd2luZWdjYy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBSZW1vdmVkIHVzZWxlc3MgI2lmZGVmIFNJWkVPRl9MT05HX0xPTkcuCgoyMDA0LTAzLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZpZGVvL21jaXduZC5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYywgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaCwKCSAgZGxscy93aW5tbS9tY2lhdmkvd25kLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJLSBBZGQgYSBsb3Qgb2YgdHJhY2VzIHRvIG1ha2UgZGVidWdnaW5nIGEgYml0IGVhc2llci4KCS0gQWRkIHN1cHBvcnQgZm9yIE1DSVdOREZfTk9BVVRPU0laRU1PVklFLCBNQ0lXTkRGX05PQVVUT1NJWkVXSU5ET1cKCSAgYW5kIE1DSVdOREZfTk9FUlJPUkRMRyBmbGFncyBpbiB0aGUgTUNJV25kQ2xhc3MgaW1wbGVtZW50YXRpb24uCgktIEltcGxlbWVudCBzdXBwb3J0IGZvciBNQ0lfVVBEQVRFIGluIHRoZSBNQ0lBVkkgZHJpdmVyIGFuZCB1c2UgaXQgaW4KCSAgdGhlIE1DSVduZENsYXNzIFdNX1BBSU5UIGhhbmRsZXIuCgktIFJlaW1wbGVtZW50IE1DSV9TVE9QIGNvbW1hbmQgaW4gdGhlIE1DSUFWSSBkcml2ZXIgdmlhIGFuIGV2ZW50LgoJLSBBZGQgYSB0ZXN0IHByZXZlbnRpbmcgdGhlIE1DSUFWSSBkcml2ZXIgdG8gY3Jhc2ggYWZ0ZXIgTUNJX1NFRUsKCSAgYmVoaW5kIGFuIGVuZCBvZiBzdHJlYW0uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy92bmJ0LnZ4ZC8uY3ZzaWdub3JlLAoJICBkbGxzL3ZuYnQudnhkL01ha2VmaWxlLmluLCBkbGxzL3ZuYnQudnhkL3ZuYnQuYywKCSAgZGxscy92bmJ0LnZ4ZC92bmJ0LnZ4ZC5zcGVjOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBUaGUgdmlydHVhbCBuZXRiaW9zIGRldmljZSBkcml2ZXIgaXMgcHJvcGVybHkgbmFtZWQgdm5idC52eGQsIG5vdAoJICB2bmIudnhkLgoJLSBNYWtlIGl0IG5vdCBkZXBlbmQgb24gVU5JWCBpbmNsdWRlcy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbjogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglFeHBvcnQgTENfQUxMIGJlZm9yZSBjYWxsaW5nIHNlZC4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9lbnVtcmVnZmlsdGVycy5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIElGaWx0ZXJNYXBwZXIgYW5kIElFbnVtUmVnRmlsdGVycyBpbnRlcmZhY2VzLgoJRml4ZWQgSUZpbHRlck1hcHBlcjJfRW51bU1hdGNoaW5nRmlsdGVycy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJQ29ubmVjdCB0byB3aW5laHEub3JnIGJ5IGl0cyBuYW1lIHJhdGhlciB0aGFuIGJ5IGl0cyBJUCBhZGRyLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvRW4ucmMsIHByb2dyYW1zL3dpbmVtaW5lL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9Gci5yYywgcHJvZ3JhbXMvd2luZW1pbmUvSXQucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL05sLnJjLCBwcm9ncmFtcy93aW5lbWluZS9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvUnUucmMsIHByb2dyYW1zL3dpbmVtaW5lL1NpLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsIHByb2dyYW1zL3dpbmVtaW5lL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmM6CglPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCS0ga2V5IGFjY2VsZXJhdG9ycyBmb3IgIk5ldyBHYW1lIiBhbmQgZXhpdAoJLSBhdXRvIGZsYWcgYWZ0ZXIgc3VjY2Vzc2Z1bCBnYW1lIHRob3NlIGVudHJpZXMgd2hpY2ggd2VyZSBub3QgZmxhZ2dlZAoJICBieSBwbGF5ZXIgZHVyaW5nIHRoZSBnYW1lIGhpbXNlbGYKCgkqIGluY2x1ZGUvb2JqaWRsLmlkbCwgaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS91cmxtb24uaWRsOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglEZWZpbmUgTUtTWVNfVVJMTU9OSUtFUi4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYSBtaXNzaW5nICdcXCcuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdWJtaXQgcmVzdWx0cyB0byBXaW5lSFEuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFN0ZXZlIEx1c3RiYWRlciA8c2x1c3RiYWRlckB2ZXJpem9uLm5ldD4KCUhhbmRsZSB0aGUgZmlyc3RWaXNpYmxlIGl0ZW0gYmVpbmcgTlVMTCBpbgoJVFJFRVZJRVdfVXBkYXRlU2Nyb2xsQmFycygpLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9zc3BpLmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUFkZGVkIHNzcGkuaC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2QzZDgvc2hhZGVyLmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrX2xpbnV4LmMsIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5jLAoJICBkbGxzL25ldGFwaTMyL25idC5jLCBkbGxzL3dpbmVkM2QvdmVydGV4c2hhZGVyLmMsCgkgIGRsbHMvd2luZWRvcy9wcGRldi5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIHNlcnZlci9jaGFuZ2UuYzoKCVBvcnRhYmlsaXR5IGZpeGVzIGZvciBMU0IgY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50IE5ldHBOZXRiaW9zU3RhdHVzVG9BcGlTdGF0dXMuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gVElNRV9HZXRCaWFzIG1ha2Ugc3VyZSB0aGVyZSBpcyBhIGNhY2hlZCB2YWx1ZSBmb3IgZGF5bGlnaHQgYXMKCXdlbGwuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBpbmNsdWRlL29sZWF1dG8uaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglDb3JyZWN0IHJldHVybiB0eXBlIG9mIFN5c1N0cmluZ0xlbigpIGFuZCBTeXNTdHJpbmdCeXRlTGVuKCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJU2V0IGVycm9yIGNvZGUgRVJST1JfRERFX0ZBSUwgaWYgdGhlIERERSBjb25uZWN0aW9uIGZhaWxlZCBpbgoJU2hlbGxFeGVjdXRlKCkuCgoJKiBkbGxzL3JzYWJhc2UvTWFrZWZpbGUuaW4sIGRsbHMvcnNhYmFzZS9tYWluLmMsIHRvb2xzL3dpbmUuaW5mOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJTWFrZSByc2FiYXNlLmRsbCBzZWxmLXJlZ2lzdGVyLgoKCSogZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0MzIvY2VydC5jLAoJICBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLCBkbGxzL2NyeXB0MzIvbWFpbi5jLCBpbmNsdWRlL3dpbmNyeXB0Lmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGNvcnJlY3Qgc29tZSBwcm90b3R5cGVzLCBhZGQgc29tZSBkZWZpbmVzCgktIHN0dWIgYSBjb3VwbGUgbW9yZSBmdW5jdGlvbnMKCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbG1jb25zLmgsIGluY2x1ZGUvbG1zZXJ2ZXIuaCwKCSAgaW5jbHVkZS9sbXNoYXJlLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglEZWNsYXJlIGEgZmV3IG1vcmUgTmV0IGFwaXMgYW5kIGNvbnN0YW50cy4KCjIwMDQtMDItMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIHRoZSAkKGRhdGFkaXIpL3dpbmUgZGlyZWN0b3J5IG9uIHVuaW5zdGFsbC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pOiBObyBsb25nZXIgbmVlZGVkLgoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2dlbmVyaWMucHBkLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvZ2VuZXJpYy5wcGQ6CglNb3ZlZCBnZW5lcmljLnBwZCB0byBkbGxzL3dpbmVwcywgYW5kIGluc3RhbGwgaXQgaW4gZGF0YWRpci4KCgkqIGRsbHMvbXN3c29jay9tc3dzb2NrLmMsIGRsbHMvbXN3c29jay9tc3dzb2NrLnNwZWMsCgkgIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvbXN3c29jay5oLAoJICBpbmNsdWRlL3dpbnNvY2suaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW9yZSBzdHVicyBhbmQgYmV0dGVyIGhlYWRlcnMgZm9yIG1zd3NvY2suZGxsLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgU0hNZW51SW5kZXhGcm9tSUQgYW5kIFNIQ29DcmVhdGVJbnN0YW5jZUFDLgoKMjAwNC0wMi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsLCB3aW5lZGVmYXVsdC5yZWc6CglVc2UgdGhlIG5ldyAuaW5mIHNjcmlwdCBpbnN0ZWFkIG9mIHdpbmVkZWZhdWx0LnJlZy4KCVJlbW92ZWQgc29tZSBvYnNvbGV0ZSBjb2RlLgoKCSogdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmUuaW5mOgoJQWRkZWQgd2luZS5pbmYgc2V0dXBhcGkgc2NyaXB0IHRvIHNldHVwIHRoZSBpbml0aWFsIFdpbmUgcmVnaXN0cnkKCShiYXNlZCBvbiB0aGUgd29yayBvZiBDaHJpcyBNb3JnYW4gYW5kIEJyaWFuIFZpbmNlbnQpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNybGUzMi8uY3ZzaWdub3JlLAoJICBkbGxzL21zcmxlMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNybGUzMi9tc3JsZTMyLmMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZTMyLnNwZWMsIGRsbHMvbXNybGUzMi9tc3JsZV9EZS5yYywKCSAgZGxscy9tc3JsZTMyL21zcmxlX0VuLnJjLCBkbGxzL21zcmxlMzIvbXNybGVfRXMucmMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZV9Gci5yYywgZGxscy9tc3JsZTMyL21zcmxlX0l0LnJjLAoJICBkbGxzL21zcmxlMzIvbXNybGVfTmwucmMsIGRsbHMvbXNybGUzMi9tc3JsZV9QdC5yYywKCSAgZGxscy9tc3JsZTMyL21zcmxlX1J1LnJjLCBkbGxzL21zcmxlMzIvbXNybGVfU2kucmMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZV9wcml2YXRlLmgsIGRsbHMvbXNybGUzMi9yc3JjLnJjOgoJTW92ZWQgbXNybGUzMiB0byB0aGUgdG9wLWxldmVsIGRsbHMgZGlyZWN0b3J5LgoKCSogZGxscy9pbW0zMi9pbW0uYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbW9kdWxlLmMsCgkgIGRsbHMvbmV0YXBpMzIvd2tzdGEuYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywKCSAgZGxscy9vbGVhdXQzMi92YXJmb3JtYXQuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsCgkgIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRsbHMvd2luaW5ldC9uZXRjb25uZWN0aW9uLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBkbGxzL3gxMWRydi94aW0uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9zaGVsbDMyL3N5c3RyYXkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBpY29uIGxlYWsuCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDbGVhbnVwIHByZXBhcmUvdW5wcmVwYXJlIGhlYWRlciBwYXJhbWV0ZXIgY2hlY2tpbmcuCglGaXggbWlkaUluR2V0RGV2Q2Fwc1cuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgbWlzc2luZyAjZGVmaW5lIGZvciBEU19JTkNPTVBMRVRFLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaTogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBUEkgZmlsZXMgdXBkYXRlLgoKCSogZGxscy9rZXJuZWwvYWN0Y3R4LmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBwcm9wZXIgaGVhZGVycyBmb3IgdGhlICpBY3RDdHgqIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2lubnQuaDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBtYWNybyBERUZBVUxUX1VOUkVBQ0hBQkxFLgoKCSogZGxscy9tc3ZpZGVvL21jaXduZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgdHlwbyBpbiBhIGNvbW1lbnQuCgoJKiB0b29scy93aW5lbWFrZXIsIHRvb2xzL3dpbmVtYWtlci5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJR2VuZXJhdGUgYSBzaW1wbGUgTWFrZWZpbGUgdGhhdCB1c2VzIHdpbmVnY2MgdG8gY29tcGlsZS4KCU5vIGxvbmdlciBnZW5lcmF0ZSBhIGNvbmZpZ3VyZSBzY3JpcHQsIHRoYXQncyBwcm9qZWN0IHBvbGljeS4KCgkqIGRsbHMvY29tY2F0L3JlZ3N2ci5jLCBkbGxzL2RtaW1lL3JlZ3N2ci5jLCBkbGxzL2Rtc3R5bGUvcmVnc3ZyLmMsCgkgIGRsbHMvb2xlMzIvcmVnc3ZyLmMsIGRsbHMvc2hlbGwzMi9yZWdzdnIuYzoKCVN5bmMgc29tZSBvZiB0aGUgZGxsIHJlZ2lzdHJhdGlvbnMgd2l0aCB0aGUgY29udGVudHMgb2YKCXdpbmVkZWZhdWx0LnJlZy4KCgkqIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jOgoJU1BJTlNUX1VOUkVHU1ZSIG11c3QgdXNlIHRoZSBVbnJlZ2lzdGVyRGxscyBzZWN0aW9uLCBub3QgdGhlCglSZWdpc3RlckRsbHMgb25lLgoKCSogZGxscy9zZXR1cGFwaS9pbnN0YWxsLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsCgkgIGluY2x1ZGUvc2V0dXBhcGkuaDoKCUltcGxlbWVudGVkIEluc3RhbGxIaW5mU2VjdGlvbiAoYmFzZWQgb24gYSBwYXRjaCBieSBDaHJpcyBNb3JnYW4pLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBSZW1vdmUgZHVwbGljYXRlIGZyZWUuCgktIFJlbW92ZSBkZWJ1ZyBtZXNzYWdlIHRoYXQgZHVtcHMgaW52YWxpZCBzdHJpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywKCSAgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywKCSAgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9zbW9vdGhzY3JvbGwuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglVcGRhdGUgY29tbW9uIGNvbnRyb2wgZnVuY3Rpb24gZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglVcGRhdGUgZG9jdW1lbnRhdGlvbiBmb3IgUnRsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50IEdldFRoZW1lVGV4dE1ldHJpY3MuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBGaXggYSBiYWQgdXNlIG9mIEhlYXBSZWFsbG9jLgoJLSBGaXggZXJyb3IgcmV0dXJuIGNvZGVzLgoJLSBJbXByb3ZlIHRyYWNlcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogTWF0dCBDaGFwbWFuIDxtYXR0aGV3Y0Bjc2UudW5zdy5lZHUuYXU+CglSRUJBUl9MYXlvdXQgc2hvdWxkIHJlc3BlY3QgdGhlIG1pbmltdW0gc2l6ZSBvZiBiYW5kcyBldmVuIHdoZW4KCVJCQlNfRklYRURTSVpFIGlzIG5vdCBzZXQuCgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVc2Ugc29tZSBoZXVyaXN0aWNzIHRvIGRlY2lkZSB3aGF0IHR5cGUgb2YgTUNJV05ETV9PUEVOIG1lc3NhZ2UgdG8KCXVzZS4KCgkqIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jLCBkbGxzL3NldHVwYXBpL3BhcnNlci5jLAoJICBkbGxzL3NldHVwYXBpL3F1ZXVlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGlfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL3NldHVwYXBpLmg6CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgUmVnaXN0ZXJEbGxzIHNlY3Rpb24gKHBhcnRseSBiYXNlZCBvbiBhIHBhdGNoIGJ5CglDaHJpcyBNb3JnYW4pLgoKCSogZGxscy9udGRsbC90aW1lLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDYWNoZSB0aGUgcmVzdWx0IG9mIFRJTUVfR2V0QmlhcyBmb3IgdXAgdG8gMSBzZWNvbmQuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IE1hdHQgQ2hhcG1hbiA8bWF0dGhld2NAY3NlLnVuc3cuZWR1LmF1PgoJUkVCQVJfU2hvd0JhbmQgbmVlZHMgdG8gZm9yY2UgbGF5b3V0IG9mIHRoZSByZWJhciBhZnRlciBhIGJhbmQgaXMKCWhpZGRlbi91bmhpZGRlbi4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBNQ0lBVkkgd2luZG93IHN1cHBvcnQgdG8gdW5pY29kZS4KCUFsbG93IG11bHRpcGxlIHNpbXVsdGFuZW91cyBNQ0lBVkkgZHJpdmVyIGluc3RhbmNlcy4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgbm8gbG9uZ2VyIHVzZWQgd2luZXdyYXAgdXRpbGl0eS4KCjIwMDQtMDItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3N5c2xldmVsLmMsCgkgIGRsbHMvbXNuZXQzMi9tc25ldF9tYWluLmMsIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3RfbWFpbi5jLAoJICB3aW5kb3dzL3VzZXIuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIHdpbjMyIGRlYnVnIGNoYW5uZWwsIG1pc2MgY2xlYW51cCBvZiBkZWJ1Z2dpbmcgY29kZS4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCURvY3VtZW50IGJ1aWxkaW5nIHRlc3RzIHdpdGggTWluR1cuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aW1lIHJhdGhlciB0aGFuIHdpbjMyIGRlYnVnIGNoYW5uZWwgZm9yIGtlcm5lbCB0aW1lIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvZGNlLmM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGNvbW1lbnQgdG8gZXhwbGFpbiB0aGUgTG9ja1dpbmRvd1VwZGF0ZSBzaXR1YXRpb24uCgoJKiBpbmNsdWRlL2RpZ2l0YWx2Lmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgQS9XIG1hcHBpbmcgZm9yIE1DSV9ER1ZfV0lORE9XX1BBUk1TLgoKCSogdG9vbHMvd2luZWdjYy91dGlscy5jLCB0b29scy93aW5lZ2NjL3V0aWxzLmgsCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZvciBzdGF0aWMgbGlicyAoLmEpIHdlIG5lZWQgdG8gcGFzcyB0aGUgYWN0dWFsIGZpbGVuYW1lIHRvIHdpbmVidWlsZCwKCW5vdCBhIC1sIHN3aXRjaC4gRG8gbm90IHJlbW92ZSB0aGUgZmlsZSBleHRlbnNpb24gdG8gZ2V0IHRvIHRoZSBiYXNlCgluYW1lIGlmIGl0J3Mgbm90IC5leGUgb3IgLmV4ZS5zby4gTGluayBzaGVsbDMyIGJ5IGRlZmF1bHQgZm9yIEdVSQoJcHJvZ3JhbXMuIEZpeCBwYXJzaW5nIG9mIG9wdGlvbnMgd2l0aCBhcmd1bWVudHMuCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IFNlYW4gWW91bmcgPHNlYW5AbWVzcy5vcmc+CglDaGVjayB1U2l6ZSBwYXJhbWV0ZXIgaW4gd2F2ZU91dFVucHJlcGFyZUhlYWRlciBhbmQKCXdhdmVPdXRQcmVwYXJlSGVhZGVyLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglGYWJpYW4gQ2VuZWRlc2UgPENlbmVkZXNlQGluZGVsLmNoPgoJVmFyUm91bmQgaW1wbGVtZW50YXRpb24gKHdpdGhvdXQgdHlwZSBERUNJTUFMIHlldCkgd2l0aCB0ZXN0IGZ1bmN0aW9uLgoKCSogZGxscy9udGRsbC90aW1lLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDYWxsIFRJTUVfR2V0QmlhcyByYXRoZXIgdGhhbiBSdGxRdWVyeVRpbWVab25lSW5mbyBpZiB3ZSdyZSBvbmx5CglpbnRlcmVzdGVkIGluIHRoZSBiaWFzIC0gaXQncyBmYXN0ZXIuCgoyMDA0LTAyLTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3dpbmVwcy9pbml0LmM6CglGaXhlZCBjYWxsZXJzIG9mIEdldExvY2FsZUluZm9XIHRvIHVzZSB0aGUgY29ycmVjdCBidWZmZXIgc2l6ZS4KCgkqIGRsbHMva2VybmVsL3Z4ZC5jOgoJUmV0dXJuIHRoZSByaWdodCBlcnJvciBjb2RlIGZvciBub24tZXhpc3RlbnQgVnhEIG1vZHVsZXMuCgoJKiBkbGxzL2RtYmFuZC9iYW5kLmMsIGRsbHMvZG1iYW5kL2JhbmR0cmFjay5jLAoJICBkbGxzL2RtYmFuZC9kbWJhbmRfbWFpbi5jLCBkbGxzL2RtYmFuZC9kbWJhbmRfcHJpdmF0ZS5oLAoJICBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsIGRsbHMvZG1jb21wb3MvY2hvcmRtYXB0cmFjay5jLAoJICBkbGxzL2RtY29tcG9zL2NvbXBvc2VyLmMsIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfbWFpbi5jLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zX3ByaXZhdGUuaCwgZGxscy9kbWNvbXBvcy9zaWducG9zdHRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvYXVkaW9wYXRoLmMsIGRsbHMvZG1pbWUvZG1pbWVfbWFpbi5jLAoJICBkbGxzL2RtaW1lL2RtaW1lX3ByaXZhdGUuaCwgZGxscy9kbWltZS9ncmFwaC5jLAoJICBkbGxzL2RtaW1lL2x5cmljc3RyYWNrLmMsIGRsbHMvZG1pbWUvbWFya2VydHJhY2suYywKCSAgZGxscy9kbWltZS9wYXJhbWNvbnRyb2x0cmFjay5jLCBkbGxzL2RtaW1lL3BhdHRlcm50cmFjay5jLAoJICBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1pbWUvc2VnbWVudC5jLAoJICBkbGxzL2RtaW1lL3NlZ21lbnRzdGF0ZS5jLCBkbGxzL2RtaW1lL3NlZ3RyaWdnZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3NlcXRyYWNrLmMsIGRsbHMvZG1pbWUvc3lzZXh0cmFjay5jLAoJICBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYywgZGxscy9kbWltZS90aW1lc2lndHJhY2suYywKCSAgZGxscy9kbWltZS90b29sLmMsIGRsbHMvZG1pbWUvd2F2ZXRyYWNrLmMsIGRsbHMvZG1sb2FkZXIvY29udGFpbmVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfbWFpbi5jLCBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX3ByaXZhdGUuaCwKCSAgZGxscy9kbWxvYWRlci9sb2FkZXIuYywgZGxscy9kbWxvYWRlci9sb2FkZXJzdHJlYW0uYywKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc2NyaXB0L3JlZ3N2ci5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLAoJICBkbGxzL2Rtc2NyaXB0L3NjcmlwdHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9hdWRpdGlvbnRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9jaG9yZHRyYWNrLmMsIGRsbHMvZG1zdHlsZS9jb21tYW5kdHJhY2suYywKCSAgZGxscy9kbXN0eWxlL2Rtc3R5bGVfbWFpbi5jLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9wcml2YXRlLmgsCgkgIGRsbHMvZG1zdHlsZS9tb3RpZnRyYWNrLmMsIGRsbHMvZG1zdHlsZS9tdXRldHJhY2suYywKCSAgZGxscy9kbXN0eWxlL3N0eWxlLmMsIGRsbHMvZG1zdHlsZS9zdHlsZXRyYWNrLmMsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywgZGxscy9kbXN5bnRoL2Rtc3ludGhfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3ludGgvc3ludGguYywgZGxscy9kbXN5bnRoL3N5bnRoc2luay5jLCBkbGxzL2RtdXNpYy9idWZmZXIuYywKCSAgZGxscy9kbXVzaWMvY2xvY2suYywgZGxscy9kbXVzaWMvY29sbGVjdGlvbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWMuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwKCSAgZGxscy9kbXVzaWMvZG93bmxvYWQuYywgZGxscy9kbXVzaWMvZG93bmxvYWRlZGluc3RydW1lbnQuYywKCSAgZGxscy9kbXVzaWMvaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9wb3J0LmMsCgkgIGRsbHMvZG11c2ljL3BvcnRkb3dubG9hZC5jLCBkbGxzL2RtdXNpYy90aHJ1LmMsIGRsbHMvZHN3YXZlL2Rzd2F2ZS5jLAoJICBkbGxzL2Rzd2F2ZS9kc3dhdmVfbWFpbi5jLCBkbGxzL2Rzd2F2ZS9kc3dhdmVfcHJpdmF0ZS5oLAoJICBpbmNsdWRlL2RtdXNpY2kuaDoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJQWRkZWQgbmFtZSByZXNvbHZpbmcgZm9yIENMU0lEcywgSUlEcywgR1VJRHMgYW5kIHJldHVybiBjb2Rlcy4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglIYW5kbGUgcHJvcGVyIHN1YnN0cmFjdGlvbiBvZiB1bnNpZ25lZCBudW1iZXJzLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBWTU0gVnhELgoKCSogZGxscy9udGRsbC90aW1lLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTcGVlZCB1cCBSdGxUaW1lRmllbGRzVG9UaW1lLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYzogTWF0dCBDaGFwbWFuIDxtYXR0aGV3Y0Bjc2UudW5zdy5lZHUuYXU+CglGaXggZHVtcGluZyBvZiBVbmljb2RlIHN0cmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBNYXR0IENoYXBtYW4gPG1hdHRoZXdjQGNzZS51bnN3LmVkdS5hdT4KCUZpeCBhIHJlZW50cmFuY3kgaXNzdWUgaW4gdGhlIHByb3BlcnR5IHNoZWV0IGltcGxlbWVudGF0aW9uIGJ5IG5vdAoJY2FjaGluZyBhIHBvaW50ZXIgdGhhdCBjYW4gY2hhbmdlLgoKCSogZGxscy9vbGVhdXQzMi92YXJ0eXBlLmM6IEZhYmlhbiBDZW5lZGVzZSA8Q2VuZWRlc2VAaW5kZWwuY2g+CglObyBzaWduIGV4dGVuc2lvbiBmb3IgbmVnYXRpdmUgdmFsdWVzLgoKMjAwNC0wMi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmM6CglUd2VhayB0aGUgbG9hZCBvcmRlciBhbGdvcml0aG0gYSBiaXQgdG8gYmV0dGVyIHJlZmxlY3QgdGhlIHVzZXIncwoJaW50ZW50aW9uLCBieSB0YWtpbmcgaW50byBhY2NvdW50IG5vbi13aWxkY2FyZCBtb2R1bGUgc3BlY2lmaWNhdGlvbnMKCWZvciBhbGwgZGlyZWN0b3JpZXMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJUmV0dXJuIHJpZ2h0IGF3YXkgZnJvbSBpbXBvcnRfZGxsIHdoZW4gYSBkbGwgaXMgbm90IGZvdW5kIHRvIGF2b2lkCglkaXNwbGF5aW5nIG1hbnkgdXNlbGVzcyBmdW5jdGlvbiBlcnJvcnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCU1vcmUgcm9idXN0IGZpeCBmb3IgdGhlIGFydHNjLWNvbmZpZyBicmVha2FnZS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZWxmLmM6IFlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglVc2UgU0hOX1VOREVGIGluc3RlYWQgb2YgU1ROX1VOREVGIHRvIHNwZWNpZnkgdW5kZWZpbmVkIHNlY3Rpb24KCWluZGV4LgoKCSogZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVwbGFjZWQgdGhlIHRpbWVyIGFuZCBpdHMgY2FsbGJhY2sgYnkgYSB0aHJlYWQgZm9yIHJlY2VpdmluZyBtaWRpIGluCglldmVudHMuCglIYW5kbGVkIERSVk1fRVhJVCBpbiBPU1NfbWlkTWVzc2FnZS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBTQV9SRVNUQVJUIHNpZ2FjdGlvbiBmbGFnIGZvciBvdGhlciBCU0RzIGJlc2lkZSBOZXRCU0QuCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggJ2VtcHR5JyBnbHlwaHMKCS0gaW1wbGVtZW50IHByb3BlciBiaXRtYXAgY29vcmRpbmF0ZXMKCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywKCSAgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaDoKCVJlbW92ZWQgc29tZSBvZiB0aGUgRE9TIGRldmljZSBoYWNrcyAoYmFzZWQgb24gYSBwYXRjaCBieSBFcmljCglQb3VlY2gpLgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUltcGxlbWVudCBJNjQgbW9kaWZpZXIsIG1vdmUgV0FSTiB0byBUUkFDRS4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJQ2hhbmdlZCBoYW5kbGluZyBvZiBzcGVjaWFsIERPUyBkZXZpY2VzIHRvIHVzZSByZWFsIGZpbGUgaGFuZGxlcwoJaW5zdGVhZCBvZiB0aGUgc2VydmVyIGRldmljZSBvYmplY3QuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgkgUGFzcyBpbmhlcml0IGhhbmRsZSBmbGFnIHByb3Blcmx5IGZvciBDcmVhdGVOYW1lZFBpcGUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglJdGFsaWFuIHVwZGF0ZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWNjZXB0IG51bGwgbW9kdWxlIGluc3RhbmNlLCBMb2Fkc3RyaW5nIGNhbiBoYW5kbGUgaXQuCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeGVkIHdhdmVJbkdldERldkNhcHNXLgoKCSogZGxscy9udGRsbC90aW1lLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTcGVlZCB1cCBSdGxUaW1lVG9UaW1lRmllbGRzLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgYXBwIGRlc2NyaXB0aW9uIGZpZWxkIHRvIHVuaWNvZGUgYW5kIHVzZSBDUF9VTklYQ1Agd2hlbgoJcHJpbnRpbmcgaXQgb24gdGhlIGNvbnNvbGUuCgoJKiB0b29scy93aW5lZ2NjLy5jdnNpZ25vcmUsIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVnY2MvdXRpbHMuYywgdG9vbHMvd2luZWdjYy91dGlscy5oLAoJICB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNZXJnZSB3aW5ld3JhcCBpbnRvIHdpbmVnY2MuIE1hbnkgY2xlYW51cHMuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2VsZi5jLCBwcm9ncmFtcy93aW5lZGJnL21vZHVsZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGZpeGVkIEVMRiBtb2R1bGVzJyBzaXplIGluZm9ybWF0aW9uCgktIGZpeGVkIGNvbnRhaW5lcnMnIHRlc3RzCgoJKiBkbGxzL3dpbmVkb3MvcHBkZXYuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUlPX3BwX291dHA6IEFsbG93IHRvIHN3aXRjaCBkaXJlY3Rpb24gb2YgdGhlIHByaW50ZXIgcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCBhIHJlZ3Jlc3Npb24gaW4gSW1hZ2VMaXN0X0NyZWF0ZSB3aGVuIGNyZWF0aW5nIGEgZGlic2VjdGlvbi4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVc2UgdGhlIE5VTEwgbWF0cml4IGluc3RlYWQgb2YgZ2l2aW5nIGEgYmFkbHkgZmlsbGVkIGlkZW50aXR5IG1hdHJpeC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglGaWxsIHVudXNlZCBnYXAgdG8gZml4IGxvb2t1cHMgcGFzdCBDU0lETF9DT05ORUNUSU9OUy4KCjIwMDQtMDItMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdnhkLmMsCgkgIGRsbHMvdm1tLnZ4ZC8uY3ZzaWdub3JlLCBkbGxzL3ZtbS52eGQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdm1tLnZ4ZC92bW0uYywgZGxscy92bW0udnhkL3ZtbS52eGQuc3BlYywKCSAgZGxscy92d2luMzIudnhkL3Z3aW4zMi5jLCBkbGxzL3Z3aW4zMi52eGQvdndpbjMyLnZ4ZC5zcGVjOgoJQWxsb3cgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBWeERDYWxsIGVudHJ5IHBvaW50cyB0byBiZSBtb3ZlZCB0bwoJc2VwYXJhdGUgVnhEIGRsbHMuCglNb3ZlZCBWTU0gY29kZSB0byBhIHNlcGFyYXRlIGRsbCwgYW5kIHJlbW92ZWQgdGhlIHJlZ2lzdHJ5IGNhbGxzIHRvCglnZXQgcmlkIG9mIHRoZSBjb2RlIGR1cGxpY2F0aW9uIHdpdGggYWR2YXBpMzIuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ndWkuYywgcHJvZ3JhbXMvd2luZXRlc3QvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC9zZW5kLmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglSZXBvcnQgdGhlIGVycm9yIHNlbnQgYnkgdGhlIENHSSBzY3JpcHQuCglNYWtlIHByb2dyZXNzIGJhciBzZWxlY3Rpb24gZXhwbGljaXQuCgoJKiB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJld3JpdGUgd2luZWdjYyBpbiBwcmVwYXJhdGlvbiBmb3IgbWVyZ2luZyB3aXRoIHdpbmV3cmFwLgoJV2Ugbm93IGhhdmUgY29tcHJlaGVuc2l2ZSAoYW5kIGNvcnJlY3QpIG9wdGlvbnMgcGFyc2luZy4KCgkqIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFNIRE9DVldfRGxsR2V0VmVyc2lvbi4gSXQgcmV0dXJucyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhcwoJdGhlIFdpbjk4L0lFNiBpbXBsZW1lbnRhdGlvbiBkb2VzLgoKMjAwNC0wMi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY2FwaTIwMzIvY2FwMjB3eHguYywgZGxscy9jYXBpMjAzMi9jYXAyMHd4eC5oLAoJICBkbGxzL2RkcmF3L21haW4uYywgZGxscy9nbHV0MzIvZ2x1dC5jLAoJICBkbGxzL2lwaGxwYXBpL3Rlc3RzL2lwaGxwYXBpLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL21zdmlkYzMyL21zdmlkZW8xLmMsCgkgIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBjYWIuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGRsbHMvd2luMzJzL3dpbjMyczE2LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLAoJICBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsIGRsbHMveDExZHJ2L3dpbnRhYi5jLCBsb2FkZXIvZ2xpYmMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9jb21jdGwzMi9zdHJpbmcuYzoKCVJlbW92ZWQgYSBjb3VwbGUgb2YgdW5uZWVkZWQgaGVscGVyIGZ1bmN0aW9ucy4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCB0eXBvIGludHJvZHVjZWQgZHVyaW5nIHRoZSBwYXRoIHNlYXJjaCByZW9yZ2FuaXphdG9uLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglVc2UgZGlic2VjdGlvbnMgZm9yIHRoZSBpbWFnZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIFRCU1RZTEVfRVhfSElERUNMSVBQRURCVVRUT05TIGlzIHNldCB0aGVuIGludmFsaWRhdGUgdGhlIGFyZWEgdGhhdAoJY2hhbmdlcyBpbiBhIHJlc2l6ZS4KCURvbid0IGNhbGwgU1dQIHVubGVzcyB3ZSdyZSBhY3R1YWxseSBhZGp1c3RpbmcgYW55dGhpbmcuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWluLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUFkZCBhIGZyZWUoKSBjYWxsIGF0IHRoZSBlbmQuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgcmVuZGVyaW5nIHN5bnRoZXNpemVkIEJJVE1BUCBhbmQgRElCIGZvcm1hdHMuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvZGV2aWNlLmMsIGRsbHMva2VybmVsL3Z4ZC5jLAoJICBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oOgoJQ3JlYXRlIHJlYWwgZmlsZSBoYW5kbGVzIGZvciBWeERzIGluc3RlYWQgb2YgdXNpbmcgdGhlIHNlcnZlciBkZXZpY2UKCW9iamVjdCBoYWNrIChwYXJ0bHkgYmFzZWQgb24gYSBwYXRjaCBieSBFcmljIFBvdWVjaCkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvc3RyaW5nLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEltcGxlbWVudCBzdHJpbmcgZnVuY3Rpb25zIGluIGNvbWN0bDMyLgoJLSBVc2UgQ29tcGFyZVN0cmluZyBpbiBzaGx3YXBpIHdoZXJldmVyIHBvc3NpYmxlIGluc3RlYWQgb2YgdWdseQoJICBoZWxwZXJzLgoKCSogZGxscy91c2VyL3dpbnByb2MuaCwgd2luZG93cy93aW5wcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRmlyc3Qgc3RlcCBpbiB1c2luZyBmYXN0ZXIgYXBwcm9hY2ggZm9yIEE8LT5XIG1lc3NhZ2UgbWFwcGluZy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVcGRhdGUgREVWRUxPUEVSUy1ISU5UUyB3aXRoIHRoZSBuZXdseSBhZGRlZCBWeERzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTFZOX0JFR0lOUkRSQUcgaXMgaW1wbGVtZW50ZWQgbm93LiBGaXggdHlwby4KCgkqIGRsbHMvdXh0aGVtZS9kcmF3LmMsIGRsbHMvdXh0aGVtZS9tZXRyaWMuYywgZGxscy91eHRoZW1lL21zc3R5bGVzLmMsCgkgIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5oLCBkbGxzL3V4dGhlbWUvcHJvcGVydHkuYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJSW1wbGVtZW50ZWQgc3lzdGVtIG1ldHJpYyBmdW5jdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9pZnNtZ3IudnhkLy5jdnNpZ25vcmUsIGRsbHMvaWZzbWdyLnZ4ZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9pZnNtZ3IudnhkL2lmc21nci5jLCBkbGxzL2lmc21nci52eGQvaWZzbWdyLnZ4ZC5zcGVjLAoJICBkbGxzL2tlcm5lbC9kZXZpY2UuYywgZGxscy9tbWRldmxkci52eGQvLmN2c2lnbm9yZSwKCSAgZGxscy9tbWRldmxkci52eGQvTWFrZWZpbGUuaW4sIGRsbHMvbW1kZXZsZHIudnhkL21tZGV2bGRyLmMsCgkgIGRsbHMvbW1kZXZsZHIudnhkL21tZGV2bGRyLnZ4ZC5zcGVjLCBkbGxzL21vbm9kZWJnLnZ4ZC8uY3ZzaWdub3JlLAoJICBkbGxzL21vbm9kZWJnLnZ4ZC9NYWtlZmlsZS5pbiwgZGxscy9tb25vZGViZy52eGQvbW9ub2RlYmcuYywKCSAgZGxscy9tb25vZGViZy52eGQvbW9ub2RlYmcudnhkLnNwZWMsIGRsbHMvdmRoY3AudnhkLy5jdnNpZ25vcmUsCgkgIGRsbHMvdmRoY3AudnhkL01ha2VmaWxlLmluLCBkbGxzL3ZkaGNwLnZ4ZC92ZGhjcC5jLAoJICBkbGxzL3ZkaGNwLnZ4ZC92ZGhjcC52eGQuc3BlYywgZGxscy92bmV0Ymlvcy52eGQvLmN2c2lnbm9yZSwKCSAgZGxscy92bmV0Ymlvcy52eGQvTWFrZWZpbGUuaW4sIGRsbHMvdm5ldGJpb3MudnhkL3ZuZXRiaW9zLmMsCgkgIGRsbHMvdm5ldGJpb3MudnhkL3ZuZXRiaW9zLnZ4ZC5zcGVjLCBkbGxzL3Z0ZGFwaS52eGQvLmN2c2lnbm9yZSwKCSAgZGxscy92dGRhcGkudnhkL01ha2VmaWxlLmluLCBkbGxzL3Z0ZGFwaS52eGQvdnRkYXBpLmMsCgkgIGRsbHMvdnRkYXBpLnZ4ZC92dGRhcGkudnhkLnNwZWMsIGRsbHMvdndpbjMyLnZ4ZC8uY3ZzaWdub3JlLAoJICBkbGxzL3Z3aW4zMi52eGQvTWFrZWZpbGUuaW4sIGRsbHMvdndpbjMyLnZ4ZC92d2luMzIuYywKCSAgZGxscy92d2luMzIudnhkL3Z3aW4zMi52eGQuc3BlYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGltcGxlbWVudGluZyBWeERzIGFzIHNlcGFyYXRlIGRsbHMgYW5kIGxvYWRpbmcgdGhlbQoJb24gZGVtYW5kLgoJTW92ZWQgYWxsIHRoZSBEZXZpY2VJb0NvbnRyb2wgY29kZSBpbnRvIHRoZSByZXNwZWN0aXZlIFZ4RCBkbGxzLgoKCSogZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6IEJyaWFuIFZpbmNlbnQgPHZpbm5AdGhlc2hlbGwuY29tPgoJUmVtb3ZlIHJlZmVyZW5jZSB0byBDYWxtaXJhIGZpbGUgbWFuYWdlciwgYWRkIGJpdCBhYm91dCBXaW5lZmlsZS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IG5vbi1zdGFuZGFyZCBjb2RlIGluIHJlcG9ydCgpLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglHZXQgdGhlIHJlY3RhbmdsZSBmcm9tIHRoZSBkYyBhbmQgdW5jb21tZW50IFBsYXlFbmhNZXRhRmlsZSBpbgoJR2V0V2luTWV0YUZpbGVCaXRzLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgb2JqZWN0cy9wYWxldHRlLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgU2V0SUNNUHJvZmlsZUEoKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIExJU1RWSUVXX0FwcHJveGltYXRlVmlld1JlY3QgZm9yIExWU19SRVBPUlQuCgoJKiBkbGxzL3gxMWRydi9wYWxldHRlLmM6IEZpbmxvIEJveWRlIDxmaW5AbmVlcHMubmV0PgoJRml4IGZvciBkZWFkbG9jayB3aGVuIHVzaW5nIHByaXZhdGUgY29sb3JtYXAuCgoyMDA0LTAyLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLmMsIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvbWFrZXRlc3QsIHByb2dyYW1zL3dpbmV0ZXN0L3V0aWwuYywKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuaDoKCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCS0gY29tbWFuZCBsaW5lIGhhbmRsaW5nIChHVUkgd2lsbCBmb2xsb3cpCgktIHN0cmlwIC5leGVbLnNvXSBmcm9tIHRlc3QgbmFtZXMKCS0gdmVyc2lvbiAyIG91dHB1dAoKCSogZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlcGxhY2VkIHRoZSB0aW1lciBhbmQgaXRzIGNhbGxiYWNrIGJ5IGEgdGhyZWFkIGZvciByZWNlaXZpbmcgbWlkaSBpbgoJZXZlbnRzLgoJRml4ZWQgdGltZSBvZiBNSU1fTE9OR0RBVEEgbm90aWZpY2F0aW9uLgoJSGFuZGxlZCBEUlZNX0VYSVQgaW4gQUxTQV9taWRNZXNzYWdlLgoKCSogZGxscy9vbGUzMi9pZnMuYzogTWlrZSBIZWFybiA8bWhAY29kZXdlYXZlcnMuY29tPgoJVG8gcmVkdWNlIGRlYnVnZ2luZyBub2lzZSwgbWFrZSBJTWFsbG9jMzIvSU1hbGxvY1NweSBpbXBsZW1lbnRhdGlvbnMKCW91dHB1dCB0byB0aGUgbmV3IG9sZW1hbGxvYyBkZWJ1ZyBjaGFubmVsLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9zY2FuZi5jLCBkbGxzL21zdmNydC9zY2FuZi5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRpby5oOgoJRml4ZWQgdmFyYXJncyBoYW5kbGluZyBpbiB0aGUgc2NhbmYgZnVuY3Rpb25zIChzcG90dGVkIGJ5IEVyaWMKCVBvdWVjaCkuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglEZWZpbmUgU1BJXyogdmFsdWVzIGludHJvZHVjZWQgaW4gWFAuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoLmN6ZWthbGxhQHV0b3JvbnRvLmNhPgoJQWR2YW5jZSBpbmRleCBhcyB3ZSBzZXQgdGhlIGF0b20gdmFsdWVzLgoKCSogZGxscy9tYXBpMzIvbWFwaTMyLnNwZWM6IE1pa2UgSGVhcm4gPG1oQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBwcmVzZW5jZSBvZiBGR2V0Q29tcG9uZW50UGF0aCBpcyB1c2VkIHRvIGNoZWNrIGlmIG1hcGkzMi5kbGwgaXMKCXRoZSBPdXRsb29rIHZlcnNpb24gb3Igbm90LiBJdCdzIGNvbW1vbiB0byBHZXRQcm9jQWRkcmVzcyBmb3IgaXQsIHNvCglsZXQncyBub3QgZXhwb3J0IGl0IGFzIG90aGVyd2lzZSBhcHBzIG1heSBjYWxsIGl0LgoKMjAwNC0wMi0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluLCB0b29scy93aW5lZHVtcC93aW5lZHVtcC5tYW46CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQWRkZWQgd2luZWR1bXAgbWFuIHBhZ2UsIGhlYXZpbHkgYmFzZWQgb24gdGhlIFJFQURNRSBmaWxlLgoKCSogZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RvcHdhdGNoLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTdHViIHRoZSBzdG9wd2F0Y2ggQVBJLgoJSW1wbGVtZW50IERvZXNTdHJpbmdSb3VuZFRyaXBXLEAzNzEtMyxAMzkyLgoJTW92ZSBhIGNvdXBsZSBvZiBzdHJpbmcgZnVuY3Rpb25zIGludG8gc3RyaW5nLmMKCgkqIGRsbHMvc2V0dXBhcGkvc3R1YnMuYzogRml4ZWQgYSB0cmFjZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRmFiaWFuIENlbmVkZXNlIDxDZW5lZGVzZUBpbmRlbC5jaD4KCUxpc3RWaWV3IHNob3VsZCBiZWhhdmUgaW4gT1dORVJEUkFXIGFzIGluIEZVTExST1dTRUxFQ1QuIFRoaXMgYWxsb3dzCgl0byBzZWxlY3QgY2VsbHMgbm90IGluIHRoZSBmaXJzdCBjb2x1bW4gaW4gUkVQT1JUIG1vZGUgd2l0aCBPV05FUkRSQVcKCXN0eWxlIHNldC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRm9yd2FyZCBzb21lIHdyYXBwZXIgZnVuY3Rpb25zIHNpbmNlIHdlIGRvbid0IGNhcmUgYWJvdXQgY29tcGF0aWJpbGl0eQoJd2l0aCBXaW45OCBpbiB0aGlzIGNhc2UuCgoJKiBkbGxzL2tlcm5lbC9pbnN0ci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN1cHBvcnQgZW11bGF0aW9uIG9mIHRoZSBwcml2aWxlZ2VkIG1vdiBkcjcsZWF4IGluc3RydWN0aW9uLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsCgkgIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywgaW5jbHVkZS9zZXR1cGFwaS5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglDb3JyZWN0ZWQgbWV0aG9kIG9mIGNyZWF0aW5nIHJlZ2lzdHJ5IGtleXMsIGJvdGggdG8gZml4IGFuIGlzc3VlIHdoZXJlCgl0aGV5IHdlcmUgbm90IGNyZWF0ZWQgYW5kIHRvIGFjdCBtb3JlIGxpa2UgV2luZG93cy4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLAoJICBkbGxzL2NvbWN0bDMyL3N0cmluZy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCU1vdmUgc3RyaW5nIGZ1bmN0aW9ucyB0byBzZXBhcmF0ZSBmaWxlLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUFkZGVkIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIGEgZGxsIGZyb20gYSAuZGVmIGZpbGUgZm9yIGNhc2VzIHdoZXJlIHdlCglkb24ndCB3YW50IHRvIHdyaXRlIGEgZnVsbCAuc3BlYy4KCVJlbmFtZWQgLS1zcGVjIG9wdGlvbiB0byAtLWRsbCBmb3IgY29uc2lzdGVuY3kuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvdXNlci90ZXN0cy9tc2cuYywgaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglTZXRNZW51IHNob3VsZCBhbHdheXMgY2FsbCBTZXRXaW5kb3dQb3Mgd2hldGhlciB0aGUgd2luZG93IGlzIHZpc2libGUKCW9yIG5vdC4gSG93ZXZlciB3ZSBzaG91bGRuJ3QgY2FsbCBTV1AgZnJvbSBDcmVhdGVXaW5kb3dFeC4KCUFkZGVkIGEgdGVzdCBmb3IgdGhpcyBiZWhhdmlvdXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRml4IHNvbWUgdHJhY2VzLgoJLSBUaGUgVEJNX0dFVCpIT1RMSVNUIGZ1bmN0aW9ucyB0YWtlIGltYWdlbGlzdCBJRCBpbiB3UGFyYW0uCgktIEltcGxlbWVudCBUQk1fR0VUU1RSSU5He0EsV30uCgktIEltcGxlbWVudCB1bmRvY3VtZW50ZWQgMHg0NjIgbWVzc2FnZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvbGlicmFyaWVzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaDoKCVJvYmVydCB2YW4gSGVyayA8cm9iZXJ0QHJvYmVydHZhbmhlcmsubmw+CglBbGxvdyB1c2VyIHRvIGNob29zZSAibmF0aXZlIiwgIm5hdGl2ZSxidWlsdGluIiwgImJ1aWx0aW4iLAoJImJ1aWx0aW4sbmF0aXZlIiBhbmQgImRpc2FibGUiIGZvciBlYWNoIGxpYnJhcnkgdGhleSBvdmVycmlkZS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBGYWJpYW4gQ2VuZWRlc2UgPENlbmVkZXNlQGluZGVsLmNoPgoJQWNjZXB0IFZUX0JPT0wgbWl4ZWQgd2l0aCBhbm90aGVyIHR5cGUgYXMgdmFsaWQgY29tYmluYXRpb24gaW4KCVZhck9yL1ZhckFuZC4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oOiBGaXhlZCBJbnRsU3RyRXFXb3JrZXJBL1cgcHJvdG90eXBlcy4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL3N0cmluZy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQWRkIEludGxTdHJFcVdvcmtlckEvVy4KCS0gU3RyQ21wIHRlc3RzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGUuCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVdyaXRlIHNlY3Rpb24gYWNjZXNzIGFsc28gYXNzdW1lcyByZWFkIGFjY2Vzcy4KCgkqIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuaCwKCSAgZGxscy91eHRoZW1lL3N5c3RlbS5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglLZWVwIHRyYWNrIG9mIHRoZW1lIGZpbGVuYW1lIHdpdGhpbiBUSEVNRV9GSUxFLgoKMjAwNC0wMi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbGxvdyBzcGVjaWZpY2F0aW9uIG9mICJETExNT0RFPW5hdGl2ZSIgZm9yIG5hdGl2ZSBkbGxzLgoKCSogZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sCgkgIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCVJlbmFtZWQgLS1leGUtbW9kZSBvcHRpb24gdG8gLS1tb2RlIG5vdyB0aGF0IGl0IGNhbiBiZSB1c2VkIGZvciBkbGxzCgl0b28uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUdyb3cgdGhlIHRyZWV2aWV3IGNvbnRyb2wgZXhwYW5kZXIgYnV0dG9uIGJ5IDFweCBpbiBlYWNoIGRpcmVjdGlvbiB0bwoJbWF0Y2ggdGhlIG5hdGl2ZSBsb29rLgoKCSogZGxscy9kZHJhdy90ZXN0cy9NYWtlZmlsZS5pbjogU2FtaSBBYXJpbyA8c2FtaS5hYXJpb0BzdXJmZXUuZmk+CglObyBuZWVkIHRvIGxpbmsgYWdhaW5zdCB0aGUgdXVpZCBsaWJyYXJ5LgoKCSogZGxscy94MTFkcnYvdGV4dC5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglUaGUgY2xpcCByZWN0YW5nbGUgZm9yIEV4dFRleHRPdXQgaXMgaW4gbG9naWNhbCBjb29yZHMuCgoJKiBkbGxzL2ljY3ZpZC9pY2N2aWQuYywgZGxscy9tc3ZpZGMzMi9tc3ZpZGVvMS5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVGFrZSBwYWxldHRlIGludG8gYWNjb3VudCB3aGlsZSByZXNwb25kaW5nIG9uCglJQ01fREVDT01QUkVTU19HRVRGT1JNQVQuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHRoZSBuZXcgUlNBIGVuY3J5cHRpb24gRExMLgoKCSogZGxscy91eHRoZW1lL01ha2VmaWxlLmluLCBkbGxzL3V4dGhlbWUvZHJhdy5jLAoJICBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywgZGxscy91eHRoZW1lL21zc3R5bGVzLmgsCgkgIGRsbHMvdXh0aGVtZS9wcm9wZXJ0eS5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnQgRHJhd1RoZW1lQmFja2dyb3VuZEV4LCBEcmF3VGhlbWVUZXh0LCBHZXRUaGVtZVRleHRFeHRlbnQuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTm8gbmVlZCB0byBjaGVjayBmb3IgRGxsRW50cnlQb2ludCBzdHlsZSBjb25zdGFudHMuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdG9yZSBwb2ludGVycyBpbiB0aGUgaW50ZXJuYWwgc3RydWN0dXJlcyBhbmQgbm90IGhhbmRsZXMuCgoJKiBkbGxzL2RkcmF3L3Rlc3RzL2RkcmF3bW9kZXMuYzogU2FtaSBBYXJpbyA8c2FtaS5hYXJpb0BzdXJmZXUuZmk+CglBZGRlZCBzdXJmYWNlIHRlc3RzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGQgc2Vjb25kYXJ5IGJ1ZmZlciBhcnJheS4KCjIwMDQtMDItMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwNDAyMTMuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDQtMDItMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJQWRkZWQgbmF0aXZlIG1vZGUgZGxsIHN1cHBvcnQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgTWFyY3VzIE1laXNzbmVyKS4KCgkqIGxpYnMvcG9ydC9nZXRvcHQuYywgbGlicy9wb3J0L2dldG9wdDEuYzoKCURvbid0IGJ1aWxkIGdldG9wdCBhdCBhbGwgaWYgaXQncyBub3QgbmVlZGVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV29yayB0b3dhcmQgcHJvcGVybHkgdXBkYXRpbmcgdGhlIFNlbGVjdGlvbk1hcmsgd2hlbiB0aGUgc2VsZWN0ZWQKCXN0YXRlIGNoYW5nZWQgaW5zaWRlIGEgbGlzdGJveC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRW5hYmxlIGhhcmR3YXJlIHNlY29uZGFyeSBidWZmZXIgc3VwcG9ydCBvbiBjYXJkcyB0aGF0IHN1cHBvcnQgaXQgKFNCCglsaXZlIGFuZCBhdWRpZ3kpLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTYXZlIG9zcyBkZXZpY2UgZmQgYW5kIGNyZWF0aW9uIGZsYWdzIGluIGRzb3VuZCBidWZmZXIgb2JqZWN0LgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy90dHlkcnYvd25kLmM6CglHZXQgcmlkIG9mIGEgZmV3IDE2LWJpdCBleHBvcnRzIGluIGdkaTMyLgoKCSogZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIE1vemlsbGEgQWN0aXZlIFggY29udHJvbCBpbiBwbGFjZSBvZiB0aGUgSUU2IEFjdGl2ZSBYCgljb250cm9sLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTcGxpdCBidWZmZXIgY3JlYXRpb24gZnVuY3Rpb24gaW50byBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgYnVmZmVyCgljcmVhdGlvbiBmdW5jdGlvbnMuIFNlY29uZGFyeSBidWZmZXIgY3JlYXRpb24gZnVuY3Rpb24gaXMgc3R1YmJlZAoJb3V0LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHdpbmVkZWZhdWx0LnJlZywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9yc2FiYXNlLy5jdnNpZ25vcmUsIGRsbHMvcnNhYmFzZS9NYWtlZmlsZS5pbiwKCSAgZGxscy9yc2FiYXNlL21haW4uYywgZGxscy9yc2FiYXNlL3JzYWJhc2Uuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBlbm91Z2ggb2YgcnNhYmFzZS5kbGwgdG8gZ2V0IFN0ZWFtIHRvIGxvZ2luLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglNb3ZlZCBkc291bmQgbW1hcCBtYXBwaW5nIGluZm8gaW50byBkc291bmQgb2JqZWN0cy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCVVzZSBwaXBlIHN5bmMgY29kZSBmcm9tIHdpbmVvc3MuCgoJKiBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL3dpbmVwcy9jbGlwcGluZy5jLCBkbGxzL3gxMWRydi9iaXRibHQuYywKCSAgZGxscy94MTFkcnYvY2xpcHBpbmcuYywgZGxscy94MTFkcnYvZ3JhcGhpY3MuYywgZGxscy94MTFkcnYvaW5pdC5jLAoJICBkbGxzL3gxMWRydi90ZXh0LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsCgkgIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jOgoJTW92ZWQgaEdDQ2xpcFJnbiBoYW5kbGluZyB0byB0aGUgZ3JhcGhpY3MgZHJpdmVyLgoKCSogZGxscy9kc291bmQvcHJpbWFyeS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUHJvcGVybHkgcmVsZWFzZSBoYXJkd2FyZSBwcmltYXJ5IGJ1ZmZlciB3aGVuIGNoYW5naW5nIGZvcm1hdHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglEb24ndCBuZWVkIHByaW1hcnkgbG9jay4gRml4ZXMgZXJyb3IgaW4gZHNvdW5kIHRlc3RzIGluIGludGVyYWN0aXZlCgltb2RlLgoKCSogZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggbG9jYXRpb24gb2YgdGhlIEZyZWVCU0QgcG9ydCAodGhhbmtzIHRvIGxhenlib25lcykuCgoJKiB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGb3IgZWFjaCBsaWIgZGlyLCBsb29rIGZvciAuc28sIC5kZWYuIGFuZCAuYSBmaWxlcywgaW5zdGVhZCBvZiB0aGUKCW90aGVyIHdheSBhcm91bmQuCgoJKiBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZm9udC5jOgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiB1bnVzZWQgZmllbGRzIGluIHRoZSBEQyBzdHJ1Y3R1cmUuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSBvYnNvbGV0ZSBncmFwaGljcy8gZGlyZWN0b3J5LgoJVXNlIHRoZSBwcmVmZXJlZCBtZXRob2QgZG9jdW1lbnRpbmcgc3R5bGUuCglSZW1vdmUgaXJyZWxldmFudCBzZWN0aW9uIGFib3V0IGludGVybmFsIG5hbWVzLgoKCSogZGxscy94MTFkcnYvYml0Ymx0LmMsIGRsbHMveDExZHJ2L3RleHQuYywgZGxscy94MTFkcnYveHJlbmRlci5jOgoJR2V0IHJpZCBvZiBhIGZldyBtb3JlIHJlZmVyZW5jZXMgdG8gdGhlIERDIHN0cnVjdHVyZS4KCgkqIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94cmFuZHIuYywKCSAgZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCUFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCVVwZGF0ZSB0aGUgZGVza3RvcCB3aW5kb3cgc2l6ZSBhbmQgc2VuZCBXTV9ESVNQTEFZQ0hBTkdFIG9uIHJlc29sdXRpb24KCWNoYW5nZXMuCgoyMDA0LTAyLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLAoJICBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGlja19saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkLmMsIGRsbHMvZGlucHV0L21vdXNlLmM6CglXZSBkb24ndCByZWFsbHkgbmVlZCBzdWJkaXJlY3RvcmllcyBpbiBkbGxzL2RpbnB1dC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvYml0Ymx0LmMsCgkgIGRsbHMvZ2RpL21hcHBpbmcuYywgZGxscy9nZGkvcGFpbnRpbmcuYywgZGxscy9nZGkvcGF0aC5jOgoJTW92ZWQgcmVtYWluaW5nIGZpbGVzIGZyb20gZ3JhcGhpY3MvIHRvIGRsbHMvZ2RpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGxpYnMvTWFrZWxpYi5ydWxlcy5pbiwKCSAgbGlicy91bmljb2RlL01ha2VmaWxlLmluLCBsaWJzL3VuaWNvZGUvd2luZV91bmljb2RlLm1hcCwKCSAgbGlicy93aW5lL01ha2VmaWxlLmluLCBsaWJzL3dpbmUvd2luZS5tYXA6CglBZGRlZCB2ZXJzaW9uIHNjcmlwdHMgZm9yIGxpYndpbmUgYW5kIGxpYndpbmVfdW5pY29kZS4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6CglBIDAuOSByZWxlYXNlIGluIDIwMDMgc2VlbXMgdW5saWtlbHkgYXQgdGhpcyBwb2ludCAoc3BvdHRlZCBieSBDbGF5CglBc2hieSkuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5lZGVmYXVsdC5yZWc6CglKdXN0aW4gQ2hldnJpZXIgPGJ1cm5lcjFAaG90bWFpbC5jb20+CglJbXBsZW1lbnRlZCBTUElfR0VUR1JBRElFTlRDQVBUSU9OUywgU1BJX0dFVEZPTlRTTU9PVEhJTkcsCglTUElfR0VUSE9UVFJBQ0tJTkcsIFNQSV9HRVRMSVNUQk9YU01PT1RIU0NST0xMSU5HIGFuZAoJU1BJX0dFVEtFWUJPQVJEQ1VFUyBzeXN0ZW0gcGFyYW1ldGVyIGNhbGxzLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJV2luZG93cyBwb3J0aW5nIGZpeCAtIERlZmluZSBPX05PTkJMT0NLIGlmIG5vdCBkZWZpbmVkLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgVFJBQ0UuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBvYmplY3RzL2ZvbnQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglHZXRDaGFyQUJDV2lkdGhzIHJldHVybnMgdGhlIHdpZHRocyBvZiB1bnJvdGF0ZWQgZ2x5cGhzIGxpa2UKCUdldENoYXJXaWR0aCBhbHJlYWR5IGRvZXMuCgoJKiBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5lcHMvcHMuYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglCcmFja2V0IGNvZGUgaW5zZXJ0ZWQgYnkgdGhlIFBBU1NUSFJPVUdIIGVzY2FwZXMgYnkKCSUle0JlZ2luLEVuZH1Eb2N1bWVudC4gVGhpcyBzdG9wcyBjdXBzJyBwc3RvcHMgYmVjb21pbmcgY29uZnVzZWQgaWYgaXQKCWNvbWVzIGFjcm9zcyBhbiAlJUVPRiBpbiBhbiBpbXBvcnRlZCBlcHMgZmlsZS4KCVRoZSBoYWNrIGluIFBTRFJWX1JlY3RhbmdsZSB0byBmaXggZXBzIGZpbGVzIGluIG9mZmljZTJrIHR1cm5zIG91dCB0bwoJYmUgYWxtb3N0IHdoYXQgV2luZG93cyByZWFsbHkgZG9lcyAtIHVwZGF0ZSB0aGUgY29kZSBhbmQgdGhlIGNvbW1lbnQKCXRvIG1hdGNoIFdpbmRvd3MgYmVoYXZpb3VyIG1vcmUgcHJlY2lzZWx5LgoKCSogZGxscy93aW5lcHMvZG93bmxvYWQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IHRoZSBmb250IHBwZW0gaXMgYWx3YXlzIHBvc2l0aXZlLiAgVGhhbmtzIHRvIGdzbGluay4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGxlYXZlIG5vdCBpbml0aWFsaXplZCBmaWVsZHMgaW4gdGhlIHN0cnVjdHVyZSBwYXNzZWQgdG8KCVNoZWxsRXhlY3V0ZUV4VzMyLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRyYW5zbGF0ZSB0aGUgcmV0dXJuZWQgaEluc3RBcHAgZnJvbSB0aGUgdW5pY29kZSB3b3JrZXIgZnVuY3Rpb24uCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IERhdmlkIEhhbW1lcnRvbiA8ZGF2aWRAdHJhbnNnYW1pbmcuY29tPgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ29tcGxldGVkIFBlZWtOYW1lZFBpcGUgaW1wbGVtZW50YXRpb24uCgoJKiB3aW5lZGVmYXVsdC5yZWc6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEFkZGVkIE15IENvbXB1dGVyLgoJLSBVcGRhdGVkIGluc3RhbGxlZCBEWCBWZXJzaW9uLgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2Rpc3BkaWIuYywgZGxscy9nZGkvZHJpdmVyLmMsCgkgIGRsbHMvZ2RpL2Vudi5jLCBkbGxzL2dkaS9nZGkxNi5jOgoJTW92ZWQgc29tZSBjb2RlIG91dCBvZiB0aGUgZ3JhcGhpY3MvIGRpcmVjdG9yeSBpbnRvIGRsbHMvZ2RpLgoKCSogZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL2RpYWxvZy5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJQWRkZWQgdGhlIGF1dG9tYXRpYyB0YWJiaW5nIGluIElzRGlhbG9nTWVzc2FnZS4KCUFkZGVkIGNvcnJlY3Rpb25zIHRvIEdldE5leHRUYWIvR3JvdXBJdGVtLgoJSW5jbHVkZWQgdGVzdHMuCgoJKiBkbGxzL2tlcm5lbC9mbGF0dGh1bmsuaCwgZGxscy9rZXJuZWwvdGh1bmsuYzoKCUdldCByaWQgb2YgdGhlIGZsYXR0aHVuay5oIGhlYWRlci4KCgkqIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcxNi5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3VzZXIvd2lucHJvYy5oLCBpbmNsdWRlL3VzZXIuaCwgd2luZG93cy9jbGFzcy5jLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYzoKCUF2b2lkIGEgZmV3IG1vcmUgR2V0TW9kdWxlSGFuZGxlIGNhbGxzLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIueTogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEb24ndCBhZGQgaW1wb3J0ZWQgY29uc3RydWN0cyB0byBhbnkgdHlwZWxpYiBvdXRwdXQgYnkgZGVmYXVsdC4KCgkqIGRsbHMva2VybmVsL2Rvc21lbS5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsCgkgIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuaDoKCVN0b3JlIHRoZSBrZXJuZWwzMiBtb2R1bGUgaGFuZGxlIGdsb2JhbGx5IHRvIGF2b2lkIHNvbWUKCUdldE1vZHVsZUhhbmRsZSBjYWxscyB0aGF0IGNhbiBjYXVzZSBkZWFkbG9ja3Mgd2l0aCB0aGUgbG9hZGVyCglzZWN0aW9uLgoJTW92ZWQgc29tZSAxNi1iaXQgZGVmaW5pdGlvbnMgb3V0IG9mIGtlcm5lbF9wcml2YXRlLmguCgoyMDA0LTAyLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3B0aHJlYWQuYzogQmV0dGVyIGZpeCBmb3IgdGhlIHRocmVhZCBleGl0IHJhY2Ugb24gcHRocmVhZHMuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG9jdW1lbnQgZm91ciBuZXcgZGxsczogZHN3YXZlLCBpY2N2aWQsIG1zdmNydDQwLCBhbmQgbXN2aWRjMzIuCgoJKiB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglQYXJzZSB0aGUgW2lucHV0X3N5bmNdIGF0dHJpYnV0ZS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUaGVyZSBpcyBubyBwb2ludCBpbiBzcGVjaWZ5aW5nIGJvdGggTUVNX1JFU0VSVkUgYW5kIE1FTV9DT01NSVQgZm9yCglWaXJ0dWFsQWxsb2MuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFGTVRfQUMzIG1pZ2h0IGJlIG5vdCBkZWZpbmVkIGluIHRoZSBzeXN0ZW0gaGVhZGVycy4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgZG91YmxlIGNoZWNraW5nIGZyZWUgdHlwZSBmbGFncyBpbiBOdEZyZWVWaXJ0dWFsTWVtb3J5LgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvcmVzMTYuYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJU3RvcmUgYWxsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGRsbCBpbiBhIHN0cnVjdHVyZSBpbnN0ZWFkIG9mCgl1c2luZyBnbG9iYWwgdmFyaWFibGVzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJldXNlIHRoZSBwYXJzaW5nCglyb3V0aW5lcy4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJRG9uJ3QgcmVxdWVzdCBQUk9UX0VYRUMgcGVybWlzc2lvbnMgd2hlbiBtYXBwaW5nIGFuIGltYWdlIGZpbGUgdG8KCWF2b2lkIHByb2JsZW1zIG9uIG5vZXhlYyBmaWxlc3lzdGVtcyB3aXRoIGtlcm5lbCAyLjYuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsCgkgIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS9zaGxvYmouaDoKCU1vdmVkIHNvbWUgbW9yZSBkZWZpbml0aW9ucyBvdXQgb2YgdW5kb2NzaGVsbC5oIGludG8gdGhlIGV4cG9ydGVkCgloZWFkZXJzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglPbmx5IHJlZHJhdyBidXR0b24gaW4gUHJlc3NCdXR0b24gYW5kIEluZGV0ZXJtaW5hdGUgaWYgaXRzIHN0YXRlIGhhcwoJY2hhbmdlZC4KCgkqIGxvYWRlci9nbGliYy5jOgoJRG9uJ3QgZGVwZW5kIG9uIHRoZSBuYW1lIG9mIHRoZSBtYWluIGJpbmFyeSwgYWx3YXlzIGxvYWQKCXdpbmUtW2twXXRocmVhZCBubyBtYXR0ZXIgd2hhdC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmgsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBtb3ZlIHNvbWUgUElETCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgZnJvbSB1bmRvY3NoZWxsLmggaW50byBwdWJsaWMKCSAgaGVhZGVyLCBhcyB0aGV5IGFyZSBubyBsb25nZXIgdW5kb2N1bWVudGVkCgktIGltcGxlbWVudCBjb250ZXh0IG1lbnUgc3VwcG9ydCBmb3IgV2luZWZpbGUKCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSG9ub3VyIFRCX1NFVE1BWFRFWFRST1dTLgoKMjAwNC0wMi0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbmV0YXBpMzIvbmJuYW1lY2FjaGUuYywgZGxscy9uZXRhcGkzMi9uYm5hbWVjYWNoZS5oLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvbmV0YXBpMzIvd2tzdGEuYywgaW5jbHVkZS9sbXN0YXRzLmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQb3J0aW5nIEZpeGVzIGZvciBNaW5ndy9NU1ZDLgoKCSogaW5jbHVkZS93aW5lL3Rlc3QuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdGhlIHdpbmV0ZXN0X29rKCkgaGFjayB0aGF0IGFkZHMgYSB0cmFpbGluZyAnXG4nIGlmIGl0IGlzCgltaXNzaW5nLgoKCSogY29udHJvbHMvc3RhdGljLmM6IEdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CglTZXQgdXBwZXItbGVmdCBjb3JuZXIgb2YgZGVzdGluYXRpb24gdG8gKDAsIDApLCB1c2luZwoJR2V0Qml0bWFwRGltZW5zaW9uRXggZG9lc24ndCBtYWtlIHNlbnNlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBCVE5TX1dIT0xFRFJPUERPV04uCglQb3B1bGF0ZSBidXR0b24gcmVjdCB3aGVuIHNlbmRpbmcgVEJOX0RST1BET1dOLgoKCSogc2VydmVyL2NoYW5nZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBGX05PVElGWSBkZWZpbmVzIGlmIHdlJ3JlIGNvbXBpbGluZyB3aXRoIGxpbnV4IGFuZCB0aGV5J3JlIG5vdAoJaW4gdGhlIHN5c3RlbSBoZWFkZXIgZmlsZXMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBHZXRQcm9jZXNzSGVhcHMoKSBwcm90b3R5cGUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy92aXJ0dWFsLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgY291cGxlIG9mIGNvcHkvcGFzdGUgZXJyb3JzLgoKCSogcHJvZ3JhbXMvd2luZXBhdGgvd2luZXBhdGguYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIEdldEZ1bGxQYXRoTmFtZSB0byBjb252ZXJ0IHVuaXggcGF0aCBuYW1lcyB0byBET1Mgb25lcy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYzogQWxhc3RhaXIgQnJpZGdld2F0ZXIgPG55ZWZAc29mdGhvbWUubmV0PgoJU3VwcG9ydCBmb3IgYSBzbWFsbCBoYW5kZnVsIG1vcmUgcmV0dXJuIHZhbHVlL2FyZ3VtZW50L3ZhcmlhYmxlIHR5cGVzLgoKCSogaW5jbHVkZS91c2VyLmgsIHdpbmRvd3Mvc3lzbWV0cmljcy5jOgoJRHluYW1pY2FsbHkgcmV0cmlldmUgdGhlIG1ldHJpY3MgdGhhdCBkZXBlbmQgb24gdGhlIHNjcmVlbiBzaXplIChiYXNlZAoJb24gYSBwYXRjaCBieSBBbGV4IFBhc2FkeW4pLgoJR2V0IHJpZCBvZiB0aGUgbm8gbG9uZ2VyIHVzZWQgU01fV0lORV9CUFAgbWV0cmljLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglGaXhlcyBhbmQgc3VwcG9ydCBmb3IgVHlwZUluZm8gYWxpZ25tZW50IHZhbHVlcy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL3Rlc3RzL3N0cmluZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRlc3QgU3RyUmV0VG9CU1RSLgoKCSogZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvYXNzb2MuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBpbmNsdWRlL3NobHdhcGkuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgc29tZSBtaXNzaW5nIHByb3RvdHlwZXMsIGZpeCBBc3NvY0lzRGFuZ2Vyb3VzLgoJSW1wbGVtZW50IFN0clJldFRvQlNUUiwgZGVsYXktaW1wb3J0IG9sZWF1dDMyLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL3N0cmluZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRlc3RzIGZvciBTdHJSZXRUb1N0ckFXLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU3RyUmV0VG9TdHJOIHJldHVybnMgQk9PTCBhbmQgc2hvdWxkbid0IGNyYXNoIG9uIE5VTEwgZGVzdC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL2Vycm9yaW5mby5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQ29TZXRTdGF0ZSBpbmZvIHNob3VsZCBiZSB0aHJlYWQgbG9jYWwuCgktIFNldEVycm9ySW5mbyBzaG91bGQgYWxsb2NhdGUgYW4gYXBhcnRtZW50IHdoZW4gbm8gYXBhcnRtZW50IHByZXNlbnQuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOgoJTGVvbmFyZG8gUXVpamFubyBWaW5jZW56aSA8bHF1aWphbm9AaG90cG9wLmNvbT4KCUZpeGVkIExhdGluIEFtZXJpY2FuIGtleWJvYXJkLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglTdHViYmVkLW91dCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSVR5cGVMaWIgaW50ZXJmYWNlLgoJQSBmaXggdG8gSUNyZWF0ZVR5cGVJbmZvOjpBZGRSZWZUeXBlSW5mbygpIHRvIHVzZSBSZWxlYXNlKCkgaW5zdGVhZCBvZgoJaGFja2luZyBhIHJlZmNvdW50IGRpcmVjdGx5LgoJQSBtaXNzZWQgQVBJIGRvYyBjb21tZW50IGZvciB0aGUgSVR5cGVJbmZvIGludGVyZmFjZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHBhcnRpYWwgc3VwcG9ydCBmb3Igc29tZSB1bmRvY3VtZW50ZWQgdG9vbGJhciBtZXNzYWdlcy4KCjIwMDQtMDItMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmMsIGRsbHMvbXN2Y3J0L2NwcC5jLAoJICBkbGxzL21zdmlkYzMyL21zdmlkZW8xLmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjIuYywgZGxscy9zaGRvY3Z3L2NsYXNzaW5mby5jLAoJICBkbGxzL3V4dGhlbWUvc3R5bGVtYXAuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy94MTFkcnYveGltLmMsIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsIHByb2dyYW1zL3dpbmVkYmcvZWxmLmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFzc29ydGVkIHNwZWxsaW5nIGFuZCBjYXNlIGZpeGVzLgoKCSogY29udHJvbHMvbWVudS5jOgoJRml4ZWQgVHJhY2tQb3B1cE1lbnUgcmV0dXJuIHZhbHVlIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEFuZHJlYXMKCVJvc2VuYmVyZykuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC91dGlsaXR5LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQmV0dGVyIFRSQUNFaW5nIGluIHNvbWUgZnVuY3Rpb25zLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglQcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBJQ3JlYXRlVHlwZUluZm86OkFkZEltcGxUeXBlKCkuCglTdXBwb3J0IGZvciBJQ3JlYXRlVHlwZUluZm86OlNldEltcGxUeXBlRmxhZ3MoKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVEJfQUREQlVUVE9OUyBjYW4gcGFzcyBhIHN0cmluZyBwdHIgaW5zdGVhZCBvZiBhbiBpbmRleC4KCVRCX0dFVEJVVFRPTklORk8gb25seSByZXR1cm5zIGEgc3RyaW5nIGlmIGl0J3Mgbm90IGluIHRoZSBpbnRlcm5hbAoJc3RyaW5nIGxpc3QuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0Lmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50ZWQgcHJvcGVyIGFzeW5jaHJvbm91cyBJbnRlcm5ldE9wZW5VcmwgaGFuZGxpbmcuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCVByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIHJlY29yZGluZyBjdXN0b20gZGF0YSBpbiBhIHR5cGUgbGlicmFyeS4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jOiBsaWJ3aW5lX3V1aWQgaGFzIGJlZW4gcmVuYW1lZCB0byBsaWJ1dWlkLgoKCSogZmlsZXMvZmlsZS5jOiBQb2ZpcyA8cG9maXNAcG9ydHVnYWxtYWlsLnB0PgoJRG9uJ3QgcHJpbnQgRklYTUUgZm9yIEZJTEVfQVRUUklCVVRFX1RFTVBPUkFSWS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJV29ya2Fyb3VuZCBmb3IgYnJva2VuIGFydHNjLWNvbmZpZyBzY3JpcHQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCXN0aXJsaW5nQGtjLnJyLmNvbSkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVc2UgdGhlIEJUTlNfKiB0b29sYmFyIGJ1dHRvbiBzdHlsZSBkZWZpbmVzIHJhdGhlciB0aGFuIHRoZSBvdXRkYXRlZAoJVEJTVFlMRV8qLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUZpeCBwcm9jIG5hbWUgcmVwb3J0ZWQgaW4gZGVsYXkgbG9hZCBmYWlsdXJlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL3ZpcnR1YWwuYywgZGxscy9udGRsbC92aXJ0dWFsLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBjYXNlIGZvciBWaXJ0dWFsKiBBUElzLCBmaXggYSBmZXcgYnVncyBkaXNjb3ZlcmVkIGJ5IGl0LgoKCSogaW5jbHVkZS9zZXR1cGFwaS5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglEZWNsYXJlIHNvbWUgU2V0dXBEaSBmdW5jdGlvbnMgYW5kIHJlbGF0ZWQgY29uc3RhbnRzLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOiBIYW5udSBWYWx0b25lbiA8SGFubnUuVmFsdG9uZW5AaHV0LmZpPgoJUmVtb3ZlIHNvbWUgdXNlbGVzcyBjb21tZW50cyBhbmQgcmVhcnJhbmdlIHRoZSBHVUkgYSBiaXQuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGJvdW5kcyBjaGVja2luZyBpbiBTSEdldFBhdGhGcm9tSURMaXN0QS9XLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlcG9ydCByZWFsIGhhbmRsZXMgdG8gdGhlIGFwcGxpY2F0aW9uLCBub3QgV2luZSBpbnRlcm5hbCBvbmVzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBhIHByb2JsZW0gb24gQlNELgoJRml4ZWQgYSB0cmFjZS4KCgkqIGRsbHMvaXBobHBhcGkvaWZlbnVtLmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVJlbW92ZSBkZWFkIGNvbW1lbnQuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IEFsZm9ucyBIb29nZXJ2b3JzdCA8YWxmb25zQHByb3RldXMuZGVtb24ubmw+CglGaXggaW5maW5pdGUgbG9vcCBpbiBfZmx1c2hhbGwuCgoJKiBpbmNsdWRlL2d1aWRkZWYuaDogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJI2lmZGVmIGd1YXJkIHRoZSBkZWNsYXJhdGlvbiBvZiB0eXBlIElJRCB0byBiZSBjb21wYXRpYmxlIHdpdGgKCW1pZGwtZ2VuZXJhdGVkIHN0dWJzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglTdXBwb3J0IGZvciByZWNvcmRpbmcgdGhlIFNZU0tJTkQgb2YgdGhlIHR5cGUgbGlicmFyeS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGNvbXBpbGF0aW9uIHdpdGggTVNWQy4KCgkqIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLAoJICBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLAoJICBvYmplY3RzL3BhbGV0dGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogZGxscy9jb21tZGxnL2NkbGdfVGgucmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRoYWkgbGFuZ3VhZ2UgdHJhbnNsYXRpb24uCgoJKiBkbGxzL21zdmNydC9kaXIuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBVbmljb2RlIGNhbGxzIGluc3RlYWQgb2YgQVNDSUkgd2hlcmUgYXBwbGljYWJsZS4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIHRvb2xzL2MybWFuLnBsOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWxsb3cgQVBJLWRvYyBnZW5lcmF0aW9uIGZvciBub24gV0lOQVBJIGNhbGxzIChlLmcuIG1zdmNydCkuCgoJKiBkbGxzL2R4Z3VpZC9NYWtlZmlsZS5pbiwgZGxscy91dWlkL01ha2VmaWxlLmluOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURlZmluZSBlbXB0eSBydWxlcyBmb3IgZG9jdW1lbnRhdGlvbiBnZW5lcmF0aW9uLgoKMjAwNC0wMi0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYywgaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUFkZGVkIG1lbWNoclcgYW5kIG1lbXJjaHJXIHRvIHRoZSBleHBvcnRlZCBVbmljb2RlIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOgoJQWRkZWQgbWlzc2luZyBwYXJhbWV0ZXIgY2hlY2sgaW4gU2V0TG9jYWxlSW5mb0EgcmV2ZWFsZWQgYnkgdGhlCglwcm9maWxlIGNvZGUgY2hhbmdlcy4KCgkqIGRsbHMva2VybmVsL3Byb2ZpbGUuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gVXNlIFdpbjMyIGluc3RlYWQgb2YgVW5peCBmaWxlIGZ1bmN0aW9ucy4KCS0gUHJvY2VzcyBmaWxlcyBmdWxseSBpbiBVbmljb2RlLgoJLSBBZGQgVW5pY29kZSBmaWxlIGRldGVjdGlvbi4KCgkqIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi93Z2wuYywKCSAgZGxscy9vcGVuZ2wzMi93Z2xfZXh0LmMsIGRsbHMvb3BlbmdsMzIvd2dsX2V4dC5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUJlZ2lubmluZyBvZiBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IFdHTCBleHRlbnNpb25zLgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglVcGRhdGUgZG9jIGFib3V0IGNyb3NzLWNvbXBpbGluZyBvZiB0aGUgV2luZSB0ZXN0cy4KCgkqIGRsbHMva2VybmVsL2xjZm9ybWF0LmMsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOgoJQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJQ29ycmVjdCBHZXROdW1iZXJGb3JtYXQgZm9yIG5lZ2F0aXZlIG51bWJlcnMgd2l0aCBlLmcuIDMgbGVhZGluZwoJZGlnaXRzLgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmM6IEFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCVJlcG9ydCB0aGUgbW91c2Ugd2hlZWwgYXMgcHJlc2VudCBpbiB0aGUgc3lzdGVtIG1ldHJpY3MuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIG1pc3NpbmcgcmV0dXJuLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlLmM6IFRyb3kgUm9sbG8gPHdpbmVAdHJveS5yb2xsby5uYW1lPgoJQWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgRG9jRmlsZXMsIGJhc2VkIG9uIHRoZSBDb3JWdSBpbXBsZW1lbnRhdGlvbiBvZgoJRG9jRmlsZXMuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUdldCBwb2ludGVyIHRvIENyZWF0ZUZpbGVXIGVhcmxpZXIgb24gZHVyaW5nIHN0YXJ0dXAuCglNYWtlIHN1cmUgd2UgZG9uJ3QgY3Jhc2ggd2hlbiBsb2FkaW5nIGEgZGxsIGJlZm9yZSB0aGUgbW9kcmVmIGZvciB0aGUKCW1haW4gZXhlIGhhcyBiZWVuIGNyZWF0ZWQuCgoJKiB0b29scy93aW5lY2hlY2s6IExlb25hcmRvIFF1aWphbm8gVmluY2VuemkgPGxxdWlqYW5vQGhvdHBvcC5jb20+CglBZGRlZCBjaGVjayBmb3IgdW5oaWRlIG9wdGlvbi4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHByb3BlciBISU5URVJORVQgaGFuZGxlcy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvZW52LmMsIGRsbHMvbnRkbGwvdGVzdHMvZXJyb3IuYywKCSAgZGxscy9udGRsbC90ZXN0cy9sYXJnZV9pbnQuYywgZGxscy9udGRsbC90ZXN0cy9wYXRoLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvc3RyaW5nLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogZGxscy9udGRsbC90ZXN0cy9ydGxiaXRtYXAuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCVNwZWxsaW5nIGZpeGVzIGluIHRoZSBvaygpIG1lc3NhZ2VzLgoKCSogZGxscy91eHRoZW1lL21zc3R5bGVzLmM6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJUHJvY2VzcyBjb2xvciBtZXRyaWNzIGZvciB0aGVtZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCS0gRml4IGhhbmRsaW5nIG9mIFRDU19SQUdHRURSSUdIVCBzdHlsZS4KCS0gQ2xpcCBVcERvd24gY29udHJvbCBvbmx5IGlmIGl0IGlzIHByZXNlbnQuCgktIEFkZCBUb0Rvcy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsIHByb2dyYW1zL3dpbmVjZmcvUnUucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvU2kucmMsIHByb2dyYW1zL3dpbmVjZmcvYXBwZGVmYXVsdHMuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuaCwgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaCwgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglSZW5hbWUgJ0dlbmVyYWwgdGFiJyB0byAnQWJvdXQnLCBtb3ZlIHRvIHRoZSBsYXN0IHBvc2l0aW9uLgoJTWFrZSBhcHBsaWNhdGlvbnMgdGFiIGhhbmRsZSBnbG9iYWwgYW5kIHBlci1hcHAgd2ludmVyLCBkb3N2ZXIgYW5kCgl3aW5lbG9vayBzZXR0aW5ncywgbWlycm9yaW5nIHRoZSBMaWJyYXJpZXMgdGFiLiAgQ29kZSBjb3BpZWQgZnJvbQoJUm9iZXJ0IHZhbiBIZXJrJ3MgbGlicmFyaWVzIHRhYi4KCU1vdmUgZ2xvYmFsL2FwcCBzcGVjaWZpYyBmdW5jdGlvbiBhbmQgZ2xvYmFsIHRvIHRoZSB4MTFkcnYgdGFiIHdoZXJlCglpdCBpcyBjdXJyZW50bHkgdXNlZC4KCUFkZCBhIGNvdXBsZSBvZiBwcm9wZXJ0eSBoZWxwZXIgZnVuY3Rpb25zLgoJU2V0IDNEIGJvcmRlciBhcm91bmQgdHJlZXZpZXcgY29udHJvbHMuCglSZW1vdmVkIGludmFsaWQgcmVzb3VyY2VzIGZyb20gbGFuZ3VhZ2VzIG90aGVyIHRoYW4gRW4uCgoyMDA0LTAyLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogVHJhY2UgcmVnaXN0ZXIgY29udGVudHMgb24gZXhjZXB0aW9uLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGYWxsYmFjayB0byBzb2Z0d2FyZSBidWZmZXIgaWYgZmFpbGVkIHRvIGNyZWF0ZSBoYXJkd2FyZSBidWZmZXIuCglNaW5vciBjb2RlIGNsZWFudXBzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvY2hhbmdlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2hlYXAuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL21haWxzbG90LmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYywgZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Rlc3RzL3Byb2ZpbGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglJbXBsZW1lbnQgdGVzdHMgZm9yIFZhck1vZCgpLgoJQWRkZWQgY2hhciAqdnRzdHIoKSB0byBlbmhhbmNlIHRlc3QgZGVidWdnaW5nIGJ5IHJldHVybmluZyBhIHRleHQKCXN0cmluZyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBpbnB1dCB0eXBlLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglJbXBsZW1lbnQgVmFyTW9kKCkuCglBZGQgYSBmZXcgdHJhY2Ugb3V0cHV0cy4KCUZpeCBWYXJOb3QoKSB3aXRoIFZUX0NZLgoJRml4IFZhclBhcnNlTnVtRnJvbVN0cigpIHRvIHdvcmsgY29ycmVjdGx5IHdpdGggTlVNUFJTX0hFWF9PQ1QgZmxhZy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZWxmLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgdHlwby4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGYWxsYmFjayB0byBzb2Z0d2FyZSBidWZmZXIgaWYgZHVwbGljYXRpbmcgaGFyZHdhcmUgYnVmZmVyIGZhaWxzLgoKCSogZGxscy9kc291bmQvcHJpbWFyeS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWN0dWFsIGJ1ZmZlciBmb3JtYXQgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHJlcXVlc3RlZCBmb3JtYXQgc28gdXNlCglyZXR1cm5lZCBvbmUgZm9yIGNhbGN1bGF0aW9uLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTaG93IHNvdW5kIGNhcmQgaW5mbyBpbiB0cmFjZS4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL0l0LnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVRyYW5zbGF0ZSAib3B0aW9ucyIuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIHdpbmRvd3Mvd2luLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgdGVzdCBjYXNlIGFuZCBhIGZpeCBmb3IgdGhlIHdpbmRvdyBzdHlsZXMgc3RhdGUgYXQgdGhlIHdpbmRvdwoJY3JlYXRpb24gdGltZS4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CglNYWtlIGZ1bGwtc2NyZWVuIHBvcHVwIHdpbmRvd3MgbWFuYWdlZC4KCgkqIGRsbHMvbmV0YXBpMzIvYWNjZXNzLmMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglTdHViIE5ldFVzZXJFbnVtKCkuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVByb3Blcmx5IGhhbmRsZSBhc3luY2hyb25vdXMgSHR0cFNlbmRSZXF1ZXN0QS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQ2FuY2VsIHJlbmFtZSBpZiB2YWx1ZSB0byByZW5hbWUgdG8gYWxyZWFkeSBleGlzdHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi90ZXN0cy9kcGEuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglGaXggbkdyb3cgaW5pdGlhbGl6YXRpb24gaW4gRFBBX0NyZWF0ZUV4LgoKMjAwNC0wMi0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jLCBpbmNsdWRlL3dpbmUvcHRocmVhZC5oLCBsb2FkZXIva3RocmVhZC5jLAoJICBsb2FkZXIvcHRocmVhZC5jOgoJUmV2ZXJ0IHRoZSB0aHJlYWQgZXhpdCByYWNlIGZpeCBmb3Igbm93LCBpdCBkb2Vzbid0IHdvcmsgcmlnaHQgb24KCXB0aHJlYWRzLgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGluY2x1ZGUvd2luZS9wdGhyZWFkLmgsCgkgIGxpYnMvd2luZS9wb3J0LmMsIGxpYnMvd2luZS93aW5lLmRlZiwgbG9hZGVyL2t0aHJlYWQuYywKCSAgbG9hZGVyL3B0aHJlYWQuYzoKCUZpeGVkIGEgY291cGxlIG9mIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgd2luZV9wdGhyZWFkIHJvdXRpbmVzIGF0Cgl0aHJlYWQgc3RhcnR1cCBhbmQgZXhpdC4KCgkqIHNlcnZlci9yZXF1ZXN0LmM6CglEbyBhIHByb3RvY29sIGVycm9yIGluc3RlYWQgb2YgY3Jhc2hpbmcgaWYgdGhlIHJlcGx5IGZkIGhhcyBub3QgYmVlbgoJc2V0LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL2NoYW5nZS5jLCBzZXJ2ZXIvY2hhbmdlLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUltcHJvdmVkIGVycm9yIHJlcG9ydGluZy4KCUFkZCBzb21lIG5vdGlmaWNhdGlvbiB0eXBlcyBhbmQgYSB0ZXN0LgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVN0dWIgZm9yIE1MSXNNTEhJbnN0YW5jZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBwcm9ncmFtcy93aW5lZGJnL2VsZi5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIEZpeGVkIGJyb2tlbiB3aW5lZGJnIGNvbXBpbGF0aW9uIG9uIEJTRC4KCS0gRml4ZWQgc29tZSBjb3JuZXIgY2FzZSBoYW5kbGluZyBpbiBFTEYgbGlzdCB3YWxraW5nIChyZXBvcnRlZCBieQoJICBSb2JlcnQgU2hlYXJtYW4pLgoKCSogd2luZG93cy91c2VyLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUNoYW5nZSByZXR1cm4gY29kZSBmcm9tIEV4aXRXaW5kb3dzRXgoKSAoYW5kIHdpdGggdGhhdCByZWxhdGVkCglFeGl0V2luZG93cyogZnVuY3Rpb25zKSBmcm9tIEZBTFNFIHRvIFRSVUUuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL21pZGkuYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3Npbmcgbm90aWZpY2F0aW9ucyB0byBNSURJX05vdGlmeUNsaWVudC4KCU1hZGUgY2hlY2tzIGxlc3Mgc3RyaWN0IGluIG1pZFByZXBhcmUsIG9ubHkgcmV0dXJuIGFuIGVycm9yIGZvciBidWZmZXIKCWluIHF1ZXVlLgoJRml4ZWQgdGltZSBvZiBpbnB1dCBldmVudHMgaW4gQWxzYSBkcml2ZXIuCgoJKiBkbGxzL3V4dGhlbWUvZHJhdy5jOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudCBJc1RoZW1lQmFja2dyb3VuZFBhcnRpYWxseVRyYW5zcGFyZW50LAoJRHJhd1RoZW1lUGFyZW50QmFja2dyb3VuZCwgYW5kIGJlZ2lubmluZ3Mgb2Ygb3RoZXIgZHJhd2luZyBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBpbmNvcnJlY3QgR2V0TG9uZ1BhdGhOYW1lIHVzYWdlIGV4cG9zZWQgYnkgRXJpYydzIGZpbGVuYW1lCglwYXRjaGVzLgoKMjAwNC0wMi0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IEtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkIGRlZmluZSBNQUtFUk9QNC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJc3N1ZSBXQVJOIGluc3RlYWQgb2YgRklYTUUgd2hlbiB0aGVyZSBhcmUgbWlzbWF0Y2hlcyBiZXR3ZWVuIGhhcmQKCWNvZGVkIGFuZCByZWFsIGtleWJvYXJkIGxheW91dHMuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglEZWNsYXJlIFNIR2V0Rm9sZGVyUGF0aCBhbmQgcmVsYXRlZCBjb25zdGFudHMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCVN0dWJiZWQtb3V0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBJVHlwZUluZm8yIGludGVyZmFjZSBmb3IgdGhlCglJQ3JlYXRlVHlwZUluZm8yIGltcGxlbWVudGF0aW9uLgoJSW1wbGVtZW50YXRpb24gb2YgSVR5cGVJbmZvMl9mbkdldENvbnRhaW5pbmdUeXBlTGliKCkuCglQcmVsaW1pbmFyeSBpbXBsZW1lbnRhdGlvbiBvZiBJQ3JlYXRlVHlwZUluZm8yX2ZuQWRkUmVmVHlwZUluZm8oKS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9lbGYuYywgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2hhc2guYywgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9tb2R1bGUuYywgcHJvZ3JhbXMvd2luZWRiZy9tc2MuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9wZS5jLCBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIG5vdyBkZXRlY3RpbmcgRHdhcmYgZGVidWcgaW5mb3JtYXRpb24gaW4gRUxGIG1vZHVsZXMgKGJ1dCBkb24ndCBsb2FkCgkgIGl0KQoJLSBzZXBhcmF0ZWQgbW9kdWxlIG1hbmFnZW1lbnQgKHBlLmMsIGVsZi5jKSBmcm9tIGRlYnVnIGluZm9ybWF0aW9uCgkgIG1hbmFnZW1lbnQgKHN0YWJzLmMsIG1zYy5jKQoJLSB3b3JrZWQgYXJvdW5kIG5ldyB3aW5lLXB0aHJlYWQgYW5kIHdpbmUta3RocmVhZCBsb2FkZXJzIChubyBsb25nZXIKCSAgdXNlICJ3aW5lIiBhcyBkZWZhdWx0IGxvYWRlcikKCS0gYmV0dGVyIGNvbnZlcmdlbmNlIG9mIGdkYi1wcm94eSBhbmQgd2luZWRiZyBmb3IgRUxGIGhhbmRsaW5nCgktIGZpeGVkIEVMRiBsaW5rLW1hcCB3YWxraW5nIC0gbm93IHVzaW5nIGFsbCBsb2FkZWQgc2hhcmVkIGxpYnMgLQoJICAod2l0aCB0aGUgaGVscCBvZiBSb2JlcnQgU2hlYXJtYW4pCgktIGFkZGVkIGEgYml0IG9mIGNvbnN0IGNvcnJlY3RuZXNzCgoJKiBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWM6CglLZW4gQmVsbGVhdSA8amFtZXpAaXZpYy5xYy5jYT4KCUFkZGVkIHN0dWIgZm9yIEltbURpc2FibGVJTUUuCgoJKiBkbGxzL3gxMWRydi94dmlkbW9kZS5jOiBBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CglVc2UgdGhlIGZpcnN0IG1vZGUgaW4gdGhlIFhWaWRNb2RlIG1vZGUgbGlzdCBhcyB0aGUgZGVmYXVsdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCB0aGUgaXRlbSBtYXNrIGJlZm9yZSBjYWxsaW5nIEdldEl0ZW0uCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzogS2lyaWxsIFNtZWxrb3YgPGtpcnJAbGFuZGF1LnBoeXMuc3BidS5ydT4KCU9MRVBpY3R1cmVJbXBsX0xvYWQ6IGZpeCBmb3IgaGVhZGVybGVzcyBwaWN0dXJlcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogS2lyaWxsIFNtZWxrb3YgPGtpcnJAbGFuZGF1LnBoeXMuc3BidS5ydT4KCVRyeSB0byB1c2UgLWZzaG9ydC13Y2hhciBpZiBwb3NzaWJsZS4KCgkqIHdpbmRvd3MvbWRpLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSBNREkgV2luZG93IG1lbnUgcmVmcmVzaGluZyBXaW5kb3dzIGNvbXBhdGlibGUuCglTaW1wbGlmeSBNREkgY2hpbGQgdmlzaWJpbGl0eSBjaGVjay4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRHJhdyBkaXNhYmxlZCB0b29sYmFyIGJ1dHRvbnMgY29ycmVjdGx5LgoKMjAwNC0wMi0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvbXNpbWczMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYywgZGxscy9tc2ltZzMyL21zaW1nMzJfbWFpbi5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnRhdGlvbiBvZiBnZGkzMi5HZGlUcmFuc3BhcmVudEJsdCBhbmQgbXNpbWczMi5UcmFuc3BhcmVudEJsdC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBMaXN0Vmlld19HZXRIZWFkZXIgbWFjcm8uCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglNYWtlIFNIQ2hhbmdlTm90aWZ5UmVnaXN0ZXIgYmUgcmVjdXJzaXZlIHNvIHRoYXQgd2lsbCBnZXQgYWxsCglub3RpZmljYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglGaXggU0hDaGFuZ2VOb3RpZnkgdG8gc2VuZCBjb3JyZWN0IGxQYXJhbSBhbmQgd1BhcmFtIHZhbHVlcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglHdWxpbUNoZSBoYXMgdGhlIElzRml4ZWRQaXRjaCBmbGFnIHNldCwgeWV0IGNvbnRhaW5zIGdseXBocyBvZgoJZGlmZmVyaW5nIHdpZHRocy4gIFRvIGNvcGUgd2l0aCB0aGlzIHdlIG5lZWQgdG8gY2FsbCBGVF9Mb2FkX0dseXBoCgl3aXRoIHRoZSBGVF9MT0FEX0lHTk9SRV9HTE9CQUxfQURWQU5DRV9XSURUSCBmbGFnIGluIG9yZGVyIHRvIGdldAoJYmFjayB0aGUgY29ycmVjdCBnbHlwaCBtZXRyaWNzIGZyb20gRnJlZVR5cGUuCgoJKiB0b29scy93aW5ld3JhcHBlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglQcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgV0lORURMTFBBVEggc28gd2UgY2FuIGxvYWQgb3V0LW9mLXRyZWUgV2luZWxpYgoJYXBwbGljYXRpb25zLgoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUxpbmsgd2l0aCBtc3ZjcnQgYW5kIHVzZSB0aGUgbXN2Y3J0IGhlYWRlcnMgYnkgZGVmYXVsdCB0byBpbXByb3ZlIHRoZQoJVmlzdWFsIEMrKyBjb21wYXRpYmlsaXR5LgoJQWRkIGEgJy0tbm9tc3ZjcnQnIG9wdGlvbiB0byBnZW5lcmF0ZSBtYWtlZmlsZXMgdGhhdCBkbyBub3QgdXNlCgltc3ZjcnQuCgoJKiB3aW5kb3dzL21kaS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVGVzdCB3aGV0aGVyIGFuIGFjdGl2ZSBtYXhpbWl6ZWQgTURJIGNoaWxkIGlzIHZpc2libGUuCgoyMDA0LTAxLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglBZGRlZCBtZW1vcnkgY29uc3RyYWludCB0byBhdm9pZCBtaXNjb21waWxhdGlvbiBvZiB0aGUgdW5hbGlnbmVkX21tYXAKCWZ1bmN0aW9uICh3aXRoIGhlbHAgZnJvbSBQYXVsIFN0cmVpdG1hbikuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSBrZXlib2FyZCBwcm9ncmFtbWluZyBpbnN0cnVjdGlvbnMgdG8gdGhlIERldmVsIEd1aWRlLgoJQ2xlYW51cCB1cCBhIGJ1bmNoIG9mIGJpdHMgdGhhdCBkb24ndCBiZWxvbmcgaW4gYSBib29rLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBwYWxldHRlIGRlbGV0aW9uIGlzc3VlIHNlZW4gaW4gRHVuZ2VvbktlZXBlci4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCB0aGUgWiB0cmFuc2Zvcm0gaW4gdGhlIFhZUlpIVyBjYXNlLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2FjdGN0eC5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBzdHVicyBmb3IgdGhlIEFjdGl2YXRpb24gQ29udGV4dCBBUEkgKFhQKykuCgoJKiBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvcmljaGVkaXQvcnRmLmgsIGRsbHMvcmljaGVkaXQvdGV4dC13cml0ZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBnbG9iYWwgdmFyaWFibGVzIGZyb20gdGhlIHJpY2hlZGl0IGNvbnRyb2wuCgoJKiBkbGxzL3gxMWRydi93aW50YWIuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBOVklESUEgZ3JhcGhpY3MgZGV2aWNlIGNvbWVzIHVwIGFzIGFuIFggZXh0ZW5zaW9uIGV2ZW50LCBidXQKCXRocm93cyBhbiBlcnJvciAoQmFkTWF0Y2gpIHdoZW4gcXVlcnlpbmcgZm9yIHRoZSBidXR0b25zLiBDYXRjaCB0aGlzCgllcnJvciBhbmQgYW5kIGRpc2NhcmQgdGhhdCBkZXZpY2UgZnJvbSBiZWluZyBhIHRhYmxldCBkZXZpY2UuCgoJKiBkbGxzL25ldGFwaTMyL25idC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIGZpeCBicm9hZGNhc3QgYWRkcmVzcyBmb3IgbmFtZSBsb29rdXBzIGFmdGVyIGlwaGxwYXBpIGNoYW5nZQoJLSBmaXggYmFkIHJlZ2lzdHJ5IGtleSBvcGVuaW5nCgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIHRoZSBoYW5kbGluZyBvZiB1dWlkLgoJTW9kaWZ5IHRoZSBhdXRvY29uZiBzY3JpcHQgdG8gZGV0ZWN0ICcteiBkZWZzJyBhbmQgJy1pbml0Ly1maW5pJy4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglJZiB1bmFibGUgdG8gb3BlbiBhbiBYMTEgZGlzcGxheSBtZW50aW9uIHRoYXQgWCBuZWVkcyB0byBiZSBydW5uaW5nCglhbmQgdGhhdCAkRElTUExBWSBtdXN0IGJlIHNldCBjb3JyZWN0bHkuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSByZW1vdmUgdW5uZWNjZXNhcnkgSVNGX015Q29tcHV0ZXJfQ29uc3RydWN0b3IoKSBkZWNsYXJhdGlvbgoJLSBpbXByb3ZlIHJldHVybmVkIGVycm9yIGNvZGUgb2YgSVNGX015Q29tcHV0ZXJfZm5QYXJzZURpc3BsYXlOYW1lKCkKCS0gcmVtb3ZlIHdyb25nIGNvbW1lbnQgZnJvbSBJU0ZfTXlDb21wdXRlcl9mbkdldERpc3BsYXlOYW1lT2YoKQoKMjAwNC0wMS0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRml4ZWQgMTYtYml0IE1ESSBzdXBwb3J0IChiYXNlZCBvbiBhIHBhdGNoIGJ5IERtaXRyeSBUaW1vc2hrb3YpLgoKCSogZGxscy91c2VyL2hvb2sxNi5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIHdpbmRvd3Mvc3RydWN0MzIuYzoKCWxwQ3JlYXRlUGFyYW1zIHNob3VsZCBiZSBhIFNFR1BUUiBpbiAxNi1iaXQgY29kZS4KCgkqIGRsbHMva2VybmVsL2V4Y2VwdC5jOgoJTWFrZSBzdXJlIHRoYXQgdGhlcmUgaXMgZXh0cmEgaW5mb3JtYXRpb24gaW4gdGhlIGV4Y2VwdGlvbiByZWNvcmQKCWJlZm9yZSBhY2Nlc3NpbmcgaXQgaW4gY2hlY2tfcmVzb3VyY2Vfd3JpdGUuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCVByZWxpbWluYXJ5IGltcGxlbWVudGF0aW9uIG9mIElDcmVhdGVUeXBlSW5mbzJfZm5BZGRGdW5jRGVzYygpIGFuZAoJSUNyZWF0ZVR5cGVJbmZvMl9mblNldEZ1bmNBbmRQYXJhbU5hbWVzKCkuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItbWZjLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1wa2cuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXVzZXIuc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgYSBidW5jaCBvZiBkdW1teSBhbmQvb3Igb2Jzb2xldGUgaW5mbyBmcm9tIHRoZSBXaW5lbGliCglEZXZlbG9wZXJzIEd1aWRlLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBZGQgc3R1YiBmb3IgV1NBU3RyaW5nVG9BZGRyZXNzQS4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOiBHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJRG9uJ3QgZGVwZW5kIG9uIHVzZXIzMi1pbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiBhY2NlbGVyYXRvciB0YWJsZXMuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWxsb3cgVmVyUXVlcnlWYWx1ZVcgdG8gcXVlcnkgMTYtYml0IHJlc291cmNlcy4KCgkqIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIG5vdyByZXBvcnRpbmcgbWVzc2FnZSBvbiBib2d1cyBsaW5lIG51bWJlciBpbiAnYnAgPG51bT4nIGNvbW1hbmRzCgkgICh1c2VmdWwgd2hlbiB1c2VyIHRoaW5rcyA8bnVtPiBpcyBhIGxpbmVhciBhZGRyZXNzKQoJLSBmaXhlZCBib2d1cyByZXR1cm4gdmFsdWUgaW4gREVCVUdfQWRkQnJlYWtwb2ludAoKCSogZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBzeW5jaHJvbml6YXRpb24gaXNzdWUuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6IEFsYXN0YWlyIEJyaWRnZXdhdGVyIDxueWVmQHNvZnRob21lLm5ldD4KCUltcHJvdmVtZW50cyB0byBJQ3JlYXRlVHlwZUluZm8yX2ZuQWRkVmFyRGVzYygpLgoJQSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBlbmNvZGUgVFlQRUlORk8gc3RydWN0dXJlcy4KCjIwMDQtMDEtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvd2lucHJvYy5oLCB3aW5kb3dzL3dpbnByb2MuYzoKCVByb3Blcmx5IHRyYW5zbGF0ZSB0aGUgbWVzc2FnZSByZXN1bHQgZm9yIFdNX0dFVFRFWFQtc3R5bGUgbWVzc2FnZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhcnRzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVqYWNrL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVuYXMvTWFrZWZpbGUuaW46CglBbGwgc291bmQgZHJpdmVycyBuZWVkIC1sZHhndWlkLgoKCSogZGxscy9uZXRhcGkzMi90ZXN0cy9hY2Nlc3MuYywgZGxscy9uZXRhcGkzMi90ZXN0cy9hcGlidWYuYywKCSAgZGxscy9uZXRhcGkzMi90ZXN0cy93a3N0YS5jLCBkbGxzL3NobHdhcGkvdGVzdHMvY2xpc3QuYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL2Nsc2lkLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jLCBkbGxzL3NobHdhcGkvdGVzdHMvc3RyaW5nLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvZm9ybWF0X21zZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogQWxleGV5IFNwaXJpZG9ub3YgPGxlc2hhQG5ldG1hbi5ydT4KCUZpeGVkIHR5cG8gaW4gbWVtc2V0IGNhbGwuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVc2UgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIHdpdGggcHNldWRvIGNvbnNvbGUgaGFuZGxlIG5hbWVzIGluCglPcGVuQ29uc29sZS4KCgkqIGRsbHMvdXNlci9mb2N1cy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTVNETiBpcyB3cm9uZzogV01fTkNBQ1RJVkFURSB0YWtlcyB0aGUgc2FtZSBsUGFyYW0gYXMgV01fQUNUSVZBVEUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglXZSBzaG91bGQgZm9yd2FyZCBXTV9DT01NQU5EIG5vdGlmaWNhdGlvbiB0byB0aGUgYWN0aXZlIHBhZ2UgZm9yIGFueQoJYWRkaXRpb25hbCBub24tc3RhbmRhcmQgY29udHJvbHMgaW4gdGhlIHByb3BlcnR5IHNoZWV0IGZyYW1lLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmM6IEpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUFsbG93IHJlZ2VkaXQgdG8gZWRpdCAoRGVmYXVsdCkga2V5IHZhbHVlcy4KCgkqIGRvY3VtZW50YXRpb24vb3BlbmdsLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgb2Jzb2xldGUgc2VjdGlvbiBhYm91dCB0aHJlYWQtc2FmZXR5LgoJQ2xlYW51cCBzZWN0aW9uIG9uIGNvbmZpZ3VyYXRpb24sIG1lcmdlZCB0aGUgcmVtYWluaW5nIGJpdCBpbnRvIHRoZQoJIktub3duIHByb2JsZW1zIiBzZWN0aW9uLgoJTWlzY2VsbGFuZW91cyBjbGVhbnVwcyBhbmQgc2ltcGxpZmljYXRpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlZm9ybWF0IGFuZCBjbGVhbnVwIHRoZSBzaHJpbmsuYyBmaWxlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uCglmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUgV2luZSBzb3VyY2UuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItcG9ydGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItdXNlci5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBvYnNvbGV0ZSBpbmZvIGFib3V0IHdyYXBwZXJzLCB0aGV5IGFyZSBubyBsb25nZXIgbmVjZXNzYXJ5LgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVwZGF0ZSB0aGUgZGV2ZWxvcGVyIGhpbnRzIHRvIHJlZmxlY3QgdGhlIHV1aWQgbGlicyBtb3ZlLgoJTWFrZSBzdXJlIGFsbCBkaXJlY3RvcmllcyBlbmQgd2l0aCBhIC8sIGZvciBjb25zaXN0ZW5jeS4KCgkqIGluY2x1ZGUvdXh0aGVtZS5oOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZCBtaXNzaW5nIERUQkdfKiBkZWZpbmVzLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy90YWIuYywgZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jLAoJICBkbGxzL21zdmNydC90ZXN0cy9oZWFwLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2luZm8uYzogU2FtaSBBYXJpbyA8c2FtaS5hYXJpb0BzdXJmZXUuZmk+CglGaXggYSBkZWJ1ZyBtZXNzYWdlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliMi5jOiBBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglBIHNtYWxsIG51bWJlciBvZiBjbGVhbnVwcy4KCUEgbmV3IGZ1bmN0aW9uIHRvIGZpbmQgYSBnaXZlbiBOQU1FIGluIGEgdHlwZSBsaWJyYXJ5LgoJU3VwcG9ydCBmb3IgZ3Jvd2luZyBhIHRsYiBzZWdtZW50IHdoZW4gaXQgb3ZlcmZsb3dzLgoJRHVwbGljYXRlIEdVSUQgZWxpbWluYXRpb24uCglHVUlEIGhhc2ggZml4ZXMuCglOQU1FIGhhc2ggZml4ZXMuCglEdXBsaWNhdGUgU1RSSU5HIGVsaW1pbmF0aW9uIGZpeGVzLgoJRHVwbGljYXRlIElNUE9SVCBlbGltaW5hdGlvbiBmaXhlcy4KCVR5cGUgaW5mb3JtYXRpb24gc2F2ZSBvcmRlcmluZyBmaXhlcy4KCVN1cHBvcnQgZm9yIHdyaXRpbmcgb3V0IHRoZSBDVVNUREFUQSBhbmQgQ1VTVERBVEFHVUlEIHNlZ21lbnRzLgoKCSogd2luZG93cy9tZGkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIHRoZSBzYW1lIHByb3RlY3Rpb24gdG8gTURJX0F1Z21lbnRGcmFtZU1lbnUgYXMgb25lIGV4aXN0aW5nIGluCgkgIE1ESV9SZXN0b3JlRnJhbWVNZW51IGFnYWluc3QgcmVwZXRpdGl2ZSBjYWxscy4KCS0gVXNlIFdpbmRvd3MgZGVmYXVsdCBpY29uIGZvciBzeXN0ZW0gbWVudSBiaXRtYXAgaWYgdGhlcmUgaXMgbm8gb25lCgkgIHN1cHBsaWVkIGJ5IGEgY2hpbGQgd2luZG93IGFzIFdpbmRvd3MgZG9lcy4KCS0gVXNlIEdldFN5c3RlbU1lbnUoKSB0byBsb2FkIHN5c3RlbSBtZW51IGZvciBhIGNoaWxkIHdpbmRvdywKCSAgb3RoZXJ3aXNlIHRoZXJlIGlzIG5vIHdheSB0byBnZW5lcmF0ZSBXTV9TWVNDT01NQU5EIG1lbnUgbWVzc2FnZXMuCgktIFJlc3RvcmUgY2hlY2sgaW4gV01fU0laRSBNREkgY2hpbGQgaGFuZGxlciBlcnJvbmVvdXNseSByZW1vdmVkCgkgIGVhcmxpZXIuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQmFjayBvdXQgYW4gdW5pbnRlbnRpb25hbCBjaGFuZ2UgdGhhdCBzbnVjayBpbiB3aXRoIHRoZSBYSU0gY2hhbmdlLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jYXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9kM2Q4L01ha2VmaWxlLmluLAoJICBkbGxzL2QzZDkvTWFrZWZpbGUuaW4sIGRsbHMvZDNkeDgvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGV2ZW51bS9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGlucHV0OC9NYWtlZmlsZS5pbiwgZGxscy9kbWJhbmQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG1jb21wb3MvTWFrZWZpbGUuaW4sIGRsbHMvZG1pbWUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG1sb2FkZXIvTWFrZWZpbGUuaW4sIGRsbHMvZG1zY3JpcHQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG1zdHlsZS9NYWtlZmlsZS5pbiwgZGxscy9kbXN5bnRoL01ha2VmaWxlLmluLAoJICBkbGxzL2RtdXNpYy9NYWtlZmlsZS5pbiwgZGxscy9kbXVzaWMzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9kc3dhdmUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNkbW8vTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL01ha2VmaWxlLmluLAoJICBkbGxzL21zaS9NYWtlZmlsZS5pbiwgZGxscy9tc2lzeXMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLAoJICBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lYWxzYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lYXJ0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lamFjay9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lbmFzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3MvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVmaWxlL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvTWFrZWZpbGUuaW46CglPbmx5IGxpbmsgYWdhaW5zdCBsaWJkeGd1aWQgd2hlcmUgbmVjZXNzYXJ5LgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jLCBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2dkaS9iaWRpLmMsCgkgIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jLCBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsCgkgIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlMzIuYywgZGxscy9uZXRhcGkzMi9uYnQuYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliMi5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBjYWIuYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvdGhyZWFkLmMsCgkgIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgZGxscy93c29jazMyL3NlcnZpY2UuYywgZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3gxMWRydi94cmFuZHIuYywKCSAgd2luZG93cy91c2VyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBtaXNzaW5nICdcbidzIHRvIGRlYnVnIHRyYWNlcy4KCjIwMDQtMDEtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL01ha2VmaWxlLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBkbGxzL2R4Z3VpZC8uY3ZzaWdub3JlLAoJICBkbGxzL2R4Z3VpZC9NYWtlZmlsZS5pbiwgZGxscy9keGd1aWQvZHg4Z3VpZC5jLAoJICBkbGxzL2R4Z3VpZC9keDlndWlkLmMsIGRsbHMvZHhndWlkL2R4Z3VpZC5jLCBkbGxzL21ha2VfZGxscywKCSAgZGxscy91dWlkLy5jdnNpZ25vcmUsIGRsbHMvdXVpZC9NYWtlZmlsZS5pbiwgZGxscy91dWlkL3V1aWQuYywKCSAgbGlicy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW46CglNb3ZlZCBsaWJ1dWlkIHRvIHRoZSBkbGxzIGRpcmVjdG9yeSwgYW5kIG1vdmVkIHRoZSBEaXJlY3RYIEdVSURzIGludG8KCWEgc2VwYXJhdGUgbGliZHhndWlkIGxpYnJhcnkuCgoJKiBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYzogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglFbnN1cmUgTVNTVFlMRVNfU2V0QWN0aXZlVGhlbWUgZmFpbHMgcHJvcGVybHkgd2hlbiB0aGVtZSBpcyBpbnZhbGlkLgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglWaXN1YWwgU3R1ZGlvIDYgdXNlcnMgc2hvdWxkIGdldCB0aGUgcHJvY2Vzc29yIHBhY2suICBOb3RlIHRoaXMgaW4gdGhlCglWaXN1YWwgQysrIHNlY3Rpb24uCgoJKiBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmMsIGRsbHMvcnBjcnQ0L3Rlc3RzL3JwYy5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmMsIGRsbHMva2VybmVsL3Rlc3RzL2FsbG9jLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCVRoZXJlIGlzIG5vIG5lZWQgZm9yIGEgcHJpdmF0ZSBoZWFwIGluIGNvbWN0bDMyLCBtZW1vcnkgYWxsb2NhdGlvbnMKCXNob3VsZCBnbyB0byB0aGUgc3RhbmRhcmQgcHJvY2VzcyBoZWFwIChyZXBvcnRlZCBieSBHZSB2YW4gR2VsZG9ycCkuCgoJKiBjb250cm9scy9lZGl0LmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIHdpbmRvd3MvZGVmd25kLmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jOgoJWW9zaGlybyBUYWtlbm8gPHRhcm8teEBqdXN0c3lzdGVtLmNvLmpwPgoJSW4gV2luZG93cywgdGhlIGxlYWRpbmcgYnl0ZSBmb3IgbXVsdGlieXRlIGNoYXJhY3RlcnMgYXJlIHNldCB0byB1cHBlcgoJYnl0ZS4gSWYgc2luZ2xlIGJ5dGUgY2hhcmFjdGVyIGlzIHVzZWQsIHRoZSB1cHBlciBieXRlIGlzIHNldCB0byAwLgoKCSogd2luZG93cy9tZGkuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUluIHRoZSBXTV9NRElTRVRNRU5VIGhhbmRsZXIgdXNlIGFuIGV4aXN0aW5nIGZyYW1lIG1lbnUgaWYgdGhlIHBhc3NlZAoJdmFsdWUgaXMgMC4KCVZpc2lvIGV4cGVjdHMgdGhhdCBzZXBhcmF0b3IgaW4gdGhlIFdpbmRvdyBtZW51IGhhcyBJRCAwLgoJQ29wZSB3aXRoIGEgZGVzdHJveWVkIG1lbnUgaGFuZGxlIGluIFdNX01ESVJFRlJFU0hNRU5VIGhhbmRsZXIuCgoJKiBkbGxzL2dsdXQzMi9nbHV0LmM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCBnbHV0Q3JlYXRlTWVudVdpdGhFeGl0LCBnbHV0Q3JlYXRlV2luZG93V2l0aEV4aXQgYW5kCglnbHV0SW5pdFdpdGhFeGl0IGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVByZXZlbnQgc2VnZmF1bHQgaWYgbm8gdGhlbWUgaXMgc2V0LgoKCSogZGxscy91c2VyL3dzcHJpbnRmLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTbWFsbCBmaXggZm9yIHRoZSBXUFJfU0lHTkVEIGNhc2UgKGNvdW50IHRoZSBzaWduKS4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmM6CglHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVdpbmUgYWxzbyBzdXBwb3J0cyB0aGUgbmNhY25fbnAgcHJvdG9jb2wgc2VxdWVuY2UuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gZG9uJ3QgbGluayBkaXJlY3RseSB0byBOVERMTDsgdXNlIE11bHRpQnl0ZVRvV2lkZUNoYXIoKSBpbnN0ZWFkIG9mCgkgIFJ0bENyZWF0ZVVuaWNvZGVTdHJpbmdGcm9tQXNjaWl6KCkKCS0gZGlyZWN0bHkgY2FsbCBJbml0Q29tbW9uQ29udHJvbHNFeCgpCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIGRlZmluZSBhZGRpdGlvbmFsIHNoZWxsIHBhdGhzIGZvciBDU0lETF8uLi4gY29uc3RhbnRzCgktIHJlbW92ZSBzb21lIHN1cGVyZmx1b3VzIGNvbW1hcwoKMjAwNC0wMS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pZnMuaCwgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL29sZTIuc3BlYywgZGxscy9vbGUzMi9vbGUyXzE2LmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuaCwgZGxscy9vbGVjbGkvb2xlY2xpMTYuYywKCSAgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYywKCSAgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS93dHlwZXMuaCwKCSAgaW5jbHVkZS93dHlwZXMuaWRsLCB3aW5kb3dzL3NweS5jOgoJTW92ZWQgYSBmZXcgcmVtYWluaW5nIDE2LWJpdCBkZWZpbml0aW9ucyBvdXQgb2YgdGhlIHN0YW5kYXJkIGhlYWRlcnMuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS91cmwuYywKCSAgaW5jbHVkZS9zaGx3YXBpLmg6CglHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJRml4IHZhcmlvdXMgZnVuY3Rpb24gcHJvdG90eXBlcyB0byBjb25mb3JtIHRvIFBTREsuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoJRml4IGEgY291cGxlIG9mIHNwZWxsaW5nIGVycm9ycy4KCgkqIGRsbHMvZG11c2ljL2RtdXNpYy5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlMi5oOgoJR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCUZpeCB2YXJpb3VzIGZ1bmN0aW9uIHByb3RvdHlwZXMgdG8gY29uZm9ybSB0byBQU0RLLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZHJpdmUuYywgZGxscy9rZXJuZWwvdGVzdHMvZW52aXJvbi5jLAoJICBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywgZGxscy91c2VyL3Rlc3RzL2xpc3Rib3guYywKCSAgZGxscy91c2VyL3Rlc3RzL3Jlc291cmNlLmMsIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywKCSAgZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL3VzZXIvdGVzdHMvd3NwcmludGYuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jLCBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbDoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJd2luZWhxLmNvbSAtPiB3aW5laHEub3JnCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Dbi5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRGUucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX0VuLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fcy5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfRnIucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX0l0LnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9KYS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfS28ucmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsX05sLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9QbC5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfUHQucmMsIGRsbHMvY29tY3RsMzIvY29tY3RsX1J1LnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9TaS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfVGgucmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVGhlIHRhYiBjb250cm9sIHNob3VsZCBiZSBtdWx0aWxpbmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCURpc2NhcmQgbW91c2UgYnV0dG9uIHVwIGV2ZW50cyBpZiBubyBidXR0b24gaXMgY3VycmVudGx5IHByZXNzZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gSVNGX0Rlc2t0b3BfZm5HZXRVSU9iamVjdE9mKCk6IGFsbG93IGNvbnRleHQgbWVudSBvbiB0aGUgZGVza3RvcAoJICB3aXRob3V0IGFueSBzZWxlY3RlZCBpdGVtOyBwcmVzZXJ2ZSByZXR1cm4gZXJyb3IgY29kZXMuCgktIElTRl9EZXNrdG9wX2ZuR2V0RGlzcGxheU5hbWVPZigpOiBkb24ndCBpbml0aWFsaXplIHdob2xlIGNoYXJhY3RlcgoJICBhcnJheSB3aXRoIHplcm8uCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIElTaGVsbEZvbGRlcl9mblBhcnNlRGlzcGxheU5hbWUoKTogcmV0dXJuIEVfSU5WQUxJREFSRyBpbnN0ZWFkIG9mCgkgIEVfT1VUT0ZNRU1PUlkuCgktIElTaGVsbEZvbGRlcl9mbkdldFVJT2JqZWN0T2YoKTogcHJlc2VydmUgcmV0dXJuIGVycm9yIGNvZGVzLgoJLSBJU2hlbGxGb2xkZXJfZm5HZXREaXNwbGF5TmFtZU9mKCk6IGRvbid0IGluaXRpYWxpemUgd2hvbGUgY2hhcmFjdGVyCgkgIGFycmF5IHdpdGggemVyby4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUltcHJvdmVkIGVycm9yIGhhbmRsaW5nLgoJU0hFTEwzMl9HZXRJdGVtQXR0cmlidXRlcygpOiBzdXBwb3J0IGZvciBTRkdBT19MSU5LIGF0dHJpYnV0ZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zdmlkYzMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2aWRjMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRjMzIvbXN2aWRjMzIuc3BlYywKCSAgZGxscy9tc3ZpZGMzMi9tc3ZpZGVvMS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWVyZ2VkIGZmbXBlZydzIE1TIFZpZGVvIDEgZGVjb2RlciBieSBNaWtlIE1lbGFuc29uLgoKCSogZGxscy91eHRoZW1lL2RyYXcuYywgZGxscy91eHRoZW1lL21ldHJpYy5jLCBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywKCSAgZGxscy91eHRoZW1lL21zc3R5bGVzLmgsIGRsbHMvdXh0aGVtZS9wcm9wZXJ0eS5jLAoJICBkbGxzL3V4dGhlbWUvc3R5bGVtYXAuYywgZGxscy91eHRoZW1lL3N5c3RlbS5jLCBkbGxzL3V4dGhlbWUvdXhpbmkuYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJTG9hZCBwcm9wZXJ0aWVzIGZyb20gdGhlIHRoZW1lIGluaS4KCUltcGxlbWVudGVkIG1vc3Qgb2YgdGhlIEdldFRoZW1lKiBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSVNGX015Q29tcHV0ZXJfZm5HZXREaXNwbGF5TmFtZU9mKCk6IHJldHVybiBDTFNJRCBwYXRocyBvZiB2aXJ0dWFsCglmb2xkZXJzIHJvb3RlZCB1bmRlciAiTXkgQ29tcHV0ZXIiIGZvbGRlciwgYmV0dGVyIGVycm9yIGhhbmRsaW5nLgoKCSogZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglSZXR1cm4gJ015IENvbXB1ZXInIFBJREwgd2hlbiBjYWxsaW5nIERlc2t0b3AtPlBhcnNlRGlzcGxheU5hbWUoKSB3aXRoCgllbXB0eSBwYXRoIHN0cmluZy4KCgkqIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCUdlbmVyYXRlIGFsbCBiaW5hcnkgcmVzb3VyY2VzIHVzaW5nIGJpbjJyZXMuCgoJKiBkbGxzL3dpbmVwcy9wcy5jOiBCbGFrZSBMZXZlcmV0dCA8YmxldmVyZXR0QGF0dC5uZXQ+CglQcmludGluZyBhIGRhc2hlZCBsaW5lIGNhdXNlcyBhbGwgbGF0ZXIgc29saWQgbGluZXMgaW4gcG9zdHNjcmlwdAoJb3V0cHV0IHRvIGJlIGRhc2hlZC4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvdXJsbW9uL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvd2luaW5ldC90ZXN0cy9nZW5lcmF0ZWQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCglDaGVjayB3aGV0aGVyIF9NU0NfVkVSIGlzIGRlZmluZWQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLmMsIGRsbHMva2VybmVsL3Rlc3RzL2NvZGVwYWdlLmMsCgkgIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmMsIGRsbHMvd2luc3Bvb2wvdGVzdHMvaW5mby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmMsIGRsbHMva2VybmVsL2NwdS5jLAoJICBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMva2VybmVsL3N5c3RlbS5jLCBkbGxzL2tlcm5lbC90aW1lLmMsCgkgIGRsbHMva2VybmVsL3ZpcnR1YWwuYywgZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywKCSAgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9naXQuYywKCSAgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMxNi5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFydHlwZS5jLCBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsCgkgIGRsbHMvdXJsbW9uL3Vtb24uYywgZGxscy93aW5lZG9zL2ludDJmLmMsIGRsbHMvd2luZWRvcy92Z2EuYywKCSAgZGxscy93aW5lZG9zL3Z4ZC5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS93aW5udC5oLCBtaXNjL3JlZ2lzdHJ5LmMsCgkgIHByb2dyYW1zL3JwY3NzL3JwY3NzX21haW4uYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYzoKCUdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CglSZW5hbWUgTEFSR0VfSU5URUdFUiBhbmQgVUxBUkdFX0lOVEVHRVIgbWVtYmVycyAicyIgdG8gInUiIHRvIGNvbmZvcm0KCXdpdGggUFNESy4KCgkqIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglJbXByb3ZlZCBSUE0gaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLCBkbGxzL3dpbmVwcy93cHNfSXQucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRXMucmMsIHByb2dyYW1zL3JlZ2VkaXQvRnIucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvSXQucmMsIHByb2dyYW1zL3JlZ2VkaXQvTmwucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUnUucmMsIHByb2dyYW1zL3JlZ2VkaXQvU2kucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVJlc291cmNlIHVwZGF0ZXMuCgoyMDA0LTAxLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDQwMTIxLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDA0LTAxLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLAoJICBpbmNsdWRlL3NobG9iai5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbXBsZW1lbnQgUGF0aEdldFNob3J0UGF0aEEvVyBhbmQgY2hhbmdlIGl0cyBwcm90b3R5cGUgdG8gbWF0Y2ggdGhlCglkb2N1bWVudGF0aW9uIG9uIE1TRE4uCgoJKiBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglPbmx5IHJldHVybiB2YWxpZCBmaWxlIHN5c3RlbSBuYW1lcyBmcm9tIFJlbmRlckZJTEVOQU1FQS9XKCkgYnkgdXNpbmcKCVNIRUxMX0dldFBhdGhGcm9tSURMaXN0QS9XKCkuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CglSZWltcGxlbWVudGF0aW9uIG9mIFNIR2V0UGF0aEZyb21JRExpc3RBL1coKSB1c2luZyB0aGUgbmV3IGhlbHBlcgoJZnVuY3Rpb25zIFNIRUxMX0dldFBhdGhGcm9tSURMaXN0QS9XKCkuIFRoZSBuZXcgaW1wbGVtZW50YXRpb24gYXZvaWRzCgl1c2luZyBJU2hlbGxGb2xkZXI6OkdldERpc3BsYXlOYW1lT2YoKSwgc28gdGhhdCBpdAoJLSByZXR1cm5zIHRoZSBhYnNvbHV0ZSBmaWxlIHN5c3RlbSBwYXRoLCBub3QgcmVsYXRpdmUgdG8gdGhlIGRla3N0b3AKCS0gcmV0dXJucyBGQUxTRSBhcyBlcnJvciBjb2RlIGlmIHRoZSBwYXRoIGNhbiBub3QgY29udmVydGVkIGluIGEgdmFsaWQKCSAgZmlsZSBzeXN0ZW0gcGF0aAoJLSBkb2Vzbid0IHJldHVybiB2aXJ0dWFsIENMU0lEIHBhdGhzCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIyLmM6CglBbGFzdGFpciBCcmlkZ2V3YXRlciA8bnllZkBzb2Z0aG9tZS5uZXQ+CglJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIENyZWF0ZVR5cGVMaWIyKCkgYW5kIHRoZSBJQ3JlYXRlVHlwZUxpYjIgYW5kCglJQ3JlYXRlVHlwZUluZm8yIGludGVyZmFjZXMuCgoJKiB3aW5kb3dzL3NweS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGNvcnJlY3QgdHJlZXZpZXcgc3RydWN0cyB0byBtZXNzYWdlIHNweS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgdGhlIHNlbGVjdGlvbiB0byB0aGUgcHJldmlvdXMgc2libGluZyBpZiBpdCBjYW4ndCBnbyB0byB0aGUgbmV4dAoJb3IgdGhlIHBhcmVudC4KCUZpeCB0aGUgc2VsZWN0aW9uIGNoYW5nZSBsb2dpYy4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJVXNlIGZ1bGwgcGF0aHMgaW5zdGVhZCBvZiBvbmx5IGZpbGVuYW1lcyBpbiBpY29uIGNhY2hlIHRvIGRpc3Rpbmd1aXNoCgliZXR3ZWVuIGRpZmZlcmVudCBmaWxlcyB3aXRoIHRoZSBzYW1lIG5hbWUuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50ZWQgU0hHZXRSZWFsSURMKCkuCgoJKiBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi9rZXlib2FyZC5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94aW0uYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglVc2UgWDExIFhJTSBjYWxsYmFja3MgdG8gZW5hYmxlIGZ1bGwgSU1FIHN1cHBvcnQuCglDb3JyZWN0IHNvbWUgdGltaW5nIGlzc3VlcyB3aXRoIFhJTSBpbnB1dC4KCVN0YXJ0IHRvIHByb3ZpZGUgdGhlIGZyYW1ld29yayBmb3IgdGhlIE1TSU1FIG1lc3NhZ2VzLgoKCSogcHJvZ3JhbXMvcnVuZGxsMzIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmM6CglEb24ndCBsaW5rIGRpcmVjdGx5IHRvIDE2LWJpdCBBUElzIGZvciBwb3J0YWJpbGl0eSByZWFzb25zIChiYXNlZCBvbiBhCglwYXRjaCBieSBTdGV2ZW4gRWR3YXJkcykuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIFJEV19VcGRhdGVSZ24oKSwgaWYgaFJnbiBpcyB6ZXJvLCBjbGVhciB0aGUgd2luZG93cyB1cGRhdGUgcmVnaW9uCglpZiBpdCBpcyBhbiBlbXB0eSByZWdpb24uCgoyMDA0LTAxLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlbW92ZSB0ZXN0cyB0aGF0IGFyZSBjb3ZlcmVkIGJ5IHZhcnR5cGUuYy4KCUNhbGwgYnkgcG9pbnRlciBmb3IgbW9yZSBmdW5jdGlvbnMgbm90IGF2YWlsYWJsZSBpbiBlYXJseSB2ZXJzaW9ucy4KCUFkZCB0ZXN0cyBmb3IgVmFyRml4L1ZhckludC9WYXJOZWcsIFZhckZvcm1hdCAib24vb2ZmL3llcy9ubyIuCglGaXggdGVzdHMgdGhhdCBhc3N1bWVkIHJlbGF0aXZlIGRhdGVzLgoJTWFrZSBCU1RSIGNvcHkgdGVzdCBzZXBhcmF0ZS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIFNIR2V0RGF0YUZyb21JRExpc3RBL1coKTogaGFuZGxlIGRyaXZlcyB3aGVuIHJldHJpZXZpbmcgZmlsZQoJICBhdHRyaWJ1dGVzCgktIGZpeGVkIGVycm9yIGhhbmRsaW5nIHRvIGF2b2lkIEdQRnMKCgkqIHRvb2xzL3dpbmFwaS9jX3R5cGUucG06IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRml4ZWQgbWlzdXNlIG9mIHNjYWxhciByZWZlcmVuY2UgdmFyaWFibGUuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBpbmNsdWRlL3JwY2RjZS5oOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJSW1wbGVtZW50ZWQgUnBjSXNQcm90U2VxVmFsaWQuCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL29wZW5nbDMyL3dnbC5oLCBkbGxzL3R0eWRydi9iaXRtYXAuYywKCSAgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLCBkbGxzL3R0eWRydi91c2VyLmMsCgkgIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3dpbmVwcy9kb3dubG9hZC5jLCBkbGxzL3dpbmVwcy9wZW4uYywKCSAgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2NsaXBwaW5nLmMsIGRsbHMveDExZHJ2L2luaXQuYywKCSAgZGxscy94MTFkcnYvb3BlbmdsLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi93aW50YWIuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LmgsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L3gxMWZvbnQuaCwgZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBpbmNsdXNpb25zIG9mIGdkaS5oLgoKCSogZGxscy9nZGkvbWZkcnYvdGV4dC5jLCBkbGxzL2tlcm5lbC9sb2NhbGUuYywgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwKCSAgbGlicy91bmljb2RlL01ha2VmaWxlLmluLCBsaWJzL3VuaWNvZGUvY18wNDIuYywKCSAgbGlicy91bmljb2RlL2NwbWFwLnBsLCBsaWJzL3VuaWNvZGUvY3B0YWJsZS5jLCBsaWJzL3VuaWNvZGUvbWJ0b3djLmMsCgkgIGxpYnMvdW5pY29kZS93Y3RvbWIuYywgbGlicy91bmljb2RlL3dpbmVfdW5pY29kZS5kZWYsIG9iamVjdHMvZm9udC5jLAoJICBvYmplY3RzL3RleHQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBNdWx0aUJ5dGVUb1dpZGVDaGFyIGFuZCBXaWRlQ2hhclRvTXVsdGlCeXRlIHdoZW4gY2FsbGVkIHdpdGggY29kZQoJcGFnZSBDUF9TWU1CT0wuCglSZW1vdmUgdGhlIHN5bWJvbCBmb250IGZyb20gdGhlIGNvZGUgcGFnZSB0YWJsZSwgc28gaXQgaXMgbm90IHJlcG9ydGVkCglhcyBhIHZhbGlkL3N1cHBvcnRlZC9pbnN0YWxsZWQgY29kZSBwYWdlLgoJUmVtb3ZlIHdvcmthcm91bmRzIGZvciB0aGUgYmFkbHkgYmVoYXZlZCBNdWx0aUJ5dGVUb1dpZGVDaGFyIGFuZCBjby4KCWluIGEgZmV3IHBsYWNlcy4KCgkqIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy91eHRoZW1lL3V4dGhlbWUuc3BlYywKCSAgbGlicy93aW5lL3dpbmUuZGVmOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgcHJvYmxlbXMgZm91bmQgd2hpbGUgY29tcGlsaW5nIGFuZCBsaW5raW5nIFdpbmUgdW5kZXIKCUN5Z3dpbi4KCgkqIGRsbHMvbXN2aWRlby9tY2l3bmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgTUNJV25kIHBsYXkgYSBiaXQgYmV0dGVyIGFzIGFuIE1ESSBjaGlsZC4KCgkqIGRsbHMvd2luZXBzL2J1aWx0aW4uYywgZGxscy93aW5lcHMvcHMuYywgZGxscy94MTFkcnYvYml0Ymx0LmMsCgkgIGRsbHMveDExZHJ2L2RpYi5jLCBkbGxzL3gxMWRydi9ncmFwaGljcy5jLCBkbGxzL3gxMWRydi9wYWxldHRlLmMsCgkgIGRsbHMveDExZHJ2L3RleHQuYywgZGxscy94MTFkcnYveGZvbnQuYywgZGxscy94MTFkcnYveHJlbmRlci5jOgoJR2V0IHJpZCBvZiBzb21lIGRpcmVjdCBhY2Nlc3NlcyB0byB0aGUgREMgc3RydWN0dXJlIGZyb20gb3V0c2lkZSBHREkuCgoJKiBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmMsIGRsbHMvbXNhY20vbXNhY21kcnYuaCwKCSAgZGxscy9tc2FjbS9tc2FkcDMyL21zYWRwMzIuYywgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmMsCgkgIGRsbHMvbXNhY20vd2luZW1wMy9tcGVnbDMuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc2FjbWRydi5oOgoJTW92ZWQgbXNhY21kcnYuaCB0byBpbmNsdWRlIGRpcmVjdG9yeSB0byBhdm9pZCBpbnRlci1kbGwgaGVhZGVyCglkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL3NldHVwYXBpL2Rldmluc3QxNi5jLCBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJU3R1YiBmb3IgRGlCdWlsZENsYXNzRHJ2TGlzdCgpLgoKCSogZGxscy9rZXJuZWwvcHJvY2Vzcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgZHVwbGljYXRlICc9QzonIGVudHJpZXMgaW4gdGhlIGNoaWxkIHByb2Nlc3MgZW52aXJvbm1lbnQuCgoJKiBkbGxzL2ljY3ZpZC9pY2N2aWQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IElDTV9ERUNPTVBSRVNTRVgsIGZpeCBzb21lIGJ1Z3MuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5pdDogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglVcGRhdGVkLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUdlbmVyYXRlIG9rKCIuLi5cbiIpIGNhbGxzLgoKCSogZGxscy9kc291bmQvdGVzdHMvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYywKCSAgZGxscy9kZHJhdy90ZXN0cy9kZHJhd21vZGVzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCB0cmFpbGluZyAnXG4ncyB0byBvaygpIGNhbGxzLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNZXJnZSB0aGUgTURJIGFuZCBjb21tb24gd2luZG93IGNyZWF0aW9uIGNvZGUuIENoYW5nZSB0aGUgd2F5IE1ESQoJY2hpbGRyZW4gYXJlIG1hbmFnZWQgaW4gTURJQ2xpZW50LgoJQWRkIHN1cHBvcnQgZm9yIE1ESUNSRUFURVNUUlVDVCBBPC0+VyBjb252ZXJzaW9ucy4KCUFkZCBzdXBwb3J0IGZvciBXTV9NRElSRUZSRVNITUVOVS4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIGNyZWF0ZV9wcm9jZXNzKCkuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0ZyLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjLCBwcm9ncmFtcy9yZWdlZGl0L05sLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L1J1LnJjLCBwcm9ncmFtcy9yZWdlZGl0L1NpLnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglZZXQgYWdhaW4gY2F0Y2hpbmcgdXAgd2l0aCBFbi5yYy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjZmcvYXVkaW8uYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUFkZCBhdWRpbyB0YWIgd2l0aCBmaXJzdCBwYXNzIGF0IGF1dG9kZXRlY3Rpb24gb2YgYXVkaW8gZHJpdmVyLgoJRG91YmxlIGNsaWNraW5nIGEgZHJpdmUgZW50cnkgYnJpbmdzIHVwIGRyaXZlIGVkaXQgd2luZG93LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBub3RpZnkgYW5kIHByb3BlcnR5IHNldCB0byBkc291bmQgb3V0cHV0IGRyaXZlci4KCUNsZWFuZWQgdXAgZXhpc3Rpbmcgbm90aWZ5IGFuZCBwcm9wZXJ0eSBzZXQgZm9yIGNhcHR1cmUuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIHRocmVhZCBoYW5kbGUgbGVha3MuCgoJKiBkbGxzL2tlcm5lbC9wYXRoLmMsIGRsbHMvbnRkbGwvcGF0aC5jLCBmaWxlcy9kb3NfZnMuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBSdGxHZXRGdWxsUGF0aE5hbWVfVTogcmV3cml0dGVuIHNvIHRoYXQgdGhlIHNvdXJjZSAmIGRlc3RpbmF0aW9uCgkgIGJ1ZmZlciBjYW4gYmUgdGhlIHNhbWUKCS0gR2V0RnVsbFBhdGhOYW1lW0FXXTogbm93IGNhbGwgUnRsR2V0RnVsbFBhdGhOYW1lX1UKCS0gR2V0U2hvcnRQYXRoTmFtZVc6IGZpeGVkIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiBsYXN0IHBhdGNoCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIGZpeCB0eXBvcyBpbiBzaGVsbGxpbmsuYyBoZWFkZXIgY29tbWVudCBhbmQgYSBzdHJ1Y3QgY29tbWVudAoJLSBjb3JyZWN0ZWQgU0NGX1VOSUNPREUgY29uc3RhbnQgYW5kIHVzZSB0aGUgdmFsdWUgb2YgU0NGX1VOQyBpbnN0ZWFkCgktIGltcGxlbWVudGVkIElTaGVsbExpbmtfQ29uc3RydWN0RnJvbUZpbGUoKSB0byByZWFkIHNoZWxsIGxpbmtzIGZyb20KCSAgZmlsZXMKCS0gY2FsbCBJU2hlbGxMaW5rX0NvbnN0cnVjdEZyb21GaWxlKCkgaW4gSVNGXy4uLl9mbkdldFVJT2JqZWN0T2YoKQoJICB3aGVuIGJlaW5nIHF1ZXJpZWQgZm9yIElTaGVsbExpbmsgaW50ZXJmYWNlCgoJKiBwcm9ncmFtcy9yZWdlZGl0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPGluZm9AdzNzZWVrLmRlPgoJUmVnZWRpdCBHVUkgZW5oYW5jZW1lbnRzIHdpdGggbmV3IFdpbmRvd3MtbGlrZSBpY29ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGZsZHIuaDogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gZml4IHR5cG8KCS0gcmV0dXJuIHN0cmluZyBsZW5ndGggZnJvbSBTSEVMTDMyX0dVSURUb1N0cmluZ0EoKQoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4ZWQgRE9TIEVYRSBsb2FkZXIgZm9yIHRoZSBjYXNlIHdoZXJlIHdlIHJlYWx5IGhhdmUgb25seSA0IGJ5dGVzIG9uCgl0aGUgbGFzdCBwYWdlIG9mIHRoZSBleGUuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVlldCBhbm90aGVyIHVwZGF0ZS4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbDogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglSZW1vdmUgb2Jzb2xldGUgaW5mb3JtYXRpb24gYWJvdXQgd2luMy4xIGRyaXZlcnMuCgoJKiBsb2FkZXIvbWFpbi5jOgoJRGlzYWJsZSB0aGUgZXhlYyBzaGllbGQgd29ya2Fyb3VuZCBmb3Igbm93LCBpdCdzIGNhdXNpbmcgdG9vIG11Y2gKCXRyb3VibGUuCgoJKiBpbmNsdWRlL3BzaHBhY2s4Lmg6IFJlbW92ZWQgdXNlbGVzcyB3YXJuaW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZG1iYW5kL2JhbmQuYywKCSAgZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsIGRsbHMvZG1iYW5kL3JlZ3N2ci5jLAoJICBkbGxzL2RtYmFuZC92ZXJzaW9uLnJjLCBkbGxzL2RtY29tcG9zL2Nob3JkbWFwLmMsCgkgIGRsbHMvZG1jb21wb3MvY2hvcmRtYXB0cmFjay5jLCBkbGxzL2RtY29tcG9zL2NvbXBvc2VyLmMsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfbWFpbi5jLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zX3ByaXZhdGUuaCwKCSAgZGxscy9kbWNvbXBvcy9yZWdzdnIuYywgZGxscy9kbWNvbXBvcy9zaWducG9zdHRyYWNrLmMsCgkgIGRsbHMvZG1jb21wb3MvdmVyc2lvbi5yYywgZGxscy9kbWltZS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9kbWltZV9tYWluLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL2dyYXBoLmMsCgkgIGRsbHMvZG1pbWUvbHlyaWNzdHJhY2suYywgZGxscy9kbWltZS9tYXJrZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3BhcmFtY29udHJvbHRyYWNrLmMsIGRsbHMvZG1pbWUvcGF0dGVybnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9kbWltZS9yZWdzdnIuYywgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1pbWUvc2VnbWVudHN0YXRlLmMsIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvc2VxdHJhY2suYywgZGxscy9kbWltZS9zb25nLmMsIGRsbHMvZG1pbWUvc3lzZXh0cmFjay5jLAoJICBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYywgZGxscy9kbWltZS90aW1lc2lndHJhY2suYywKCSAgZGxscy9kbWltZS90b29sLmMsIGRsbHMvZG1pbWUvdmVyc2lvbi5yYywgZGxscy9kbWltZS93YXZldHJhY2suYywKCSAgd2luZWRlZmF1bHQucmVnLCBkbGxzL2RtbG9hZGVyL2NvbnRhaW5lci5jLAoJICBkbGxzL2RtbG9hZGVyL2RtbG9hZGVyX21haW4uYywgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmMsCgkgIGRsbHMvZG1sb2FkZXIvcmVnc3ZyLmMsIGRsbHMvZG1sb2FkZXIvdmVyc2lvbi5yYywKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9tYWluLmMsIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc2NyaXB0L3JlZ3N2ci5jLCBkbGxzL2Rtc2NyaXB0L3NjcmlwdC5jLAoJICBkbGxzL2Rtc2NyaXB0L3NjcmlwdHRyYWNrLmMsIGRsbHMvZG1zY3JpcHQvdmVyc2lvbi5yYywKCSAgZGxscy9kbXN0eWxlL01ha2VmaWxlLmluLCBkbGxzL2Rtc3R5bGUvYXVkaXRpb250cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvY2hvcmR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvY29tbWFuZHRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3R5bGUvbWVsb2R5Zm9ybXVsYXRpb250cmFjay5jLCBkbGxzL2Rtc3R5bGUvbW90aWZ0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvbXV0ZXRyYWNrLmMsIGRsbHMvZG1zdHlsZS9yZWdzdnIuYywKCSAgZGxscy9kbXN0eWxlL3N0eWxlLmMsIGRsbHMvZG1zdHlsZS9zdHlsZXRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS92ZXJzaW9uLnJjLCBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX3ByaXZhdGUuaCwgZGxscy9kbXN5bnRoL3JlZ3N2ci5jLAoJICBkbGxzL2Rtc3ludGgvc3ludGguYywgZGxscy9kbXN5bnRoL3N5bnRoc2luay5jLAoJICBkbGxzL2Rtc3ludGgvdmVyc2lvbi5yYywgZGxscy9kbXVzaWMvYnVmZmVyLmMsIGRsbHMvZG11c2ljL2Nsb2NrLmMsCgkgIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywgZGxscy9kbXVzaWMvZG11c2ljLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsCgkgIGRsbHMvZG11c2ljL2Rvd25sb2FkLmMsIGRsbHMvZG11c2ljL2Rvd25sb2FkZWRpbnN0cnVtZW50LmMsCgkgIGRsbHMvZG11c2ljL2hlbHBlci5jLCBkbGxzL2RtdXNpYy9pbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL3BvcnQuYywKCSAgZGxscy9kbXVzaWMvcG9ydGRvd25sb2FkLmMsIGRsbHMvZG11c2ljL3JlZ3N2ci5jLCBkbGxzL2RtdXNpYy90aHJ1LmMsCgkgIGRsbHMvZG11c2ljL3ZlcnNpb24ucmMsIGRsbHMvZG11c2ljMzIvZG11c2ljMzJfbWFpbi5jLAoJICBkbGxzL2RtdXNpYzMyL3ZlcnNpb24ucmMsIGRsbHMvZHN3YXZlLy5jdnNpZ25vcmUsCgkgIGRsbHMvZHN3YXZlL01ha2VmaWxlLmluLCBkbGxzL2Rzd2F2ZS9kc3dhdmUuYywKCSAgZGxscy9kc3dhdmUvZHN3YXZlLnNwZWMsIGRsbHMvZHN3YXZlL2Rzd2F2ZV9tYWluLmMsCgkgIGRsbHMvZHN3YXZlL2Rzd2F2ZV9wcml2YXRlLmgsIGRsbHMvZHN3YXZlL3JlZ3N2ci5jLAoJICBkbGxzL2Rzd2F2ZS92ZXJzaW9uLnJjLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2RsczEuaCwKCSAgaW5jbHVkZS9kbHMyLmgsIGluY2x1ZGUvZG1kbHMuaCwgaW5jbHVkZS9kbWVycm9yLmgsCgkgIGluY2x1ZGUvZG1wbHVnaW4uaCwgaW5jbHVkZS9kbXVzYnVmZi5oLCBpbmNsdWRlL2RtdXNpY2MuaCwKCSAgaW5jbHVkZS9kbXVzaWNmLmgsIGluY2x1ZGUvZG11c2ljaS5oLCBpbmNsdWRlL2RtdXNpY3MuaCwKCSAgbGlicy91dWlkL2R4Z3VpZC5jOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CgktIHVwZGF0ZWQgcmVzb3VyY2VzIHRvIERYOQoJLSBjb21wbGV0ZWx5IHJld3JpdHRlbiBoZWFkZXJzIChEWDkgY29tcGF0LjsgbG9vayBtdWNoIG5pY2VyIG5vdyA7PSkKCS0gcmVtb3ZlZCBJRGlyZWN0TXVzaWNTb25nIGFuZCBJRGlyZWN0TXVzaWNNZWxvZHlGb3JtdWxhdGlvblRyYWNrCgkgICh3aGljaCBhcmUgcmVtb3ZlZCBmcm9tIERYOTsgd2VyZW4ndCBpbXBsZW1lbnRlZCBpbiBEWDggYW55d2F5KQoJLSBjb21iaW5lZC9zaW1wbGlmaWVkIElEaXJlY3RNdXNpY1NvbWV0aGluZyAvIElEaXJlY3RNdXNpY09iamVjdCAvCgkgIElQZXJzaXN0U3RyZWFtIGZvciBvYmplY3RzIHRoYXQgc3VwcG9ydCBsb2FkaW5nCgktIGltcGxlbWVudGVkIElEaXJlY3RNdXNpY09iamVjdCBvbiBhbGwgc3VjaCBvYmplY3RzOyB2aWEgZ2VuZXJpYwoJICBmdW5jdGlvbnMKCS0gY29tYmluZWQgSURpcmVjdE11c2ljVHJhY2soOCkvSVBlcnNpc3RTdHJlYW0gb24gYWxsIHRyYWNrcwoJLSBmdWxseSBpbXBsZW1lbnRlZCBJRGlyZWN0TXVzaWNDb250YWluZXIgKGF0IGxlYXN0IDkwJSBpZiB0aGVyZSBhcmUKCSAgbm8gcHJpdmF0ZSBpbnRlcmZhY2VzKQoJLSBpbXBsZW1lbnRlZCBJRGlyZWN0TXVzaWNDb2xsZWN0aW9uICg5OSUgd29yayAmIE1TIGNvbXBsaWFudAoJICBiZWhhdmlvdXI7IGV4Y2VwdCBmb3IgaW5zdHJ1bWVudHMpCgktIHRyaWVkIHRvIGltcGxlbWVudCBJRGlyZWN0TXVzaWNJbnN0cnVtZW50ICh1bmZvcnR1bmF0ZWx5IHVzZXMgc29tZQoJICBkaXJ0eSBwcml2YXRlIGludGVyZmFjZXMuLi4gOigKCS0gYWRkZWQgZHN3YXZlLmRsbDsgRGlyZWN0TXVzaWMgV2F2ZQoJLSBzb21lIGNoYW5nZXMgaW4gc3R5bGUKCS0gbWFueSwgbWFueSBtb3JlIDspCgoyMDA0LTAxLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZmxkci5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gbW92ZSBJU2hlbGxGb2xkZXJfZm5HZXREaXNwbGF5TmFtZU9mKCkgY29udGVudHMgaW50byBhIG5ldyBmdW5jdGlvbgoJICBTSEVMTF9GU19Qcm9jZXNzRGlzcGxheUZpbGVuYW1lKCkgdG8gY2FsbCBpdCBhbHNvIGluCgkgIElTRl9EZXNrdG9wX2ZuR2V0RGlzcGxheU5hbWVPZigpIGFuZCBkbyB0aGUgc2FtZSBmaWxlIHN5c3RlbQoJICBwcm9jZXNzaW5nIGZvciB0aGUgZGVza3RvcCBsZXZlbAoJLSBoYW5kbGUgaGlkZGVuIGZpbGUgZXh0ZW5zaW9ucyBpbiBTSEVMTF9GU19Qcm9jZXNzRGlzcGxheUZpbGVuYW1lKCksCgkgIHRoYXQgYXJlIGNvbmZpZ3VyZWQgYnkgIk5ldmVyU2hvd0V4dCIgaW4gdGhlIHJlZ2lzdHJ5CgoJKiBkbGxzL29sZTMyL2lmcy5jOiBHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJU3dhcCBhcmd1bWVudHMgb2YgTG9jYWxBbGxvYyBhbmQgb25seSB1cGRhdGUgTWFsbG9jMzIgYmxvY2sgb24KCXN1Y2Nlc3NmdWwgYWxsb2NhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vYnVncy5zZ21sOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIGEgbGluayB0byB0aGUgTWljcm9zb2Z0IGRvd25sb2FkIHBhZ2Ugb2YgdGhlIFZpc3VhbCBCYXNpYwoJcnVudGltZSBlbnZpcm9ubWVudC4KCgkqIGRsbHMvbnRkbGwvc2VydmVyLmM6IEZpeGVkIGFuIGVycm9yIG1lc3NhZ2UuCgoJKiBkbGxzL3V4dGhlbWUvbXNzdHlsZXMuYywgZGxscy91eHRoZW1lL21zc3R5bGVzLmgsCgkgIGRsbHMvdXh0aGVtZS9zdHlsZW1hcC5jLCBkbGxzL3V4dGhlbWUvc3lzdGVtLmMsIGRsbHMvdXh0aGVtZS91eGluaS5jLAoJICBkbGxzL3V4dGhlbWUvdXh0aGVtZS5zcGVjOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglGdWxsIGltcGxlbWVudGF0aW9uIG9mIE9wZW5UaGVtZURhdGEsIENsb3NlVGhlbWVEYXRhLCBhbmQKCUlzVGhlbWVQYXJ0RGVmaW5lZAoJRXhwb3J0IHVuZG9jdW1lbnRlZCBmdW5jdGlvbnMgYnkgb3JkaW5hbCBvbmx5ICh0byBtYXRjaCBNaWNyb3NvZnQncwoJdXh0aGVtZSkuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRml4IGNvbXBpbGF0aW9uIGlmIEZyZWV0eXBlIGlzbid0IGluc3RhbGxlZC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEaXJlY3RseSB1c2UgdGhlIGhvb2sgcHJvYyBmb3IgdGhlIGN1c3RvbSB0ZW1wbGF0ZSBkaWFsb2cgcmF0aGVyIHRoYW4KCWNhbGxpbmcgaXQgdGhyb3VnaCBhbm90aGVyIGRsZ3Byb2MuCglEZWxpdmVyIHRoZSBvbGQgc3R5bGUgZmlsZV9vayBtZXNzYWdlIHdpdGggU2VuZE1lc3NhZ2UsIHRoaXMgYWxsb3dzCgl0aGUgZGlhbG9nIHRvIGJlIHN1YmNsYXNzZWQgKGFzIEFUTC9XVEwgZG9lcykuCglPbmx5IGRlbGl2ZXIgdGhpcyBtZXNzYWdlIGlmIHRoZSBhcHAgZGlkbid0IHJlamVjdCB0aGUgV01fTk9USUZZCgltZXNzYWdlLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkIG1pc3NpbmcgY29tbWEuCgoJKiBkbGxzL2NvbWN0bDMyL3Rlc3RzL2RwYS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURQQV9DcmVhdGUgaXMgbWlzc2luZyBmcm9tIGFsbCByZWNlbnQgaW1wb3J0IGxpYnJhcmllcyBzbyB1c2UKCUdldFByb2NBZGRyZXNzIHRvIGxvYWQgaXQuCglBZGQgJ1xuJyB0byAnb2snIGNhbGxzLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgaW5jbHVkZS9zaGx3YXBpLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUltcGxlbWVudGVkIFBhdGhGaWxlRXhpc3RzQW5kQXR0cmlidXRlc0EvVyBmdW5jdGlvbi4KCgkqIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCB1c2UgQ3JlYXRlRmlsZU1hcHBpbmcgb24gYSB6ZXJvIGxlbmd0aCBmaWxlLgoKCSogZGxscy9jb21jdGwzMi90ZXN0cy90YWIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdHJhaWxpbmcgJ1xuJ3MgdG8gb2soKSBjYWxscy4KCjIwMDQtMDEtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9nZGlfcHJpdmF0ZS5oLCBkbGxzL3dpbmVwcy9idWlsdGluLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLAoJICBvYmplY3RzL2ZvbnQuYzoKCVVzZSB0aGUgZXhwb3J0ZWQgRk9OVEVOVU1QUk9DVyBhcyBwYXJhbWV0ZXIgaW4gdGhlIEVudW1EZXZpY2VGb250cwoJZHJpdmVyIGZ1bmN0aW9uIGluc3RlYWQgb2YgZGVmaW5pbmcgYSBwcml2YXRlIGZ1bmN0aW9uIHR5cGUuCgoJKiB0b29scy9iaW4ycmVzLmM6CglXaW5kb3dzIHJlbmFtZSgpIG5lZWRzIGFuIHVubGluaygpIGZpcnN0IChyZXBvcnRlZCBieSBTdGV2ZW4KCUVkd2FyZHMpLgoKCSogdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvdHJhbnNsYXRpb24uYywgdG9vbHMvd3JjL3dyYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkZWQgYSBuZXcgZmxhZyB0byB3cmMsIHRvIGJlIHVzZWQgdG8gYXNzZXNzIHRyYW5zbGF0aW9ucwoJYWR2YW5jZW1lbnQuCgoJKiBkbGxzL29sZWRsZy9vbGVkbGdfUHQucmMsIGRsbHMvb2xlZGxnL3JzcmMucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUHQucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJVXBkYXRlIG9mIFBvcnR1Z3Vlc2UgcmVzb3VyY2VzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVNoZWxsVmlld19DcmVhdGVMaXN0KCksIFNJQ19Jbml0aWFsaXplKCk6IGVuYWJsZSB0cmFuc3BhcmVudCBpY29ucyBvbgoJdGhlIGRlc2t0b3AuCgoJKiBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJU3RyZWFtX2ZuV3JpdGU6IG9ubHkgcmV0dXJuIHdyaXRlIGNvdW50IGlmIHRoZSBnaXZlbiBwb2ludGVyCglwYXJhbWV0ZXIgaXMgbm90IE5VTEwuCgoJKiBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMveDExZHJ2L2JpdGJsdC5jLAoJICBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvYnJ1c2guYywgZGxscy94MTFkcnYvZGliLmMsCgkgIGRsbHMveDExZHJ2L2dyYXBoaWNzLmMsIGRsbHMveDExZHJ2L2luaXQuYywgZGxscy94MTFkcnYvcGFsZXR0ZS5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveHJlbmRlci5jLCBncmFwaGljcy9iaXRibHQuYywKCSAgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9kYy5jOgoJUmVtb3ZlZCB0aGUgYml0c1BlclBpeGVsIGZpZWxkIGluIHRoZSBnZW5lcmljIERDIHN0cnVjdHVyZSwgYW5kIGxlYXZlCglpdCB1cCB0byB0aGUgZ3JhcGhpY3MgZHJpdmVyIHRvIGRlZmluZSBpdCBpZiBuZWNlc3NhcnkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgY2FjaGUgcmVzdWx0cyBvZiBjaGVja3Mgd2l0aCBzaWRlIGVmZmVjdHMuCgoJKiBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbDogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglVbmlmb3JtaXplIHRoZSBjdnMgZG93bmxvYWQgaW5zdHJ1Y3Rpb25zIHdpdGggdGhlIG9uZXMgb24gV2luZUhRLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGRsbHMvbnRkbGwvcnRsc3RyLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIFVuaXggY29kZSBwYWdlIGluIE5URExMLgoKCSogZGxscy91c2VyL3Rlc3RzL2lucHV0LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRyYWlsaW5nICdcbidzIHRvIG9rKCkgY2FsbHMuCgoJKiBkbGxzL3gxMWRydi94Zm9udC5jOiBNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJRml4ZWQgdHlwb3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbToKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJR2V0IHJpZCBvZiB0aGUgc3RhdGljIG1vZHVsZSBsaXN0LgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJLSBkZWNsYXJlIFBUX1JBU19GT0xERVIgZm9yIHRoZSAiUkFTIENvbm5lY3Rpb25zIiBmb2xkZXIKCS0gaGFuZGxlIFBUX1JBU19GT0xERVIgYW5kIFBUX05FVFBST1ZJREVSIGluIGRlYnVnZ2luZyBmdW5jdGlvbnMgYW5kCgkgIF9JTEdldFRleHRQb2ludGVyKCkgLyBfSUxHZXRTVGV4dFBvaW50ZXIoKQoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBzdHViIGZvciBTSFJlZ2lzdGVyVmFsaWRhdGVUZW1wbGF0ZS4KCgkqIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNyZWF0ZVN0cmVhbU9uRmlsZSgpOiB1c2UgZmxhZyBGSUxFX1NIQVJFX1JFQUQgZm9yIG9wZW5pbmcgT0xFIHN0cmVhbQoJZmlsZXMgdG8gZW5hYmxlIGZpbGUgc2hhcmluZy4KCjIwMDQtMDEtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zaHRtbC9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvZG9jdW1lbnQuYywgZGxscy9tc2h0bWwvbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVHJ5IHVzaW5nIHRoZSBNb3ppbGxhIEFjdGl2ZSBYIGNvbnRyb2wgaW4gTVNIVE1MLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOgoJRml4ZWQgSENSX0dldEV4ZWN1dGVDb21tYW5kVygpIGJlaGF2aW9yIHdpdGggYSBjbGFzcyBuYW1lIChiYXNlZCBvbiBhCglwYXRjaCBieSBNYXJ0aW4gRnVjaHMpLgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiBubyBsb25nZXIgdXNlZCBmdW5jdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJQ29ycmVjdGVkIGRlZmluaXRpb24gb2YgUGF0aFlldEFub3RoZXJNYWtlVW5pcXVlTmFtZSgpLgoKCSogZGxscy9tc2FjbS9mb3JtYXQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBpbXByb3BlciBXQVZFRk9STUFURVggc2l6ZSBjYWxjdWxhdGlvbiBmb3Igbm9uIFBDTSBmb3JtYXRzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggdmFsdWUgcmVuYW1pbmcuIENsZWFudXAgY29kZSwgZml4IGEgZmV3IGxlYWtzLgoKCSogZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvZWRpdGxpbmUuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy93aW50YWIzMi93aW50YWIzMi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGRsbHMvdXh0aGVtZS9NYWtlZmlsZS5pbiwgZGxscy91eHRoZW1lL21haW4uYywKCSAgZGxscy91eHRoZW1lL21zc3R5bGVzLmMsIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5oLAoJICBkbGxzL3V4dGhlbWUvcHJvcGVydHkuYywgZGxscy91eHRoZW1lL3N0eWxlbWFwLmMsCgkgIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYywgZGxscy91eHRoZW1lL3V4aW5pLmMsCgkgIGRsbHMvdXh0aGVtZS91eHRoZW1lZGxsLmg6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZCBJTkkgZmlsZSBwcm9jZXNzaW5nLgoJRnVsbCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRUaGVtZURvY3VtZW50YXRpb25Qcm9wZXJ0eS4KCURlZmluZSBzdHJpbmcgbWFwcyBmb3IgcGFyc2luZyBJTkkgZmlsZXMgaW50byB1c2VhYmxlIGZvcm0uCglJbXBsZW1lbnRlZCAodW5kb2N1bWVudGVkKSBBcHBseVRoZW1lIHRvIHNlbGVjdCBjdXJyZW50IHRoZW1lLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJldHVybiBIRklMRV9FUlJPUiBpbnN0ZWFkIG9mIC0xIGluIF9scmVhZC4KCgkqIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVHJhY2UgdGhlIGhpZ2ggcGFydCBvZiB0aGUgU2VlayBvZmZzZXQuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgU3lzdGVtVGltZVRvVHpTcGVjaWZpY0xvY2FsVGltZSBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS91cmxtb24uaWRsOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBhIGNvdXBsZSBvZiBtaXNzaW5nIGRlZmluaXRpb25zIHRvIHVybG1vbi5oLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9jaGlsZHduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPGluZm9AdzNzZWVrLmRlPgoJRml4ZWQgaGFuZGxpbmcgb2YgY29udHJvbCBmb2N1cy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmM6IFRob21hcyBXZWlkZW5tdWVsbGVyIDxpbmZvQHczc2Vlay5kZT4KCUVuYWJsZSB0aGUgaGVscCBtZW51IGZvciByZWdlZGl0LgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglDaGVjayBmb3Igb3ZlcmxhcHBpbmcgbWVtb3J5IHZpZXdzIGFuZCBkZWxldGUgdGhlIG9mZmVuZGluZyB2aWV3IGlmCgluZWNlc3NhcnksIHRvIGVuc3VyZSB3ZSBuZXZlciBoYXZlIHR3byB2aWV3cyBjb3ZlcmluZyB0aGUgc2FtZQoJYWRkcmVzcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZmlsZXMvZmlsZS5jOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBFbnN1cmUgd2UgY29ycmVjdGx5IGFkZCBhIGJhY2tzbGFzaCBsaWtlIFdpbmRvd3MgOTgvWFAgZG8uCgktIEdlbmVyYXRlIGZpbGVuYW1lcyB0aGF0IGxvb2sgbGlrZSBXaW5kb3dzIGRvZXMgKG5vIGxlZnQgZGlnaXQKCSAgcGFkZGluZykuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IEZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCS0gTW92ZWQgYWN0dWFsIGNvZGUgZnJvbSBTSEdldFNwZWNpYWxGb2xkZXJQYXRoQSB0byBTSEdldEZvbGRlclBhdGhXLAoJICBhZGp1c3RlZCBhbmQgdW5pY29kaWZpZWQgaXQuCgktIFJld3JvdGUgU0hHZXRGb2xkZXJQYXRoQSB0byBjYWxsIFNIR2V0Rm9sZGVyUGF0aFcuCgktIFJld3JvdGUgU0hHZXRTcGVjaWFsRm9sZGVyUGF0aFtBV10gdG8gY2FsbCBTSEdldEZvbGRlclBhdGhbQVddLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfQ3MucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJQ29tcGxldGUgQ3plY2ggdHJhbnNsYXRpb24gb2Ygc2hlbGwzMiByZXNvdXJjZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglQYXJ0aWFsbHkgaW1wbGVtZW50IFJlZ09wZW5Vc2VyQ2xhc3Nlc1Jvb3QuCgoJKiBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbDogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglXZSBub3cgaGF2ZSBvZmZpY2lhbCBwYWNrYWdlcy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLCBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN0cmVhbWxpbmUgdGhlIGVkaXRpbmcgaW50ZXJmYWNlcyBhIGJpdC4KCU9wZW4gdGhlIHJlZ2lzdHJ5IHdpdGggb25seSB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbnMgZm9yIHRoZQoJb3BlcmF0aW9uLiBGaXggYSBmZXcgbGVha3MuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCU1vdmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIEdldERlZmF1bHRDb21tQ29uZmlnIGZyb20gQSB0byBXLgoJR2V0IHJpZCBvZiBhIFctPkEgY3Jvc3MgY2FsbCBhdCB0aGUgc2FtZSB0aW1lLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVbmljb2RpZnkgc29tZSBjb21tIGZ1bmN0aW9ucy4KCUdldCByaWQgb2Ygc29tZSBXLT5BIGNyb3NzIGNhbGxzIGFsb25nIHRoZSB3YXkuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLCBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5oOgoJVGhvbWFzIFdlaWRlbm11ZWxsZXIgPGluZm9AdzNzZWVrLmRlPgoJQWRkZWQgY29udGV4dCBtZW51IHN1cHBvcnQuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglDaGFuZ2UgVVJMIHVzZWQgaW4gaHR0cCB0ZXN0cyB0byBiZSBhICNkZWZpbmUgc28gaXQgY2FuIGJlIGNoYW5nZWQKCWVhc2lseSBpbiBmdXR1cmUsIGFuZCBtYWtlIGl0IHBvaW50IHRvIHdpbmVocS4KCgkqIGRsbHMvdXNlci90ZXN0cy9pbnB1dC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZSBNU1ZDIGhlYWRlcnMgd29uJ3QgZ2l2ZSBhIG5hbWUgdG8gdGhlIG5hbWVsZXNzIHVuaW9uIG9mIElOUFVUCglkZXNwaXRlIG91ciByZXF1ZXN0IChOT05BTUVMRVNTVU5JT04pLiBTbyBkZWZpbmUgb3VyIG93biB0eXBlIGFuZCB1c2UKCWl0IGluc3RlYWQuCglSZW1vdmUgdXNlbGVzcyBOT05BTUVMRVNTU1RSVUNULgoJRml4IHNpZ25lZC91bnNpZ25lZCB3YXJuaW5nLgoKCSogZGxscy91c2VyL3Rlc3RzL2NsYXNzLmMsIGRsbHMvdXNlci90ZXN0cy93aW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJV2UgbmVlZCB0byBzZXQgX1dJTjMyX1dJTk5UIHRvIDB4NTAxIHRvIGdldCBDU19EUk9QU0hBRE9XIGFuZAoJSUNPTl9TTUFMTDIuCgoJKiBkbGxzL3NobHdhcGkvdGVzdHMvY2xzaWQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNU1ZDIGRvZXMgbm90IHdhbnQgJ2V4dGVybicgdmFyaWFibGVzIHRvIGJlIGluaXRpYWxpemVkIGluc2lkZQoJZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUdldCByaWQgb2YgYSBXLT5BIGNyb3NzIGNhbGwgaW4gSW1hZ2VMaXN0X0xvYWRJbWFnZVcuCgoJKiBkbGxzL2dkaS9iaWRpLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeCBjb21waWxhdGlvbiB3aXRoIElDVSBhZnRlciBpbnRyb2R1Y3Rpb24gb2YgZ2RpX3ByaXZhdGUuaC4KCgkqIGRsbHMvdHdhaW4vZHNtX2N0cmwuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW5pdGlhbGl6ZSBhIHBvaW50ZXIgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglZZXQgYW5vdGhlciBuZXcgc3BlYyBmaWxlLCB0aGlzIHRpbWUgaWNjdmlkLnNwZWMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IFJvYmVydCBMdW5ub24gPGJvYmxAb3B0dXNob21lLmNvbS5hdT4KCVNhdmUgVUVTUCBpbnN0ZWFkIG9mIEVTUCB3aGVyZSBVRVNQIGRlZmluZWQuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmM6IFRob21hcyBXZWlkZW5tdWVsbGVyIDxpbmZvQHczc2Vlay5kZT4KCUltcGxlbWVudGVkIFZpZXd8U3BsaXQuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdlZGl0L2Fib3V0LmM6CglUaG9tYXMgV2VpZGVubXVlbGxlciA8aW5mb0B3M3NlZWsuZGU+CglTaW1wbGlmeSB0aGUgQWJvdXQgZGlhbG9nIGNvZGUuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6IFRob21hcyBXZWlkZW5tdWVsbGVyIDxpbmZvQHczc2Vlay5kZT4KCUV4cGFuZCB0aGUgdHJlZXZpZXcgb24gc3RhcnR1cC4KCjIwMDQtMDEtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL3dpbmVwcy9kb3dubG9hZC5jLCBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLAoJICBkbGxzL3dpbmVwcy9wZW4uYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdGV4dC5jLAoJICBkbGxzL3gxMWRydi9ncmFwaGljcy5jLCBkbGxzL3gxMWRydi9wZW4uYywgZGxscy94MTFkcnYvdGV4dC5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaCwgZGxscy94MTFkcnYveGZvbnQuYywgZGxscy94MTFkcnYveHJlbmRlci5jLAoJICBpbmNsdWRlL2dkaS5oOgoJR2V0IHJpZCBvZiB0aGUgZ2xvYmFsIElOVEVSTkFMX1tYWV1XU1RPRFMgbWFjcm9zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CgktIEdldCByaWQgb2YgVy0+QSBjYWxscyBmb3Igc2hsZXhlYy4KCS0gSW1wbGVtZW50YXRpb24gb2YgRmluZEV4ZWN1dGFibGVXLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJVHdlYWtlZCB0aGUgaW5pdCBjb2RlIHNvIHRoYXQgaXQgd29ya3MgcHJvcGVybHkgbm8gbWF0dGVyIHdoYXQgbGlua2VyCglvcHRpb25zIGFyZSB1c2VkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvaWNjdmlkLy5jdnNpZ25vcmUsCgkgIGRsbHMvaWNjdmlkL01ha2VmaWxlLmluLCBkbGxzL2ljY3ZpZC9pY2N2aWQuYywKCSAgZGxscy9pY2N2aWQvaWNjdmlkLnNwZWM6CglUaW0gRmVyZ3Vzb24gPFRpbS5GZXJndXNvbkBpbmZvdGVjaC5tb25hc2guZWR1LmF1PgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUG9ydCBUaW0gRmVyZ3Vzb24ncyBJQ0NWSUQgY29kZWMgdG8gV2luZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYywgZmlsZXMvZG9zX2ZzLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglQcmVzZXJ2ZSB0cmFpbGluZyBiYWNrc2xhc2hlcyBpbiBHZXRGdWxsUGF0aE5hbWUuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvZ3VpLmMsIHByb2dyYW1zL3dpbmV0ZXN0L2d1aS5yYywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvZ3VpcmVzLmgsIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvc2VuZC5jLCBwcm9ncmFtcy93aW5ldGVzdC91dGlsLmMsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0Lmg6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglBZGRlZCBncmFwaGljYWwgZmVlZGJhY2suCgoJKiB0b29scy93aW5lZHVtcC9tYWluLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUJlIG1vcmUgc3RyaWN0IGFib3V0IGNoZWNrcyAoZXNwZWNpYWxseSBpbiBSVkEgdHJhbnNsYXRpb25zKS4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywgZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvZ2RpMTYuYywKCSAgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy9nZGkvZ2RpX3ByaXZhdGUuaCwgZGxscy9nZGkvbWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9tZmRydi9tYXBwaW5nLmMsIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYywKCSAgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9nZGkvd2luZy5jLCBkbGxzL3gxMWRydi9iaXRibHQuYywKCSAgZGxscy94MTFkcnYvYml0bWFwLmMsIGRsbHMveDExZHJ2L2dyYXBoaWNzLmMsIGRsbHMveDExZHJ2L2luaXQuYywKCSAgZGxscy94MTFkcnYvdGV4dC5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGdyYXBoaWNzL2JpdGJsdC5jLAoJICBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvbWFwcGluZy5jLCBncmFwaGljcy9wYWludGluZy5jLAoJICBncmFwaGljcy9wYXRoLmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLAoJICBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLAoJICBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywKCSAgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywKCSAgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLAoJICB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglNb3ZlZCBhIGJ1bmNoIG9mIGRlZmluaXRpb25zIGZyb20gZ2RpLmggaW50byBhIG5ldyBnZGlfcHJpdmF0ZS5oIHRvCgltYWtlIHN1cmUgd2UgZG9uJ3QgdXNlIHRoZW0gb3V0c2lkZSBvZiBnZGkzMi4KCgkqIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jLCBkbGxzL2tlcm5lbC9kZXZpY2UuYywKCSAgZGxscy9uZXRhcGkzMi9uYnQuYzoKCURlZmluZSBJTkFERFJfTk9ORSBpZiBuZWVkZWQgKHJlcG9ydGVkIGJ5IFJvYmVydCBMdW5ub24pLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW46CglBdm9pZCBub24tcG9ydGFibGUgc3RyaXAgLXMgKHJlcG9ydGVkIGJ5IFJvYmVydCBMdW5ub24pLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3BhdGguYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jLCBkbGxzL250ZGxsL3BhdGguYywgZmlsZXMvZG9zX2ZzLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlaW1wbGVtZW50ZWQgR2V0e1Nob3J0fExvbmd9UGF0aE5hbWUgYW5kIHVwZGF0ZWQgdGhlIHJlZ3Jlc3Npb24KCXRlc3RzLgoKMjAwNC0wMS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYzogUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c2hvbWUuY29tLmF1PgoJRml4ZWQgdHlwZSBtaXNtYXRjaCBpbiB3aWREc0NyZWF0ZS4KCgkqIGRsbHMvaXBobHBhcGkvaWZlbnVtLmM6IFJvYmVydCBMdW5ub24gPGJvYmxAb3B0dXNob21lLmNvbS5hdT4KCUNvcnJlY3RlZCBjb2RlIHRvIGFjcXVpcmUgbXR1IHVuZGVyIFNvbGFyaXMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglGaXhlZCBfX3NpZ2luZm8gdHlwZSBmb3IgU29sYXJpcyAoYmFzZWQgb24gYSBwYXRjaCBieSBSb2JlcnQgTHVubm9uKS4KCgkqIGRsbHMvbmV0YXBpMzIvbmJ0LmM6IFJvYmVydCBMdW5ub24gPGJvYmxAb3B0dXNob21lLmNvbS5hdT4KCUZEX1NFVCBpcyBub3QgYSB0eXBlIGNoYW5nZWQgdG8gc3RydWN0IGZkX3NldC4KCVJlb3JkZXJlZCBoZWFkZXJzIHRvIGF2b2lkIGluY2x1ZGluZyBzeXMvc2VsZWN0LmggYmVmb3JlIHdpbmJhc2UuaC4KCgkqIHRvb2xzL2JpbjJyZXMuYzogUm9iZXJ0IEx1bm5vbiA8Ym9ibEBvcHR1c2hvbWUuY29tLmF1PgoJSW5jbHVkZWQgbGltaXRzLmggdG8gcmVzb2x2ZSBtaXNzaW5nIG1hY3JvIGRlZmluaXRpb24uCgoJKiBMSUNFTlNFLCBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglVcGRhdGVkIGNvcHlyaWdodCBpbmZvcm1hdGlvbi4KCgkqIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMveDExZHJ2L2NsaXBwaW5nLmMsIGRsbHMveDExZHJ2L2luaXQuYywKCSAgZGxscy94MTFkcnYvc2Nyb2xsLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaDoKCU1vdmVkIFNldERyYXdhYmxlLCBTdGFydEdyYXBoaWNzRXhwb3N1cmVzIGFuZCBFbmRHcmFwaGljc0V4cG9zdXJlcwoJZnVuY3Rpb25hbGl0eSB0byB4MTFkcnYgZXNjYXBlcyBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gYWNjZXNzIHRoZSBEQwoJc3RydWN0dXJlIGRpcmVjdGx5LgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9maWxlMTYuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy93aW5lZG9zL2ludDIxLmMsIGZpbGVzL2ZpbGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBnb3QgcmlkIG9mIEZJTEVfRHVwMiBleHBvcnQgZnJvbSBrZXJuZWwzMgoJLSBtb3ZlIGFsbCBkb3MgaGFuZGxlIHJlbGF0ZWQgY29kZSBpbnRvIGRsbHMva2VybmVsMzIKCjIwMDQtMDEtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvYnJ1c2guYywKCSAgZGxscy94MTFkcnYvZGliLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBpbmNsdWRlL2JpdG1hcC5oLAoJICBvYmplY3RzL2RpYi5jLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCU1vdmVkIHNvbWUgY29kZSBhcm91bmQgdG8gYXZvaWQgZXhwb3J0aW5nIERJQiBmdW5jdGlvbnMgZnJvbSBnZGkzMi4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLCBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbGlzdHZpZXcuYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHZhbHVlIHJlbmFtZSBzdXBwb3J0IHRvIHJlZ2VkaXQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIFZhckludCwgVmFyRml4LCBWYXJOZWcuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBpbnRlZ2VyIG1hdGggaW4gVmFyQ3lJbnQsIGRvY3MuCgoJKiBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVR3byAidW5rbm93biIgcGFyYW1ldGVycyBvZiBfdW5ETmFtZSgpIHR1cm4gb3V0IHRvIGJlIHRoZSBvdXRwdXQKCXN0cmluZyBhbmQgaXQgbGVuZ3RoLiBJZiBwb3NzaWJsZSwgdXNlIHRoZXNlIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhCgluZXcgb25lLiBQdXQgdGhlIGNvZGUgaW4gX3VuRE5hbWVFeCgpIGFuZCBjYWxsIHRoYXQgZnJvbSBfdW5ETmFtZSgpLgoKCSogZGxscy9hdmlmaWwzMi9yc3JjLnJjOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCUZpeGVkIHZlcnNpb24gaW5mby4KCgkqIHByb2dyYW1zL3dpbmVicm93c2VyL21haW4uYzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglBZGQgZGlsbG8gYXMgYSBicm93c2VyIHRvIHNlYXJjaCBmb3IuCgoJKiBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2Vycm5vLmMsCgkgIGRsbHMvbXN2Y3J0L2V4aXQuYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9sY29udi5jLAoJICBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglJbXBsZW1lbnRlZCB0aGUgcmVtYWluaW5nIDY0LWJpdCBmaWxlIGZ1bmN0aW9ucywgYW5kIGFkZGVkIGEgZmV3IG90aGVyCglmdW5jdGlvbnMgYW5kIGV4cG9ydGVkIHZhcmlhYmxlcy4KCVJlbW92ZWQgdGhlIGFsbW9zdCBlbXB0eSBsY29udi5jIGZpbGUuCgoJKiBkbGxzL21zdmNydGQvZGVidWcuYywgZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYzoKCUltcGxlbWVudGVkIGEgZmV3IG1vcmUgY3J0KiBmdW5jdGlvbnMuCglSZXBsYWNlZCBtb3N0IHJlbWFpbmluZyBzdHVicyBieSBmb3J3YXJkcyB0byBtc3ZjcnQuCgoJKiBkbGxzL3gxMWRydi9kaWIuYzogQXZvaWQgZGlyZWN0IGFjY2VzcyB0byB0aGUgcGFsZXR0ZSBzdHJ1Y3R1cmUuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9nZGkvaWNtLmMsCgkgIGluY2x1ZGUvd2luZ2RpLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0dWIgZm9yIEVudW1JQ01Qcm9maWxlc0EvVy4KCgkqIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6IEplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUZXN0IHRoZSBiZWhhdmlvciBvZiBiaW5kKCkgd3J0LiBTT19SRVVTRUFERFIuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IEplcmVteSBTaGF3IDxqZXJlbXkuc2hhd0BsaW5kb3dzLmNvbT4KCVJlbW92ZSBmb3JjZWQgV1NfU09fUkVVU0VBRERSIG9uIGFsbCBiaW5kcy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgcmFjZSB0aGF0IGNhdXNlZCB0aGUgTWljcm9zb2Z0IFZpZXdlcnMgJ2ZpbGUgZXh0cmFjdGlvbicKCWFuaW1hdGlvbiB0byBzb21ldGltZXMgaGF2ZSBhIHBpbmsgYmFja2dyb3VuZC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG8gYSBTZWFyY2hQYXRoIGJlZm9yZSBvcGVuaW5nIHRoZSBmaWxlIHRvIGltcHJvdmUgY29tcGF0aWJpbGl0eSB3aXRoCgl0aGUgbmF0aXZlIHJlZ2VkaXQuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3Rlc3RzL29yaWcucmVnLCBwcm9ncmFtcy9yZWdlZGl0L3Rlc3RzL3JlZ2VkaXQucGw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSByZWZlcmVuY2VzIHRvIHJlZ2FwaS4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCB5ZXQgYW5vdGhlciBzcGVjIGZpbGUgZm9yIGEgbmV3IGRsbC4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvZW52LmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZSBhICJcIiBmcm9tIGEgbXVsdGlsaW5lIHN0cmluZyBjb25zdGFudCBieSBzcGxpdHRpbmcgaXQgaW4gdHdvLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmVkIGEgVy0+QSBjcm9zcy1jYWxsIChDb3B5TWV0YUZpbGVXLT5Db3B5TWV0YUZpbGVBKS4KCgkqIGRsbHMvbXN2Y3J0NDAvbXN2Y3J0NDAuc3BlYzogQWRkZWQgYWxsIHRoZSBtaXNzaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOiBfc2V0X2Vycm9yX21vZGUgaXMgY2RlY2wgbm90IHN0ZGNhbGwuCgoJKiBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjOiBBbmRy6SBKb2hhbnNlbiA8YW5kcmVqb2hAYzJpLm5ldD4KCUZvcndhcmQgX3NldF9lcnJvcl9tb2RlIHRvIG1zdmNydC4KCgkqIGRsbHMvd2luZXBzL2luaXQuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJR2V0IHJpZCBvZiBhIFctPkEgY3Jvc3NjYWxsIChSZXNldERDQS0+UmVzZXREQ1cpLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIE1pZGkgSU4gc3VwcG9ydC4KCjIwMDQtMDEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglIYW5kbGUgdGhlIGNhc2VzIHdoZW4gaW5pdGRpciBpcyBlaXRoZXIgaW52YWxpZCwgb3Igc3BlY2lmaWVzIGEgZmlsZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zdmNydDQwLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2Y3J0NDAvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0NDAvbXN2Y3J0NDAuYywKCSAgZGxscy9tc3ZjcnQ0MC9tc3ZjcnQ0MC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBlbm91Z2ggb2YgTVNWQ1JUNDAgdG8gbWFrZSBJRTQgaW5zdGFsbCB3b3JrLgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGluY2x1ZGUvdXNlci5oLCB3aW5kb3dzL3Njcm9sbC5jOgoJU2Nyb2xsREMgZG9lc24ndCBuZWVkIHRvIGJlIGluIHRoZSBncmFwaGljcyBkcml2ZXIuCgoJKiBvYmplY3RzL2RjLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUNoYW5nZSBHZXRUcmFuc2Zvcm0gc3R1YiB0byB1c2UgdGhlIHN0YW5kYXJkIEZJWE1FIHJhdGhlciB0aGFuIEVSUi4KCgkqIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDcmVhdGVEQyBpcyBVbmljb2RlIG5vdywgY2hhbmdlIHRoZSBzcGVjIGZpbGUgYWNjb3JkaW5nbHkuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGQgc3BlYyBmaWxlcyBmb3IgbmV3IGRsbHMuCgoJKiBkbGxzL3JpY2hlZGl0L3JlYWRlci5jOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglDb3JyZWN0IGhhbmRsaW5nIG9mIGZvbnQgdGFibGUgd2hlbiB0aGUgZm9udCBuYW1lIGlzIG5vdCB0aGUgbGFzdAoJdGhpbmcgaW4gdGhlIGVudHJ5IChpLmUuIGlzIGZvbGxvd2VkIGJ5IHRoZSBmb250IGFsdG5hbWUgaW4gYSBncm91cCkuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNhZmVBcnJheVJlZGltOiBVc2UgdGhlIGNvcnJlY3Qgc2l6ZSBmb3IgcmVzaXplIHRvby4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsCgkgIGluY2x1ZGUvdGxoZWxwMzIuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgVG9vbGhlbHAzMlJlYWRQcm9jZXNzTWVtb3J5LgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBpbXBsZW1lbnRlZCBUSU1FX0tJTExfU1lDSFJPTk9VUyB0aW1lciBmbGFncwoJLSB0aW1lS2lsbFRpbWVyIGlzIG5vdyB0aHJlYWQgc2FmZQoJLSByZXBsYWNlZCBzb21lIGlEYXRhIGF0dHJpYnV0ZXMgYnkgZ2xvYmFsIHZhcmlhYmxlcwoKCSogZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwgZGxscy9kc291bmQvbWl4ZXIuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglSZWR1Y2UgdGhlIHVzZSBvZiB0aGUgZHNvdW5kIGdsb2JhbCB2YXJpYWJsZSBieSBwYXNzaW5nIGFkZHJlc3MgdG8KCWZ1bmN0aW9ucy4KCjIwMDQtMDEtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9oZWFwLmMsIGRsbHMva2VybmVsL2xvY2FsMTYuYywgZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jLAoJICBkbGxzL3JwY3J0NC9jcHJveHkuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3MveG1zLmMsCgkgIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9tb2R1bGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgaW5jbHVkZS93aW51c2VyLmg6CglHZXQgcmlkIG9mIG5vIGxvbmdlciBuZWVkZWQgV0lORV9QQUNLRUQgZGVmaW5lLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgaW5jbHVkZS9kc291bmQuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5lcyBhbmQgYSBzdHJ1Y3QuCglGaXhlZCBzb21lIGNvbnN0ICogYXJndW1lbnRzLgoKCSogZGxscy9udGRsbC9maWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWxsb3cgb2Zmc2V0IG9mIE5VTEwgdG8gTnRXcml0ZUZpbGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgSGVhcFJlYWxsb2MgdHlwby4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgd3JhcHBlciBnZW5lcmF0aW9uIGZyb20gd2luZXdyYXAsIGl0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnkKCShmaXhlZCBieSBBbGV4YW5kcmUncyBjb25zdHJ1Y3RvciBwYXRjaCkuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmgsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZzE2LmM6CglTb21lIG1vcmUgV2luMTYvV2luMzIgc2VwYXJhdGlvbiAoYmFzZWQgb24gYSBwYXRjaCBieSBTdGV2ZW4KCUVkd2FyZHMpLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIGFkZCBWRVNBIG1vZGUgMHg2YSAoc2FtZSBhcyAweDEwMikKCS0gYWRkIGEgbWFjcm8gdG8gY2hlY2sgaWYgYSBtb2RlIGlzIGEgVkVTQSBtb2RlCgktIG91dHB1dCB0aGUgdW5zdXBwb3J0ZWQgVkdBIG1vZGUgaW4gaGV4IChhbGwgVkdBL1ZFU0EgZG9jcyB1c2UgaGV4CgkgIGZvciB0aGF0KQoKCSogZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL3dpbmVqYWNrLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWFydHMvd2luZWFydHMuZHJ2LnNwZWM6CglKZXJlbXkgU2hhdyA8amVyZW15LnNoYXdAbGluZG93cy5jb20+CglBZGRlZCB3YXZlLWluIHN1cHBvcnQgYW5kIGZpeGVkIGEgZmV3IGJ1Z3MgaW4gdGhlIHdhdmUtb3V0IGNvZGUuCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJUmVtb3ZlZCBYSW5pdFRocmVhZHMgY2FsbCwgdGhlIFggbGlicmFyaWVzIHN0aWxsIGhhdmUgdG9vIG1hbnkgYnVncyB0bwoJbWFrZSB0aGlzIHZpYWJsZS4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29weSBCU1RScyBieXRlIHdpc2UuCglBZGRlZCBhIHRlc3RjYXNlIGZvciBieXRlIHdpc2UgY29weSBvZiBWVF9CU1RSIHZhcmlhbnQgd2l0aAoJVmFyaWFudENvcHkoKS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZGJ0Lmg6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaC5jemVrYWxsYUB1dG9yb250by5jYT4KCUFkZGVkIGhlYWRlciBkYnQuaC4KCgkqIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy9yZXNvdXJjZS5jLCBkbGxzL3VzZXIvdGVzdHMvcmVzb3VyY2UucmM6CglGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglQaW4gZG93biBMb2FkU3RyaW5nQSBiZWhhdmlvdXIgb24gZGlmZmVyZW50IGJ1ZmZlciBsZW5ndGhzLgoKCSogZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhbiBJRSBjcmFzaCBhbmQgbWFrZSB0aGUgIkNyZWF0ZSBGb2xkZXIiIGZ1bmN0aW9uYWxpdHkgaW4KCUZhdm9yaXRlcyB3b3JrLgoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUF2b2lkIGZyZWVpbmcgcmVxdWVzdCBwYWNrZXQgdG9vIGVhcmx5IGlmIGFuIGV4Y2VwdGlvbiBvY2N1cnMuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVByb3Blcmx5IGhhbmRsZSBkZXN0cm95aW5nIHRoZSBmaXJzdCBjb25uZWN0aW9uIGluIHRoZSBjb25uZWN0aW9uCgljYWNoZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVncmVzc2lvbiB0ZXN0IGZvciBmaWxlcyB3aXRoIHplcm8gbGVuZ3RoLgoKCSogc2VydmVyL21hcHBpbmcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTWFwcGluZyBhIHplcm8gc2l6ZSBmaWxlIHNob3VsZCBmYWlsLgoKCSogdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGZhaWwgaWYgd2UgY2FuJ3QgbG9hZCBzb21lIGxpYnMgaW4gdGhlIHdyYXBwZXIuCglObyBuZWVkIHRvIGxpbmsgdGhlIHdyYXBwZXIgd2l0aCBhbGwgbGlicywgd2Uga25vdyB3aGF0IHdlIG5lZWQuCgoJKiB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6CglJZiBzdXBwb3J0ZWQsIGFkZCAtaW5pdCBhbmQgLWZpbmkgZmxhZ3MgdG8gdGhlIGxpbmtlciBpbnZvY2F0aW9uLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2ludGFiMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2ludGFiMzIvY29udGV4dC5jLCBkbGxzL3dpbnRhYjMyL3dpbnRhYjMyLmMsCgkgIGRsbHMvd2ludGFiMzIvd2ludGFiX2ludGVybmFsLmgsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi93aW50YWIuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbnRhYi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUVuYWJsZSBUYWJsZXQgc3VwcG9ydCB3aXRoIGJvdGggVGlsdCBhbmQgUHJlc3N1cmUuCgoyMDA0LTAxLTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy90d2Fpbi90d2Fpbi5oLCBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oOgoJVGhlcmUncyBubyBuZWVkIGZvciBEVU1NWVVOSU9OTkFNRSBpbiBwcml2YXRlIGhlYWRlcnMuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDogS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglEZWZpbmUgT1BFTkZJTEVOQU1FX1NJWkVfVkVSU0lPTl80MDAuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicy9wb3J0L01ha2VmaWxlLmluLCBsaWJzL3BvcnQvcmVhZGxpbmsuYzoKCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3IgcmVhZGxpbmsuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglJZiBzdXBwb3J0ZWQgYnkgdGhlIGxpbmtlciwgcHJldmVudCB0aGUgRUxGIGxvYWRlciBmcm9tIGNhbGxpbmcgdGhlCglkbGwgY29uc3RydWN0b3JzIGF0IGxvYWQgdGltZSBhbmQgY2FsbCB0aGVtIGZyb20gdGhlIGRsbCBlbnRyeSBwb2ludAoJaW5zdGVhZC4KCgkqIGRsbHMva2VybmVsL3RodW5rLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUFsd2F5cyBwcmludCBhIG1lc3NhZ2UgZm9yIGdlbmVyaWMgc3R1YnMuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBvcHRpb24gdG8gdXNlIHRoZSBwcmltYXJ5IHNlbGVjdGlvbiBpbiBhZGRpdGlvbiB0byB0aGUgY2xpcGJvYXJkCglzZWxlY3Rpb24uCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLCBkbGxzL2NhYmluZXQvY2FiaW5ldC5oLAoJICBkbGxzL2NhYmluZXQvY2FiaW5ldF9tYWluLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHRoZSBsaW5rZWQgbGlzdCB3aXRoIHRoZSBuYW1lIG9mIGZpbGVzIG9mIHRoZSBDQUIgYXJjaGl2ZS4KCgkqIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLAoJICBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gQXBwbGllZCB0byBhbGwgTUNJIGRyaXZlcnMgRG1pdHJ5J3MgZml4IGZvciBNQ0lfU1RBVFVTX1RJTUVfRk9STUFUCgkgICh3YXNuJ3QgcmV0dXJuaW5nIHN0cmluZyByZXNvdXJjZSBJRCkuCgktIEZpeGVkIG1jaXNlcSB3aGVuIG9wZW5lZCB3aXRob3V0IGEgZmlsZW5hbWUuCgoJKiBkbGxzL2lwaGxwYXBpL3Rlc3RzL2lwaGxwYXBpLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUmVtb3ZlIHNvbWUgdW51c2VkIGhlYWRlcnMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUJyb3VnaHQgdXAgdG8gZGF0ZSB0byBEaW1pJ3MgbGF0ZXN0IHBhdGNoLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9pY20uaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBpY20uaCBmb3IgY29sb3VyIG1hbmFnZW1lbnQuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCURlZmluZSBzdHJ1Y3RzIEZJTEVERVNDUklQVE9SIGFuZCBGSUxFR1JPVVBERVNDUklQVE9SIHVzZWQgd2l0aCB0aGUKCWNsaXBib2FyZCBmb3JtYXQgQ0ZfRklMRUdST1VQREVTQ1JJUFRPUi4KCjIwMDQtMDEtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRsbHMva2VybmVsL3B0aHJlYWQuYywgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3RocmVhZC5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCURvbid0IHVzZSBjb25zdHJ1Y3RvcnMgZm9yIG50ZGxsIGFuZCBrZXJuZWwzMiBpbml0aWFsaXphdGlvbi4KCgkqIHRvb2xzL3dpZGwvTWFrZWZpbGUuaW4sIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvaGVhZGVyLmgsCgkgIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvcHJveHkuYywKCSAgdG9vbHMvd2lkbC9wcm94eS5oLCB0b29scy93aWRsL3R5cGVsaWIuYywgdG9vbHMvd2lkbC90eXBlbGliLmgsCgkgIHRvb2xzL3dpZGwvd2lkbC5jLCB0b29scy93aWRsL3dpZGwuaCwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgcnVsZXMgdG8gcGFyc2UgbGlicmFyeSwgY29jbGFzcywgZGlzcGludGVyZmFjZSwgYW5kIG1vZHVsZQoJZGVmaW5pdGlvbnMsIGFuZCBhIG51bWJlciBvZiBhdHRyaWJ1dGVzLCBhbmQgY2xlYW5lZCB1cCBhIGZldyB0aGluZ3MuCglTdGFydGVkIG9uIGEgdHlwZWxpYiBnZW5lcmF0aW9uIGZyYW1ld29yay4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2lwaGxwYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYywgZGxscy9pcGhscGFwaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2lwaGxwYXBpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2lwaGxwYXBpL3Rlc3RzL2lwaGxwYXBpLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglGaXhlZCB0aGUgZHdCQ2FzdEFkZHIgbWVtYmVyIG9mIE1JQl9JUEFERFJST1csIGFkZGVkIGEgdGVzdCBwcm9ncmFtLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL21zaS9zdW1pbmZvLmMsCgkgIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCVJlbW92ZWQgaW5jb3JyZWN0IHVzZXMgb2YgRFVNTVlVTklPTk5BTUUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogIFdpbSBMZXdpcyA8d2ltbEB1bmRlcmhpbGwuaGhoaC5vcmc+CglGaXhlZCBzaGVsbCBxdW90aW5nIG9mIHRoZSBpbmxpbmUtYXNtIHRlc3RzIHNvIHRoYXQgdGhleSB3b3JrIHByb3Blcmx5Cgl3aXRoIHRoZSBwZGtzaCB0aGF0IHNoaXBzIHdpdGggT3BlbkJTRC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUnUucmMsIHByb2dyYW1zL3dpbmVjZmcvU2kucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvbGlicmFyaWVzLmMsIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaDoKCVJvYmVydCB2YW4gSGVyayA8cm9iZXJ0QHJvYmVydHZhbmhlcmsubmw+CglBZGRlZCBhIHRhYnNoZWV0IHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGNoYW5nZSB0aGUgZGxsIG92ZXJyaWRlcywKCWJvdGggZ2xvYmFsbHkgYW5kIHBlciBhcHAuCgoyMDA0LTAxLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsCgkgIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC91dGlscy5jLAoJICBkbGxzL2QzZDgvdm9sdW1lLmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywKCSAgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLCBkbGxzL2ljbXAvaXAuaCwgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsCgkgIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLAoJICBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9lcnJvcmluZm8uYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0eXBlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyZm9ybWF0LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL29sZWF1dDMyL3ZhcnR5cGUuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywKCSAgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy91c2VyL3Jlc291cmNlLmMsCgkgIGRsbHMvdXh0aGVtZS9zeXN0ZW0uYywgZGxscy91eHRoZW1lL3V4dGhlbWVkbGwuaCwKCSAgZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMveDExZHJ2L3hmb250LmMsCgkgIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvc2hsd2FwaS5oLAoJICBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHRvb2xzL2MybWFuLnBsLCB0b29scy93aW5lZHVtcC9SRUFETUUsCgkgIHRvb2xzL3dpbmVpbnN0YWxsOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBc3NvcnRlZCBzcGVsbGluZyBmaXhlcy4KCgkqIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3Nob2JqaWRsLmgsIGluY2x1ZGUvc2hvYmppZGwuaWRsOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCURlZmluZSBJU2hlbGxFeGVjdXRlSG9vayBpbnRlcmZhY2UuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglVc2UgZ2NjJ3MgLXBpcGUgb3B0aW9uIHRvIHJlZHVjZSBjb21waWxlIHRpbWUuCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oLCBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOgoJUGV0ZXIgQmVyZyBMYXJzZW4gPHBlYmxAbWF0aC5rdS5kaz4KCSVbYS16XSBhbmQgJVt6LWFdIGFyZSBpbnRlcnByZXRlZCBhcyBlcXVpdmFsZW50IHRvICVbYWJjZGUuLi56XS4KCUFkZGVkIHNvbWUgc2NhbmYgdGVzdHMuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBDb252ZXJ0ZWQgRGxnRGlyTGlzdCB0byBVbmljb2RlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9tYWtlX3Byb2dzLAoJICB3aW5lZGVmYXVsdC5yZWcsIHByb2dyYW1zL3dpbmVicm93c2VyLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVicm93c2VyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lYnJvd3Nlci9tYWluLmMsCgkgIHRvb2xzL3dpbmVpbnN0YWxsOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUFkZGVkIHdpbmVicm93c2VyIGFwcCB0aGF0IGxhdW5jaGVzIGEgVW5peCBicm93c2VyLgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglTSENvQ3JlYXRlSW5zdGFuY2UgaXMgbm93IGRvY3VtZW50ZWQgKHNwb3R0ZWQgYnkgRnJhbmNvaXMgR291Z2V0KS4KCUl0cyBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYSBVbmljb2RlIHN0cmluZy4KCgkqIHdpbmRvd3MvcXVldWUuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZCBtaXNzaW5nIFxuIG9uIGVycm9yIG1lc3NhZ2UuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgTEYgaW4gdHJhY2UuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW46IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJTWFrZSBzdXJlIHNlZCB1c2VzIHRoZSByaWdodCBsb2NhbGUuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaCwKCSAgZGxscy93aW5tbS9tY2lhdmkvd25kLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVnaXN0ZXIgd2luZG93IGNsYXNzIG9uIG1jaWF2aSBkcml2ZXIgbG9hZGluZywgYW5kIHVucmVnaXN0ZXIgaXQgb24KCWRyaXZlciB1bmxvYWRpbmcuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9pbmZvLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gY29ycmVjdCByZXNvdXJjZSBpZCBmb3IgdGltZSBmb3JtYXQgc3RyaW5ncy4KCgkqIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlIGVycm9yIHJlcG9ydGluZy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLAoJICBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIG5ldyB2YWx1ZSBzdXBwb3J0LiBNaXNjIGltcHJvdmVtZW50cyBhbmQgY2xlYW51cHMuCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJQWRkZWQgX0JJVE1BUFNJWkVfIGFuZCBzcGxpdCBfQ09OVkVSVF8gbWFjcm8gdG8gcmVtb3ZlICNpZmRlZnMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L0l0LnJjOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVVwZGF0ZWQgSXRhbGlhbiByZXNvdXJjZXMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJeE51bSBzaG91bGQgYmUgeU51bSBpbiBvbmUgcGxhY2UuCgoJKiBkbGxzL2QzZDgvZHJhd3ByaW0uYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUZpeCB0aGUgZHJhdypwcmltaXRpdmVVUCBjYWxscyBzbyB0aGV5IHdvcmsgZGlyZWN0bHkgYWZ0ZXIgYSBkcmF3Cgl3aGljaCB1c2VzIHZlcnRleCBzaGFkZXJzLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudCB3Z2xVc2VGb250Qml0bWFwc1cuCgoyMDA0LTAxLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy93aW5lZG9zL2Rvc2NvbmYuYywgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmMsCgkgIHByb2dyYW1zL3dpbmVwYXRoL3dpbmVwYXRoLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1hZGUgd2luZV9nZXRfdW5peF9maWxlX25hbWUgdGFrZSBhIFVuaWNvZGUgc3RyaW5nIHBvaW50ZXIuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFjY2VwdCBhbGwgc3RhbmRhcmQgRElCIGNvbXByZXNzaW9ucyBpbiB0aGUgbWNpYXZpIGRyaXZlci4KCgkqIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCVVwZGF0ZXMgZm9yIHRoZSBuZXcgbG9hZG9yZGVyIGhhbmRsaW5nIG9mIDE2LWJpdCBkbGxzLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbDoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCB2YWx1ZSBkZWxldGUsIGFuZCBkd29yZCBlZGl0IHN1cHBvcnQuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jLCBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURlY29kZSBzdHJlYW0gbnVtYmVyIGZyb20gQVZJIGZyYW1lIGRhdGEgYW5kIGFzc2lnbiB0aGUgZGF0YSB0bwoJYXBwcm9wcmlhdGUgc3RyZWFtcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgaW5jbHVkZS9zaGVsbGFwaS5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNvcnJlY3QgcmV0dXJuIHR5cGUgb2YgU0hGaWxlT3BlcmF0aW9uQS9XLgoKCSogZGxscy9zZXR1cGFwaS9wYXJzZXIuYywgZGxscy9zZXR1cGFwaS9zdHVicy5jLCBpbmNsdWRlL3NldHVwYXBpLmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglNU1ZDIHBvcnRpbmcgZml4ZXMuCgoJKiBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5LnNnbWw6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRHJvcCBwYXJhZ3JhcGggZGVzY3JpYmluZyBubyBsb25nZXIgZXhpc3RpbmcgcmVnY2xlYW4uZXhlLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgRElKT1lTVEFURSBhbmQgRElKT1lTVEFURTIgc3RydWN0cywgZmFpbCBvbiB1bmtub3duIHNpemVzLgoKMjAwNC0wMS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jOgoJQWx3YXlzIHRyeSB0byBsb2FkIHRoZSAzMi1iaXQgb3duZXIgZGxsIGluc3RlYWQgb2YgZGlyZWN0bHkgbG9hZGluZwoJdGhlIC5zbyBmaWxlIGZvciAxNi1iaXQgYnVpbHRpbnMuIE1ha2UgdGhlIGxvYWQgb3JkZXIgZm9yIDE2LWJpdCBkbGxzCglhbHdheXMgbWF0Y2ggdGhlIGxvYWQgb3JkZXIgb2YgdGhlaXIgMzItYml0IG93bmVyIChpZiBhbnkpLgoKCSogZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmg6CglBdm9pZCByZWZlcmVuY2luZyBhIHByaXZhdGUgaGVhZGVyIGluIGFub3RoZXIgZGxsLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2tlcm5lbC92eGQuYywgZGxscy9udGRsbC9yZWcuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglJbXBsZW1lbnRlZCBSZWdGbHVzaEtleSBhbmQgTnRGbHVzaEtleS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvRW4ucmMsIHByb2dyYW1zL3JlZ2VkaXQvZWRpdC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2ZyYW1ld25kLmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLAoJICBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLmg6CglaaW1sZXIgQXR0aWxhIDxoaWphc3p1QGhsZnNsaW51eC5odT4KCUFkZGVkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIG5ldyBrZXlzLgoKMjAwNC0wMS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRmlsbCBpbiB0aGUgY29sb3IgTWFza1NpemUgYW5kIEZpZWxkUG9zaXRpb24gZmllbGRzIGluIHRoZQoJTW9kZUluZm9CbG9jay4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnMvd2luZS9sb2FkZXIuYywgbGlicy93aW5lL3dpbmUuZGVmOgoJQWRkZWQgd2luZV9kbGxfZ2V0X293bmVyIGZ1bmN0aW9uIHRoYXQgcmV0cmlldmVzIHRoZSAzMi1iaXQgZGxsCgljb250YWluaW5nIGEgZ2l2ZW4gMTYtYml0IGRsbCBieSByZWFkaW5nIHRoZSBzeW1saW5rLCBzbyB0aGF0IHdlIGRvbid0CgluZWVkIHRvIGRsb3BlbiBpdC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJTWFrZSBzeW1saW5rcyBmb3IgMTYtYml0IGZpbGVzIHBvaW50IHRvIHRoZSAzMi1iaXQgc3ltbGluayBzbyB0aGF0Cgl0aGV5IGRvbid0IGNvbnRhaW4gYSBwYXRoLgoKCSogZGxscy91c2VyL3duZDE2LmMsIHdpbmRvd3MvbWRpLmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglTcGxpdCB1cCB0aGUgV2luMTYvMzIgTURJIHN1cHBvcnQgYSBiaXQuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU9uIGEgUkJfU0VUQkFORElORk8gbWVzc2FnZSBvbmx5IHJlZHJhdyB0aGUgcmViYXIgaWYgc29tZXRoaW5nCgljaGFuZ2VkLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglVc2UgYSBzdHJ1Y3QgYXMgc3BlY2lmaWVkIGluIHRoZSBWQkUgMy4wIHN0YW5kYXJkIGZvciB0aGUKCU1vZGVJbmZvQmxvY2suIENvZGUgd2lzZSB0aGlzIGlzIGEgTk9QLgoKCSogZGxscy9uZXRhcGkzMi9uYmNtZHF1ZXVlLmMsIGRsbHMvbmV0YXBpMzIvbmJ0LmMsCgkgIGRsbHMvbmV0YXBpMzIvbmV0Ymlvcy5oLCBpbmNsdWRlL25iMzAuaDoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUZpeCBjb21waWxpbmcgbmV0YXBpMzIgb24gTVNWQyB3aXRoIFBTREsgaGVhZGVycy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4IGNvbXBpbGF0aW9uIGlzc3VlIHdpdGggQUxTQSAwLjUuCgoJKiBkbGxzL2NhYmluZXQvY2FiaW5ldF9tYWluLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCXJlc3VsdDIgc2VlbXMgdG8gYmUgb3B0aW9uYWwsIG1ha2luZyBpdCAwIGFsbG93cyBJRSB0byBjb250aW51ZS4KCgkqIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVVwZGF0ZSB0aGUgbm90ZXMgb24gaG93IFdJTkUgdXNlcyB0aGUgU3lzdHJheSB1bmRlciBLREUuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUF2b2lkIGEgY3Jhc2ggaWYgdGhlIGRpYWxvZyBzdHlsZSBpcyBtaXNzaW5nLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBXaW0gTGV3aXMgPHdpbWxAaGhoaC5vcmc+CglDbGVhciBzdHJ1Y3Qgc29ja2FkZHJfaXB4IGRpcmVjdGx5IGluc3RlYWQgb2YganVzdCB0aGUgc2lweF96ZXJvCglmaWVsZC4KCgkqIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jOiBXaW0gTGV3aXMgPHdpbWxAaGhoaC5vcmc+CglFT1ZFUkZMT1cgZG9lcyBub3QgZXhpc3Qgb24gT3BlbkJTRC4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJU2V0IHRoZSAiYnl0ZXMgcGVyIHNjYW4gbGluZSIgZmllbGQgd2hlbiBnZW5lcmF0aW5nIHRoZSBtb2RlIGluZm8KCWJsb2NrLgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGRlZCBzdHViIGZvciBDZXJ0RnJlZUNlcnRpZmljYXRlQ29udGV4dC4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0l0LnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglDb21wbGV0ZWQgSXRhbGlhbiBsYW5ndWFnZSBzdXBwb3J0LgoKCSogZGxscy9uZXRhcGkzMi9uYnQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4IGNvbmZsaWN0aW5nIHJlZ2lzdHJ5IHZhbHVlIG5hbWVzLCBhbmQgdHJ5IGJvdGggV2luOXggYW5kIFdpbk5UCglsb2NhdGlvbnMgZm9yIE5ldEJUIHJlZ2lzdHJ5IHZhbHVlcy4KCgkqIGRsbHMva2VybmVsL2RldmljZS5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglQcm9wZXJseSBMMi1lbmNvZGUgdGhlIE5ldEJJT1Mgc2NvcGUgSUQgaW4gRGV2aWNlSW9fVk5CLCBzbwoJaXBjb25maWcuZXhlIGFuZCB3aW5pcGNmZy5leGUgZGlzcGxheSBpdC4KCgkqIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGQgdHJhY2luZywgYWRkIFdJTlMgY29uZmlndXJhdGlvbiB0byBHZXRBZGFwdGVyc0luZm8sIGNvcnJlY3QKCVNjb3BlSUQgcmVhZGluZyBpbiBHZXRGaXhlZEluZm8uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXaGVuIGNoZWNraW5nIGZvciBnZXRob3N0YnluYW1lX3JfNiBub3QgdHJ5IHRvIGNvbXBpbGUgYnV0IHRyeSB0bwoJbGluay4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJVXBkYXRlZCBjb25maWd1cmUgd2l0aCBhdXRvY29uZiAyLjU4LiBTZXQgdGhlIGJ1ZyByZXBvcnQgYWRkcmVzcy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnR5cGUuYzoKCUNvbW1lbnRlZCBvdXQgdGVzdHMgdGhhdCBhc3N1bWUgdGhhdCB0aGUgY3VycmVudCB5ZWFyIGlzIDIwMDMuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9DYS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRGUucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0VuLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9GaS5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRnIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX05sLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9QdC5yYywgd2luZG93cy9ub25jbGllbnQuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglNYWtlIHRoZSBkZWJ1ZyBtYXJrIHByaW50aW5nIHVuY29uZGl0aW9uYWwgaW5zdGVhZCBvZiBjb25kaXRpb25hbCB1cG9uCgl0aGUgIFNIRUxMIGRlYnVnIGNoYW5uZWwuICBNYWtlIG1hcmsgdGV4dCBvYnZpb3VzIGJ5IGNoYW5naW5nIHRoZQoJb3V0cHV0IHRleHQgdG8gJ0RlYnVnIG1hcmsgcmVxdWVzdGVkIGJ5IHVzZXInIGFuZCBhZGRpbmcgJ0RlYnVnIG1hcmsnCgl0byB0aGUgbWVudSByZXNvdXJjZSB0ZXh0LgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvSXQucmMsIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIEl0YWxpYW4gcmVzb3VyY2VzLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5oLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcxNi5jLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglSZW1vdmUgUFJJTlRETEdfR2V0RGVmYXVsdFByaW50ZXJOYW1lOyB1c2UgV2luMzIgR2V0RGVmYXVsdFByaW50ZXJBL1cKCWluc3RlYWQuCgoJKiBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBhIHN0cmF5IExlYXZlQ3JpdGljYWxTZWN0aW9uKCkuCgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglUcmFja2JhciByYW5nZSBzaG91bGQgYmUgZml4ZWQgb25seSBpbiB0aGUgY2FzZSBvZiBzdWNjZXNzZnVsCgltY2lTZW5kU3RyaW5nVy4gSXQncyBiZXR0ZXIgdG8gaW5pdGlhbGl6ZSBkd0NhbGxiYWNrIHBhcmFtZXRlciBpZgoJTUNJX05PVElGWSBpcyBzcGVjaWZpZWQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Dbi5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19aaC5yYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJSW1wbGVtZW50ZWQgT0ZOX09WRVJXUklURVBST01QVCBhbmQgT0ZOX0VYVEVOU0lPTkRJRkZFUkVOVCBmbGFncy4KCUNoYW5nZWQgSURMX09WRVJXUklURUZJTEUgc3RyaW5nIHJlc291cmNlIElEIHRvIElEU19PVkVSV1JJVEVGSUxFLgoJVXNlIHRoZSBleHRlbmRlZCBVSSBmb3IgdGhlICJMb29rIEluIiBjb21iby4KCVNlbGVjdCB0aGUgdGV4dCBpbiB0aGUgIkZpbGUgbmFtZSIgZmllbGQgYWZ0ZXIgZmlsbGluZyBpdC4KCjIwMDQtMDEtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21jaWF2aS9pbmZvLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaWF2aS9tbW91dHB1dC5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oLCBkbGxzL3dpbm1tL21jaWF2aS93bmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNdWNoIGltcHJvdmVkIG1jaWF2aSBkcml2ZXIuIEZpeGVkIHN5bmNocm9uaXphdGlvbiwgUklGRiBmaWxlIHdpdGgKCW1hbnkgc3RyZWFtcyBwYXJzaW5nLCBhZGRlZCBzdXBwb3J0IGZvciBzb21lIE1DSV9QVVQgYW5kIE1DSV9XSEVSRQoJY2FzZXMuCgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmMsIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGluY2x1ZGUvdmZ3Lmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIG1hbnkgTUNJV05ETV8gbWVzc2FnZXMgYW5kIHNvbWUgTUNJXyBjb21tYW5kcyBpbiB0aGUKCU1DSVduZENsYXNzIGltcGxlbWVudGF0aW9uLgoJTUNJV25kUmVnaXN0ZXJDbGFzcygpIHRha2VzIG5vIHBhcmFtZXRlcnMgYWNjb3JkaW5nIHRvIFBsYXRmb3JtIFNESwoJaGVhZGVycy4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVc2UgY29ycmVjdCBwb2ludGVyIHRvIGFuIGludGVybmFsIGRyaXZlciBkZXNjcmlwdGlvbi4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBNQ0lfU1lTSU5GTyBjb21tYW5kIFcgdG8gQSBtYXBwaW5nLgoKMjAwMy0xMi0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgZGxscy94MTFkcnYvd2luZG93LmMsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jOgoJU3RvcmUgd2luZG93IGljb25zIGluIHRoZSB3aW5kb3cgc3RydWN0dXJlIHNvIHRoYXQgV01fU0VUSUNPTiBjYW4gZG8KCXRoZSByaWdodCB0aGluZyAoYmFzZWQgb24gYSBwYXRjaCBieSBBcmljIFN0ZXdhcnQpLgoKCSogZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS90aW1lLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2lubW0uYywKCSAgaW5jbHVkZS9kaWdpdGFsdi5oLCBpbmNsdWRlL21tc3lzdGVtLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IG1hbnkgZnVuY3Rpb24gcHJvdG90eXBlcyBhbmQgZGF0YSB0eXBlcyBhY2NvcmRpbmcgdG8gUGxhdGZvcm0gU0RLCglkZWZpbml0aW9ucy4KCgkqIGRsbHMvbXN2aWRlby9tY2l3bmQuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tY2lhdmkvaW5mby5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYywKCSAgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaCwgZGxscy93aW5tbS9tY2lhdmkvd25kLmMsCgkgIGRsbHMvd2lubW0vd2lubW0uYywgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBVbmljb2RlLT5BTlNJIE1DSSBtZXNzYWdlIG1hcHBpbmcsIGltcGxlbWVudCBtY2lTZW5kQ29tbWFuZFcsIGZpeAoJYSBidWcgd2l0aCBhIHdpbmRvdyBjcmVhdGlvbiBiZWxvbmdpbmcgdG8gYW5vdGhlciBoSW5zdGFuY2UsIGFkZAoJc3VwcG9ydCBmb3IgTUNJX1dJTkRPVyBjb21tYW5kIGluIG1jaWF2aS5kcnYsIGFkZCBzdXBwb3J0IGZvciBNQ0lfUExBWQoJYW5kIE1DSV9TVE9QIGluIHRoZSBNQ0lXbmRDbGFzcyBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc2l6ZSBjYWxjdWxhdGlvbiBvbiByZWRpbSBpZiBvbGQgc2l6ZSB3YXMgMC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJSW1wcm92ZSBlcnJvciBtZXNzYWdlcyBpbiBPU1NfV2F2ZU91dEluaXQoKSBhbmQgT1NTX1dhdmVJbkluaXQoKSBhbmQKCXdhcm4gaW5zdGVhZCBvZiBhYm9ydGluZyBpbiBjYXNlIG9mIHByb2JsZW1zIHJlYWRpbmcgbWl4ZXIgaW5mby4KCgkqIGRsbHMvY2FiaW5ldC8uY3ZzaWdub3JlLCBkbGxzL2NhYmluZXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY2FiaW5ldC9jYWJpbmV0LnJjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBmaWxlIHZlcnNpb24gcmVzb3VyY2UuCgoJKiBkbGxzL3VzZXIvbXNnMTYuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSXNkaWFsb2dNZXNzYWdlMTYgbXVzdCBub3QgcHJvY2VzcyBtZXNzYWdlcyB0aGF0IGFyZSBub3QgaW50ZW5kZWQgZm9yCgl0aGUgZGlhbG9nIGJveC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVJlbW92ZSBEQ09NIGNvbmZpZyBmaWxlIGVudHJpZXMsIGFzIHRoZXkgaGF2ZSBubyBlZmZlY3QuCgoJKiBkbGxzL2tlcm5lbC9tb2R1bGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHRvbyBzdHJpY3QgaGVhZGVyIGNoZWNrIHRvIGVuYWJsZSBleGVjdXRpb24gb2YgaGFuZGNvZGVkIFBFCglleGVzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJUHJpbnQgZXhlIG5hbWUgd2hlbiBpbml0aWFsaXphdGlvbiBmYWlscy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJQWRkIG5ld2RldiwgdXBkYXRlZCBETXVzaWMgc2VjdGlvbiwgc21hbGwgZml4IHRvIGRwbmhwYXN0LgoKCSogZGxscy93aW5pbmV0L3VybGNhY2hlLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglSZW1vdmUgVVJMQ2FjaGVfRmluZEVudHJ5KCkgd2hpY2ggaXMgbm90IHVzZWQgYW55IGxvbmdlci4KCjIwMDMtMTItMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9uZXdkZXYvLmN2c2lnbm9yZSwKCSAgZGxscy9uZXdkZXYvTWFrZWZpbGUuaW4sIGRsbHMvbmV3ZGV2L21haW4uYywgZGxscy9uZXdkZXYvbmV3ZGV2LnNwZWM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaC5jemVrYWxsYUB1dG9yb250by5jYT4KCUFkZCBzdHViYmVkIHZlcnNpb24gb2YgbmV3ZGV2LmRsbC4KCgkqIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmMsIGluY2x1ZGUvd2luZ2RpLmg6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CgktIEFkZCBhIGJpdG1hcCByZXNvdXJjZSB3aXRoIHRoZSBmb250IGljb25zOiBUcnVlVHlwZSwgcHJpbnRlciwKCSAgT3BlblR5cGUgYW5kIFR5cGUgMS4gTW9kaWZ5IHRoZSBjb2RlIHNvIHRoYXQgdGhleSB3aWxsIGJlIHVzZWQgaWYgb3IKCSAgd2hlbiB0aGUgbmVlZGVkIGJpdHMgYXJlIHBhc3NlZCB0byB0aGUgRm9udEVudW1Qcm9jLgoJLSBVc2UgRW51bUZvbnRGYW1pbGllc0V4IGluc3RlYWQgb2YgRW51bUZvbnRGYW1pbGllcy4KCS0gRml4IHRoZSBmaXhtZSBpbiB0aGUgV01fTUVBU1VSRUlURU0gbWVzc2FnZSBoYW5kbGVyLgoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywgZGxscy9jYWJpbmV0L2NhYmluZXQuaCwKCSAgZGxscy9jYWJpbmV0L2NhYmluZXRfbWFpbi5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglNYWtlIHVzZSBvZi9oYW5kbGUgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUgZnVuY3Rpb24gRXh0cmFjdC4KCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYywgd2luZG93cy9tZGkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgTURJIGNoaWxkIGNyZWF0aW9uIHRlc3RzLgoKCSogbG9hZGVyL2t0aHJlYWQuYzogRGF2aWQgQmVjayA8ZGJlY2tAYmVja2dyb3VuZC5odT4KCUFkZGVkIFJGVEhSRUFEIGZsYWcgaW4gcmZvcmsgY2FsbC4KCgkqIGRsbHMvZGV2ZW51bS9jcmVhdGVkZXZlbnVtLmMsIGRsbHMvZGV2ZW51bS9kZXZlbnVtX21haW4uYywKCSAgZGxscy9kZXZlbnVtL21lZGlhY2F0ZW51bS5jLCBkbGxzL2RldmVudW0vcGFyc2VkaXNwbGF5bmFtZS5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyBpbiBJRmlsdGVyTWFwcGVyMjo6UmVnaXN0ZXJGaWx0ZXIuCgktIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyBpbiBERVZFTlVNX0lQcm9wZXJ0eUJhZ19SZWFkLgoJLSBGaXhlZCBOVUxMIHBvaW50ZXIgZGUtcmVmIGluIERsbFJlZ2lzdGVyU2VydmVyIHdoZW4gSUZpbHRlck1hcHBlcjIKCSAgaXMgbm90IHJlZ2lzdGVyZWQuCgktIEFsbG93ZWQgcmV0dXJuaW5nIHRoZSBtb25pa2VyIGluIElGaWx0ZXJNYXBwZXIyOjpSZWdpc3RlckZpbHRlci4KCS0gRW51bWVyYXRlIHNwZWNpYWwgY2F0ZWdvcmllcyB3aXRob3V0IGNhdXNpbmcgaW5maW5pdGUgbG9vcC4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmM6IFNhbWkgQWFyaW8gPHNhbWkuYWFyaW9Ac3VyZmV1LmZpPgoJRml4IHNvbWUgcmV0dXJuIHZhbHVlcyBvZiBkcGxheXggQVBJIGNhbGxzLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzoKCUZpeGVkIFJ0bFVud2luZCBzaWduYXR1cmUgKHJlcG9ydGVkIGJ5IFBpZXJyZSBkJ0hlcmJlbW9udCkuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gY29ycmVjdCByZXR1cm4gdmFsdWUgb2YgU0hHZXRQYXRoRnJvbUlETGlzdFtBV10oKSBmb3IgdmlydHVhbAoJICBmb2xkZXJzIGxpa2UgIk15IENvbXB1dGVyIgoJLSBjb3JyZWN0IHBhdGggcGFyc2luZyBpbiBJU0ZfRGVza3RvcF9mblBhcnNlRGlzcGxheU5hbWUoKQoJLSBoYW5kbGUgQ0xTSUQgcGF0aHMgaW4gSVNGX015Q29tcHV0ZXJfZm5QYXJzZURpc3BsYXlOYW1lKCkKCS0gcmV0dXJuIENMU0lEIHBhdGggaW4gSVNGX015Q29tcHV0ZXJfZm5HZXREaXNwbGF5TmFtZU9mKCkKCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJUmVhZCB0aGUgUG9saWN5e0FjY291bnQsUHJpbWFyeX1Eb21haW5JbmZvcm1hdGlvbiBmcm9tIHRoZSByZWdpc3RyeSwKCXJhdGhlciB0aGFuIGhhcmRjb2RpbmcgaXQgdG8gIkRPTUFJTiIuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOiBHZSB2YW4gR2VsZG9ycCA8Z2VAZ3NlLm5sPgoJRW5jbG9zZSBhcHBsaWNhdGlvbiBuYW1lIGluIGRvdWJsZSBxdW90YXRpb24gbWFya3MsIGFzIGl0IG1heSBjb250YWluCglzcGFjZXMuCgoJKiBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeGVkIG1lbSBsZWFrIG9uIGVycm9yIHBhdGguCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSmEucmM6CglWaWsgS3VtYXIgPHZpa0B6b25lODEuY29tPgoJRml4ZWQgTVMgVUkgR290aGljIGZvbnQgbmFtZXMuCgoJKiBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9ObC5yYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvcnNyYy5yYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnX05sLnJjLCBkbGxzL29sZWRsZy9yc3JjLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglUcmFuc2xhdGUgbXNybGUzMiBhbmQgb2xlZGxnIHJlc291cmNlcy4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU29ydCB0aGUgb3V0cHV0IG9mIHdjbWQncyBzZXQgY29tbWFuZC4KCgkqIGRsbHMvbnRkbGwvbnQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIGFuIFNJRCB3aGVuIEdldFRva2VuSW5mb3JtYXRpb24gaXMgY2FsbGVkIHdpdGggY2xhc3MKCVRva2VuT3duZXIuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglBZGRlZCBzdHVicyBmb3Igb3B0aW9ucyBDT05ORUNUX1RJTUVPVVQgYW5kIERBVEFfUkVDRUlWRV9USU1FT1VULgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEV0xfVVNFUiBtaWdodCBiZSB1c2VkIG90aGVyd2lzZSwgc28gdXNlIGFuIGludGVybmFsIHdpbmRvdyBwcm9wZXJ0eQoJZm9yIGRhdGEgc3RvcmFnZS4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IFppbWxlciBBdHRpbGEgPGhpamFzenVAaGxmc2xpbnV4Lmh1PgoJRml4ZWQgSHVuZ2FyaWFuIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jOiBTYW1pIEFhcmlvIDxzYW1pLmFhcmlvQHN1cmZldS5maT4KCUZpeGVkIGEgdHlwby4KCgkqIGRsbHMvbXNodG1sL21zaHRtbC5zcGVjOiBEYXZpZCBNaWxsZXIgPGNvbXBzb2xAcHRkLm5ldD4KCVJlbW92ZWQgZXhwbGljaXQgb3JkaW5hbHMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBbHNvIHJlbW92ZSBpbiB0aGUgRDNEIGNvZGUgdGhlIHBlZGFudGljIGNoZWNrIG9uIHRoZSBHZXRQcm9jQWRkcmVzcwoJZXh0ZW5zaW9uLgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywgZGxscy9xdWFydHovcmVnc3ZyLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBGaXggSUdyYXBoQnVpbGRlcjo6Q29ubmVjdERpcmVjdC4KCS0gUmVnaXN0ZXIgSUZpbHRlck1hcHBlciBhbmQgSUZpbHRlck1hcHBlcjIgaW4gRGxsUmVnaXN0ZXJTZXJ2ZXIuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL0l0LnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjLAoJICBwcm9ncmFtcy92aWV3L0l0LnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglVcGRhdGVkIEl0YWxpYW4gdHJhbnNsYXRpb25zLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglXaGVuIGEgZGlyZWN0b3J5IGlzIGVudGVyZWQgaW4gdGhlIDE2IGJpdHMgZmlsZSBkaWFsb2csIGl0IHNob3VsZCBub3QKCWJlIHJldHVybmVkIHRoZSB1c2VyLiBJbnN0ZWFkIHRoZSBkaXJlY3RvcnkgbXVzdCBiZSBjaGFuZ2VkIGFuZCB0aGUKCWRpYWxvZyB3b3JrIGZyb20gdGhlcmUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglSZWluaXRpYWxpemUgdGh1bWIgd2hlbiB0cmFja2JhciBzaXplIGlzIGNoYW5nZWQuCgoJKiB3aW5kb3dzL3dpbi5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglQcmV2ZW50IGZhbHNlIG1hdGNoZXMgaW4gV0lOX0ZpbmRXaW5kb3cuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWtldGVzdDogRmVyZW5jIFdhZ25lciA8d2ZlcmlAYWZhdmFudC5lbHRlLmh1PgoJU29sYXJpcyBzaCBwb3J0YWJpbGl0eSBmaXguCgoJKiBkbGxzL21zdmNydC90ZXN0cy9maWxlLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUZpeCB1bmRlbGV0ZWQgdGVtcG9yYXJ5IGZpbGUuCglDb3JyZWN0IGVycm9yIG1lc3NhZ2VzIGFuZCBjb21tZW50cywgYnJlYWsgbG9uZyBsaW5lcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJU2VhcmNoIGZvciBtaW5ndy0kcHJvZyB0b28uCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEaW1lbnNpb25zIHdpdGggY0VsZW1lbnRzPTAgYXJlIHZhbGlkIGFuZCBuZWVkZWQgYnkgSW5zdGFsbFNoaWVsZC4KCVNhZmVBcnJheUdldEVsZW1lbnQ6IGZpeGVkIEJTVFIgYW5kIExQVU5LTk9XTiBoYW5kbGluZy4KCUFkZGVkIHRlc3RjYXNlcyBmb3IgYWJvdmUgY2FzZXMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtb3JlIGFyZ3VtZW50IG51bWJlcnMgZm9yIF9pbnZva2UoKS4KCjIwMDMtMTItMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUk4L1VJOCBhcmUgYWNjZXB0ZWQgaW4gYXJyYXlzIGluIHJlY2VudCBuYXRpdmUgZGxscy4KCVRlc3QgVURUcywgYXJyYXkgY29lcmNpb24gYW5kIG5ldyBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSB0aGUgU2FmZUFycmF5IGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gY29lcmNpbmcgYXJyYXlzLgoJU2ltcGxpZnkgVmFyaWFudENoYW5nZVR5cGVFeC4KCVJlcGxhY2UgY2FsbHMgdG8gZHVtcF9WYXJpYW50KCkgd2l0aCBUUkFDRSdzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJld3JpdGU6IFN1cHBvcnQgSTgvVUk4LFJFQ09SRC4KCVN0b3JlIGFycmF5IGJvdW5kcyBpbiB0aGUgc2FtZSBvcmRlciBhcyBuYXRpdmUuCglBZGQgQ3JlYXRlRXgsIENyZWF0ZVZlY3RvckV4LCBWZWN0b3JGcm9tQnN0ciwgQnN0ckZyb21WZWN0b3IuCgoJKiB0b29scy93aW5lbWFrZXI6IEtpcmlsbCBTbWVsa292IDxraXJyQGxhbmRhdS5waHlzLnNwYnUucnU+CglBZGRlZCBtZmMvSW5jbHVkZSBhbmQgbWZjL3NyYyBhcyBwb3NzaWJsZSBwbGFjZXMgZm9yIGluY2x1ZGVzIGFuZCB0aGUKCWxpYnJhcnkuCgoJKiBkbGxzL21zdmNydC9zY2FuZi5oLCBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUGF0Y2ggYW5kIHRlc3QgZm9yIHNjYW5mICVpLgoKCSogZGxscy9udGRsbC90ZXN0cy9lbnYuYywgZGxscy9udGRsbC90ZXN0cy9sYXJnZV9pbnQuYywKCSAgZGxscy9udGRsbC90ZXN0cy9wYXRoLmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvc3RyaW5nLmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUNoZWNrIGlmIGEgZnVuY3Rpb24gZXhpc3RzIGJlZm9yZSB0ZXN0aW5nIGl0LgoKCSogZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vbWNpd25kLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgaW5jbHVkZS92ZncuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgc3VwcG9ydCBmb3IgbWFueSBNQ0lXbmRDbGFzcyBNQ0lfIGFuZCBNQ0lXTkRNXyBtZXNzYWdlcy4KCUNvbnZlcnQgTUNJV25kQ2xhc3MgaW1wbGVtZW50YXRpb24gdG8gdW5pY29kZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZmlsZXMvZmlsZS5jOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglNb3ZlRmlsZSByZXR1cm5zIEVSUk9SX0FMUkVBRFlfRVhJU1RTLCBub3QgRVJST1JfRklMRV9FWElTVFMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgVmFySW50LCBWYXJQb3cuCglBZGRlZCBSNCAoZmxvYXQpIHN1cHBvcnQgdG8gVmFyQWRkLgoJQWRkZWQgREFURSBzdXBwb3J0IHRvIFZhclN1Yi4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgcHJvZ3JhbXMvd2luZWRiZy9icmVhay5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2RiX2Rpc2FzbS5jLCBwcm9ncmFtcy93aW5lZGJnL2RiZy55LAoJICBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmwsIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kaXNwbGF5LmMsIHByb2dyYW1zL3dpbmVkYmcvZXhwci5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2luZm8uYywgcHJvZ3JhbXMvd2luZWRiZy9pbnR2YXIuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYywgcHJvZ3JhbXMvd2luZWRiZy9tb2R1bGUuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9tc2MuYywgcHJvZ3JhbXMvd2luZWRiZy9yZWdpc3RlcnMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zb3VyY2UuYywgcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmMsIHByb2dyYW1zL3dpbmVkYmcvdHlwZXMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gZ2V0IHJpZCBvZiB3aW5lZGJnIGludGVybmFsIGNoYW5uZWxzIGZvciBvdXRwdXQKCS0gbW92ZSBhbGwgc3RhbmRhcmQgKG9sZCBNRVNHIGNoYW5uZWwpIG91dHB1dCB0byBzdGRvdXQKCS0gbW92ZSBhbGwgb3RoZXIgb3V0cHV0cyAoVFJBQ0UsIFdBUk4uLi4pIHRvIGEgbmV3IHdpbmUgZGVidWdnaW5nCgkgIGNoYW5uZWwgKHdpbmVkYmcpCgktIHJlcGxhY2VkIHF1aXRlIGEgZmV3ICNpZmRlZjplZCBvdXQgb3V0cHV0IHRvIG5ldyBjaGFubmVscyAobWFpbmx5IGluCgkgIHN5bWJvbCBtYW5hZ2VtZW50IGFyZWEuLi4pCgktIGFkZGVkIGEgbmV3IG1haW50ZW5hbmNlIGNvbW1hbmRzIHRvIGVhc2UgdXAgZGVidWdnaW5nCgktIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbiBhY2NvcmRpbmdseQoKCSogZGxscy93aW5tbS93aW5tbV9Fbi5yYywgZGxscy93aW5tbS93aW5tbV9Fcy5yYywKCSAgZGxscy93aW5tbS93aW5tbV9Gci5yYywgZGxscy93aW5tbS93aW5tbV9JdC5yYywKCSAgZGxscy93aW5tbS93aW5tbV9QdC5yYywgZGxscy93aW5tbS93aW5tbV9SdS5yYywKCSAgZGxscy93aW5tbS93aW5tbV9Tay5yYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRpbmcgZml4IGZvciB3aW5tbSByZXNvdXJjZXMgKHBhdGNoIGJ5IEZpbGlwIE5hdmFyYSkuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9oZWFwLmM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJW0dsb2JhbHxMb2NhbF1SZUFsbG9jIGRvbid0IGZhaWwgd2l0aCBzaXplIDAuCglGaXhlZCB0eXBvcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCU9sZGVyIHZlcnNpb25zIG9mIGZyZWV0eXBlIGRvIG5vdCBoYXZlIEZUX0dldF9GaXJzdF9DaGFyLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeGVkIG9wdGlvbnMgZm9yIHdpbmVidWlsZC4KCgkqIGRsbHMva2VybmVsL2RldmljZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUV4cGxpY2l0bHkgY2xlYXIgdm04NiBmbGFnIGluIERJT0NSZWdzXzJfQ09OVEVYVC4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUFkZGVkIHNucHJpbnRmIHRlc3QuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUG9ydGluZyBmaXguCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglBZGRlZCBpbmNsdWRlIG9mICJ3aW5lL3BvcnQuaCIgZm9yIE1TVkMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL3dpbmVhbHNhLmRydi5zcGVjOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRXhwb3J0ZWQgd2lkTWVzc2FnZSBmdW5jdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVlldCBhbm90aGVyIHVzZWZ1bCBoaW50IGZvciBtaXNzaW5nIHN0ZG9sZTMyLnRsYi4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglIVFRQX0RlYWxXaXRoUHJveHk6IE9ubHkgYWRkIGh0dHA6Ly8gdG8gcHJveHkgc3RyaW5nIHdoZW4gbmVlZGVkLgoKCSogZGxscy9vbGVhdXQzMi92YXJ0eXBlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGNsZWFyIHRoZSBwb2ludGVyIHdlIGp1c3QgYWxsb2NhdGVkLCBqdXN0IHRoZSBmaXJzdCBieXRlIGl0Cglwb2ludHMgdG8uCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgcG90ZW50aWFsbHkgdW5pbml0aWFsaXNlZCBzei4KCgkqIHRvb2xzL3dpbmVtYWtlcjogS2lyaWxsIFNtZWxrb3YgPGtpcnJAbGFuZGF1LnBoeXMuc3BidS5ydT4KCUFkZGVkIHRlc3QgZm9yIC1mbXMtZXh0ZW5zaW9ucyB0byBnZW5lcmF0ZWQgY29uZmlndXJlLmFjLgoKMjAwMy0xMi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAzMTIxMi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMy0xMi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci90ZXh0LmM6IEdlIHZhbiBHZWxkb3JwIDxnZUBnc2Uubmw+CglQYXNzIGR0cCBwYXJhbWV0ZXIgb24gZnJvbSBEcmF3VGV4dEV4QSB0byBEcmF3VGV4dEV4Vy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBpbmNsdWRlL3dpbnN2Yy5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBoYW5kbGluZyBvZiBzb21lIHNlcnZpY2UgZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kLmg6IFJlbW92ZWQgdXNlbGVzcyAjaWZkZWYgV0lORUxJQi4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL01ha2VmaWxlLmluOgoJRGVmaW5lIF9fV0lORV9fIHRvIGVuYWJsZSBleHRlbnNpb25zIChzcG90dGVkIGJ5IE1hcnRpbiBGdWNocykuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXBkYXRlIHRoZSBkbGxzLyBzZWN0aW9uLiBSZW1vdmUgZ2RpL3ssZW5ofW1mZHJ2LCB0aGV5IGFyZW4ndAoJRExMcy4gTGlzdCB0aGUgZG9jdW1lbnRhdGlvbi9zYW1wbGVzIGRpciBhcyB3ZWxsLgoKCSogTWFrZS5ydWxlcy5pbjogQWRkIERFRlMgdG8gdGhlIHJlc291cmNlIGNvbXBpbGVyIGZsYWdzLgoKCSogbGlicy93aW5lL2xkdC5jOiBBdm9pZCBjb21tb24gc3ltYm9scyBvbiBEYXJ3aW4vTWFjIE9TIFguCgoJKiBkbGxzL2tlcm5lbC9yZXNvdXJjZS5jOgoJQWRkZWQgZXhjZXB0aW9uIGhhbmRsZXJzIGluIEZpbmRSZXNvdXJjZUV4QS9XIChiYXNlZCBvbiBhIHBhdGNoIGJ5CglSaWNoYXJkIENvaGVuKS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9udGRsbC9yZXNvdXJjZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRyeSBub3QgdG8gZGlzcGxheSB1bmluaXRpYWxpemVkIGRhdGEgaW4gdHJhY2VzIChmb3VuZCBieSBWYWxncmluZCkuCgoJKiBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglSZW1vdmUgZmxhdCBzY3JvbGxiYXIgc3R1YiBmaXhtZXMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUFkZGVkIGltcGxpYiBydWxlIGZvciBidWlsZGluZyBpbXBvcnQgbGlicy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBKZXJyeSBKZW5raW5zIDxKZXJyeV9KX0plbmtpbnNAaG90bWFpbC5jb20+CglGaXggbWFuYWdlZCBzdGF0ZSBvZiBzb21lIHdpbmRvd3MuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogQW5kcmV3IGRlIFF1aW5jZXkgPGFkcV9kdmJAbGlkc2tpYWxmLm5ldD4KCS0gSW1wbGVtZW50ZWQgSEVMUERJUiBzdWJrZXlzIHByb3Blcmx5IGluIFJlZ2lzdGVyVHlwZUxpYigpLgoJLSBJbXBsZW1lbnRlZCBVblJlZ2lzdGVyVHlwZUxpYigpLgoJLSBGaXhlZCB2YXJpb3VzIG1pbm9yIGJ1Z3MuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBpbmNsdWRlL3VybG1vbi5oLAoJICBpbmNsdWRlL3VybG1vbi5pZGw6CglLaXJpbGwgU21lbGtvdiA8a2lyckBsYW5kYXUucGh5cy5zcGJ1LnJ1PgoJQWRkZWQgQ3JlYXRlQXN5bmNCaW5kQ3R4IGFuZCBJc0FzeW5jTW9uaWtlciBzdHVicy4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIGluY2x1ZGUvd2lubnQuaCwgbGlicy91bmljb2RlL01ha2VmaWxlLmluOgoJR2UgdmFuIEdlbGRvcnAgPGdlQGdzZS5ubD4KCVdoZW4gYnVpbGRpbmcgYSBQRSBETEwgKE1pbkdXKSwgdmFyaWFibGVzIGV4cG9ydGVkIGZyb20gYSBETEwgbXVzdCBiZQoJZXhwbGljaXRseSBtYXJrZWQgYXMgZGxsaW1wb3J0IHdoZW4gdXNpbmcgdGhlbS4KCgkqIGRsbHMva2VybmVsL3B0aHJlYWQuYzoKCVJldHVybiBhbiBlcnJvciBpbiB3aW5lX3B0aHJlYWRfbXV0ZXhfdW5sb2NrIGlmIHdlIGRvbid0IG93biB0aGUKCWNyaXRpY2FsIHNlY3Rpb24sIHRoaXMgc2hvdWxkIGF2b2lkIHRyb3VibGUgY2F1c2VkIGJ5IGEgbG9ja2luZyBidWcKCWluc2lkZSBYbGliLgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzE2LmgsCgkgIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuaCwKCSAgZGxscy9jb21tZGxnL2NvbG9yZGxnMTYuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jLAoJICBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZy5oLCBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmMsCgkgIGRsbHMvY29tbWRsZy9nZW5lcmljLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5oLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcxNi5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJLSBUaGUgbGFzdCBvZiB0aGUgbWFqb3IgV2luMTYvMzIgc3BsaXQgZm9yIGNvbW1kbGcgKGZvciByZWFsIHRoaXMKCSAgdGltZSkuCgktIE1vdmVkIG1vc3Qgb2YgdGhlIDE2Yml0IHN0dWZmIHRvIGNkbGcxNi5oLgoJLSBBIGZldyBzbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvdXNlci9sc3RyLmM6CglNYWtlIENoYXJ7TG93ZXIsVXBwZXJ9QSBjYWxsIENoYXJ7TG93ZXIsVXBwZXJ9QnVmZkEuCglTbWFsbCBvcHRpbWl6YXRpb24gdG8gYXZvaWQgYSBtZW1vcnkgYWxsb2NhdGlvbi4KCUZpeGVkIHNpZ24gZXh0ZW5zaW9uIGluIENoYXJ7TG93ZXIsVXBwZXJ9QSAocmVwb3J0ZWQgYnkgQW5kcmVhcwoJUm9zZW5iZXJnKS4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOgoJQXZvaWQgbG9uZyBsb25nIGNvbnN0YW50cyAocmVwb3J0ZWQgYnkgR2VyYWxkIFBmZWlmZXIpLgoJQWRkZWQgYSBmZXcgbWlzc2luZyBwYXJlbnRoZXNlcyBpbiBtYWNyb3MuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBVcmwgQ2FjaGUgaW1wcm92ZW1lbnRzLgoJLSBJbiBJbnRlcm5ldHtTZXQsUXVlcnl9T3B0aW9uIGZ1bmN0aW9ucywgaEludGVybmV0IGNhbiBiZSBOVUxMLgoJLSBBZGQgdHJhY2VzIHRvIEludGVybmV0KiBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogVmlrIEt1bWFyIDx2aWtAem9uZTgxLmNvbT4KCUFkZGVkIGV1Y0pQIGNoYXJzZXQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSmEucmMsCgkgIG9iamVjdHMvZ2Rpb2JqLmM6CglWaWsgS3VtYXIgPHZpa0B6b25lODEuY29tPgoJRm9udCBjaGFuZ2VzIGZyb20gTVMgUCBHb3RoaWMgdG8gTVMgVUkgR290aGljLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfSmEucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCVZpayBLdW1hciA8dmlrQHpvbmU4MS5jb20+CglBZGRlZCBKYXBhbmVzZSB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bHN0ci5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgUnRsTnRTdGF0dXNUb0Rvc0Vycm9yTm9UZWIsIFJ0bEdldC9TZXQvUmVzdG9yZUxhc3RXaW4zMkVycm9yLAoJUnRsR1VJREZyb21TdHJpbmcsIFJ0bFN0cmluZ0Zyb21HVUlELgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglKZXJlbXkgU2hhdyA8amVyZW15LnNoYXdAbGluZG93cy5jb20+CglNb3ZlIHRoZSBkYXRhIGFyb3VuZCB3aGVuIHRoZSByaW5nIGJ1ZmZlciBpcyByZXNpemVkIHNvIHRoYXQgdGhlIGVtcHR5CgltZXNzYWdlcyBhcmUgYmV0d2VlbiB0aGUgdG9zYXZlIGFuZCB0b2dldCBpbmRleGVzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeGVkIG1pc3NpbmcgaW5pdGlhbGl6YXRpb25zIG9mIHN0cnVjdCBTSEVMTEVYRUNVVEVJTkZPLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBmaWxlcy9maWxlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmVkIGFsbCByZW1haW5pbmcgY29uc29sZSByZWxhdGVkIGNvZGUgdG8gZGxscy9rZXJuZWwgZGlyZWN0b3J5LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IHR5cGVzIGluIFdTQUh0b25sLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUxpc3QgdGhlIHRvb2xzIHN1YmRpcnMgYXMgd2UgZG8gZm9yIGFsbCB0aGUgb3RoZXJzLgoJVXBkYXRlIGRlc2NyaXB0aW9uIG9mIHRoZSBtaXNjLyBkaXIuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2Fib3V0LmMsIHByb2dyYW1zL3JlZ2VkaXQvY2hpbGR3bmQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgbW9zdCBzdHJpbmcgc2l6ZSBsaW1pdGF0aW9ucy4KCUJldHRlciBlcnJvciBoYW5kbGluZy4gTGVzcyBsaXN0dmlldyBmbGlja2VyLgoJQSBidW5jaCBvZiBzdHlsZSBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLgoKMjAwMy0xMi0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci93aW5wcm9jLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2NsYXNzLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmMsCgkgIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy93aW4uYzoKCVN0b3JlIGEgcG9pbnRlciB0byB0aGUgY2xpZW50LXNpZGUgY2xhc3Mgc3RydWN0dXJlIGluIHRoZSBzZXJ2ZXIgYW5kCglyZXR1cm4gaXQgb24gY3JlYXRlX3dpbmRvdyBhbmQgZGVzdHJveV9jbGFzcy4KCU9ubHkgY3JlYXRlIGEgc2luZ2xlIGluc3RhbmNlIG9mIHRoZSBkZXNrdG9wIGNsYXNzIGZvciB0aGUgd2hvbGUKCXNlc3Npb24uCglBZGRlZCBzb21lIG1pc3NpbmcgbG9ja2luZyBpbiB0aGUgY2xpZW50LXNpZGUgY2xhc3MgbWFuYWdlbWVudC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJT29wcyAtIFZUX0VNUFRZLT5WVF9SRUNPUkQgaXMgbm90IGFsbG93ZWQuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvb2xlYXV0MzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydHlwZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRlc3QgYWxtb3N0IGFsbCBvZiB0aGUgbG93IGxldmVsIHZhcmlhbnQgZnVuY3Rpb25zCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5oLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglEbyBjb252ZXJzaW9ucyBiZXR3ZWVuIHRoZSBmb250IHNpemUgc3BlY2lmaWVkIGluIHBvaW50cyAob3IKCWRlY2lwb2ludHMpIGFuZCBoZWlnaHQgc3BlY2lmaWVkIGluIGxvZ2ljYWwgdW5pdHMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrMi5oOgoJS2lyaWxsIFNtZWxrb3YgPGtpcnJAbGFuZGF1LnBoeXMuc3BidS5ydT4KCUFkZGVkIHN0dWIgYW5kIHByb3RvdHlwZSBmb3IgV1NBSm9pbkxlYWYuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy9vbGVhdXQzMi92YXJ0eXBlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVpbXBsZW1lbnQvZG9jdW1lbnQgZXZlcnkgbG93IGxldmVsIHZhcmlhbnQgZnVuY3Rpb24uCglJbXBsZW1lbnQgREVDSU1BTCwgSTgsIFVJOCB0eXBlcyBhbmQgb3RoZXIgbWlzc2luZyBjb252ZXJzaW9ucy4KCVZhcmlhbnRDaGFuZ2VUeXBlOiBVc2UgTE9DQUxFX1VTRVJfREVGQVVMVCBhcyBwZXIgTVNETi4KCVZhcmlhbnRDaGFuZ2VUeXBlRXg6IFN1cHBvcnQgbmV3IHR5cGVzLCBwYXNzIHByb3BlciBmbGFncy4KCVZhck51bUZyb21QYXJzZU51bTogU3VwcG9ydCBWVF9ERUNJTUFMIGFzIG91dHB1dC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgV2F2ZUluIHN1cHBvcnQuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglFbmFibGUgdGhlIGRpc3BsYXkgb2YgYSB0cnVlIHR5cGUgYml0bWFwIGZvciB0cnVlIHR5cGUgZm9udHMuCgoJKiBkbGxzL25ldGFwaTMyL3drc3RhLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggaW5jb3JyZWN0IGNhbGN1bGF0aW9uIG9mIHRyYW5zcG9ydF9hZGRyLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBjcmFzaCBpZiBscERlcGVuZGVuY2llcyBpcyBOVUxMLgoKCSogZGxscy9jcnlwdDMyL21haW4uYywgaW5jbHVkZS93aW5jcnlwdC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IENyeXB0UmVnaXN0ZXJPSURGdW5jdGlvbiBhbmQgQ3J5cHRTSVBBZGRQcm92aWRlci4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IEplcmVteSBTaGF3IDxqZXJlbXkuc2hhd0BsaW5kb3dzLmNvbT4KCUFkZCBhICdcclxuJyB0byBscHN6SGVhZGVycyBpZiBpdCBpcyBub3QgYWxyZWFkeSB0ZXJtaW5hdGVkIGJ5CgknXHJcbicuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6IEZyYW5rIDxmLmdvY2tlbEB0LW9ubGluZS5kZT4KCUZpeGVkIHNpemUgY2hlY2sgaW4gR2V0Q29tbUNvbmZpZygpLgoKCSogcHJvZ3JhbXMvdmlldy92aWV3LmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCS0gRml4IG9ic29sZXRlIGNvbW1lbnRzIGFib3V0IHdpbmRvd3N4LCBjb21tZGxnLgoJLSBJbmNyZWFzZSBmaWxlbmFtZSBsZW5ndGggdG8gTUFYX1BBVEguCgktIFNldCB0aGUgd2luZG93cyBleHRlbnQgYmVmb3JlIHBsYXlpbmcgdGhlIG1ldGFmaWxlLgoJLSBEb24ndCBoYXJkY29kZSBsb2dwaXhlbHMgdG8gOTYuCgoJKiBkbGxzL3NoZWxsMzIvY29udHJvbC5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CgktIENoZWNrIEZpbmRGaXJzdEZpbGUgYWdhaW5zdCBJTlZBTElEX0hBTkRMRV9WQUxVRSBub3QgMC4KCS0gRGlzcGxheSB3aW5kb3cgJiBtZXNzYWdlYm94IGV2ZW4gaWYgdGhlcmUgYXJlIG5vIGFwcGxldHMuCgoyMDAzLTEyLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3Rlc3RzL2NsYXNzLmM6CglBZGRlZCB0ZXN0cyBmb3IgY2xhc3Mgc3R5bGUgYW5kIGluc3RhbmNlIGhhbmRsaW5nLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywKCSAgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbGlzdGJveC5jLAoJICBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy9zdGF0aWMuYywKCSAgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYzoKCVN5c3RlbSBjbGFzc2VzIG11c3Qgbm90IGhhdmUgdGhlIENTX0dMT0JBTENMQVNTIHN0eWxlLgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3VzZXIvd2lucHJvYy5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NsYXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmMsCgkgIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy93aW4uYzoKCUFkZGVkIHdpbmRvdyBjbGFzc2VzIGluIHRoZSBzZXJ2ZXIsIGFuZCBzdXBwb3J0IGZvciBpbnRlci1wcm9jZXNzCglHZXRDbGFzc1dvcmQvTG9uZyAoYmFzZWQgb24gYSBwYXRjaCBieSBNaWtlIE1jQ29ybWFjaykuCglWYXJpb3VzIGZpeGVzIHRvIHRoZSBjbGFzcyBpbnN0YW5jZSBoYW5kbGluZy4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci90cmFjZS5jOgoJUHJpbnQgbmFtZXMgZm9yIFdpbjMyIGVycm9ycyB0b28sIHBsdXMgYSBmZXcgbW9yZSBzdGF0dXMgY29kZXMuCgoJKiBkbGxzL3VzZXIvZGlhbG9nMTYuYywgd2luZG93cy9kaWFsb2cuYzoKCUFuZHJlYXMgUm9zZW5iZXJnIDxzb25peDIwMDNAY3RmLXouZGU+CglQb2ludCBzaXplIGluIERMR19URU1QTEFURSBtYXkgYmUgbmVnYXRpdmUuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU29ydCB0aGUgbGlzdHZpZXcgd2hlbiBjbGlja2luZyB0aGUgTmFtZSBvciBUeXBlIGhlYWRlcnMuCgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3Igc29tZSBNQ0lXTkRGXyBzdHlsZXMsIGluZGljYXRlIHRoYXQgd2UgZG8gbm90IHN1cHBvcnQKCU1DSVdORE1fKiBtZXNzYWdlcyBhdCBhbGwuCgoJKiB3aW5kb3dzL2NsYXNzLmM6CglNYWRlIGFsbCB0aGUgUmVnaXN0ZXJDbGFzcyBhbmQgR2V0Q2xhc3NJbmZvIHZhcmlhbnRzIGNhbGwgdGhlCgljb3JyZXNwb25kaW5nIEV4IGZ1bmN0aW9uLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywKCSAgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL3dpbi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgaW50ZXItcHJvY2VzcyBHZXRXaW5kb3dXb3JkLgoJRG8gYmV0dGVyIHJhbmdlIGNoZWNraW5nIG9uIHRoZSB3aW5kb3cgZXh0cmEgYnl0ZXMuCgoJKiBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglBZGRlZCBzZXRfd2luMzJfZXJyb3IoKSBmb3IgZXJyb3IgY29kZXMgdGhhdCBkb24ndCBoYXZlIGFuIE5UIHN0YXR1cwoJZXF1aXZhbGVudC4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CgktIEltcGxlbWVudGF0aW9uIG9mIEhDUl9HZXRFeGVjdXRlQ29tbWFuZEV4VyBmb3IgaW50ZXJuYWwgdXNlLgoJLSBOZXcgaW5saW5lIGZ1bmN0aW9uICBfX1NIQ2xvbmVTdHJBdG9XLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEFuZHJldyBkZSBRdWluY2V5IDxhZHFfZHZiQGxpZHNraWFsZi5uZXQ+CglVcHdhcmRzIHRyYXZlcnNhbCBvZiBpbmhlcml0YW5jZSB0cmVlIGRpZG4ndCBvY2N1ciBmb3IgZGlzcGF0Y2gKCWludGVyZmFjZXMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXggYSBjb3VwbGUgb2YgdGVzdHMgZm9yIHcyayAoUnVzc2lhbikuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb24ndCBjYWxsIEdldFdpbmRvd0xvbmcgZm9yIGV2ZXJ5IGNvbXBhcmlzb24gd2hpbGUgc29ydGluZy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJZiBhIGZvbnQgaGFzIGEgdmVyc2lvbiAwIE9TMiB0YWJsZSB0aGVuIFdpbmRvd3MgdXNlcyBBTlNJX0NIQVJTRVQgaWYKCXRoZSBmaXJzdCBjaGFyY29kZSA8IDB4MTAwLCBlbHNlIGl0IHVzZXMgU1lNQk9MX0NIQVJTRVQuICBCYXNlZCBvbiBhCglwYXRjaCBieSBSZWluIEtsYXplcy4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBhIGZldyBzb29uLXRvLWJlLWltcGxlbWVudGVkIGZ1bmN0aW9ucy4KCjIwMDMtMTItMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXggdGhlIHRlc3RzIHRvIHBhc3Mgd2hlbiBsb2NhbGUgc2V0dGluZ3MgYXJlIHVzZXItb3ZlcnJpZGVuLgoJRml4IHRob3NlIHRlc3RzIHdoaWNoIHBhc3Mgbm93LgoJVGVzdCBjb3B5aW5nLCBmb3JtYXR0aW5nLCBWYXJBYnMsIFZhck5vdC4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi9wYXJzZWR0LmMsIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5oLAoJICBkbGxzL29sZWF1dDMyL3Jlc291cmNlLmgsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBjb252ZXJzaW9ucyBiZXR3ZWVuIGRhdGVzIGFuZCBzdHJpbmdzLgoJUmVtb3ZlIHRoZSBmaW5hbCBjcnVmdCBhc3NvY2lhdGVkIHdpdGggdGhlIG9sZCBkYXRlIGNvZGUKCUJQQidzOiBSb2xsIG1pbGxpc2Vjb25kcyBjb3JyZWN0bHk7IExPQ0FMRV9OT1VTRVJPVkVSUklERSBmb3IgbnVtCglwYXJzaW5nLgoJSW1wbGVtZW50IFZhckFicyBhbmQgVmFyTm90LgoKMjAwMy0xMi0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUltcGxlbWVudGVkIEdldFRpdGxlQmFySW5mby4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvY2hpbGR3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9lZGl0LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvZnJhbWV3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9saXN0dmlldy5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uYywgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5jLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmgsIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZWZvcm1hdCByZWdlZGl0IGluIGEgY29uc2lzdGVudCBtYW5uZXIuCgoJKiBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywKCSAgZGxscy9vbGUzMi9vbGUzMl9tYWluLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBGaXggSU1lbUFsbG9jX0ZyZWUgd2hlbiBJTWVtQWxsb2NfQWxsb2MgaGFzbid0IHlldCBiZWVuIGNhbGxlZCBhbmQKCSAgZGVidWdnaW5nIGlzIG9uLgoJLSBGaXggT2xlTWV0YWZpbGVQaWN0RnJvbUljb25BbmRMYWJlbCAoZml4ZXMgYXR0YWNobWVudHMgaW4gT3V0bG9vazJrKS4KCS0gSW1wbGVtZW50IE9sZVRyYW5zbGF0ZUFjY2VsZXJhdG9yLgoJLSBNb3ZlIE9sZUNyZWF0ZSBhbmQgYSBsb2FkIG9mIFByb3BWYXJpYW50IGZ1bmN0aW9ucyBvdXQgb2Ygc3R1YnMgZmlsZS4KCS0gQ2hhbmdlIE9sZUNyZWF0ZSB0byBhIHNlbWktc3R1Yi4KCgkqIGRsbHMvdXh0aGVtZS9NYWtlZmlsZS5pbiwgZGxscy91eHRoZW1lL21zc3R5bGVzLmMsCgkgIGRsbHMvdXh0aGVtZS9tc3N0eWxlcy5oLCBkbGxzL3V4dGhlbWUvc3lzdGVtLmM6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUxvYWQsIHZhbGlkYXRlIGFuZCByZXRyaWV2ZSBhIGZldyBwcm9wZXJ0aWVzIGZyb20gYW4gbXNzdHlsZXMgdGhlbWUuCgoJKiBwcm9ncmFtcy9jbG9jay9EYS5yYywgcHJvZ3JhbXMvY2xvY2svRGUucmMsIHByb2dyYW1zL2Nsb2NrL0VuLnJjLAoJICBwcm9ncmFtcy9jbG9jay9Fcy5yYywgcHJvZ3JhbXMvY2xvY2svRmkucmMsIHByb2dyYW1zL2Nsb2NrL0ZyLnJjLAoJICBwcm9ncmFtcy9jbG9jay9IdS5yYywgcHJvZ3JhbXMvY2xvY2svSXQucmMsCgkgIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9ObC5yYywKCSAgcHJvZ3JhbXMvY2xvY2svUHQucmMsIHByb2dyYW1zL2Nsb2NrL1JFQURNRSwgcHJvZ3JhbXMvY2xvY2svUnUucmMsCgkgIHByb2dyYW1zL2Nsb2NrL1NpLnJjLCBwcm9ncmFtcy9jbG9jay9Tay5yYywgcHJvZ3JhbXMvY2xvY2svU3cucmMsCgkgIHByb2dyYW1zL2Nsb2NrL1RPRE8sIHByb2dyYW1zL2Nsb2NrL1RoLnJjLCBwcm9ncmFtcy9jbG9jay9XYS5yYywKCSAgcHJvZ3JhbXMvY2xvY2svWmgucmMsIHByb2dyYW1zL2Nsb2NrL2Nsb2NrX3Jlcy5oLAoJICBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5oLAoJICBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uaCwKCSAgcHJvZ3JhbXMvY2xvY2svd2luY2xvY2suYywgcHJvZ3JhbXMvY2xvY2svd2luY2xvY2suaDoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCS0gSW1wbGVtZW50ICdDaG9vc2UgZm9udCcsICdObyB0aXRsZScsICdBbHdheXMgb24gVG9wJy4KCS0gUGFpbnQgdG8gb2Zmc2NyZWVuIGJpdG1hcCB0byBlbGltaW5hdGUgZmxpY2tlci4KCS0gUHV0ICdBbHdheXMgb24gdG9wJyBvbiB0aGUgbWFpbiBtZW51IG5vdCB0aGUgc3lzdGVtIG1lbnUuCgktIERhdGUgZm9ybWF0IHNob3VsZCBiZSBEQVRFX0xPTkdEQVRFLgoJLSBMIGJ1dHRvbiBkcmFnIHRvIG1vdmUuCgktIENvc21ldGljIGFkanVzdG1lbnRzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUluY2x1ZGUgdGVzdHMgZm9yIE1vdmVGaWxlW1d8QV0uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglEZWFsIHdpdGgga2VybmVscyB0aGF0IGRvbid0IGhhdmUgSXNWYWxpZExhbmd1YWdlR3JvdXAuCglEZWFsIHdpdGggbm9uLWltcGxlbWVudGVkIEZvbGRTdHJpbmdbQXxXXS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUNoZWNrIGZvciBFUlJPUl9DQUxMX05PVF9JTVBMRU1FTlRFRCBlcnJvciBmcm9tIFJlbW92ZURpcmVjdG9yeVcuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0ICJNQ0kgRXh0ZW5zaW9ucyIgcmVnaXN0cnkgc2VjdGlvbiwgYWRkIE1DSTMyIHNlY3Rpb24uCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogQWRkZWQgQ1NfRFJPUFNIQURPVy4KCgkqIGRsbHMva2VybmVsL2F0b20uYywgZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9kb3NtZW0uYywKCSAgZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9nbG9iYWwxNi5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsIGRsbHMva2VybmVsL3Nub29wMTYuYywgZGxscy9rZXJuZWwvc3luYy5jLAoJICBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3Z4ZC5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGRsbHMvbnRkbGwvdmlydHVhbC5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L2RpYi5jLCBpbmNsdWRlL2dsb2JhbC5oLAoJICBvYmplY3RzL21ldGFmaWxlLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSBjb250ZW50IG9mIGdsb2JhbC5oIGludG8gdGhlIGFwcHJvcHJpYXRlIHByaXZhdGUgaGVhZGVycy4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsCgkgIGRsbHMvd2lubW0vd2lubW0uYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZSAoYWdhaW4pIHVzYWdlIG9mIDE2IGJpdCBzcGVjaWZpYyBmdW5jdGlvbnMgKHRodW5rIGxvY2spIHRvIDE2IGJpdAoJY29kZSBvbmx5LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJTGltaXQgdXNhZ2Ugb2YgdmVydGV4IGFycmF5cyB0byBjb3JyZWN0IHN0YXRlcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJZiB1c1dpbkFzY2VudCArIHVzV2luRGVzY2VudCA9PSAwIHRoZW4gdXNlIHRoZSBBc2NlbmRlciBhbmQgRGVzY2VuZGVyCgl2YWx1ZXMgaW5zdGVhZC4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBmb250IG9iamVjdCBsZWFrIGluIHRoZSBmb250IGRpYWxvZydzIFdNX1BBSU5UIGhhbmRsZXIuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IGEgY291cGxlIG9mIGluY29ycmVjdCByZWdpc3RyeSByb290IGtleSBuYW1lcy4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9tYWluLmMsIGluY2x1ZGUvd2luY3J5cHQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgaW1wbGVtZW50YXRpb25zIGZvciBDZXJ0Q3JlYXRlQ1JMQ29udGV4dCBhbmQgQ2VydENsb3NlU3RvcmUuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3RyZWFtbGluZSBkbGxzLyBhbmQgcHJvZ3JhbXMvIGluIHRlcm1zIG9mIGluZGVudGF0aW9uLgoJVXBkYXRlZCB0aGUgcHJvZ3JhbXMvIChhZGRlZCBhbmQgZGVsZXRlZCBhIGJ1bmNoIG9mIGVudHJpZXMpLgoJQWRkZWQgdGhlIGluY2x1ZGUve21zdmNydCx3aW5lfSB0byB0aGUgbGlzdCBvZiBpbmNsdWRlIGRpcnMuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJTWFrZSBpbmFjdGl2ZSBMRUQgc2VnbWVudHMgZGltbWVyIHRvIG1ha2UgbnVtYmVycyBlYXNpZXIgdG8gcmVhZC4KCgkqIGRsbHMvbXNhY20vd2luZW1wMy9jb21tb24uYywgZGxscy9tc2FjbS93aW5lbXAzL2ludGVyZmFjZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZW1vdmUgYW4gaW5zdGFuY2Ugb2YgZXhpdCgpLiBXZSBzaG91bGQgcmV0dXJuIGZhaWx1cmUsIG5vdCBraWxsIHRoZQoJdGhyZWFkLCB3aGVuIGEgYmFkIHN0cmVhbSBpcyBlbmNvdW50ZXJlZC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXJzdCBlbnVtZXJhdGUgYWxsIGludGVybmFsIGRldmljZXMgYW5kIHRoZW4gZXh0ZXJuYWwgbWlkaSBwb3J0cy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvTWFrZWZpbGUuaW46IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJUmVtb3ZlIG50ZGxsIGZyb20gaW1wb3J0cy4KCgkqIGRsbHMvbmV0YXBpMzIvd2tzdGEuYywgaW5jbHVkZS9sbWNvbnMuaCwgaW5jbHVkZS9sbXdrc3RhLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglQYXJ0aWFsbHkgaW1wbGVtZW50IE5ldFdrc3RhR2V0SW5mby4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lLnhwbSwKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgaW5jbHVkZS9iaXRtYXBzLyoueHBtIHdoZXJlIHRoZXkgYmVsb25nLgoKCSogZGxscy9jYWJpbmV0L2NhYmluZXQuc3BlYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgcGFyYW1ldGVyIHR5cGVzIG9mIGZ1bmN0aW9uIEV4dHJhY3QuCgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvYml0bWFwLmMsIGRsbHMvd2luZXBzL2VuY29kZS5jLAoJICBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJ1biBsZW5ndGggYW5kIGFzY2lpODUgZW5jb2RlIGltYWdlIGRhdGEuCgoyMDAzLTEyLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsIGluY2x1ZGUvY2xpcGJvYXJkLmgsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmM6CglHZXQgcmlkIG9mIGNsaXBib2FyZC5oLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzoKCVJlbW92ZWQgbm93IHVzZWxlc3MgY2FsbCB0byBnbFhRdWVyeUV4dGVuc2lvbnNTdHJpbmcuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6CglJbiBSRFdfVmFsaWRhdGVQYXJlbnQsIGdldCByaWQgb2YgdGhlIHBhcmVudCB1cGRhdGUgcmVnaW9uIGlmIGl0IGlzCgllbXB0eSBhZnRlciB0aGUgdmFsaWRhdGlvbiwgdG8gYXZvaWQgYSB1c2VsZXNzIFdNX1BBSU5ULgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IGVycm9yIG1lc3NhZ2VzIHRvIHN0ZGVyciBhcyBpcyBjdXN0b21hcnkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L2JpdGJsdC5jLCBkbGxzL3gxMWRydi9iaXRtYXAuYywgZGxscy94MTFkcnYvYnJ1c2guYywKCSAgZGxscy94MTFkcnYvY2xpcHBpbmcuYywgZGxscy94MTFkcnYvY29kZXBhZ2UuYywgZGxscy94MTFkcnYvZGliLmMsCgkgIGRsbHMveDExZHJ2L2dyYXBoaWNzLmMsIGRsbHMveDExZHJ2L2luaXQuYywgZGxscy94MTFkcnYvb3BlbmdsLmMsCgkgIGRsbHMveDExZHJ2L3BhbGV0dGUuYywgZGxscy94MTFkcnYvcGVuLmMsIGRsbHMveDExZHJ2L3RleHQuYywKCSAgZGxscy94MTFkcnYveGZvbnQuYywgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJTW92ZWQgYWxsIHRoZSBmaWxlcyBpbiBncmFwaGljcy94MTFkcnYgdG8gZGxscy94MTFkcnYuCgoJKiBkbGxzL250ZGxsL3NlcnZlci5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBsaWJzL3dpbmUvZGVidWcuYywKCSAgbGlicy93aW5lL2xvYWRlci5jOgoJQWRkZWQgYSBXSU5FREVCVUcgZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBhbGxvd3MgdHVybmluZyBvbiBkZWJ1ZwoJb3V0cHV0IGFzIGVhcmx5IGFzIHBvc3NpYmxlIGR1cmluZyBzdGFydHVwLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCVJlbW92ZWQgWDExIGRpc3BsYXkgcGFyYW1ldGVyIGZyb20gdGhlIGNvbmZpZyBmaWxlLCB0aGlzIGlzIG1vcmUKCWNvbmZ1c2luZyB0aGFuIHVzZWZ1bC4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvY2hpbGR3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRml4ZWQgc29tZSBmbGFncyBpbiBjYWxscyB0byBDcmVhdGVXaW5kb3dFeC4KCUZpeGVkIGNvbG9yIG9mIHRoZSBzcGxpdHRlci4KCjIwMDMtMTItMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJSW5pdGlhbGl6ZSBYbGliIHRocmVhZGluZyBzdXBwb3J0IHRvIHNlZSB3aGF0IGl0IGJyZWFrcy4uLgoKCSogZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJTWFwIChXU19FWF9UT09MV0lORE9XICYgV1NfQ0FQVElPTikgdG8gX05FVF9XTV9XSU5ET1dfVFlQRV9VVElMSVRZLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQ29ycmVjdCB0aGUgdGVzdCBmb3IgdGhlIE9EU19TRUxFQ1RFRCBiaXQgaW4gdGhlIFdNX0RSQVdJVEVNIG1lc3NhZ2UKCWhhbmRsZXIuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9oZWFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3JlIHRlc3RzIGZvciB7TG9jYWwsR2xvYmFsfXssUmV9QWxsb2MoKSBjYWxscy4KCUNsZWFudXAgb2YgdGhlIEhlYXAqKCkgdGVzdHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmM6CglEZWZpbmUgQUxTQV9QQ01fT0xEXyogc3ltYm9scyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIEFsc2EgMS4wLgoKCSogZGxscy9rZXJuZWwvZGV2aWNlLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVBhcnRpYWxseSBpbXBsZW1lbnQgRGV2aWNlSW9Db250cm9sIGZvciBWREhDUCwgVk5FVEJJT1MsIGFuZCBWTkIuCglHZXRzIHJpZCBvZiBGSVhNRXMgZm9yIGlwY29uZmlnLmV4ZSBhbmQgd2luaXBjZmcuZXhlLgoKCSogZGxscy91eHRoZW1lLy5jdnNpZ25vcmUsIGRsbHMvdXh0aGVtZS9NYWtlZmlsZS5pbiwKCSAgZGxscy91eHRoZW1lL2RyYXcuYywgZGxscy91eHRoZW1lL21haW4uYywgZGxscy91eHRoZW1lL21ldHJpYy5jLAoJICBkbGxzL3V4dGhlbWUvcHJvcGVydHkuYywgZGxscy91eHRoZW1lL3N5c3RlbS5jLAoJICBkbGxzL3V4dGhlbWUvdXh0aGVtZS5zcGVjLCBkbGxzL3V4dGhlbWUvdXh0aGVtZWRsbC5oLAoJICBkbGxzL3V4dGhlbWUvdmVyc2lvbi5yYzoKCUtldmluIEtvbHR6YXUgPGtldmluQHBsb3Aub3JnPgoJQWRkZWQgc3R1YnMgZm9yIGFsbCBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUxldCBQU0RSVl9Xcml0ZVNwb29sIGNvcGUgd2l0aCBzdHJpbmdzIGxvbmdlciB0aGFuIDB4ZmZmZiBieXRlcy4KCgkqIGRsbHMvbmV0YXBpMzIvYWNjZXNzLmMsIGRsbHMvbmV0YXBpMzIvYnJvd3NyLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywgZGxscy9uZXRhcGkzMi93a3N0YS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIHNvbWUgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIG1pc3NpbmcgTGlzdFZpZXdfR2V0Vmlld1JlY3QoKSBtYWNyby4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9yZWcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgdGhlIFJ0bHAqIHJlZ2lzdHJ5IGZ1bmN0aW9ucy4KCgkqIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLCBkbGxzL21zdmNydC9leGNlcHQuYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0ZC9tc3ZjcnRkLnNwZWMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYzoKCUltcGxlbWVudCBzb21lIG1vcmUgcmVnaXN0ZXIgZnVuY3Rpb25zIHVzaW5nIERFRklORV9SRUdTX0VOVFJZUE9JTlQgdG8KCW1ha2UgdGhlbSBhdmFpbGFibGUgZm9yIGltcG9ydHMuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBpbmNsdWRlL3dpbm50Lmg6CglNb3ZlZCB0aGUgREVGSU5FX1JFR1NfRU5UUllQT0lOVCBtYWNyb3MgdG8gaW5jbHVkZS93aW5lL3BvcnQuaC4KCVJlbW92ZWQgdGhlIEMgZmFsbGJhY2sgY29kZSwgZG8gdGhhdCBpbiB0aGUgY2FsbGVycyBpbnN0ZWFkLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzoKCVdlIG5vIGxvbmdlciBuZWVkIGEgc3BlY2lhbCBjYXNlIGZvciBjb2RlcGFnZXMgb24gc3RhcnR1cCwKCWluaXRpYWxpemF0aW9uIGlzIGRvbmUgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgbm93LgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L3hkbmQuYzogUG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9UaC5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIFRoYWkgdHJhbnNsYXRpb24uCgoJKiBkbGxzL3dzb2NrMzIvd3Njb250cm9sLmg6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCVJlbW92ZWQgdW51c2VkIHN0cnVjdHVyZSBkZWNsYXJhdGlvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L21haW4uYywgcHJvZ3JhbXMvd2luZXRlc3QvbWFrZXRlc3QsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3NlbmQuYywgcHJvZ3JhbXMvd2luZXRlc3QvdXRpbC5jLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5oOgoJSmFrb2IgRXJpa3Nzb24gPGpha292QHZtbGludXgub3JnPgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCU5ldyBXaW5lIHRlc3Qgc2hlbGwgdXRpbGl0eS4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVVzZSB0aGUgbGZIZWlnaHQgZmllbGQgdG8gaW5pdGlhbGl6ZSB0aGUgZm9udCBkaWFsb2cncyBwb2ludCBzaXplLiBEbwoJbm90IGZvcmdldCB0byByZXR1cm4gc29tZSB2YWx1ZXMgaW4gdGhlIGNob29zZWZvbnQgc3RydWN0dXJlIGluIHRoZSAxNgoJYml0IHZlcnNpb24gb2YgdGhlIENob29zZUZvbnQgZnVuY3Rpb24uCgoJKiBkbGxzL25ldGFwaTMyL2FwaWJ1Zi5jLCBkbGxzL25ldGFwaTMyL3Rlc3RzL2FwaWJ1Zi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBOZXRBcGlCdWZmZXJSZWFsbG9jYXRlIGFuZCBhZGQgYSBmZXcgdGVzdHMgZm9yIHRoZSBib3JkZXIgY2FzZXMKCSh0aGFua3MgdG8gSnVhbiBMYW5nIGZvciBjbGFyaWZpY2F0aW9ucykuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZCBGb250cyBrZXkgZm9yIE5UIHZlcnNpb25zIG9mIFdpbmRvd3MuCgoJKiBkbGxzL2tlcm5lbC9jcHUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbiBpNjg2LCByZXBvcnQgcHJvY2Vzc29yIGxldmVsIDYuCgoyMDAzLTEyLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6CglDb252ZXJ0ZWQgbG9jYWxlIHNldHVwIHRvIFVuaWNvZGUgc28gdGhhdCB3ZSBkb24ndCB1c2UgY29kZSBwYWdlcwoJYmVmb3JlIHRoZXkgYXJlIGluaXRpYWxpemVkLiBJbXByb3ZlZCBlcnJvciByZXBvcnRpbmcgYSBiaXQuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmg6CglVc2UgZGVsYXllZCBpbXBvcnRzIGluc3RlYWQgb2YgZXhwbGljaXQgR2V0UHJvY0FkZHJlc3MgY2FsbHMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywgZGxscy9jb21tZGxnL2NkbGdfQ24ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VzLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19GaS5yYywgZGxscy9jb21tZGxnL2NkbGdfRnIucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0h1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywgZGxscy9jb21tZGxnL2NkbGdfWmgucmMsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmgsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUltcGxlbWVudCBjb21ib2JveCB0byBzZWxlY3QgdGhlIGZvbnQncyBjaGFyYWN0ZXIgc2V0LgoJQnVnIGZpeGVzOiBoYW5kbGUgV01fTUVBU1VSRUlURU0gbWVzc2FnZTsgaGFuZGxlIHRoZSBXTV9QQUlOVCBtZXNzYWdlCglpbiB0aGUgMTZiaXQgZm9udCBkaWFsb2csIHNvIGl0IGRpc3BsYXlzIHRoZSBzYW1wbGUgc3RyaW5nIHRvby4KCgkqIHByb2dyYW1zL3J1bmRsbDMyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ydW5kbGwzMi9ydW5kbGwzMi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyAxNi1iaXQgZGxscy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglSZW1vdmVkIG5vIGxvbmdlciB1c2VkIGV4dHJhIHNwYWNlIGFsbG9jYXRlZCBpbiB0aGUgbW9kcmVmIHN0cnVjdHVyZS4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jOgoJUmV2ZXJ0IGNoYW5nZSBmb3IgaGFuZGxpbmcgdXNlciBvdmVycmlkZXMgYXMgbnVtYmVycyBhbmQgcmVpbXBsZW1lbnQKCWl0IGRpZmZlcmVudGx5LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEphY2VrIENhYmFuIDxqYWNrQGl0bWEucHdyLndyb2MucGw+CglBZGRlZCAtbFhtdSBhbmQgLWxYaSBmb3IgZ2x1dCBsaWJyYXJ5LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9jaGlsZHduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L2VkaXQuYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9tYWluLmgsIHByb2dyYW1zL3JlZ2VkaXQvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvcmVnZWRpdC90cmVldmlldy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGVkaXRpbmcgc3RyaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglJbXBsZW1lbnRlZCBSdW5ETExfQ2FsbEVudHJ5MTYuCgoJKiBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL2Nsb2NrL3dpbmNsb2NrLmMsCgkgIHByb2dyYW1zL2Nsb2NrL3dpbmNsb2NrLmg6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGRhaWpvYnUuY28udWs+CgktIFByb3Blcmx5IGRpc2FibGUgdGhlIHNlY29uZCBoYW5kLgoJLSBSZW1vdmUgdW5uZWVkZWQgI2luY2x1ZGUgIndpbm5scyIsICNkZWZpbmUgTUlOLgoJLSBHZXQgdGhlIGRpZ2l0YWwgY2xvY2sgd29ya2luZy4KCgkqIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvdXJsbW9uLmlkbDoKCUtpcmlsbCBTbWVsa292IDxraXJyQGxhbmRhdS5waHlzLnNwYnUucnU+CglJQmluZEhvc3QgaW50ZXJmYWNlIGFkZGl0aW9ucy4KCgkqIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vY2lkbC5pZGw6CglLaXJpbGwgU21lbGtvdiA8a2lyckBsYW5kYXUucGh5cy5zcGJ1LnJ1PgoJQWRkZWQgSU9iamVjdFdpdGhTaXRlIGludGVyZmFjZS4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZXdyYXAuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJU2VhcmNoIGZvciBsaWJyYXJpZXMgaW4gdGhlIG9yZGVyIC0gLnNvIC0gLmRlZiAtIC5hCgoJKiBwcm9ncmFtcy9jbG9jay9EYS5yYywgcHJvZ3JhbXMvY2xvY2svRGUucmMsIHByb2dyYW1zL2Nsb2NrL0VuLnJjLAoJICBwcm9ncmFtcy9jbG9jay9Fcy5yYywgcHJvZ3JhbXMvY2xvY2svRmkucmMsIHByb2dyYW1zL2Nsb2NrL0ZyLnJjLAoJICBwcm9ncmFtcy9jbG9jay9IdS5yYywgcHJvZ3JhbXMvY2xvY2svSXQucmMsIHByb2dyYW1zL2Nsb2NrL05sLnJjLAoJICBwcm9ncmFtcy9jbG9jay9QdC5yYywgcHJvZ3JhbXMvY2xvY2svUnUucmMsIHByb2dyYW1zL2Nsb2NrL1NpLnJjLAoJICBwcm9ncmFtcy9jbG9jay9Tay5yYywgcHJvZ3JhbXMvY2xvY2svU3cucmMsIHByb2dyYW1zL2Nsb2NrL1RoLnJjLAoJICBwcm9ncmFtcy9jbG9jay9XYS5yYywgcHJvZ3JhbXMvY2xvY2svWmgucmMsCgkgIHByb2dyYW1zL2Nsb2NrL2Nsb2NrX3Jlcy5oLCBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLAoJICBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uaCwgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAZGFpam9idS5jby51az4KCS0gVXNlIHJlc291cmNlIGlkcyBJRE1fKiwgSURTXyogaW5zdGVhZCBvZiBudW1iZXJzLgoJLSBNb3ZlIC4uLiBmcm9tIHRvcGxldmVsICJJbmZvLi4uIiBvbnRvIHN1YiBpdGVtcyAoZWcgIkFib3V0IikuCgoJKiBvYmplY3RzL3Blbi5jOiBBbmRyZXcgZGUgUXVpbmNleSA8YWRxX2R2YkBsaWRza2lhbGYubmV0PgoJQ2hlY2sgYnJ1c2ggc3R5bGUgYmVmb3JlIHByaW50aW5nIEZJWE1FLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglPbmx5IGhvbm91ciBTQlNfU0laRUJPWCpBTElHTiBzdHlsZXMgaWYgU0JTX1NJWkV7R1JJUCxCT1h9IGlzIHNldC4KCgkqIERFVkVMT1BFUlMtSElOVFM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJVXBkYXRlZC4KCjIwMDMtMTItMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLAoJICBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5jOgoJVXNlIG5vcm1hbCBkbGwgaW1wb3J0cyBpbnN0ZWFkIG9mIEdldFByb2NBZGRyZXNzIGhhY2tzLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW52YWxpZGF0ZSBpdGVtcyBvbiBzZXQgc2VsZWN0aW9uLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU29tZSBzdXBwb3J0IGZvciBTQlNfU0laRUdSSVAuCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOiBEYW5pZWwgU2tvcmthIDxza29ya2FAZ214Lm5ldD4KCUZpeGVkIGEgcHJvYmxlbSB1c2luZyBnbFhHZXRQcm9jQWRkcmVzQVJCIHdpdGggYmFkIE9wZW5HTCBsaWJzLgoKCSogZmlsZXMvZmlsZS5jOiBSZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgZGxsIHNlcGFyYXRpb24gaGFjay4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL3dpbmVkb3MvaW50MTMuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oOgoJVXNlIHdpbmVfc2VydmVyX3JlbGVhc2VfZmQoKSBpbnN0ZWFkIG9mIGNsb3NlKCkgZXZlcnl3aGVyZSB3ZSB1c2UKCXdpbmVfc2VydmVyX2hhbmRsZV90b19mZCgpLgoJQSBmZXcgbWlub3Igd2luc29jayBjbGVhbnVwcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dsdXQzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2dsdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9nbHV0MzIvZ2x1dC5jLCBkbGxzL2dsdXQzMi9nbHV0MzIuc3BlYywKCSAgZGxscy9tYWtlX2RsbHM6CglKYWNlayBDYWJhbiA8amFja0BpdG1hLnB3ci53cm9jLnBsPgoJQWRkZWQgZ2x1dDMyIGRsbC4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJLSB0aGUgbGFzdCBldmVudCB3YXMgbm90IGxvb2tlZCBhdCB3aGVuIGNvbXByZXNzaW5nIGNvbnNvbGUgZXZlbnRzCgktIGJldHRlciBjb21wcmVzc2lvbiBmb3IgVVBEQVRFX0VWRU5UcyBhcyB0aGV5IGFyZSBub3QgaW5mbHVlbmNlZCBieQoJICBDVVJTT1JfUE9TIG9yIENVUlNPUl9HRU9NCgktIGFkZGVkIGRlYnVnIHRyYWNlcwoKCSogZGxscy9vbGVhdXQzMi9oYXNoLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgaGFzaCB0YWJsZXMgZm9yIGFsbCBzdXBwb3J0ZWQgbGFuZ3VhZ2VzLgoJUmVtb3ZlIHNvbWUgdXNlbGVzcyBpbmNsdWRlcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGluY2x1ZGUvd2luc3ZjLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9ucyBmb3IgQ2hhbmdlU2VydmljZUNvbmZpZ0EvVy4KCUltcGxlbWVudCBDcmVhdGVTZXJ2aWNlVyBhbmQgY2FsbCBpdCBmcm9tIENyZWF0ZVNlcnZpY2VBLgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBRdWVyeVNlcnZpY2VDb25maWdXLgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYywgaW5jbHVkZS93aW5jcnlwdC5oOgoJVGhvbWFzIEJyaXggTGFyc2VuIDxraWxsYXJAZ2V0Mm5ldC5kaz4KCUFkZGVkIHN0dWIgZm9yIENyeXB0UHJvdGVjdERhdGEsIHNvIHByb2dyYW1zIGxpa2UgU2t5cGUgY2FuIHN0YXJ0LgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZSB1c2FnZSBvZiAxNiBiaXQgc3BlY2lmaWMgZnVuY3Rpb25zIChNYXBTTCkgaW4gMTYgYml0IGNvZGUgb25seS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdGVzdHMvdGFiLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCS0gRml4IGRyYXdpbmcgb2YgSG90VHJhY2tlZCB0YWJzICYgYnV0dG9ucy4KCS0gTW9yZSB0YWIgc2l6ZSBmaXhlcyBpbiBkaWZmZXJlbnQgc3R5bGVzLgoJLSBEb24ndCB1c2UgbmV3IHBhZGRpbmcgdW50aWwgc3R5bGUgY2hhbmdlcy4KCS0gRml4IGxlZnQgYWxpZ25tZW50IG9mIGxhYmVscyAmfCBpY29ucy4KCS0gRG9uJ3QgZHJhdyBvdmVyIFVwRG93biBjb250cm9sLgoJLSBGdWxseSBlcmFzZSB0YWJzIHdoZW4gc2Nyb2xsaW5nLgoJLSBNb3JlIHRlc3RzLgoKMjAwMy0xMi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VydmVyLmMsCgkgIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBmaWxlcy9zbWIuYywgZmlsZXMvc21iLmgsIGluY2x1ZGUvYXN5bmMuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlci5oLCBzZXJ2ZXIvZmQuYzoKCUFkZGVkIHdpbmVfc2VydmVyX3JlbGVhc2VfZmQgZnVuY3Rpb24gdG8gcmVsZWFzZSB0aGUgZmQgcmV0dXJuZWQgYnkKCXdpbmVfc2VydmVyX2hhbmRsZV90b19mZC4gRml4ZWQgYSBjb3VwbGUgb2YgcG90ZW50aWFsIGZkIGxlYWtzLgoKCSogZGxscy9udGRsbC9yZWxheS5jOgoJQWxsb3cgUkVMQVlfU2V0dXBETEwgdG8gYmUgY2FsbGVkIHR3aWNlIG9uIHRoZSBzYW1lIGRsbC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMva2VybmVsL2xjZm9ybWF0LmMsCgkgIGRsbHMva2VybmVsL3RpbWUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGYWlsIEdldENhbGVuZGFySW5mb0EgZm9yIFVuaWNvZGUtb25seSBsb2NhbGVzLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBbGxvdyB1c2VyIG92ZXJyaWRkZW4gbG9jYWxlIGRhdGEgdG8gYmUgcmV0cmlldmVkIGFzIG51bWJlcnMuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmgsCgkgIGRsbHMvY29tbWRsZy9jb2xvcmRsZzE2LmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglTcGxpdCB0aGUgV2luMTYvMzIgY29sb3IgZGlhbG9nIGJ5IGR1cGxpY2F0aW5nIHR3byBpbnRlcm5hbAoJZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvY2xvY2svVGgucmMsIHByb2dyYW1zL25vdGVwYWQvVGgucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUaGFpIHRyYW5zbGF0aW9uIG9mIG5vdGVwYWQuIEZpeCBzcGVsbGluZyBpbiBjbG9jayB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IENvcHlFbmhNZXRhRmlsZVcuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVNwZWxsaW5nL0dyYW1tYXIgZml4ZXMuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGQgc2FtcGxlIHRleHRzIGZvciBhbGwgbWlzc2luZyBjaGFyYWN0ZXIgc2V0cyAob3IgZXhwbGFpbiB3aHkgc29tZQoJZG9uJ3QgaGF2ZSBpdCkuIFB1dCB0aGUgY29tcGxldGUgdGV4dCBpbiBvbmUgcGxhY2UgYW5kIHJlbW92ZSB0aGUgZ2x1ZQoJY29kZS4gQ2hhbmdlIHRoZSAyRCBhcnJheSB0aGF0IGhvbGRzIHRoZSB0ZXh0cyBieSBhIGFycmF5IG9mIHBvaW50ZXIKCXRvIDFEIGNoYXJhY3RlciBhcnJheXMgdG8gc2F2ZSBzcGFjZS4KCgkqIGluY2x1ZGUvbXNpLmgsIGluY2x1ZGUvbXNpcXVlcnkuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgc29tZSBNU0kgZnVuY3Rpb25zLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsCgkgIGRsbHMvd2lubW0vd2lubW0uYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZSB1c2FnZSBvZiAxNiBiaXQgc3BlY2lmaWMgZnVuY3Rpb25zIChNYXBTTCkgaW4gMTYgYml0IGNvZGUgb25seS4KCgkqIGRsbHMvd2luZWRvcy90aW1lci5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgdXBwZXIgbGltaXQgZm9yIHRoZSBudW1iZXIgb2YgcGVuZGluZyB0aW1lciBpbnRlcnJ1cHRzLgoJQ2hlY2sgaWYgdGltZXIgaGFzIGJlZW4gc3R1Y2sgYW5kIGlzc3VlIGFuIGVycm9yIHRvIHVzZXIuCglGaXggaGFuZGxpbmcgb2YgdGltZXIgcGVyaW9kIHplcm8uCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIGNvcnJlY3QgcG9pbnRlciBmb3IgU3lzRnJlZVN0cmluZy4KCgkqIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnJjLCBkbGxzL21zZG1vL3JzcmMucmM6CglUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCVVzZSB0aGUgc2FtZSB2ZXJzaW9uIGZvcm1hdCBmb3IgYWxsIERYIGRsbHMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBLaXJpbGwgU21lbGtvdiA8a2lyckBsYW5kYXUucGh5cy5zcGJ1LnJ1PgoJQWRkZWQgU2V0RENQZW5Db2xvciBwcm90b3R5cGUuCgoJKiBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglFeHBvcnQgUXVlcnlXb3JraW5nU2V0LgoKMjAwMy0xMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9tYWtlX3Byb2dzOgoJQWRkZWQgbWFrZV9wcm9ncyB0b29sIHRvIGdlbmVyYXRlIHRoZSBwcm9ncmFtcyBtYWtlZmlsZS4KCUNyZWF0ZSBzeW1saW5rcyBmb3IgYWxsIHRoZSBXaW5lbGliIGFwcHMuCgoJKiBkbGxzL2lwaGxwYXBpL2lmZW51bS5jLCBkbGxzL2lwaGxwYXBpL2lmZW51bS5oLAoJICBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYzoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCS0gZml4ZXMgdGhyZWFkIHNhZmV0eSBpc3N1ZXMKCS0gZml4ZXMgcHJvYmxlbXMgd2l0aCBub24tSVAgKGUuZy4gSVBYKSBhZGRyZXNzZXMKCS0gdXBkYXRlcyBjb21tZW50cyB0byByZWZsZWN0IHdpbnNvY2ssIG5ldGFwaTMyIGNoYW5nZXMKCgkqIGRsbHMvYXZpZmlsMzIvcnNyYy5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9kZXZlbnVtL2RldmVudW0ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX3h4LnJjLCBkbGxzL3NoZWxsMzIvdmVyc2lvbi5yYywKCSAgZGxscy9zaGVsbDMyL3ZlcnNpb24xNi5yYywgaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBIGdlbmVyYWwgY2xlYW51cCBvZiB0aGUgdmVyc2lvbiByZXNvdXJjZXMgaW4gV2luZSBETExzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglSZW1vdmVkIGFubm95aW5nIG1lc3NhZ2UgYWJvdXQgbWlzc2luZyBlbnRyeSBpbiAvZXRjL3NlcnZpY2VzLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sOiBBbmRyZXcgZGUgUXVpbmNleSA8YWRxX2R2YkBsaWRza2lhbGYubmV0PgoJRml4ZWQgb25lIG1vcmUgSGVhcFJlQWxsb2MgY2FsbC4KCgkqIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmgsCgkgIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5oOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJUmVtb3ZlIHNvbWUgdW51c2VkIGNvZGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHRvb2xzL21ha2VfZGVidWc6CglSZW1vdmVkIHNvbWUgbm8gbG9uZ2VyIHVzZWQgcHJvZ3JhbXMuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbDogQnJpYW4gVmluY2VudCA8dmlubkB0aGVzaGVsbC5jb20+CglSZXBsYWNlIHNvbWUgb2Jzb2xldGUgcmVzb3VyY2VzIHdpdGggbmV3ZXIgb25lcy4KCgkqIG9iamVjdHMvZGMuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBkYWlqb2J1LmNvLnVrPgoJQWRkZWQgbWlzc2luZyBHRElfUmVsZWFzZU9iaigpIHRvIEdldERDQnJ1c2hDb2xvciAmIEdldERDUGVuQ29sb3IuCgoJKiBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjLCBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5yYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQ2hhbmdlZCB0aGUgdmVyc2lvbiByZXNvdXJjZSB0byBiZSBjcmVhdGVkIGluIHRoZSBjb21tb24gd2F5LgoKMjAwMy0xMS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvcnRsYml0bWFwLmM6CglGaXhlZCBiaXRtYXAgcmFuZ2UgY2hlY2tpbmcgdG8gYXZvaWQgaW50ZWdlciBvdmVyZmxvd3MuCgoJKiBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL25ldGFwaTMyL25iY21kcXVldWUuYywKCSAgZGxscy9uZXRhcGkzMi9uYmNtZHF1ZXVlLmgsIGRsbHMvbmV0YXBpMzIvbmJuYW1lY2FjaGUuYywKCSAgZGxscy9uZXRhcGkzMi9uYm5hbWVjYWNoZS5oLCBkbGxzL25ldGFwaTMyL25idC5jLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvbmV0YXBpMzIvbmV0Ymlvcy5jLAoJICBkbGxzL25ldGFwaTMyL25ldGJpb3MuaCwgZGxscy9uZXRhcGkzMi93a3N0YS5jLCBpbmNsdWRlL2xtd2tzdGEuaCwKCSAgaW5jbHVkZS9uYjMwLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBhIGxvdCBvZiBOZXRiaW9zKCkuCgoyMDAzLTExLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJUmVtZW1iZXIgKGRvIG5vdCByZXNldCkgIGZvbnQgc2l6ZSBhbmQgc3R5bGUgcGFyYW1ldGVycyBpbiB0aGUgaW5pdGlhbAoJZGlhbG9nIGFuZCB3aGVuIGFub3RoZXIgZm9udCBpcyBzZWxlY3RlZC4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBhIGJ1ZyBpbiB0aGUgdGVzdCBmb3IgaXRhbGljIGZvbnQgc3R5bGUgcHJvcGVydHkuCgoJKiBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJVXBkYXRlIGRlYnVnIGNoYW5uZWwgbGlzdC4KCgkqIGRsbHMvbnRkbGwvcGF0aC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJT25seSBjb252ZXJ0ICcvJ3MgdG8gJ1xcJ3MgdXAgdG8gdGhlICdcMCcgYXMgdGhlIHJlc3Qgb2YgdGhlIGJ1ZmZlcgoJbWF5IG5vdCBiZSBpbml0aWFsaXplZCAoZm91bmQgYnkgVmFsZ3JpbmQpLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJVGlkeSB1cCBpbmRlbnRhdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvY2xzaWQuYzoKCVBvcnRpbmcgZml4ZXMuCgoJKiBzZXJ2ZXIvY2xpcGJvYXJkLmM6IGNidGhyZWFkIGFuZCBjYm93bmVyIGRvbid0IG5lZWQgdG8gYmUgZXhwb3J0ZWQuCgoJKiBkbGxzL21zdmNydC9tYXRoLmMsIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglCZXR0ZXIgc3VwcG9ydCBmb3IgZGl2IGFuZCBsZGl2IGluIFdpbmVsaWIgYXBwcy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBkdXBsaWNhdGVkIFNlcmlhbENvbW0ga2V5LgoKCSogZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQxNi5jLCBkbGxzL3dpbnNvY2svd2luc29jay5zcGVjOgoJTW92ZWQgdGhlIDE2LWJpdCBjb2RlIG91dCBvZiBzb2NrZXQuYyBhbmQgaW50byBhIHNlcGFyYXRlIGZpbGUuCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUltcGxlbWVudCB0aGUgVENQIHRhYmxlIHF1ZXJ5LCBuZXRzdGF0LmV4ZSBub3cgc2hvd3MgVENQIGxpc3RlbmluZyBhbmQKCWNvbm5lY3RlZCBzb2NrZXRzLgoKCSogcHJvZ3JhbXMvcmVnc3ZyMzIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnc3ZyMzIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ3N2cjMyL3JlZ3N2cjMyLnJjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCB2ZXJzaW9uIGluZm8gcmVzb3VyY2UuCgoJKiB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluLCB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CgktIEFkZCBzdGFuZGFyZCBkbGwgcGF0aCBsYXN0IGluc3RlYWQgb2YgZmlyc3QuCgktIEFkZCBzdGFuZGFyZCBsaWIgcGF0aCBhcyB3ZWxsLgoJLSBSZW1vdmUgLiBmcm9tIGRlZmF1bHQgbGlicmFyeSBzZWFyY2ggcGF0aC4KCS0gQ29tcGlsaW5nIHdpdGggLWx3aW5lIG5lZWRzIHRvIHVzZSB0aGUgZ2l2ZW4gLUwgcGF0aHMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCB0d28gbWVtb3J5IGxlYWtzLiBGb3VuZCBieSBEaWV0cmljaCBUZWlja25lci4KCjIwMDMtMTEtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNZXJnZSB7U2V0LEluc2VydH1JdGVtW0FXXSB0byB7U2V0LEluc2VydH1JdGVtVC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3VuaWNvd3MvLmN2c2lnbm9yZSwKCSAgZGxscy91bmljb3dzL01ha2VmaWxlLmluLCBkbGxzL3VuaWNvd3MvbWFpbi5jLAoJICBkbGxzL3VuaWNvd3MvdW5pY293cy5zcGVjOgoJQWRkZWQgdW5pY293cyBkbGwsIGJhc2VkIG9uIHRoZSBzcGVjIGZpbGUgd3JpdHRlbiBieSBTaGFjaGFyIFNoZW1lc2guCgoJKiBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYywgZGxscy9rZXJuZWwvZmliZXIuYywgZGxscy9rZXJuZWwvaGVhcC5jLAoJICBkbGxzL2tlcm5lbC9pbnN0ci5jLCBkbGxzL2tlcm5lbC9tb2R1bGUuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsIGRsbHMva2VybmVsL3N0cmluZy5jLCBkbGxzL2tlcm5lbC90aHJlYWQuYywKCSAgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9yZXNvdXJjZS5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsCgkgIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3dpbjMycy93MzJzeXMuYywgZGxscy93aW5lZG9zL2ludDI1LmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyNi5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyLmgsCgkgIGxpYnMvd2luZS9wb3J0LmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL21zYy5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCVBvcnRpbmcgZml4ZXMuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gY2xpcF9jaGlsZHJlbigpIGRvbid0IGNsaXAgdGhlIHZpc2libGUgcmVnaW9uIGJ5IGNoaWxkcmVuIHRoYXQgaGF2ZQoJYSBXU19FWF9UUkFOU1BBUkVOVCBzdHlsZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSW4gVFJFRVZJRVdfRW5zdXJlVmlzaWJsZSBoYW5kbGUgY2FzZSB3aGVyZSBmaXJzdFZpc2libGUgaXMgTlVMTC4KCjIwMDMtMTEtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvY2FyZXQuYywgZGxscy91c2VyL2ZvY3VzLmMsIGRsbHMvdXNlci9ob29rLmMsCgkgIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci9wYWludGluZy5jLCBkbGxzL3VzZXIvcHJvcGVydHkuYywKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywKCSAgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywKCSAgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdGltZXIuYywKCSAgd2luZG93cy93aW5wb3MuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRpbmcgZml4ZXMuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2UuYzogSmVmZiBNaWxsZXIgPGplZmYtbGlzdHNAdGFubmVyLmNvbT4KCU1hc2sgb2ZmIGJpdCAweDgwIGluIHRoZSBhY2NlbGVyYXRvciB0YWJsZSBlbnRyeSBmaWVsZCBmVmlydCBpZiBpdCdzCglub3QgdGhlIGxhc3QgZW50cnkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNZXJnZSBHZXRJdGVtW0FXXSBpbnRvIEdldEl0ZW1ULgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywKCSAgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL3dpbi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgaW50ZXItcHJvY2VzcyBHZXRXaW5kb3dMb25nIG9uIHRoZSB3aW5kb3cgZXh0cmEKCWJ5dGVzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmVkcmF3IGlmIGJvbGQgc3RhdGUgY2hhbmdlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBBZGQgc3VwcG9ydCBmb3IgVEJTVFlMRV9FWF9NSVhFREJVVFRPTlMuCgktIEFkZCBzdXBwb3J0IGZvciBUQlNUWUxFX0VYX0hJREVDTElQUEVEQlVUVE9OUy4KCS0gUmVwbGFjZSAnbWFnaWMgbnVtYmVycycgd2l0aCAjZGVmaW5lJ2QgY29uc3RhbnRzLgoJLSBGaXggVEJOX0lOSVRDVVNUT01JWkUuCgktIEFkZCBzdXBwb3J0IGZvciBUQk5fQ1VTVEhFTFAgYW5kIFRCTl9SRVNFVC4KCS0gRml4IFRCX1NFVEVYVEVOREVEU1RZTEUgKGl0IGFwcGVhcnMgaXQgc2hvdWxkIG9yIHRoZSBuZXcgc3R5bGUsCgkgIHJhdGhlciB0aGFuIHNldCkuCgktIEZpeCBUQl9TRVRTVFlMRSAodGhpcyBpcyBtZWFudCB0byBiZSBmb3Igc2V0dGluZyB0aGUgY29udHJvbCBzdHlsZSwKCSAgbm90IHRoZSBidXR0b24gc3R5bGUpLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglGaXhlZCBtdWx0aXBsZSBidWdzIGluIEZpbmRTYW1wbGUgaW1wbGVtZW50YXRpb24gb2YgQVZJIGFuZCBXQVYgZmlsZQoJaGFuZGxlci4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIHJlY29tcHV0ZSBhbiBpdGVtJ3MgdGV4dCB3aWR0aCBpbiB0aGUgY2FzZSBvZiB0ZXh0IGNhbGxiYWNrcwoJYW5kIHdoZW4gaXRzIGF0dHJpYnV0ZXMgY2hhbmdlLgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCAuc3BlYyBmaWxlIHBhcmFtZXRlcnMgZm9yIENyZWF0ZURDIGRyaXZlciBBUEkuCgoJKiBkbGxzL250ZGxsL3JlbGF5LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYW5vdGhlciBSdGxSZUFsbG9jYXRlSGVhcCBjYWxsLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglGaXhlZCBXSU5FTElCX05BTUVfQVcgdHlwbyAodGhhbmtzIHRvIFJvYmVydCBTaGVhcm1hbikuCglSZW1vdmVkIGV4dHJhIEJyb2FkY2FzdFN5c3RlbU1lc3NhZ2UgcHJvdG90eXBlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBUYWJDdHJsXyogbWFjcm9zLgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL3VzZXIvY29udHJvbHMuaCwgd2luZG93cy9kZWZ3bmQuYywKCSAgd2luZG93cy9ub25jbGllbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIEFsdCtbbmF0aW9uYWwga2V5XSBtZW51IHNob3J0Y3V0cyB3b3JrLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9pbnB1dC5jOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbXBsZW1lbnQgdGhlIFRNRV9OT05DTElFTlQgZmxhZyBpbiBUcmFja01vdXNlRXZlbnQgdG8gaGFuZGxlCglub25jbGllbnQgaG92ZXIvIGxlYXZlIGV2ZW50cy4KCgkqIHRvb2xzL2J1Z19yZXBvcnQucGw6IEl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQ2hhbmdlZCBBZGFtIFNhY2FybnkncyBlbWFpbCwgYW5kIC1kZWJ1Z21zZyB0byAtLWRlYnVnbXNnLgoKCSogZGxscy9vbGUzMi9pZnMuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCXtHbG9iYWwsTG9jYWx9UmVBbGxvYygpIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeS4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jOgoJTkVfTG9hZEJ1aWx0aW5Nb2R1bGU6IHJldHVybiBlcnJvciAyMSBpZiB0aGUgbW9kdWxlIHdlIGxvYWRlZCB3YXMgYQoJMzItYml0IGJ1aWx0aW4uIFRoaXMgc2hvdWxkIGhlbHAgV2luRXhlYzE2IHRvIGRvIHRoZSByaWdodCB0aGluZy4KCgkqIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvcmFzLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbmNyeXB0LmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2lubmV0d2suaCwKCSAgaW5jbHVkZS93aW5ubHMuaDoKCUFkZGVkIG1pc3NpbmcgcHJvdG90eXBlcyBmb3Igc29tZSBpbXBsZW1lbnRlZCBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmw6IEZpeGVkIG9uZSBtb3JlIEhlYXBSZUFsbG9jIGNhbGwuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvb2xlaWRsLmlkbCwgaW5jbHVkZS93aW51c2VyLmgsCgkgIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jLCBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwgd2luZG93cy9tZXNzYWdlLmMsCgkgIHdpbmRvd3Mvd2luLmM6CglGaXhlZCBkZWNsYXJhdGlvbnMgb2YgQnJvYWRjYXN0U3lzdGVtTWVzc2FnZSBhbmQgVHJhbnNsYXRlQWNjZWxlcmF0b3IKCWluIHdpbnVzZXIuaC4gQWRkZWQgR2V0V2luZG93TW9kdWxlRmlsZU5hbWUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS9zaGxvYmouaDoKCU1vdmVkIHRoZSBTaGVsbEV4ZWN1dGVFeCBkZWZpbml0aW9ucyB0byBzaGVsbGFwaS5oIHdoZXJlIHRoZXkgYmVsb25nLgoKCSogQU5OT1VOQ0UsIEJVR1MsIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkcsCgkgIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyLCBkb2N1bWVudGF0aW9uL1JFQURNRS5pdCwKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUucHQsIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0X2JyLAoJICBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWwsIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sLCBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvRXMucmMsIHByb2dyYW1zL3dpbmVjZmcvUHQucmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvUnUucmMsIHByb2dyYW1zL3dpbmVjZmcvU2kucmMsIHRvb2xzL2J1Z19yZXBvcnQucGwsCgkgIHRvb2xzL2dlbnBhdGNoLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbiwKCSAgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaCwgdG9vbHMvd2luZWluc3RhbGwsIHRvb2xzL3dtYy93bWMubWFuLAoJICB0b29scy93cmMvd3JjLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYWtlIHRoZSB3aW5laHEub3JnIGRvbWFpbiB0aGUgb2ZmaWNpYWwgb25lLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvRW4ucmMsIHByb2dyYW1zL3dpbmVtaW5lL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9JdC5yYywgcHJvZ3JhbXMvd2luZW1pbmUvZGlhbG9nLmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL2RpYWxvZy5oLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL21haW4uaCwgcHJvZ3JhbXMvd2luZW1pbmUvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYzoKCUpvc2h1YSBUaGllbGVuIDxqb3NodWFfdGhpZWxlbkB5YWhvby5jb20+CglGaXhlZCBpbmNvcnJlY3QgbGFiZWxpbmcgb2YgcXVlc3Rpb24gYm94ZXMuCglSZW1vdmVkIGluY29ycmVjdCBlbWFpbCBhZGRyZXNzIGluIGNvcHlyaWdodC4KCgkqIGRsbHMvd2lubW0vd2lubW0uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4IGhhbmRsaW5nIG9mIHRoZSBscHVEZXZpY2VJRCBpbnB1dCBwYXJhbSBpbiBNSURJX1N0cmVhbU9wZW4uCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggInNhbXBsZSIgYm94IGRyYXdpbmcgYnkgYWRkaW5nIHNvbWUgbmVlZGVkIGNvb3JkaW5hdGUgYW5kIHNpemUKCXRyYW5zZm9ybWF0aW9ucy4KCgkqIGRsbHMvZ2RpL21mZHJ2L2dyYXBoaWNzLmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaCwgZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBoYW5kbGUgZGVsZXRpb24gbWVjaGFuaXNtIGluIHdtZnMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVbmljb2RpZmljYXRpb24uICBCYXNlZCBvbiBhIHBhdGNoIGJ5IEFyaWMgU3Rld2FydC4KCgkqIE1ha2VmaWxlLmluOiBTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzaGVtZXNoLmJpej4KCUZpeCB0aGUgY3RhZ3MgYnVpbGRpbmcgY29tbWFuZC4KCgkqIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL21lbWxvY2tieXRlcy5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlczE2LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IG1lbSBsZWFrIHdoZW4gR2xvYmFsUmVBbGxvYygpIGZhaWxzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN5c1JlQWxsb2NTdHJpbmdMZW4gaXMgZG9jdW1lbnRlZCB0byBzZWdmYXVsdCBvbiBOVUxMIHBvaW50ZXIuCgoJKiBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL29sZTE2LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHRoZSBJTWFsbG9jOjpSZUFsbG9jKCkgdG8gZm9sbG93IHRoZSBkb2N1bWVudGVkIGJlaGF2aW9yLgoKMjAwMy0xMS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglCZXR0ZXIgc3VwcG9ydCBmb3IgbG9hZGluZyBleGUgZmlsZXMgYXMgbGlicmFyaWVzLgoJTWFrZSBzdXJlIGtlcm5lbDMyIGFuZCBudGRsbCBoYXZlIGEgZnVsbCBwYXRoIG5hbWUgZXZlbiB0aG91Z2ggdGhleQoJYXJlIGxvYWRlZCBiZWZvcmUgd2Uga25vdyB0aGUgc3lzdGVtIGRpci4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvb2JqZWN0cy5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsCgkgIG9iamVjdHMvZ2Rpb2JqLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTGV0IGVuaG1ldGFmaWxlcyByZXVzZSBnZGkgaGFuZGxlcy4gIFRoaXMgd29ya3MgYnkgYSBkYyAncmVnaXN0ZXJpbmcnCgl3aXRoIGFuIG9iamVjdCB0aGF0IGl0IHdhbnRzIHRvIGtub3cgd2hlbiB0aGUgb2JqZWN0IGlzIGRlbGV0ZWQuIFVudGlsCgl0aGUgZGMgZ2V0cyBkZWxldGUgbm90aWZpY2F0aW9uIGl0J3MgZnJlZSB0byBhc3N1bWUgdGhhdCBpdCBkb2Vzbid0CgluZWVkIHRvIHdyaXRlIHRoZSBjcmVhdGUgcmVjb3JkIGZvciB0aGF0IG9iamVjdCBhZ2Fpbi4gIFVwb24gcmVjZWl2aW5nCgl0aGUgZGVsZXRlIG5vdGlmaWNhdGlvbiBpdCB3cml0ZXMgdGhlIERlbGV0ZU9iamVjdCByZWNvcmQuIFdpbmRvd3MKCXNlZW1zIHRvIGRvIGl0IHRoaXMgd2F5IHRvby4KCgkqIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBkbGxzL250ZGxsL3NlcnZlci5jLCBkbGxzL250ZGxsL3RocmVhZC5jLAoJICBpbmNsdWRlL3RocmVhZC5oOgoJU3RvcmUgdGhlIHRocmVhZCBlbnRyeSBwb2ludCBpbiB0aGUgc3RhcnR1cCBpbmZvIHBhc3NlZCB0byB0aGUgbmV3Cgl0aHJlYWQgaW5zdGVhZCBvZiB0aGUgVEVCLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxpYnMvTWFrZWxpYi5ydWxlcy5pbiwKCSAgdG9vbHMvd2luZW1ha2VyOgoJUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQWRkIERhcndpbi9NYWMgT1MgWCBzdXBwb3J0IHRvIHRoZSBidWlsZCBzeXN0ZW0uCgoJKiBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvZGliX2NvbnZlcnQuYywKCSAgZGxscy94MTFkcnYvZGliX2RzdF9zd2FwLmMsIGRsbHMveDExZHJ2L2RpYl9zcmNfc3dhcC5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgZGlzcGxheSBvZiBkaWJzIG9uIE1TQiBYU2VydmVycy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSU5UMjFfR2V0RnJlZURpc2tTcGFjZSgpOiBUaGUgZHJpdmUgcGFyYW1ldGVyIGlzIGZvdW5kIGluIHRoZSBETAoJcmVnaXN0ZXIuCgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9oZWFwLmMsIGluY2x1ZGUvdGhyZWFkLmgsCgkgIGluY2x1ZGUvd2luYmFzZS5oOgoJU3RvcmUgdGhlIGxhc3QgZXJyb3IgY29kZSBhdCB0aGUgVEVCIG9mZnNldCB1c2VkIGJ5IE5UIGluc3RlYWQgb2YgdGhlCglXaW45eCBvbmUuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3dpbmVkb3MvaW50MTMuYywKCSAgZGxscy93aW5lZG9zL2ludDI1LmMsIGRsbHMvd2luZWRvcy9pbnQyNi5jLCBmaWxlcy9kcml2ZS5jLAoJICBpbmNsdWRlL2RyaXZlLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUdvdCByaWQgb2YgRFJJVkVfT3BlbkRldmljZSwgYW5kIHJlcGxhY2VkIGl0IHdpdGggV2luMzIgZXF1aXZhbGVudHMuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglUZXN0cyBmb3IgdGhlIG5vbi12YXJpYW50IGRhdGUgY29udmVyc2lvbiBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcHJvdmUvc2hyaW5rIHZhcmlhbnQgZHVtcGluZyBjb2RlLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL3ZhcmZvcm1hdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCB0aGUgdmFyaWFudCBmb3JtYXR0aW5nIGZ1bmN0aW9ucy4KCUJvb2wtPmJzdHIgbWFrZXMgYSBudW1iZXIgc3RyIHVubGVzcyBbQUxQSEF8TE9DQUxdQk9PTCBpcyBwYXNzZWQuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1hY3JvcyBmb3IgZHVtcGluZyBhIHZhcmlhbnRzIHR5cGUgYW5kIGZsYWdzLgoJRml4IHRoZSBkYXRlIGlubGluZXMuCglSb3VuZCBuZWdhdGl2ZSBudW1iZXJzIHdpdGggZnJhY3Rpb25hbCBwYXJ0cyA+IDAuNSBjb3JyZWN0bHkuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJVW5kZWZpbmUgRkFSIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggc3NsLmguCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIHdpbnZlciBpbmZvcm1hdGlvbiBmb3Igd2luZG93cyBtZSBhbmQgd2luZG93cyBzZXJ2ZXIgMjAwMy4KCVVwZGF0ZWQgZGF0ZSBmb3JtYXQgZnJvbSBZWU1NREQgdG8gWVlZWU1NREQuCglDaGFuZ2VkIGEgZmV3IG91dHB1dCBtZXNzYWdlcyBzbyB0aGV5IGFyZSBtb3JlCglpbnR1aXRpdmUvY29uc3RydWN0aXZlL3VwIHRvIGRhdGUuCgoJKiBkbGxzL29sZWFjYy9tYWluLmMsIGRsbHMvb2xlYWNjL29sZWFjYy5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgQ3JlYXRlU3RkQWNjZXNzaWJsZU9iamVjdC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglVc2UgYnV0dG9uIGZhY2UgY29sb3IgZm9yIHRoZSBpbWFnZSBtYXNrIHdoZW4gYWRkaW5nIGEgYml0bWFwIHRvIHRoZQoJdG9vbGJhciwgbm90IHRoZSBjb2xvciBvZiB0aGUgdG9wIGxlZnQgcGl4ZWwgb2YgdGhlIGltYWdlLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9udGRsbC9sb2Fkb3JkZXIuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL21vZHVsZS5oOgoJUmVtb3ZlZCBNT0RVTEVfR2V0TG9hZE9yZGVyQS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9oZWFwLmMsIGRsbHMvbnRkbGwvaGVhcC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJ0bEhlYXBSZUFsbG9jYXRlKCkgc2hvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkuCglBZGQgc21hbGwgdGVzdCB0byBtYWtlIHN1cmUgaXQgZG9lc24ndCByZXR1cm4uCglEb24ndCBpbXBvcnQgbnRkbGwgZm9yIHRlc3RzLCB3ZSBuZWVkIHRvIGxvYWQgaXQgZHluYW1pY2FsbHkuCgoJKiBkbGxzL21zZG1vL01ha2VmaWxlLmluLCBkbGxzL21zZG1vL2Rtb3JlZy5jLCBpbmNsdWRlL21lZGlhb2JqLmg6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBETU9SZWdpc3RlciwgRE1PVW5yZWdpc3RlciwgRE1PR2V0TmFtZSwgRE1PRW51bS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL25lX21vZHVsZS5jLAoJICBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYywKCSAgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBkbGxzL3VzZXIvdXNlcjE2LmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3MvdnhkLmMsCgkgIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvdGFzay5oLAoJICBpbmNsdWRlL3dpbmUvd2luYmFzZTE2Lmg6CglSZW1vdmVkIHRhc2suaC4KCgkqIGRsbHMva2VybmVsL2NwdS5jLCBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50YXRpb24gdXBkYXRlcwoKCSogcHJvZ3JhbXMvY2xvY2svVGgucmMsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVGhhaSBsYW5ndWFnZSB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvYXZpZmlsMzIvZWRpdHN0cmVhbS5jOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglJbXBsZW1lbnRlZCBJQVZJRWRpdFNUcmVhbV9mblBhc3RlIG1ldGhvZC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9nbF9hcGkuaCwKCSAgZGxscy9kZHJhdy9nbF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXNlIHZlcnRleCBhcnJheXMgd2hlbiBwb3NzaWJsZS4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IEhpcm9zaGkgSW5vdWUgPGlub3VlaEB1cmFudXMuZHRpLm5lLmpwPgoJRml4IHRoZSBuYW1lIG9mIEphcGFuZXNlIGRlZmF1bHQgR3VpRm9udC4KCgkqIGluY2x1ZGUvbG1hY2Nlc3MuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBzdHJ1Y3R1cmVzIHVzZWQgYnkgTmV0VXNlck1vZGFsc0dldC4KCjIwMDMtMTEtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJzL3dpbmUvcG9ydC5jLCBsb2FkZXIvTWFrZWZpbGUuaW4sCgkgIGxvYWRlci9tYWluLmM6CglDcmVhdGUgYSBodWdlIGFycmF5IGluIGJzcyB0byByZXNlcnZlIHRoZSBtZW1vcnkgYXJlYSB3ZSBuZWVkIGZvciBQRQoJYmluYXJpZXMsIHRvIHByZXZlbnQgZXhlYyBzaGllbGQgZnJvbSBtYXBwaW5nIHN5c3RlbSBsaWJyYXJpZXMgdGhlcmUuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3N0cmluZy5jLAoJICBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBsaWJzL3VuaWNvZGUvc29ydGtleS5jLAoJICBsaWJzL3VuaWNvZGUvc3RyaW5nLmMsIGxpYnMvdW5pY29kZS93aW5lX3VuaWNvZGUuZGVmOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgQ29tcGFyZVN0cmluZyBpbXBsZW1lbnRhdGlvbiB0byBsaWJ3aW5lX3VuaWNvZGUsIGFkZCBhIGJ1bmNoIG9mCglDb21wYXJlU3RyaW5nIHRlc3RzLgoKMjAwMy0xMS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSGVhcFJlQWxsb2MgZG9lc24ndCBhbGxvY2F0ZSBtZW1vcnkuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUhhbmRsZSBFSU8gZmlsZSBlcnJvci4KCgkqIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGluY2x1ZGUvcnBjZGNlLmg6CglHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUltcGxlbWVudGVkIFJwY09iamVjdFNldFR5cGUuCgoJKiBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvWDExX2NhbGxzLAoJICBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLCBkbGxzL3gxMWRydi90c194bGliLmMsCgkgIGRsbHMveDExZHJ2L3RzX3hsaWIuaCwgZGxscy94MTFkcnYveDExZGRyYXcuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHJhbmRyLmMsCgkgIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgdG9vbHMvbWFrZV9YMTF3cmFwcGVyczoKCVJlbW92ZWQgdGhlIHRzX3hsaWIgZmlsZXMuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZGdhMi5jLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94ZG5kLmMsCgkgIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglSZW1vdmVkIHRoZSByZW1haW5pbmcgVFNYIGNhbGxzLgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvSXQucmMsIHByb2dyYW1zL25vdGVwYWQvSXQucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvSXQucmMsIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvRW4ucmMsIHByb2dyYW1zL3dpbmVtaW5lL0l0LnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9SRUFETUUsIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvSXQucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkL3VwZGF0ZWQgSXRhbGlhbiByZXNvdXJjZXMuCgoJKiBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLAoJICBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsIGRsbHMvaW1hZ2VobHAvbW9kaWZ5LmM6CglNYXJjdXMgUi4gQnJvd24gPG1yYnJvd25AMHhkNi5vcmc+CglSZXBsYWNlIHZhcmlvdXMgcm91dGluZXMgd2l0aCBhIGZvcndhcmQgdG8gbnRkbGwuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IHNvbWUgY29uZnVzaW9uIGJldHdlZW4gbnVtYmVyIG9mIGJpdG1hcHMgYW5kIG51bWJlciBvZiBidXR0b25zIGluCglUT09MQkFSX1JlcGxhY2VCaXRtYXAoKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG5lZWQgdG8gc2VuZCBUVk5fRVhQQU5EKiBvbiBjb2xsYXBzaW5nIGVpdGhlciB3aGVuIHRoZSB1c2VyIGhhcwoJaW5pdGlhdGVkIGl0IHdpdGggdGhlIG1vdXNlL2tleWJhb3JkIG9yIGluIHJlc3BvbnNlIHRvIGEgVFZNX0VYUEFORAoJd2hlbiB0aGUgc3RhdGUgaXMgbm90IFRWSVNfRVhQQU5ERURPTkNFLiAgVGhpcyBicmluZ3MgdGhlIGxvZ2ljIGludG8KCWxpbmUgd2l0aCBUUkVFVklFV19FeHBhbmQuCgoJKiBkbGxzL3gxMWRydi9YMTFfY2FsbHMsIGRsbHMveDExZHJ2L3RzX3hsaWIuYywgZGxscy94MTFkcnYvdHNfeGxpYi5oLAoJICBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglSZW1vdmVkIG1vcmUgVFNYIGZ1bmN0aW9ucy4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglBbHdheXMgaWdub3JlIEJhZE1hdGNoIGVycm9ycyByZXN1bHRpbmcgZnJvbSBYU2V0SW5wdXRGb2N1cyBzbyB0aGF0IHdlCglkb24ndCBuZWVkIHRvIHdhaXQgZm9yIHRoZSByZXBseS4KCgkqIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglEZWxheSB0aGUgY3JlYXRpb24gb2YgdGhlIFggYXRvbXMgdW50aWwgd2UgcmVhbGx5IG5lZWQgdGhlbSwgdG8gYWxsb3cKCWdldHRpbmcgbW9yZSBvZiB0aGVtIGluIG9uZSBjYWxsLgoJVXNlIFhHZXRBdG9tTmFtZXMgdG8gcmV0cmlldmUgYWxsIHRoZSBzZWxlY3Rpb24gYXRvbXMgYXQgb25jZS4KCgkqIGRsbHMveDExZHJ2L1gxMV9jYWxscywgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3RzX3hsaWIuYywKCSAgZGxscy94MTFkcnYvdHNfeGxpYi5oLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglHZXQgcmlkIG9mIGEgYnVuY2ggb2YgVFNYIGZ1bmN0aW9ucy4KCjIwMDMtMTEtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJVGhlcmUncyBubyBuZWVkIHRvIGluaXRpYWxpemUgWEtCIG9uIHRoZSBHREkgZGlzcGxheSwgdGhpcyBzYXZlcyBhCgljb3VwbGUgb2Ygc2VydmVyIHJvdW5kIHRyaXBzLgoKCSogZGxscy9udGRsbC9wYXRoLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSdGxSZUFsbG9jYXRlSGVhcCgpIGRvZXMgbm90IGFsbG9jYXRlIG1lbW9yeS4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSGVhcFJlQWxsb2MoKSBkb2VzIG5vdCBhbGxvY2F0ZSBtZW1vcnkuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQmFpbCB3aGVuIHdlJ3JlIG91dCBvZiBtZW1vcnkuCgoJKiBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21zdmNydC90ZXN0cy9oZWFwLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHJlYWxsb2MoKSB0byBtYXRjaCB0aGUgZG9jdW1lbnRlZCBiZWhhdmlvdXIuCglBZGQgYSBmZXcgc2ltcGxlIHRlc3RzIGZvciBpdC4KCgkqIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzoKCUdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBUcmFjZSB0aGUgYXJndW1lbnQgdG8gUlBDUlQ0X3NlcnZlcl90aHJlYWQuCgktIF5udWxsIGltcGxpZXMgdHdvIGluZGlyZWN0aW9ucywgd2UgaGF2ZSBvbmUuCgktIE92ZSdzIGludGVudCBkb2Vzbid0IG1hdHRlciwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgcmlnaHQuCgoJKiBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5oLCBkbGxzL3gxMWRydi94ZG5kLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaC5jemVrYWxsYUB1dG9yb250by5jYT4KCUluaXRpYWwgaW1wbGVtZW50YXRpb24gdG8gc3VwcG9ydCBYRE5EIHByb3RvY29sLgoKCSogZGxscy9jb21tZGxnL2NkbGdfSXQucmMsIGRsbHMvb2xlZGxnL29sZWRsZ19JdC5yYywKCSAgZGxscy9vbGVkbGcvcnNyYy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9JdC5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9JdC5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQvdXBkYXRlZCBJdGFsaWFuIHJlc291cmNlcy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLAoJICBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywKCSAgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1ha2UgdGhlIGNvbnRyb2xzIHNlbmQgbm90aWZpY2F0aW9ucyB0byB0aGUgcGFyZW50IHdpbmRvdyBwYXNzZWQgdG8KCXRoZW0gaW4gQ1JFQVRFU1RSVUNULiAgQmFzZWQgb24gYSB0cmVldmlldyBwYXRjaCBieSBJZ29yIEdyYWhlay4KCgkqIHRvb2xzL01ha2VmaWxlLmluOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVJlbW92ZSB3aW5lY29uZi5saWJzIGZyb20gRVhUUkFTVUJESVJTLgoKCSogZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJSW50ZXJuIGFsbCB0aGUgYXRvbXMgd2UnbGwgbmVlZCBpbiBvbmUgc3RlcCB0byBhdm9pZCBtdWx0aXBsZSBzZXJ2ZXIKCXJvdW5kIHRyaXBzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglvcGVuX2lucHV0X2ZpbGUoKTogdHJ5IHRvIG9wZW4gdGhlIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CgliZWZvcmUgdHJ5aW5nIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSWYgdXNpbmcgdGhlIGRlZmF1bHQgdmFsdWVzLCBhbHNvIHNldCBkd1R5cGUgdG8gUkVHX1NaIGFzIG91ciBkZWZhdWx0CglzdHJpbmdzIGRvbid0IG5lZWQgdG8gYmUgZXhwYW5kZWQgKGZvdW5kIGJ5IFZhbGdyaW5kKS4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHVzZSB0aGUgZGF0YSByZXR1cm5lZCBieSBSZWdRdWVyeVZhbHVlRXhXIGlmIGl0IGZhaWxzIChmb3VuZCBieQoJVmFsZ3JpbmQpLgoJQSBzcGVsbGluZyBmaXguCgoJKiB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEb24ndCBpZ25vcmUgbGlicyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIgd2hpbGUgbGlua2luZy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFudXAgdGhlIGVkaXQgd25kcHJvYyBhIGJpdC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHNvbWUgZGVhZCBjb2RlOiBod25kUGFyZW50IGlzIG5vdCB1c2VkIGFueXdoZXJlLgoKCSogZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfSXQucmMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL3JzcmMucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIEl0YWxpYW4gbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIGRsbHMvcXVhcnR6L2NvbnRyb2wuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUF2b2lkIGxvbmcgbG9uZyBjb25zdGFudC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZWQgc3RhbGUgaW5zdGFuY2UuaC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggZGV0ZWN0aW9uIG9mIGZyZWV0eXBlL2ZyZWV0eXBlLmggd2hlbiB0aGUgbGliZnJlZXR5cGUgdmVyc2lvbgoJcmVxdWlyZXMgdGhhdCBmdDJidWlsZC5oIGlzIGluY2x1ZGVkIGZpcnN0LgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogR3JhbnQgV2lsbGlhbXNvbiA8dHJheHRvcGVsQGZhc3RtYWlsLmZtPgoJRHV0Y2gga2V5Ym9hcmQgc3VwcG9ydC4KCjIwMDMtMTEtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMzExMTguCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDMtMTEtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW46CglVc2UgYSBtb3JlIHBvcnRhYmxlIHdheSB0byBnZW5lcmF0ZSBhdXRob3JzLmMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluY2x1ZGUgZnQyYnVpbGQuaCBiZWZvcmUgZnJlZXR5cGUvZnJlZXR5cGUuaC4gTGliZnJlZXR5cGUgMi4xLjcKCXJlcXVpcmVzIHRoaXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9JdC5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL21zYWNtL21zYWNtLnJjLCBkbGxzL21zYWNtL21zYWNtX0l0LnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0l0LnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZC91cGRhdGVkIEl0YWxpYW4gcmVzb3VyY2VzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggc29tZSBvdGhlciBtdWx0aS10ZXh0dXJpbmcgcHJvYmxlbXMuCgoJKiB0b29scy93aW5lY29uZi5saWJzL2F1dG9jb25mLmVuZywgdG9vbHMvd2luZWNvbmYubGlicy9hdXRvY29uZi50Y2wsCgkgIHRvb2xzL3dpbmVjb25mLmxpYnMvYnJvd3NlcnMuZW5nLCB0b29scy93aW5lY29uZi5saWJzL2RpcmJyb3dzZXIudGNsLAoJICB0b29scy93aW5lY29uZi5saWJzL2dlbmVyYWwuZW5nLCB0b29scy93aW5lY29uZi5saWJzL2dldGZpbGVuYW1lLnRjbCwKCSAgdG9vbHMvd2luZWNvbmYubGlicy9tZXNzYWdlLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy9tZXNzYWdlMi50Y2wsCgkgIHRvb2xzL3dpbmVjb25mLmxpYnMvc2F2ZVJDLnRjbCwgdG9vbHMvd2luZWNvbmYudGNsLAoJICB0b29scy93aW5lY29uZi5saWJzL3dpbmUtaGFsZi5naWYsIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZWNvbmYuZW5nLAoJICB0b29scy93aW5lY29uZi5saWJzL3dpbmVjb25mLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy93aW5lY29uZjEudGNsOgoJUmVtb3ZlZCBvYnNvbGV0ZSB3aW5lY29uZiB0Y2wgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovYXZpc3BsaXQuYywKCSAgZGxscy9xdWFydHovY29udHJvbC5jLCBkbGxzL3F1YXJ0ei9jb250cm9sX3ByaXZhdGUuaCwKCSAgZGxscy9xdWFydHovZm91cmNjLmgsIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovcGluLmMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsIGluY2x1ZGUvd2luZS9kZWJ1Zy5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQVZJIFNwbGl0dGVyIGltcGxlbWVudGF0aW9uLgoJLSBBZGQgbmV3IGRlYnVnZ2luZyBmdW5jdGlvbiB3aW5lX2Ric3RyX2xvbmdsb25nLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3NkZGwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQXNzb3J0ZWQgc3BlbGxpbmcgZml4ZXMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUd2VhayB0aGUgdG9wLWxldmVsIGNvbW1lbnQgaG9wZWZ1bGx5IGZvciB0aGUgYmV0dGVyLgoJRml4IHRoZSAiRGVmYXVsdCBEZXZtb2RlIiBlbnRyeS4KCXMvU3RkQ29tcG9uZW50Q2F0ZWdvcmllc01nci9Db21wb25lbnQgQ2F0ZWdvcmllcyBNYW5hZ2VyLy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZSBlcnJvciBoYW5kbGluZyBpbiBDcnlwdEFjcXVpcmVDb250ZXh0LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgbWF5IGV4cGFuZCB0byBhIGxvbmcKCW5hbWUuCgoJKiBBVVRIT1JTOiBVcGRhdGVkIGF1dGhvcnMgbGlzdC4KCgkqIEFVVEhPUlMsIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9hdXRob3JzLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgdG9vbHMvbWFrZV9hdXRob3JzOgoJR2VuZXJhdGUgdGhlIGF1dGhvcnMgbGlzdCBmb3IgdGhlIHNoZWxsIGFib3V0IGRpYWxvZyBmcm9tIEFVVEhPUlMgYXQKCWNvbXBpbGUgdGltZS4gQ29udmVydGVkIHRoZSBhYm91dCBkaWFsb2cgdG8gVW5pY29kZS4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy91c2VyL2NvbnRyb2xzLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBuYXRpb25hbCAoaG90KWtleXMgd29yayBpbiBtZW51cy4gTWFrZSBtZW51IGNvZGUgdXNlIHVuaWNvZGUgQVBJcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVVuc3dhcCBQYWdlIFVwICYgRG93biBhbmQgZml4IFRCU19ET1dOSVNMRUZULgoJTk1fKiBub3RpZmljYXRpb25zIGdvIHZpYSBXTV9OT1RJRlkgbm90IFdOXz9TQ1JPTEwuCglQdWxsIHRoZSBub3RpZmljYXRpb24gd2luZG93IGZyb20gdGhlIENyZWF0ZVN0cnVjdC4KCVNlbmQgYSBUQl9USFVNQlBPU0lUSU9OIGF0IHRoZSBlbmQgb2YgYSBkcmFnLgoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgZ2VuZXJhdGlvbiBvZiB3aW5lYXBwbG9hZGVyIGluIHN1YiBkaXJlY3Rvcmllcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTY2FsZSB0aGUgYnVmZmVyIHNpemVzIHdpdGggTUFYX0xJU1RFRF9FTlZfVkFSLgoJQWRkIGEgbm90ZSBhYm91dCB0aGUgbGltaXRlZCBidWZmZXIgc2l6ZSB1c2VkIGJ5IHRoZSAqUHJvZmlsZSBmdW5jdGlvbnMuCglGaXggYSBjb3VwbGUgb2Ygc3BlbGxpbmcgZXJyb3JzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglUaGUgTFZOX0dFVERJU1BJTkZPIG5vdGlmeSBtZXNzYWdlIHNob3VsZCBwb2ludCB0byB0aGUgc2FtZSBpU3ViSXRlbQoJYXMgaW4gdGhlIGNhbGwgdG8gTElTVFZJRVdfR2V0SXRlbVQsIHZhbGlkIG9yIG5vdC4gRml4IGEgYmFkbHkgcGxhY2VkCglicmFjZS4KCgkqIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsIGRsbHMva2VybmVsL2luc3RyLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9wcml2YXRlLmgsIGRsbHMva2VybmVsL2xvY2FsMTYuYywKCSAgZGxscy9rZXJuZWwvc2VsZWN0b3IuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywKCSAgaW5jbHVkZS9zZWxlY3RvcnMuaDoKCVJlbW92ZWQgaW5jbHVkZS9zZWxlY3RvcnMuaC4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL3RocmVhZC5jOgoJRm9yY2UgbWluaW11bSBzdGFjayBzaXplIHRvIDFNYiBmb3IgWGxpYi4KCgkqIGRsbHMvdXNlci9mb2N1cy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIHNlcnZlci93aW5kb3cuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIE1vdmUgc2hlbGwgd2luZG93IGludG8gdGhlIGJhY2tncm91bmQuCgktIEFkZCB0ZXN0cyBmb3IgR2V0L1NldFNoZWxsV2luZG93KCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2RkcmF3L3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2RkcmF3L3Rlc3RzL2RkcmF3bW9kZXMuYzoKCVNhbWkgQWFyaW8gPHNhbWkuYWFyaW9Ac3VyZmV1LmZpPgoJQWRkZWQgc29tZSBjb25mb3JtYW5jZSB0ZXN0cyBmb3IgZGRyYXcuIFRoZXNlIGVudW1lcmF0ZSBzb21lIGRpc3BsYXkKCW1vZGVzIGFuZCB0aGVuIGF0dGVtcHQgdG8gb3BlbiB0aGVtLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy93aW5lZG9zL2hpbWVtLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQzMS5jOgoJVXNlIHRoZSB3aW5lX2xkdF8qIGZ1bmN0aW9ucyBkaXJlY3RseSBpbiB3aW5lZG9zIGluc3RlYWQgb2YgY2FsbGluZwoJU0VMRUNUT1JfQWxsb2NCbG9jay4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgY3VzdG9tZHJhd19maWxsIGlzIGNhbGxlZCBldmVuIGlmCglDRFJGX05PVElGWUlURU1EUkFXIGlzIG5vdCBiZWluZyB1c2VkIGJlY2F1c2Ugd2UgdXNlZCB0aGUgdGV4dCBhbmQKCWJhY2tncm91bmQgY29sb3JzIGZyb20gdGhhdCBzdHJ1Y3QgbGF0ZXIuCgoJKiBvYmplY3RzL2JpdG1hcC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQSBiaXRtYXAgY3JlYXRlZCBieSBDcmVhdGVDb21wYXRpYmxlQml0bWFwIHNob3VsZCBub3QgYmUgb3duZWQgYnkgYQoJZHJpdmVyIHVudGlsIGl0IGlzIHNlbGVjdGVkIGludG8gaXQuICBUaGUgZHJpdmVyIGNoZWNrcyB0aGF0IHRoZQoJYml0bWFwIGlzIG9mIHRoZSBjb3JyZWN0IGRlcHRoIGluIFNlbGVjdEJpdG1hcC4KCgkqIG9iamVjdHMvZm9udC5jOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQWRkZWQgc3VwcG9ydCBmb3IgcmV0dXJuaW5nIGNhcmV0IHBvc2l0aW9ucyBpbgoJR2V0Q2hhcmFjdGVyUGxhY2VtZW50VygpLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBcHBseSBzYW1lIG1hZ2ljIHRvIExpYkF0dHIubGNpZCBmcm9tIE1TRlQgdG8gU0xURy4KCjIwMDMtMTEtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90b29saGVscC5oLAoJICBkbGxzL3dpbmVkb3MvaW50MzEuYywgaW5jbHVkZS90b29saGVscC5oOgoJTW92ZWQgdG9vbGhlbHAuaCB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jLAoJICBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2tlcm5lbC9kb3NtZW0uYywgZGxscy9rZXJuZWwvcHJvZmlsZS5jLAoJICBkbGxzL2tlcm5lbC9yZWxheTE2LmMsIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9udGRsbC9sb2Fkb3JkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvc2VjLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywgZGxscy9udGRsbC92ZXJzaW9uLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy93aW5lZG9zL2Rvc2NvbmYuYywKCSAgZGxscy93aW5lZG9zL2hpbWVtLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3Z4ZC5jLAoJICBpbmNsdWRlL21pc2NlbXUuaCwgbWlzYy9vcHRpb25zLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGMuYywKCSAgb2JqZWN0cy9kaWIuYywgd2luZG93cy91c2VyLmM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6CglGaXhlZCByZWdyZXNzaW9uIGluIGxvYWRpbmcgb2YgYnVpbHRpbiBhcHBzIGZyb20gdGhlIHN5c3RlbSBkaXIgd2hlbgoJdGhlIG5hdGl2ZSBkb2Vzbid0IGV4aXN0LgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBpbmNsdWRlL21vZHVsZS5oOgoJTW92ZWQgYSBmZXcgZGVmaW5pdGlvbnMgdXNlZCBpbiBvbmx5IG9uZSBzb3VyY2UgZmlsZSBvdXQgb2YgbW9kdWxlLmguCgoJKiBkbGxzL2tlcm5lbC9pbnN0ci5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLCBpbmNsdWRlL3NlbGVjdG9ycy5oLAoJICBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJzL3dpbmUvbGR0LmMsIGxpYnMvd2luZS93aW5lLmRlZjoKCUFkZGVkIHdpbmVfbGR0X2lzX3N5c3RlbSgpIHRvIHJlcGxhY2UgdGhlIElTX1NFTEVDVE9SX1NZU1RFTSBtYWNybywKCWFuZCBzdG9wIGV4cG9ydGluZyB0aGUgV0lORV9MRFRfRklSU1RfRU5UUlkgY29uc3RhbnQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUxpbmsgdGhlIG1haW4gYmluYXJpZXMgd2l0aCAtLWV4cG9ydC1keW5hbWljIHNvIHRoYXQgdGhlIHB0aHJlYWQKCWVtdWxhdGlvbiB3b3JrcyBjb3JyZWN0bHkgKHJlcG9ydGVkIGJ5IEplcmVteSBTaGF3KS4KCgkqIGRsbHMvZDNkOC9kcmF3cHJpbS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRGlzYWJsZSB0aGUgdXNlIG9mIHRoZSAndycgcGFybSBpbiByaHcgbW9kZS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUlmIHN3YXAgbW9kZSBpcyBkaXNjYXJkLCBjbGVhciB0aGUgYmFja2J1ZmZlciBiZWZvcmUgbW92aW5nIG9udG8gdGhlCgluZXh0IGZyYW1lLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVVzZSB0aGUgY3VycmVudCB3aW5kb3cgdmlzdWFsIG9ubHkuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUluaXRpYWxpemUgYnVmZmVyIHJlZmVyZW5jZSBjb3VudC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvUHQucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJTG9jYWxpemF0aW9uIHRvIFBvcnR1Z3Vlc2UuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBncmFwaGljYWwgY29ycnVwdGlvbiBvbiBzdXJmYWNlIGxvY2sgd2hlbiBtdWx0aS10ZXh0dXJpbmcgaXMKCWFjdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSWdub3JlIGludmFsaWQgaVN1Ykl0ZW0gaW4gTElTVFZJRVdfR2V0SXRlbVQoKS4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCBhIGNvdXBsZSBvZiBtaXNzaW5nIHNwZWMgZmlsZXMuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfSXQucmMsIHByb2dyYW1zL2Nsb2NrL0l0LnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0l0LnJjLCBwcm9ncmFtcy9wcm9nbWFuL0l0LnJjLCBwcm9ncmFtcy9zdGFydC9JdC5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJSW1wcm92ZWQgSXRhbGlhbiB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL3NlcmlhbHVpL0l0LnJjLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjLAoJICBkbGxzL3NldHVwYXBpL0l0LnJjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjLCBkbGxzL3dpbmluZXQvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfSXQucmMsIGRsbHMvd2lubW0vd2lubW1fRW4ucmMsCgkgIGRsbHMvd2lubW0vd2lubW1fSXQucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCBJdGFsaWFuIHRyYW5zbGF0aW9uLgoKMjAwMy0xMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2RldmljZS5jLCBkbGxzL2tlcm5lbC9maWxlMTYuYywgZGxscy9rZXJuZWwvaW5zdHIuYywKCSAgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdnhkLmMsIGRsbHMva2VybmVsL3dpbjg3ZW0uYywKCSAgZGxscy9rZXJuZWwvd2luZGVidWcuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLAoJICBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvZnB1LmMsCgkgIGRsbHMvd2luZWRvcy9pbnQxMS5jLCBkbGxzL3dpbmVkb3MvaW50MTIuYywgZGxscy93aW5lZG9zL2ludDEzLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQxNS5jLCBkbGxzL3dpbmVkb3MvaW50MTcuYywgZGxscy93aW5lZG9zL2ludDIxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyNS5jLCBkbGxzL3dpbmVkb3MvaW50MjYuYywgZGxscy93aW5lZG9zL2ludDJhLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQzMS5jLCBkbGxzL3dpbmVkb3MvaW50NDEuYywgZGxscy93aW5lZG9zL2ludDRiLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQ1Yy5jLCBkbGxzL3dpbmVkb3MvdnhkLmMsIGRsbHMvd2luZWRvcy94bXMuYywKCSAgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL21zZG9zLmg6CglNb3ZlZCBhIG51bWJlciBvZiBET1MgZGVmaW5pdGlvbnMgb3V0IG9mIHRoZSBnbG9iYWwgaGVhZGVycyBhbmQgaW50bwoJd2luZWRvcyBwcml2YXRlIGZpbGVzLiBSZW1vdmVkIHRoZSBtc2Rvcy5oIGhlYWRlci4KCjIwMDMtMTEtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgdG9vbHMvd2luYXBpL21zdmNtYWtlciwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJR2V0IHJpZCBvZiB0aGUgbXNkb3MvIGRpcmVjdG9yeS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9kZXZpY2UuYywgZGxscy9rZXJuZWwvaW5zdHIuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvdnhkLmMsIGluY2x1ZGUvbWlzY2VtdS5oOgoJTW92ZWQgd2luZWRvcyBsb2FkaW5nIGZ1bmN0aW9uYWxpdHkgdG8gZGxscy9rZXJuZWwvaW5zdHIuYyBhbmQgZ2V0IHJpZAoJb2YgbXNkb3MvZHBtaS5jLgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlcyBtb3JlIHVzZSBiZWZvcmUgc2V0IHJhY2VzLgoJV29yayBhcm91bmQgZm9yIHF1ZXVlIHJlb3JkZXJpbmcgZmVhdHVyZS4KCVN0b3AgcmVjb3JkaW5nIG9uIHJlc2V0LgoJQmV0dGVyIGRlYnVnIGluZm8uCglEc291bmQgY2FsbGJhY2sgY2FwdHVyZSBzdGF0ZSBmaXguCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCB0aGUgbm9uLXZhcmlhbnQgZGF0ZSBjb252ZXJzaW9ucyBjb3JyZWN0bHksIHdpdGhvdXQgZ29pbmcKCXRocm91Z2ggJ3N0cnVjdCB0bScgZmlyc3QuIEhhbmRsZSBuZWdhdGl2ZSAmICdyb2xsaW5nJyBkYXRlcyB0b28uCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBpbmNsdWRlL29sZWF1dG8uaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgc29tZSBtaXNzaW5nIHByb3RvdHlwZXMvZGVmaW5lcy4KCU9hQnVpbGRWZXJzaW9uKCkgcmV0dXJucyBhIFVMT05HLCBub3QgVUlOVC4KCgkqIGxpYnMvdW5pY29kZS9zdHJpbmcuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlbW92ZSBhIHJlZHVuZGFudCB0ZXN0LgoJSGFuZGxlICdhJywnQScsJ2UnLCdFJywnRicsJ2cnLCdHJyBmbGF2b3VycyBvZiBkb3VibGUgYXJndW1lbnRzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEdW1wIGEgZmV3IG1vcmUga25vd24gdmFyaWFudCB0eXBlcy4KCURvbid0IGNhbGwgRGF0ZVRvVE0oKSAtIGl0J3MgZ29pbmcgYXdheSBzb29uLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXggYSBjcmFzaCBpbiBHZXRMb2NhbGVJbmZvKCkgd2hlbiBleHRyYSBoaWdoIGJpdHMgYXJlIHNldC4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IENhcmxvcyBMb3phbm8gPGNsb3phbm9AYW5kYWdvLmNvbT4KCUZpeGVkIENCX0RJUjE2IGhhbmRsaW5nLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IFJlcGFpcmVkIElOVDIxX0ZpbmRGaXJzdC9GaW5kTmV4dC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL3dpbmVkb3MvaW50MjEuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvZHJpdmUuaCwKCSAgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvbXNkb3MuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gbW92ZWQgdGhlIHJlbWFpbmluZyBvZiBpbnQyMSBjYWxscyB0byBkbGxzL3dpbmVkb3MKCS0gZGlzYWJsZWQgZHJpdmUgZW5hYmxpbmcvZGlzYWJsaW5nIGFzIHdlbGwgYXMgZGlzayBzZXJpYWwgbnVtYmVyCgkgIHdyaXRpbmcgKGZvciBETEwgc2VwYXJhdGlvbiBpc3N1ZXMpCgktIGFkZGVkIHZvbHVtZSBtYW5hZ2VtZW50IHByb3RvdHlwZXMgdG8gaW5jbHVkZS93aW5iYXNlLmgKCS0gc3RhcnRlZCBEZWZpbmVEb3NEZXZpY2UgKG5lZWRlZCBieSBmaXJzdCBpdGVtIGluIHRoaXMgbGlzdCkKCS0gcmVtb3ZlZCBpbnQyMSBzcGVjaWZpYyBjb2RlIGZyb20gZGxscy9rZXJuZWwKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxscywKCSAgZGxscy93aW5lZDNkLy5jdnNpZ25vcmUsIGRsbHMvd2luZWQzZC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZDNkL3ZlcnRleHNoYWRlci5jLCBkbGxzL3dpbmVkM2Qvd2luZWQzZC5zcGVjLAoJICBkbGxzL3dpbmVkM2Qvd2luZWQzZF9tYWluLmMsIGRsbHMvd2luZWQzZC93aW5lZDNkX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS93aW5lL3dpbmVkM2RfZ2wuaCwgaW5jbHVkZS93aW5lL3dpbmVkM2RfaW50ZXJmYWNlLmgsCgkgIGluY2x1ZGUvd2luZS93aW5lZDNkX3R5cGVzLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZCB0aGUgd2luZWQzZCBkbGwgZm9yIGJlZ2lubmluZyBhIGNsZWFuZXIgZDNkIGFyY2hpdGVjdHVyZSB0aGF0IHdpbGwKCWNvbnRhaW4gdGhlIHNoYXJlZCBvcGVuR0wgY29kZSBuZWVkZWQgZm9yIGFsbCB3aW5lIGRpcmVjdDNkCglpbXBsZW1lbnRhdGlvbnMuCgoJKiBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvaW5wdXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3Iga2V5Ym9hcmQgbGF5b3V0IEFQSXMuCgoJKiBvYmplY3RzL2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGRyaXZlciBDcmVhdGVESUJTZWN0aW9uIGJlZm9yZSBjYWxsaW5nCglpdC4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9wcm9jZXNzLmM6CglLaXJpbGwgU21lbGtvdiA8a2lyckBsYW5kYXUucGh5cy5zcGJ1LnJ1PgoJQWRkZWQgX2V4ZWNsZS9fZXhlY2xwZSAmIF9zcGF3bmxlL19zcGF3bmxwZSBzdHVicy4KCjIwMDMtMTEtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9hdG9tLmMsIGRsbHMva2VybmVsL2RldmljZS5jLCBkbGxzL2tlcm5lbC9pbnN0ci5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLCBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsCgkgIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdnhkLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwKCSAgaW5jbHVkZS9pbnN0YW5jZS5oOgoJUmVtb3ZlZCBpbnN0YW5jZS5oIGFuZCBjYWxsYmFjay5oLCBtb3ZpbmcgdGhlaXIgY29udGVudHMgdG8KCWtlcm5lbF9wcml2YXRlLmguCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL2NwdS5jLCBkbGxzL2tlcm5lbC9lbnZpcm9uLmMsIGRsbHMva2VybmVsL3ZpcnR1YWwuYywKCSAgbWlzYy9jcHUuYywgdG9vbHMvd2luYXBpL21zdmNtYWtlciwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJTW92ZWQgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L3ZpcnR1YWwuYyBhbmQgbWlzYy9jcHUuYyB0bwoJZGxscy9rZXJuZWwuCglHZXQgcmlkIG9mIHRoZSBtZW1vcnkvIGRpcmVjdG9yeS4KCgkqIGRsbHMvY2FwaTIwMzIvY2FwMjB3eHguYywgZGxscy9jYXBpMjAzMi9jYXAyMHd4eC5oOgoJQVZNIEdtYkggaHR0cDovL3d3dy5hdm0uZGUvCglSZW1vdmVkIHNvbWUgb2xkIFJDUyBjb21tZW50cy4KCUZpeGVkIGEgbWVzc2FnZSBsb2NhdGlvbiBhbmQgQ0FQSV9XQUlUX0ZPUl9TSUdOQUwuCgoJKiBvYmplY3RzL2ZvbnQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgbHBuRml0IGJhY2sgdG8gbXVsdGlieXRlIGluIEdldFRleHRFeHRlbnRFeFBvaW50QS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIExWU19FWF9DSEVDS0JPWEVTLgoKCSogb2JqZWN0cy9icnVzaC5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQW4gYXBwIGRlcGVuZHMgb24gYSBOVUxMIHJldHVybiBmcm9tIENyZWF0ZURJQlBhdHRlcm5CcnVzaFB0IGlmIGRhdGEKCWlzIE5VTEwuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBzZXR0aW5nIGluZm9QdHItPmZpcnN0VmlzaWJsZSB0byBOVUxMIGluIFRSRUVWSUVXX1NvcnQuCgoyMDAzLTExLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxvYWRlci9wdGhyZWFkLmM6CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHB0aHJlYWRfZ2V0YXR0cl9ucC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvd2luZXBzL2Rvd25sb2FkLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsCgkgIGRsbHMvd2luZXBzL3R5cGUxLmMsIGRsbHMvd2luZXBzL3R5cGU0Mi5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVNjYWxlIHRoZSBPVVRMSU5FVEVYVE1FVFJJQydzIGJvdW5kaW5nIGJveCB3aXRoIHRoZSBmb250IHNpemUuCglGaXggd2luZXBzJ3MgZm9udCBkb3dubG9hZGVycyB0byBjb3BlIHdpdGggdGhpcyBiZWhhdmlvdXIuCgoJKiBvYmplY3RzL2RpYi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHdlIGNyZWF0ZSBhIHBvbHljaHJvbWUgYml0bWFwIGZyb20gdGhlIGRpYi4gIENyZWF0ZURJQml0bWFwCglkb2Vzbid0IGRvIHRoaXMgd2hlbiB0aGUgZGliIGlzIDFicHAgYW5kIGhhcyBhIGJsYWNrL3doaXRlIGNvbG91cgoJdGFibGUuICBJbiBzdWNoIGNhc2VzIHRoaXMgcmVzdWx0ZWQgaW4gYSBtb25vY2hyb21lIGJpdG1hcCBiZWluZwoJU3RyZXRjaEJsdCdlZCB3aGljaCBpcyBjbGVhcmx5IGluY29ycmVjdCBzaW5jZSB3ZSB0aGVuIHN0YXJ0IHVzaW5nCgl0ZXh0IGFuZCBia2duZCBjb2xvdXJzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzb21lIHdlaXJkIGxvZ2ljIGluIEltYWdlTGlzdF9Xcml0ZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUEgbXVsdGljb2x1bW4gbGlzdHZpZXcgc2hvdWxkIGdldCBhIGN1c3RvbWRyYXcgbm90aWZpY2F0aW9uIGZvciB0aGUKCWl0ZW0gYXMgd2VsbCBhcyBvbmUgZm9yIHN1Yml0ZW0gMC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBbHNhIG1pZGkgZml4ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgbG9hZGVyLy5jdnNpZ25vcmUsIGxvYWRlci9NYWtlZmlsZS5pbiwKCSAgbG9hZGVyL2dsaWJjLmMsIHRvb2xzL3dpbmVpbnN0YWxsOgoJQWRkZWQgYSB3aW5lLWdsaWJjIGJpbmFyeSB0aGF0IGRldGVjdHMgdGhlIGdsaWJjIHRocmVhZGluZyBpbiB1c2UgYW5kCglleGVjcyB0aGUgY29ycmVzcG9uZGluZyB3aW5lIGJpbmFyeS4KCVJlbW92ZWQgdGhlIC0td2l0aC1ucHRsIGNvbmZpZ3VyZSBvcHRpb24uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicy9wb3J0L01ha2VmaWxlLmluLCBsaWJzL3BvcnQvZ2V0dGlkLmMsIGxpYnMvcG9ydC9zaWdzZXRqbXAuYywKCSAgbG9hZGVyL3B0aHJlYWQuYzoKCUFkZGVkIHNpZ3NldGptcC9zaWdsb25nam1wIGFuZCBnZXR0aWQgdG8gdGhlIHBvcnRhYmlsaXR5IGxpYnJhcnkuCgoyMDAzLTExLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9zZXJ2ZXIuYywgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwKCSAgbGlicy93aW5lL01ha2VmaWxlLmluLCBsaWJzL3dpbmUvY29uZmlnLmMsIGxpYnMvd2luZS9sb2FkZXIuYywKCSAgbGlicy93aW5lL3dpbmUuZGVmOgoJTW92ZWQgdGhlIGV4ZWNfd2luZV9iaW5hcnkgZnVuY3Rpb24gdG8gdGhlIHdpbmUgbGlicmFyeSwgYW5kIHVzZSBpdCB0bwoJZXhlYyB0aGUgd2luZXNlcnZlciB0b28uCgoJKiBkbGxzL250ZGxsL3ZpcnR1YWwuYzoKCU1ha2Ugc3VyZSB0aGUgcHJvdGVjdGlvbiBmbGFncyBvbiB0aGUgbWVtb3J5IHZpZXcgb2YgdGhlIFBFIGhlYWRlcgoJbWF0Y2ggdGhlIGFjdHVhbCBtbWFwIHByb3RlY3Rpb24uCgoJKiB0b29scy93aW5lZHVtcC9wZS5jOiBDb3NtZXRpY3MuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlYy5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL3NkZGwuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2guY3pla2FsbGFAdXRvcm9udG8uY2E+CglBZGRlZCBzdHVicyBmb3IgQWNjZXNzQ2hlY2tCeVR5cGUsIEFkZEF1ZGl0QWNjZXNzQWNlLAoJR2V0TmFtZWRTZWN1cml0eUluZm9BLCBHZXROYW1lZFNlY3VyaXR5SW5mb1cuCglJbXBsZW1lbnRlZCBDb252ZXJ0U3RyaW5nU2VjdXJpdHlEZXNjcmlwdG9yVG9TZWN1cml0eURlc2NyaXB0b3JXLAoJRGVsZXRlQWNlLCBNYWtlQWJzb2x1dGVTRCwgR2V0QWNsSW5mb3JtYXRpb24sIENvbnZlcnRTdHJpbmdTaWRUb1NpZFcsCglSdGxEZWxldGVBY2UsIFJ0bFF1ZXJ5SW5mb3JtYXRpb25BY2wuCgoJKiBkbGxzL2tlcm5lbC92ZXJzaW9uLmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCURvbid0IGluY2x1ZGUgYnVpbGQgbnVtYmVyIGluIEdldFZlcnNpb24oKSBmb3IgV2luOXggdmVyc2lvbnMuCgoJKiBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUltcGxlbWVudGVkIFJlcG9ydEV2ZW50QS9XLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGJ1ZyBpbiBWa0tleVNjYW4uCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzogQ2FybG9zIExvemFubyA8Y2xvemFub0BhbmRhZ28uY29tPgoJTnRSZWFkRmlsZSBjaGVja3MgdGhhdCBvZmZzZXQgaXMgbm90IG51bGwuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCURvbid0IGZsYWcgZmFpbGVkIG9wZW5zIG9mIHVuc3VwcG9ydGVkIGZvcm1hdHMgYXMgYW4gZXJyb3IuCgoJKiBjb250cm9scy9jb21iby5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIENCU197TE9XRVJ8VVBQRVJ9Q0FTRS4KCgkqIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvcHMuYywKCSAgZGxscy93aW5lcHMvcHNkcnYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgbXVsdGljb3B5IHByaW50aW5nIGNvcnJlY3RseS4KCgkqIGRsbHMvd2luZXBzL3R5cGU0Mi5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJRml4IGZvcm1hdCBzdHJpbmdzIGluIFQ0Ml9kb3dubG9hZF9oZWFkZXIoKSBhbmQgVDQyX2Rvd25sb2FkX2dseXBoKCkuCgoJKiBvYmplY3RzL2ZvbnQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHRoZSBidWZmZXIgcGFzc2VkIHRvIEdldE91dGxpbmVUZXh0TWV0cmljcyBpc24ndCBiaWcgZW5vdWdoIHRoZW4KCVdpbmRvd3MgZmlsbHMgaXQgdXB0byB0aGUgc3VwcGxpZWQgc2l6ZSByYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4KCWVycm9yLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnN0aWZ5IHN0cmluZ3MuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgaW5jbHVkZS93aW5zcG9vbC5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDb25zdGlmeSBzdHJpbmdzLgoJRml4IGFyZ3Mgb2YgW0dTXWV0UHJpbnRlckRhdGFFeAoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IHBhcnNpbmcgb2YgR0wgdmVyc2lvbiBzdHJpbmcgaW4gWC5ZIGNhc2VzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGxvYWRlci9NYWtlZmlsZS5pbjoKCU9ubHkgYnVpbGQgYm90aCBXaW5lIGJpbmFyaWVzIG9uIExpbnV4LCBwdGhyZWFkIHN1cHBvcnQgZG9lc24ndCB3b3JrCglvbiBvdGhlciBwbGF0Zm9ybXMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJRml4IHJhY2UgaW4gcmVhbCBtb2RlIGV2ZW50IGhhbmRsaW5nLgoJTWVyZ2UgcmVhbCBtb2RlIHBlbmRpbmcgZXZlbnQgY2hlY2tpbmcgcm91dGluZXMuCglSZW1vdmUgc29tZSBvYnNvbGV0ZSBjb2RlLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvc2hhZGVyLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gc3R1cGlkIHR5cG9zIGZpeGVzIG9uIHNvZnR3YXJlIHZlcnRleCBzaGFkZXIgb3BlcmFuZHMKCS0gQ29weVJlY3RzIGZpeCAocHJvYmxlbSBpbiBlcnJvciBwYXRocykgYmFzZWQgb24gQ2FybG9zIExvemFubyBwYXRjaAoKCSogZGxscy94MTFkcnYvc2Nyb2xsLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglSZXdyaXRlIFNjcm9sbERDLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUGF0Qmx0KClzIGdldCByZWNvcmRlZCBhcyBFTVJfQklUQkxUIHJlY29yZHMgd2l0aCBvZmZCbWlTcmMgPT0gMCwgc28KCWVuc3VyZSB0aGF0IHdlIHBpY2sgdGhlc2Ugb3V0IGluIHBsYXliYWNrLgoJRU1SX1NUUkVUQ0hCTFQgc2hvdWxkIGJlaGF2ZSBsaWtlIEVNUl9CSVRCTFQgaWYgdGhlcmUgYXJlIG5vIGJpdHMKCShpZS4gaXQncyBhIFBhbEJsdCkuCglTZXQgdGhlIHRleHQgYW5kIGJrZ25kIGNvbG91ciB0byBibGFjayBhbmQgd2hpdGUgcmVzcGVjdGl2ZWx5IGJlZm9yZQoJZW51bWVyYXRpbmcgYW4gZW1mLgoJUHJpbnQgb3V0IHRoZSByZWNvcmQgbmFtZXMgdG8gbWFrZSBkZWJ1Z2dpbmcgZWFzaWVyLgoJQWRkIGEgZmV3IFRSQUNFKClzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNdWNoIGJldHRlciBwYXJzaW5nIG9mIC9ldGMvcHJpbnRjYXAuCglEb24ndCBldmVuIHRyeSB0byB1c2UgaGV1cmlzdGljcyB0byBndWVzcyB3aGV0aGVyIHRoZSBwcmludGVyIGlzCglQb3N0U2NyaXB0IG9yIG5vdCAtIHdlJ3JlIGdvaW5nIHRvIGdldCBpdCB3cm9uZyBhbnl3YXkuCglEb24ndCBsaXN0IHByaW50ZXIgZW50cmllcyB0aGF0IGJlZ2luIHdpdGggaXNwdW5jdCgpIC0gdGhlc2UgYXJlIHVzZWQKCWZvciAndGMnIGFsaWFzZXMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQmV0dGVyIGNvbG9yLWtleWluZyBzdXBwb3J0LgoKCSogZGxscy93aW5lcHMvcHBkLmMsIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsCgkgIGRsbHMvd2luZXBzL3R5cGU0Mi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnN0aWZ5IHN0cmluZ3MuCgoJKiBkbGxzL2dsdTMyL01ha2VmaWxlLmluLCBkbGxzL2dsdTMyL2dsdS5jLCBkbGxzL2dsdTMyL2dsdTMyLnNwZWM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHRoZSBtaXNzaW5nIHRlc3NlbGF0b3IgZnVuY3Rpb25zIGFuZCBmaXggdGhlIHRlc3NlbGF0b3IKCWNhbGxiYWNrcyBzbyB0aGF0IHRoZSBjb3JyZWN0IGNhbGxpbmcgY29udmVudGlvbiBpcyB1c2VkLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZCBjb25zdGFudHMgZm9yIERTQV9JbnNlcnRJdGVtIGFuZCBEUEFfSW5zZXJ0UHRyIGFjY29yZGluZyB0byBuZXdlc3QKCU1TRE4gaGVhZGVycy4KCgkqIGRsbHMvd2luZXBzL3RleHQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldFRleHRFeHRlbnRQb2ludCBhbHJlYWR5IGFkZHMgY2hhcl9leHRyYSBzbyBkb24ndCBhZGQgaXQgb24gYWdhaW4uCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmMsIG9iamVjdHMvZm9udC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldFRleHRFeHRlbnRQb2ludCBzaG91bGQgaW5jbHVkZSBhbiBpbnRlciBjaGFyYWN0ZXIgc3BhY2luZyBzZXQgYnkKCVNldFRleHRDaGFyYWN0ZXJFeHRyYS4KCgkqIG9iamVjdHMvZGMuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgcmVzZWxlY3QgdGhlIGZvbnQgaWYgdGhlIHRyYW5zZm9ybWF0aW9uIGhhcyBhY3R1YWxseSBjaGFuZ2VkLgoKCSogZ3JhcGhpY3MvcGF0aC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2UgbmVlZCB0byBzZXQgdGhlIFdvcmxkVHJhbnNmb3JtIHRvIHRoZSBpZGVudGl0eSBiZWZvcmUgc3Ryb2tpbmcgb3IKCWZpbGxpbmcgdGhlIHBhdGguCglGaXhlZCBhIG1lbW9yeSBsZWFrLgoKCSogb2JqZWN0cy9kaWIuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZURJQlNlY3Rpb24gaWdub3JlcyB0aGUgc3VwcGxpZWQgdmFsdWVzIG9mIGJpQ2xyVXNlZCBhbmQKCWJpQ2xySW1wb3J0YW50IGFuZCBjYWxjdWxhdGVzIHRoZW0gZnJvbSBiaUJpdENvdW50LgoKCSogY29udHJvbHMvZWRpdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2UgbmVlZCB0byBpbnZhbGlkYXRlIHRoZSByZXBsYWNlZCB0ZXh0IHJlZ2lvbiBiZWZvcmUgY2FsbGluZwoJRU1fU2Nyb2xsQ2FyZXQgYXMgdGhpcyBtYXkgY2FsbCBTY3JvbGxXaW5kb3cuICBQcmV2aW91c2x5IG5ld2x5IGFkZGVkCglsaW5lcyB3ZXJlIG5vdCBkaXNwbGF5ZWQgaWYgdGhlIGVkaXQgbmVlZGVkIHRvIHNjcm9sbC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJT3duZXJkcmF3IGJ1dHRvbnMgc2hvdWxkIGVyYXNlIHRoZW1zZWx2ZXMgaW4gV01fRVJBU0VCS0dORC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBMVlNfRVhfU1VCSVRFTUlNQUdFUy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggYSByYWNlIGNvbmRpdGlvbiB3aGVyZSByZXN1bHQgY291bGQgYmUgcmVhZCBiZWZvcmUgc2V0LgoJRml4IHRlc3QgdG8gdXNlIGNvcnJlY3QgZXZlbnQgaW4gaW50ZXJhY3RpdmUgbW9kZS4KCgkqIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglGaXggZm9ybWF0IHNwZWNpZmllcnMgZm9yIEhEQ3MuCgoyMDAzLTExLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcHRocmVhZC5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9zZXJ2ZXIuYywgZGxscy9udGRsbC9zeXNkZXBzLmMsCgkgIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luZS9wdGhyZWFkLmgsCgkgIGxpYnMvd2luZS9wb3J0LmMsIGxvYWRlci9rdGhyZWFkLmMsIGxvYWRlci9wdGhyZWFkLmM6CglNb3ZlZCB0aGUgcmVtYWluaW5nIFNZU0RFUFNfKiBmdW5jdGlvbnMgdG8gdGhlIHdpbmVfcHRocmVhZCBpbnRlcmZhY2UuCglMZXQgdGhlIHB0aHJlYWQgbGlicmFyeSBhbGxvY2F0ZSB0aGUgc3RhY2sgaXRzZWxmLgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvZ29waGVyLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJS2lyaWxsIFNtZWxrb3YgPGtpcnJAbGFuZGF1LnBoeXMuc3BidS5ydT4KCUFkZGVkIGdvcGhlciBzdHVicy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBzb21lIHN0dXBpZCBidWcgd2l0aCBtaXNzaW5nIGJyYWNlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJUmVtb3ZlZCBkZWFkIGNvZGUgaW4gVmFyRGF0ZUZyb21VSTIoKS4KCgkqIE1ha2VmaWxlLmluOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUlmIHRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgd2hlbiBjYWxsaW5nIGV0YWdzLCBpdCdzIHByb2JhYmx5IHRvbwoJbG9uZyB3aGVuIGludm9raW5nIGN0YWdzLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLAoJICBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYywKCSAgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5lbW0xNi5oLCBkbGxzL3dpbm1tL3dpbm1tLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlbW92ZWQgc29tZSBtb3JlIGRlcGVuZGVuY2llcyBvbiB3aW5lIDE2LWJpdCBzcGVjaWZpYyBlbnRpdGllcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6CglEb24ndCBib3RoZXIgdG8gZmlsbCB0aGUgY29sb3IgbWFwIG9uIFRydWVDb2xvciBkaXNwbGF5cy4KCU1vdmVkIFgxMSBsb2NraW5nIGNhbGxzIG91dCBvZiB0aGUgbG9vcHMuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglBdm9pZCB0aGUgWFN5bmMgY2FsbCBpbiBYMTFEUlZfZXhwZWN0X2Vycm9yIGJ5IHN0b3JpbmcgdGhlIGN1cnJlbnQKCXJlcXVlc3QgbnVtYmVyIGFuZCBjaGVja2luZyB0aGF0IG9uIGVycm9ycy4KCU1vdmVkIHRoZSBYU3luYyBjYWxsIGZyb20gWDExRFJWX2NoZWNrX2Vycm9yIGludG8gdGhlIGNhbGxlcnMgc28gdGhhdAoJaXQgY2FuIGJlIGF2b2lkZWQgZm9yIHJlcXVlc3RzIHRoYXQgYWxyZWFkeSB3YWl0IGZvciBhIHJlcGx5LgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmk6CglUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCXVwZGF0ZWQgW21jaV0gJiBbZHJpdmVyczMyXSBzZWN0aW9ucy4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oOgoJR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCU1vdmUgc2NzaV9jb21tYW5kX3NpemUgZnJvbSB3aW5lc2NzaS5oIHRvIFNDU0lfRml4X0NNRF9MRU4oKSwgaXRzIG9ubHkKCXVzZXIuCgoJKiBkbGxzL3R0eWRydi93bmQuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUZpeCBmb3JtYXQgc3BlY2lmaWVycyBmb3IgSFdORHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgYnVmZmVyIG92ZXJmbG93LgoJRml4ZWQgdHdvIC1Xd3JpdGUtc3RyaW5ncyB3YXJuaW5ncyAoYnV0IHRoZXJlIGFyZSBtb3JlKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2dkaS9mcmVldHlwZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUxvYWQgYW55IFRydWVUeXBlIGZvbnRzIHRoYXQgZm9udGNvbmZpZyBrbm93cyBhYm91dC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZGVkIGNoZXZyb24gc3VwcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbGVhc2VDYXB0dXJlIG9uIGxidXR0b25kb3duIGlmIHRoZSBjdXJzb3IgaXMgb3V0c2lkZSBhbiBpdGVtLCBqdXN0CglsaWtlIHRoZSBuYXRpdmUgb25lIGRvZXMuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgdGhlIHZpc3JnbiBpbiBSZXNldERDIHNvIHRoYXQgR2V0Q2xpcEJveCB3b3JrcyBjb3JyZWN0bHkgYWZ0ZXIKCWEgY2hhbmdlIGluIHBhcGVyIHNpemUvb3JpZW50YXRpb24uCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJZiBHZXROZXh0RGxnVGFiSXRlbSgpIGNhbm5vdCBmaW5kIGFueSBuZXh0IGNvbnRyb2wsIHJldHVybiB0aGUgaGFuZGxlCglvZiB0aGUgb3JpZ2luYWwgY29udHJvbC4KCjIwMDMtMTEtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBERVZFTE9QRVJTLUhJTlRTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgbG9hZGVyLy5jdnNpZ25vcmUsIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL2t0aHJlYWQuYywKCSAgbG9hZGVyL3B0aHJlYWQuYzoKCUNyZWF0ZSB0d28gc2VwYXJhdGUgd2luZSBiaW5hcmllcywgb25lIHVzaW5nIGxpYnB0aHJlYWQgYW5kIG9uZSB1c2luZwoJa2VybmVsIHRocmVhZGluZyBkaXJlY3RseS4KCUdldCByaWQgb2YgdGhlIHJlbWFpbmluZyBIQVZFX05QVEwgaWZkZWZzLgoJUmVtb3ZlIHRoZSBzY2hlZHVsZXIgZGlyZWN0b3J5LgoKCSogREVWRUxPUEVSUy1ISU5UUywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBsb2FkZXIvLmN2c2lnbm9yZSwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvbWFpbi5jLAoJICB0b29scy93aW5hcGkvbXN2Y21ha2VyLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmV3cmFwcGVyOgoJUmUtdXNlIHRoZSBsb2FkZXIgZGlyZWN0b3J5IGZvciB0aGUgbWFpbiB3aW5lIGxvYWRlciwgYW5kIGdldCByaWQgb2YKCXRoZSBtaXNjZW11IGRpcmVjdG9yeS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9tb2R1bGUuYywgbG9hZGVyL21vZHVsZS5jOgoJTW92ZWQgbG9hZGVyL21vZHVsZS5jIHRvIGRsbHMva2VybmVsLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY2FwaTIwMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9jYXBpMjAzMi9NYWtlZmlsZS5pbiwgZGxscy9jYXBpMjAzMi9jYXAyMHd4eC5jLAoJICBkbGxzL2NhcGkyMDMyL2NhcDIwd3h4LmgsIGRsbHMvY2FwaTIwMzIvY2FwaTIwMzIuc3BlYywKCSAgaW5jbHVkZS9jb25maWcuaC5pbjoKCUFWTSBDb21wdXRlcnN5c3RlbWUgVmVydHJpZWJzIEdtYkgKCUltcGxlbWVudGVkIGEgQ0FQSTIwIHdyYXBwZXIgbGlicmFyeSBmb3IgQ0FQSTRMaW51eCBhY2Nlc3MuCgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDbGVhbmVkIHVwLCBhdXRvY29uZmVkLgoKCSogZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvc2VydmVyLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC9zeXNkZXBzLmMsCgkgIGRsbHMvbnRkbGwvdGhyZWFkLmMsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaDoKCUFkZGVkIHNlcnZlcl9hYm9ydF90aHJlYWQgdG8gcmVwbGFjZSBTWVNERVBTX0Fib3J0VGhyZWFkLgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBTSUdOQUxfQmxvY2sgYW5kIFNJR05BTF9SZXNldC4KCU1vdmVkIHNvbWUgaW50ZXJuYWwgbnRkbGwgZGVmaW5pdGlvbnMgdG8gbnRkbGxfbWlzYy5oLgoKMjAwMy0xMS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvc3lzZGVwcy5jLCBkbGxzL250ZGxsL3RocmVhZC5jLCBpbmNsdWRlL3dpbmUvcHRocmVhZC5oLAoJICBsaWJzL3dpbmUvcG9ydC5jOgoJQWRkZWQgd2luZV9wdGhyZWFkX2NyZWF0ZV90aHJlYWQgYW5kIHdpbmVfcHRocmVhZF9leGl0X3RocmVhZCB0byB0aGUKCXB0aHJlYWQgc3VwcG9ydCwgYW5kIHJlbW92ZWQgdGhlIGNvcnJlc3BvbmRpbmcgU1lTREVQUyBmdW5jdGlvbnMuCglNb3ZlZCBzdGFjayBhbGxvY2F0aW9uIGZvciBuZXcgdGhyZWFkcyB0byB3aW5lX3B0aHJlYWRfY3JlYXRlX3RocmVhZAoJdG8gYWxsb3cgbW9yZSBmbGV4aWJpbGl0eS4KCgkqIGRsbHMvbXNhY20vbXNhY20ucmMsIGRsbHMvbXNhY20vbXNhY21fUHQucmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIucmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzJfUHQucmMsCgkgIGRsbHMvc2VyaWFsdWkvUHQucmMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWlfcmMucmMsCgkgIGRsbHMvc2V0dXBhcGkvUHQucmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLCBwcm9ncmFtcy9ub3RlcGFkL0VuLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLCBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCUxvY2FsaXphdGlvbiB0byB0aGUgUG9ydHVndWVzZSBvZiBCcmF6aWwuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBvYmplY3RzL2RjLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglJbXBsZW1lbnRlZCBHZXREQ1BlbkNvbG9yIGFuZCBHZXREQ0JydXNoQ29sb3IuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCB3YXZlIGluIHN0b3AuCgoJKiBpbmNsdWRlL21zaS5oLCBpbmNsdWRlL21zaXF1ZXJ5Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIGFuZCBjb3JyZWN0IHRoZSBNU0lEQk9QRU4gZGVmaW5lcy4KCgkqIGRsbHMvbXNpL21zaS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNc2lPcGVuRGF0YWJhc2UncyBzelBlcnNpc3QgcGFyYW1ldGVyIG1heSBiZSBhIHN0cmluZyBvciBhIGJpdG1hc2suCgoJKiBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9nZGkzMi5zcGVjLAoJICBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLCBpbmNsdWRlL2dkaS5oLAoJICBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBTZXREQ1BlbkNvbG9yIGFuZCBTZXREQ0JydXNoQ29sb3IuCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpLnNwZWMsIGluY2x1ZGUvbXNpLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBNc2lWZXJpZnlQYWNrYWdlLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3NlYy5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgUnRsU2VsZlJlbGF0aXZlVG9BYnNvbHV0ZVNEIGFuZCBSdGxNYWtlU2VsZlJlbGF0aXZlU0QuCglGaXhlZCBzb21lIHJlbGF0ZWQgU0VfU0VMRl9SRUxBVElWRSBidWdzLgoKCSogZGxscy9vbGVkbGcvLmN2c2lnbm9yZSwgZGxscy9vbGVkbGcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlZGxnL2luc29iamRsZy5jLCBkbGxzL29sZWRsZy9vbGVkbGdfRW4ucmMsCgkgIGRsbHMvb2xlZGxnL29sZWRsZ19tYWluLmMsIGRsbHMvb2xlZGxnL3Jlc291cmNlLmgsCgkgIGRsbHMvb2xlZGxnL3JzcmMucmMsIGluY2x1ZGUvb2xlZGxnLmg6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIE9sZVVJSW5zZXJ0T2JqZWN0LgoKCSogZGxscy9rZXJuZWwvc3lzbGV2ZWwuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglVc2UgdGhlIHNpZ25hbCBzdGFjayBwb2ludGVyIHRvIGRldGVybWluZSB0aGUgY3VycmVudCB0aHJlYWQuCglDb252ZXJ0ZWQgdGhlIFNJR1VTUjIgaGFuZGxlciB0byB1c2Ugc2V0dXBfZXhjZXB0aW9uIChwcm9iYWJseSBzdGlsbAoJbm90IHdvcmtpbmcgcHJvcGVybHkpLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL25lX3NlZ21lbnQuYywKCSAgZGxscy9rZXJuZWwvc3lzdGVtLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICB3aW5kb3dzL3dpbnByb2MuYzoKCVNldCAlZnMgYW5kICVncyBpbiB0aGUgcmVnaXN0ZXIgY29udGV4dCB0byB0aGVpciBjdXJyZW50IHZhbHVlIHdoZW4KCWNhbGxpbmcgMTYtYml0IGNvZGUuCgoJKiBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wcGQuYywKCSAgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkbGcuaCwgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvd3BzX0RlLnJjLCBkbGxzL3dpbmVwcy93cHNfRW4ucmMsIGRsbHMvd2luZXBzL3dwc19Gci5yYywKCSAgZGxscy93aW5lcHMvd3BzX0tvLnJjLCBkbGxzL3dpbmVwcy93cHNfUHQucmMsIGRsbHMvd2luZXBzL3dwc19SdS5yYywKCSAgZGxscy93aW5lcHMvd3BzX1NpLnJjLCBkbGxzL3dpbmVwcy93cHNfU2sucmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJU3VwcG9ydCBmb3IgZHVwbGV4IHByaW50aW5nLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhhdCBhbGwgcHJpbnRlciBlbnRyaWVzIGhhdmUgYSB2YWxpZCBOYW1lIGFuZCBQb3J0IGtleS4KCUNvcGUgd2l0aCBjdXBzIHByaW50ZXIgZGVsZXRpb24uCgoJKiBwcm9ncmFtcy93aW5lZGJnL2luZm8uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJTGV0ICJpbmZvIHduZCIgcHJpbnQgdGhlIGNsaWVudCByZWN0YW5nbGUgaW4gc2NyZWVuIGNvb3JkaW5hdGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTElTVFZJRVdfR2V0U3ViSXRlbVJlY3Qgc2hvdWxkIHN1Y2NlZWQgaWYgc3ViaXRlbSA9PSAwIHdoYXRldmVyIG1vZGUKCXRoZSBsaXN0dmlldyBpcyBpbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDb3JyZWN0bHkgcGxhY2UgYSB0b29sYmFyIHdpdGggQ0NTX0JPVFRPTSBzdHlsZSBhdCB0aGUgYm90dG9tLCBub3QgdGhlCgl0b3AuCgoJKiBkbGxzL21zaS9tc2kuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IE1zaU9wZW5Qcm9kdWN0Vy4KCjIwMDMtMTEtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCURpc2FibGUgdGhlIGFzbSBpbmxpbmUgZnVuY3Rpb25zIHdoZW4gYnVpbGRpbmcgbnRkbGwgdG8gYXZvaWQgdHJvdWJsZQoJd2hlbiBjb21waWxpbmcgd2l0aG91dCBvcHRpbWl6YXRpb24uCglUaGUgUFBDIGlubGluZSBmdW5jdGlvbnMgYXJlIG5vIGxvbmdlciBuZWVkZWQgbm93IHRoYXQga2VybmVsIGlzCglwcm9wZXJseSBzZXBhcmF0ZWQuCgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zeXNkZXBzLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsCgkgIGRsbHMvbnRkbGwvdmlydHVhbC5jLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmUvc2VydmVyLmg6CglBbGxvY2F0ZSB0aGUgVEVCIGFuZCBzaWduYWwgc3RhY2sgc2VwYXJhdGVseSBmcm9tIHRoZSBtYWluIHN0YWNrLgoJRHluYW1pY2FsbHkgYWxsb2NhdGUgdGhlIGluaXRpYWwgVEVCIHRvbyBzbyB0aGF0IGl0IGlzIHByb3Blcmx5CglwYWdlLWFsaWduZWQuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglUaGUgQ0REQSBjYXNlIG9mIENEUk9NX1Jhd1JlYWQoKSBubyBsb25nZXIgd29ya3Mgb24gRnJlZUJTRCAtQ1VSUkVOVCwKCXJlbW92ZSBpdC4gIEFsc28sIGNvbWJpbmUgdGhlIEZyZWVCU0QgYW5kIE5ldEJTRCBOWUkgbm90ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUHJvcFNoZWV0UGFnZVByb2MgY2FsbGJhY2sgc2hvdWxkIGFsd2F5cyBoYXZlIGh3bmQgPSAwLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgZHJhZyBhbmQgZHJvcCBzdXBwb3J0IHRvIGxpc3R2aWV3LgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhIGZpeG1lLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglXTV9XSU5ET1dQT1NDSEFOR0lORyBzaG91bGQgcmVjZWl2ZSBvcmlnaW5hbCwgbm90IGZpeGVkIHZhbHVlcy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIHJlcGFpbnQgc2Nyb2xsIGJhciBpZiByZXF1ZXN0ZWQuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJvdGVjdCBJTElzUGFyZW50IGZyb20gTlVMTCBwaWRscy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYnVnIGluIGNhcHR1cmUgc3RvcC4gIE9ubHkgY3VycmVudCBoZWFkZXIgc2hvdWxkIGJlIHJldHVybmVkIHRvCglhcHAuCglNYWtlIHdhdmUgZnJhZ21lbnQgc2l6ZSBhZGp1c3RhYmxlIHRvIGd1YXJhbnRlZSBiZXR0ZXIgdGhhbiAxMCBtcwoJbGF0ZW5jeS4gIE1ha2VzIGEgZGlmZmVyZW5jZSBmb3IgOCBrSHogdm9pY2UgYXBwcy4KCgkqIE1ha2VmaWxlLmluOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglBdm9pZCBhcmd1bWVudCBsaXN0IGxpbWl0IGluIGV0YWdzIGdlbmVyYXRpb24uCgoJKiBkbGxzL2QzZDgvc3RhdGVibG9jay5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVBhc3MgdGhyb3VnaCBmbG9hdHMgY29ycmVjdGx5IHRvIHRoZSByZW5kZXIgc3RhdGVzIGF0Cglpbml0aWFsaXphdGlvbi4gRml4ZXMgcG9pbnQgcHJvYmxlbXMuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IENhcmxvcyBMb3phbm8gPGNsb3phbm9AYW5kYWdvLmNvbT4KCUNoZWNrIHRoYXQgd2UgZG9uJ3Qgd3JpdGUgb3V0IG9mIHRoZSBkZWZpbmVkIHJhbmdlIG9mIHBhbGV0dGVzLgoKMjAwMy0xMS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglBbGxvY2F0ZSBhIG1lbW9yeSB2aWV3IGZvciBidWlsdGluIGRsbHMgc28gdGhhdCBWaXJ0dWFsUXVlcnkgcmV0dXJucwoJc29tZXRoaW5nIHNlbnNpYmxlLgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmMsIGRsbHMveDExZHJ2L2RnYTIuYzoKCUZpeGVkIHR5cGUgYW5kIHByb3RlY3Rpb24gdmFsdWVzIHJldHVybmVkIGJ5IE50UXVlcnlWaXJ0dWFsTWVtb3J5IHRvCgliZSBjbG9zZXIgdG8gd2hhdCBXaW5kb3dzIGRvZXMuCglBbGxvdyB1c2luZyBNRU1fU1lTVEVNIHdpdGhvdXQgTUVNX1JFU0VSVkUgdG8gYXZvaWQgNjRrIGFsaWdubWVudC4KCVVzZSBwcmVhZCBpbnN0ZWFkIG9mIGxzZWVrK3JlYWQgd2hlbiBmYWtpbmcgbW1hcC4KCgkqIGxpYnMvd2luZS9sb2FkZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJUHV0IGJldHRlciB2YWx1ZXMgZm9yIGNvZGUgYW5kIGRhdGEgc2l6ZXMgaW4gdGhlIE5UIGhlYWRlciBvZiBidWlsdGluCglkbGxzLgoKCSogY29udHJvbHMvZWRpdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV01fTEJVVFRPTkRPV04gY2FsbHMgU2V0Rm9jdXMgdW5kZXIgV2luZG93cy4gIFJlbW92ZSB0aGUgU2V0Rm9jdXMgaW4KCVdNX01PVVNFQUNUSVZBVEUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZ2V0IGNvbmZ1c2VkIGlmIFBTTl9TRVRBQ1RJVkUgcmV0dXJucyBhIHBvc2l0aXZlIG51bWJlciB0aGF0Cglpc24ndCBhIHJlc291cmNlIGlkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0aGUgbGlzdHZpZXcgc2VuZCBpdHMgbm90aWZpY2F0aW9ucyB0byB0aGUgcGFyZW50IHdpbmRvdyBwYXNzZWQKCXRvIGl0IGluIENSRUFURVNUUlVDVC4gIEJhc2VkIG9uIGEgdHJlZXZpZXcgcGF0Y2ggYnkgSWdvciBHcmFoZWsuCgoJKiBkbGxzL3dpbmVwcy9iaXRtYXAuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIFN0cmV0Y2hESUJpdHMuCgoJKiBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgUFNEUlZfUGFpbnRSZ24gKGFsc28gZ2V0cyB1cyBGaWxsUmduLCBGcmFtZVJnbiBhbmQgRmlsbFBhdGgKCWZvciBmcmVlKS4KCgkqIHdpbmRvd3Mvc3B5LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgY29tbW9uIGRpYWxvZyBub3RpZmljYXRpb24gbWVzc2FnZXMgYW5kIFdNX1NJWkUuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIFFXRVJUWiB2aXJ0dWFsIGtleXMgbWFwcGluZywgZml4IG1hbnkga2V5Ym9hcmQgbGF5b3V0cwoJdG8gY29uZm9ybSB0byB0aGUgWEZyZWU4NiBvbmVzLCBhZGQgc3VwcG9ydCBmb3IgUnVzc2lhbiBjcDEyNTEgYW5kCglwaG9uZXRpYyBrZXlib2FyZCBsYXlvdXRzLCBJc3JhZWxpYW4gcGhvbmV0aWMgYW5kIFNhaGFyb24ga2V5Ym9hcmQKCWxheW91dHMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJSW1wbGVtZW50IGZhdDMyIGV4dGVuZGVkIGZyZWUgc3BhY2UgZnVuY3Rpb24uCglNYWtlIGZhdDMyIGNhbGxzIHJlc2V0IGNhcnJ5IGZsYWcgZXhwbGljaXRseS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBjb2VyY2UgYXJndW1lbnRzIG9mIElUeXBlTGliOjpJbnZva2UgaW4tcGxhY2UsIG9yIHdlIGdldAoJY29ycnVwdGVkIHZhcmlhbnRzLgoJSGFuZGxlIFZfQVJSQVkgfCBzb21ldGhpbmcgLT4gVlRfU0FGRUFSUkFZLCBhcyB0aGlzIGlzIGEgTk9QLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvc3luYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YnMgZm9yIGpvYiBjb250cm9sLgoKMjAwMy0xMC0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsIGRsbHMvdXNlci9mb2N1cy5jLCB3aW5kb3dzL3BhaW50aW5nLmMsCgkgIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCVVzZSBhIHRpbWVvdXQgd2hlbiBzZW5kaW5nIGJyb2FkY2FzdCBtZXNzYWdlcy4KCgkqIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZjcnQvZmlsZS5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hAY29kZXdlYXZlcnMuY29tPgoJRHVwbGljYXRlIHN0ZGluL3N0ZG91dCBoYW5kbGVzIHRvIGF2b2lkIGNsb3NpbmcgdGhlbSB3aGVuIGxpYnJhcnkgaXMKCXVubG9hZGVkLgoKCSogZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTd2l0Y2hlZCBhICsgdG8gYSAtIHNvIHRoYXQgaXQgbWFrZXMgc2Vuc2Ugd2hlbiBtYXJraW5nIHRoZSBsYXN0IG5vZGUKCWluIHRoZSBBZGFwdGVycyBJbmZvIGxpbmtlZCBsaXN0LgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1ha2Ugc3VwcG9ydCBmb3IgQ29weVJlY3RzIHRvIGEgc21hbGwgYXJlYSBvZiB0aGUgYmFjayBidWZmZXIsIGFuZAoJY29ycmVjdCB0aGUgZ2VuZXJhbCBtZXRob2Qgb2YgdXBkYXRpbmcgdGhlIGJhY2sgYnVmZmVyLgoKCSogZGxscy9rZXJuZWwvbmxzL2JyZi5ubHMsIGRsbHMva2VybmVsL25scy9jYXQubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvY29yLm5scywgZGxscy9rZXJuZWwvbmxzL2Rhbi5ubHMsCgkgIGRsbHMva2VybmVsL25scy9kZWEubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGVjLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2RlbC5ubHMsIGRsbHMva2VybmVsL25scy9kZXMubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZGV1Lm5scywgZGxscy9rZXJuZWwvbmxzL2VuZy5ubHMsCgkgIGRsbHMva2VybmVsL25scy9lbmkubmxzLCBkbGxzL2tlcm5lbC9ubHMvZXNuLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2VzcC5ubHMsIGRsbHMva2VybmVsL25scy9ldGkubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZXVxLm5scywgZGxscy9rZXJuZWwvbmxzL2Zpbi5ubHMsCgkgIGRsbHMva2VybmVsL25scy9mb3MubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJhLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2ZyYi5ubHMsIGRsbHMva2VybmVsL25scy9mcmwubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZnJtLm5scywgZGxscy9rZXJuZWwvbmxzL2Zycy5ubHMsCgkgIGRsbHMva2VybmVsL25scy9nYWUubmxzLCBkbGxzL2tlcm5lbC9ubHMvZ2RoLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2dkdi5ubHMsIGRsbHMva2VybmVsL25scy9nbGMubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvaXNsLm5scywgZGxscy9rZXJuZWwvbmxzL2l0YS5ubHMsCgkgIGRsbHMva2VybmVsL25scy9pdHMubmxzLCBkbGxzL2tlcm5lbC9ubHMvbmxiLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL25sZC5ubHMsIGRsbHMva2VybmVsL25scy9ubHMubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvbm9uLm5scywgZGxscy9rZXJuZWwvbmxzL25vci5ubHMsCgkgIGRsbHMva2VybmVsL25scy9wdGcubmxzLCBkbGxzL2tlcm5lbC9ubHMvc3ZlLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL3N2Zi5ubHMsIGRsbHMva2VybmVsL25scy91emwubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvd2FsLm5sczoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIDI4NTkxIGJ5IDI4NjA1IChldXJvKSBmb3IgYXBwcm9wcmlhdGUgbG9jYWxlcy4KCgkqIGZpbGVzL2ZpbGUuYzogTWFrZSBzdXJlIEdldFRlbXBGaWxlTmFtZSBuZXZlciByZXR1cm5zIDAgb24gc3VjY2Vzcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NmZ21ncjMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvY2ZnbWdyMzIvTWFrZWZpbGUuaW4sIGRsbHMvY2ZnbWdyMzIvY2ZnbWdyMzIuc3BlYywKCSAgZGxscy9jZmdtZ3IzMi9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglNb3N0bHkgc3R1YiBpbXBsZW1lbmF0aW9uIGZvciBjZmdtZ3IzMi4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNsZWFyIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgd3JpdGUgbWFza3MuCgoJKiBkbGxzL2tlcm5lbC90aHJlYWQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3RocmVhZC5jLAoJICBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJSW1wbGVtZW50ZWQgUnRsQ3JlYXRlVXNlclRocmVhZCwgYW5kIHVzZSBpdCB0byBtb3ZlIHRocmVhZCBjcmVhdGlvbiB0bwoJbnRkbGwuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDb2xvcldyaXRlRW5hYmxlIHNob3VsZCBub3QgaW1wYWN0IGNsZWFyaW5nIHRoZSBzY3JlZW4uCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gVXNlIHRoZSBzdHlsZSByZXR1cm5lZCBpbiBjdXN0b20gZHJhdyBzdHJ1Y3R1cmUgdG8gZHJhdyB0aGUgYnV0dG9uLAoJICBhcyBhcHBzIG1heSBtb2RpZnkgdGhlIHN0eWxlIHRoaXMgd2F5LgoJLSBEaXNhYmxlZCBidXR0b25zIGNhbiBiZWNvbWUgaG90LgoJLSBSZXRyaWV2ZSBpbWFnZSBsaXN0IGZvciBkcmF3aW5nIGFmdGVyIGdldHRpbmcgaW1hZ2UgbGlzdCBJRCAoaW4KCSAgSV9JTUFHRUNBTExCQUNLIGNhc2UpLgoKCSogZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsCgkgIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0dHJhY2suYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBiZXR0ZXIgdHJhY2VzCgktIHNvbWUgSVBlcnNpc3RTdHJlYW06OkdldENsYXNzSUQgaW1wbGVtZW50YXRpb24KCS0gYWRkIHRoZSAic2VhcmNoIGJ5IG5hbWUiIHN1cHBvcnQgZm9yIElEaXJlY3RNdXNpY0xvYWRlcjg6OkdldE9iamVjdAoJICAoYW5kIGEgaGFjayBmb3IgdW5kZXJzdGFuZGluZyBjb250YWluZXJzIHVzZSkKCgkqIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9jb21jdGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi90ZXN0cy90YWIuYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJLSBGaXggdGFiIHNpemUgZm9yIFRDU19PV05FUkRSQVdGSVhFRCBzdHlsZS4KCS0gQ29ycmVjdCBzaXplIHJlY2FsY3VsYXRpb24gYWZ0ZXIgc2V0dGluZyB0YWIgd2lkdGguCgktIEZpeCBidXR0b24gc2l6ZXMgdG8gbWF0Y2ggbmF0aXZlLgoJLSBDZW50ZXIgYm90aCB2ZXJ0aWNhbGx5IGFuZCBob3Jpem9udGFsbHkgdGFiIHRleHQgJiBpY29uLgoJLSBVc2UgY29ycmVjdCBsZWZ0L2NlbnRlciBhbGlnbm1lbnQgZmxhZ3MuCgoyMDAzLTEwLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ29weVJlY3RzIChwZXIgcmVjdCkgY29waWVkIG9uZSB0b28gbWFueSBsaW5lcywgdHJhc2hpbmcgdGhlIGhlYXAuCglBbHNvIHRpZGllcyB1cCBzY2lzc29yIHRlc3QgZnJvbSBwcmV2aW91cyBwYXRjaC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9tYWlsc2xvdC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSB0ZXN0IGZvciBtYWlsc2xvdHMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglGaXhlZCByYWNlIGluICVncyBzZWxlY3RvciByZXN0b3JpbmcgZHVyaW5nIHZtODYgbW9kZSByZXR1cm4uCglNaW5vciBjbGVhbnVwcy4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglDaGFuZ2Ugc29tZSB2YXJpYWJsZXMgZnJvbSBpbnQgdG8gdW5zaWduZWQgdG8gYXZvaWQgc2lnbmVkbmVzcwoJbWlzbWF0Y2hlcy4KCgkqIHRvb2xzL3dpbmVnY2MvdXRpbHMuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUFkZCBwcm9wZXIgY2FzdHMgdG8gYXZvaWQgc2lnbmVkIHZzLiB1bnNpZ25lZCBtaXNtYXRjaGVzIGluCglzdHJtYWtlKCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNhY2hlIHRoZSB3YXZlIHZvbHVtZSBzbyBpdCBjYW4gYmUgcmV0dXJuZWQgcmF0aGVyIHRoYW4gdGhlIE9TUwoJZGVyaXZlZCB2YWx1ZSB3aGVuIHBvc3NpYmxlLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gbW9yZSBzYW5lIG1haWxzbG90IGVycm9yIHZhbHVlcy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbm1tLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQ2xlYW4gdXAgKkdldERldkNhcHMgdG8gY2hlY2sgZm9yIHZhbGlkIHBvaW50ZXIgYW5kIG9ubHkgY29weSBwcm9wZXIKCWFtb3VudCBvZiBkYXRhLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUluY2x1ZGUgbnRkbGxfbWlzYy5oIHRvIGF2b2lkIHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gR2V0UHJvY2Vzc0hlYXAKCXdoZW4gY29tcGlsZWQgd2l0aG91dCBvcHRpbWl6YXRpb24uCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBpbmNvcnJlY3RseSBzaXplZCBidWZmZXIuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDdWxsaW5nIHRvIGRpZmZlcmVudCB2aWV3cG9ydHMgZmFpbGVkIGFzIGNsZWFyaW5nIHRoZSB3aG9sZSB2aWV3cG9ydAoJY2xlYXJlZCB0aGUgc2NyZWVuLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOiBCZXR0ZXIgZGVmYXVsdHMgZm9yIGhlYXAgYW5kIHN0YWNrIHNpemVzLgoKCSogZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jOgoJSGFubnUgVmFsdG9uZW4gPEhhbm51LlZhbHRvbmVuQGh1dC5maT4KCUpveXN0aWNrQUltcGxfVW5hY3F1aXJlIHNob3VsZCByZXR1cm4gRElfTk9FRkZFQ1QgaWYgdGhlIGRldmljZSBpcyBub3QKCWluIGFuIGFjcXVpcmVkIHN0YXRlLgoKCSogZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLCBkbGxzL21zaS9tc2lxdWVyeS5jLCBpbmNsdWRlL21zaS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU29tZSBzdHViIGltcGxlbWVudGF0aW9ucy4KCgkqIGRsbHMvbXNpL3Rva2VuaXplLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNxbCB0b2tlbnMgYXJlIGNhc2UgaW5zZW5zaXRpdmUgaW4gbXNpLmRsbC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3N0YXRlYmxvY2suYywgZGxscy9kM2Q4L3N1cmZhY2UuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDb3JyZWN0IHdyaXRpbmcgdG8gYmFjayBidWZmZXIgaW4gbm9uLW9ydGhvIG1vZGUsIGFuZCBlbnN1cmUgdGhlIGxpbmUKCXN0aXBwbGUgaXMgcGFzc2VkIGNvcnJlY3RseSB0byBlbmFibGUgcHJvcGVyIHdpcmVmcmFtZSBzdXBwb3J0LgoKMjAwMy0xMC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2luc3RyLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglSZXN0b3JlZCBlbXVsYXRpb24gb2YgcHJvdGVjdGVkIGluc3RydWN0aW9ucyBpbiAzMi1iaXQgY29kZSB3aGVuCglydW5uaW5nIHdpdGggYSBXaW45eCB2ZXJzaW9uLgoKCSogZGxscy9tc2kvdGFibGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJVHJlYXQgbWlzc2luZyBNU0kgdGFibGVzIGFzIGVtcHR5LgoKCSogaW5jbHVkZS93aW5lL2xpYnJhcnkuaDoKCUluY3JlYXNlIFdJTkVfTERUX0ZJUlNUX0VOVFJZIHRvIGxlYXZlIHJvb20gZm9yIGdsaWJjIHRocmVhZAoJc2VsZWN0b3JzLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsCgkgIGluY2x1ZGUvdGhyZWFkLmg6CglSZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgU0lHTkFMX1VuYmxvY2soKSBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvdXNlci90ZXN0cy9pbnB1dC5jLCBpbmNsdWRlL3Rtc2NoZW1hLmgsCgkgIGxpYnMvdW5pY29kZS9jcG1hcC5wbCwgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywgdG9vbHMvd2luYXBpL3dpbmFwaV9jaGVja19vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXZWVrbHkgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL21zaS90YWJsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBNU0kgYnVmZmVyIG92ZXJmbG93LgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9leGNlcHRpb24uYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmg6CglJbXBsZW1lbnRlZCBBZGQvUmVtb3ZlVmVjdG9yZWRFeGNlcHRpb25IYW5kbGVyLgoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIC5kYmcuYyBmaWxlcy4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byB1c2UgdGhlIFdpbmUKCXRyYWNpbmcgbWFjcm9zIGluIFdpbmVsaWIgYXBwbGljYXRpb25zLgoJVGhlIHdpbmUvbGliLCB3aW5lL29sZSwgd2luZS91bmljb2RlIGRpcmVjdG9yaWVzIGFyZSBnb25lLiBTaW1wbGlmeQoJdGhlIHdpbmVfdW5pY29kZSBhbmQgd2luZV91dWlkIGRldGVjdGlvbi4KCUZpeCBnZW5lcmF0aW9uIG9mIHRoZSBjbGVhbiB0YXJnZXQgKGluIHNvbWUgY29ybmVyIGNhc2VzIGl0IGNvdWxkCglnZW5lcmF0ZSBhICQoUk0pIGNvbW1hbmQgd2l0aCBubyBwYXJhbWV0ZXIpLgoJTW92ZSB0aGUgZGlzdGNsZWFuIHRhcmdldCB0byB0aGUgdG9wLWxldmVsIE1ha2VmaWxlIGFuZCBtYWtlIGl0IG1vcmUKCXRob3JvdWdoLgoJVXBkYXRlIGEgZmV3IGF1dG9jb25mIGNvbnN0cnVjdHMuCglSZW1vdGUgY29tbWVudGVkIG91dCBjb2RlIGluIHdyYXBwZXIuYy4gSWYgd2UgbmVlZCB0aGF0IGNvZGUgd2UgY2FuCglhbHdheXMgZ2V0IGl0IGZyb20gQ1ZTLgoKCSogZGxscy9tc3ZjcnQvZGlyLmMsIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oOgoJUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJRml4ZWQgX3dmdWxscGF0aCBwcm90b3R5cGUuCgoJKiBkbGxzL3gxMWRydi93aW5lY2xpcHNydi5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJTW92ZSBldmVudF9uYW1lc1tdIGludG8gRVZFTlRfUHJvY2Vzc0V2ZW50KCkuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGb3JtYXRNZXNzYWdlVzogQWxsb2NhdGUgYW5vdWdoIHNwYWNlLgoKCSogZGxscy9tc2kvdGFibGUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IHN0cmluZyB2YWx1ZSBsb29rdXBzIGluIE1TSS4KCgkqIGRsbHMvZG1iYW5kL2JhbmQuYywgZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmg6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCVNvbWUgZml4ZXMgaW4gZG1iYW5kIGxvYWRpbmcuCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6IEhhbm51IFZhbHRvbmVuIDxIYW5udS5WYWx0b25lbkBodXQuZmk+CglTeXNNb3VzZUFJbXBsX1VuYWNxdWlyZSBzaG91bGQgcmV0dXJuIERJX05PRUZGRUNUIGlmIHRoZSBkZXZpY2UgaXMgbm90CglpbiBhbiBhY3F1aXJlZCBzdGF0ZS4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYzoKCUZpeGVkIHR5cG8gdGhhdCBicm9rZSBoYW5kbGluZyBvZiAuY29tIGFuZCAuYmF0IGZpbGVzLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCVN3aXRjaCBiYWNrIHRvIHRoZSBtYWluIHByb2Nlc3Mgc3RhY2sgYmVmb3JlIGNhbGxpbmcgZXhjZXB0aW9uCgloYW5kbGVycy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglSZXBhaXJlZCByZWxheSBkZWJ1Z2dpbmcgZm9yIGtlcm5lbCBhbmQgbnRkbGwgKHNwb3R0ZWQgYnkgVXdlCglCb25uZXMpLgoKCSogZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL2lucHV0LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglUZXN0IFdNX0tFWSogYW5kIFdNX1NZU0tFWSogbWVzc2FnZXMgZ2VuZXJhdGVkIGJ5IHZhcmlvdXMga2V5Ym9hcmQKCWV2ZW50cy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS90ZXN0cy93YXZlLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgZ2V0dGluZyB0aGUgd2F2ZSBkZXZpY2UgbmFtZS4KCgkqIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmM6IFJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJRml4IGRtbG9hZGVyJ3MgYmVoYXZpb3IgdG8gYmUgbW9yZSBNUyBjb21wbGlhbnQuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBmcmVldHlwZSAyLjAgZGVmaW5lcyBmb3IgZm9udCBlbmNvZGluZ3MgaW5zdGVhZCBvZiBtaXN1c2Ugb2YKCU1TX01BS0VfVEFHLgoKCSogZGxscy9udGRsbC9wYXRoLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglnZXRfZnVsbF9wYXRoX2hlbHBlcjogSGFuZGxlIHRoZSBjYXNlIFxcLlxcIGFzIGludGVuZGVkOyBmaXggbGVuZ3RoCglhcmd1bWVudHMgZm9yIG1lbW1vdmUuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9zY2FuZi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQW5vdGhlciBkaWZmZXJlbmNlIGluIHRoZSBwcmludGYgZmFtaWx5LgoKCSogd2luZG93cy9pbnB1dC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDb3JyZWN0IHRoZSBsb2dpYyB0aGF0IGRlY2lkZXMgd2hldGhlciBhIFdNX1NZU0tFWVVQL0RPV04gb3IgYQoJV01fS0VZVVAvRE9XTiBtZXNzYWdlIGlzIHRvIGJlIHNlbnQuCgoyMDAzLTEwLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZW1ha2VyOgoJbGlibnRkbGwuZGxsLnNvIG5vIGxvbmdlciBleGlzdHMsIGNoZWNrIGZvciBsaWJudGRsbC5kZWYgaW5zdGVhZC4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmM6CglBZGRlZCBwcmludGluZyBvZiB0aGUgdGFyZ2V0IG9mIGZvcndhcmRlZCBleHBvcnRzLgoKCSogc2VydmVyL3RocmVhZC5jOgoJTWFrZSBpbml0X3RocmVhZCByZXF1ZXN0IGRlYWwgYmV0dGVyIHdpdGggZmQgYWxsb2NhdGlvbiBlcnJvcnMuCgoJKiBkbGxzL2RtaW1lL3BlcmZvcm1hbmNlLmMsIGRsbHMvZG1sb2FkZXIvY29udGFpbmVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmMsCgkgIGluY2x1ZGUvZHNvdW5kLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gU29tZSBmaXhlcyBvbiBEaXJlY3RTb3VuZCBpbml0IChuZWVkIFNldENvb3BlcmF0aXZlTGV2ZWwgYXMgc2VlbiBpbgoJICBtc2RuKSBvbiBJRGlyZWN0TXVzaWNQZXJmb3JtYW5jZTg6OkluaXRBdWRpby4KCS0gU29tZSBmaXhlcyBpbiBJRGlyZWN0TXVzaWNQZXJmb3JtYW5jZThJbXBsQ3JlYXRlU3RhbmRhcmRBdWRpb1BhdGgKCSAgKG5vdCBwZXJmZWN0IHlldCwgbmVlZCB0byB1bmRlcnN0YW5kL2ZpeCB0aGUgY2hhbm5lbCBpbml0L3VzZSkuCgktIEZpeCB0eXBvIG9uIENyZWF0ZURpcmVjdE11c2ljQ29udGFpbmVyLgoJLSBBZGQgbWlzc2luZyBkZWZpbmUgaW4gZHNvdW5kLmguCgktIEJldHRlciB0cmFjZXMgb24gSURpcmVjdE11c2ljTG9hZGVyODo6U2V0U2VhcmNoRGlyZWN0b3J5LgoKCSogZGxscy9zaGVsbDMyL2NvbnRyb2wuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNvbnRyb2xfRG9MYXVuY2g6IG1lbW1vdmUgbmVlZHMgYnl0ZXMgYXMgbGVuZ3RoIGFyZ3VtZW50LgoKCSogZGxscy93aW5lZG9zL2ludDMzLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUNsZWFuIHVwIG1vdXNlIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlZCBkcml2ZSBwYXJhbWV0ZXIgYmxvY2sgKERQQikgcm91dGluZXMgdG8gd2luZWRvcy4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSBmZXcgc3R1YnMuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUZpeCBQb3dlclBDIGFzc2VtYmxlciBzeW50YXggbWlzdGFrZXMuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfTmwucmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGxfTmwucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9tc2FjbS9tc2FjbS5yYywgZGxscy9tc2FjbS9tc2FjbV9ObC5yYywgZGxscy9zZXJpYWx1aS9ObC5yYywKCSAgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYywgZGxscy9zZXR1cGFwaS9ObC5yYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYywgZGxscy93aW5lcHMvcnNyYy5yYywKCSAgZGxscy93aW5lcHMvd3BzX05sLnJjLCBkbGxzL3dpbmluZXQvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfTmwucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZGVkIER1dGNoIHRyYW5zbGF0aW9ucy4KCgkqIHByb2dyYW1zL3N0YXJ0L05sLnJjLCBwcm9ncmFtcy9zdGFydC9yc3JjLnJjLCBwcm9ncmFtcy92aWV3L05sLnJjLAoJICBwcm9ncmFtcy92aWV3L3ZpZXdyYy5yYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfTmwucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL05sLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9ObC5yYywgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9ObC5yYywgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CgktIER1dGNoIHRyYW5zbGF0aW9ucyBvZiBXaW5lIHByb2dyYW1zLgoJLSBDb3JyZWN0IGdyYW1tYXIgZXJyb3IgaW4gd2luZWZpbGUuCgoJKiBwcm9ncmFtcy93Y21kL0VuLnJjLCBwcm9ncmFtcy93Y21kL05sLnJjLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYzoKCUhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJLSBBZGRlZCBEdXRjaCB0cmFuc2xhdGlvbi4KCS0gTWFrZSBhbiBleGFtcGxlJ3MgZGVzY3JpcHRpb24gY29uc2lzdGVudCB3aXRoIHRoZSBleGFtcGxlLgoKCSogZGxscy9rZXJuZWwvbmxzL2hlYi5ubHM6IFNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaEBzaGVtZXNoLmJpej4KCVVwZGF0ZWQgSGVicmV3IHJlc291cmNlcy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeCBTTVBURSB0aW1lLgoJRml4IHByaW1hcnkgYnVmZmVyIHZvbHVtZSBzZXR0aW5nLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJT25seSBjb3B5IGFtb3VudCByZXF1ZXN0ZWQgdXAgdG8gc2l6ZSBvZiBzdHJ1Y3R1cmUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNsZWFyIGEgbmV3IGhhcmR3YXJlIGJ1ZmZlciB0byBwcm9wZXIgc2lsZW5jZSB2YWx1ZXMgYmFzZWQgb24gZm9ybWF0LgoJQWxsb3dzIGR4ZGlhZyB0byBwbGF5IDggYml0IHNvdW5kcyBpbiBoYXJkd2FyZSBwcmltYXJ5IGJ1ZmZlciBub3cuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJSW5jbHVkZSA8YXJwYS9uYW1lc2VyLmg+IGJlZm9yZSA8cmVzb2x2Lmg+LgoKMjAwMy0xMC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvdXJsbW9uL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvd2luaW5ldC90ZXN0cy9nZW5lcmF0ZWQuYzoKCVVwZGF0ZWQgc29tZSBvZiB0aGUgZ2VuZXJhdGVkIHRlc3RzLgoKCSogdG9vbHMvd2luYXBpL3Rlc3RzLmRhdCwgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJU3BlY2lmeSBpbmNsdWRlIHF1b3RlcyBpbiB0aGUgdGVzdHMuZGF0IGZpbGUuCgoJKiBkbGxzL2tlcm5lbC9maWJlci5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLAoJICBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmg6CglVc2Ugc2lnc2V0am1wIGluc3RlYWQgb2Ygc2V0am1wIGluIFdpbmUgaW50ZXJuYWwgZXhjZXB0aW9uIGhhbmRsZXJzIHRvCgltYWtlIHN1cmUgdGhlIHNpZ25hbCBtYXNrIGlzIHJlc3RvcmVkIHByb3Blcmx5LgoKCSogc2VydmVyL3NpZ25hbC5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGxpbnV4dGhyZWFkcyBjYW5jZWwgc2lnbmFsIGFzIGFuIGFsdGVybmF0aXZlIHRvCglTSUdDSExELgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGEgdGVzdCBjYXNlIGZvciBzcHJpbnRmLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLAoJICBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCS0gUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBzaDMyX3BvbGljeV90YWJsZSBpbiBTSEluaXRSZXN0cmljdGVkLAoJICBiZWNhdXNlIGl0J3MgYWxyZWFkeSBzdGF0aWNhbGx5IGluaXRpYWxpemVkLgoJLSBSZW1vdmVkIGNhbGxpbmcgb2YgU0hJbml0UmVzdHJpY3RlZChOVUxMLCBOVUxMKSBmcm9tIERsbE1haW4gYmVjYXVzZQoJICBpdCBkb2VzIG5vdGhpbmcgaW4gdGhpcyBjYXNlIG5vdy4KCS0gQWRkZWQgc3VwcG9ydCBmb3IgZmxhZ3MgRldGX0RFU0tUT1AsIEZXRl9OT0NMSUVOVEVER0UsCgkgIEZXRl9UUkFOU1BBUkVOVCBpbiBTaGVsbFZpZXcuCgktIEZpeGVkIHNtYWxsIGJ1ZyBpbiBzZXR0aW5nIFN5c1RyYXkgd2luZG93IGNsYXNzIGhickJhY2tncm91bmQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNb3JlIHRlc3RzIGZvciB3aW5kb3cgY3JlYXRpb24gcGFyYW1ldGVycy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIE1pbk1heC5wdFJlc2VydmVkLCB1c2UgYmV0dGVyIGRlZmF1bHRzIGZvciBjaGlsZCB3aW5kb3dzLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglXaW5kb3dzIGFsd2F5cyBzZXRzIGNidGMuaHduZEluc2VydEFmdGVyIHRvIEhXTkRfVE9QLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJTWFrZSBNU1ZDUlRfX3NvcGVuKCkgY29tcGxhaW4gbG91ZGVyIGFib3V0IHVua25vd24gb2ZsYWdzLCBidXQgbm90CglhYm91dCBfT19XUk9OTFkuCglNU1ZDUlRfZm9wZW4oKSBzaG91bGQgcGFzcyB0aGlyZCBhcmd1bWVudCB0byBfb3BlbigpIGJlY2F1c2UgaXQgbWF5CglzZXQgX09fQ1JFQVQuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2FtdmlkZW8uaCwgaW5jbHVkZS9hbXZpZGVvLmlkbCwKCSAgaW5jbHVkZS9hdmlyaWZmLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkZWQgYW12aWRlby57aWRsLGh9IGFuZCBhdmlyaWZmLmguCgoJKiBkbGxzL3dpbmVwcy9yc3JjLnJjLCBkbGxzL3dpbmVwcy93cHNfSXQucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIEl0YWxpYW4gcmVzb3VyY2VzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRG9uJ3Qgc3RvcmUgYmFuZCB0ZXh0IGlmICIiIGlzIHBhc3NlZCBpbnRvIFNldEJhbmRJbmZvLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglNaW5vciBHVUkgcmVsYXlvdXQuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglDYWxsIHRoZSBhcHBsaWNhdGlvbiBlbnRyeSBwb2ludCBmcm9tIGtlcm5lbDMyLCBzb21lIGFwcHMgZGVwZW5kIG9uCgl0aGF0LgoKCSogZGxscy9zZXR1cGFwaS9wYXJzZXIuYywgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLAoJICBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCUFub3RoZXIgcG9ydGlvbiBvZiBIZWFwUmVBbGxvYyBmaXhlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQ2hhbmdlIG1jdHIgUG93ZXJQQyBhc20gaW5zdHJ1Y3Rpb24gdG8gbXRjdHIuIEFkZCBTdXBwb3J0IGZvciB0aGUKCS50ZXh0IHNlY3Rpb24gYW5kIHRoZSAuc3BhY2Ugc2VjdGlvbiBvZiBkYXJ3aW4ncyBsZC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgdGVzdHMgZm9yIEZvbGRTdHJpbmdBL1cuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIEZvbGRTdHJpbmdBICh1c2luZyBXIHZlcnNpb24pLgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvZmlsZS5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJQWRkZWQgdGVzdCBmb3IgdG1wbmFtKCkuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmg6CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJTVNWQ1JUX3RtcG5hbSgpOiBjb21wbGV0ZSByZXdyaXRlLiAgVXNlIHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBuYXRpdmUKCXZlcnNpb24uICBVc2UgdGhlIGNhbGxlci1zdXBwbGllZCBidWZmZXIgaWYgcG9zc2libGUuCgoyMDAzLTEwLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC92aXJ0dWFsLmMsCgkgIGluY2x1ZGUvdGhyZWFkLmg6CglTaW1wbGlmaWVkIHNpZ25hbCBzdGFjayBhbGxvY2F0aW9uIGEgYml0LCBhbmQgYXZvaWQgYWxsb2NhdGluZyBpdCBvbgoJbm9uLWkzODYgcGxhdGZvcm1zLgoKCSogZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jOiBBIHNpZ25hbCBzdGFjayBpcyBub3QgbmVlZGVkIG9uIFBvd2VyUEMuCgoJKiB0b29scy93bWMvbGFuZy5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGRlZCBzdXBwb3J0IGZvciBuZXV0cmFsIGxhbmd1YWdlLgoKCSogaW5jbHVkZS9zZXR1cGFwaS5oOiBGaXhlZCBuYW1pbmcgb2YgdGhlIEEvVyB0eXBlcy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRml4IGVycm9yIHBhdGhzIGluIGFkdmFwaTMyLkNyeXB0QWNxdWlyZUNvbnRleHRBLgoJLSBDYWxsIENSWVBUX1ZlcmlmeUltYWdlIHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlLCBldmVuIHRob3VnaCBpdAoJICBjdXJyZW50bHkgZG9lcyBub3RoaW5nLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsCgkgIGRsbHMvd2lubW0vd2lubW0uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXggTU1EUlZfUGh5c2ljYWxGZWF0dXJlcyB0byBoYW5kbGUgYm90aCAxNiBhbmQgMzIgYml0IHBvaW50ZXJzCglwcm9wZXJseS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglDb21wbGV0ZSBzdXBwb3J0IERPUyB2ZXJzaW9uIGFuZCB3aW5lbG9vayBzZXR0aW5ncy4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglGaXggRU1GIGRyaXZlciBVcGRhdGVCQm94IHJvdXRpbmUuIFRoZSBFTUYgYm91bmRpbmcgYm94IG11c3QgYmUgc3RvcmVkCglpbiBkZXZpY2UgY29vcmRpbmF0ZXMgaW4gdGhlIG1ldGFmaWxlLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9hcHBkZWZhdWx0cy5jLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIENsZWFyIHNjcmVlbiBkZXB0aCBjb21ibyBib3ggb24gcGFnZSBpbml0LgoJLSBTb21lIGFwcGRlZmF1bHRzIHN1cHBvcnQuCgktIFJlbmFtZSBoRGxnIHRvIGRpYWxvZyBpbiBzb21lIHBsYWNlcyBzbyBlbmFibGUvZGlzYWJsZSBtYWNyb3Mgd29yay4KCS0gRG9uJ3QgdXBkYXRlIHJlZ2lzdHJ5IHdoZW4gdGhlIEdVSSBpcyBiZWluZyBpbml0aWFsbHkgY29uZmlndXJlZC4KCjIwMDMtMTAtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9zbWIuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvYml0bWFwcy93aW5lLnhwbSwKCSAgbGlicy93cHAvcHBsLmwsIGxpYnMvd3BwL3ByZXByb2MuYywgbWlzYy9yZWdpc3RyeS5jLAoJICBzZXJ2ZXIvdW5pY29kZS5jLCBzZXJ2ZXIvdW5pY29kZS5oOgoJRGFuaWVsIE1hcm1pZXIgPGQubWFybWllckBibHVld2luLmNoPgoJRml4ZWQgd2FybmluZ3Mgd2l0aCBnY2Mgb3B0aW9uICItV3dyaXRlLXN0cmluZ3MiLgoKCSogZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbnRkbGwvc3RyaW5nLmM6CglEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUZpeCBzcGxpdHBhdGggYW5kIHdzcGxpdHBhdGggZm9yIHRoZSBmaWxlIGV4dGVuc2lvbi4KCgkqIGRsbHMvcnBjcnQ0L25kcl9taWRsLmM6IEdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBSZW1vdmUgYW4gZXJyb25lb3VzIGNoZWNrIGluIE5kclNlbmRSZWNlaXZlLgoJLSBDaGFuZ2UgZml4bWVzLgoKCSogZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgRVhFLCBCQVQsIENNRCwgYW5kIENPTS4KCgkqIGRsbHMveDExZHJ2L3hyYW5kci5jOiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQHBmZWlmZXIuY29tPgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBkZXB0aHNbXS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJQSBXTV9DUkVBVEUgbWVzc2FnZSBzZW50IHRvIGFuIEVkaXQgd2luZG93IHByb2NlZHVyZSBzaG91bGQKCXJldHVybiAxLiBQb3dlciBCdWlsZGVyIG1hc2tlZCBlZGl0IGNvbnRyb2xzIGRlcGVuZCBvbiBpdC4KCgkqIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQsIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXBkYXRlIHRlc3RzLmRhdCB0byBpbmNsdWRlIHRoZSB2YXJpb3VzICNpbmNsdWRlIGZpeGVzLgoJZ2NjIHNheXMgdGhhdCBzaXplb2YobG9uZyBkb3VibGUpPT0xMi4KCUZpeCB0aGUgZGV0ZWN0aW9uIG9mIHByYWdtYSBwYWNrcyB0byBkZXRlY3QgI2luY2x1ZGUgPC4uLj4uCglHZW5lcmF0ZSBvaygiLi4uXG4iKSBjYWxscy4KCgkqIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLCB0b29scy90ZXN0cnVuOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBhbGwgaGVhZC90YWlsIC1YIHRvIGhlYWQvdGFpbCAtbiBYIHRvIGJlIG1vcmUgUE9TSVhseQoJY29tcGxpYW50LgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpX3ByaXZhdGUuaCwgZGxscy9zZXR1cGFwaS9zZXR1cGNhYi5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGluY2x1ZGUvc2V0dXBhcGkuaDoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCS0gV2luMTYvMzIgY2xlYW51cC4KCS0gRml4ZXMgZm9yIGJ1aWxkaW5nIHdpdGggdGhlIFBTREsuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvd2lucmVnLmg6CglEYW5pZWwgTWFybWllciA8ZC5tYXJtaWVyQGJsdWV3aW4uY2g+CglSZWdDcmVhdGVLZXlFeHtBLFd9OiBzdGF0ZSB0aGF0IGNsYXNzIHN0cmluZyBpcyBjb25zdGFudC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IFRBQl9EZWxldGVJdGVtIGFuZCBUQUJfRGVsZXRlQWxsSXRlbXMgcmVncmVzc2lvbnMgaW50cm9kdWNlZCBieQoJdGhlIGxhc3QgVEFCX0ludmFsaWRhdGVUYWJBcmVhIGNoYW5nZXMuCglDb3JyZWN0IHRoZSBpbmRlbnRhdGlvbiBmb3IgdGhlc2UgZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgdXNlIGZyZWUnZCBwb2ludGVyIGluIHN0YXR1cyBjb250cm9sIC0gZm91bmQgYnkgVmFsZ3JpbmQuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUFjY291bnQgZm9yIHVuaXF1ZSBOVDQgYmVoYXZpb3VyLgoJQmV0dGVyIGVycm9yIG1lc3NhZ2UuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGUgd2luZVcuCgoJKiB3aW5kb3dzL3dpbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglVc2UgdGhlIGV4dGVuZGVkIHdpbmRvdyBzdHlsZSBmb3IgdGhlIHByZXZpb3VzIHN0eWxlIGluIHRoZSBzdHlsZQoJY2hhbmdpbmcvY2hhbmdlZCBtZXNzYWdlcyBpZiBXSU5fU2V0V2luZG93TG9uZyBpcyBjYWxsZWQgd2l0aAoJR1dMX0VYU1RZTEUuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglPbmx5IHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVlc3RlZC4KCjIwMDMtMTAtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMzEwMTYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDMtMTAtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsaWJzL3dpbmUvd2luZS5kZWY6IERvbid0IGV4cG9ydCB0aGUgd2luZV9wdGhyZWFkXyogZnVuY3Rpb25zLgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jLAoJICBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmM6CglSZXBsYWNlZCBhIGZldyBtb3JlIDB4ZmZmZmZmZmYgYnkgdGhlIGFwcHJvcHJpYXRlIGNvbnN0YW50cy4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYywKCSAgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy93aW5lZG9zL2ludDIxLmMsIGRsbHMvd2lubW0vbW1pby5jLAoJICBmaWxlcy9maWxlLmMsIG1pc2MvcmVnaXN0cnkuYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLAoJICBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc291cmNlLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJVXNlIElOVkFMSURfRklMRV9BVFRSSUJVVEVTIHRvIHRlc3QgZm9yIGZhaWx1cmUgb2YKCUdldEZpbGVBdHRyaWJ1dGVzQS9XIGFuZCBub3QgLTEgb3IgMHhGRkZGRkZGRi4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6IEFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCUFkZCBVc2VYUmFuZFIgdG8gc2FtcGxlIGNvbmZpZyBmaWxlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglUaGUgaW1wb3J0ZWQgdHlwZWxpYiBuYW1lIG11c3QgYmUgY29udmVydGVkIHRvIFVuaWNvZGUuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZCBzdXBwb3J0IGZvciBhbGwgWiBidWZmZXIgZGVwdGhzIHRoYXQgYXJlIGxvd2VyIHRoYXQgdGhlIGN1cnJlbnQKCW9uZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJUmVjZW50IHZlcnNpb25zIG9mIGxpYlhyYW5kciBkZXBlbmQgb24gbGliWHJlbmRlci4KCgkqIGRsbHMva2VybmVsL3JlbGF5MTYuYywgZGxscy9udGRsbC9yZWxheS5jLAoJICBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW46CglGaXhlZCBoYW5kbGluZyBvZiByZWxheSBhbmQgc25vb3AgaW5jbHVkZS9leGNsdWRlIGxpc3RzIHRvIGJlaGF2ZSBhcwoJZG9jdW1lbnRlZCAoYmFzZWQgb24gYSBwYXRjaCBieSBSZWluIEtsYXplcykuCgoJKiBkbGxzL2tlcm5lbC9zbm9vcDE2LmM6IFByaW50IHRocmVhZCBpZCBpbiBzbm9vcCB0cmFjZXMuCgoJKiBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvZGVza3RvcC5jLAoJICBkbGxzL3gxMWRydi9zZXR0aW5ncy5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHJhbmRyLmMsCgkgIGRsbHMveDExZHJ2L3hyYW5kci5oLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5oOgoJQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJLSBBZGRlZCBzdXBwb3J0IGZvciBYUmFuZFIgZXh0ZW5zaW9uLgoJLSBBZGRlZCBuZXcgZGVidWdnaW5nIGNoYW5uZWxzIGZvciByZXNvbHV0aW9uIGNoYW5naW5nLgoJLSBTdHJlYW1saW5lZCByZXNvbHV0aW9uIGNoYW5naW5nIGFuZCByZW1vdmVkIGR1cGxpY2F0ZWQgY29kZS4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuaCwgZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CgktIFNwbGl0IFdpbjE2LzMyIGZpbGUgZGlhbG9ncy4KCS0gUmVtb3ZlIHN1cHBvcnQgZm9yIFdpbjE2IHN0eWxlJ2QgV2luMzIgZGlhbG9ncy4KCjIwMDMtMTAtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmM6CglHZXQgcmlkIG9mIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBtYWNyb3MsIHVzZSByZWFsIGZ1bmN0aW9ucyBpbnN0ZWFkLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jOiBGaXhlZCBjdXQmcGFzdGUgZXJyb3IuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJT25seSBzZW5kIFRWTl9JVEVNRVhQQU5ESU5HIGZvciBpdGVtcyBtYXJrZWQgYXMgaGF2aW5nIGNoaWxkcmVuLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL3RpbWUuYywKCSAgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywKCSAgZGxscy93aW5zcG9vbC9pbmZvLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLAoJICBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYzoKCU9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJQW5vdGhlciBwb3J0aW9uIG9mIEhlYXBSZUFsbG9jIGZpeGVzLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3dpbi5pbmk6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNZXJnZSB3aW4uaW5pL1ttY2kgZXh0ZW5zaW9uc10gaW50byB0aGUgcmVnaXN0cnkuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9sb2NhbGUuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBGb2xkU3RyaW5nVy4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmgsIGxpYnMvdW5pY29kZS9NYWtlZmlsZS5pbiwKCSAgbGlicy91bmljb2RlL2ZvbGQuYywgbGlicy91bmljb2RlL3dpbmVfdW5pY29kZS5kZWY6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgc3RyaW5nIGZvbGRpbmcgc3VwcG9ydC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3BlY2lmeSBmb3VyY2MgY29kZXMgZm9yIGVuY29kaW5ncyBkaXJlY3RseSwgaW5zdGVhZCBvZiB1c2luZyBjaGFuZ2luZwoJZW51bSBuYW1lcy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGUgY29tbWFuZFNhdmVSZWdpc3RyeS4KCgkqIGRsbHMvdXNlci9ob29rLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYW4gb2J2aW91cyB0eXBvIGluIGNhbGxfaG9va19BdG9XLgoKCSogZGxscy9vbGVhdXQzMi8uY3ZzaWdub3JlLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnJjLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0N6LnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0RlLnJjLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0RrLnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0VuLnJjLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0VzLnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0ZyLnJjLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0h1LnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX0l0LnJjLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyX05sLnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX05vLnJjLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyX1N2LnJjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyX1RoLnJjLAoJICBkbGxzL29sZWF1dDMyL3Jlc291cmNlLmgsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCByZXNvdXJjZXMgZm9yIGJvb2xlYW4gc3RyaW5ncyBpbiBzZXZlcmFsIGxhbmd1YWdlcy4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNZXJnZSB3aW4uaW5pL1ttY2kgZXh0ZW5zaW9uc10gaW50byB0aGUgcmVnaXN0cnkuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBIGZldyBtb3JlIGtleXMgZXh0cmFjdGVkIGZyb20gdGhlIG9sZCBkb2N1bWVudGF0aW9uL3NoZWxsMzIuCgoJKiBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIG91dC1vZi1iYW5kIGluc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW4uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCVJlZ3JvdXAgdGhlIFgxMSBoZWFkZXIgY2hlY2tzIHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgZ2VuZXJhdGVkCgljb25maWd1cmUgYSBiaXQuCgoJKiBkbGxzL2tlcm5lbC9wcm9maWxlLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywKCSAgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9kcml2ZS5oOgoJR2V0IHJpZCBvZiB0aGUgZHJpdmUgY29kZXBhZ2VzIGFuZCB1c2UgQ1BfVU5JWENQIGluc3RlYWQuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL2NwcC5jLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBsaWJzL3BvcnQvc3Bhd24uYywgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jLAoJICB0b29scy93aW5lZ2NjL3V0aWxzLmMsIHRvb2xzL3dpbmVnY2MvdXRpbHMuaCwKCSAgdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOgoJRGFuaWVsIE1hcm1pZXIgPGQubWFybWllckBibHVld2luLmNoPgoJRml4ZWQgd2FybmluZ3Mgd2l0aCBnY2Mgb3B0aW9uICItV3dyaXRlLXN0cmluZ3MiLgoKCSogb2JqZWN0cy9mb250LmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJR2V0IFdpbmUgdG8gYmVoYXZlIGxpa2UgV2luZG93cyBkb2VzIHdoZW4gQm9sZCBhbmQvb3IgSXRhbGljIGlzCglzcGVjaWZpZWQgaW4gdGhlIHR5cGVmYWNlIG5hbWUgYXJndW1lbnQgdG8gQ3JlYXRlRm9udC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJQ2hlY2sgZm9yIFhyYW5kciBleHRlbnNpb24uCgoJKiBkbGxzL21zdmNydC9kaXIuYywgZGxscy9udGRsbC9zdHJpbmcuYzoKCVJld3JvdGUgc3BsaXRwYXRoIGFuZCB3c3BsaXRwYXRoIHRvIGF2b2lkIG1vZGlmeWluZyB0aGUgcGF0aAoJc2VwYXJhdG9ycy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW1wcm92ZWQgc2VsZWN0aW9uIG9mIGZyZWV0eXBlIGZhY2UgY2hhcm1hcC4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2JpdGJsdC5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmM6CglEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUltcGxlbWVudGVkIEJpdEJsdCwgU3RyZXRjaEJsdCBhbmQgU2V0RElCaXRzVG9EZXZpY2UgRU1GIGRyaXZlcgoJY2FsbGJhY2tzLgoJQ2xlYW5lZCB1cCByZWR1bmRhbnQgY29kZSBpbiBFTUZEUlZfU3RyZXRjaERJQml0cy4KCgkqIGxpYnMvdW5pY29kZS9jYXNlbWFwLmMsIGxpYnMvdW5pY29kZS9jcG1hcC5wbDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgZ2VuZXJhdGlvbiBvZiBkaWdpdCBhbmQgY29tcGF0YWJpbGl0eSBtYXBwaW5nIHRhYmxlcy4KCUdlbmVyYXRlIHNtYWxsZXIgbWFwcGluZyB0YWJsZXMgYnkgbWVyZ2luZyBvdmVybGFwcy4KCgkqIG9iamVjdHMvZGliLmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW4gQ3JlYXRlRElCaXRtYXAsIHRoZSBmYWN0IHRoYXQgdGhlIGJpdHMgaW5pdCBmbGFnIGlzIHNldCBvciBub3QKCWRvZXNuJ3QgaGF2ZSBhbnl0aGluZyB0byBkbyB3aXRoIHRoZSBjb2xvciBzdGF0ZSBvZiB0aGUgRElCLgoKMjAwMy0xMC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvZGVidWcubCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL2Rpc3BsYXkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmMsIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jOgoJTWljaGFsIEphbnVzeiBNaXJvc2xhdyA8TS5NaXJvc2xhd0BlbGthLnB3LmVkdS5wbD4KCUV4dGVuZCBkaXNwbGF5czogbm93IG9uZSBjYW4gYWRkIGRpc3BsYXlzIGFjdGl2ZSBvbmx5IGluIHNwZWNpZmllZAoJZnVuY3Rpb247IGRpc3BsYXlzIG5vdyBjYW4gYmUgZW5hYmxlZC9kaXNhYmxlZCBsaWtlIGluIGdkYi4KCgkqIGRsbHMvb2xlMzIvaWZzLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29iamlkbC5oLAoJICBpbmNsdWRlL29iamlkbC5pZGw6CglNb3ZlZCB0aGUgMTYtYml0IHN0b3JhZ2UgaW50ZXJmYWNlcyBvdXQgb2YgdGhlIGV4cG9ydGVkIGhlYWRlcnMuCgoJKiBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDogUmVtb3ZlZCB0aGUgLS1kbGwgb3B0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9kZWZhdWx0LmRzbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIGRlZmF1bHQuZHNsIHNoZWV0IC0tIHRoZSBkZWZhdWx0IGlzIGdvb2QgZW5vdWdoLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CgktIEltcGxlbWVudGVkIEhFQURFUl9TZXRCaXRtYXBNYXJnaW4gYW5kIEhFQURFUl9HZXRCaXRtYXBNYXJnaW4uCgktIEdldCByaWQgb2Ygc29tZSBtYWdpYyBudW1iZXJzIGluIEhFQURFUl9EcmF3SXRlbS4KCS0gRml4ZWQgdGhlIGRyYXdpbmcgb2YgaW1hZ2VzIGZyb20gaW1hZ2VsaXN0IHdoZW4gdGhlCgkgIEhERl9CSVRNQVBfT05fUklHSFQgZmxhZyBpcyBzZXQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCU9ubHkgcmVkcmF3IHRoZSBuZWNlc3NhcnkgYXJlYSBvZiB0aGUgdGFiIGNvbXBvbmVudCBhbmQgbm90IHRoZSB3aG9sZQoJY29tcG9uZW50IGxpa2Ugd2luZG93cyBkb2VzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglQcmV2ZW50IGEgY3Jhc2ggd2l0aCBhIEJhZERyYXdhYmxlIFggZXJyb3IgbWVzc2FnZSB3aXRoIHNvbWUgTWFza0JsdAoJY2FsbHMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscDJzZ21sLmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGRlYnVnX2NoYW5uZWxzLgoKCSogZGxscy9vbGVhdXQzMi9wYXJzZWR0LmM6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglSZW1vdmUgdW51c2VkIHZhcmlhYmxlcyBtZGF5cywgbW9udGhzLCBkYXlzLCBhbmQgRGF0ZVN0eWxlLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBGaW5uaXNoIGtleWJvYXJkIGxheW91dCB0byBiZXR0ZXIgbWF0Y2ggdGhlIFhGcmVlODYgb25lLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhc3MgdGhlIGNvcnJlY3QgbHBhcmFtIHdoZW4gY2FsbGluZyBQYWdlRGxnUHJvY0EncyBQYWdlU2V0dXBIb29rIGZvcgoJV01fSU5JVERJQUxPRy4KCgkqIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglGaXhlZCB1c2FnZSBvZiBHbG9iYVJlQWxsb2MuCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGcmVlIHNob3VsZCBub3QgaGFwcGVuIHdoZW4gc3RpbGwgcGxheWluZy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9sb2NhbGUuYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLCBtZW1vcnkvY29kZXBhZ2UuYzoKCU1vdmVkIGNvZGVwYWdlIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCUNoYW5nZWQgaW5pdGlhbGlzYXRpb24gb2YgdGhlIGxvY2FsZSBmdW5jdGlvbnMgc28gdGhhdCBDUF9VTklYQ1Agd29ya3MKCWFzIHNvb24gYXMgcG9zc2libGUgZHVyaW5nIGtlcm5lbDMyIGluaXQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9nZGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaXBobHBhcGkvaWZlbnVtLmMsIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5jLAoJICBkbGxzL21zaHRtbC9tc2h0bWwuc3BlYywgZGxscy9tc2kvbXNpLnNwZWMsIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnMvd2luZS93aW5lLmRlZjoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIHByb2JsZW1zIGZvdW5kIHdoaWxlIGNvbXBpbGluZyBhbmQgbGlua2luZyBXaW5lIHVuZGVyCglDeWd3aW4uCgoJKiBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYywKCSAgZGxscy9rZXJuZWwvZWRpdGxpbmUuYywgZGxscy9rZXJuZWwvZ2xvYmFsMTYuYywKCSAgZGxscy9rZXJuZWwvcmVzb3VyY2UxNi5jLCBkbGxzL2tlcm5lbC9zbm9vcDE2LmMsCgkgIGRsbHMvb2xlMzIvb2xlcHJveHkuYywgZGxscy9vbGUzMi9ycGMuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBkbGxzL3NldHVwYXBpL2RpcmlkLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywKCSAgZGxscy91c2VyL21lc3NhZ2UuYzoKCU9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJQW5vdGhlciBwb3J0aW9uIG9mIEhlYXBSZUFsbG9jIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvaW5zdHIuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgZGxscy93aW5lZG9zL3JlbGF5LmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW1vdmUgcmFjZXMgZnJvbSBEUE1JIGFzeW5jIGV2ZW50IGhhbmRsaW5nLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUZpeCBmdW5jdGlvbiBwb2ludGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGluIF9fd2luZV9wcm9jZXNzX2luaXQoKS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglTbWFsbCBmaXggaW4gc291bmQgZmx1c2hpbmcgY29kZS4KCgkqIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL2V4Y2VwdC5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsCgkgIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJU2V0IG9yIGNsZWFyIHRoZSBCZWluZ0RlYnVnZ2VkIGZsYWcgaW4gdGhlIFBFQiB3aGVuIGEgZGVidWdnZXIgaXMKCWF0dGFjaGVkIHRvIG9yIGRldGFjaGVkIGZyb20gYSBwcm9jZXNzLgoJRG9uJ3Qgc2VuZCBleGNlcHRpb24gZXZlbnRzIHRvIHRoZSBzZXJ2ZXIgdW5sZXNzIGEgZGVidWdnZXIgaXMKCXByZXNlbnQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvcHRocmVhZC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBsaWJzL3dpbmUvcG9ydC5jOgoJQWRkZWQgY2hlY2sgZm9yIHB0aHJlYWQuaCAocmVwb3J0ZWQgYnkgU3RldmVuIEVkd2FyZHMpLgoJUmVtb3ZlZCBpbml0X2RvbmUgY2hlY2ssIHRoZSBwcm9jZXNzIGhlYXAgaXMgbm93IGNyZWF0ZWQgYmVmb3JlIGtlcm5lbAoJaXMgbG9hZGVkIGFueXdheS4KCgkqIGRsbHMvbXNpL3NxbC55LCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZHVtcHJlcy5oLAoJICB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuaCwgdG9vbHMvd3JjL3BhcnNlci5sLAoJICB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9yZWFkcmVzLmMsIHRvb2xzL3dyYy91dGlscy5jLAoJICB0b29scy93cmMvdXRpbHMuaDoKCURhbmllbCBNYXJtaWVyIDxkLm1hcm1pZXJAYmx1ZXdpbi5jaD4KCUZpeGVkIHdhcm5pbmdzIHdpdGggZ2NjIG9wdGlvbiAiLVd3cml0ZS1zdHJpbmdzIi4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggc29tZSBjYXNlcyB3aGVuICdrZXlzeW0nIG1pZ2h0IGJlIGxlZnQgdW5pbml0aWFsaXplZC4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogRGFuaWVsIE1hcm1pZXIgPGQubWFybWllckBibHVld2luLmNoPgoJQUxTQV9XYXZlSW5pdDogcmVwYWlyZWQgZGV2aWNlIG5hbWUuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IEdldEJpbmFyeVR5cGUgdG8gdW5pY29kZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkIG5lY2Vzc2FyeSBBZGRSZWYvUmVsZWFzZSBzdHVmZiB0byB7U2V0L0dldH1DdXJyZW50Vmlld3BvcnQuCglXaGVuIGNoYW5naW5nIHBhcmFtZXRlcnMgb2YgYSB2aWV3cG9ydCwgZG8gdGhlIGFwcHJvcHJpYXRlIHVwZGF0ZSBpZgoJaXQgaXMgY3VycmVudC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRml4IHNldHRpbmcgc2l6ZSBvZiB0YWIgY29udHJvbC4KCjIwMDMtMTAtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJTW92ZWQgdGhlIGVycm5vIGZ1bmN0aW9ucyBwYXRjaGluZyB0byB3aW5lX3B0aHJlYWRfaW5pdF90aHJlYWQgc28gdGhhdAoJaXQncyBkb25lIGVhcmx5IGVub3VnaCBub3cgdGhhdCBrZXJuZWwgaXMgb25seSBsb2FkZWQgbGF0ZXIgb24uCgoJKiBtaXNjZW11L01ha2VmaWxlLmluOgoJTGluayB0aGUgbWFpbiBiaW5hcnkgYWdhaW5zdCBsaWJwdGhyZWFkIGZvciBOUFRMIGJ1aWxkcy4KCjIwMDMtMTAtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6CglVcGRhdGUgX193aW5lX21haW5fYXJnYyBhZnRlciBvcHRpb24gcHJvY2Vzc2luZy4KCgkqIGRsbHMvZG11c2ljL2RtdXNpYy5jLCBwcm9ncmFtcy93aW5lZGJnL2hhc2guYywKCSAgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBzb21lIGluc3RhbmNlcyBvZiBtZW1vcnkgYWxsb2NhdGlvbiB0aHJvdWdoIEhlYXBSZUFsbG9jKCkuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmM6CglEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIHVuZGVybGluZSBhbmQgc3RyaWtlb3V0IHRleHQgaW4geHJlbmRlci4KCgkqIG9iamVjdHMvZGliLmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW1wcm92ZW1lbnQgb24gdGhlIGNvZGUgdGhhdCBkZWFscyB3aXRoIHNldHRpbmcgdGhlIGNvbG9yIG1hcCBpbgoJR2V0RElCaXRzLgoKCSogZGxscy8qL01ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBTWU1CT0xGSUxFIGFuZCBMRERMTEZMQUdTIGZyb20gTWFrZWZpbGVzLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sCgkgIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluOgoJRGVmaW5lIGFuIExERExMIGNvbW1hbmQgdG8gbGluayBkbGxzLCBpbnN0ZWFkIG9mIHVzaW5nIExERExMRkxBR1MuCgoJKiBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHMsIHRvb2xzL3dpbmV3cmFwcGVyOgoJV2Ugbm8gbG9uZ2VyIG5lZWQgdG8gbGluayBhZ2FpbnN0IG50ZGxsIGluIHRoZSBVbml4IHNlbnNlLgoKMjAwMy0xMC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIG1pc2NlbXUvTWFrZWZpbGUuaW46CglNb3ZlZCB0aGUgcHRocmVhZCBlbXVsYXRpb24gaW50byB0aGUgbWFpbiBiaW5hcnkgc28gdGhhdCB3ZSBkb24ndCBuZWVkCgl0byBsaW5rIGl0IGFnYWluc3QgbnRkbGwuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGUuCgoJKiB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglIYXZlIHRoZSB3cmFwcGVyIGxvYWQgdGhlIHVzZWQgRExMcyBpbiBjYXNlIHRoZSBtYWluIHByb2dyYW0KCWNhbGxzIHRoZW0gZnJvbSBjb25zdHJ1Y3RvcnMgKHdpdGggaGVscCBmcm9tIEFsZXhhbmRyZSBKdWxsaWFyZCkuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnMvd2luZS9sb2FkZXIuYzoKCURvbid0IHJlZmVyZW5jZSB0aGUgZW52aXJvbiBnbG9iYWwgdmFyaWFibGUgZnJvbSBrZXJuZWwzMiwgaXQgbWF5IGZhaWwKCXRvIGxpbmsgKHJlcG9ydGVkIGJ5IEdlcmFsZCBQZmVpZmVyKS4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglGaXhlZCBpbXBvcnRpbmcgb2YgZGxscyB3aXRoIG5vIGV4cG9ydHMgKHJlcG9ydGVkIGJ5IFdhcnJlbiBCYWlyZCkuCglEb24ndCBjcmFzaCBvbiBhbiBlbXB0eSBsb2FkIG9yZGVyIHNwZWNpZmljYXRpb24gKHJlcG9ydGVkIGJ5IE1heGltZQoJQmVsbGVuZ+kpLgoJVHJ5IHRvIGF2b2lkIGNyYXNoaW5nIHdoZW4gYW4gaW1wb3J0IGlzIG1pc3NpbmcgZm9yIGEgYnVpbHRpbiBkbGwuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46CglUaGUgaW50ZXJtZWRpYXRlIC50bXAubyBmaWxlIGlzIG5vIGxvbmdlciBuZWVkZWQuCglETExNQUlOIGlzIG5vdCB1c2VkIGFueW1vcmUuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJVXNlIHRoZSBzdGFuZGFyZCBEbGxNYWluIGVudHJ5IHBvaW50LgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUxESU1QT1JUUyBpcyBubyBsb25nZXIgbmVlZGVkLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglXZSBjYW4gbm93IHVzZSB0aGUgc3RhbmRhcmQgRGxsTWFpbiBhcyBlbnRyeSBwb2ludC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglMaW5rIGtlcm5lbDMyIGFzIGEgbm9ybWFsIGRsbC4KCgkqIGxpYnMvd2luZS9wb3J0LmM6CglBZGRlZCBwbGFjZWhvbGRlcnMgZm9yIHdpbmVfcHRocmVhZF9pbml0X3Byb2Nlc3MgYW5kCgl3aW5lX3B0aHJlYWRfaW5pdF90aHJlYWQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvaGVhcC5jLAoJICBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9zZXJ2ZXIuYywKCSAgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS93aW50ZXJubC5oLCBsaWJzL3dpbmUvbG9hZGVyLmM6CglDaGFuZ2VkIHRoZSBpbml0IGNvZGUgdG8gbWFrZSBsaWJ3aW5lIGxvYWQgb25seSBudGRsbCBhbmQgdHJhbnNmZXIKCWNvbnRyb2wgdG8gaXQsIGFuZCB0aGVuIGhhdmUgbnRkbGwgbG9hZCBrZXJuZWwzMiB1c2luZyB0aGUgbm9ybWFsCglsb2FkZXIgbWVjaGFuaXNtcy4KCUdldCByaWQgb2YgQlVJTFRJTjMyX0xvYWRFeGVNb2R1bGUuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9kYy5jLCBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmM6CglEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIFNldFRleHRKdXN0aWNhdGlvbiBFTUYgZHJpdmVyIGNhbGxiYWNrLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbXByb3ZlZCBmb250IGdseXBoIHRyYW5zZm9ybWF0aW9uIHN1cHBvcnQgaW4gR2V0R2x5cGhPdXRsaW5lLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglNYWtlIHN1cmUgd2UgYWx3YXlzIHVzZSB0aGUgc2FtZSBuYW1lIGZvciB0aGUgc2VtYXBob3JlIChzcG90dGVkIGJ5CglCZW4gQSBMIEplbW1ldHQpLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmM6IFBldGVyIEJlcmcgTGFyc2VuIDxwZWJsQG1hdGgua3UuZGs+CglDaGFuZ2VkIGRlYnVnIGNoYW5uZWwgdG8gImN1cnNlcyIgdG8gc2VwZXJhdGUgaXQgZnJvbSB3aW5lY29uc29sZS5jCglhbmQgYWRkZWQgc29tZSB0cmFjZSBpbmZvbWF0aW9uLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHRlc3QgZm9yICVuLgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCSVuIHJldHVybnMgdGhlIG51bWJlciBvZiBjb25zdW1lZCBjaGFyYWN0ZXJzLgoKMjAwMy0xMC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC90aHJlYWQuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJVXNlIHRoZSBSdGwgYml0bWFwIGZ1bmN0aW9ucyB0byBpbXBsZW1lbnQgVGxzIGFsbG9jYXRpb24uCglHZXQgcmlkIG9mIHRoZSBQREIgc3RydWN0dXJlLgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCVdlIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcmVsYXkgZGVidWcgbGlzdHMgZm9yICtzbm9vcCB0b28uCgoJKiBkbGxzL2tlcm5lbC9uZV9zZWdtZW50LmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZmlsZXMvZGlyZWN0b3J5LmM6CglPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCUF2b2lkIEhlYXBSZUFsbG9jIG9mIGEgTlVMTCBwb2ludGVyLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBpbmV4aXN0ZW50IGRpciwgYWRkIGEgZG9jIHJlZmVyZW5jZSBmcm9tIHNoZWxsMzIuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRvY3VtZW50YXRpb24vc2hlbGwzMjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIHVzZWZ1bCBpbmZvcm1hdGlvbiBvdXQgb2YgZG9jdW1lbnRhdGlvbi9zaGVsbDMyLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvc3luYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9yIHNvbWUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gUmVnaXN0ZXJXYWl0LgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBxdW90aW5nIG9uIHRoZSBjb21tYW5kIGxpbmUgaW4gdW5pbnN0YWxsZXIuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIFNNUFRFIHRpbWUuCglGaXhlZCBiYWQgd2F2ZSBpbiBwb3NpdGlvbiBhdCBzdGFydHVwIGFuZCByZXNldC4KCgkqIGRsbHMvaW1hZ2VobHAvZGVidWcuYywgZGxscy9pbWFnZWhscC9pbWFnZWhscF9tYWluLmMsCgkgIGluY2x1ZGUvaW1hZ2VobHAuaDoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUJyaW5nIGltYWdlaGxwIChtb3N0bHkpIGlubGluZSB3aXRoIHRoZSBQU0RLIGFuZCBNaW5ndy4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmM6CglEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUltcHJvdmVkIHRoZSBib3VuZGluZyBib3ggY2FsY3VsYXRpb24gZm9yIHRoZSBFTUYgZHJpdmVyIEV4dFRleHRPdXQKCW1ldGFyZWNvcmQuIEl0IHRha2VzIHRoZSB0ZXh0IGFsaWdubWVudCBpbnRvIGFjY291bnQuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6IEFkZGVkIGEgZmV3IG1pc3NpbmcgZXhwb3J0cy4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsCgkgIGluY2x1ZGUvdGhyZWFkLmg6CglNb3ZlZCB0aGUgY29uc3RydWN0b3IgZm9yIHRoZSBpbml0aWFsIFRFQiB0byBudGRsbCBzbyB0aGF0IGl0IHJ1bnMgYXMKCWVhcmx5IGFzIHBvc3NpYmxlIG9uIHN0YXJ0dXAuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L21hcHBpbmcuYzoKCURhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgRU1GIGRyaXZlciBPZmZzZXRWaWV3cG9ydE9yZyBhbmQgT2Zmc2V0V2luZG93T3JnCgljYWxsYmFja3MgdXNpbmcgdGhlIEVNUl9TRVRWSUVXUE9SVE9SR0VYIGFuZCBFTVJfU0VUV0lORE9XT1JHRVgKCW1ldGFyZWNvcmRzIHJlc3BlY3RpdmVseS4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsCgkgIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGJfZGlzYXNtLmMsIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2hhc2guYywgcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvdHlwZXMuYzoKCURhbmllbCBNYXJtaWVyIDxkLm1hcm1pZXJAYmx1ZXdpbi5jaD4KCUZpeGVkIHdhcm5pbmdzIHdpdGggZ2NjIG9wdGlvbiAiLVd3cml0ZS1zdHJpbmdzIi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSBkb2Nib29rMnR4dCB0byBnZW5lcmF0ZSB0aGUgdGV4dCBvdXRwdXQgaW5zdGVhZCBvZiBhZGhvYyBoYWNrcy4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJVXNlIENPTlNPTEVfUkVOREVSRVJfTk9ORV9FVkVOVCB0byBjb21wcmVzcyBhbiBldmVudCBpbnN0ZWFkIG9mCglkZWxldGluZyBpdCB3aXRoIGEgbWVtbW92ZS4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOiBQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJVGhlIFRhYiBrZXkgd2FzIGNvbnNpZGVyZWQgYSBjdHJsLWtleSBhbmQgU2hpZnQtVGFiIHdhcyBpZ25vcmVkLgoKMjAwMy0xMC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3N5c2xldmVsLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCUFkZGVkIF9fd2luZV9zZXRfc2lnbmFsX2ZzIGZ1bmN0aW9uIHRvIGF2b2lkIHNoYXJpbmcgdGhlCglTWVNMRVZFTF9XaW4xNkN1cnJlbnRUZWIgdmFyaWFibGUgYmV0d2VlbiBrZXJuZWwgYW5kIG50ZGxsLgoJT24gdGhlIGtlcm5lbCBzaWRlLCByZXBsYWNlZCBTWVNMRVZFTF9XaW4xNkN1cnJlbnRUZWIgYnkKCUNhbGxUbzE2X1RlYlNlbGVjdG9yIHN0b3JlZCBkaXJlY3RseSBpbiB0aGUgYXNtIHJlbGF5IGNvZGUgdG8gYXZvaWQgYQoJcnVuLXRpbWUgcmVsb2NhdGlvbi4KCgkqIGRsbHMva2VybmVsL3JlbGF5MTYuYywgZGxscy9rZXJuZWwvc25vb3AxNi5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBkbGxzL250ZGxsL3JlbGF5LmM6CglEdXBsaWNhdGUgcGFydHMgb2YgdGhlIHJlbGF5IGRlYnVnZ2luZyBpbml0IGNvZGUgaW50byBrZXJuZWwgdG8gYXZvaWQKCXJlZmVyZW5jaW5nIG50ZGxsIGludGVybmFsIHN5bWJvbHMuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvZW52LmM6CglNb3ZlZCBidWlsZF9jb21tYW5kX2xpbmUgYmFjayB0byBrZXJuZWwgYW5kIG1ha2UgaXQgaGFuZGxlIFVuaWNvZGUKCXByb3Blcmx5LgoKCSogZGxscy9kc291bmQvY2FwdHVyZS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglNYWtlIGNhcHR1cmUgbW9yZSByZWxpYWJsZSBieSBzdWJtaXR0aW5nIGFsbCBidWZmZXJzIGJlZm9yZSBzdGFydC4KCUFkZGVkIHN1cHBvcnQgZm9yIG5vbiBwY20gZm9ybWF0cy4KCUFkZGVkIG1vcmUgcHJvcGVydHkgc2V0IHN1cHBvcnQuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUluY2x1ZGUgbnRkbGxfbWlzYy5oIHRvIGdldCB0aGUgR2V0Q3VycmVudFByb2Nlc3MvVGhyZWFkSWQgbWFjcm9zLgoKCSogZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYzoKCURhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgU2V0UGl4ZWwgbWV0YXJlY29yZC4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglBdm9pZCBleGNlc3NpdmUgaGVhcCBtZW1vcnkgcmVhbGxvY2F0aW9uIHdoZW4gZ2VuZXJhdGluZyBFTUYKCW1ldGFyZWNvcmRzIGluIG1lbW9yeS4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglSZW1vdmVkIHVzZWxlc3MgV0lORV9UUkFDRV9PTiB0ZXN0cy4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglQZXRlciBCZXJnIExhcnNlbiA8cGVibEBtYXRoLmt1LmRrPgoJTW92ZWQgZGVidWcgb3V0cHV0IHVwIGJlZm9yZSBjYWxsaW5nIHRoZSBiYWNrZW5kLgoKCSogZGxscy9udGRsbC9zZXJ2ZXIuYywgZGxscy9udGRsbC92aXJ0dWFsLmM6CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJSW5jbHVkZSBudGRsbF9taXNjLmggdG8gZ2V0IHRoZSBHZXRDdXJyZW50UHJvY2Vzcy9UaHJlYWRJZCBtYWNyb3MuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUVsaW1pbmF0ZSBkZXBlbmRlbmN5IG9uIFNldExhc3RFcnJvcigpLgoKCSogZGxscy9nZGkvd2luZy5jLCBkbGxzL3dpbmluZXQvbmV0Y29ubmVjdGlvbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTb21lIHNwZWxsaW5nIGZpeGVzLgoKCSogZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIGlycmVsZXZhbnQgKGFuZCBpbmNvbXBsZXRlKSBkb2N1bWVudGF0aW9uIGluICdUaGUgV2luZSBEb2NCb29rCglTeXN0ZW0nIHNlY3Rpb24uCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UuYzogV2FycmVuIEJhaXJkIDx3YXJyZW4uYmFpcmRAY2ltbWV0cnkuY29tPgoJRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglNb3ZlZCBjb2RlIG91dCBvZiBhc3NlcnQgc3RhdGVtZW50cyBzbyB5b3UgY2FuIHNhZmVseSBjb21waWxlIHdpdGgKCS1ETkRFQlVHLgoKCSogZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgaW5jbHVkZS90YXNrLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBzaGFyZSBzb21lIHByb3RlY3RlZCBtb2RlIGludGVycnVwdHMgaW4gd2luZWRvcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJUmVtb3ZlZCBjcmVhdGlvbiBvZiBsb2FkZXIvbmUgYW5kIHdpbjMyIGRpcmVjdG9yaWVzLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvZGV2aWNlLmMsCgkgIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBzY2hlZHVsZXIvaGFuZGxlLmM6CglNb3ZlZCBhIGZldyBtb3JlIGZ1bmN0aW9ucyB0byB0aGUgZGxscy9rZXJuZWwgZGlyZWN0b3J5LgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsIGRsbHMva2VybmVsL2hlYXAuYywKCSAgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvc3RyaW5nLmMsCgkgIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGxvYWRlci90YXNrLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L3N0cmluZy5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglMaW5rIGFsbCByZW1haW5pbmcgZmlsZXMgdGhhdCBjb250YWluIGtlcm5lbCBBUElzIGludG8ga2VybmVsMzIuZGxsCglpbnN0ZWFkIG9mIG50ZGxsLmRsbC4gUmVtb3ZlZCBhIG51bWJlciBvZiBubyBsb25nZXIgbmVlZGVkIGZpbGVzLgoKCSogaW5jbHVkZS9tb2R1bGUuaDoKCUFkZGVkIGhhY2sgdG8gY2FsbCBDcmVhdGVGaWxlVyB0aHJvdWdoIGEgcG9pbnRlciBzbyB0aGF0IHdlIGRvbid0IG5lZWQKCXRvIGxpbmsgdG8ga2VybmVsIGZ1bmN0aW9ucy4KCUNvbW1lbnRlZCBvdXQgU01CIHN1cHBvcnQgaW4gTnRSZWFkRmlsZSBmb3Igbm93LgoKCSogZmlsZXMvc21iLmM6IFJlbW92ZWQgZGVwZW5kZW5jeSBvbiBudGRsbF9taXNjLmguCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL2xvYWRlci5jLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9wYXRoLmM6CglBZGRlZCBoYWNrIHRvIGNhbGwgQ3JlYXRlRmlsZVcgdGhyb3VnaCBhIHBvaW50ZXIgc28gdGhhdCB3ZSBkb24ndCBuZWVkCgl0byBsaW5rIHRvIGtlcm5lbCBmdW5jdGlvbnMuCglDb21tZW50ZWQgb3V0IFNNQiBzdXBwb3J0IGluIE50UmVhZEZpbGUgZm9yIG5vdy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9udGRsbC9maWxlLmMsIGZpbGVzL2RyaXZlLmM6CglQYXNzIHRoZSBjZHJvbSBkZXZpY2UgcGF0aCBpbiBDRFJPTV9Jbml0UmVnaXN0cnkgc28gdGhhdCBudGRsbCBkb2Vzbid0CgluZWVkIHRvIGNhbGwgRFJJVkVfR2V0RGV2aWNlLgoJR2V0IHJpZCBvZiBHZXREcml2ZVR5cGUgY2FsbHMuCgoJKiBpbmNsdWRlL3dpbmluZXQuaDogV2FycmVuIEJhaXJkIDx3YXJyZW4uYmFpcmRAY2ltbWV0cnkuY29tPgoJQ2hhbmdlZCBJbnRlcm5ldFNldFN0YXR1c0NhbGxiYWNrIGRlY2xhcmF0aW9uIHRvCglJbnRlcm5ldFNldFN0YXR1c0NhbGxiYWNrQS9XLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOiBXYXJyZW4gQmFpcmQgPHdhcnJlbi5iYWlyZEBjaW1tZXRyeS5jb20+CglIYW5kbGUgY2FzZXMgd2hlcmUgWEdldEltYWdlIG9yIFgxMURSVl9ESUJfQ3JlYXRlWEltYWdlIGZhaWwuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvc2VydmVyLmMsIGluY2x1ZGUvb3B0aW9ucy5oLAoJICBtaXNjL29wdGlvbnMuYzoKCUdldCByaWQgb2YgdGhlIGFyZ3YwIGFuZCBmdWxsX2FyZ3YwIGdsb2JhbCB2YXJpYWJsZXMuCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJzL3dpbmUvY29uZmlnLmMsIGxpYnMvd2luZS9sb2FkZXIuYzoKCUFkZGVkIHdpbmVfZ2V0X2FyZ3YwX3BhdGgoKSB0byByZXRyaWV2ZSB0aGUgcGF0aCBvZiB0aGUgd2luZSBiaW5hcnkuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmgsCgkgIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci90cmFjZS5jOgoJU3RvcmUgYSAicmVtb3ZhYmxlIiBmbGFnIGluc3RlYWQgb2YgdGhlIGZ1bGwgZHJpdmUgdHlwZSBpbiB0aGUgc2VydmVyCglmaWxlIG9iamVjdDsgdGhpcyB3YXkgd2UgZG9uJ3QgbmVlZCB0byB1c2UgR2V0RHJpdmVUeXBlVyBpbiB0aGUgbG9hZGVyCgljb2RlLgoJTWFrZSBzdXJlIHdlIGFsd2F5cyBoYXZlIGEgdmFsaWQgYnVpbHRpbl9sb2FkX2luZm8gcG9pbnRlci4KCjIwMDMtMTAtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL2xvYWRvcmRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaDoKCVJlbW92ZWQgcmVmZXJlbmNlcyB0byBHZXRTeXN0ZW1EaXJlY3RvcnlXLgoJT3B0aW1pemVkIG1vZHVsZSBsb29rdXAgYSBiaXQuCglLZWVwIHRyYWNrIG9mIHRoZSBtb2RyZWYgcG9pbnRlciBhY3Jvc3MgYnVpbHRpbiBkbGwgbG9hZHMgdG8gYXZvaWQKCWhhdmluZyB0byBsb29rIGl0IHVwIGJ5IG5hbWUgYWZ0ZXJ3YXJkcy4KCgkqIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5oLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmgsCgkgIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3BhdGguYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmMsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL2luZm8uYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsCgkgIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzoKCURhbmllbCBNYXJtaWVyIDxkLm1hcm1pZXJAYmx1ZXdpbi5jaD4KCUZpeGVkIHdhcm5pbmdzIHdpdGggZ2NjIG9wdGlvbiAiLVd3cml0ZS1zdHJpbmdzIi4KCgkqIGluY2x1ZGUvd2luY3J5cHQuaDogV2FycmVuIEJhaXJkIDx3YXJyZW4uYmFpcmRAY2ltbWV0cnkuY29tPgoJQWRkZWQgZXh0ZXJuICJDIi4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywKCSAgZGxscy93aW5tbS9qb3lzdGljay5jLCBpbmNsdWRlL3NldHVwYXBpLmg6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglSZW1vdmUgYSBmZXcgdW5uZWVkZWQgaW5jbHVkZSBzdGF0ZW1lbnRzIGluIGludGVybmFsIGhlYWRlcnMuCglTdGFydGVkIGJyaW5naW5nIHNldHVwYXBpIGluIGxpbmUgd2l0aCBQU0RLLgoKCSogcHJvZ3JhbXMvcmVnc3ZyMzIvcmVnc3ZyMzIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJV2hlbiByZWdpc3RlcmluZyBhIGRsbCwgc2VhcmNoIHRoZSBkbGwncyBkaXJlY3RvcnkgZm9yIGRsbAoJZGVwZW5kZW5jaWVzIHRvby4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGRlZCBhIGNoZWNrIGZvciA8c2NzaS9zY3NpLmg+IGFuZCBpbmNsdWRlIGl0IGluIGRsbHMvbnRkbGwvY2Ryb20uYy4KCgkqIGRsbHMvbXN2Y3J0L3Rlc3RzL2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHNvbWUgdGVzdHMgYXJvdW5kIGZnZXQodylzLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJZmdldCh3KXMoKTogRG9uJ3QgZHJvcCBjaGFyYWN0ZXJzIHdoZW4gYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2guCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+Cglfd3JpdGUoKTogRG9uJ3QgZnJhZ21lbnQgV3JpdGVGaWxlKCkgZm9yIFRFWFQgbW9kZSB3cml0ZS4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmM6CglSZXdyaXRlIG9mIHRoZSBkbGwgZmlsZSBzZWFyY2ggYWxnb3JpdGhtIHRvIGJldHRlciBkZWFsIHdpdGggdGhlCglicm9rZW4gYmVoYXZpb3Igb2YgUnRsRG9zU2VhcmNoUGF0aF9VLgoKCSogZGxscy9udGRsbC9wYXRoLmM6IEEgY291cGxlIG1vcmUgZml4ZXMgaW4gUnRsR2V0RnVsbFBhdGhOYW1lX1UuCglSZXZlcnRlZCBteSBwcmV2aW91cyBmaXggaW4gUnRsRG9zU2VhcmNoUGF0aF9VLCBleHRlbnNpb24gaGFuZGxpbmcgaXMKCXN1cHBvc2VkIHRvIGJlIGJyb2tlbi4KCgkqIGRsbHMvdXNlci9mb2N1cy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLAoJICBzZXJ2ZXIvd2luZG93LmMsIHdpbmRvd3Mvd2lucG9zLmM6CglTdG9yZSB0aGUgZ2xvYmFsIHNoZWxsLCBwcm9nbWFuIGFuZCB0YXNrbWFuIHdpbmRvd3MgaW4gdGhlIHNlcnZlcgoJKGJhc2VkIG9uIGEgcGF0Y2ggYnkgTWFydGluIEZ1Y2hzKS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCV9yZWFkKCk6IEluIF9PX1RFWFQgbW9kZSBtYWtlIFJlYWRmaWxlIGNhbGxzIGluIGNodW5rcyBhcyBiaWcgYXMKCXBvc3NpYmxlLgoKCSogZGxscy9nZGkvZW5obWZkcnYvZGMuYzogRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglTcGl0IG91dCBFTVJfUkVTVE9SRURDIG1ldGFyZWNvcmRzIHdpdGggLTEgYXMgYXJndW1lbnQgYXMgbG9uZyBhcyB3ZQoJZG9uJ3QgZ2V0IHRvIHRoZSBzYXZlZCBzdGF0ZSB3ZSB3YW50LgoKCSogZGxscy93aW5lZG9zL2ludGVycnVwdHMuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJVXNlIGNvcnJlY3QgcG9pbnRlciB3aGVuIGFjY2Vzc2luZyByZWFsIG1vZGUgaW50ZXJydXB0IHZlY3RvcnMgdW5kZXIKCVdpbjE2LgoKCSogZGxscy9kM2Q4L2RyYXdwcmltLmMsIGRsbHMvZDNkOC9zdXJmYWNlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRFhUbiBzdHJpZGUgaXMgdG8gdGhlIG5leHQgYmxvY2ssIHdoaWNoIGlzIHRoZSBlcXVpdmFsZW50IHRvIDQgcm93cwoJd29ydGggb2YgYnl0ZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsCgkgIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kcGxheXgvZHBsYXkuYywKCSAgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOgoJRGFuaWVsIE1hcm1pZXIgPGQubWFybWllckBibHVld2luLmNoPgoJRml4ZWQgd2FybmluZ3Mgd2l0aCBnY2Mgb3B0aW9uICItV3dyaXRlLXN0cmluZ3MiLgoKMjAwMy0xMC0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS93aW50ZXJubC5oOgoJTW92ZWQgdGhlIGZpbmFsIHByb2Nlc3MgaW5pdCBhbmQgZGVwZW5kZW5jeSBsb2FkaW5nIHRvCglkbGxzL250ZGxsL2xvYWRlci5jLCAoYWIpdXNpbmcgdGhlIExkckluaXRpYWxpemVUaHVuayBlbnRyeSBwb2ludC4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvdmVyc2lvbi5yYywgZGxscy93aW5tbS93aW5tbV9yZXMucmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDaGFuZ2UgcmVzb3VyY2VzIGZyb20gbGFzdCBsYW5ndWFnZSBmaWxlIHVzZWQgdG8gTEFOR19ORVVUUkFMLgoKCSogZGxscy9tc3ZjcnQvY3BwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNU1ZDUlRfX19SVER5bmFtaWNDYXN0OiBSZWplY3QgYSBOVUxMIGNwcG9iai4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglEYW5pZWwgTWFybWllciA8ZC5tYXJtaWVyQGJsdWV3aW4uY2g+CglGaXhlZCB3YXJuaW5ncyB3aXRoIGdjYyBvcHRpb24gIi1Xd3JpdGUtc3RyaW5ncyIuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBtZW1vcnkvY29kZXBhZ2UuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBHZXRDUEluZm9FeEEvVy4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIHRvb2xzL2JpbjJyZXMuYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCVJlYWQgYW5kIHdyaXRlIGJpbmFyeSBmaWxlcyBpbiBiaW5hcnkgbW9kZSBvbiBXaW5kb3dzLgoKCSogaW5jbHVkZS90bXNjaGVtYS5oOiBLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZGVkIG1pc3NpbmcgZGVmaW5lcyBhbmQgZml4ZWQgYSBmZXcgdHlwb3MuCgoJKiBkbGxzL250ZGxsL250LmM6IEFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCUZpeCBidWZmZXIgbGVuZ3RoIGVycm9yIGNvZGUgZm9yIE50UXVlcnlJbmZvcm1hdGlvblRva2VuLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9udGRsbC90ZXN0cy9wYXRoLmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsCgkgIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgd2luZG93cy9kaWFsb2cuYywKCSAgd2luZG93cy9zcHkuYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy93aW5wb3MuYzoKCURhbmllbCBNYXJtaWVyIDxkLm1hcm1pZXJAYmx1ZXdpbi5jaD4KCUZpeGVkIHdhcm5pbmdzIHdpdGggZ2NjIG9wdGlvbiAiLVd3cml0ZS1zdHJpbmdzIi4KCgkqIHRvb2xzL3dyYy9kdW1wcmVzLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUdldCByaWQgb2YgdXNlbGVzcyBjb21tZW50IChlbXB0eSBmdW5jdGlvbiBoZWFkZXIpLgoKMjAwMy0xMC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL2NtZGxndHN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL25vdGVwYWQvTmwucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vUHQucmMsIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3ZpZXcvRW4ucmMsIHByb2dyYW1zL3ZpZXcvRXMucmMsIHByb2dyYW1zL3ZpZXcvRnIucmMsCgkgIHByb2dyYW1zL3ZpZXcvSXQucmMsIHByb2dyYW1zL3ZpZXcvUHQucmMsIHByb2dyYW1zL3ZpZXcvUnUucmMsCgkgIHByb2dyYW1zL3ZpZXcvU2kucmMsIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2NtZC9Fbi5yYywKCSAgcHJvZ3JhbXMvd2NtZC9Gci5yYywgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9QdC5yYywKCSAgcHJvZ3JhbXMvd2NtZC9SdS5yYywgcHJvZ3JhbXMvd2NtZC9TaS5yYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVmaWxlL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yZXNvdXJjZS5yYywgcHJvZ3JhbXMvd2luZW1pbmUvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmM6CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJQ29udmVydCByZXNvdXJjZXMgdG8gc3RhbmRhcmQgZm9ybWF0IHdpdGhvdXQgZW1iZWRkZWQgYmluYXJ5IGRhdGEuCglGaXhlcyB0byBiZSBjb21wYXRpYmxlIHdpdGggd2luZHJlcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJSW1wcm92ZWQgZ2VuZXJhdGlvbiBvZiBmb250IHNpZ25hdHVyZSBmcm9tIGZyZWV0eXBlIGZhY2UgY2hhcm1hcHMuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvZW52LmMsIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmMsCgkgIGRsbHMvbnRkbGwvdmVyc2lvbi5jLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2RyaXZlLmgsIGluY2x1ZGUvZmlsZS5oLAoJICBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJQ29udmVydGVkIHByb2Nlc3MgY3JlYXRpb24gdG8gVW5pY29kZS4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJRmFjZSBmYW1pbGllcyBhcmUgaW4gdGhlIHRvcCA0IGJpdHMgb2YgbGZQaXRjaEFuZEZhbWlseSwgc28gbWFzayB3aXRoCgkweEYwIGJlZm9yZSB0ZXN0aW5nLgoKCSogZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfYmluLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9iaXRtYXBzLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9jdXJzb3JzLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9pY29ucy5yYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNZXJnZSBhbGwgYmluYXJ5IHJlc291cmNlcyBmb3IgdXNlcjMyIGluIG9uZSBmaWxlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdXh0aGVtZS8uY3ZzaWdub3JlLAoJICBkbGxzL3V4dGhlbWUvTWFrZWZpbGUuaW4sIGRsbHMvdXh0aGVtZS9tYWluLmMsCgkgIGRsbHMvdXh0aGVtZS91eHRoZW1lLnNwZWMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvdXh0aGVtZS5oOgoJS2V2aW4gS29sdHphdSA8a2V2aW5AcGxvcC5vcmc+CglJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIHV4dGhlbWUuZGxsLCBtb3N0bHkgc3R1YmJlZCBvdXQgZm9yIG5vdy4KCgkqIGRsbHMvbnRkbGwvZW52LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJSW1wbGVtZW50ZWQgUnRsQ3JlYXRlUHJvY2Vzc1BhcmFtZXRlcnMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmM6CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJVXNlIGEgYmV0dGVyIGljb24uICBDb21tZW50IG91dCB0aGUgYmluYXJ5IHJlc291cmNlLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9Fbi5yYywgcHJvZ3JhbXMvcHJvZ21hbi9ObC5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglEdXRjaCB0cmFuc2xhdGlvbiBvZiBwcm9nbWFuLgoJQ29ycmVjdCB0eXBvIGluIEVuZ2xpc2ggcmVzb3VyY2VzLgoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmM6CglEYXZlIEJlbGFuZ2VyIDxkYXZlLmJlbGFuZ2VyQGNpbW1ldHJ5LmNvbT4KCUltcGxlbWVudGVkIHRoZSBTZXRBcmNEaXJlY3Rpb24gbWV0YXJlY29yZCBpbiBFTUYgZHJpdmVyLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJRG9uJ3QgcGFzcyB1bnVzZWQgcG9pbnRlcnMgdG8gUmVnQ3JlYXRlS2V5RXgoKSAtIHRoaXMgcHJldmVudHMgc2NvcmUKCXNhdmluZyBvbiBXaW5kb3dzIDIwMDAuCgoJKiBkbGxzL250ZGxsL3BhdGguYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIFJ0bEdldEZ1bGxQYXRoTmFtZV9VLgoKCSogcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglTZXQgd2luX3N0eWxlIG9mIHRoZSBtYWluIHdpbmRvdyB0byBXU19PVkVSTEFQUEVEV0lORE9XLgoKCSogZGxscy9rZXJuZWwvZG9zbWVtLmMsIGRsbHMvd2luZWRvcy9pbnQxOS5jLCBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVib290IChpbnQxOSkgdW5kZXIgRE9TIG5vdyBkb2VzIEV4aXRQcm9jZXNzLgoJTWFkZSBCSU9TIHJlYm9vdCB2ZWN0b3IgY2FsbCBpbnQxOS4KCgkqIGRsbHMvbnRkbGwvcmVsYXkuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNOT09QX1Nob3dEZWJ1Z21zZ1Nub29wKCk6IGNoZWNrIGZvciBOVUxMIGZ1bmN0aW9uIG5hbWUuCgoJKiBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfcHJpdmF0ZS5oLCBkbGxzL2F2aWZpbDMyL2VkaXRzdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEZpcnN0IHBhcnQgb2YgYSBuZXcgSUFWSUVkaXRTdHJlYW0gaW1wbGVtZW50YXRpb24uCgktIEZpeGVkL0FkZGVkIHNvbWUgcGFyYW1ldGVyIGNoZWNraW5nLgoJLSBGaXhlZCBidWcgaW4gRWRpdFN0cmVhbVNldEluZm9XLgoJLSBGaXhlZCBidWcgaW4gYXZpZmlsMzIuc3BlYyAoc3RyIGluc3RlYWQgb2Ygd3N0cikuCgktIEZpeGVkIGNvc21ldGljIGJ1ZyBpbiBJQVZJU3RyZWFtSW1wbF9mblJlbGVhc2UuCgktIEZpeGVkIHR5cG8uCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuaCwgZGxscy9jb21tZGxnL3ByaW50ZGxnMTYuYywKCSAgZGxscy9udGRsbC90ZXN0cy9lcnJvci5jLCBkbGxzL250ZGxsL3Rlc3RzL2xhcmdlX2ludC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jLCBkbGxzL250ZGxsL3Rlc3RzL3N0cmluZy5jLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuaCwgZGxscy93aW5tbS9tY2lhdmkvd25kLmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUZpeGVkIHdhcm5pbmdzIHdpdGggZ2NjIG9wdGlvbiAiLVd3cml0ZS1zdHJpbmdzIi4KCjIwMDMtMTAtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvcnNyYy5yYywgZGxscy9jb21tZGxnLy5jdnNpZ25vcmUsCgkgIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsCgkgIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi9vbGUzMnJlcy5yYywgZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NocmVzLnJjLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9yZXNvdXJjZXMvLmN2c2lnbm9yZSwKCSAgZGxscy91c2VyL3Jlc291cmNlcy9kaXNwbGF5LnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9iaXRtYXBzLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9jdXJzb3JzLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9pY29ucy5yYywgcHJvZ3JhbXMvcmVnZWRpdC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglFeHRyYWN0IGJpbmFyeSByZXNvdXJjZXMgdG8gZmlsZXMsIHRvIGZpdCB0aGUgc3RhbmRhcmQuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IEF2b2lkIGNsb3NpbmcgdGhlIGNkcm9tIGlmIHdlIGZhaWxlZCB0byBvcGVuIGl0LgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNoZWNrIGZvciBhZHZlcnRpemVkIHZlcnRleCBibGVuZCBzdXBwb3J0IGJlZm9yZSBxdWVyeWluZyBkZXZpY2UKCWNhcGFiaWxpdGllcywgd2hpY2ggc2lsZW5jZXMgaXNzdWVzIGFib3V0IHZlcnRleCBibGVuZGluZy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVRlc3RzIGZvciByZWNlbnQgdmFyaWFudCBjaGFuZ2VzLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJQWRkIHN1cHBvcnQgZm9yIFNDU0kgQ0QtUk9NcyB0byBDRFJPTV9HZXRJbnRlcmZhY2VJbmZvKCkuCglGaXggZGV2aWNlIG51bWJlciBmb3IgSURFIENELVJPTXMuICBSZXR1cm4gMCBmb3IgdW5zdXBwb3J0ZWQgZHJpdmVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJQWRkZWQgY2hlY2sgZm9yIHNjc2kvc2NzaV9pb2N0bC5oLgoKCSogZGxscy9tc2kvbXNpLnNwZWM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIG1zaSBzcGVjIGZpbGUuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJQSBjb3VwbGUgb2YgbmV3IGZ1bmN0aW9ucyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIHB0aHJlYWRfZnVuY3Rpb25zCglzdHJ1Y3R1cmUuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCVdlIG9ubHkgbmVlZCB0byBjaGVjayBmb3Igc2FtZSBwcm9jZXNzIHNpYmxpbmdzIGluIGRlc2t0b3AgbW9kZSBmb3IKCXRvcC1sZXZlbCB3aW5kb3dzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBWYXJQYXJzZU51bUZyb21TdHIoKS9WYXJOdW1Gcm9tUGFyc2VOdW0oKSwgdXNlIHRoZW0gZm9yCgljb252ZXJzaW9ucy4KCVZhcmlhbnRJbml0KCk6IE9ubHkgdG91Y2ggVl9WVCBmaWVsZC4KCVZhcmlhbnRDbGVhcigpOiBTdXBwb3J0IElSZWNvcmRJbmZvLCBkb24ndCBmcmVlIG51bGwgYnN0cnMuCglBZGQgc3VwcG9ydCBmb3IgdXBjb21pbmcgdnR5cGVzLCByZW1vdmUgZGVhZCBjb2RlLCBkb2NzLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNaW5vciBmaXhlcyAtIFJlbW92ZSBsaWdodCBkZWJ1ZyBzdGF0ZW1lbnRzLCBoYW5kbGUgZGlzYWJsZWQgc3BlY3VsYXIKCW1hdGVyaWFsIHByb3Blcmx5LCByZWxlYXNlIHN1cmZhY2VzIHdoZW4gZGVidWdnaW5nIGFuZCBjbGVhbiB1cCB0cmFjZQoJYSBsaXR0bGUuCgoJKiBsaWJzL3dpbmUvZGVidWcuYywgdG9vbHMvZm50MmJkZi5jLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCURhbmllbCBNYXJtaWVyIDxkLm1hcm1pZXJAYmx1ZXdpbi5jaD4KCUZpeGVkIHdhcm5pbmdzIHdpdGggZ2NjIG9wdGlvbiAiLVd3cml0ZS1zdHJpbmdzIi4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdTZXQuc2g6IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglUaGlzIGlzIGFjdHVhbGx5IGEgL2Jpbi9zaCBzY3JpcHQsIC9iaW4vYmFzaCBpcyBub3QgbmVlZGVkLgoJQ2hlY2sgd2hldGhlciB0aGUgdHdvIGlucHV0IGZpbGVzIGV4aXN0cyBpbnN0ZWFkIG9mIGFzc3VtaW5nIHRoZXkgZG8uCgoJKiB0b29scy9iaW4ycmVzLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYWtlIGJpbjJyZXMgc2lsZW50IGJ5IGRlZmF1bHQuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdG1zY2hlbWEuaCwKCSAgaW5jbHVkZS93aW51c2VyLmg6CglLZXZpbiBLb2x0emF1IDxrZXZpbkBwbG9wLm9yZz4KCUFkZGVkIHRtc2NoZW1hLmggYW5kIHNvbWUgb3RoZXIgdGhlbWUgZGVmaW5lcy4KCgkqIGZpbGVzL2ZpbGUuYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUltcGxlbWVudGVkIEdldENvbXByZXNzZWRGaWxlU2l6ZVtBV10uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglBZGRlZCBjaGVjayBmb3Igc3RfYmxvY2tzIGluIHN0cnVjdCBzdGF0LgoKMjAwMy0xMC0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9sb2FkZXIuYywgZmlsZXMvZGlyZWN0b3J5LmMsCgkgIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvbW9kdWxlLmM6CglDaGFuZ2VkIExkckxvYWREbGwgdG8gb25seSBzZWFyY2ggZm9yIHRoZSBkbGwgaW4gdGhlIHNwZWNpZmllZCBwYXRoLAoJdXNpbmcgbnRkbGwgZnVuY3Rpb25zLgoJTW92ZWQgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEggZnVuY3Rpb25hbGl0eSB0byBMb2FkTGlicmFyeUV4Cgl3aGVyZSBpdCBiZWxvbmdzLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglJbiBkZXNrdG9wIG1vZGUsIG9ubHkgbW92ZSB0aGUgd2luZG93IGluIFotb3JkZXIgcmVsYXRpdmUgdG8gc2libGluZ3MKCWJlbG9uZ2luZyB0byB0aGUgc2FtZSBwcm9jZXNzLgoKCSogZmlsZXMvZHJpdmUuYzoKCUhhY2sgdG8gdXBkYXRlIG50ZGxsIGN1cnJlbnQgZGlyZWN0b3J5IHZhbHVlIGluIERSSVZFX0NoZGlyLgoKCSogZGxscy9udGRsbC9wYXRoLmM6CglGaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIFJ0bERvc1NlYXJjaFBhdGhfVSBhbmQgUnRsR2V0RnVsbFBhdGhOYW1lX1UuCglNYWtlIFJ0bERvZXNGaWxlRXhpc3RzX1UgZG8gc29tZXRoaW5nIHVzZWZ1bCBieSBjYWxsaW5nIENyZWF0ZUZpbGVXCglmb3Igbm93LgoKCSogZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL21zZy5jLCBkb2N1bWVudGF0aW9uL2d1aToKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIHRoZSBtZXNzYWdlIHNlcXVlbmNlcyBkb2N1bWVudGVkIGluIGRvY3VtZW50YXRpb24vZ3VpIGludG8gYSB1bml0Cgl0ZXN0LgoKCSogZGxscy91c2VyL3Jlc291cmNlcy9UT0RPOiBEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGludGVsbGl3YXJlLmNhPgoJUmVtb3ZlZCBvYnNvbGV0ZSBUT0RPIGZpbGUuCgoJKiBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCVNIRE9DVldfMTE4IChTaGVsbERERUluaXQpIGlzIHJlYWxseSBhIGR5bmFtaWMgZm9yd2FyZCB0byBTSEVMTDMyXzE4OC4KCgkqIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLCBkbGxzL3NoZWxsMzIvdW5kb2NzaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglNb3ZlZCBkZWZpbml0aW9uIG9mIG5ld2x5IGRvY3VtZW50ZWQgQVBJIFNIUmVzdHJpY3RlZCgpIGFuZCB0aGUKCWFjY29yZGluZyBwb2xpY3kgZGVmaW5pdGlvbnMgdG8gc2hsb2JqLmguCglSZXBsYWNlIHRoZSBwb2xpY3kgbnVtZXJpYyB2YWx1ZXMgd2l0aCB0aGUgbmV3IG9mZmljaWFsIGRlZmluZXMgYW5kCgljaGFuZ2UgU0hSZXN0cmljdGVkKCkgdG8gbWF0Y2ggdGhlIG5ldyBkb2N1bWVudGVkIHByb3RvdHlwZS4KCgkqIGRsbHMvbnRkbGwvdGltZS5jLCB0b29scy93bWMvd3JpdGUuYzoKCUdlcmFsZCBQZmVpZmVyIDxnZXJhbGRAcGZlaWZlci5jb20+CglDYXN0IHRpbWVfdCBwYXJhbWV0ZXJzIHRvIGZwcmludGYoLi4uLCIlbCIsLi4uKSB0byBsb25nLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogU2FsbWVsYSA8OTcwMDU4NEBjcy5zdGFkaWEuZmk+CglVcGRhdGVkIEZpbm5pc2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjogR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCVJlbW92ZSBvYnNvbGV0ZSAic3RhdHVzIiBkaXJlY3RvcnkgZnJvbSBFWFRSQVNVQkRJUlMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL05sLnJjLCBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUFkZGVkIER1dGNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgYSBNRVNTQUdFIGFib3V0IGNyZWF0aW5nIGEgZGlyZWN0b3J5IHRvIGEgVFJBQ0UuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJSWdub3JlIHdpbmRvdyBjYXB0aW9uIGZyb20gUFJPUFNIRUVUSEVBREVSIGluIHdpemFyZHMuICBVcGRhdGUgd2luZG93CgljYXB0aW9uIHdoZW4gY2hhbmdpbmcgcGFnZXMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItbWZjLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi11c2VyLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGF1dGhvciBsaXN0IGFzIHdpdGggdGhlIG90aGVyIGd1aWRlcy4KCVNtYWxsIGNsZWFudXBzLgoKCSogZGxscy9vZGJjMzIvcHJveHlvZGJjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglUaWR5IHVwIHRoZSBub3RlcyBmb3IgdGhlIE9EQkMgZHJpdmVyLgoKCSogaW5jbHVkZS9tbWRkay5oOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMuCglNb3ZlZCBXaW5lIG9ubHkgZGVmaW5lcyB0byBub3QgY29uZmxpY3QuCgoyMDAzLTEwLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzOgoJR2VyYWxkIFBmZWlmZXIgPGdlcmFsZEBwZmVpZmVyLmNvbT4KCUNhc3QgdGltZV90IHRvIGxvbmcgZm9yIHByaW50aW5nLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2dkaS93aW5nLmMsIGRsbHMva2VybmVsL2F0b20uYywKCSAgZGxscy9udGRsbC9sYXJnZV9pbnQuYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBsb2FkZXIvbW9kdWxlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcxNi5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4IG1pc3NpbmcgbWVtIGZyZWVpbmcgb24gZXJyb3IgcGF0aC4KCgkqIHRvb2xzL2JpbjJyZXMuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVRlYWNoIGJpbjJyZXMgdG8gZGVhbCB3aXRoIG9uZSBmaWxlIGF0IGEgdGltZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xvY2FsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YnMgZm9yIEdldC9TZXRVc2VyR2VvSUQoKS4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9jbHNpZC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTmV3IHRlc3RzIGZvciBzaGx3YXBpIHN0cmluZyBhbmQgY2xzaWQgZnVuY3Rpb25zLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3VybC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBANDA1LzQwNiwgZG9jdW1lbnQgVVJMIGZ1bmN0aW9ucy4KCUZpeCBNTExvYWRMaWJyYXJ5VyBwcm90b3R5cGUuCgoJKiB0b29scy9jMm1hbi5wbDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUVuc3VyZSB3ZSBnZW5lcmF0ZSBmb3IgLW5vbmFtZSBvcmRpbmFscyBkb2N1bWVudGVkIGFzICdAJy4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgc29tZSB0cmFjZXMuCglGaXhlZCBzcGVjIGZpbGUgdG8gbWF0Y2ggTWljcm9zb2Z0IGRsbC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCU1ha2UgaXQgcG9zc2libGUgdG8gY2xvc2UgdGhlICJBYm91dCBXaW5lIiBkaWFsb2cgYnkgcHJlc3NpbmcgRXNjYXBlLgoKCSogcHJvZ3JhbXMvY2xvY2svTmwucmMsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L05sLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmM6CglIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUR1dGNoIHRyYW5zbGF0aW9uIG9mIGNsb2NrIGFuZCBjbWRsZ3RzdC4KCgkqIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYzogUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUNvcnJlY3RseSBzZXQgb3BlbmZpbGVuYW1lLmxTdHJ1Y3RTaXplIGJlZm9yZSBjYWxsaW5nCglHZXRPcGVuRmlsZU5hbWUoKS4KCjIwMDMtMDktMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvbnRkbGwvZW52LmMsCgkgIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9wc2FwaS9wc2FwaV9tYWluLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLAoJICBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jLAoJICBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglTdG9yZSBtb2R1bGUgbmFtZXMgaW4gVW5pY29kZSBpbiB0aGUgc2VydmVyLgoKCSogZGxscy9nZGkvYmlkaS5jLCBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuYywgZGxscy9rZXJuZWwvcHRocmVhZC5jLAoJICBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGluY2x1ZGUvcHNocGFjazEuaCwgaW5jbHVkZS9wc2hwYWNrMi5oLCBpbmNsdWRlL3BzaHBhY2s0LmgsCgkgIGluY2x1ZGUvcHNocGFjazguaCwgaW5jbHVkZS93aW5udC5oLCBzY2hlZHVsZXIvcHRocmVhZC5jLAoJICB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglEYW5pZWwgTWFybWllciA8ZC5tYXJtaWVyQGJsdWV3aW4uY2g+CglVc2UgI2lmZGVmIGluc3RlYWQgb2YgI2lmIGZvciBhbGwgZmVhdHVyZSB0ZXN0cy4KCUNoZWNrIHRoYXQgX01TQ19WRVIgaXMgZGVmaW5lZCBiZWZvcmUgdXNpbmcgaXQuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy94MTFkcnYvZGVza3RvcC5jLAoJICBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJLSBBZGQgbW9yZSBsb2dnaW5nIHRvIHJlc29sdXRpb24gY2hhbmdlcyBhbmQgcXVlcmllcy4KCS0gQWx3YXlzIGVudW1lcmF0ZSBhbmQgYWxsb3cgOCwgMTYsIGFuZCAzMi1iaXQgbW9kZXMuCgktIEFkZCBtb3JlIGRlZmF1bHQgY2hvaWNlcyB0byBXaW5lIGRlc2t0b3Agc2l6ZXMuCgktIFJlbmFtZWQgc29tZSB2YXJpYWJsZXMgdG8gbWFrZSB0aGluZ3MgZWFzaWVyIHRvIGZvbGxvdy4KCgkqIGRsbHMvb2xlc3ZyL29sZXN2ci5zcGVjLCBkbGxzL29sZXN2ci9vbGVzdnIzMi5zcGVjLAoJICBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUltcGxlbWVudCBzdHVicyBmb3IgT2xlUmVuYW1lU2VydmVyRG9jLCBPbGVSZXZlcnRTZXJ2ZXJEb2MgYW5kCglPbGVTYXZlZFNlcnZlckRvYyBhbmQgdGhlaXIgMTYtYml0IGVxdWl2YWxlbnRzLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglTbWFsbCBsaWdodGluZyBmaXguCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJldHVybiAyIGluIGNhc2Ugb2YgYSB1c2FnZSBlcnJvci4KCVVzZSAteiBpbnN0ZWFkIG9mIGNvbXBhcmluZyB0byBhbiBlbXB0eSBzdHJpbmcuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lY2ZnL2FwcGRlZmF1bHRzLmMsIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJTW92ZSBBcHBsaWNhdGlvbnMgdGFiIGJlZm9yZSBMaWJyYXJpZXMgdGFiLgoJSW1wcm92ZSByZXR1cm5faWZfZmFpbC4KCVBhcnRseSBpbXBsZW1lbnQgYXBwZGVmYXVsdHMgVUkuCglSZXBsYWNlIHVzYWdlIG9mIEVuYWJsZVdpbmRvdyB3aXRoIGNsZWFyZXIgZW5hYmxlL2Rpc2FibGUgbWFjcm9zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglFeHRyYWN0IGxvY2FsaXNhYmxlIHJlc291cmNlcyBmcm9tIHNocmVzLnJjIHRvIHByb3BlciBsYW5ndWFnZSBmaWxlLgoKCSogZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9vbGUxNi5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeGVzIGZvciBtZW1vcnkgbGVha3Mgb24gZXJyb3IgcGF0aC4KCU9uZSBmaXggZm9yIHVzZSBvZiBwcmV2aW91cyByZWxlYXNlZCBwb2ludGVyLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaXggbWVtb3J5IGxlYWtzIG9uIGVycm9yIHBhdGguCgoJKiBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MDkuYywgZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy9pbnQxNi5jLAoJICBkbGxzL3dpbmVkb3MvaW50MWEuYywgZGxscy93aW5lZG9zL3RpbWVyLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglVc2UgY29ycmVjdCBsaW5lYXIgcG9pbnRlciB3aGVuIGFjY2Vzc2luZyBCSU9TIGRhdGEgYXJlYS4KCgkqIGRsbHMva2VybmVsL3ZlcnNpb24ucmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglTZXQgdmVyc2lvbiBvZiBrZXJuZWwzMiB0byBXaW5kb3dzIDIwMDAgU1A0LgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJTWF4QWN0aXZlTGlnaHRzIG1lYW5zIG51bWJlciBvZiBjb25jdXJyZW50IGxpZ2h0cywgYnV0IGFueSBudW1iZXIgY2FuCgliZSAgc2V0IHVwLiBDaGFuZ2Ugc3VwcG9ydCBmb3IgbGlnaHRzIGludG8gYSBsaW5rZWQgbGlzdCBhbmQgb25seSBzZXQKCXVwIGFuIGVxdWl2YWxlbnQgZ2wgbGlnaHQgd2hlbiB0aGUgbGlnaHQgaXMgZW5hYmxlZC4KCgkqIGRsbHMvZDNkOC9zdXJmYWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYWtlIHVubG9jayBvZiB0aGUgYmFja2J1ZmZlciBjb3JyZWN0bHkgcmVzdG9yZSB0aGUgY29udGVudHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZGVkIElzTEZORHJpdmVBL1cvQVcgZXhwb3J0cyBhbmQgdHdvIG1vcmUgc3R1YnMuCgoyMDAzLTA5LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgZGxscy9udGRsbC9yZWxheS5jLCBmaWxlcy9kaXJlY3RvcnkuYywgaW5jbHVkZS9maWxlLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCUNvbnZlcnRlZCBtb3N0IG9mIHRoZSBsb2FkZXIgY29kZSB0byBVbmljb2RlLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglUcnkgdG8gY2F0Y2ggdGhlIGNhc2Ugb2YgYSBub24td3JpdGFibGUgc291cmNlIGRpcmVjdG9yeSBiZWZvcmUKCXJ1bm5pbmcgY29uZmlndXJlLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OgoJRml4ZWQgaGFuZGxpbmcgb2YgVW5pY29kZSBzdHJpbmdzIHVzZWQgYXMgZmlsZW5hbWVzIChyZXBvcnRzIGJ5IE1hcnRpbgoJRnVjaHMpLgoKCSogZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvaW1tMzIvaW1tLmMsCgkgIGRsbHMva2VybmVsL2xjZm9ybWF0LmMsIGRsbHMva2VybmVsL3Rlc3RzL2NvbW0uYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLAoJICBkb2N1bWVudGF0aW9uL1JFQURNRS5pdCwgZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTb21lIHNwZWxsaW5nIGZpeGVzLgoJRml4IHRoZSBjYXNlIG9mIFdpbmVIUS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VuLnJjLCBkbGxzL3dpbm1tL3dpbm1tX0VuLnJjOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ2hhbmdlIHNvbWUgcmVzb3VyY2VzIGZyb20gTEFOR19ORVVUUkFMIHRvIExBTkdfRU5HTElTSC4KCgkqIHRvb2xzL2MybWFuLnBsLCB0b29scy93aW5hcGkvd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSB3aW5hcGkgYW5kIGMybWFuIHNvIHRoZXkga25vdyBhYm91dCAtcmV0MTYuIFJlbW92ZSBzdXBwb3J0IGZvcgoJdGhlIG9ic29sZXRlIHBhc2NhbDE2IGFuZCAtbm9pbXBvcnQuCglVcGRhdGUgbW9kdWxlcy5kYXQgc28gd2luYXBpIGtub3dzIGFib3V0IHRoZSBuZXcgZGxscy4KCgkqIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYjogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgb2Jzb2xldGUgV2luZWxpYiBIT1dUTyBhbmQgRERFIHN0YXR1cy4KCgkqIGRsbHMvbXNhY20vbXNhY20ucmMsIGRsbHMvbXNhY20vbXNhY21fRW4ucmMsIGRsbHMvbXNhY20vbXNhY21fRnIucmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglFeHRyYWN0IGxvY2FsaXNhYmxlIHJlc291cmNlcyBmcm9tIG1zYWNtIHJlc291cmNlIGZpbGUuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9Fbi5yYywgcHJvZ3JhbXMvd2luZW1pbmUvRXMucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL0ZyLnJjLCBwcm9ncmFtcy93aW5lbWluZS9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZW1pbmUvU2kucmM6CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJV2lkZW4gdGhlICJBYm91dCIgZGlhbG9nIHRvIHByZXZlbnQgd3JhcHBpbmcgb2YgdGV4dC4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL2RpYWxvZy5jLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmM6CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJRml4IHByb2Nlc3Npbmcgb2YgSURDQU5DRUwgY29tbWFuZC4KCURvbid0IGNoYW5nZSBzZXR0aW5ncyBpZiB0aGUgdXNlciBjYW5jZWxlZCB0aGUgIkN1c3RvbSIgZGlhbG9nLgoKCSogZGxscy9kM2Q5L3ZlcnNpb24ucmM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJU2V0IHZlcnNpb24gdG8gOS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsCgkgIGRsbHMvZHBsYXl4L2xvYmJ5c3AuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYzoKCVRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJUmVtb3ZlIG9ic29sZXRlIGluZm9ybWF0aW9uLgoKMjAwMy0wOS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGRsbHMvbnRkbGwvbG9hZG9yZGVyLmMsIGluY2x1ZGUvbW9kdWxlLmg6CglDb252ZXJ0ZWQgdGhlIGxvYWQgb3JkZXIgY29kZSB0byB1c2UgVW5pY29kZSB0aHJvdWdob3V0LgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaDogQWRkZWQgc3Ryc3BuVyBhbmQgc3RyY3NwblcuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IGEgcmV0dXJuIHZhbHVlIGluIFNIRmlsZU9wZXJhdGlvbiBhbmQgYWRkIHNvbWUgZXh0cmEgdGVzdHMgdG8KCWludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgbmVjZXNzYXJ5IHRvIGRlYWwgd2l0aCBzaG9ydGNvbWluZ3Mgb2YKCWtlcm5lbDMyIGZ1bmN0aW9ucyBmb3IgdGhlIHRpbWUgYmVpbmcuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2NsYXNzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgUmVhbEdldFdpbmRvd0NsYXNzLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJX3RlbXBuYW0gYW5kIF93dGVtcG5hbSBzaG91bGQgbm90IGNyZWF0ZSB0aGUgdGVtcCBmaWxlIChyZXBvcnRlZCBieQoJV2ltIFZhbmRlcmJhdXdoZWRlKS4KCgkqIHRvb2xzL3dpbmVkdW1wL25lLmM6CglBZGRlZCBkdW1waW5nIG9mIHRoZSByZXNpZGVudCBuYW1lIHRhYmxlIG9mIE5FIGZpbGVzLgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgcHJvZ3JhbXMvd2luZXZkbS93aW5ldmRtLmM6CglNYWtlIHN1cmUgYWxsIDE2LWJpdCBzeXN0ZW0gZHJpdmVycyBhcmUgbG9hZGVkIGZvciAxNi1iaXQgYXBwcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9jb21tLmRydi5zcGVjLCBkbGxzL2tlcm5lbC9jb21tLnNwZWMsCgkgIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9kaXNwbGF5LmRydi5zcGVjLCBkbGxzL3VzZXIvZGlzcGxheS5zcGVjLAoJICBkbGxzL3VzZXIva2V5Ym9hcmQuZHJ2LnNwZWMsIGRsbHMvdXNlci9rZXlib2FyZC5zcGVjLAoJICBkbGxzL3VzZXIvbW91c2UuZHJ2LnNwZWMsIGRsbHMvdXNlci9tb3VzZS5zcGVjOgoJUmVuYW1lZCBjb21tLmRsbCwgZGlzcGxheS5kbGwsIGtleWJvYXJkLmRsbCBhbmQgbW91c2UuZGxsIHRvIHVzZSB0aGUKCS5kcnYgZXh0ZW5zaW9uLgoKCSogZGxscy9zZXR1cGFwaS9xdWV1ZS5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCUR1ZSB0byBhIG1pc3BsYWNlZCAifSIgbWVtb3J5IHdhc24ndCBmcmVlZCBvbiB0aGUgZXJyb3IgcGF0aC4KCgkqIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywKCSAgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4IHNvbWUgbWVtb3J5IGxlYWtzIGZvdW5kIGJ5IHNtYXRjaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeCBib3RoIGEgd2FybmluZyBhbmQgc29tZSBuYXN0eSBjcmFzaGVzLi4uCgoJKiBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oLCBkbGxzL21zaS9tc2lxdWVyeS5jLAoJICBkbGxzL21zaS9zdW1pbmZvLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgcmVmZXJlbmNlcyB0byBIRUFQX3N0cmR1cEF0b1cuCgoJKiBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfcXVldWUuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNZXJnZSBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5IGludG8gdGhlIGNvZGUuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1lcmdlIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdGRyYXcgaW50byB0aGUgZGRyYXcgY29kZS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWVyZ2UgZG9jdW1lbnRhdGlvbi9zdGF0dXMvdmVyc2lvbiBpbnRvIHRoZSB2ZXJzaW9uIGNvZGUuCgoJKiBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1lcmdlIGRvY3VtZW50YXRpb24vc3RhdHVzL2x6ZXhwYW5kIGludG8gdGhlIGx6ZXhwYW5kIHNvdXJjZS4KCgkqIHByb2dyYW1zL3N0YXJ0L0VzLnJjLCBwcm9ncmFtcy9zdGFydC9yc3JjLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCUFkZGVkIFNwYW5pc2ggcmVzb3VyY2VzLgoKCSogZGxscy9kc291bmQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9kc291bmQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2NhcHR1cmUuYywgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmVtb3ZlIGNhcHR1cmUgdGVzdHMgZnJvbSBkc291bmQuYyBhbmQgcGxhY2UgdGhlbSBpbiBhIG5ldyBmaWxlCgljYXB0dXJlLmMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFsbG93IHdhdmUgZW11bGF0ZWQgY2FwdHVyZSB3aGlsZSBkb2luZyBoYXJkd2FyZSBhY2NlbGVyYXRlZAoJcGxheWJhY2suCgoJKiBpbmNsdWRlL21zaS5oLCBpbmNsdWRlL21zaXF1ZXJ5Lmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBBVyBkZWZpbmVzIHRvIG1zaS5oIGFuZCBtc2lxdWVyeS5oLgoKMjAwMy0wOS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVN0b3JlIHRoZSBkbGwgbmFtZSBmb3IgdGhlIGV4cG9ydCBkaXJlY3RvcnkgaW5zaWRlIHRoZSBleHBvcnRlZCBuYW1lcwoJbGlzdC4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUF2b2lkIGRlcGVuZGluZyBvbiBNT0RVTEVfR2V0QmluYXJ5VHlwZSBpbiBsb2FkX2xpYnJhcnlfYXNfZGF0YWZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsCgkgIGZpbGVzL2RpcmVjdG9yeS5jOgoJVGhlICJQYXRoIiB2YWx1ZSBvZiB0aGUgIkFwcCBQYXRocyIgZW50cnkgc2hvdWxkIGJlIGhhbmRsZWQgaW4KCVNoZWxsRXhlY3V0ZSBieSBjaGFuZ2luZyBQQVRIIGluIHRoZSBuZXcgcHJvY2VzcywgaW5zdGVhZCBvZiBiZWluZwoJZG9uZSBpbiBTZWFyY2hQYXRoLgoKCSogZGxscy9jb21tZGxnL2NvbW1kbGcuc3BlYywgZGxscy9jdGwzZC9jdGwzZC5zcGVjLAoJICBkbGxzL2N0bDNkL2N0bDNkdjIuc3BlYywgZGxscy9nZGkvZGlzcGRpYi5zcGVjLAoJICBkbGxzL2dkaS9nZGkuZXhlLnNwZWMsIGRsbHMvZ2RpL3dpbmcuc3BlYywKCSAgZGxscy9rZXJuZWwva3JubDM4Ni5leGUuc3BlYywgZGxscy9rZXJuZWwvc3lzdGVtLmRydi5zcGVjLAoJICBkbGxzL2tlcm5lbC90b29saGVscC5zcGVjLCBkbGxzL2tlcm5lbC93aW44N2VtLnNwZWMsCgkgIGRsbHMvbHpleHBhbmQvbHpleHBhbmQuc3BlYywgZGxscy9tc2FjbS9tc2FjbS5zcGVjLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlby5zcGVjLCBkbGxzL29sZTMyL2NvbXBvYmouc3BlYywKCSAgZGxscy9vbGUzMi9vbGUyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMm5scy5zcGVjLAoJICBkbGxzL29sZWNsaS9vbGVjbGkuc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsLnNwZWMsIGRsbHMvdXNlci9kZGVtbC5zcGVjLAoJICBkbGxzL3VzZXIvZGlzcGxheS5zcGVjLCBkbGxzL3VzZXIva2V5Ym9hcmQuc3BlYywKCSAgZGxscy91c2VyL21vdXNlLnNwZWMsIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLAoJICBkbGxzL3dpbjMycy93MzJzeXMuc3BlYywgZGxscy93aW4zMnMvd2luMzJzMTYuc3BlYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkuc3BlYywgZGxscy93aW5lcHMvd2luZXBzMTYuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYywgZGxscy93aW5tbS9zb3VuZC5zcGVjLAoJICBkbGxzL3dpbm5scy93aW5ubHMuc3BlYywgZGxscy93aW5zb2NrL3dpbnNvY2suc3BlYywKCSAgZGxscy93aW50YWIzMi93aW50YWIuc3BlYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIG9ic29sZXRlIHBhc2NhbDE2IChyZXBsYWNlZCBieSBwYXNjYWwgLXJldDE2KS4KCgkqIGRsbHMveDExZHJ2L2Rlc2t0b3AuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeGVkIG1pc3Npbmcgd2luZV90c3gxMV91bmxvY2soKSBvbiBlcnJvciBwYXRoLgoKMjAwMy0wOS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGluY2x1ZGUvbW9kdWxlLmg6CglNb3ZlZCBXSU5FX01PRFJFRiBkZWZpbml0aW9uIHRvIGxvYWRlci5jLgoJUmVtb3ZlZCBzaG9ydCBtb2R1bGUgbmFtZSBmcm9tIFdJTkVfTU9EUkVGLCBXaW5kb3dzIGRvZXNuJ3QgaGF2ZSBpdC4KCVJld3JvdGUgTGRyR2V0RGxsSGFuZGxlIHRvIG9ubHkgdXNlIFVuaWNvZGUuCgoJKiBkbGxzL3F1YXJ0ei9maWxlc291cmNlLmMsIGRsbHMvcXVhcnR6L3Bpbi5jLCBkbGxzL3F1YXJ0ei9waW4uaCwKCSAgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEEgZmV3IGNvc21ldGljIGZpeGVzLgoJLSBWYXJpb3VzIGJ1ZyBmaXhlcy4KCS0gQWRkIHNvbWUgT3V0cHV0UGluIGhlbHBlcnMuCgktIEFkZCBhIG5ldyB0eXBlIG9mIHBpbiwgUHVsbFBpbi4KCgkqIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWRldmVsLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS50ZXhpbmZvOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1lcmdlIHRoZSBub24tb2Jzb2xldGUgYml0cyBmcm9tIHdpbmUudGV4aW5mbyBpbnRvIHRoZSBXaW5lIERldmVsb3BlcnMKCUd1aWRlLgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvRW4ucmMsIHByb2dyYW1zL2NtZGxndHN0L0ZyLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9JdC5yYywgcHJvZ3JhbXMvY21kbGd0c3QvUHQucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L1J1LnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9TaS5yYzoKCVBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglGaXggY2hlY2tib3hlcyBpbiB0aGUgIkNvbG9yIGRpYWxvZyBmbGFncyIgZGlhbG9ncy4gIFRoZXkgd291bGQgbm90CgljaGFuZ2Ugc3RhdGUuCgoJKiBkbGxzL3NlcmlhbHVpL0VzLnJjLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpX3JjLnJjLAoJICBkbGxzL3NldHVwYXBpL0VzLnJjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCUFkZGVkIFNwYW5pc2ggcmVzb3VyY2VzLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL3Byb2Nlc3MuYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9sb2Fkb3JkZXIuYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvbW9kdWxlLmgsCgkgIGxvYWRlci9sb2Fkb3JkZXIuYywgbWlzYy9vcHRpb25zLmMsIHRvb2xzL3J1bnRlc3Q6CglNb3ZlZCBsb2Fkb3JkZXIgc3VwcG9ydCB0byBkbGxzL250ZGxsLgoJUmVtb3ZlZCB0aGUgLS1kbGwgb3B0aW9uIGFuZCByZXBsYWNlZCBpdCBieSB0aGUgV0lORURMTE9WRVJSSURFUwoJZW52aXJvbm1lbnQgdmFyaWFibGUuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJSWdub3JlIF9fcHRocmVhZF9yd2xvY2tfdW5sb2NrIGNhbGwgaWYgdGhlIHB0aHJlYWQgZnVuY3Rpb25zIGFyZSBub3QKCWluaXRpYWxpemVkIHlldC4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYywgZGxscy9rZXJuZWwvdGVzdHMvY29uc29sZS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmMsCgkgIGRsbHMvbmV0YXBpMzIvdGVzdHMvYWNjZXNzLmMsIGRsbHMvbmV0YXBpMzIvdGVzdHMvd2tzdGEuYywKCSAgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYywgZGxscy9zaGx3YXBpL3Rlc3RzL2NsaXN0LmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmMsIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVmFyaW91cyB0ZXN0IGZpeGVzIGZvciBYUC9tc3ZjLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkIHNvbWUgY29tbWVudHMgdG8gZnVuY3Rpb25zIGFuZCBtaW5vciBmaXhlcy4KCUV4cG9ydCBhbHJlYWR5IGV4aXN0aW5nIChidXQgc3RpbGwgdW5kb2N1bWVudGVkKSBmdW5jdGlvbnMKCUlMQ3JlYXRlRnJvbVBhdGhBL1cuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaCwgZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB1bmlvbnMgaW5zdGVhZCBvZiBkZWZpbmVzIGluIGFzeW5jIHdvcmsgcmVxdWVzdHMuCgoJKiBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWw6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CgktICJ3aW5lLWN2c2RpcnMiIHNob3VsZCBiZSAiZnVsbC1jdnMiLgoJLSBSZW1vdmVkIHVubmVjZXNzYXJ5ICdjZCcuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUF2b2lkIGRpdmlkZSBieSB6ZXJvIGlmIHRoZSBzb3VuZCBkcml2ZXIgcmV0dXJucyAwIGZvciBzcGVlZC4KCgkqIGRsbHMvZDNkOC9zaGFkZXIuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCByZWFsIHN1cHBvcnQgZm9yIFZTMS4xLCBpZSBtYWtlIHRoZSByZWxhdGl2ZSBhZGRyZXNzaW5nIG1vZGUKCXdvcmsuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglUaGUgJ3cnIGNvbXBvbmVudCBpcyB1c2VkIG1vcmUgdGhhbiBqdXN0IGZvciB0aGUgdmVydGV4LCBzbyB3ZSBjYW5ub3QKCWRvIHRoZSBwcm9qZWN0aW9uIG1hcHBpbmcgb3Vyc2VsdmVzLiBBbHNvIHRpZHkgdXAgYSB0cmFjZXBvaW50LCBhbmQKCXByZWluaXRpYWxpemUgdGhlIHNoYWRlcnMgb3V0cHV0IGFzIHdpbmRvd3Mgc2VlbXMgdG8uCgoJKiBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmM6IFBhdmVsIFJvc2tpbiA8cHJvc2tpQGdudS5vcmc+CglDYWxsIEhlYXBBbGxvYygpIG9uIGVudHJpZXMgYmVmb3JlIEhlYXBSZUFsbG9jKCkgdG8gYXZvaWQgY3Jhc2ggb24KCVdpbmRvd3MgMjAwMC4KCgkqIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJRml4IHByb2Nlc3Npbmcgb2YgdGhlIGNvbW1hbmQgbGluZS4KCjIwMDMtMDktMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGxpYnMvTWFrZWxpYi5ydWxlcy5pbiwKCSAgbGlicy9wb3J0L01ha2VmaWxlLmluLCBsaWJzL3V1aWQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbjoKCU1vdmVkIERMTEZMQUdTIHRvIGEgc2VwYXJhdGUgdmFyaWFibGUgaW5zdGVhZCBvZiBpbmNsdWRpbmcgaXQgaW4KCURFRlMuCgoJKiBkbGxzL21zdmNydC9lbnZpcm9uLmM6CglSZXdyb3RlIGdldGVudiBhbmQgX3dnZXRlbnYgdG8gYXZvaWQgcmV0dXJuaW5nIGEgcG9pbnRlciB0byBhIGZyZWVkCgltZW1vcnkgYmxvY2suCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicy9wb3J0L3NwYXduLmM6CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBzcGF3bnZwKCkuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1vcmUgbG9jYWxlIHRlc3RzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbG9jYWxlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIExhbmd1YWdlR3JvdXAvR2VvSUQgZW51bWVyYXRpb24gZm5zLgoJQWRkIHNvbWUgcmVnIGVudHJpZXMgZnJvbSBYUC4KCVNldExvY2FsZUluZm8oKTogU2V0IDIgSS12YWx1ZXMgZnJvbSBTLXZhbHVlcy4KCU9wdGltaXNlIGNvZGUgc2l6ZSwgZml4IGEgZmV3IGJ1Z3MsIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL21zdmNydC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21zdmNydC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnQvdGVzdHMvY3BwLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgdGVzdHMgZm9yIGNwcCBvYmplY3RzL1JUVEkuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkbGxzL2tlcm5lbC92ZXJzaW9uLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGRsbHMvbnRkbGwvdmVyc2lvbi5jLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgbWlzYy92ZXJzaW9uLmM6CglNb3ZlZCB0aGUgV2luZG93cyB2ZXJzaW9uIGNvZGUgdG8gZGxscy9udGRsbCwgYW5kIGltcGxlbWVudGVkCglSdGxHZXRWZXJzaW9uIGFuZCBSdGxWZXJpZnlWZXJzaW9uSW5mby4KCU1vdmVkIHRoZSAxNi1iaXQgYW5kIERPUyB2ZXJzaW9uIHN1cHBvcnQgdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvc2hsd2FwaS9jbGlzdC5jLCBkbGxzL3NobHdhcGkvaXN0cmVhbS5jLAoJICBkbGxzL3NobHdhcGkvd3NwcmludGYuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnQgQlNUUiBmdW5jdGlvbnMsIGFkZCBTZXRPQU5vQ2FjaGUoKS4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTVNWQyB3YXJuaW5nIGZpeC4KCgkqIGxpYnMvcG9ydC9ta3N0ZW1wcy5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUG9ydGFiaWxpdHkgZml4LgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWZhcS5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtdXNlci5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItdXNlci5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNtYWxsIGNsZWFudXBzLCByZW1vdmUgcmVmZXJlbmNlcyB0byBhdXRob3JzLmVudC4KCjIwMDMtMDktMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9wdGhyZWFkLmMsIGluY2x1ZGUvd2luZS9wdGhyZWFkLmgsIHNjaGVkdWxlci9wdGhyZWFkLmM6CglKdXJhaiBIZXJjZWsgPGp1cmFqQHN5bmNhZC5jb20+CglFcmljIEZyaWFzIDxlZnJpYXNAc3luY2FkLmNvbT4KCUltcGxlbWVudGVkIHB0aHJlYWQgY29uZGl0aW9ucy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBKdXJhaiBIZXJjZWsgPGp1cmFqQHN5bmNhZC5jb20+CglBZGRlZCBTU19FTkRFTExJUFNJUy4KCgkqIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLCBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS11c2VyLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSBhdXRob3JzIHRvIHRoZSB3aW5lLXVzZXIuc2dtbC4KCVJlbW92ZSB1bnVzZWQgZmlsZXMuCgoJKiBsaWJzL3BvcnQvcHJlYWQuYywgbGlicy9wb3J0L3B3cml0ZS5jLCBsaWJzL3dwcC9wcmVwcm9jLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jLCBwcm9ncmFtcy93aW5lZGJnL2V4dF9kZWJ1Z2dlci5jLAoJICBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsIHByb2dyYW1zL3dpbmVkYmcvbXNjLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvc291cmNlLmMsIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy90eXBlcy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU5vdCBldmVyeW9uZSBoYXMgPHVuaXN0ZC5oPiwgc29tZSBmaWxlcyBuZWVkIDxpby5oPiB0b28gKG1zdmMpLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkIHNvbWUgbmVlZGVkIGNvbmZpZy5oIGVudHJpZXMuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvd2NzLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQSBmaXJzdCBzdGFiIGF0IHdjc3RvZCgpLgoKCSogaW5jbHVkZS9zaGx3YXBpLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBTdHJGb3JtYXRLQlNpemVBL1cuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEZlbGl4IE5hd290aG5pZyA8ZmxleG9AYXJhcmEuZGU+CglBZGRlZCBkZWZpbml0aW9ucyBmb3IgTGlzdFZpZXdfR2V0Q29sdW1uV2lkdGgsIExpc3RWaWV3X1NldENvbHVtbldpZHRoCglhbmQgTGlzdFZpZXdfUmVkcmF3SXRlbXMuCgoJKiB3aW5kb3dzL21kaS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggTURJU2V0TWVudSBpbiB0aGUgY2FzZSBpdCBpcyBjYWxsZWQgYmVmb3JlIGEgV2luZG93cyBNZW51IGV4aXN0cwoJYXMgQWdlbnQgbmV3c3JlYWRlciBkb2VzLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggbW9yZSB1bmljb2RlL21lbW9yeSBhbGxvY2F0aW9uIGVycm9ycy4KCjIwMDMtMDktMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLAoJICBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLAoJICBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywKCSAgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywKCSAgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbmFtZSBDT01DVEwzMl97QWxsb2MsUmVBbGxvYyxGcmVlfSB0byB7QWxsb2MsUmVBbGxvYyxGcmVlfS4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vYnVpbGQuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jdnMuc2dtbCwgZG9jdW1lbnRhdGlvbi90b29scy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgcmVkdW5kYW50IHNlY3Rpb25zIGZyb20gdGhlIGd1aWRlOgoJICB0b29sczogaXMgbm93IGluY2x1ZGVkIGluIHRoZSBuZXcgYmluMnJlcwoJICBidWlsZDogbW92ZWQgdG8gUEFDS0FHSU5HCgkgIGN2czogaXMgYXZhaWxhYmxlIGluIG1hbnkgb3RoZXIgcGxhY2VzLgoKCSogbXNkb3MvaW50MjEuYzogU21hbGwgY2xlYW51cC4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9Gci5yYywgZGxscy9hdmlmaWwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Gci5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfRnIucmMsCgkgIGRsbHMvc2VyaWFsdWkvRnIucmMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWlfcmMucmMsCgkgIGRsbHMvc2V0dXBhcGkvRnIucmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Gci5yYywKCSAgZGxscy93aW5lcHMvd3BzX0ZyLnJjLCBkbGxzL3dpbmluZXQvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfRnIucmMsIGRsbHMvd2lubW0vd2lubW1fRnIucmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglZZXQgYW5vdGhlciBiYXRjaCBvZiBGcmVuY2ggcmVzb3VyY2VzIHVwZGF0ZXMuCgoJKiBkbGxzL3dpbmluZXQvbmV0Y29ubmVjdGlvbi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggbG9naWMgcHJvYmxlbXMgd2l0aCBORVRDT05fY29ubmVjdGVkLgoKCSogZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWw6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUJpZyB1cGRhdGUgdG8gdGhlIGRlYnVnIGxvZ2dpbmcgc2VjdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSB0aGUgYXV0aG9ycyBvdXQgb2YgdGhlIHNlY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJUmVtb3ZlIE1hbmFnZWQgb3B0aW9uLiBBZGQgRFhHcmFiLCBEZXNrdG9wRG91YmxlQnVmZmVyLCBVc2VUYWtlRm9jdXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglWb2x1bWUgYW5kIFBhbiBkcml2ZXIgcmVxdWVzdHMgbmVlZCB0byByZXR1cm4gc3VjY2VzcyBldmVuIHRob3VnaCB0aGV5CglhcmUgbm90IGltcGxlbWVudGVkLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmM6CglNaWNoYWwgSmFudXN6IE1pcm9zbGF3IDxNLk1pcm9zbGF3QGVsa2EucHcuZWR1LnBsPgoJREVCVUdfY21wX3N5bTogbWljcm8gb3B0aW1pemF0aW9uL2NsZWFudXAuCgoJKiBwcm9ncmFtcy9zdGFydC9Gci5yYywgcHJvZ3JhbXMvc3RhcnQvcnNyYy5yYywgcHJvZ3JhbXMvd2NtZC9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRnIucmMsIHByb2dyYW1zL3dpbmVmaWxlL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lbWluZS9Gci5yYywgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9Gci5yYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFub3RoZXIgYmF0Y2ggb2YgRnJlbmNoIHJlc291cmNlcyB1cGRhdGVzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUFkZGVkIExWS0ZfKiBkZWZpbmVzLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBtZW1vcnkgbGVhay4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZSBlcnJvbmVvdXMgbWFsbG9jIHRvIEhlYXBBbGxvYy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBidW5jaCBvZiB1bmljb2RlL21lbW9yeSBhbGxvY2F0aW9uIGVycm9ycy4KCgkqIHRvb2xzL3dyYy9kdW1wcmVzLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeCBzdHJuY3B5V3RvQSB0byBhY3R1YWxseSBhY3QgYXMgYWR2ZXJ0aXNlZCAoYW5kIG5vdCBvdmVyZmxvdyB0aGUKCWlucHV0IGJ1ZmZlcikuCglTbWFsbCBjbGVhbnVwcyBvZiBpdCBhdCB0aGUgc2FtZSB0aW1lLgoKCSogZGxscy9hZHZhcGkzMi9jcnlwdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVByaW50IGZpeG1lcyBpZiB3ZSBkbyBub3QgZmluZCBhIGNyeXB0byBwcm92aWRlcnMgZm9yIGEgc3BlY2lmaWVkCgl0eXBlL25hbWUgYW5kIG90aGVyIGZhaWx1cmVzLgoKCSogZGxscy9kbWxvYWRlci9kbWxvYWRlcl9wcml2YXRlLmgsIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvbG9hZGVyc3RyZWFtLmM6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCVJld3JpdHRlbiBjYWNoZSBjb2RlIGFuZCBmaXhlZCBhIGJ1ZyB0aGF0IHdhcyBpbiBpdC4KCgkqIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIEdlcmFyZCdzIG5hbWUgdG8gdGhlIGF1dGhvciBsaXN0LgoKCSogZG9jdW1lbnRhdGlvbi9jb25zb2xlcy5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW51cCBmb3JtYXR0aW5nIGEgYml0LgoKCSogZG9jdW1lbnRhdGlvbi9wb3J0aW5nLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbnVwIHRoZSBpbnRyb2R1Y3Rpb24gYSBiaXQuCgoJKiBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWw6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIGEgbG90IG9mIG9ic29sZXRlIGluZm9ybWF0aW9uLCBtaXNjIGNsZWFudXBzLgoKCSogZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIEVyaWMncyBuYW1lIGluIHRoZSBhdXRob3IgbGlzdC4KCgkqIGRvY3VtZW50YXRpb24vb3BlbmdsLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTbWFsbCBjbGVhbnVwcyBvZiB0aGUgT3BlbkdMIHNlY3Rpb24uCgoJKiBkb2N1bWVudGF0aW9uL29sZS5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVHJpdmlhbCBjbGVhbnVwcyB0byB0aGUgT0xFIHNlY3Rpb24uCgoJKiBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIG9ic29sZXRlIGluZm8gYWJvdXQgdGhlIHNlcnZpY2UgdGhyZWFkLgoJVXBkYXRlIHgxMSB3cmFwcGluZyBkZXNjcmlwdGlvbiwgbWlzYyBjbGVhbnVwcy4KCgkqIGRvY3VtZW50YXRpb24vaTE4bi5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmV3cml0ZSB0aGUgaTE4biBzZWN0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdWdsaWZ5aW5nIG5vdGVzLgoKCSogZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTbWFsbCBjbGVhbnVwcyBvbiBob3cgdG8gc2VuZCBpbiBwYXRjaGVzLgoKCSogZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbnVwIHRoZSBkb2N1bWVudGF0aW9uIHNlY3Rpb24uCglDb21tZW50IG91dCBzb21lIGVtcHR5IHNlY3Rpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW51cCB0aGUgZGVidWdnaW5nIHNlY3Rpb24uCgoJKiBkbGxzL3dpbmVkb3MvaW50MmYuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVNpbGVuY2UgdGhlIEZJWE1FIHByb2R1Y2VkIGJ5IGFuIGluc3RhbGwgY2hlY2sgb2YgTVZTT1VORC5TWVMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVNpbGVuY2UgdGhlIEZJWE1FJ3MgcHJvZHVjZWQgYnkgYSBjaGVjayBmb3IgYSBkb3MzMiBleHRlbmRlci4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXaGVuIGVudGVyaW5nIHByb3RlY3RlZCBtb2RlLCBWODYgZmxhZyBtdXN0IGJlIGNsZWFyLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSB3aW4zMiBjb25zb2xlJ3Mgd2luZG93IGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBjdXJzZXMnIHN0ZHNjcgoJLSBjb3JyZWN0bHkgbWFuYWdlIGJhY2tzcGFjZQoJLSB2YXJpb3VzIGNsZWFudXAKCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBpbml0aWFsaXplIHNlbmRfbWVzc2FnZV9pbmZvLmZsYWdzLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJT25seSBpZ25vcmUgY2VydGFpbiBrZXlib2FyZCBldmVudHMgaWYgYSBYTG9va3VwU3RyaW5nIHJldHVybmVkIGEKCXZhbHVlIChkZXRlY3RlZCBieSBWYWxncmluZCkuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggZXJyb3JzIGluIElFeHRyYWN0SWNvbiBkZXRlY3RlZCBieSB2YWxncmluZC4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVJlbW92aW5nIHRoZSBkaXJlY3RvcnkgaXMgYWxtb3N0IGFsd2F5cyB0aGUgd3Jvbmcgd2F5IHRvIHJlbW92ZSB3aW5lLgoKCSogdG9vbHMvd2luZWNoZWNrOiBNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUFkYXB0ZWQgd2luZWNoZWNrIHRvIHVzZSBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGUgc3ludGF4CgkoZXguICVIT01FJSkuCgoJKiBkbGxzL250ZGxsL3JlbGF5LmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRpbmcgZml4LgoKCSogdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRpbmcgZml4IGZvciBBbHBoYS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJV2hlbiBhbiBpdGVtIGlzIGFjdGl2YXRlZCwgd2Ugc2hvdWxkIHNlbmQgYSBOTUlURU1BQ1RJVkFURSBzdHJ1Y3QgYW5kCglub3QgYSBOTUhEUiBvbmUuCgoJKiBERVZFTE9QRVJTLUhJTlRTOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXBkYXRlIHRoZSBkaXJlY3RvcnkgbGlzdCwgdGlkeSBpdCB1cCBpbiB0aGUgcHJvY2Vzcy4KCUEgZmV3IGZpeGVzIGZvciBvYnNvbGV0ZSBmaWxlbmFtZXMgaW4gdGhlIGRlYnVnZ2luZyBoaW50cy4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglBZGQgc2NyZWVuIGRlcHRoIG9wdGlvbiBhbmQgcmVtb3ZlICJBbGxvY2F0ZWQgU3lzdGVtIENvbG9ycyIgc2V0dGluZy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglJbXBsZW1lbnRlZCBzb3VuZCBmbHVzaGluZy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzoKCU1pY2hhbCBKYW51c3ogTWlyb3NsYXcgPE0uTWlyb3NsYXdAZWxrYS5wdy5lZHUucGw+CglNTURSVl9JbnN0YWxsOiBGaXggY29uZnVzaW5nIGluZGVudGF0aW9uLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9ObC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjOgoJSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGRlZCBEdXRjaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3BpZGwuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkZWQgZGVjbGFyYXRpb25zIGZvciBuZXdseSBkb2N1bWVudGVkIFNIQ2hhbmdlTm90aWZ5IEFQSSBhbmQgZml4ZWQKCXNvbWUgcHJvdG90eXBlcy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IFJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRG9uJ3QgcmVkZWZpbmUgZGVjbHNwZWMgdW5kZXIgTVNWQy4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglfbnJyb2ZmdW5jczogQ2hlY2sgZm9yIGVycm9yIGJlZm9yZSBkZXJlZmVyZW5jaW5nIHJldHVybmVkIHBvaW50ZXIuCgoyMDAzLTA5LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6CglHZXQgcmlkIG9mIHJlbGF5MzIgZGlyZWN0b3J5LgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL3Nub29wMTYuYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcmVsYXkuYywKCSAgaW5jbHVkZS9zbm9vcC5oOgoJTW92ZWQgMzItYml0IHJlbGF5IGFuZCBzbm9vcCBzdXBwb3J0IHRvIGRsbHMvbnRkbGwuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbG9hZGVyLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Nub29wLmgsCgkgIGxvYWRlci9wZV9pbWFnZS5jOgoJTW92ZWQgdGhlIDMyLWJpdCBidWlsdGluIGxvYWRlciBhbmQgdGhlIHJlbWFpbmluZyBiaXRzIG9mIHRoZSBQRQoJbG9hZGVyIGludG8gZGxscy9udGRsbC9sb2FkZXIuYy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCURYVG4gZm9ybWF0IGhhcyBvZGQgbWlwbWFwIGxldmVscyBpbiB0aGF0IHRoZSBzcGFjZSBhbGxvY2F0ZWQgZm9yCglzbWFsbCBsZXZlbHMgbmVlZHMgYSBsb3Qgb2YgcGFkZGluZy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q4L3V0aWxzLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJR0wgZG9lc24ndCBsaWtlIGluY29ycmVjdCBsZW5ndGhzIHBhc3NlZCBpbnRvIERYVE4gcHJvY2Vzc2luZy4KCgkqIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jLCB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglIYW5kbGUgZGVmYXVsdCBsaW5rZXIgb3V0cHV0IG5hbWUgaW4gd2luZXdyYXAgaW5zdGVhZCBvZiB3aW5lZ2NjLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9yZXMxNi5jLAoJICB0b29scy93aW5lYnVpbGQvcmVzMzIuYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCUFkZCBwcmludGYgZm9ybWF0IGF0dHJpYnV0ZXMgJiBmaXggdGhlIHdhcm5pbmdzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvbWl4ZXIuYywKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCB2b2x1bWUgYW5kIHBhbiBzdXBwb3J0IHRvIHByaW1hcnkgYnVmZmVycy4KCUFkZGVkIG1vcmUgcHJvcGVydHkgc2V0IHN1cHBvcnQuCgoJKiBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQnVpbGQgdGhlIEhUTUwgZG9jdW1lbnRzIGFzIG9uZSBiaWcgZmlsZS4KCgkqIGRsbHMvZDNkOC9kcmF3cHJpbS5jLCBkbGxzL2QzZDgvdnNoYWRlcmRlY2xhcmF0aW9uLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJVmVydGV4IHNoYWRlciBvdXRwdXQgaXMgbGl0IGFuZCB0cmFuc2Zvcm1lZCwgc28gc3RvcCBHTCBkb2luZyBpdCBhbGwKCWFnYWluLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVNpbXBsZSBmaXggdG8gaGFuZGxlIHRoZSBtb3JlIGNvbW1vbiBjYXNlIG9mIGFjdHVhbGx5IGhhdmluZyBhIEdMCgljb250ZXh0IQoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvcHJvY2Vzcy5jLAoJICBpbmNsdWRlL3dpbm50Lmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIGtlcm5lbDMyLkdldElvUHJvY2Vzc0NvdW50ZXJzIGFuZCBzdHViYmVkCgludGRsbC5OdFF1ZXJ5UHJvY2Vzc0luZm9ybWF0aW9uKFByb2Nlc3NJb0NvdW50ZXJzKS4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglCeSBkZWZhdWx0LCBjb25zb2xlIGhhbmRsZXMgYXJlIGluaGVyaXRhYmxlLgoKMjAwMy0wOS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZXJ2ZXIuYywgaW5jbHVkZS93aW5lL3NlcnZlci5oLAoJICBtaXNjL3JlZ2lzdHJ5LmMsIHNjaGVkdWxlci9jbGllbnQuYzoKCU1vdmVkIHRoZSB3aW5lIHNlcnZlciBjbGllbnQtc2lkZSBzdXBwb3J0IHRvIGRsbHMvbnRkbGwuIFJlbW92ZWQgYQoJY291cGxlIG9mIHVubmVjZXNzYXJ5IGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBsb2FkZXIvdGFzay5jOgoJTW92ZWQgYSBjb3VwbGUgbW9yZSBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL2tlcm5lbC9zZWxlY3Rvci5jLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvZG9zbWVtLmMsIGRsbHMva2VybmVsL2dsb2JhbDE2LmMsIGRsbHMva2VybmVsL2hlYXAuYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywKCSAgbXNkb3MvZG9zbWVtLmM6CglNb3ZlZCAxNi1iaXQgZ2xvYmFsIGhlYXAsIERPUyBtZW1vcnkgYW5kIHNlbGVjdG9yIGZ1bmN0aW9ucyB0bwoJZGxscy9rZXJuZWwuCgoJKiBkbGxzL2tlcm5lbC9wcm9jZXNzLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJU2V0IGRlZmF1bHQgU3RkRXJyb3IgdG8gZmQgMiAod2FzIG9uIDEpLgoKCSogdG9vbHMvYmluMnJlcy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgcmV3cml0ZSBvZiBiaW4ycmVzLCBmb3IgYSBjbGVhbmVyIGNvZGViYXNlLgoJQWRkIG9ubGluZSBoZWxwIGRlc2NyaWJpbmcgaG93IHRoZSBwcm9ncmFtIHdvcmtzLgoJU2FuaXRpemUgY29tbWFuZCBsaW5lIG9wdGlvbnMuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJR2FicmllbGUgR2lvcmdldHRpIDxnYWJyaWVsZS5naW9yZ2V0dGlAdGVhbWZhYi5pdD4KCUZpeCBidWlsZCB3aXRoIG9sZCBsaWJjLgoKCSogZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOgoJUmVtb3ZlIHRoZSBGQVEgZnJvbSB0aGUgZG9jIHRhcmJhbGwsIGFuZCBidWlsZCBpdCBhcyBhIHNpbmdsZSAuaHRtbAoJZmlsZSAoYmFzZWQgb24gcGF0Y2ggYnkgRGltaXRyaWUgTy4gUGF1bikuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3N5c2xldmVsLmMsCgkgIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL3N5c2xldmVsLmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsCgkgIHNjaGVkdWxlci9zeXNsZXZlbC5jOgoJTW92ZWQgc3luY2hyb25pemF0aW9uIGFuZCBzeXNsZXZlbCByb3V0aW5lcyB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMva2VybmVsL25lX21vZHVsZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvbW9kdWxlLmgsCgkgIGxvYWRlci9tb2R1bGUuYzoKCUtlZXAgdGhlIGZpbGUgaGFuZGxlIG9mIDE2LWJpdCBtb2R1bGVzIG9wZW4gd2hpbGUgdGhlIG1vZHVsZSBpcwoJbG9hZGVkLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJlbW92ZSB0aGUgSW5zdGFsbFNoaWVsZCBoYWNrIGluCglPcGVuRmlsZTE2LgoJTW92ZWQgTG9hZExpYnJhcnkzMl8xNiB0byBrZXJuZWwuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLCBwcm9ncmFtcy93aW5lY2ZnL3gxMWRydmRsZy5jOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBJbXBsZW1lbnQgIm1hbmFnZWQgbW9kZSIgc2V0dGluZy4KCS0gTWFrZSBzeXN0ZW0gY29sb3JzIHNldHRpbmcgd29yay4KCS0gRGlzYWJsZSBER0Egc2V0dGluZywgYXMgZW5hYmxpbmcgaXQgYnJlYWtzIHdpbmUuCgoJKiB0b29scy93cmMvcGFyc2VyLnk6IEVyaWMgRnJpYXMgPGVmcmlhc0BzeW5jYWQuY29tPgoJRml4ZWQgY29tYm9ib3ggZmxhZ3MgaGFuZGxpbmcgdG8gYWxsb3cgQ0JTX0RST1BET1dOIHN0eWxlLgoKCSogZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkc6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgYmx1cmIgYWJvdXQgc29mdC9oYXJkIGRlcGVuZGVuY2llcyB0byB0aGUgUGFja2FnaW5nIEd1aWRlLCBiYXNlZAoJb24gYSBjb250cmlidXRpb24gYnkgU2hhY2hhciBTaGVtZXNoLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvdGFzay5jLCBtZW1vcnkvZW52aXJvbi5jOgoJTW92ZWQgdGhlIDE2LWJpdCBlbnZpcm9ubWVudCBzdXBwb3J0IHRvIGRsbHMva2VybmVsLgoKCSogZGxscy9rZXJuZWwvZmlsZTE2LmMsIGZpbGVzL2Rvc19mcy5jOgoJUmVpbXBsZW1lbnRlZCB0aGUgMTYtYml0IEZpbmRGaXJzdEZpbGUsIEZpbmROZXh0RmlsZSBhbmQgRmluZENsb3NlCglmdW5jdGlvbnMgb24gdG9wIG9mIHRoZWlyIDMyLWJpdCBjb3VudGVycGFydCwgYW5kIG1vdmVkIHRoZW0gdG8KCWRsbHMva2VybmVsLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW46CglMaW5rIG1zZG9zL2ludDIxLmMgaW50byBrZXJuZWwgZm9yIG5vdywgdW50aWwgaXQgaXMgcHJvcGVybHkgbW92ZWQgdG8KCXdpbmVkb3MuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdnhkLmM6CglNb3ZlZCBWeERDYWxsIHN1cHBvcnQgdG8gZGxscy9rZXJuZWwuCgoyMDAzLTA5LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvaW5zdHIuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsCgkgIGRsbHMvd2luZWRvcy9pb3BvcnRzLmMsIGRsbHMvd2luZWRvcy9wcGRldi5jLCBkbGxzL3dpbmVkb3MvdGltZXIuYywKCSAgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL21pc2NlbXUuaCwKCSAgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pb3BvcnRzLmMsIG1zZG9zL3BwZGV2LmM6CglNb3ZlZCBJL08gcG9ydCBoYW5kbGluZyB0byBkbGxzL3dpbmVkb3MuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglSZW5hbWVkIHRoZSBDT01DVEwzMl8qIGZ1bmN0aW9ucyB0byB1c2UgdGhlIGV4cG9ydGVkIG5hbWUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBBbGwgc2V0dGluZ3MgaW4gdGhlIGRyaXZlIGVkaXQgZGlhbG9nIGFyZSBub3cgaW5zdGFudCBhcHBseS4KCS0gUmVwbGFjZSBPSy9DYW5jZWwgYnV0dG9ucyBvbiB0aGUgcmlnaHQgd2l0aCBhIGNsb3NlIGJ1dHRvbiBvbiB0aGUKCSAgYm90dG9tLgoJLSBXYXJuIHRoZSB1c2VyIHdoZW4gYSBDIGRyaXZlIGlzIG5vdCBwcmVzZW50LgoJLSBBZGQgZHJpdmUgZnVuY3Rpb25hbGl0eSB3aWxsIG5vdyBhbHdheXMgY3JlYXRlIGEgQyBkcml2ZSBpZiBvbmUKCSAgaXNuJ3QgcHJlc2VudC4KCS0gTWlzYyBjcmFzaGVyIGZpeGVzLgoJLSBEcml2ZSBsaXN0IGJveCBub3cgcmVmbGVjdHMgZHJpdmVzIHRoYXQgdGFrZSB0aGVpciBkYXRhIGZyb20gYQoJICBkZXZpY2UgY29ycmVjdGx5LgoJLSBWYXJpb3VzIGNvZGUgY2xlYW51cHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1vcmUgdGVzdHMgZm9yIGtlcm5lbCBOTFMgZnVuY3Rpb25zLgoJVXNlIExPQ0FMRV9OT1VTRVJPVkVSUklERSB3aGVyZSBhcHByb3ByaWF0ZS4KCgkqIGRsbHMva2VybmVsL2xjZm9ybWF0LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZS1pbXBsZW1lbnQgYW5kIG9wdGltaXNlIHRoZSBOTFMgZm9ybWF0dGluZyBmdW5jdGlvbnMgKG1hbnkgZml4ZXMpLgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCUF2b2lkIGNyYXNoIGlmIGludmFsaWQgcmF0ZSB3YXMgc3BlY2lmaWVkLgoKCSogZGxscy9zZXR1cGFwaS9Fbi5yYywgZGxscy9zZXR1cGFwaS9SdS5yYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYzoKCUlnb3IgU3RlcGluIDxpc0Bpc3R1ZGlvLnJ1PgoJQWRkZWQgUnVzc2lhbiB0cmFuc2xhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHEsCgkgIGRvY3VtZW50YXRpb24vcHJpbnQuZHNsLCBkb2N1bWVudGF0aW9uL3dpbmVocS5kc2w6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJR2V0IHJpZCBvZiBubyBsb25nZXIgbmVlZGVkIGZpbGVzLgoKCSogcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUltcGxlbWVudGVkIG1vdXNlIHdoZWVsIHN1cHBvcnQuCgoJKiBkbGxzL2tlcm5lbC9pbnN0ci5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgaW5jbHVkZS9taXNjZW11Lmg6CglVc2UgV09XQ2FsbGJhY2sxNkV4IHRvIHN3aXRjaCB0byB2bTg2IG1vZGUgc28gdGhhdCB3ZSBjYW4gc2V0dXAgYQoJcHJvcGVyIGV4Y2VwdGlvbiBoYW5kbGVyIGFuZCBoYW5kbGUgaW5zdHJ1Y3Rpb24gZW11bGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLAoJICBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsCgkgIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywKCSAgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywKCSAgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGluY2x1ZGUvY29tbWN0cmwuaDoKCU1vdmVkIHVuZG9jdW1lbnRlZCBmdW5jdGlvbnMgb3V0IG9mIHRoZSBleHBvcnRlZCBjb21tY3RybC5oLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9taWRpLmM6IEF2b2lkIGxpbmtpbmcgZXJyb3Igd2l0aCBvbGRlciBhbHNhIGxpYnMuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfUnUucmMsIGRsbHMva2VybmVsL25scy9ydXMubmxzLAoJICBkbGxzL3dpbmluZXQvcnNyYy5yYywgZGxscy93aW5pbmV0L3dpbmluZXRfUnUucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L1J1LnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvUnUucmMsIHByb2dyYW1zL3JlZ2VkaXQvcnNyYy5yYywKCSAgcHJvZ3JhbXMvc3RhcnQvUnUucmMsIHByb2dyYW1zL3ZpZXcvUnUucmMsIHByb2dyYW1zL3ZpZXcvdmlld3JjLnJjLAoJICBwcm9ncmFtcy93Y21kL1J1LnJjLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYywgcHJvZ3JhbXMvd2luZWNmZy9SdS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjOgoJSWdvciBTdGVwaW4gPGlzQGlzdHVkaW8ucnU+CglBZGRlZCBhIGxvdCBvZiBSdXNzaWFuIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvc2VyaWFsdWkvRW4ucmMsIGRsbHMvc2VyaWFsdWkvUnUucmMsCgkgIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWlfcmMucmM6CglJZ29yIFN0ZXBpbiA8aXNAaXN0dWRpby5ydT4KCUFkZGVkIFJ1c3NpYW4gdHJhbnNsYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZWQgc3R1YiBmdW5jdGlvbnMgZm9yIGFkdmFwaTMyLkdldEV4cGxpY2l0RW50cmllc0Zyb21BY2xBL1coKS4KCgkqIGRsbHMvb3BlbmdsMzIvd2dsLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBtaXNzaW5nIExGIGluIHRyYWNlIG1lc3NhZ2UuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjOiBKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJVXBkYXRlZCBTcGFuaXNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2V4Y2VwdC5jLCBkbGxzL2tlcm5lbC9maWJlci5jLAoJICBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3RocmVhZC5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBsaWJzL3dpbmUvbG9hZGVyLmMsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL2ZpYmVyLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCU1vdmVkIGFsbW9zdCBhbGwgcmVtYWluaW5nIHByb2Nlc3MsIHRocmVhZCwgZmliZXIgYW5kIGV4Y2VwdGlvbgoJZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2luc3RyLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgbWVtb3J5L2luc3RyLmM6CglNb3ZlZCBpbnN0cnVjdGlvbiBlbXVsYXRpb24gdG8gZGxscy9rZXJuZWwuCgoJKiBjb250cm9scy9jb21iby5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5oLAoJICBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsCgkgIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCU1vdmVkIG91dCBvZiB3aW5kZWYuaCBhIGZldyBkZWZpbml0aW9ucyB0aGF0IGRvbid0IGJlbG9uZyB0aGVyZQoJKHJlcG9ydGVkIGJ5IEZpbGlwIE5hdmFyYSkuCgoJKiBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsCgkgIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywKCSAgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBncmFwaGljcy94MTFkcnYvdGV4dC5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jLAoJICB3aW5kb3dzL25vbmNsaWVudC5jOgoJU0xPV09SRCBhbmQgU0hJV09SRCBkbyBub3QgZXhpc3Qgb24gV2luMzIgKHJlcG9ydGVkIGJ5IEZpbGlwIE5hdmFyYSkuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOiBIYW5udSBWYWx0b25lbiA8SGFubnUuVmFsdG9uZW5AaHV0LmZpPgoJVXNlIG5hdGl2ZSBtc2kgdW50aWwgb3VyIG93biBpbXBsZW1lbnRhdGlvbiB3b3JrcyBkZWNlbnRseS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IGFub3RoZXIgZXJyb3IgdW5kZXIgV2luOXggKGhvcGVmdWxseSkuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZnNiaW5kLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUltcGxlbWVudGVkIFNIU2ltcGxlSURMaXN0RnJvbVBhdGggY29ycmVjdGx5LgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZXMuCgoyMDAzLTA5LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IE1vcmUgcm9idXN0IGRldGVjdGlvbiBvZiBjaGFyc2V0IG5hbWVzLgoKCSogZGxscy9rZXJuZWwvc3RyaW5nLmMsIGRsbHMvbnRkbGwvcGF0aC5jLCBmaWxlcy9kb3NfZnMuYywKCSAgbWVtb3J5L3N0cmluZy5jOgoJTW92ZWQgbW9zdCBrZXJuZWwgc3RyaW5nIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9oZWFwLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTW92ZWQgbW9zdCAzMi1iaXQgaGVhcCBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCgoJKiB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgcmVxdWlyZSBHVUkgc3VwcG9ydCBmb3IgZGlzcGxheWluZyBlcnJvcnMgaW4gd3JhcHBlci4KCUxpbmsgdGhlIHdyYXBwZXIgb25seSBhZ2FpbnN0IGtlcm5lbCAobm8gZGwsIG1zdmNydCwgZXRjKS4KCUFsbG93IHRoZSBzZXR0aW5nIG9mIHRoZSBhcHAgRExMIHdoZW4gYSB3cmFwcGVyIGlzIGNyZWF0ZWQuCgoJKiBkbGxzL2ltYWdlaGxwL2ludGVncml0eS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBJbWFnZUdldENlcnRpZmljYXRlRGF0YS4KCgkqIGluY2x1ZGUvd2lubnQuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWFpbHNsb3QgZGVmaW5lcy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJTW92ZWQgV0lORV9ERUZBVUxUX0RFQlVHX0NIQU5ORUwgb3V0c2lkZSBvZiB0aGUgI2lmZGVmLgoKCSogZGxscy9kZHJhdy9kZHJhdy91c2VyLmM6IEFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCUVuYWJsZSByZXNvbHV0aW9uIGNoYW5nZXMgZm9yIG9sZGVyIEQzRC9ERHJhdyBhcHBsaWNhdGlvbnMuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CglFbmFibGUgcmVzb2x1dGlvbiBjaGFuZ2VzIGZvciBEM0Q4IGFwcGxpY2F0aW9ucy4KCgkqIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CgktIEFsbG93IGFwcGxpY2F0aW9ucyB0byByZXNpemUgdGhlIFdpbmUgZGVza3RvcCB3aW5kb3cuCgktIFNvbWUgY2xlYW51cCBvZiBDaGFuZ2VEaXNwbGF5U2V0dGluZ3MgYW5kIGZyaWVuZHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsIGZpbGVzL2Rvc19mcy5jOgoJQWxleCBQYXNhZHluIDxhanBAbWFpbC51dGV4YXMuZWR1PgoJLSBVc2UgSGVhcEFsbG9jIGluc3RlYWQgb2YgR2xvYmFsQWxsb2MgaW4gRmluZE5leHRGaWxlLgoJLSBBZGQgdGVzdCBmb3IgRmluZE5leHRGaWxlIHRoYXQgY2hlY2tzIGxhc3QgZXJyb3IgdmFsdWUuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYywgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGRlZCBhIGZldyB0b2RvX3dpbmUgdGVzdHMgd2l0aCBmaWxlbmFtZXMgd2l0aCB3aWxkY2FyZHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmMsIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglSZW1vdmUgPG50c3RhdHVzLmg+IHRvIGFsbG93IGNvbXBpbGF0aW9uIHdpdGggTVMgUFNESyBoZWFkZXJzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUZpbGlwIE5hdmFyYSA8eG5hdmFyYUB2b2xueS5jej4KCUZpeGVkIGRlZmluaXRpb25zIG9mIFRUVE9PTElORk9BL1dfVjFfU0laRSBhbmQKCVJFQkFSQkFORElORk9BL1dfVjNfU0laRS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvbWFpbi5jLCBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCU5vcm1hbGl6ZSB3aW4yMDAwLCBudDJrLCBudDIwMDAgdG8gd2luMmssIG5vcm1hbGl6ZSB3aW4yazMgdG8gd2luMjAwMwoJKHNwb3R0ZWQgYnkgVmluY2VudCBC6XJvbikuCgoJKiBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW50ZXJubC5oLAoJICBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIEltcGxlbWVudGVkIGEgZmV3IGluZm9ybWF0aW9uIGNsYXNzZXMgaW4gTnRRdWVyeVN5c3RlbUluZm9ybWF0aW9uLgoJLSBBZGRlZCBoYW5kbGUgaW5mb3JtYXRpb24gdG8gKHdpbmVzZXJ2ZXIpIHByb2Nlc3Mgc25hcHNob3QuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSB1bnVzZWQgV0lORV9ET0NfU1JDUywgYW5kIHRoZSB1c2VsZXNzIEJPT0tTX1RBUkdFVFMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogPGRldmVsb3BAc3R1ZWJlbi5jb20+CglVc2UgU3lzQWxsb2NTdHJpbmdCeXRlTGVuL1N5c1N0cmluZ0J5dGVMZW4gdG8gY29weSBCU1RSIHZhcmlhbnRzLgoKCSogcHJvZ3JhbXMvY2xvY2svRnIucmMsIHByb2dyYW1zL2NtZGxndHN0L0ZyLnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL25vdGVwYWQvRnIucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vRnIucmMsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9Gci5yYywgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9yc3JjLnJjLCBwcm9ncmFtcy92aWV3L0ZyLnJjLAoJICBwcm9ncmFtcy92aWV3L2luaXQuYywgcHJvZ3JhbXMvdmlldy92aWV3cmMucmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglVcGRhdGVzIGZvciB2YXJpb3VzIEZyZW5jaCByZXNvdXJjZXMuCgoyMDAzLTA5LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvY2xvY2svSXQucmMsIHByb2dyYW1zL25vdGVwYWQvSXQucmMsIHByb2dyYW1zL3N0YXJ0L0l0LnJjLAoJICBwcm9ncmFtcy9zdGFydC9yc3JjLnJjLCBwcm9ncmFtcy92aWV3L0l0LnJjLCBwcm9ncmFtcy92aWV3L3ZpZXdyYy5yYzoKCUl2YW4gTGVvIE11cnJheS1TbWl0aCA8cHVvdGlAaW53aW5kLml0PgoJQWRkZWQvaW1wcm92ZWQgSXRhbGlhbiB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hmbGRyLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmdpbmVlcmluZy5jb20+CglNYWtlIHN1cmUgdGhlIGJpbmQgY29udGV4dCBpcyBmb3J3YXJkZWQgaW4KCVNoZWxsRm9sZGVyX1BhcnNlRGlzcGxheU5hbWUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZ2luZWVyaW5nLmNvbT4KCVNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncyBhbmQgc29tZSBmb3JtYXR0aW5nLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGxmc2JpbmQuYywgaW5jbHVkZS9zaGxvYmouaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmdpbmVlcmluZy5jb20+CglBZGRlZCBJRmlsZVN5c3RlbUJpbmREYXRhIGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZ2luZWVyaW5nLmNvbT4KCVNIQ2hhbmdlTm90aWZ5IHNob3VsZCB1c2UgU0hTaW1wbGVJRExpc3RGcm9tUGF0aCBhcyB0aGlzIGZ1bmN0aW9uCglzaG91bGQgbm90IGZhaWwgb24gcGF0aHMgdGhhdCBkbyBub3QgZXhpc3QgYW55bW9yZS4KCgkqIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglBZGRlZCBhIHNpbXBsZSBUT0RPIGxpc3QuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2Fsc2EuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hbHNhLmgsIGRsbHMvd2lubW0vd2luZWFsc2EvbWlkaS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL3dpbmVhbHNhLmRydi5zcGVjOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgbWlkaSBzdXBwb3J0IHRvIHRoZSBBTFNBIGRyaXZlci4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3N5bmMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgdGhlIG1haWxzbG90IHN0dWJzIGludG8gdGhlIGRsbHMva2VybmVsIGRpcmVjdG9yeS4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vZGxscy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBvYnNvbGV0ZSBkb2N1bWVudGF0aW9uL2RsbHMuc2dtbC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluOgoJUmVtb3ZlIGdlbmVyYXRlZCBhc3NlbWJseSBjb2RlIG9uIG1ha2UgY2xlYW4uCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21taW8uYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbm1tLmMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywKCSAgaW5jbHVkZS9tbWRkay5oLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gTW92ZWQgV2luZSBleHRlbnNpb24gdG8gZ2V0IERTb3VuZCBpbnRlcmZhY2UgZnJvbSBhIHdhdmUgZGV2aWNlIGZyb20KCSAgaW5jbHVkZS9tbXN5c3RlbS5oIHRvIGluY2x1ZGUvbW1kZGsuaC4KCS0gUmVtb3ZlZCBhbGwgZGVwZW5kZW5jaWVzIG9uIGhlYXAuaC4KCS0gRml4ZWQgYSBmZXcgcHJvdG90eXBlcyAobW1pb1JlbmFtZVtBV10sIG1jaVNlbmRTdHJpbmdXLCAqTWVzc2FnZSkuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItcG9ydGluZy5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBubyBsb25nZXIgY3VycmVudCBpc3N1ZXMgZnJvbSB0aGUgV2luZWxpYiBndWlkZS4KCgkqIGRvY3VtZW50YXRpb24vcG9ydGluZy5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXBkYXRlIHRoZSBwb3J0aW5nIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGJldHRlciB0ZXN0cyBmb3Igdm9sdW1lIGFuZCBwYW4uCglBZGRlZCBjYXB0dXJlIG5vdGlmaWNhdGlvbiB0ZXN0LgoJRml4ZWQgY2FwdHVyZSBxdWVyeSBub3RpZmljYXRpb24gdGVzdCBidWcuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRGV2aWNlIGVudW1lcmF0aW9uIGNhbGxiYWNrcyBzaG91bGQgcmV0dXJuIGEgTlVMTCBndWlkIGZvciBkZWZhdWx0CglkZXZpY2VzLgoJRml4ZWQgc29tZSB2b2x1bWUgYW5kIHBhbiBjYXNlcy4KCUFkZGVkIG1pc3NpbmcgcHJvcGVydHkgc2V0LgoJRml4ZWQgY2FwdHVyZSBub3RpZmljYXRpb24gYnVnLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBkb2N1bWVudGF0aW9uL2RlZmF1bHQuZHNsOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmVkIHJlZmVyZW5jZSB0byAnc3lzdGVtbmFtZScgYW5kIGFkZGVkIGEgbGluayB0byB3aW5zaXRlIGluCglkZWJ1Z2dlci5zZ21sLgoJUmVtb3ZlIGNydWZ0IGZyb20gZGVmYXVsdC5kc2wuIEFkZCBjb21tZW50cyBleHBsYWluaW5nIHdoYXQgb3VyIG90aGVyCglzZXR0aW5ncyBkby4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHRoZSBMeWNvcyBsaW5rICh3aGljaCBkb2VzIG5vdCBldmVuIHBvaW50IHRvIEx5Y29zKS4gUG9pbnQgdG8KCWliaWJsaW8ub3JnJ3MgbWlycm9ycyBwYWdlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDaGVjayBYMTEgZXJyb3JzIG9uIGVhY2ggWExvYWRRdWVyeUZvbnQgY2FsbHMuCgoJKiB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluLCB0b29scy93aW5lZ2NjL3dpbmVnY2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAaW50ZWxsaXdhcmUuY2E+CglUZWFjaCB3aW5lZ2NjIHRvIG1hc3F1ZXJhZGUgYXMgY3BwLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlY2xhcmUgbWFpbHNsb3QgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGVzdHMvY29tbS5jOgoJS2V2aW4gR3JvZW5ldmVsZCA8a2dyb2VuZXZlbGRAbWNtYXN0ZXIuY2E+CgktIEZpeCBzbWFsbCBidWcgd2l0aCBwYXJzaW5nIG9mIG51bWJlcnMgaW4gQnVpbGRDb21tRENCIGZ1bmN0aW9ucy4KCS0gQWRkIGNvbmZvcm1hbmNlIHRlc3QgZm9yIEJ1aWxkQ29tbURDQiBmdW5jdGlvbnMuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5oLCBkbGxzL2RkcmF3L2dsX2FwaS5oLAoJICBkbGxzL2RkcmF3L2dsX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9oZWxwZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZCBaQnVmZmVyIHdyaXRlIHN1cHBvcnQKCS0gc29tZSBUUkFDRWluZyBmaXhlcwoKCSogZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVc2UgZGRyYXdfZ2VvbSBpbiB0aGUgZXhlY3V0ZSBidWZmZXIgY29kZS4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBJbXBsZW1lbnRlZCBJc0h1bmdBcHBXaW5kb3cuCgktIEFkZGVkIHJlamVjdGlvbiBvZiBpbnRlcnByb2Nlc3MgbWVzc2FnZXMgcmVsYXRlZCB0byBpY29ucy4KCgkqIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJTW92ZSBwYWNrZXQgbGlua2VkIGxpc3QgdGFpbCBmb3J3YXJkIGNvcnJlY3RseSBvbiBwdXNoLgoKMjAwMy0wOS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAzMDkxMS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMy0wOS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgaW5jbHVkZS93aW5iYXNlLmg6CglLZXZpbiBHcm9lbmV2ZWxkIDxrZ3JvZW5ldmVsZEBtY21hc3Rlci5jYT4KCUFkZCBtaXNzaW5nIHdSZXNlcnZlZDEgbWVtYmVyIHRvIERDQiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4KCUZpeCBzZXZlcmFsIGJ1Z3MgaW4gQnVpbGRDb21tRENCQW5kVGltZW91dHM6CgktIG1ha2Ugc3VyZSBMUENTVFIgcGFyYW1ldGVyIGlzIHJlYWxseSB0cmVhdGVkIGFzIGNvbnN0YW50CgktIGZpeCBwb3NzaWJsZSBidWZmZXIgb3ZlcmZsb3cgaWYgcGFzc2VkIGluIHN0cmluZyBpcyB0b28gbG9uZwoJLSBpZiB0aGUgZGV2aWNlIGNvbnRyb2wgc3RyaW5nIGlzIGludmFsaWQsIGRvIG5vdCBtb2RpZnkgRENCCgktIGRvIG5vdCBjbGVhciBlbnRpcmUgRENCLCBvbmx5IG1vZGlmeSBhcHByb3ByaWF0ZSBtZW1iZXJzCgktIGZpeCBwYXJzaW5nIG9mIHN0b3AgYml0cyBwYXJhbWV0ZXIgc28gaXQgd29ya3MgZm9yIDEgYW5kIDEuNQoJLSBwb3B1bGF0ZSBDT01NVElNRU9VVFMgd2hlbiB0bz14eHggcGFyYW1ldGVyIGlzIHNwZWNpZmllZAoJLSBhZGRlZCBzdXBwb3J0IGZvciB4b24sIG9kc3IsIG9jdHMsIGR0ciwgcnRzLCBhbmQgaWRzciBwYXJhbWV0ZXJzCgktIGZpeCBzZXZlcmFsIG90aGVyIHBhcnNpbmcgZXJyb3JzCgoJKiB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCUhhbmRsZSAtTDxkaXI+IGluIGEgc2VwYXJhdGUgYXJyYXkuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTW92ZWQgc29tZSBNTSBpbnRlcm5hbCBkZWZpbml0aW9uIHRvIGludGVybmFsIGluY2x1ZGUgZmlsZXMuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBLZXZpbiBHcm9lbmV2ZWxkIDxrZ3JvZW5ldmVsZEBtY21hc3Rlci5jYT4KCU1vZGlmeSBDaGVja1JhZGlvQnV0dG9uIGZ1bmN0aW9uIHRvIGJlIG1vcmUgY29uc2lzdGVudCB3aXRoIFdpbmRvd3MuCgoJKiBkbGxzL29sZWF1dDMyL3Vzcm1hcnNoYWwuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJSW1wbGVtZW50IGRpc3BhdGNoIHZhcmlhbnQgbWFyc2hhbGxpbmcuCgoJKiBkbGxzL2dsdTMyL2dsdTMyLnNwZWM6IERhdmUgTWlsbGVyIDxjb21wc29sQHB0ZC5uZXQ+CglBbHBoYWJldGl6ZWQgdGhlIGZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBNYWtlIHN1cmUgZHJvcGRvd24gYXJyb3cgaXMgYWx3YXlzIGNlbnRlcmVkLgoJLSBBZGQgc3VwcG9ydCBmb3IgdGhlIFRCTlJGX0hJREVIRUxQIGN1c3RvbWl6YXRpb24gZmxhZywgYnV0IGVtaXQgYQoJICBGSVhNRSB3aGVuIGl0IGlzbid0IHByZXNlbnQuCgoJKiB0b29scy93aW5lZ2NjL01ha2VmaWxlLmluLCB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmM6CglTZXQgdGhlIGRsbCBzZWFyY2ggcGF0aCB0byB0aGUgbG9jYXRpb24gc3BlY2lmaWVkIGluIGNvbmZpZ3VyZQoJKHNwb3R0ZWQgYnkgVmluY2VudCBC6XJvbikuCgoJKiBpbmNsdWRlL3BvcHBhY2suaCwgaW5jbHVkZS9wc2hwYWNrMS5oLCBpbmNsdWRlL3BzaHBhY2syLmgsCgkgIGluY2x1ZGUvcHNocGFjazQuaCwgaW5jbHVkZS9wc2hwYWNrOC5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBjaGVja3MgZnJvbSB7cG9wLHBzaH1wYWNrWzEyNDhdLmggdGhhdCB3ZXJlIGNhdXNpbmcgdGhlCglzdGFuZGFsb25lIHByb2Nlc3NvciB0byBmYWlsLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1MTG9hZGxpYnJhcnk6IFJlbW92ZSAtbm9uYW1lIGFuZCBkdXBsaWNhdGUgZW50cnkuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJTWVudGlvbiB3aW4yazMgc3VwcG9ydCBpbiB0aGUgc2FtcGxlIGNvbmZpZyBhbmQgaW4gdGhlIGZhcS4KCgkqIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVnY2MvdXRpbHMuYywKCSAgdG9vbHMvd2luZWdjYy91dGlscy5oLCB0b29scy93aW5lZ2NjL3dpbmVnY2MuYywKCSAgdG9vbHMvd2luZWdjYy93aW5ld3JhcC5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJVXNlIGFuIGV4dGVuZGFibGUgYXJyYXkgdG8gc3RvcmUgdGhlIGxpc3RzIG9mIHN0cmluZ3MuCglPbmx5IG1ha2Ugd3JhcHBlciBhcmd1bWVudCBsaXN0cyBpZiB3ZSdyZSBnb2luZyB0byB1c2UgdGhlbS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWdjYy5jLCB0b29scy93aW5lZ2NjLy5jdnNpZ25vcmUsIHRvb2xzL3dpbmVnY2MvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVnY2Mvd2luZWdjYy5jLCB0b29scy93aW5lZ2NjL3dpbmV3cmFwLmMsIHRvb2xzL3dpbmV3cmFwLmM6CglNb3ZlZCB3aW5lZ2NjIGFuZCB3aW5ld3JhcCB0byBhIHNlcGFyYXRlIGRpcmVjdG9yeS4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9lbnVtbWVkaWEuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvY2F0b3IuYywgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglJbXBsZW1lbnRlZCBJTWVtQWxsb2NhdG9yIGFuZCBJTWVkaWFTYW1wbGUuCgoJKiBpbmNsdWRlL3dpbmUvbGlzdC5oLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9saXN0LmgsIHNlcnZlci9vYmplY3QuYywKCSAgc2VydmVyL29iamVjdC5oOgoJTW92ZWQgbGlzdC5oIHRvIGluY2x1ZGUvd2luZSBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGV2ZXJ5d2hlcmUuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6IEZlcmVuYyBXYWduZXIgPHdmZXJpQGFmYXZhbnQuZWx0ZS5odT4KCUltcGxlbWVudCA+PiBzdHlsZSAoYXBwZW5kKSBvdXRwdXQgcmVkaXJlY3Rpb24uCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVGhlIEdldFtSR0JdVmFsdWUoKSBtYWNyb3Mgc2hvdWxkIHJldHVybiBhIEJZVEUsIG5vdCB0aGUgc2FtZSB0eXBlIGFzCgl0aGUgb25lIHBhc3NlZCBpbi4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglDaGFuZ2VkIG9yZGluYWwgZnVuY3Rpb25zIHRoYXQgbm93IGhhdmUgYSBuYW1lIHRvIHVzZSAtbm9uYW1lIGluc3RlYWQKCW9mIG5hbWVsZXNzIGV4cG9ydHMuCgoJKiBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9sbS5oLCBpbmNsdWRlL2xtc3RhdHMuaDoKCUdlb2ZmIFRob3JwZSA8Z2VvZmZAZ2VvZmZ0aG9ycGUubmV0PgoJQWRkZWQgYSBzdHViIGZvciBOZXRTdGF0aXN0aWNzR2V0LgoKCSogZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLAoJICBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywKCSAgZGxscy9vbGUzMi9vbGUyaW1wbC5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLAoJICBkbGxzL29sZTMyL29sZTMyX21haW4uYywgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLAoJICBkbGxzL29sZTMyL3JlZ3N2ci5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJRGF2ZSBNaWxsZXIgPGNvbXBzb2xAcHRkLm5ldD4KCVJlbW92ZWQgb3JkaW5hbHMgZnJvbSBjb21tZW50cy4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzogRGF2ZSBNaWxsZXIgPGNvbXBzb2xAcHRkLm5ldD4KCVJlbW92ZSBhbGwgdGhlIG9yZGluYWxzIGFuZCB1c2UgQCBpbnN0ZWFkLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywKCSAgaW5jbHVkZS90bGhlbHAzMi5oOgoJR2VvZmYgVGhvcnBlIDxnZW9mZkBnZW9mZnRob3JwZS5uZXQ+CglBZGRlZCBhIHN0dWIgZm9yIEhlYXAzMkxpc3RGaXJzdC4KCgkqIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsCgkgIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jLCBkbGxzL3NldHVwYXBpL3BhcnNlci5jLAoJICBkbGxzL3NldHVwYXBpL3F1ZXVlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBjYWIuYywKCSAgZGxscy9zZXR1cGFwaS9zdHVicy5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJUG9ydGluZyBmaXhlcy4KCgkqIGRsbHMvc2hsd2FwaS9hc3NvYy5jLCBkbGxzL3NobHdhcGkvY2xpc3QuYywgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3JlZy5jLAoJICBkbGxzL3NobHdhcGkvcmVnc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3RocmVhZC5jLCBkbGxzL3NobHdhcGkvdXJsLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBDb252ZXJ0IG9yZGluYWxzIHRvIHRoZWlyIHJlYWwgbmFtZXMuCgktIFBhcnRpYWxseSBpbXBsZW1lbnQgYSBmZXcgQXNzb2MqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1vZGlmeSBvaygieHh4IikgY2FsbHMgaW50byBvaygieHh4XG4iKSBhcyBpcyBub3cgZXhwZWN0ZWQuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZWQgdGhlIFdpbmUgcG9ydHMgc2VjdGlvbi4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglBZGRlZCBwdHJfX19wdGhyZWFkX2NvbmRfdGltZWR3YWl0IGluIHRoZSBwdGhyZWFkX2Z1bmN0aW9ucyBzdHJ1Y3R1cmUKCXRvIG1hdGNoIHRoZSBsYXRlc3QgZ2xpYmMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsCgkgIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywgaW5jbHVkZS93aW5lL3Rlc3QuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW9kaWZ5IHdpbmV0ZXN0X29rIHRvIG9ubHkgYWRkIGEgdHJhaWxpbmcgJ1xuJyBpZiB0aGVyZSBpcyBub25lLgoJTW9kaWZ5IG1hY3JvcyBpbiB0aGUga2VybmVsLCBvbGVhdXQzMiBhbmQgdXNlciB0ZXN0cyB0byBwcmludCBhICdcbicuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglVcGRhdGVkIHRoZSAiVE9ETyIgY29tbWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkIHByb3BlciBuYW1lcyB0byBvcmRpbmFsLW9ubHkgZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvUnUucmM6IE9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJU21hbGwgZ3JhbW1hciBmaXguCgoJKiBtc2Rvcy9wcGRldi5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIHNwZWxsaW5nIGZpeGVzCgktIGNoYW5nZSBvbmUgaWxsLWNob3NlbiBGSVhNRSB0byBFUlIKCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUZpeCBpbnZhbGlkIEMgY29uc3RydWN0cyAoc3BvdHRlZCBieSBNYXJjdXMgTWVpc3NuZXIpLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXZlcnQgc29tZSB3b3JkLXNwbGl0cyB0byB0aGVpciBub3JtYWwgZm9ybSwgZS5nLiBJbnN0YWxsU2hpZWxkLgoJRml4IGNhc2Ugb2YgVHJhbnNHYW1pbmcgaW4gdHdvIHBsYWNlcy4KCUZpeCB0aGUgVVJMIHRvIGRvc2ZzLgoKCSogZGxscy9xdWFydHovdmVyc2lvbi5yYzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglTZXQgdmVyc2lvbiB0byA4LjEuCgoyMDAzLTA5LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYzogQWRkZWQgZHVtcGluZyBvZiBtZXNzYWdlIHRhYmxlIHJlc291cmNlcy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsCgkgIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL2xpc3Rib3guYywKCSAgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvc3RhdGljLmMsCgkgIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsCgkgIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsCgkgIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywKCSAgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywKCSAgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLAoJICBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsCgkgIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcxNi5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcxNi5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnMTYuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS93bmRwcm9jLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywKCSAgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL3Jlc291cmNlMTYuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsCgkgIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLAoJICBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy91c2VyL2NvbnRyb2xzLmgsCgkgIGRsbHMvdXNlci9kaWFsb2cxNi5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywKCSAgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMvd2lubW0vbWNpLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jLAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywKCSAgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYywKCSAgd2luZG93cy9ub25jbGllbnQuYzoKCVJlbW92ZWQgdGhlIEEvVyBjb25zdGFudHMgZm9yIGJ1aWx0aW4gY3Vyc29ycywgaWNvbnMgYW5kIHJlc291cmNlCgl0eXBlcyBzaW5jZSB0aGV5IGRvbid0IGV4aXN0IG9uIFdpbmRvd3MsIGFuZCBhZGRlZCB0eXBlY2FzdHMKCWV2ZXJ5d2hlcmUgaW5zdGVhZC4KCgkqIHRvb2xzL3dyYy91dGlscy5jOiBTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglQb3J0YWJpbGl0eSBmaXggZm9yIGxhbmd1YWdlIGlkcy4KCgkqIHByb2dyYW1zL2Nsb2NrL1dhLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1dhLnJjLCBwcm9ncmFtcy93aW5oZWxwL1dhLnJjOgoJUGF2ZWwgUm9za2luIDxwcm9za2lAZ251Lm9yZz4KCUNvbXBpbGUgV2Fsb24gcmVzb3VyY2VzIG9ubHkgaWYgTEFOR19XQUxPTiBpcyBkZWZpbmVkLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9kcml2ZS5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmg6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIEJ1Z2ZpeGVzIHRvIHRoZSB0cmFuc2FjdGlvbiBzeXN0ZW0uCgktIEJldHRlciBwcm90ZWN0aW9uIGFnYWluc3QgaW5jb21wbGV0ZSBjb25maWcgc2VjdGlvbnMuCgktIEltcGxlbWVudCAiQWRkIERyaXZlIi4KCS0gUGFydGx5IHJlYWN0aXZhdGUgZWRpdCBkcml2ZSBkaWFsb2cuCgoyMDAzLTA5LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmMsIGRsbHMvYXZpZmlsMzIvZXh0cmFjaHVuay5jLAoJICBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jLAoJICBkbGxzL2RwbGF5eC9sb2JieXNwLmgsIGRsbHMvbXNodG1sL21haW4uYywKCSAgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2dpdC5jLAoJICBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21hcnNoYWwuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMxNi5jLAoJICBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUxNi5jLCBkbGxzL29sZTMyL29sZW9iai5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsCgkgIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jLCBkbGxzL3F1YXJ0ei9lbnVtbW9uaWtlci5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hkb2N2dy9ldmVudHMuYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLCBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL29sZWlkbC5pZGw6CglGaXhlZCBhIGZldyBtb3JlIGhlYWRlcnMgZGVwZW5kZW5jeSBpc3N1ZXMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hvYmppZGwuaCwKCSAgaW5jbHVkZS9zaG9iamlkbC5pZGwsIGluY2x1ZGUvd2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaCwKCSAgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2RvY2tpbmd3aW5kb3dmcmFtZS5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9waGVscGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLCBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglDb252ZXJ0ZWQgdGhlIHJlc3Qgb2YgdGhlIG9ial8qLmggaGVhZGVycyB0byBJREwgaW50byBzaG9iamlkbC5pZGwuCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglTb21lIFNUQVRVU18qIGRlZmluZXMgaGF2ZSB0byBiZSBkdXBsaWNhdGVkIGluIHdpbm50LmguCgoyMDAzLTA5LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jcnlwdDMyL21haW4uYywgZGxscy9pbW0zMi9pbW0uYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsCgkgIGRsbHMva2VybmVsL2xvY2FsZV9yYy5yYywgZGxscy9rZXJuZWwvc3RyaW5nLmMsCgkgIGRsbHMva2VybmVsL25scy8qLm5scywgZGxscy9rZXJuZWwvdGVzdHMvZm9ybWF0X21zZy5jLAoJICBkbGxzL21hcGkzMi9tYXBpMzJfbWFpbi5jLCBkbGxzL21wci9wd2NhY2hlLmMsIGRsbHMvbXNpL2Rpc3RpbmN0LmMsCgkgIGRsbHMvbXNpL2hhbmRsZS5jLCBkbGxzL21zaS9tc2kuYywgZGxscy9tc2kvbXNpcHJpdi5oLAoJICBkbGxzL21zaS9tc2lxdWVyeS5jLCBkbGxzL21zaS9vcmRlci5jLCBkbGxzL21zaS9xdWVyeS5oLAoJICBkbGxzL21zaS9yZWNvcmQuYywgZGxscy9tc2kvc2VsZWN0LmMsIGRsbHMvbXNpL3NxbC55LAoJICBkbGxzL21zaS9zdW1pbmZvLmMsIGRsbHMvbXNpL3RhYmxlLmMsIGRsbHMvbXNpL3doZXJlLmMsCgkgIGRsbHMvbXNpc3lzL21zaXN5cy5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL29sZTMyL29sZTMyX21haW4uYywKCSAgZGxscy9vbGUzMi9vbGUzMl9tYWluLmgsIGRsbHMvb2xlMzIvb2xlMzJyZXMucmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLAoJICBkbGxzL3NldHVwYXBpL2Rldmluc3QxNi5jLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLAoJICBkbGxzL3N0aS9zdGlfbWFpbi5jLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5oLAoJICBkbGxzL3dpbmluZXQvcmVzb3VyY2UuaCwgZGxscy93aW5pbmV0L3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X0VuLnJjLCBkb2N1bWVudGF0aW9uL1JFQURNRS5pdCwKCSAgZG9jdW1lbnRhdGlvbi9SRUFETUUucHQsIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0X2JyLAoJICBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuLAoJICBkb2N1bWVudGF0aW9uL3N0YXR1cy9kZGUsIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmMsCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYywgdG9vbHMvYnVnX3JlcG9ydC5wbCwKCSAgdG9vbHMvY29uZmlnLmd1ZXNzLCB0b29scy93aW5lZHVtcC9jdmluY2x1ZGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBjYXNlIG9mIHByb2R1Y3QgYW5kIGNvbXBhbnkgbmFtZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc2h0bWwvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2h0bWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNodG1sL2RvY3VtZW50LmMsIGRsbHMvbXNodG1sL21haW4uYywKCSAgZGxscy9tc2h0bWwvbXNodG1sLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbiBpbml0aWFsIChtb3N0bHkgc3R1YikgaW1wbGVtZW50YXRpb24gb2YgTVNIVE1MLkRMTC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmg6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIFJlbW92ZWQgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUsIGFsbCBjaGFuZ2VzIGFyZQoJICBjb21taXR0ZWQgaW5zdGFudGx5IG5vdy4KCS0gVXBkYXRlZCB0aGUgZHJpdmUgaGFuZGxpbmcgY29kZSBzbyBpdCBsb2FkcyBkaXJlY3QgZnJvbSB0aGUKCSAgcmVnaXN0cnkuCgktIFJlbW92ZWQgRFJJVkVfREVTQywgZHJpdmVzIGFyZSBrZXllZCBieSBkcml2ZSBsZXR0ZXIgbm93LgoJLSBEb2N1bWVudGVkIGRyaXZlX2F2YWlsYWJsZV9tYXNrLgoJLSBTaW1wbGlmaWVkIHRoZSBjb2RlIHNvbWV3aGF0LgoKCSogc2VydmVyL3Byb3RvY29sLmRlZjoKCUZpeGVkIGluY2x1ZGUgc3RhdGVtZW50cyB0byBtYXRjaCBzZXJ2ZXJfcHJvdG9jb2wuaCAoc3BvdHRlZCBieSBFcmljCglQb3VlY2gpLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvdGhyZWFkLmMsCgkgIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2ludGVybmwuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jOgoJT24gVGxzRnJlZSwgY2xlYXIgdGhlIHJlbGVhc2VkIFRMUyBpbmRleCBpbiBhbGwgdGhyZWFkcy4KCgkqIGRsbHMvaXBobHBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvaXBobHBhcGkvaXBobHBhcGkuc3BlYywKCSAgZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CgktIEZpeCBidWZmZXIgb3ZlcnJ1biBpbiBHZXROZXR3b3JrUGFyYW1zLgoJLSBJbXBsZW1lbnQgR2V0QmVzdChSb3V0ZSxJbnRlcmZhY2UpLgoJLSBJbXBsZW1lbnQgc29tZSBBbGxvY2F0ZUFuZEdldCpGcm9tU3RhY2sgZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jLCBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsIHByb2dyYW1zL3dpbmVjZmcveDExZHJ2ZGxnLmM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIFJlbW92ZSAiUGVyZmVjdEdyYXBoaWNzIiwgIlVzZSBYU0hNIGV4dGVuc2lvbiIsIGFuZCAiVXNlIGEgcHJpdmF0ZQoJICBjb2xvdXIgbWFwIi4KCS0gSW1wbGVtZW50IGEgc2ltcGxlIHRyYW5zYWN0aW9uIHN5c3RlbSBmb3IgaW5zdGFudCBhcHBseS4KCS0gQ29tcGxldGUgdGhlIGRlc2t0b3Agc2l6ZSBjb2RlLCB0aGlzIG5vdyByZWFkcyBhbmQgd3JpdGVzIHRvIHRoZQoJICByZWdpc3RyeSBjb3JyZWN0bHkuCgktIFJlbW92ZSBjb25zdCBtb2RpZmllciBmcm9tIHZlcnNpb24gYWNjZXNzb3IgZnVuY3Rpb25zLgoJLSBDaGFuZ2UgcmVnaXN0cnkgcm9vdCB0byBXaW5lL1dpbmVDZmcgZm9yIHRlc3RpbmcgcHVycG9zZXMuCgoJKiBkbGxzL2NhYmluZXQvZmRpLmMsIGRsbHMvZG1sb2FkZXIvbG9hZGVyLmMsIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUEgZmV3IHNwZWxsaW5nIGZpeGVzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCXdpbmVpbnN0YWxsIHVzZWQgYSBVbml4LXN0eWxlIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHRoZSB0ZW1wb3JhcnkKCWNvbmZpZyBmaWxlLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvUnUucmMsIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmM6CglQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJQWRkZWQgUnVzc2lhbiByZXNvdXJjZXMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0ZyLnJjOiBQYXZlbCBSb3NraW4gPHByb3NraUBnbnUub3JnPgoJRml4IEZyZW5jaCB0cmFuc2xhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWw6CglCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglNb2RpZnkgdGhlIHdpbmVzZXJ2ZXIgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIG5ldyBsb2NhdGlvbiBvZiB0aGUgc29ja2V0CglhbmQgYWRkIGEgd2FybmluZy4KCgkqIG1lbW9yeS9pbnN0ci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGNvbXBpbGUgd2FybmluZy4KCgkqIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjOiBEYXZlIE1pbGxlciA8Y29tcHNvbEBwdGQubmV0PgoJRml4IGluY29ycmVjdCBvcmRpbmFscy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgaW5jbHVkZS9zaGxvYmouaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglDaGFuZ2UgcGFyYW1ldGVyIGluIFNIR2V0U3BlY2lhbEZvbGRlclBhdGhBL1cgdG8gaW50IGFzIGRvY3VtZW50ZWQgaW4KCU1TRE4uCglBZGQgc29tZSBtb3JlIGRlZmluaXRpb25zIGFuZCBtb3ZlIFNIR2V0RGVza3RvcEZvbGRlcigpIGZyb20KCXdpbmUvb2JqX3NoZWxsZm9sZGVyLmggdG8gaGVyZS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgYSBwcm9wZXIgc3R1YiBmb3Igb2xlYXV0MzIuVmFyTW9kLgoKMjAwMy0wOS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5oLCBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUFkZGVkIGEgZmV3IG1pc3Npbmcgc3RkYXJnLmggaW5jbHVkZXMuCgoyMDAzLTA5LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtldGVzdC5ydWxlcy5pbjoKCUFkZGVkIGEgbWlzc2luZyBkZXBlbmRlbmN5IGZvciB0ZXN0bGlzdC5jIGZpbGVzLgoKCSogZGxscy9vbGUzMi9kY29tLmg6IFJlZ2VuZXJhdGVkIHdpdGggdGhlIGxhdGVzdCB3aWRsLgoKMjAwMy0wOS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqICovKi5jLCBpbmNsdWRlLyouaDoKCUZpeGVkIGhlYWRlciBkZXBlbmRlbmNpZXMgdG8gYmUgZnVsbHkgY29tcGF0aWJsZSB3aXRoIHRoZSBXaW5kb3dzCgloZWFkZXJzICh3aXRoIGhlbHAgZnJvbSBEaW1pdHJpZSBPLiBQYXVuKS4KCjIwMDMtMDktMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2hsZ3VpZC5oLAoJICBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3Nob2JqaWRsLmgsIGluY2x1ZGUvc2hvYmppZGwuaWRsLAoJICBpbmNsdWRlL3NodHlwZXMuaCwgaW5jbHVkZS9zaHR5cGVzLmlkbCwKCSAgaW5jbHVkZS93aW5lL29ial9lbnVtaWRsaXN0LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxleHRpbml0LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaDoKCUltcGxlbWVudGVkIHNodHlwZXMuaWRsIGFuZCBzaG9iamlkbC5pZGwgYW5kIHJlbW92ZWQgYSBmZXcgbW9yZQoJd2luZS9vYmpfKiBoZWFkZXJzLgoKCSogaW5jbHVkZS9kYmdoZWxwLmgsIGluY2x1ZGUvZGlnaXRhbHYuaCwgaW5jbHVkZS93aW5pb2N0bC5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZWQgbm9uLXN0YW5kYXJkIGhlYWRlciBpbmNsdWRlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkanVzdCBzZWxlY3Rpb24gcmFuZ2VzIGJlZm9yZSB3ZSBpbnNlcnQgdGhlIGl0ZW0gc28gd2UgZG9uJ3QgbWl4IHRoZQoJbmV3IHNlbGVjdGlvbiB3aXRoIHRoZSBleGlzdGluZyBvbmVzIChyZXBvcnRlZCBieSBFcmljIFBvdWVjaCkuCgoJKiBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLCBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2V4ZGlzcC5oLAoJICBpbmNsdWRlL2V4ZGlzcC5pZGwsIGluY2x1ZGUvd2luZS9vYmpfd2ViYnJvd3Nlci5oLCBsaWJzL3V1aWQvdXVpZC5jOgoJQ29udmVydGVkIG9ial93ZWJicm93c2VyLmggdG8gSURMIGFuZCBtb3ZlZCB0aGUgZGVmaW5pdGlvbnMgdG8KCWV4ZGlzcC5pZGwgd2hlcmUgdGhleSBiZWxvbmcuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL2RvY29iai5pZGw6CglDb252ZXJ0ZWQgZG9jb2JqLmggdG8gSURMLgoKCSogaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oLAoJICBpbmNsdWRlL29sZWN0bC5oOgoJUmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIGluY2x1ZGUgcHJvdGVjdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglGaXggbW9kTG9uZ0RhdGEuCglFbmFibGUgb3BlbmluZyBvZiBNT0RfU1lOVEggdHlwZSBkZXZpY2VzLgoJQWRkIHNvbWUgY29tbWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmg6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVVwZGF0ZWQgbWlub3IgdmVyc2lvbiBudW1iZXIuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2FpZGwuaWRsLAoJICBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2NpZGwuaWRsLCBpbmNsdWRlL29sZWlkbC5oLAoJICBpbmNsdWRlL29sZWlkbC5pZGwsIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwKCSAgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oOgoJQ29udmVydGVkIG9jaWRsLmggdG8gSURMLgoKMjAwMy0wOS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvdXJsbW9uLmlkbCwKCSAgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJQ29udmVydGVkIHVybG1vbi5oIHRvIElETC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvc2VydnByb3YuaCwgaW5jbHVkZS9zZXJ2cHJvdi5pZGw6CglDb252ZXJ0ZWQgc2VydnByb3YuaCB0byBJREwuCgoJKiBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL29sZWlkbC5pZGwsIGluY2x1ZGUvd2luZS9vYmpfY2FjaGUuaCwKCSAgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwKCSAgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3Lmg6CglDb252ZXJ0ZWQgb2xlaWRsLmggdG8gSURMLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9oZWFkZXIuaCwgdG9vbHMvd2lkbC9wYXJzZXIueSwKCSAgdG9vbHMvd2lkbC9wcm94eS5jLCB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJQWRkZWQgcGFydGlhbCBzdXBwb3J0IGZvciBmdW5jdGlvbiBwb2ludGVycy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY29tY2F0LmgsIGluY2x1ZGUvY29tY2F0LmlkbCwKCSAgaW5jbHVkZS93aW5lL29ial9jb21jYXQuaCwgaW5jbHVkZS93aW5lL29ial9lbnVtZ3VpZC5oOgoJQ29udmVydGVkIGNvbWNhdC5oIHRvIElETC4KCgkqIGluY2x1ZGUvb2JqaWRsLmgsIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksCgkgIHRvb2xzL3dpZGwvd2lkbC5jOgoJVXNlIDw+IGZvcm1hdCBpbiBnZW5lcmF0ZWQgI2luY2x1ZGUgc3RhdGVtZW50cy4KCUludGVnZXIgY29uc3RhbnRzIHNob3VsZCBiZSB1bnNpZ25lZC4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglVc2UgdGhlIGRyaXZlcnMgdG8gZ2V0IGRldmljZSBjYXBhYmlsaXRpZXMgYW5kIHByb3BlcnR5IHNldHMuCgoJKiB0b29scy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGb3J3YXJkIGFsbCBhcmd1bWVudHMgdG8gZ2NjIHdoZW4gd2UgaGF2ZSBubyBpbnB1dCBmaWxlcy4KCUtpbGwgdGhlIC1WIG9wdGlvbiwgYXMgaXQncyBub3QgY29tcGF0aWJsZSB3aXRoIGdjYy4KCUZpeCBzaWxseSBidWcgd2hlbiB3ZSBhcmUgbm90IGdpdmVuIGFuIG91dHB1dCBuYW1lLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9wdGhyZWFkLmMsIGRsbHMvbnRkbGwvc3lzZGVwcy5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBpbmNsdWRlL3dpbmUvcHRocmVhZC5oLCBsaWJzL3dpbmUvbG9hZGVyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNjaGVkdWxlci9wdGhyZWFkLmM6CglNb3ZlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHB0aHJlYWQgd3JhcHBlcnMgdG8gZGxscy9rZXJuZWwuCgoJKiBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW46CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJVXNlIERPUyBzdHlsZSB2YXJpYWJsZXMgaW4gdGhlIEdlcm1hbiBkb2N1bWVudGF0aW9uIG9mIHRoZSBjb25maWcKCWZpbGUuCgoJKiBkbGxzL2dkaS9tZmRydi9pbml0LmM6CglBdm9pZCBoZWFwIHJlYWxsb2NhdGlvbiBlYWNoIHRpbWUgYSBtZXRhcmVjb3JkIGlzIHdyaXR0ZW4gaW4gbWVtb3J5CgkoYmFzZWQgb24gYSBwYXRjaCBieSBXYXJyZW4gQmFpcmQpLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW1fcHJpdmF0ZS5oLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLAoJICBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW5lL29ial9zZXJ2aWNlcHJvdmlkZXIuaDoKCUF2b2lkIGluY2x1ZGluZyB3aW5lL29ial8qLmggZmlsZXMgZGlyZWN0bHkgZnJvbSBDIGZpbGVzLgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBvYmpfc2VydmljZXByb3ZpZGVyLmguCgoJKiBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGluY2x1ZGUvc2hsb2JqLmgsIGxpYnMvdXVpZC91dWlkLmM6CglzaGxvYmouaCBtdXN0IGluY2x1ZGUgd2luZS9vYmpfZHJhZ2Ryb3BoZWxwZXIuaCAocmVwb3J0ZWQgYnkgTWFydGluCglGdWNocykuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglDaGFuZ2VkIHNvbWUgZnVuY3Rpb25zIHRvIHJlc2V0IENGTEFHIG9uIHN1Y2Nlc3MuCglBZGRlZCBzb21lIHRyYWNlcy4KCjIwMDMtMDktMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBLZXZpbiBHcm9lbmV2ZWxkIDxrZ3JvZW5ldmVsZEBtY21hc3Rlci5jYT4KCUNoYW5nZSBkZWZhdWx0IHJhbmdlIG9mIHVwLWRvd24gY29udHJvbCB0byBtYXRjaCByYW5nZSB1c2VkIGluCgl3aW5kb3cuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL2RyaXZlLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcmVzb3VyY2UuaDoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCS0gUGF0aCBjaGFuZ2VzIGFyZSBzYXZlZCB0byB0aGUgc3RydWN0IGNvcnJlY3RseS4KCS0gUmVuYW1lIGVuYWJsZV9jZHJvbV9ib3ggdG8gZW5hYmxlX2xhYmVsc2VyaWFsX2JveCB0byBiZXR0ZXIgcmVmbGVjdAoJICBwdXJwb3NlLgoJLSBSZW5hbWUgSURDX0JPWF9DRFJPTSB0byBJRENfQk9YX0xBQkVMU0VSSUFMLgoJLSBTdXBwb3J0IGZvciBlZGl0aW5nIGxhYmVsIGZvciBhbGwgZHJpdmVzLCBhbGxvdyBlZGl0aW5nIG9mCgkgIHNlcmlhbC9kZXZpY2UgZm9yIENELVJPTVMuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCU1lcmdlIGZyb20gbG9zdHdhZ2VzIGZhcS4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUBhZmF2YW50LmVsdGUuaHU+CglGaXggdGVzdGluZyBleGFtcGxlLgoKCSogZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkcsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUJyaW5nIGRvY3VtZW50YXRpb24gaW4gc3luYyByZWdhcmRpbmcgZXhwYW5zaW9uIG9mIGVudmlyb25tZW50Cgl2YXJpYWJsZXMgaW4gdGhlIGNvbmZpZyBmaWxlLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUJyaW5nIHdpbmVpbnN0YWxsIGluIHN5bmMgcmVnYXJkaW5nIGV4cGFuc2lvbiBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMKCWluIHRoZSBjb25maWcgZmlsZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kYmdoZWxwLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBhIGZldyBtaXNzaW5nIGRlZmluaXRpb25zLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgUXVlcnlEb3NEZXZpY2UgZnJvbSBhc2NpaSB0byB1bmljb2RlLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglNYWtlIHRoZSBkaWZmZXJlbnQgaGVscGVyIGZ1bmN0aW9ucyBhbGwgcmV0dXJuIGFjdHVhbCBlcnJvciBjb2Rlcy4KCUF2b2lkIGNvZGUgZHVwbGljYXRpb24gYmV0d2VlbiBBTlNJIGFuZCBVbmljb2RlIHZhcmlhbnQgb2YgdGhvc2UKCWZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+Cglfd3NfZ2V0aG9zdGJ5bmFtZSgpIGFuZCBXU0FBc3luY0dldEhvc3RCeU5hbWUoKSB3aGVuIGNhbGxlZCB3aXRoIGEKCW51bGwgbmFtZSwgc2hvdWxkIHVzZSB0aGUgbmFtZSByZXR1cm5lZCBieSBnZXRob3N0bmFtZSgpLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEltcGxlbWVudGVkIHNlbWktc3R1YnMgZm9yIEdldE9wZW5GaWxlTmFtZVByZXZpZXdBL1cgYW5kCgkgIEdldFNhdmVGaWxlTmFtZVByZXZpZXdBL1cgYmFzZWQgb24gR2V0T3BlbkZpbGVOYW1lIGRpYWxvZyBpbgoJICBDT01ETEczMi5ETEwgLSBzdGlsbCBtdXN0IGFkZCBPRk5fRU5BQkxFSE9PSyBhbmQgaXQncyBoYW5kbGVyLgoJLSBJbXBsZW1lbnRlZCBJQ0NvbXByZXNzb3JGcmVlLgoJLSBQcmVwYXJlZCBJQ0NvbXByZXNzb3JDaG9vc2UuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsCgkgIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyLmgsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywKCSAgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEZWNsYXJlIExQQ0lURU1JRExJU1QgYXMgJ2NvbnN0JyBwb2ludGVyIGFuZCBhZGp1c3Qgc2hlbGwzMgoJaW1wbGVtZW50YXRpb24gdG8gdGhlIGNvcnJlY3RlZCB0eXBlLgoKCSogZGxscy93aW5lZG9zL2ludDMzLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglpbnQzMyAyMWggaXMgaWRlbnRpY2FsIHRvIGludDMzIDAwaC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXN2Y3J0L2xpbWl0cy5oLCBpbmNsdWRlL21zdmNydC9tYXRoLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBZGRlZCBtc3ZjcnQgaGVhZGVycyBsaW1pdHMuaCBhbmQgbWF0aC5oLgoKCSogcHJvZ3JhbXMvd2luZWxhdW5jaGVyLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglDaGFuZ2UgYWxsIGhlYWQgLTEgdG8gaGVhZCAtbiAxIHRvIGJlIG1vcmUgUE9TSVhseSBjb21wbGlhbnQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUltcGxlbWVudGVkIFRBQl9TZXRNaW5UYWJXaWR0aCBhbmQgVEFCX0hpZ2hsaWdodEl0ZW0uCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCU5vdyB0aGF0IHJlZmVyZW5jZSBjb3VudGluZyBpcyBjb3JyZWN0LCB0aGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIGlmCgl0aGUgYmFzZSBvYmplY3QgZ29lcyBhd2F5LgoKCSogZGxscy9pcGhscGFwaS9pcHN0YXRzLmM6IEp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUZpeGVkIGJ1ZyBwYXJzaW5nIC9wcm9jL25ldC9hcnAgZm9yIGFycCB0YWJsZS4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgYXJwIHRhYmxlIHF1ZXJ5aW5nIHRocm91Z2ggV3NDb250cm9sLCBhbmQgZml4ZWQgcHJvYmxlbSBJCglpbnRyb2R1Y2VkIGdldHRpbmcgSVAgYWRkcmVzc2VzIGZvciBtdWx0aXBsZSBpbnRlcmZhY2VzLgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywgaW5jbHVkZS92ZncuaDoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBJbXBsZW1lbnRlZCBBVklTdHJlYW1CZWdpblN0cmVhbWluZyBhbmQgQVZJU3RyZWFtRW5kU3RyZWFtaW5nLgoJLSBGaXhlZCBsb2FkaW5nIG9mIGVtcHR5IEFWSSBmaWxlcy4KCS0gRml4ZWQgYnVnIGluIElHZXRGcmFtZSBpbnRlcmZhY2Ugd2l0aCB1bmNvbXByZXNzZWQgc3RyZWFtcy4KCS0gRml4ZWQgbWlzc2luZyBJQ09NX0RFRklORSBmb3IgSUFWSVN0cmVhbWluZy4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJRml4IEZvcm1hdE1lc3NhZ2Ugd2hlbiBGT1JNQVRfTUVTU0FHRV9GUk9NX0hNT0RVTEUgaXMgc3BlY2lmaWVkIGFuZAoJbHBTb3VyY2UgaXMgTlVMTC4gIE1ha2UgaW5kZW50aW5nIGNvbnNpc3RlbnQgdG9vLgoKCSogZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVVzZSBhIGR1bW15IEdMIGNvbnRleHQgaWYgb25lIGlzIG5vdCBhdmFpbGFibGUgd2hlbiBHZXREZXZpY2VDYXBzIGlzCgljYWxsZWQuCglSZW1vdmUgdGhlIGNvbXBpbGVyIHdhcm5pbmdzIGludHJvZHVjZWQgaW4gdGhlIGxhc3QgRFhUbiBwYXRjaC4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMC5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1ha2UgRE9TIHByb2Nlc3MgZXhpdCB1c2luZyBFeGl0UHJvY2VzcyBpbnN0ZWFkIG9mIEV4aXRUaHJlYWQuCglNYWtlIGNhbGxpbmcgRE9TIGV4aXQgZnVuY3Rpb25zIGZyb20gRFBNSSBlaXRoZXIgcmV0dXJuIHRvIFN0YXJ0UE0gb3IKCXByaW50IGVycm9yIG1lc3NhZ2UgaWYgbm90IGFsbG93ZWQgYnkgRFBNSSBzcGVjaWZpY2F0aW9uLgoKMjAwMy0wOS0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dyYy9NYWtlZmlsZS5pbjogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4ZWQgdHlwby4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgbW9yZSB0ZXN0cyBhbmQgcmVzdHJ1Y3R1cmVkIHRlc3RzIGZvciBlYXNpZXIgZGVidWdnaW5nLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvbWl4ZXIuYywgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsCgkgIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBTZWNvbmRhcnlCdWZmZXIgYW5kIERpcmVjdFNvdW5kQ2FwdHVyZU5vdGlmeSBDT00gb2JqZWN0cyB0byBnZXQKCXJlZmVyZW5jZSBjb3VudGluZyByaWdodC4KCgkqIGRsbHMvbXNpL21zaS5jLCBkbGxzL21zaS9tc2kuc3BlYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGEgZmV3IHN0dWIgaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy9rZXJuZWwvbmVfbW9kdWxlLmM6CglEb24ndCBzdHJpcCB0aGUgcGF0aCBpbiBMb2FkTW9kdWxlMTYgYmVmb3JlIHdlIGhhdmUgb3BlbmVkIHRoZSBmaWxlCgkocmVwb3J0ZWQgYnkgSnVra2EgSGVpbm9uZW4pLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBzdXBwb3J0IGZvciBzcGVjaWZpYyBFT0kgUElDIGNvbW1hbmQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJZiB3ZSBkb24ndCBzZW5kIGN1c3RvbSBkcmF3IG1lc3NhZ2VzIGZvciBzdWJpdGVtcywgaW5oZXJpdCB0aGUgY29sb3IKCSYgdGV4dCBhdHRyaWJ1dGVzIG9mIHRoZSBtYWluIGl0ZW0uCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCURlZmluZSBJQ09OX1NNQUxMMiBhbmQgU2hvd1dpbmRvd0FzeW5jKCkuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglEZWZpbmUgVEJJRl9CWUlOREVYLgoKMjAwMy0wOC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVjZmcvRW4ucmMsIHByb2dyYW1zL3dpbmVjZmcvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjZmcvZHJpdmUuYywgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsCgkgIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5oLCBwcm9ncmFtcy93aW5lY2ZnL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaDoKCU1hcmsgV2VzdGNvdHQgPG1hcmtAaG91c2VvZmZpc2gub3JnPgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBNZXJnZSBkcml2ZSBjb2RlIGZyb20gTWFyay4KCS0gUmVuYW1lIHNhdmVYMTFEcnZEbGdTZXR0aW5ncyB0byBmZXRjaFgxMURydkRsZ1NldHRpbmdzLgoJLSBNYWtlIHRoZSBsaXN0Ym94IGRpc3BsYXkgZHJpdmUgdGl0bGUsIG5vdCBsZXR0ZXIuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmgsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuaCwgcHJvZ3JhbXMvd2luZWNmZy94MTFkcnZkbGcuYzoKCU1hcmsgV2VzdGNvdHQgPG1hcmtAaG91c2VvZmZpc2gub3JnPgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBSZW5hbWUgaFNlc3Npb24gdG8gY29uZmlnS2V5LgoJLSBNYWtlIHRoZSBjb25maWcgc3RydWN0IGEgZ2xvYmFsLCByZW5hbWUgdG8gImNvbmZpZyIuCgktIENvcnJlY3QgYnVnIGluIE9LL0NhbmNlbCBoYW5kbGluZy4KCS0gTWVyZ2UgWDExRFJWIGRpYWxvZyBjb2RlIGZyb20gTWFyay4KCS0gQWRkIG5ld2xpbmUgdG8gdGhlIGluaXRpYWwgRklYTUUuCgoJKiBwcm9ncmFtcy93aW5lY2ZnL0VuLnJjLCBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmMsIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5oOgoJTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBDb3JyZWN0IHJldHVybiBjb2RlIG9mIGxvYWRDb25maWcoKS4KCS0gTWFrZSB0aGUgcmVnaXN0cnkga2V5IHVzZWQgYSBjb25zdGFudC4KCS0gTWFkZSBjb2RlIHNsaWdodGx5IG1vcmUgY29uc2lzdGFudCB3aXRoIGl0c2VsZi4KCS0gU29tZSBzdHlsZSBjaGFuZ2VzLCBleHBhbmRpbmcgb3V0IHZhcmlhYmxlIG5hbWVzLCB3aGl0ZXNwYWNlLAoJICByZW1vdmluZyB1bm5lY2Vzc2FyeSB2YXJpYWJsZSBpbml0aWFsaXplcnMgYW5kIGh1bmdhcmlhbiBub3RhdGlvbiBldGMuCgktIFJlcGxhY2UgZGlhbG9nIGJveCB3aXRoIGEgRklYTUUgaW4gV2luTWFpbigpIHRvIHdhcm4gb2YKCSAgaW5jb21wbGV0ZW5lc3MuCgktIEltcGxlbWVudCBzYXZlQ29uZmlnVmFsdWUoKS4KCS0gSG9vayB1cCBzdXBwb3J0IGZvciBzYXZlL2xvYWQgb2YgV2luVmVyLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9Fbi5yYywgcHJvZ3JhbXMvcmVnZWRpdC9Fcy5yYywKCSAgcHJvZ3JhbXMvcmVnZWRpdC9TaS5yYywgcHJvZ3JhbXMvc3RhcnQvRW4ucmMsIHByb2dyYW1zL3N0YXJ0L1B0LnJjLAoJICBwcm9ncmFtcy9zdGFydC9SdS5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywgcHJvZ3JhbXMvd2luZWNmZy9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsIHByb2dyYW1zL3dpbmVmaWxlL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9IdS5yYywgcHJvZ3JhbXMvd2luZWZpbGUvUnUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL1NpLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9aaC5yYzoKCVJlbW92ZWQgd3Jvbmcgb3IgdW5uZWVkZWQgY29kZXBhZ2UgcHJhZ21hcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBpbXByb3ZlIHNvbWUgcGFyYW1ldGVyIGNoZWNraW5nIGluIFdTQUlvY3RsCgktIGZpeCBhIG1lbW9yeSBsZWFrIEkgaW50cm9kdWNlZCBpbiBXU0FJb2N0bAoKCSogZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsIG9iamVjdHMvcGFsZXR0ZS5jOgoJRGF2ZSBCZWxhbmdlciA8ZGF2ZS5iZWxhbmdlckBjaW1tZXRyeS5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBTZWxlY3RQYWxldHRlIGFuZCBSZWFsaXplUGFsZXR0ZSBpbiB0aGUgbWV0YWZpbGUKCWRyaXZlci4KCgkqIGRsbHMvZ2RpL21mZHJ2L2RjLmM6IFdhcnJlbiBCYWlyZCA8V2FycmVuX0JhaXJkQGNpbW1ldHJ5LmNvbT4KCVNhdmUgdGhlIGV4dCBhbGlnbm1lbnQgaW5mb3JtYXRpb24gaW4gYSA4LWJ5dGVzIG1ldGFyZWNvcmQgYXMgaXQKCXNob3VsZCBiZS4KCjIwMDMtMDgtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL3N5c2RlcHMuYywgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwKCSAgbGlicy93aW5lL01ha2VmaWxlLmluLCBsaWJzL3dpbmUvbG9hZGVyLmMsIGxpYnMvd2luZS9wb3J0LmMsCgkgIHNjaGVkdWxlci9maWJlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRXhwb3J0IFNZU0RFUFNfU3dpdGNoVG9UaHJlYWRTdGFjaygpIGZ1bmN0aW9uYWxpdHkgZnJvbSBsaWJ3aW5lIGFzCgl3aW5lX3N3aXRjaF90b19zdGFjaygpLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfU2kucmMsIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9TaS5yYywgZGxscy93aW5pbmV0L3JzcmMucmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0X1NpLnJjLCBkbGxzL3dpbm1tL3dpbm1tX1NpLnJjLAoJICBwcm9ncmFtcy9jbG9jay9TaS5yYywgcHJvZ3JhbXMvY21kbGd0c3QvU2kucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvbm90ZXBhZC9TaS5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9TaS5yYywgcHJvZ3JhbXMvc3RhcnQvU2kucmMsIHByb2dyYW1zL3N0YXJ0L3JzcmMucmMsCgkgIHByb2dyYW1zL3ZpZXcvU2kucmMsIHByb2dyYW1zL3ZpZXcvdmlld3JjLnJjLCBwcm9ncmFtcy93Y21kL1NpLnJjLAoJICBwcm9ncmFtcy93Y21kL3djbWRyYy5yYywgcHJvZ3JhbXMvd2luZWNmZy9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9TaS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYywgcHJvZ3JhbXMvd2luZW1pbmUvU2kucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL3JzcmMucmM6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCU1pbm9yIHVwZGF0ZXMgb2YgU2xvdmVuaWFuIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzY29udHJvbC5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJLSBpbXByb3ZlIFdzQ29udHJvbCBlcnJvciBjaGVja2luZwoJLSBtYWtlIFdzQ29udHJvbCBvdXRwdXQgbW9yZSBjbG9zZWx5IG1hdGNoIFdpbjk4J3MKCS0gZG9jdW1lbnQgV3NDb250cm9sIGJlaGF2aW9yIGEgYml0IGJldHRlcgoKCSogZGxscy93aW5lZG9zL2ludDMzLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdvcmthcm91bmQgaW1wbGVtZW50ZWQgZm9yIHBhc3NpbmcgZmFrZWQgbWlja2V5cyB0byBtb3VzZSBjYWxsYmFjawoJcm91dGluZS4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWxsb3cgYXBwbGljYXRpb24gdG8gdXNlIFZHQSB3aW5kb3cgdGhhdCBvdmVybGFwcyBmcmFtZWJ1ZmZlciBvbmx5CglwYXJ0aWFsbHkuCgoJKiBkbGxzL21zaS9tc2kuc3BlYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNvbWUgbWlzc2luZyBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJRml4ZWQgdGhlIGVycm9yIG1lc3NhZ2UgaW4gV2F2ZShJbnxPdXQpSW5pdCwgaXQgdXNlZCB0byBnaXZlIGEKCWNvbmZ1c2luZyBtZXNzYWdlLCBub3cgdXNlcyBzdHJlcnJvci4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQ2hhbmdlIHByb3RveXBlIG9mIFNIQ2hhbmdlTm90aWZ5UmVnaXN0ZXIgdG8gd2hhdCBNU0ROIHNheXMuCglSZW1vdmUgYW4gdW5zaWduZWQgbWlzbWF0Y2ggd2FybmluZy4KCgkqIGRsbHMvbnRkbGwvbnQuYzogSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJU2V0IFNFX0dST1VQX0VOQUJMRUQgaW4gQXR0cmlidXRlcyBvZiBBZG1pbmlzdHJhdG9ycyBTSUQgZHVyaW5nCglOdFF1ZXJ5SW5mb3JtYXRpb25Ub2tlbiBmb3IgVG9rZW5Hcm91cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglBdm9pZCBkaXZpc2lvbiBieSB6ZXJvIHdoZW4gdGhlIGltYWdlbGlzdCBpcyBjcmVhdGVkIHdpdGggYSB3aWR0aCBvZgoJemVybyAoaWUgbm8gaW1hZ2VzKS4KCgkqIGRsbHMvb2xlMzIvYmluZGN0eC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZ2luZWVyaW5nLmNvbT4KCU1ha2Ugc3VyZSB0aGUgcGFzc2VkIGluIG9iamVjdCBwb2ludGVyIGlzIG9ubHkgYWRkcmVmZWQgb24gc3VjY2Vzcy4KCjIwMDMtMDgtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzogV2FybmluZyBmaXguCgoJKiBpbmNsdWRlLyouaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgYW5nbGUgYnJhY2tldHMgKDw+KSByYXRoZXIgdGhhbiBxdW90ZXMgKCIiKSBmb3IgdGhlIGluY2x1ZGUKCWRpcmVjdGl2ZXMgaW4gb3VyIC5oIGZpbGVzLiBUaGlzIHNob3VsZCBhdm9pZCBzb21lIHBvdGVudGlhbGx5IG5hc3R5CglzdXJwcmlzZXMgZm9yIFdpbmVsaWIgYXBwcy4KCgkqIGRsbHMva2VybmVsL2NoYW5nZS5jLCBkbGxzL2tlcm5lbC9wcm9jZXNzLmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLAoJICBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3RocmVhZC5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy91c2VyL21zZzE2LmMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywKCSAgaW5jbHVkZS9hc3luYy5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmUvc2VydmVyLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgbG9hZGVyL21vZHVsZS5jLCBtZW1vcnkvZW52aXJvbi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJU3RhcnQgdXNpbmcgdGhlIGV4cG9ydGVkIFRFQiBzdHJ1Y3R1cmUgZnJvbSB3aW50ZXJubC5oIHdoZXJlCglwb3NzaWJsZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglJbXBsZW1lbnRlZCBhIHR5cGVsaWIgbG9hZGVyIGNhY2hlLgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJQWRkZWQgQ29EaXNjb25uZWN0T2JqZWN0IGFuZCBDb1JlZ2lzdGVyTWVzc2FnZUZpbHRlciBwcm90b3R5cGVzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogRG9uJ3QgdXNlIGFsbG9jYS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6IERhdmUgQmVsYW5nZXIgPGRhdmUuYmVsYW5nZXJAY2ltbWV0cnkuY29tPgoJRml4ZWQgYSBjb21waWxlIGVycm9yLgoKCSogaW5jbHVkZS9kc291bmQuaDogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHNwZWFrZXIgY29uZmlnIG1hY3Jvcy4KCgkqIGluY2x1ZGUvdXVpZHMuaDogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIENMU0lEX0hUTUxEb2N1bWVudC4KCgkqIGluY2x1ZGUvdXJsbW9uLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmluZSB0aGUgSVBlcnNpc3RNb25pa2VyIGludGVyZmFjZS4KCgkqIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3N5c2RlcHMuYywKCSAgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL2ZpYmVyLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglSZW5hbWVkIGEgZmV3IG1vcmUgVEVCIGZpZWxkcy4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLAoJICBkbGxzL21zdmNydC9jcHBleGNlcHQuaCwgZGxscy9tc3ZjcnQvZXhjZXB0LmMsCgkgIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBpbmNsdWRlL3RocmVhZC5oLAoJICBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmM6CglSZW5hbWVkIEVYQ0VQVElPTl9GUkFNRSB0byBFWENFUFRJT05fUkVHSVNUUkFUSU9OX1JFQ09SRCBzaW5jZSB0aGF0CglzZWVtcyB0byBiZSB0aGUgb2ZmaWNpYWwgbmFtZS4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6CglBZGRlZCBtaXNzaW5nIGZ1bmN0aW9ucyBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgYnVpbGQgdGhlIHB0aHJlYWRzCgllbXVsYXRpb24gKHJlcG9ydGVkIGJ5IFRvZGQgVmllcmxpbmcpLgoKMjAwMy0wOC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rhc2suYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsCgkgIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvc3lzZGVwcy5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGluY2x1ZGUvdGhyZWFkLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZmliZXIuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVJlbmFtZWQgYSBmZXcgVEVCIGZpZWxkcyB0byB1c2UgdGhlICJvZmZpY2lhbCIgbmFtZXMuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpX3ByaXZhdGUuaCwKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGNhYi5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsCgkgIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywgaW5jbHVkZS9zZXR1cGFwaS5oOgoJR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglJbXBsZW1lbnQgKG1vc3Qgb2YpIFNldHVwSXRlcmF0ZUNhYmluZXQuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6IE9sZWcgUHJva2hvcm92IDx4b2xlZ3Byb0ByYmNtYWlsLnJ1PgoJTm8gaGFuZGxlcyB3ZXJlIGluaGVyaXRlZCBpbiBDcmVhdGVQcm9jZXNzLCBhbGwgY2hpbGQgY29uc29sZSBwcm9ncmFtcwoJd2VyZSBzaWxlbnQuCglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUVuc3VyZSByZWRpcmVjdGVkIHN0cmVhbSBoYW5kbGUgZm9yIGNoaWxkIHByb2Nlc3MgYXJlIGFjdHVhbGx5Cglpbmhlcml0YWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQnV0dG9uIHdpZHRoIHNob3VsZCBiZSB0aGUgbGFyZ2VyIG9mIHRleHQgd2lkdGgvYml0bWFwIHdpZHRoLgoKCSogbGlicy93aW5lL2xvYWRlci5jOiBUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CglVc2UgTUFQX1RSWUZJWEVEIG9uIE5ldEJTRCBpZiBhdmFpbGFibGUuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvdGFzay5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBpbmNsdWRlL3N0YWNrZnJhbWUuaDoKCVJlbW92ZWQgc29tZSBubyBsb25nZXIgbmVlZGVkIGRlZmluaXRpb25zIGZyb20gc3RhY2tmcmFtZS5oLgoKCSogZGxscy9rZXJuZWwva3JubDM4Ni5leGUuc3BlYywgZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCUNvbnZlcnRlZCByZW1haW5pbmcgMTYtYml0IGZ1bmN0aW9ucyB0byB0aGUgbmV3IHZhcmFyZ3MgbWVjaGFuaXNtLgoKCSogZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsCgkgIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywgZGxscy93aW5lZG9zL3JlbGF5LmMsCgkgIG1lbW9yeS9zZWxlY3Rvci5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9leGNlcHQuYywgd2luZG93cy93aW4uYzoKCUF2b2lkIGluY2x1ZGluZyBzdGFja2ZyYW1lLmggaWYgaXQncyBub3QgbmVlZGVkLgoKCSogZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwva3JubDM4Ni5leGUuc3BlYywKCSAgZGxscy9rZXJuZWwvcmVsYXkxNi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlby5zcGVjLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsIGRsbHMvbXN2aWRlby92ZncxNi5oLAoJICBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywgZGxscy91c2VyL3dzcHJpbnRmLmMsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLAoJICB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJQWRkZWQgdmFyYXJncyBzdXBwb3J0IGZvciAxNi1iaXQgZW50cnkgcG9pbnRzLgoJQWRkZWQgLXJldDE2IGVudHJ5IHBvaW50IGZsYWcgdG8gYWxsb3cgMTYtYml0IGNkZWNsIGFuZCB2YXJhcmdzCglmdW5jdGlvbiB0byByZXR1cm4gMTYtYml0IHZhbHVlcyB0b28uCgoJKiBkbGxzL2RwbmhwYXN0L21haW4uYywgZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmMsIGRsbHMvdHdhaW4vdHdhaW4uaCwgaW5jbHVkZS93aW5kZWYuaCwKCSAgaW5jbHVkZS93dHlwZXMuaWRsLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBzb21lIHVubmVlZGVkIF9fV0lORVNSQ19fIHRlc3RzIGZyb20gdGhlIGhlYWRlcnMuCglNaXNjZWxsYW5lb3VzIGNsZWFudXBzIGFuZCBmaXhlcy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVVwZGF0ZSBETEwgbGlzdCwgYWRkIGEgbGluayB0byBtc2RuLmNvbS4KCjIwMDMtMDgtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvcHJvZmlsZS5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZHJpdmUuYywKCSAgZmlsZXMvcHJvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaDoKCU1vdmVkIHByb2ZpbGUgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoKCSogREVWRUxPUEVSUy1ISU5UUywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXIsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCVRoZSBpZjE2MzIgZGlyZWN0b3J5IG5vIGxvbmdlciBleGlzdHMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9sb2NhbC5jOgoJTW92ZWQgYSBmZXcgbW9yZSBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvbmVfbW9kdWxlLmMsIGRsbHMva2VybmVsL3JlbGF5MTYuYywKCSAgZGxscy9rZXJuZWwvc25vb3AxNi5jLCBkbGxzL250ZGxsLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGxvYWRlci9uZS9tb2R1bGUuYzoKCU1vdmVkIDE2LWJpdCByZWxheSBhbmQgc25vb3Agc3VwcG9ydCB0byBkbGxzL2tlcm5lbC4KCjIwMDMtMDgtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lY2ZnL21haW4uYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJV2FybiB1c2VycyBvZiB3aW5lY2ZnIGFib3V0IGl0cyBpbmNvbXBsZXRlbmVzcy4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIG1lbW9yeS9pbnN0ci5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYzoKCU1vdmVkIHNlbGVjdG9yIGZpeHVwIGZvciB0aGUgcmVsYXkgY29kZSB0byB0aGUgY2FsbHRvMTYgZXhjZXB0aW9uCgloYW5kbGVyLgoJTWFrZSBzdXJlIHRvIG9ubHkgdXNlIHBvcCBpbnN0cnVjdGlvbnMgdG8gbW9kaWZ5IHNlZ21lbnQgcmVnaXN0ZXJzIGluCgl0aGUgcmVsYXkgY29kZSB0byBzaW1wbGlmeSB0aGUgc2VsZWN0b3IgZml4dXAuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJzL3BvcnQvbWVtY3B5X3VuYWxpZ25lZC5jOgoJRG9uJ3QgYnVpbGQgbWVtY3B5X3VuYWxpZ25lZCBvbiAzODYgdG8gYXZvaWQgTVNWQyBicmVha2FnZSAocmVwb3J0ZWQKCWJ5IEpvbiBHcmlmZml0aHMpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWx3YXlzIHNldHVwIHRoZSBzZWxlY3Rpb24gY29sb3VyLCBub3QganVzdCBpbiBjdXN0b20gZHJhdy4KCgkqIGRsbHMvd2luZWRvcy9kZXZpY2VzLmMsIGRsbHMvd2luZWRvcy9kb3Nhc3BpLmMsCgkgIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MzMuYywgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywKCSAgZGxscy93aW5lZG9zL21vZHVsZS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTWFrZSBhbGwgdXNlcnMgb2YgRE9TVk1fRW50ZXIgZXhwbGljaXRseSBzZXQgVjg2IGZsYWcuCglGaXggbW91c2UgcmVsYXkgc3RhY2sgdXNhZ2UgaW4gcHJvdGVjdGVkIG1vZGUuCglSYXcgbW9kZSBzd2l0Y2ggbm93IGhhbmRsZXMgaW50ZXJydXB0IGZsYWcgY29ycmVjdGx5LgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS9tb2R1bGUuaCwKCSAgbWVtb3J5L2luc3RyLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJTW92ZWQgMTYtYml0IGNhbGxzIGluaXRpYWxpemF0aW9uIGFuZCBleGNlcHRpb24gaGFuZGxpbmcgdG8ga2VybmVsMzIuCglTdG9yZSB0aGUgY2FsbF90b18xNiByZXR1cm4gYWRkcmVzcyBvbiB0aGUgc3RhY2sgZnJvbSB0aGUgQyBjb2RlIHNvCgl0aGF0IHdlIGRvbid0IG5lZWQgdHdvIHZhcmlhbnRzIG9mIGNhbGxfdG9fMTZfcmVncy4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMS5jOgoJRml4ZWQgY29weS9wYXN0ZSBlcnJvciBpbiBXT1dDYWxsYmFjazE2RXggY2FsbCAoc3BvdHRlZCBieSBEbWl0cnkKCVRpbW9zaGtvdikuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlcGxhY2Ugc29tZSBtYWdpYyBudW1iZXJzIHdpdGggc3ltYm9scy4KCUFkZCBzYW5pdHkgY2hlY2tzIHNvIHRoYXQgVkdBIHdpbmRvdyBjYW5ub3QgYmUgdXNlZCB0byBhY2Nlc3MgbWVtb3J5CglvdXRzaWRlIGZyYW1lYnVmZmVyLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHRoZSBoaXQgdGVzdCBmb3IgZnVsbCByb3cgc2VsZWN0IGluIFJFUE9SVCBtb2RlIChmb3VuZCwgZGVidWdnZWQsCglhbmQgdGVzdGVkIGJ5IEVyaWMgUG91ZWNoKS4KCjIwMDMtMDgtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywKCSAgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLCBkbGxzL2tlcm5lbC9zeXN0ZW0uYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy93aW5lZG9zL2ludDMxLmMsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd293bnQzMi5oLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywKCSAgd2luZG93cy93aW5wcm9jLmM6CglFeHRlbmRlZCBXT1dDYWxsYmFjazE2RXggdG8gc3VwcG9ydCByZWdpc3RlciBmdW5jdGlvbnMgdG9vLiAgVGhpcwoJYWxsb3dzIHNpbXBsaWZ5aW5nIHRoZSB3aW5lX2NhbGxfdG9fMTYgYXNzZW1ibHkgY29kZSBieSBtb3ZpbmcgcGFydCBvZgoJaXQgdG8gQyBjb2RlLCBhbmQgZ2V0dGluZyByaWQgb2YgdGhlIGV4dHJhIGtlcm5lbCBleHBvcnRzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggdGhlIGNyZWF0aW9uIG9mIHRyZWV2aWV3IHdpdGggY2hlY2tib3hlcy4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW46IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVNwbGl0IHdpbjE2LzMyIHN1cHBvcnQuCgoJKiBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tb2R1bGUuaCwKCSAgbG9hZGVyL2xvYWRvcmRlci5jOgoJTW92ZWQgMTYtYml0IGJ1aWx0aW4gbW9kdWxlIGhhbmRsaW5nIHRvIGRsbHMva2VybmVsL25lX21vZHVsZS5jLgoKCSogZGxscy9kM2RpbS92ZXJzaW9uLnJjLCBkbGxzL2RpbnB1dC92ZXJzaW9uLnJjLCBkbGxzL2RwbGF5eC92ZXJzaW9uLnJjOgoJVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CglTZXQgdmVyc2lvbiB0byA4LjEuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fcy5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9Fcy5yYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvcnNyYy5yYywKCSAgZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd3BzX0VzLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCU1vcmUgU3BhbmlzaCB0cmFuc2xhdGlvbnMuCgoJKiBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsCgkgIGRsbHMvZHNvdW5kL3JlZ3N2ci5jLCBkbGxzL2Rzb3VuZC92ZXJzaW9uLnJjOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJSW1wbGVtZW50IERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyIGZvciBkc291bmQuZGxsLAoJYW5kIGFkZCBPbGVTZWxmUmVnaXN0ZXIgdmVyc2lvbiBzdHJpbmcuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0l0LnJjLCBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIEl0YWxpYW4gcmVzb3VyY2VzLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9JdC5yYzogSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglNaW5vciBmaXhlcy4KCgkqIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwgZGxscy9zaGRvY3Z3L3JlZ3N2ci5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsIGRsbHMvc2hkb2N2dy92ZXJzaW9uLnJjOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJSW1wbGVtZW50IERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyIGZvciBzaGRvY3Z3LmRsbCwKCWFuZCBhZGQgT2xlU2VsZlJlZ2lzdGVyIHZlcnNpb24gc3RyaW5nLgoKCSogZGxscy9xdWFydHovLmN2c2lnbm9yZSwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jLAoJICBkbGxzL3F1YXJ0ei92ZXJzaW9uLnJjOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJSW1wbGVtZW50IERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyIGZvciBxdWFydHouZGxsLAoJYW5kIGFkZCBPbGVTZWxmUmVnaXN0ZXIgdmVyc2lvbiBzdHJpbmcuCgoJKiBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsCgkgIGRsbHMvZHBsYXl4L3JlZ3N2ci5jLCBkbGxzL2RwbGF5eC92ZXJzaW9uLnJjOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJSW1wbGVtZW50IERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyIGZvciBkcGxheXguZGxsLAoJYW5kIGFkZCBPbGVTZWxmUmVnaXN0ZXIgdmVyc2lvbiBzdHJpbmcuCgoJKiBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsCgkgIGRsbHMvYXZpZmlsMzIvcmVnc3ZyLmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUltcGxlbWVudCBEbGxSZWdpc3RlclNlcnZlciBhbmQgRGxsVW5yZWdpc3RlclNlcnZlciBmb3IgYXZpZmlsMzIuZGxsLAoJYW5kIGFkZCBPbGVTZWxmUmVnaXN0ZXIgdmVyc2lvbiBzdHJpbmcuCgoJKiBjb250cm9scy9zdGF0aWMuYzogSWdvciBHcmFoZWsgPGlnb3JnQGNhZGxpbmsuY29tPgoJU2VuZCBTVE5fQ0xJQ0tFRCBhZCBTVE5fREJMQ0xLIG1lc3NhZ2VzIHRvIHBhcmVudCB3aW5kb3cgaWYgU1NfTk9USUZZCglpcyBlbmFibGVkLgoKCSogZGxscy9vbGUzMi9naXQuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJSW4gdGhlIGdsb2JhbCBpbnRlcmZhY2UgdGFibGU6CgktIFByaW50IHdhcm5pbmdzIHdoZW4gdGhpbmdzIGdvIHdyb25nLgoJLSBBbHRlciB0aGUgd2F5IHdlIGRvIHJlZmNvdW50aW5nLgoJLSBEb24ndCByZWxlYXNlIHRoZSBzdHJlYW0gb24gcmV0cmlldmFsLCBqdXN0IHJld2luZCBpdCBpbnN0ZWFkLgoJLSBJbXBsZW1lbnQgdGhyZWFkIHNhZmV0eS4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvbnRkbGwvLmN2c2lnbm9yZSwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglHb3QgcmlkIG9mIDE2LWJpdCBnbHVlIGNvZGUgZ2VuZXJhdGlvbiBzaW5jZSBpdCBpcyBubyBsb25nZXIgdXNlZC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9uZV9tb2R1bGUuYywgZGxscy9rZXJuZWwvbmVfc2VnbWVudC5jLAoJICBkbGxzL2tlcm5lbC90YXNrLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvdGFzay5oLAoJICBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywKCSAgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Rhc2suYywgbXNkb3MvaW50MjEuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jOgoJTW92ZWQgbW9zdCBvZiB0aGUgMTYtYml0IHRhc2sgc3VwcG9ydCBhbmQgTkUgbW9kdWxlIGxvYWRlciB0bwoJZGxscy9rZXJuZWwuCgoyMDAzLTA4LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kbWJhbmQvTWFrZWZpbGUuaW4sIGRsbHMvZG1iYW5kL2JhbmQuYywgZGxscy9kbWJhbmQvYmFuZHRyYWNrLmMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZF9tYWluLmMsIGRsbHMvZG1iYW5kL2RtYmFuZF9wcml2YXRlLmgsCgkgIGRsbHMvZG1iYW5kL3JlZ3N2ci5jLCB3aW5lZGVmYXVsdC5yZWcsIGRsbHMvZG1jb21wb3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywgZGxscy9kbWNvbXBvcy9jaG9yZG1hcHRyYWNrLmMsCgkgIGRsbHMvZG1jb21wb3MvY29tcG9zZXIuYywgZGxscy9kbWNvbXBvcy9kbWNvbXBvc19tYWluLmMsCgkgIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfcHJpdmF0ZS5oLCBkbGxzL2RtY29tcG9zL3JlZ3N2ci5jLAoJICBkbGxzL2RtY29tcG9zL3NpZ25wb3N0dHJhY2suYywgZGxscy9kbWltZS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbWltZS9hdWRpb3BhdGguYywgZGxscy9kbWltZS9kbWltZV9tYWluLmMsCgkgIGRsbHMvZG1pbWUvZG1pbWVfcHJpdmF0ZS5oLCBkbGxzL2RtaW1lL2dyYXBoLmMsCgkgIGRsbHMvZG1pbWUvbHlyaWNzdHJhY2suYywgZGxscy9kbWltZS9tYXJrZXJ0cmFjay5jLAoJICBkbGxzL2RtaW1lL3BhcmFtY29udHJvbHRyYWNrLmMsIGRsbHMvZG1pbWUvcGF0dGVybnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvcGVyZm9ybWFuY2UuYywgZGxscy9kbWltZS9yZWdzdnIuYywgZGxscy9kbWltZS9zZWdtZW50LmMsCgkgIGRsbHMvZG1pbWUvc2VnbWVudHN0YXRlLmMsIGRsbHMvZG1pbWUvc2VndHJpZ2dlcnRyYWNrLmMsCgkgIGRsbHMvZG1pbWUvc2VxdHJhY2suYywgZGxscy9kbWltZS9zb25nLmMsIGRsbHMvZG1pbWUvc3lzZXh0cmFjay5jLAoJICBkbGxzL2RtaW1lL3RlbXBvdHJhY2suYywgZGxscy9kbWltZS90aW1lc2lndHJhY2suYywKCSAgZGxscy9kbWltZS90b29sLmMsIGRsbHMvZG1pbWUvdHJhY2suYywgZGxscy9kbWltZS93YXZldHJhY2suYywKCSAgZGxscy9kbWxvYWRlci9NYWtlZmlsZS5pbiwgZGxscy9kbWxvYWRlci9jb250YWluZXIuYywKCSAgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9tYWluLmMsIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLAoJICBkbGxzL2RtbG9hZGVyL2dldGxvYWRlci5jLCBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlcnN0cmVhbS5jLCBkbGxzL2RtbG9hZGVyL3JlZ3N2ci5jLAoJICBkbGxzL2Rtc2NyaXB0L01ha2VmaWxlLmluLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X21haW4uYywKCSAgZGxscy9kbXNjcmlwdC9kbXNjcmlwdF9wcml2YXRlLmgsIGRsbHMvZG1zY3JpcHQvcmVnc3ZyLmMsCgkgIGRsbHMvZG1zY3JpcHQvc2NyaXB0LmMsIGRsbHMvZG1zY3JpcHQvc2NyaXB0dHJhY2suYywKCSAgZGxscy9kbXN0eWxlL01ha2VmaWxlLmluLCBkbGxzL2Rtc3R5bGUvYXVkaXRpb250cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvY2hvcmR0cmFjay5jLCBkbGxzL2Rtc3R5bGUvY29tbWFuZHRyYWNrLmMsCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywgZGxscy9kbXN0eWxlL2Rtc3R5bGVfcHJpdmF0ZS5oLAoJICBkbGxzL2Rtc3R5bGUvbWVsb2R5Zm9ybXVsYXRpb250cmFjay5jLCBkbGxzL2Rtc3R5bGUvbW90aWZ0cmFjay5jLAoJICBkbGxzL2Rtc3R5bGUvbXV0ZXRyYWNrLmMsIGRsbHMvZG1zdHlsZS9yZWdzdnIuYywKCSAgZGxscy9kbXN0eWxlL3N0eWxlLmMsIGRsbHMvZG1zdHlsZS9zdHlsZXRyYWNrLmMsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywgZGxscy9kbXN5bnRoL3JlZ3N2ci5jLAoJICBkbGxzL2Rtc3ludGgvc3ludGguYywgZGxscy9kbXN5bnRoL3N5bnRoc2luay5jLAoJICBkbGxzL2RtdXNpYy9NYWtlZmlsZS5pbiwgZGxscy9kbXVzaWMvYnVmZmVyLmMsIGRsbHMvZG11c2ljL2Nsb2NrLmMsCgkgIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywgZGxscy9kbXVzaWMvZG11c2ljLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19tYWluLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsCgkgIGRsbHMvZG11c2ljL2Rvd25sb2FkLmMsIGRsbHMvZG11c2ljL2Rvd25sb2FkZWRpbnN0cnVtZW50LmMsCgkgIGRsbHMvZG11c2ljL2luc3RydW1lbnQuYywgZGxscy9kbXVzaWMvb2JqZWN0LmMsIGRsbHMvZG11c2ljL3BvcnQuYywKCSAgZGxscy9kbXVzaWMvcG9ydGRvd25sb2FkLmMsIGRsbHMvZG11c2ljL3RocnUuYywKCSAgZGxscy9kbXVzaWMzMi9kbXVzaWMzMi5zcGVjLCBkbGxzL2RtdXNpYzMyL2RtdXNpYzMyX21haW4uYzoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJLSBpbXBsZW1lbnRlZCBsb2FkZXIsIGxvYWRlcidzIHN0cmVhbSBhbmQgbG9hZGluZyBvZiBvYmplY3RzIChub3cgeW91CgkgIGNhbiB1c2UgYnVpbHRpbiBkbWxvYWRlciBhbmQgbmF0aXZlIG90aGVyIGRtKi5kbGxzKQoJLSBpbXBsZW1lbnRlZCBwcm9wZXIgY3JlYXRpb24gb2Ygb2JqZWN0cyBhbmQgcmV0cmlldmFsIG9mIGRtdXNpYwoJICBpbnRlcmZhY2VzIGZyb20gdGhlbSAob2JqZWN0LCBzdHJlYW0sIC4uLikKCS0gaW1wbGVtZW50ZWQgYWxsICJzdGFuZGFyZCB0cmFjayB0eXBlcyIgYW5kIGFwcHJvcHJpYXRlIHN0cmVhbSAoZm9yCgkgIGRtYmFuZCwgbG9hZGluZyBpcyBhbG1vc3QgY29tcGxldGUpCgktIGNsZWFuZWQgc29tZSBvYnNvbGV0ZSBzdHVmZgoJLSBzcGxpdCBkZWJ1ZyBjaGFubmVscwoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJRmlsaXAgTmF2YXJhIDx4bmF2YXJhQHZvbG55LmN6PgoJRml4ZWQgcHJvdG90eXBlcyBvZiBDcmVhdGVTdGF0dXNXaW5kb3dBL1csIEltYWdlTGlzdF9Db3B5LAoJSW1hZ2VMaXN0X0VuZERyYWcsIEltYWdlTGlzdF9TZXRJbWFnZUNvdW50LgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9TaS5yYywgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjOgoJUm9rIE1hbmRlbGpjIDxyb2subWFuZGVsamNAZ2ltYi5vcmc+CglBZGRlZCBTbG92ZW5pYW4gdHJhbnNsYXRpb24uCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6IFJlbW92ZWQgb2Jzb2xldGUgV0lOMzJfTGFzdEVycm9yIGRlZmluaXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeC9tYWtlIHRoZSBjYXNlIG9mIEJvY2hzIGFuZCBQbGV4ODYgbW9yZSBjb25zaXN0ZW50LgoJQWRkIENvZGVXZWF2ZXJzIHRvIHRoZSBsaXN0IG9mIGNvbnRyaWJ1dG9ycyAoY3VycmVudGx5IGhvc3RzIFdpbmVIUSkuCglUd2VhayB0aGUgJ2hvdyB0byBzdWJtaXQgcGF0Y2hlcycgRkFRLgoJQWRkIEt5bGl4IGFuZCBNdXNpY01hdGNoIEp1a2VCb3ggdG8gdGhlIGxpc3Qgb2YgYXBwbGljYXRpb25zIHBvcnRlZAoJdXNpbmcgV2luZShsaWIpLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglCZSBtb3JlIGV4cGxpY2l0IHdoZW4gZGVzY3JpYmluZyB3aGF0IGJlbG9uZ3MgaW4gV2luZSAoQVBJKSBhbmQgd2hhdAoJZG9lcyBub3QgYmVsb25nIGluIFdpbmUgKGRyaXZlcnMsIFdpbmRvd3MgYXBwbGV0cywgd2luZG93IG1hbmFnZXJzLAoJZXRjLikuIEFsc28gcG9pbnQgdG8gcHJvamVjdHMgd2hlcmUgc3VjaCBjb250cmlidXRpb25zIHdvdWxkIGJlIG1vcmUKCWFwcHJvcHJpYXRlLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBbnN3ZXIgdGhpcyBldGVybmFsIHF1ZXN0aW9uOgoJQ2FuIEkgdXNlIFdpbmUgdG8gbWFrZSB0aGUgV2luZG93cyBkcml2ZXIgZm9yIG15IG5ldHdvcmsgY2FyZCAvCglncmFwaGljcyBjYXJkIC8gc2Nhbm5lciAvIGV0Yy4gd29yayBvbiBVbml4PwoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgYW4gZW50cnkgYW5zd2VyaW5nIHRoZSBldGVybmFsIHF1ZXN0aW9uOgoJV2hlbiB3aWxsIFdpbmUgaW50ZWdyYXRlIGFuIHg4NiBDUFUgZW11bGF0b3I/CgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLAoJICBkbGxzL3R3YWluL2NhcGFiaWxpdHkuYywgZGxscy90d2Fpbi9kc19pbWFnZS5jLAoJICBkbGxzL3R3YWluL2RzbV9jdHJsLmMsIGRsbHMvdHdhaW4vdHdhaW4zMl9tYWluLmMsCgkgIGRsbHMvd2luYXNwaS9hc3BpLmMsIHRvb2xzL2JpbjJyZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJRml4ZXMgZm9yIGJ1aWxkaW5nIHdpdGggdzMyYXBpIGhlYWRlcnMgb24gTWluZ3cuCgoJKiBpbmNsdWRlL3dpbm5scy5oOiBSZW1vdmVkIG5vIGxvbmdlciB1c2VkIGludGVybmFsIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS93dHlwZXMuaDoKCVJlbW92ZWQgcmVmZXJlbmNlIHRvIHRoZSBXSU5FX1VOSUNPREVfVEVYVCBtYWNybyB0aGF0IG5vIGxvbmdlcgoJZXhpc3RzLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX0VzLnJjLCBkbGxzL2F2aWZpbDMyL3JzcmMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLCBkbGxzL3dpbmluZXQvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfRXMucmMsIHByb2dyYW1zL2Nsb2NrL0VzLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjLCBwcm9ncmFtcy9yZWdlZGl0L0VzLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmMsIHByb2dyYW1zL3ZpZXcvRXMucmMsCgkgIHByb2dyYW1zL3ZpZXcvdmlld3JjLnJjLCBwcm9ncmFtcy93aW5lY2ZnL0VzLnJjLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcucmMsIHByb2dyYW1zL3dpbmhlbHAvRXMucmM6CglKb3PpIE1hbnVlbCBGZXJyZXIgT3J0aXogPGptZm8xOTgyQHlhaG9vLmVzPgoJU29tZSBuZXcgU3BhbmlzaCB0cmFuc2xhdGlvbnMgYW5kIGltcHJvdmVtZW50cyB0byBvdGhlciBleGlzdGluZwoJb25lcy4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzogT2xlZyBQcm9raG9yb3YgPHhvbGVncHJvQHJiY21haWwucnU+CglBdm9pZCBjcmFzaCBpbiBXQ01EX3J1bl9wcm9ncmFtIHdoZW4gbm8gZXh0ZW5zaW9uIHdhcyBzcGVjaWZpZWQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTb21lIGFwcGxpY2F0aW9ucyBkZXBlbmQgb24gdGhlIG9yZGVyIG9mIGluaXRpYWxpemF0aW9uIHN0ZXBzIG9mIHRoZQoJY3VzdG9tIGZpbGUgb3BlbiBkaWFsb2cuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJvdGVjdCBTeXN0ZW1QYXJhbWV0ZXJzSW5mb0EoU1BJX0dFVHh4eCkgZnJvbSBOVUxMIHB2UGFyYW0uCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVR3ZWFrICdXaWxsIHRoZXJlIGJlIGEgV2luZG93cyB2ZXJzaW9uIG9mIFdpbmU/JzoKCS0gQWRkIGEgcG9pbnRlciB0byB0aGUgTWluR1cgcHJvamVjdAoJLSBGaXggdGhlIFJlYWN0T1MgY2FzZQoJLSBFeHBsYWluIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoZXNlIHBvcnRpbmcgcHJvamVjdHMKCjIwMDMtMDgtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcHRyYWNlLmM6IENvcGUgd2l0aCB3YWl0NCBiZWluZyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL3N5c2RlcHMuYywgaW5jbHVkZS90aHJlYWQuaCwKCSAgc2NoZWR1bGVyL3RocmVhZC5jOgoJU3RvcmUgdGhlIGRlYnVnIGluZm8gc3RydWN0dXJlIG9uIHRoZSB0aHJlYWQgc3RhY2suCglNb3ZlZCB0aHJlYWQgaW5pdGlhbGl6YXRpb24gY29kZSBmcm9tIHN5c2RlcHMuYyB0byB0aHJlYWQuYyB0byBhdm9pZAoJYW4gaW5kaXJlY3Rpb24uCgoJKiBpbmNsdWRlL2ltbS5oLCBpbmNsdWRlL3Jhcy5oLCBpbmNsdWRlL3dpbmRvd3N4Lmg6CglSZW1vdmVkIGEgZmV3IHJlbWFpbmluZyBXSU5WRVIgY2hlY2tzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglJdCBzZWVtcyBGcmVlQlNEIG5vIGxvbmdlciByZXF1aXJlcyBsaWJwdGhyZWFkIHdoZW4gbGlua2luZyB3aXRoCglPcGVuR0wuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUNvcnJlY3RseSBwYXNzIHRoZSBleGNlcHRpb24gdG8gdGhlIGFwcGxpY2F0aW9uIHdoZW4KCUJyZWFrT25GaXJzdENoYW5jZSBpcyAwLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlX0VuLnJjLCBwcm9ncmFtcy9jbG9jay9JdC5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvSXQucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCVNtYWxsIHJlc291cmNlcyBmaXhlcy4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9JdC5yYywgZGxscy9hdmlmaWwzMi9yc3JjLnJjOgoJSXZhbiBMZW8gTXVycmF5LVNtaXRoIDxwdW90aUBpbndpbmQuaXQ+CglBZGRlZCBJdGFsaWFuIHJlc291cmNlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHVzZWxlc3MgY29tbWVudHMgdGhhdCBjbHV0dGVyIHRoZSBjb2RlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBmb3IgKHVuZG9jdW1lbnRlZCkgU0hDcmVhdGVMaW5rcy4KCgkqIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXBkYXRlIGluc3RhbGwgc2NyaXB0IHRvIG1hdGNoIGN1cnJlbnQgYnVpbGQgcHJvY2Vzcy4KCUZpeCBhIHdhcm5pbmcgaW4gZ2VuZXJhdGVkIGRsbCBub3cgd2UgYnVpbGQgd2l0aCAtRFNUUklDVC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcGUgd2l0aCBwb3RlbnRpYWxseSBtb3ZlZCBhbmQgcmVzaXplZCBmaWxlIHZpZXcgd2luZG93LgoKMjAwMy0wOC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZzE2LmMsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RldmVudW0vZGV2ZW51bS5yYywgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jLAoJICBkbGxzL21zYWNtL21zYWRwMzIvbXNhZHAzMi5jLCBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL21wZWdsMy5jLCBkbGxzL250ZGxsL3Jlc291cmNlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjE2LmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvc2hsd2FwaS9hc3NvYy5jLCBkbGxzL3NobHdhcGkvdGhyZWFkLmMsCgkgIGRsbHMvc2hsd2FwaS91cmwuYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy93aW5tbS9qb3lzdGljay5jLAoJICBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvd2lubmxzLmgsIG1lbW9yeS92aXJ0dWFsLmMsCgkgIG1zZG9zL2lvcG9ydHMuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvaW5wdXQuYzoKCXdpbm5scy5oIG11c3Qgbm90IGluY2x1ZGUgd2luYmFzZS5oLgoKCSogZGxscy9kc291bmQvdGVzdHMvcHJvcHNldC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgdGVzdHMgZm9yIGJ1ZmZlciBwcm9wZXJ0eSBzZXRzLgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglTcGxpdCBwcm9wZXJ0eSBzZXRzIGludG8gdHdvIHR5cGVzOiBidWZmZXIgYW5kIHByaXZhdGUuCgoJKiBkbGxzL3dpbmVkb3MvZnB1LmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1ha2UgRlBVIGVtdWxhdGlvbiB1c2UgQ1M6SVAgd2hlbiBkZXRlcm1pbmluZyBsb2NhdGlvbiBvZiBjYWxsaW5nCglzb2Z0d2FyZSBpbnRlcnJ1cHQuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9pbnQzMS5jLCBkbGxzL3dpbmVkb3MvcmVsYXkuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBfX3dpbmVfY2FsbF9mcm9tXzE2X3JlZ3MgY2FsbCBmcmFtZSBtYW5hZ2VtZW50IGNvZGUKCWZyb20gcmF3IG1vZGUgc3dpdGNoIGhhbmRsZXIuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglGaXggYnVpbGRpbmcgbGlid2luZV91bmljb2RlIHdpdGggdzMyYXBpIGhlYWRlcnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRGxvcGVuIGxpYm5jdXJzZXMuc28gaW4gd2luZWNvbnNvbGUuCgoJKiB0b29scy9NYWtlZmlsZS5pbjogQklORElSIGlzIG5vIGxvbmdlciBuZWVkZWQuCgoJKiB0b29scy93aW5lZ2NjLmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCVN1cHBvcnQgLW1jb25zb2xlLgoKCSogdG9vbHMvd2luZWdjYy5jLCB0b29scy93aW5ld3JhcC5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJUmVtb3ZlIGhhcmRjb2RlZCBCSU5ESVIgcGF0aHMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbGlicy93aW5lL01ha2VmaWxlLmluLAoJICBsaWJzL3dpbmUvZXJybm8uYzoKCVJlbW92ZSB0aGUgZHVtbXkgcHRocmVhZCBmdW5jdGlvbnMgYW5kIHVzZSAtbHB0aHJlYWQgaW5zdGVhZCB0bwoJcmVzb2x2ZSBtaXNzaW5nIHN5bWJvbHMgaW4gR0wgbGlicy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6CglOZXJpanVzIEJhbGl1bmFzIDxuZXJpanVzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCVVwZGF0ZWQgTFQga2V5Ym9hcmQuCgoJKiBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS9maWxlLmg6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmVtb3ZlZCB0aGUgRE9TRlNfIHNwZWNpZmljIHRpbWUgcmVsYXRlZCBjb252ZXJzaW9uIHJvdXRpbmUsIGFuZCBtYWtlCgl1c2Ugb2YgdGhlIG50ZGxsIGVxdWl2YWxlbnRzLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVRyYW5zbGF0ZSBhIGZldyBtb3JlIGtlcm5lbDMyIGNhbGxzIGludG8gdGhlIG50ZGxsIGVxdWl2YWxlbnRzLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlbW92ZWQgY29kZSBmb3IgaGFuZGxpbmcgJHtWQVJ9IGNvbnN0cnVjdHMgaW4gLmluaSBmaWxlcy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzogPHdpbmVAZnJvdHoub3JnPgoJRml4IHBhcmFtZXRlciB0byBzbmRfcGNtX3N3X3BhcmFtc19zZXRfc2lsZW5jZV9zaXplKCkuCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXBwbHkgb25seSBzcGVjaWZpZWQgdGVzdHMuCglJbXBsZW1lbnQgSVNfVEVYVF9VTklDT0RFX1JFVkVSU0VfU0lHTkFUVVJFLCBJU19URVhUX1VOSUNPREVfU1RBVElTVElDUwoJYW5kIElTX1RFWFRfVU5JQ09ERV9OVUxMX0JZVEVTIHRlc3RzLgoJUmV2ZXJ0IElTX1RFWFRfVU5JQ09ERV9PRERfTEVOR1RIIHRlc3QuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLAoJICBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN0dWIgb3V0IHRoZSBfW3ddcG9wZW4vX3BjbG9zZSgpIGZ1bmN0aW9ucy4KCjIwMDMtMDgtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOgoJV2UgbmVlZCB0byBpZ25vcmUgU1RBVFVTX09CSkVDVF9UWVBFX01JU01BVENIIGVycm9ycyB0b28gd2hlbiBzZXR0aW5nCgl0aGUgcHJvY2VzcyBjb25zb2xlLgoKCSogcHJvZ3JhbXMvY2xvY2svSXQucmMsIHByb2dyYW1zL2Nsb2NrL3JzcmMucmMsCgkgIHByb2dyYW1zL2NtZGxndHN0L0l0LnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vSXQucmM6CglJdmFuIExlbyBNdXJyYXktU21pdGggPHB1b3RpQGlud2luZC5pdD4KCUFkZGVkIEl0YWxpYW4gcmVzb3VyY2VzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3N5c3RlbS5kcnYuc3BlYywKCSAgZGxscy9rZXJuZWwvc3lzdGVtLnNwZWMsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCVJlbmFtZWQgc3lzdGVtLmRsbCB0byBzeXN0ZW0uZHJ2LgoKCSogZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsCgkgIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLAoJICBmaWxlcy9wcm9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBtaXNjL3JlZ2lzdHJ5LmMsIG1zZG9zL2lvcG9ydHMuYzoKCVJlcGxhY2VkIHJlbWFpbmluZyBjYWxscyB0byBQUk9GSUxFX0dldFdpbmVJbmlTdHJpbmcvQm9vbCBieSBkaXJlY3QKCXJlZ2lzdHJ5IGFjY2Vzc2VzLgoKCSogd2luZWRlZmF1bHQucmVnOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgaThuIGVudHJpZXMuCgoJKiBkbGxzL21zdmNydC9jcHAuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVVzZSBleGNlcHRpb24gYXMgdGhlIGJhc2UgZm9yIGFsbCBleGNlcHRpb24gZGVyaXZlZCBjbGFzc2VzLgoJSW1wbGVtZW50IHR5cGVfaW5mbyBtZXRob2RzIGNvcnJlY3RseS4KCUFkZCBzdGF0aWMgUlRUSSBmb3IgZXhwb3J0ZWQgb2JqZWN0cy4KCVRocm93IGV4Y2VwdGlvbnMgd2hlbiBydW4gdGltZSBjYXN0cyBmYWlsLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCByZWdpc3RyeSBrZXkgdW5sb2FkaW5nLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgcmVncmVzc2lvbiBpbiBwcm9jZXNzIGNyZWF0aW9uIChzdGQgaGFuZGxlIGluaGVyaXRhbmNlKS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZjcnRkL21zdmNydGQuc3BlYywgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCV9mdG9sIHNob3VsZCByZXR1cm4gYSA2NC1iaXQgaW50IChzcG90dGVkIGJ5IEpvbiBHcmlmZml0aHMpLgoKCSogZGxscy93aW5lZG9zL3JlbGF5LmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdoZW4gZm9yY2luZyBjYWxsIHRvIERPUyByZWxheSBmcm9tIHByb3RlY3RlZCBtb2RlLCBtYWtlIHN1cmUgdGhhdAoJcmVsYXkgc2VlcyBvcmlnaW5hbCBzdGFjayBhbmQgY29kZSBwb2ludGVycy4gTWFrZSBpdCBwb3NzaWJsZSBmb3IgRE9TCglyZWxheSB0byBtb2RpZnkgY29kZSBhbmQgc3RhY2sgcG9pbnRlcnMuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IEVyd2luIFdvbGZmIDxlcndpbndvbGZmbmxAbWljcm9mb3JtYXRpY2EuY29tPgoJUmVtb3ZlZCBWRVJTSU9OIHR5cGVkZWYuCgoJKiBwcm9ncmFtcy93aW5lZGJnL21zYy5jOiBHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVdyYXAgZXJyb3ItcHJvbmUgbXNjIHN5bWJvbCBsb2FkaW5nIHdpdGggYSBfX1RSWSBibG9jay4KCgkqIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFsbG9jYXRlIHNwYWNlIHRvIGNvbnRhaW4gdGhlIElNQUdFX05UX0hFQURFUlMgc3RydWN0dXJlIChJbWFnZUxvYWQKCWZ1bmN0aW9uKS4KCUFkZCBzb21lIG1vcmUgdHJhY2VzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggdW5yZWFjaGFibGUgVFZIVF9PTklURU1TVEFURUlDT04gaW4gVFJFRVZJRVdfTEJ1dHRvbkRvd24uCgoJKiBkbGxzL250ZGxsL3RpbWUuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1ha2UgUnRsVGltZVRvU2Vjb25kc1NpbmNlMTk3MCBjb25zaXN0ZW50IHdpdGggb3RoZXIgdGltZSBjYWxscy4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoyMDAzLTA4LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwKCSAgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBvYmplY3RzL2RjLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTcGVsbGluZyBhbmQgY2FzZSBmaXhlcy4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL0VzLnJjLCBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjOgoJSm9z6SBNYW51ZWwgRmVycmVyIE9ydGl6IDxqbWZvMTk4MkB5YWhvby5lcz4KCUFkZGVkIFNwYW5pc2ggdHJhbnNsYXRpb24uCgoJKiBkbGxzL3dpbmVkb3MvZnB1LmM6IEFkZGVkIG1pc3NpbmcgXG4gaW4gVFJBQ0UgY2FsbHMuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6CglGcmVlIHRoZSBkZWJ1ZyBpbmZvIHdoZW4gbWFraW5nIGEgY3JpdGljYWwgc2VjdGlvbiBnbG9iYWwuCgoJKiBsaWJzL3dwcC9wcmVwcm9jLmMsIHRvb2xzL2JpbjJyZXMuYywgdG9vbHMvd2lkbC91dGlscy5jLAoJICB0b29scy93aW5lZHVtcC9uZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVBvcnRhYmlsaXR5IGZpeGVzLgoKCSogaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29haWRsLmlkbDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNYWtlIEkxIGZpZWxkcyBleHBsaWNpdGx5IHNpZ25lZC4KCUFkZCBzdXBwb3J0IGZvciBJOCBmaWVsZHMgaW4gdmFyaWFudHMuCglBZGQgYSBtaXNzaW5nIHVuZG9jdW1lbnRlZCBGQURGXyBmbGFnLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9nbF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIG11bHRpLXRleHR1cmluZy4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGluY2x1ZGUvd2lubmxzLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIHNvbWUgbmV3IHR5cGVzIGFuZCBmdW5jdGlvbnMuCglSZW1vdmUgSVRVX0lNUExFTUVOVEVEX1RFU1RTLCBpdHMgbm90IHBhcnQgb2YgdGhlIFdpbjMyIEFwaS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgV2FyYmxhZGUgaW1hZ2UgbG9hZGluZy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL3Byb3BzZXQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGJ1ZyB3aGVyZSBsYXN0IHRlc3RzIHdlcmUgbm90IGV4ZWN1dGVkLgoJUHJpbnQgb3V0IHNvdW5kIGRldmljZSBpbmZvLgoKCSogZGxscy93aW5lZG9zL2ludGVycnVwdHMuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJRml4IENQVSBmbGFnIGhhbmRsaW5nIHdoZW4gaW50ZXJuYWwgaW50ZXJydXB0cyBhcmUgYnJhbmNoZWQgdG8uCgoJKiBsb2FkZXIvbW9kdWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglXaW5kb3dzIGlnbm9yZXMgdmFsdWVzIG9mIGVfY3BhcmhkciBhbmQgZV9jcmxjIG9mIHRoZSBNWiBoZWFkZXIuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBSYXVsIDx6b21iaTgyQGhvdC5lZT4KCVNtYWxsIEVzdG9uaWFuIGtleWJvYXJkIGZpeC4KCgkqIGRsbHMvY2FiaW5ldC9mZGkuYzogR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglEb24ndCB0b3VjaCBwZXJmIGluIEZESUlzQ2FiaW5ldCwgSW5zdGFsbFNoaWVsZCBtYXkgYWxyZWFkeSBoYXZlIGZyZWVkCglpdC4KCgkqIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXNlICQoRVhFRVhUKSBmb3IgdGhlIHdpbmVkdW1wIGV4ZWN1dGFibGUuCgoJKiB0b29scy93cmMvd3JjLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglPbmx5IHN0YXRpY3MgYXJlIHN1cmUgdG8gYmUgc2V0IHRvIDAsIGV4cGxpY2l0bHkgaW5pdGlhbGlzZSBnbG9iYWxzLgoKCSogZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlbW92ZSByZWR1bmRhbnQgd2luZSBzcGVjaWZpYyAjaW5jbHVkZS4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglvbGUvIGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTcGVsbGluZyBmaXhlcy4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNhc3QgaHJlc3VsdCBlcnJvciBjb2RlcyB0byBIUkVTVUxULgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggdGhpbmdzIGJyb2tlbiBieSB0aGUgbGFzdCBUUkVFVklFV19VcGRhdGVEaXNwSW5mbyBwYXRjaC4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlZ3Jlc3Npb24gZml4ZXMgZm9yIE50e1JlYWR8V3JpdGV9RmlsZToKCS0gYWN0dWFsbHkgYmxvY2sgaW4gVElNRU9VVCBtb2RlCgktIGluIG92ZXJsYXBwZWQgbW9kZSwgaWYgYW55IGRhdGEgaXMgYWxyZWFkeSBhdmFpbGFibGUgdGhlbiBwcm9jZXNzIGl0CgkgIHdpdGhvdXQgcmV0dXJuaW5nIGEgcGVuZGluZyBzdGF0dXMgY29kZQoKCSogcHJvZ3JhbXMvcmVnZWRpdC9QdC5yYywgcHJvZ3JhbXMvcmVnZWRpdC9yc3JjLnJjOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCUxvY2FsaXphdGlvbiB0byB0aGUgUG9ydHVndWVzZSBvZiBCcmF6aWwuCgoyMDAzLTA4LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zeXNkZXBzLmMsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9wdGhyZWFkLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYzoKCU1vdmVkIF9fZXJybm9fbG9jYXRpb24oKSBoYW5kbGluZyB0byBwdGhyZWFkLmMsIGFuZCBhZGRlZCBzaW1pbGFyCgloYW5kbGluZyBmb3IgX19yZXNfc3RhdGUoKS4KCgkqIGRsbHMvbXNpL01ha2VmaWxlLmluOiBBZGRlZCBtaXNzaW5nIGRlcGVuZGVuY3kuCgoJKiBwcm9ncmFtcy9ydW5kbGwzMi9ydW5kbGwzMi5jOiBGaXhlZCBpbmRlbnRhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuaCwKCSAgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVtb3ZlIGZyb20gZG9jcyAvIGNvbmZpZyB0b29sIHVzZWxlc3MgLyBvYnNvbGV0ZWQgb3B0aW9ucy4KCgkqIGRsbHMvZDNkOC9kM2Q4X21haW4uYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC91dGlscy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCURYVDEvMy81IHN1cHBvcnQgd2FzIGJyb2tlbiwgYnV0IHVubm90aWNlYWJsZSBzaW5jZSB3ZSBhbHNvIGluZGljYXRlZAoJaXQgd2Fzbid0IHN1cHBvcnRlZC4KCgkqIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jOgoJRS4gQy4gRi4gV29sZmYgPGVyd2lud29sZmZubEBtaWNyb2Zvcm1hdGljYS5jb20+CglBZGRlZCBXaW5kb3dzIDJrMy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBXaWRlQnl0ZVRvTXVsdGlDaGFyIG5vdCBzdHJsZW5XLgoJVXNlIEhlYXBBbGxvYywgbm90IG1hbGxvYy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4ZWQgY29tbWFuZCBsaW5lIHN1cHBvcnQuCgoyMDAzLTA4LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDMwODEzLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAzLTA4LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFsaWFzIF92c25wcmludGYgYXMgdnNucHJpbnRmLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJU3VwcG9ydCBmb3IgTWFjIE9TIFggcG93ZXJwYyByZWdpc3RlciBuYW1lcyAoYmFzZWQgb24gYSBwYXRjaCBieQoJUGllcnJlIGQnSGVyYmVtb250KS4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGNvbXBpbGF0aW9uIGVycm9yLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJVXNlIF9fV0lORV9fIGluc3RlYWQgb2YgX1dJTkVfLCBfV0lOMzIuCgoJKiBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvd2luZW1lbnVidWlsZGVyLmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglSZW1vdmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBpbmNsdWRlcyA8c2lnbmFsLmg+LCA8d2FpdC5oPi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IGZvciBUUkVFVklFV19VcGRhdGVEaXNwSW5mbyB0byB0ZXN0IHdpdGggdGhlIGNvcnJlY3QgY2FsbGJhY2tNYXNrLgoKCSogbWlzYy92ZXJzaW9uLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCBXaW5kb3dzIDIwMDMgdG8gdGhlIHZlcnNpb25zIFdpbmUgY2FuIHJldHVybi4KCgkqIG9iamVjdHMvZGMuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgaW5pdERhdGEgYXMgd2VsbC4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0Lmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgZGVmaW5pdGlvbnMgZm9yIHRoZSBTX0lTKiBtYWNyb3MuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgYSBidW5jaCBvZiBJTUFHRV9TSVpFT0ZfKiBjb25zdGFudHMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzcGVjIGZvciBJbml0aWF0ZVN5c3RlbVNodXRkb3duRXhBLCBhcyBwb2ludGVkIG91dCBieSBTdGVmYW4KCUxlaWNodGVyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNpLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNpL01ha2VmaWxlLmluLCBkbGxzL21zaS9kaXN0aW5jdC5jLCBkbGxzL21zaS9oYW5kbGUuYywKCSAgZGxscy9tc2kvbXNpLmMsIGRsbHMvbXNpL21zaS5zcGVjLCBkbGxzL21zaS9tc2lwcml2LmgsCgkgIGRsbHMvbXNpL21zaXF1ZXJ5LmMsIGRsbHMvbXNpL29yZGVyLmMsIGRsbHMvbXNpL3F1ZXJ5LmgsCgkgIGRsbHMvbXNpL3JlY29yZC5jLCBkbGxzL21zaS9zZWxlY3QuYywgZGxscy9tc2kvc3FsLnksCgkgIGRsbHMvbXNpL3N1bWluZm8uYywgZGxscy9tc2kvdGFibGUuYywgZGxscy9tc2kvdG9rZW5pemUuYywKCSAgZGxscy9tc2kvd2hlcmUuYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc2kuaCwKCSAgaW5jbHVkZS9tc2lxdWVyeS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTWljcm9zb2Z0IEluc3RhbGxlciAobXNpLmRsbCkuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWZpbGUvcmVzb3VyY2UuaCwKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglFeHRlbmRlZCB3aW5lZmlsZSBmb3IgYW4gb3B0aW9uYWwgc2hlbGwgbmFtZXNwYWNlIG1vZGUuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6CglEb24ndCB0cnkgdG8gYWxsb2NhdGUgdGhlIGRlYnVnIGluZm8gYmVmb3JlIHRoZSBwcm9jZXNzIGhlYXAgZXhpc3RzLgoKMjAwMy0wOC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywgZGxscy9nZGkvZHJpdmVyLmMsCgkgIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL3J0bC5jLAoJICBkbGxzL250ZGxsL3ZpcnR1YWwuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvdXNlci9kZGUvbWlzYy5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsCgkgIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luc29jay9hc3luYy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsIGZpbGVzL3Byb2ZpbGUuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvd2luYmFzZS5oLCBvYmplY3RzL2dkaW9iai5jLAoJICBzY2hlZHVsZXIvcHRocmVhZC5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgd2luZG93cy9jdXJzb3JpY29uLmMsCgkgIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJQWxsb2NhdGUgRGVidWdJbmZvIGZpZWxkIGZvciBhbGwgY3JpdGljYWwgc2VjdGlvbnMgKGJhc2VkIG9uIGEgcGF0Y2gKCWJ5IEFsZXggUGFzYWR5bikuCglHZXQgcmlkIG9mIHRoZSBXaW5lLXNwZWNpZmljIENSSVRJQ0FMX1NFQ1RJT05fSU5JVCBtYWNyby4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBBdm9pZCBjcmFzaGVzIHdoZW4gZGV2bW9kZSBpcyBudWxsLgoKCSogZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvdHR5ZHJ2L2RjLmMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luZ2RpLmgsCgkgIG9iamVjdHMvZGMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IENyZWF0ZURDIHRvIHVuaWNvZGUgaW4gdGhlIGRyaXZlciBpbnRlcmZhY2UuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzogTWlub3IgdHJhY2luZyBmaXguCgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgWCBkaXNwbGF5IGFuZCBsb2NhbGUgb2YgWCBJbnB1dCBNZXRob2QgaW4gdGhlIGRlYnVnIGxvZy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvd2luLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIEZsYXNoV2luZG93RXguCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tdi5yYzogSm9oYW4gRGFobGluIDxqZGFobGluQGFzeW5jLmNvbS5icj4KCVVwZGF0ZWQgU3dlZGlzaCB0cmFuc2xhdGlvbi4KCgkqIGRsbHMvbnRkbGwvc3lzZGVwcy5jLCBzY2hlZHVsZXIvcHRocmVhZC5jOgoJRml4ZWQgdGhlIHB0aHJlYWQgd3JhcHBlcnMgdG8gd29yayB3aXRoIHRoZSBuZXcgZ2xpYmMvbGludXh0aHJlYWRzCglpbnRlcmZhY2UgaW4gZ2xpYmMgMi4zLjIuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9rZXJuZWwvcG93ZXJtZ250LmMsIGRsbHMva2VybmVsL3RocmVhZC5jLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5udC5oLCB3aW4zMi9uZXdmbnMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb25zb2xpZGF0ZSBhbGwga2VybmVsIHBvd2VyIG1hbmFnZW1lbnQgZnVuY3Rpb25zLgoJUHJvdmlkZSBwcm90b3R5cGVzIGFuZCBzdHVicyBmb3IgbWlzc2luZyBmdW5jdGlvbnMuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSWdub3JlIHNvbWUga2V5Ym9hcmQgZXZlbnRzLiBJbiBhbnkgY2FzZSB3ZSBkb24ndCBrbm93IGhvdyB0byBoYW5kbGUKCXRoZW0uCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgc29tZSB3aW5zcG9vbCBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHR3byBwcmludGVyIGVycm9yIGNvZGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRXhwb3J0IFNIQmluZFRvUGFyZW50IChhbHJlYWR5IGltcGxlbWVudGVkKS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywKCSAgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YnMgZm9yIGFkdmFwaTMyIGZ1bmN0aW9ucyBJbml0aWF0ZVN5c3RlbVNodXRkb3duRXgsIFNldEVudHJpZXNJbkFjbAoJYW5kIFNldE5hbWVkU2VjdXJpdHlJbmZvLgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oOiBQaGlsIEtyeWxvdiA8cGhpbEBuZXdzdGFyLnJpbmV0LnJ1PgoJQWRkZWQgRVNfU0VMRUNUSU9OQkFSIHN0eWxlLgoKMjAwMy0wOC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy9zdGF0aWMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglXTV9QQUlOVCh3UGFyYW0pIG1pZ2h0IGJlIGEgdmFsaWQgSERDLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFjY2VwdCBTSVpFX01BWElNSVpFRCBhcyBvbmUgb2Ygc3RhdHVzZXMgb2YgTURJIHdpbmRvd3MuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDogUGhpbCBLcnlsb3YgPHBoaWxAbmV3c3Rhci5yaW5ldC5ydT4KCUFkZGVkIHNvbWUgbWlzc2luZyBGUl8qIGRlZmluZXMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzogSm9oYW4gRGFobGluIDxqZGFobGluQGFzeW5jLmNvbS5icj4KCU1ha2Ugc3VyZSB3aW5oZWxwIGRvZXNuJ3Qgc2Nyb2xsIG91dHNpZGUgb2YgaXRzIGRpc3BsYXkgYXJlYS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3R1YnMgZm9yIEJ1aWxkVHJ1c3RlZVdpdGhTaWQoQS9XKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCXJlc29sdi5oIG1heSByZXF1aXJlIG5ldGluZXQvaW4uaCwgc28gdHJ5IHRvICNpbmNsdWRlIHRoYXQgd2hlbgoJY2hlY2tpbmcgZm9yIHRoZSBmb3JtZXIuCgoyMDAzLTA4LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFrZSBkb19ibG9jayB1c2UgcG9sbCgpIHJhdGhlciB0aGFuIHNlbGVjdCgpIChiYXNlZCBvbiBhIHBhdGNoIGJ5CglNaWtlIEhlYXJuKS4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmMsIGRsbHMvY29tY2F0L3JlZ3N2ci5jLCBkbGxzL2N0bDNkL2N0bDNkLmMsCgkgIGRsbHMvY3RsM2QvY3RsM2Quc3BlYywgZGxscy9jdGwzZC9jdGwzZDMyLmMsIGRsbHMvY3RsM2QvY3RsM2R2Mi5zcGVjLAoJICBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZDNkOS9kM2Q5X21haW4uYywgZGxscy9pcGhscGFwaS9pZmVudW0uYywKCSAgZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLAoJICBkbGxzL29sZTMyL21lbWxvY2tieXRlczE2LmMsIGRsbHMvb2xlMzIvb2xlMi5zcGVjLAoJICBkbGxzL29sZTMyL3JlZ3N2ci5jLCBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vcGVuZ2wzMi93Z2wuYywKCSAgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLAoJICBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5pbmV0L2Nvb2tpZS5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwgdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwKCSAgdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwgdG9vbHMvd2luYXBpL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svcHJlcHJvY2Vzc29yLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3RyZWV2aWV3LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglGaXhlZCBidWlsZCB3aXRoIG9sZGVyIGNvbXBpbGVycy4KCgkqIGRsbHMvZDNkaW0vdmVyc2lvbi5yYywgZGxscy9kaW5wdXQvdmVyc2lvbi5yYzoKCVRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJU2V0IHZlcnNpb24gdG8gRGlyZWN0WCA3LgoKMjAwMy0wOC0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHBsYXl4L3ZlcnNpb24ucmM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJU2V0IHZlcnNpb24gdG8gRGlyZWN0WCA3LgoKCSogZGxscy9kc291bmQvcHJvcHNldC5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJTW92ZSBkZWNsYXJhdGlvbnMgdG8gY29tcGlsZSB3aXRoIG9sZGVyIGNvbXBpbGVycy4KCgkqIHRvb2xzL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUJldHRlciBzdXBwb3J0IGZvciBfX2RlY2xzcGVjKCkgKGJhc2VkIG9uIGEgc3VnZ2VzdGlvbiBmcm9tIE92ZQoJS2FhdmVuKS4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6CglTdXBwaGFjaG9rZSBTdW50aXdpY2hheWEgPG1yY2hva2VAb3BlbnRsZS5vcmc+CglBZGRlZCBUaGFpIGtleWJvYXJkIGxheW91dC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogR2V0IHJpZCBvZiB3cm9uZy9jb25mdXNpbmcgX3N0cmR1cG5BIHVzYWdlLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWdlZGl0L0VuLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdlZGl0L2Fib3V0LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvY2hpbGR3bmQuYywgcHJvZ3JhbXMvcmVnZWRpdC9mcmFtZXduZC5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L2xpc3R2aWV3LmMsIHByb2dyYW1zL3JlZ2VkaXQvbWFpbi5jLAoJICBwcm9ncmFtcy9yZWdlZGl0L21haW4uaCwgcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LmMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuaCwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZXNvdXJjZS5oLCBwcm9ncmFtcy9yZWdlZGl0L3Jlc291cmNlLnJjLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JzcmMucmMsIHByb2dyYW1zL3JlZ2VkaXQvdHJlZXZpZXcuYzoKCVJvYmVydCBEaWNrZW5zb24gPHJvYmRAcmVhY3Rvcy5vcmc+CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBHVUkgZm9yIHJlZ2VkaXQuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy8uY3ZzaWdub3JlOiBBZGRlZCBwcm9wc2V0Lm9rLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglTeXN0ZW1QYXJhbWV0ZXJzSW5mbyByZXR1cm5pbmcgYSB2YWx1ZSBmb3IgV2FsbHBhcGVyIGRvZXMgbm90IG1lYW4KCXRoYXQgdGhlIHJlZ2lzdHJ5IGtleSBleGlzdHMuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2hhc2guYywgcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJVXNlIHRoZSBFTEYgc2VjdGlvbnMgZm9yIHRoZSBhZGRyZXNzZXMgb2YgZ2xvYmFscywgYXMgdGhlIFNUQUJTIGFyZQoJbGlrZWx5IHRvIGJlIHdyb25nLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYywgcHJvZ3JhbXMvd2luZWRiZy90eXBlcy5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZC5jb2hlbkB2aXJnaW4ubmV0PgoJLSBQcmludCBzaG9ydCBBU0NJSSBzdHJpbmdzIHdpdGhvdXQgdGhlICIuLi4iCgktIE1ha2UgcHJpbnRpbmcgZm9yIFVuaWNvZGUgc3RyaW5ncyBtb3JlIHNpbWlsYXIgdG8gQVNDSUkuCgoyMDAzLTA4LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2ZpbGVzb3VyY2UuYywKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZGVkIEZpbGUgU291cmNlIChBc3luYykgRmlsdGVyLgoKCSogZGxscy9kc291bmQvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgc29tZSBDT00gYW5kIHByb3BlcnR5IHNldCB0ZXN0cy4KCUFkZGVkIExJQlVVSUQgdG8gbWFrZWZpbGUuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIGNsYXNzIGZhY3RvcmllcyBmb3IgRGlyZWN0U291bmRDYXB0dXJlLCBEaXJlY3RTb3VuZEZ1bGxEdXBsZXgKCWFuZCBEaXJlY3RTb3VuZFByaXZhdGUuCglBZGRlZCBlcnJvciBjaGVja2luZyB0byBRdWVyeUludGVyZmFjZSBhbmQgQ3JlYXRlSW50ZXJmYWNlLgoJQWRkZWQgc29tZSBtb3JlIGZ1bmN0aW9uYWxpdHkgdG8gcHJvcGVydHkgc2V0cy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUF2b2lkIG5vbi1wb3J0YWJsZSBsb25nIGxvbmcgY29uc3RhbnRzLgoKCSogZGxscy9rZXJuZWwvbG9jYWwxNi5jLCBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLmMsCgkgIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCVdhcm5pbmcgZml4ZXMuCgoJKiBsaWJzL3V1aWQvdXVpZC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglEZWZpbmVkIEZNVElEcyBmb3Igb2xlMzIuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglPb3BzLCBiYWNrIHRvIGhhcmQgY29kaW5nIGluaXRpYWwgdGh1bWIgc2l6ZSB1bnRpbCB3ZSBmaWd1cmUgb3V0IGhvdwoJaXQgcmVhbGx5IHNob3VsZCB3b3JrLgoJRml4IHRoZSBjaGFubmVsIHNpemUvc2VsZWN0aW9uIHJhbmdlIGZvciB0aGUgVEJTX0VOQUJMRVNFTFJBTkdFCglzdHlsZS4KCU9uZSBwaXhlbCB0d2Vha3MgaW4gc2V2ZXJhbCBzcG90cy4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9lbnVtbWVkaWEuYywKCSAgZGxscy9xdWFydHovZW51bXBpbnMuYywgZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYywKCSAgZGxscy9xdWFydHovZmlsdGVybWFwcGVyLmMsIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovcGluLmMsCgkgIGRsbHMvcXVhcnR6L3Bpbi5oLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gQnVnZml4IHdoZW4gYWRkaW5nIGZpbHRlcnMgdG8gZ3JhcGggZHVlIHRvIG5vdCBpbml0aWFsaXppbmcKCSAgdmFyaWFibGVzIG9uIGNyZWF0aW9uIG9mIGdyYXBoLgoJLSBSZW1vdmUgY2x1ZSBvZiB3aGVyZSBJIGNvcGllZCBvbmUgb2YgdGhlIGNvcHlyaWdodCBtZXNzYWdlcyBmcm9tLgoJLSBBZGQgaW1wbGVtZW50YXRpb24gb2YgaW5wdXQgYW5kIG91dHB1dCBwaW5zIHdoaWNoIHdpbGwgYmUgdXNlZCBieSBhCgkgIGxvdCBvZiBmaWx0ZXJzIGluIFF1YXJ0ei4KCjIwMDMtMDgtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gRG9jdW1lbnRhdGlvbiBvZiB0aGUgaW5kZXguZGF0IGZpbGVzLgoJLSBSZWFkIHN1cHBvcnQgZm9yICJUZW1wb3JhcnkgSW50ZXJuZXQgRmlsZXMiLgoJLSBMaW1pdGVkIHdyaXRlIHN1cHBvcnQgZm9yICJUZW1wb3JhcnkgSW50ZXJuZXQgRmlsZXMiIChwcm92aWRlZCBmaWxlCgkgIGRvZXMgbm90IG5lZWQgZW5sYXJnaW5nKS4KCS0gRGVsZXRlIHN1cHBvcnQgKHVudGVzdGVkIG9uIGFueXRoaW5nIG90aGVyIHRoYW4gVGVtcG9yYXJ5IEludGVybmV0CgkgIEZpbGVzKS4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJQXZvaWQgRFNBIHR5cGUgY29uZmxpY3QgYmV0d2VlbiBzc2wuaCBhbmQgY29tbWN0cmwuaC4KCgkqIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglNYWtlIElQcm9wZXJ0QmFnX1JlYWQgdXNlIGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFycmF5IHJhdGhlciB0aGFuIGEKCXN0YXRpYyBvbmUuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3N0YXRlYmxvY2suYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglPbmx5IHJlYXBwbHkgdGhlIHRleHR1cmUgc3RhdGVzIG5lY2Vzc2FyeSB3aGVuIGEgZGlmZmVyZW50IHRleHR1cmUKCWdldHMgYm91bmQgdG8gdGhlIHNhbWUgdGV4dHVyZSB1bml0LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2dsX2FwaS5oLAoJICBkbGxzL2RkcmF3L2dsX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcG9ydCB0aGUgbWltYXAgbG9kIGJpYXMgZXh0ZW5zaW9uLgoKCSogb2JqZWN0cy9mb250LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVc2Ugc2FtZSBmb3JtdWxhIHRvIGNvbnZlcnQgZnJvbSBkZXZpY2UgdG8gbG9naWNhbCB1bml0cyBhcyBldmVyeXdoZXJlCgllbHNlLgoKCSogd2luZG93cy93aW5wcm9jLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcm90ZWN0IENhbGxXaW5kb3dQcm9jQS9XIGZyb20gTlVMTCBwb2ludGVycy4KCgkqIGRsbHMvY2FiaW5ldC9mZGkuYzogR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglNYW55IHdvcmRzIGFib3V0IGNhYmluZXRzLgoKCSogdG9vbHMvd2luZW1ha2VyOiBNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJRml4IC1pIG9wdGlvbiBmb3Igd2luZWJ1aWxkIGxpbmtpbmcuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOiBEYXZpZCBIYW1tZXJ0b24gPGRhdmlkQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGh0dHAtUE9TVCAod2VsbCwgYW55IGtpbmQgb2YgaHR0cCByZXF1ZXN0IHRoYXQgc2VuZHMKCWRhdGEgaW4gdGhlIGxwT3B0aW9uYWwgZmllbGQpLgoKCSogbWlzYy9jcHUuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCB0aGUgTUh6IGRldGVjdGlvbiBjb2RlLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9kcmF3cHJpbS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCWdsQ29sb3JNYXRlcmlhbCBlbmFibGUvZGlzYWJsZSBzZXR1cCBpcyBvbmx5IGRvbmUgd2hlbiByZWFsbHkgbmVjZXNzYXJ5LgoJSWYgZ2xDb2xvck1hdGVyaWFsIGlzIHNldCB0byB0cmFjayBjdXJyZW50IGNvbG9yIGFuZCBub25lIGlzIHN1cHBsaWVkLAoJaXQgZ2V0cyBkaXNhYmxlZC4KCWdsTWF0ZXJpYWwgaXMgcmVzZXQgd2hlbiBJIHRoaW5rIGl0IGlzIG5lY2Vzc2FyeS4KCVNsb3cgbW9kZSBub3cgaGFzIGRlZmF1bHRzIGZvciB3aGVuIGZ2ZiBwYXJtcyBhcmUgbm90IHN1cHBsaWVkIChhcyBwZXIKCWZhc3QgbW9kZSkuCglTbG93IG1vZGUgbm93IHNldHMgdXAgdGhlIHNwZWN1bGFyIGNvbG9yIChmb3Jnb3QgdGhhdCBiaXQgcHJldmlvdXNseSwKCUkgdGhpbmshKS4KCVRyYWNlIG5vdyBsaXN0cyB0aGUgZnJvbnQsIGJhY2sgYW5kIHN0ZW5jaWwgYnVmZmVycyBmb3IgZWFzZSBvZgoJZGVidWdnaW5nLgoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZ2xfYXBpLmgsCgkgIGRsbHMvZGRyYXcvZ2xfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUHJvcGVyIE1JUlJPUiB0ZXh0dXJlIGFkZHJlc3Mgc3VwcG9ydC4KCgkqIGRsbHMvZGV2ZW51bS9wYXJzZWRpc3BsYXluYW1lLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJSUNyZWF0ZURldkVudW1fQ3JlYXRlQ2xhc3NFbnVtZXJhdG9yIGNhbiByZXR1cm4gU19GQUxTRSB3aGVuCgl0aGVyZSBpcyBubyBjYXRlZ29yeSwgc28gcmV0dXJuIE1LX0VfTk9PQkpFQ1QgZnJvbQoJSVBhcnNlRGlzcGxheU5hbWVfUGFyc2VEaXNwbGF5TmFtZS4KCgkqIHdpbmRvd3Mvd2luLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWtlIEdldFdpbmRvd0luZm8oKSB3b3JrIGZvciBhbGwgd2luZG93cyBhbmQgcmV0dXJuIGNvcnJlY3QgdmFsdWVzLgoKCSogb2JqZWN0cy9mb250LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0bHkgdHJ1bmNhdGUgdG1GaXJzdENoYXIsIHRtTGFzdENoYXIsIHRtQnJlYWtDaGFyIGF0IDI1NSBpbiB0aGUKCXByb2Nlc3Mgb2YgVy0+QSBjb252ZXJzaW9uLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSByZW1uYW50cyBvZiB0aGUgb2xkIGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IFN0ZXBoYW4gQkVVWkUgPGZiaWdndW5AaG90bWFpbC5jb20+CgktIEF2b2lkIGRpdmlzaW9uIGJ5IHplcm8gaW4gVFJBQ0tCQVJfR2V0VGljUG9zCgktIE1hbmFnZSBuZWdhdGl2ZSByYW5nZSBUUkFDS0JBUl9EcmF3T25lVGljCgoyMDAzLTA4LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN3c29jay8uY3ZzaWdub3JlLAoJICBkbGxzL21zd3NvY2svTWFrZWZpbGUuaW4sIGRsbHMvbXN3c29jay9tc3dzb2NrLmMsCgkgIGRsbHMvbXN3c29jay9tc3dzb2NrLnNwZWMsIGRsbHMvbXN3c29jay92ZXJzaW9uLnJjOgoJQW5kcukgSm9oYW5zZW4gPGFuZHJlam9oQGMyaS5uZXQ+CglJbnRyb2R1Y2VkIHRoZSBtc3dzb2NrIGRsbC4KCUFkZGVkIHN0dWJzIGZvciBUcmFuc21pdEZpbGUoKSBhbmQgQWNjZXB0RXgoKS4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCU1ha2Ugc3VyZSBkbGxuYW1lIGRvZXNuJ3QgZ2V0IG9wdGltaXplZCBvdXQgKHNwb3R0ZWQgYnkgTWFyY3VzCglNZWlzc25lcikuCgoJKiBkbGxzL250ZGxsL3N5c2RlcHMuYzogUHJvcGVybHkgZnJlZSB0aHJlYWQgc3RhY2tzIG9uIE5QVEwgc3lzdGVtcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVRoZSBpbml0aWFsIHNpemUgb2YgdGhlIHRodW1iIGRlcGVuZHMgb24gU01fQ1lDQVBUSU9OLgoJQ29ycmVjdGx5IGRyYXcgdGhlIHRodW1iIGFzIGluIFdpbmRvd3MuCglUaGUgY2hhbm5lbC90aHVtYiBwb3NpdGlvbiBhbHNvIGRlcGVuZHMgb24gVEJTX05PVElDS1MuCglUaGUgZmlyc3QgYW5kIGxhc3QgdGljIG1hcmtzIHNob3VsZCBiZSBpbnNldCBmcm9tIHRoZSBjaGFubmVsIGxlbmd0aAoJYnkgaGFsZiB0aGUgdGh1bWIgd2lkdGguCglXaGVuIFRCU19CT1RIIHN0eWxlIHNldCwgbWFrZSBzdXJlIHRvIGRyYXcgYm90aCBzZXRzIG9mIHRpY3MuCgoJKiBwcm9ncmFtcy93aW5lZGJnL21zYy5jOiBBbmRy6SBKb2hhbnNlbiA8YW5kcmVqb2hAYzJpLm5ldD4KCUF2b2lkIGNyYXNoaW5nIHdoZW4gdW5hYmxlIHRvIHJlYWQgcGRiIGZpbGUuCgoJKiBkbGxzL2NhYmluZXQvZmRpLmM6IEdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJUmVtZW1iZXIgZGVjb21wcmVzc2lvbiBzdGF0ZSBkdXJpbmcgZXh0cmFjdGlvbiwgc28gYXMgdG8gYXZvaWQKCXVubmVjZXNzYXJ5IHdvcmsuCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuaCwgZGxscy9jb21tZGxnL3ByaW50ZGxnMTYuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVNwbGl0IFdpbjE2LzMyIHByaW50ZXIgZGlhbG9ncy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlcG9ydCBzb21lIG5ld3MgY2FwcyB0aGF0IHdlcmUgYWRkZWQgaW4gRFg2LgoKMjAwMy0wNy0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9jb21jYXQvY29tY2F0LnNwZWMsCgkgIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZXZlbnVtL2RldmVudW0uc3BlYywKCSAgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZGlucHV0OC9kaW5wdXQ4LnNwZWMsCgkgIGRsbHMvZG1iYW5kL2RtYmFuZC5zcGVjLCBkbGxzL2RtY29tcG9zL2RtY29tcG9zLnNwZWMsCgkgIGRsbHMvZG1pbWUvZG1pbWUuc3BlYywgZGxscy9kbWxvYWRlci9kbWxvYWRlci5zcGVjLAoJICBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0LnNwZWMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlLnNwZWMsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoLnNwZWMsIGRsbHMvZG11c2ljL2RtdXNpYy5zcGVjLAoJICBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9kcG5ocGFzdC9kcG5ocGFzdC5zcGVjLAoJICBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywgZGxscy9tcHIvbXByLnNwZWMsCgkgIGRsbHMvbXNpc3lzL21zaXN5cy5vY3guc3BlYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywKCSAgZGxscy9xY2FwL3FjYXAuc3BlYywgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYzoKCU1ha2UgdGhlIERsbFJlZ2lzdGVyU2VydmVyLCBEbGxSZWdpc3RlclNlcnZlckV4LCBEbGxVbnJlZ2lzdGVyU2VydmVyLAoJRGxsR2V0Q2xhc3NPYmplY3QgYW5kIERsbENhblVubG9hZE5vdyBmdW5jdGlvbnMgcHJpdmF0ZSAoc3VnZ2VzdGVkIGJ5CglKb24gR3JpZmZpdGhzKS4KCgkqIGRsbHMvY2FiaW5ldC9jYWJpbmV0LmgsIGRsbHMvY2FiaW5ldC9mZGkuYzoKCUdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBFUlIoIldBUk5JTkciKSBqdXN0IGRvZXNuJ3QgbG9vayByaWdodCA7KQoJLSB0cmVhdCB6ZXJvIGZpbGUgaGFuZGxlIGFzIGludmFsaWQgaWYgdGhlIGNhbGxiYWNrIHJldHVybnMgaXQKCS0gcHJvdmlkZSB0aGUgc2FtZSBhcmdzIGFzIFdpbmRvd3MgdG8gdGhlIE9wZW4gY2FsbGJhY2sKCgkqIGRvY3VtZW50YXRpb24vUEFDS0FHSU5HLCB0b29scy93aW5laW5zdGFsbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJJ2dyZXAgLXEnIGlzIG5vdCBwb3J0YWJsZSAtPiBkb24ndCB1c2UgaXQuCgoJKiBkbGxzL2F2aWZpbDMyL2V4dHJhY2h1bmsuYywgZGxscy9hdmlmaWwzMi9leHRyYWNodW5rLmgsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNvbWUgc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXhlZCB0aGUgVEVYQ09PUkRJTkRFWCBjb2RlLgoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvaGVscGVyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgZGRyYXdfdGV4IHRvIGFkZCB0ZXh0dXJlIHNub29waW5nIHdpdGhvdXQgbmVlZGluZyB0byByZWNvbXBpbGUuCgoyMDAzLTA3LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJQWRkZWQgLXByaXZhdGUgZmxhZyBmb3IgZW50cnkgcG9pbnRzIHRoYXQgc2hvdWxkbid0IGJlIGltcG9ydGVkIGZyb20KCW90aGVyIGRsbHMuCglTdXBwb3J0IFBSSVZBVEUgZmxhZyBpbiAuZGVmIGZpbGVzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEpvbgoJR3JpZmZpdGhzKS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Dbi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfQ3MucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0VvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRmkucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19IdS5yYywgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Lby5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsIGRsbHMvY29tbWRsZy9jZGxnX05vLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU2sucmMsIGRsbHMvY29tbWRsZy9jZGxnX1N2LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19XYS5yYywgZGxscy9jb21tZGxnL2NkbGdfWmgucmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wcm92ZSBoYW5kbGluZyBvZiBjdXN0b20gZGlhbG9nIHRlbXBsYXRlcyBwYXNzZWQgdG8KCUdldE9wZW5GaWxlTmFtZS4KCgkqIG1pc2MvY3B1LmMsIHdpbjMyL25ld2Zucy5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglNZXJnZSBDUFUgZGV0ZWN0aW9uIGNvZGUgaW50byBtaXNjL2NwdS5jLgoJQWRkIHN1cHBvcnQgZm9yIE1oeiByZWdpc3RyeSBrZXkuCgoJKiBwcm9ncmFtcy9jbG9jay93aW5jbG9jay5jOiBTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglJbmNsdWRlIHBvcnQuaCBzbyB3ZSBkZWZpbmUgTV9QSSBvbiBNaW5ndyBidWlsZC4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU21hbGwgc3BlbGxpbmcvcHVuY3R1YXRpb24gZml4ZXMuCglTbWFsbCByZXBocmFzaW5ncy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQmV0dGVyIGNhcHMgc3VwcG9ydCAoaWUgbW9yZSBpbiBsaW5lIHdpdGggd2hhdCBHTCByZXBvcnRzKS4KCgkqIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJQW5kcukgSm9oYW5zZW4gPGFuZHJlam9oQGMyaS5uZXQ+CglBZGRlZCBhIGR1bW15IGltcGxlbWVudGF0aW9uIG9mIHRoZSBfc2V0X2Vycm9yX21vZGUoKSBmdW5jdGlvbi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJVXNlIHNhbWUgR1VJRHMgYXMgd2luMmsgYW5kIHhwIGZvciBkc291bmQgZHJpdmVycy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBhIGJ1ZyB3aGVyZSBhIE5VTEwgcHJpbWFyeSBidWZmZXIgcG9pbnRlciBpcyB1c2VkIHdoZW4gdGhlCglEaXJlY3RTb3VuZCBvYmplY3QgZGlkbid0IGNyZWF0ZSBwcm9wZXJseS4KCjIwMDMtMDctMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLAoJICBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9wZW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gR2V0T2JqZWN0IGlzIGNhbGxlZCB3aXRoIGEgTlVMTCBwb2ludGVyLCByZXR1cm4gdGhlIG9iamVjdCdzCglzaXplLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3RyYWNlLmMsIHdpbmRvd3MvaW5wdXQuYzoKCUltcGxlbWVudGVkIGludGVyLXRocmVhZCBTZW5kTWVzc2FnZUNhbGxiYWNrLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgYSBkZHJhd19mcHMgZGVidWcgY2hhbm5lbAoJLSBjaGVja2VkIHdoYXQgV2luZG93cyBkb2VzIG9uIGVtcHR5IHN1cmZhY2UgZGVzY3JpcHRpb24KCS0gZml4IHRoZSBHZXRUZXh0dXJlU3RhZ2VTdGFnZSBjYWxsCgoJKiBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS9zaGxvYmouaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglGaXhlZCBBbnNpIHZlcnNpb24gb2YgUmVuZGVyRklMRU5BTUUgYW5kIGltcGxlbWVudCBhIFVuaWNvZGUgdmVyc2lvbi4KCUltcGxlbWVudGVkIENGU1RSX0ZJTEVOQU1FIHdpdGggVW5pY29kZSBmaWxlbmFtZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4ZWQgR2V0RmlsZUV0dHJpYnV0ZXNFeCBkZWZpbmUuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglFeHRlbmQgZm9yIGFkZGl0aW9uYWwgU2hlbGwgQ29udGVudCBhbmQgQXR0cmlidXRlIEZsYWdzLgoKCSogYWNsb2NhbC5tNCwgY29uZmlndXJlOiBUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CglNYWtlIFdJTkVfR0VUX1NPTkFNRSB3b3JrIG9uIE5ldEJTRC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmgsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IEAxMywgMTYwLCAxNjEsIDE3MywgMTc3LCAxNzgsIDE4OSwgMTkyLCAyMjEsIDIzOCwgMjM5LCAyNTcsCgkyNzgsIDI3OSwgMjg1LCAyODcsIDM1NSwgMzYzLCA0MTMsIENvbG9yUkdCVG9ITFMuCglTdHViIEAxOTEsQ29sb3JBZGp1c3RMdW1hLgoJTWlzYyBjbGVhbnVwcyBhbmQgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKMjAwMy0wNy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJRGlzYWJsZSBnY2Mgc3RyaWN0IGFsaWFzaW5nIG9wdGltaXphdGlvbiBmb3Igbm93LgoKCSogZGxscy9udGRsbC9udC5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9NYWtlZmlsZS5pbiwKCSAgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3Rva2VuLmMsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBzZWN1cml0eSB0b2tlbiBvYmplY3QgaW4gd2luZXNlcnZlci4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCVNldCBvbGUzMiBuYXRpdmUgZm9yIGRjb205NS85OC4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbjogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJTW92ZSBjb21tMTYuYyB0byB0aGUgMTYtYml0IHNvdXJjZXMuCgoJKiBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbjogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQWRkIG50ZGxsIHRvIGxpc3Qgb2YgaW1wb3J0cyBmb3IgdXJsbW9uLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCU1ha2UgdGhlIFBvd2VyUEMgaW50ZXJsb2NrZWQgYXNzZW1ibGVyIGNvZGUgdm9sYXRpbGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFN0ZWZhbiBIYWxsZXIgPHNoQG1vdW50cG9pbnQuY2g+CglJZ25vcmluZyBMSVNUVklFV19TY3JvbGxDb2x1bW5zKCkgcmVxdWVzdCBpZiBubyBjb2x1bW5zIGluIGxpc3QuCgoJKiBkbGxzL250ZGxsL3N5c2RlcHMuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQWRkZWQgUG93ZXJQQyBzdXBwb3J0IGluIFNZU0RFUFNfU3dpdGNoVG9UaHJlYWRTdGFjay4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBkbGxzL3dpbmluZXQvcnNyYy5yYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfUHQucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJLSBsZXNzZXIgYWRqdXN0bWVudHMgaW4gY2RsZ19QdC5yYyAoYmV0dGVyIHZpc3VhbCkKCS0gbG9jYWxpemF0aW9uIHRvIHRoZSBQb3J0dWd1ZXNlIG9mIEJyYXppbCBvZiB3aW5pbmV0IHJlc291cmNlLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBMb29rdXBQcml2aWxlZ2VWYWx1ZUEvVy4KCjIwMDMtMDctMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3Byb3h5LmM6CglTdXBwb3J0IG9iamVjdHMgd2l0aCBubyBtZXRob2QgZGVmaW5pdGlvbnMgKHN1Z2dlc3RlZCBieSBKb24KCUdyaWZmaXRocykuCgoJKiBkbGxzL3dpbmluZXQvLmN2c2lnbm9yZSwgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmluZXQvZGlhbG9ncy5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmgsIGRsbHMvd2luaW5ldC9yZXNvdXJjZS5oLAoJICBkbGxzL3dpbmluZXQvcnNyYy5yYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfRW4ucmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgc3VwcG9ydCBmb3IgcHJveGllcyB3aXRoIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzLgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzogVXNlIHRyYWNlKCkgaW5zdGVhZCBvZiBwcmludGYoKS4KCgkqIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglPbmx5IHJldHVybiBGQUxTRSBpbiBJRW51bUlETGlzdF9mbk5leHQgaWYgbm8gaXRlbSBjb3VsZCBiZSBmZXRjaGVkIGF0CglhbGwuCgoJKiBkbGxzL2RldmVudW0vZGV2ZW51bV9tYWluLmMsIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYywKCSAgZGxscy9kZXZlbnVtL3BhcnNlZGlzcGxheW5hbWUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4IHNvbWUgc21hbGwgcG9pbnRlciBhbGlhc2luZyBwcm9ibGVtcy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgQDIwMy4KCUZpeCBhIGJyb3duIHBhcGVyIGJhZyBpbiBTdHJGb3JtYXRLQlNpemVXLgoJTWlzYyBjbGVhbnVwcyBhbmQgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJRml4ZWQgY2hlY2sgZm9yIC5iYXQgYW5kIC5jbWQgZXh0ZW5zaW9ucyAoc3BvdHRlZCBieSBNaWtlIE1jQ29ybWFjaykuCgoJKiBkbGxzL29sZTMyL2dpdC5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CgktIEdJVCBzaG91bGQgbm90IGRlcmVmZXJlbmNlIHBwdiB3aGVuIHVubWFyc2hhbGxpbmcgaW50ZXJmYWNlLgoJLSBDb3JyZWN0bHkgZWxpbWluYXRlIHJlZmNvdW50aW5nIGluIHRoZSBHSVQuCgktIEFkZCB3YXJuaW5nIHdoZW4gZ2l2ZW4gcmlpZCBkb2VzIG5vdCBtYXRjaC4KCgkqIGRsbHMvb2xlMzIvaWZzLmM6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUlNYWxsb2NTcHkgY2Fubm90IGNhdXNlIGFuIGFsbG9jYXRpb24gZmFpbHVyZSB3aGVuIGNiID09IDAuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglEZWFsIHdpdGggdGhlIGNhc2Ugb2YgbG9hZGluZyBhbiBlbXB0eSBQSURMIGZyb20gYSBzdHJlYW0gYmV0dGVyIGluCglJTExvYWRGcm9tU3RyZWFtLgoKCSogcHJvZ3JhbXMvcnVuZGxsMzIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglydW5kbGwzMiByZXF1aXJlcyBhIHdpbmRvdyBmb3Igc29tZSBmdW5jdGlvbnMgdG8gd29yaywgc28gY3JlYXRlIG9uZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkIGFuIGVtcHR5IGhvb2sgZnVuY3Rpb24gZm9yIFdTQVNldEJsb2NraW5nSG9vayB0byByZXR1cm4uCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IEAyODAsMzQzLDM0NC4KCU1pc2MgY2xlYW51cHMgYW5kIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgYSBoYW5kbGUgZm9yIHVybG1vbi5kbGwsIGZpeCBNU1ZDIHdhcm5pbmcuCgoJKiBkbGxzL3NobHdhcGkvY2xpc3QuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeCBNU1ZDIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luZWR1bXAvUkVBRE1FOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU3BlbGxpbmcgZml4LgoKCSogdG9vbHMvd2luZWR1bXAvbXNtYW5nbGUuYywgdG9vbHMvd2luZWR1bXAvcGUuYywKCSAgdG9vbHMvd2luZWR1bXAvc3ltYm9sLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU3VwcG9ydCBmbG9hdCBhbmQgZnVuY3Rpb24gcHRyIGFyZ3MgYmV0dGVyLCAtVyB3YXJuaW5nIGZpeGVzLgoKMjAwMy0wNy0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglDaGFuZ2UgX19QUENfXyBmbGFnIHRvIF9fcG93ZXJwY19fLgoKCSogaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRGVmaW5lIFNIR0RORi4KCgkqIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaDogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCURlZmluZSBJRXh0cmFjdEljb24gZm9yIEFOU0kvVW5pY29kZS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCUZpeGVkIHByb3RvdHlwZXMgb2YgVlRhYmxlUHJvY1N0cnVjIGNhbGxiYWNrIGZ1bmN0aW9ucy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuaCwgaW5jbHVkZS93aW5jcnlwdC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgZGVjbGFyYXRpb24gb2YgVlRhYmxlUHJvdlN0cnVjIGZyb20gZGxscy9hZHZhcGkzMi9jcnlwdC5oIHRvCglpbmNsdWRlL3dpbmNyeXB0LmguCgoJKiBkbGxzL3NobHdhcGkvYXNzb2MuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBzdHViIGZvciBBc3NvY0lzRGFuZ2Vyb3VzLgoKCSogZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZGxscy5zZ21sLCBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9nbG9zc2FyeS5zZ21sLCBkb2N1bWVudGF0aW9uL2kxOG4uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vb3BlbmdsLnNnbWwsIGRvY3VtZW50YXRpb24vcG9ydGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi10b29sa2l0LnNnbWw6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXhlZCBpbmRlbnRhdGlvbiBvZiBsaXN0IGl0ZW1zLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUJlZ2luIHRvIHVuaWZvcm1pemUgc2FtcGxlIGNvbW1hbmRzIGluIGRvY3VtZW50YXRpb24uCgoJKiBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jb25zb2xlcy5zZ21sLCBkb2N1bWVudGF0aW9uL2N2cy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2dsb3NzYXJ5LnNnbWwsIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWw6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglOYW1lIGFsbCBzZWN0aW9ucyBvZiB0eXBlIHNlY3QxLgoJTmFtZSB0aGUgZ2xvc3NhcnkuCgoJKiBkbGxzL2RtYmFuZC9NYWtlZmlsZS5pbiwgZGxscy9kbWJhbmQvYmFuZC5jLCBkbGxzL2RtYmFuZC9kbWJhbmQuc3BlYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywgZGxscy9kbWJhbmQvZG1iYW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kbWJhbmQvcmVnc3ZyLmMsIGRsbHMvZG1jb21wb3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG1jb21wb3MvY2hvcmRtYXAuYywgZGxscy9kbWNvbXBvcy9jb21wb3Nlci5jLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zLnNwZWMsIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfbWFpbi5jLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zX3ByaXZhdGUuaCwgZGxscy9kbWNvbXBvcy9yZWdzdnIuYywKCSAgZGxscy9kbWltZS9NYWtlZmlsZS5pbiwgZGxscy9kbWltZS9hdWRpb3BhdGguYywKCSAgZGxscy9kbWltZS9kbWltZS5zcGVjLCBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywKCSAgZGxscy9kbWltZS9kbWltZV9wcml2YXRlLmgsIGRsbHMvZG1pbWUvZ3JhcGguYywKCSAgZGxscy9kbWltZS9wYXR0ZXJudHJhY2suYywgZGxscy9kbWltZS9wZXJmb3JtYW5jZS5jLAoJICBkbGxzL2RtaW1lL3JlZ3N2ci5jLCBkbGxzL2RtaW1lL3NlZ21lbnQuYywgZGxscy9kbWltZS9zZWdtZW50c3RhdGUuYywKCSAgZGxscy9kbWltZS9zb25nLmMsIGRsbHMvZG1pbWUvdG9vbC5jLCBkbGxzL2RtaW1lL3RyYWNrLmMsCgkgIGRsbHMvZG1sb2FkZXIvTWFrZWZpbGUuaW4sIGRsbHMvZG1sb2FkZXIvY29udGFpbmVyLmMsCgkgIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXIuc3BlYywgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9tYWluLmMsCgkgIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXJfcHJpdmF0ZS5oLCBkbGxzL2RtbG9hZGVyL2dldGxvYWRlci5jLAoJICBkbGxzL2RtbG9hZGVyL2xvYWRlci5jLCBkbGxzL2RtbG9hZGVyL3JlZ3N2ci5jLAoJICBkbGxzL2Rtc2NyaXB0L01ha2VmaWxlLmluLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0LnNwZWMsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0X3ByaXZhdGUuaCwKCSAgZGxscy9kbXNjcmlwdC9yZWdzdnIuYywgZGxscy9kbXNjcmlwdC9zY3JpcHQuYywKCSAgZGxscy9kbXN0eWxlL01ha2VmaWxlLmluLCBkbGxzL2Rtc3R5bGUvZG1zdHlsZS5zcGVjLAoJICBkbGxzL2Rtc3R5bGUvZG1zdHlsZV9tYWluLmMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN0eWxlL3JlZ3N2ci5jLCBkbGxzL2Rtc3R5bGUvc3R5bGUuYywKCSAgZGxscy9kbXN5bnRoL01ha2VmaWxlLmluLCBkbGxzL2Rtc3ludGgvZG1zeW50aC5zcGVjLAoJICBkbGxzL2Rtc3ludGgvZG1zeW50aF9tYWluLmMsIGRsbHMvZG1zeW50aC9kbXN5bnRoX3ByaXZhdGUuaCwKCSAgZGxscy9kbXN5bnRoL3JlZ3N2ci5jLCBkbGxzL2Rtc3ludGgvc3ludGguYywKCSAgZGxscy9kbXN5bnRoL3N5bnRoc2luay5jLCBkbGxzL2RtdXNpYy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbXVzaWMvYnVmZmVyLmMsIGRsbHMvZG11c2ljL2Nsb2NrLmMsIGRsbHMvZG11c2ljL2NvbGxlY3Rpb24uYywKCSAgZGxscy9kbXVzaWMvZG11c2ljLmMsIGRsbHMvZG11c2ljL2RtdXNpY19pbnN0cnVtZW50LmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19sb2FkZXIuYywgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21pc2MuYywgZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wbHVnaW5zLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wb3J0LmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsIGRsbHMvZG11c2ljL2RtdXNpY19zZWdtZW50LmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19zdHlsZS5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfc3ludGguYywKCSAgZGxscy9kbXVzaWMvZG93bmxvYWQuYywgZGxscy9kbXVzaWMvZG93bmxvYWRlZGluc3RydW1lbnQuYywKCSAgZGxscy9kbXVzaWMvaGVscGVyLmMsIGRsbHMvZG11c2ljL2luc3RydW1lbnQuYywgZGxscy9kbXVzaWMvb2JqZWN0LmMsCgkgIGRsbHMvZG11c2ljL3BvcnQuYywgZGxscy9kbXVzaWMvcG9ydGRvd25sb2FkLmMsIGRsbHMvZG11c2ljL3JlZ3N2ci5jLAoJICBkbGxzL2RtdXNpYy90aHJ1LmMsIGRsbHMvZG11c2ljMzIvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZG11c2ljYy5oLAoJICBpbmNsdWRlL2RtdXNpY2kuaCwgaW5jbHVkZS9kbXVzaWNzLmg6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCVNwbGl0IHRoZSBkbXVzaWMgaW50ZXJmYWNlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCVNlbmQgVFZOX0lURU1FWFBBTkRJTkcgd2hlbiB0aGUgdXNlciB0cmllcyB0byBleHBhbmQgYSB0cmVlIGl0ZW0KCV9iZWZvcmVfIGNoZWNraW5nIGZvciBjaGlsZCBpdGVtcy4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0Lmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggbXVsdGlwbGUgY29uc2VjdXRpdmUgZG93bmxvYWRzIChieSBmbHVzaGluZyB3aGVuIG5lZWRlZCB0aGUKCSAgY29tbWFuZCBzb2NrZXQpCgktIGRldGVjdCBhdHRlbXB0cyB0byBkb3dubG9hZCBtdWx0aXBsZSBmaWxlcyBhdCB0aGUgc2FtZSB0aW1lCgktIGZpeCBzaXplIC8gZGF0ZSByZXBvcnRpbmcgd2hlbiBlbnVtZXJhdGluZyBmaWxlcwoJLSBmaXggWTJLIHByb2JsZW0gaW4gTlQgcGFyc2luZyBvZiBmaWxlcwoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkLmNvaGVuQHZpcmdpbi5uZXQ+CglBbHdheXMgdXNlIG91ciBvd24gYzJtYW4uCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0VuLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0xpY2Vuc2VfRW4uYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuaCwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBOb3RlcGFkIHRvIHVuaWNvZGUuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBHZXRTeXN0ZW1XaW5kb3dzRGlyZWN0b3J5LCBHZXRDdXJyZW50SHdQcm9maWxlLgoJUmVtb3ZlIHdhcm5pbmdzIGJ1aWxkaW5nIHVuZGVyIFZTLk5ldC4KCgkqIGRvY3VtZW50YXRpb24vb2xlLnNnbWw6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCVJldmVydCBib2d1cyBzcGVsbGluZyAiZml4Ii4KCgkqIGRsbHMvbXNkbW8vLmN2c2lnbm9yZSwgZGxscy9tc2Rtby9NYWtlZmlsZS5pbiwgZGxscy9tc2Rtby9kbW9yZWcuYywKCSAgZGxscy9tc2Rtby9kbW9ydC5jLCBkbGxzL21zZG1vL21zZG1vLnNwZWMsIGRsbHMvbXNkbW8vcnNyYy5yYzoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBJbXBsZW1lbnRlZCBNbyogbWV0aG9kcy4KCS0gQWRkZWQgc3R1YnMgZm9yIERNT1JlZ2lzdGVyLCBETU9VbnJlZ2lzdGVyLCBETU9FbnVtLCBETU9HZXRUeXBlcywKCSAgRE1PR2V0TmFtZS4KCS0gQWRkZWQgdmVyc2lvbiByZXNvdXJjZXMuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUFkZGVkIG1pc3NpbmcgcmVnaXN0ZXIgZGVmaW5lcyBmb3IgTGludXgvUFBDLgoKCSogbG9hZGVyL21vZHVsZS5jOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglBZGQgTWFjaC1PIChEYXJ3aW4gZmlsZSBmb3JtYXQpIHN1cHBvcnQuCgoJKiBmaWxlcy9kcml2ZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBjb3VwbGUgb2YgYnVncyBpbiBDRFJPTV9HZXRTZXJpYWw6CgkgLSBpdCB3b3VsZCBmYWlsIGlmIERldmljZUlvQ29udHJvbCBzdWNjZWVkZWQuCgkgLSBpdCB3b3VsZCBsZWFrIGhhbmRsZXMgaW4gc29tZSBjYXNlcy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldCBkZWZhdWx0cyBmb3IgdGhlIE5leHQvUHJldiBidXR0b24uCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2VuZCBhIENETl9GT0xERVJDSEFOR0UgbWVzc2FnZSB3aGVuIHdlIGNoYW5nZSBmb2xkZXJzLgoKCSogZGxscy9kM2Q4L2RyYXdwcmltLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglEaXNhYmxlIGNsaWVudCB0ZXh0dXJlIHN0YXRlcyB3aGVuIG5vdCBpbiB1c2UgKGZhc3QgbW9kZSkgb3RoZXJ3aXNlCgl0cmFwcyBvY2N1ci4KCUNvcnJlY3QgbnVtYmVyIG9mIHRleHR1cmUgY29vcmRzIHN1cHBsaWVkIGluIGJvdGggZmFzdCBhbmQgc2xvdyBtb2RlLgoJRG9udCBzdXBwbHkgYSBkZWZhdWx0IGNvbG91ciBvZiB3aGl0ZSB3aGVuIGRpZmZ1c2UgbW9kZSBpcyBkaXNhYmxlZC4KCVJlZW5hYmxlIGZhc3QgbW9kZS4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IE1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCU1pc2MgRkFRIGNoYW5nZXMgYW5kIGltcHJvdmVtZW50cy4KCgkqIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jOiBNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gQWRkZWQgc3VwcG9ydCBmb3IgU3VuIEF1ZGlvIGZpbGVzIGluIHdhdmUtZmlsZSBoYW5kbGVyLgoJLSBGYWxsYmFjayB0byBtbWlvT3BlbkEgaWYgbW1vcE9wZW5XIGRvZXNuJ3Qgd29yayAod2hlbiB1c2luZyBXaW45eCBETExzKS4KCgkqIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmM6IE1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJRml4ZWQgd3JvbmcgYXNzZXJ0IGluIFBDTV9yb3VuZCwgd2hpY2ggZGlkbid0IGFsbG93IHRvIGNhbGwKCWFjbVN0cmVhbVNpemUgd2l0aCBhIHZhbHVlIG9mIDAgdG8gY29udmVydCAtLSBuYXRpdmUgYWxsb3dzIGl0LgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gRml4ZWQgQVZJU3RyZWFtVGltZVRvU2FtcGxlIGFuZCBBVklTdHJlYW1TYW1wbGVUb1RpbWUgbWV0aG9kcyB0bwoJICBzdGF5IGluIGJvdW5kcyBhbmQgYmVoYXZlIGxpa2UgdGhlIG5hdGl2ZSBvbmVzLgoJLSBGYWxsYmFjayB0byBtbWlvT3BlbkEgaWYgbW1pb09wZW5XIGRvZXNuJ3Qgd29yayAod2hlbiB1c2luZyBXaW45eCBETExzKS4KCS0gRml4ZWQgYSBidWcgb2YgdXNpbmcgbW1pb0Rlc2NlbmQvbW1pb0FzY2VuZCAob2NjdXJlZCB3aXRoIG5hdGl2ZSBsaWJzKS4KCS0gU2lsZW50IGEgbWVzc2FnZSB3aGljaCBjb3VsZCBiZSBpbmNvcnJlY3QgZm9yIG5vbi12aWRlbyBzdHJlYW1zLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L2ludGVybmV0Lmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSB1c2UgU0laRSBjb21tYW5kIHRvIHJldHJpZXZlIHRoZSBmaWxlIHNpemUgKGFzIHRoZSBmaWxlIHNpemUgaXMgbm90CgkgIHBhcnQgb2YgdGhlIFdpbk5UIGFja25vd2xlZGdlbWVudCBzdHJpbmcpCgktIGZyZWUgdGhlIGhhbmRsZSAvIGNsb3NlIHRoZSBzb2NrZXQgb24gZW5kIG9mIGRvd25sb2FkCgktIGZpeCBJbnRlcm5ldFJlYWRGaWxlIGluIHRoZSBGVFAgY2FzZQoJLSBmaXggRlRQX1JlY2VpdmVSZXNwb25zZQoKCSogZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglLRVlfTUFYIGlzIDUxMSwgd2hpY2ggZG9lcyBub3QgZml0IGluIGEgQllURS4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRml4ZWQgd2FybmluZ3MgYWJvdXQgbWlzc2luZywgbmV3IHNwZWMgZmlsZXMuCgoyMDAzLTA3LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBANDQwLCA0NDEuCglXYXJuaW5nIGZpeGVzL2RvY3VtZW50YXRpb24uCgoJKiBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGRyYXcvcmVnc3ZyLmMsCgkgIGRsbHMvZGRyYXcvdmVyc2lvbi5yYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUltcGxlbWVudCBEbGxSZWdpc3RlclNlcnZlciBhbmQgRGxsVW5yZWdpc3RlclNlcnZlciBmb3IgZGRyYXcuZGxsLCBhbmQKCWFkZCBPbGVTZWxmUmVnaXN0ZXIgdmVyc2lvbiBzdHJpbmcuCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLCBkbGxzL2NhYmluZXQvY2FiaW5ldC5oLAoJICBkbGxzL2NhYmluZXQvZmRpLmM6CglHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gZWxpbWluYXRlIHBlc2t5IGdsb2JhbCB2YXJpYWJsZXM7IHNob3VsZCBiZSB0aHJlYWRzYWZlIG5vdwoJLSBmaXggbW9yZSBtZW1vcnkgbGVha3MKCS0gZml4IHNvbWUgYnVncwoJLSBzb21lIGRlY3J1ZnRpZmljYXRpb24KCS0gaW1wbGVtZW50IHN1cHBvcnQgZm9yIHNwbGl0IGNhYmluZXRzIGFuZCAiTkVYVF9DQUJJTkVUIiBub3RpZmljYXRpb24KCgkqIERFVkVMT1BFUlMtSElOVFM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTbWFsbCBkb2N1bWVudGF0aW9uIGNsZWFudXAuCgoJKiB0b29scy9jMm1hbi5wbDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUNvcnJlY3RseSBzcG90IGZvcndhcmRzLgoJVmFyaW91cyBpbXByb3ZlbWVudHMgYW5kIGZpeGVzIHRvIHRoZSBvdXRwdXQsIGFkZCBpbmRleCBmb3IgaHRtbC4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWJzIGZvciBJbnRlcm5ldENyZWF0ZVVybEEvVyBhbmQgQ3JlYXRlVXJsQ2FjaGVFbnRyeUEuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NobHdhcGkvYXNzb2MuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNb3ZlIElRdWVyeUFzc29jaWF0aW9ucyBpbnRvIHNobHdhcGkuIERvY3MvLVcvTVNWQysrIGZpeGVzLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNU1ZDIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4IE1TVkMgd2FybmluZy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGaXggLVcgd2FybmluZ3MuCgoJKiBsaWJzL3VuaWNvZGUvc3RyaW5nLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+Cgl2c25wcmludGZXOiAlJSBzaG91bGQgb3V0cHV0IGEgbGl0ZXJhbCAlIHNpZ24uCgoJKiBsaWJzL3BvcnQvbWtzdGVtcHMuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1TVkMgZG9lc24ndCBsaWtlIEsmUiBmdW5jdGlvbiBkZWNsYXJhdGlvbnM6IHVzZSBhbnNpIGluc3RlYWQuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L2RyYXdwcmltLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIGZwcyBkZWJ1ZyBjaGFubmVsLCBzbyB3ZSBjYW4gc2VlIGhvdyB0aGUgZDNkIGNvZGUgaXMgcGVyZm9ybWluZyBhbmQKCXRoZWlyIGltcGFjdCBvZiBwZXJmb3JtYW5jZSBjaGFuZ2VzLgoJU2V0VHJhbnNmb3JtIGFsbW9zdCByZXdyaXR0ZW4gaW4gYSBtdWNoIG5lYXRlciB3YXksIGFuZCBpbgoJY29vcmRpbmF0aW9uIHdpdGggZHJhd3ByaW0gaXQgc2lnbmlmaWNhbnRseSByZWR1Y2VzIHRoZSBudW1iZXIgb2YKCXRpbWVzIHRoYXQgd2UgcmVsb2FkIHRoZSBtYXRyaXhlcy4KCgkqIGluY2x1ZGUvd2lubnQuaDogSmVmZiBNdWl6ZWxhYXIgPG11aXplbGFhckByb2dlcnMuY29tPgoJLSBhZGQgSU1BR0VfRklMRV9ORVRfUlVOX0ZST01fU1dBUCBkZWZpbmUKCS0gdXBkYXRlIElNQUdFX0ZJTEVfTUFDSElORV8qIGRlZmluZXMKCS0gdXBkYXRlIElNQUdFX1NVQlNZU1RFTV8qIGRlZmluZXMKCS0gdW5jb21tZW50IElNQUdFX1NDTl9UWVBFX05PX1BBRCBkZWZpbmUKCS0gdXBkYXRlIElNQUdFX1NDTl9BTElHTl8qIGRlZmluZXMKCjIwMDMtMDctMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOiBQcmludCBzdGF0dXMgY29kZXMgaW4gaGV4LgoKCSogZGxscy91c2VyL3dzcHJpbnRmLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCXd2c25wcmludCBhY2NlcHRzICVwIHRvbyAob24gd2luMmspLgoKCSogd2luZG93cy9kaWFsb2cuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU3RyaXAgV1NfQ0FQVElPTiBhbmQgV1NfU1lTTUVOVSBmb3IgY2hpbGQgZGlhbG9ncy4KCgkqIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGVkIHN0dWIgZm9yIENyZWF0ZUNsYXNzTW9uaWtlci4KCgkqIGRsbHMvd2lubW0vbWNpLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGluY29ycmVjdCBzdHJjYXNlY21wIHVzYWdlLgoKCSogZGxscy93aW5pbmV0L3V0aWxpdHkuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJT25seSBjYWxsIHdpbmluZXQgY2FsbGJhY2tzIGlmIGR3Q29udGV4dCBpcyBub24temVyby4KCgkqIGRsbHMvbXByL3B3Y2FjaGUuYywgaW5jbHVkZS93aW5uZXR3ay5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgcGFzc3dvcmQgY2FjaGluZy4KCgkqIGluY2x1ZGUvbXN2Y3J0L2NvbmlvLmgsIGluY2x1ZGUvbXN2Y3J0L2NydGRiZy5oLAoJICBpbmNsdWRlL21zdmNydC9jdHlwZS5oLCBpbmNsdWRlL21zdmNydC9kaXJlY3QuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvZG9zLmgsIGluY2x1ZGUvbXN2Y3J0L2VoLmgsIGluY2x1ZGUvbXN2Y3J0L2Vycm5vLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2ZjbnRsLmgsIGluY2x1ZGUvbXN2Y3J0L2lvLmgsIGluY2x1ZGUvbXN2Y3J0L2xvY2FsZS5oLAoJICBpbmNsdWRlL21zdmNydC9tYWxsb2MuaCwgaW5jbHVkZS9tc3ZjcnQvbWJjdHlwZS5oLAoJICBpbmNsdWRlL21zdmNydC9tYnN0cmluZy5oLCBpbmNsdWRlL21zdmNydC9wcm9jZXNzLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3NlYXJjaC5oLCBpbmNsdWRlL21zdmNydC9zZXRqbXAuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc2hhcmUuaCwgaW5jbHVkZS9tc3ZjcnQvc3RkZGVmLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLAoJICBpbmNsdWRlL21zdmNydC9zdHJpbmcuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL2xvY2tpbmcuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3RpbWViLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N5cy90eXBlcy5oLCBpbmNsdWRlL21zdmNydC9zeXMvdXRpbWUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvdGltZS5oLCBpbmNsdWRlL21zdmNydC93Y2hhci5oLAoJICBpbmNsdWRlL21zdmNydC93Y3R5cGUuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb24ndCByZWRlZmluZSBfX1dJTkVfVVNFX01TVkNSVCAobXN2YyB3YXJuaW5nKS4KCURvbid0IHJldHVybiBhIHZvaWQgdmFsdWUgaW4gc3dhYigpLgoJJ2xvbmcgbG9uZycgaXMgbm90IHJlY29nbmlzZWQgYnkgbXN2YywgdXNlIF9faW50NjQuCgoJKiBkbGxzL3NobHdhcGkvdGhyZWFkLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNaXNjIGZpeGVzLgoKCSogZGxscy9udGRsbC9maWxlLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgc29tZSBuZXcgUnRsKiB0ZXN0cy4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeGVkIG1zdmMgd2FybmluZy4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IF9fcF9fd3BnbXB0ciwgX3dwZ21wdHIuCglBdm9pZCB1c2luZyBzdGF0aWMgc3RvcmFnZSBmb3IgcGdtIHBvaW50ZXJzLgoKCSogREVWRUxPUEVSUy1ISU5UUzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcHJvdmUgdGhlIHNhbXBsZSBjb21tZW50LgoKCSogZGxscy9vbGUzMi9vbGUzMl9tYWluLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZW1vdmUgRklYTUVzIGFuZCBwcm90b3R5cGVzIGZvciBub3ctaW1wbGVtZW50ZWQgZnVuY3Rpb25zLgoKCSogZGxscy9uZXRhcGkzMi90ZXN0cy93a3N0YS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeCBjb21waWxhdGlvbiB1bmRlciBWUy5OZXQuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSGFuZGxlIGxvbmcgZmlsZSBuYW1lcyBpbiBwcmUtYnVpbGQgc3RlcCAocXVvdGUgdGhlbSkuCglkbGxzL2dkaS93aW4xNmRydiBkb2Vzbid0IGV4aXN0IGFueSBtb3JlLgoKCSogaW5jbHVkZS9vbGUyLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbmNsdWRlIG9sZWF1dG8uaCBiZWZvcmUgb2xlaWRsLmgsIGFzIHBlciBuYXRpdmUgaGVhZGVycy4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBpbmNsdWRlL29sZWF1dG8uaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgYSBidW5jaCBvZiBtaXNzaW5nIHN0dWZmLgoJVXNlIHByb3BlciB0eXBlcyBmb3IgU2FmZUFycmF5L3ZhcmlhbnQgcHJvdG90eXBlcy4KCUNoYW5nZSBJMSBmdW5jdGlvbnMgdG8gdGFrZSBzaWduZWQgY2hhcnMKCgkqIHRvb2xzL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgIi13cmFwIiB0byB0aGUgd3JhcHBlZCBhcHAsIHRvIGF2b2lkIHBvc3NpYmxlIG5hbWUgY29uZmxpY3RzLgoJQWRkIHRoZSBhcHAgZGlyIHRvIFdJTkVETExQQVRILgoKMjAwMy0wNy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglBZGQgUG93ZXJQQyBwcm9jZXNzb3IgZGV0ZWN0aW9uLgoKCSogZGxscy9vbGVhdXQzMi9yZWdzdnIuYywgZGxscy9zaGVsbDMyL3JlZ3N2ci5jOgoJRml4ZWQgc3RyaW5nLmggaW5jbHVkZXMuCgoJKiBkbGxzL2RtdXNpYy9NYWtlZmlsZS5pbiwgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywKCSAgZGxscy9kbXVzaWMvcmVnc3ZyLmMsIGRsbHMvZG11c2ljL3ZlcnNpb24ucmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglJbXBsZW1lbnQgRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIERsbFVucmVnaXN0ZXJTZXJ2ZXIgZm9yIGRtdXNpYy5kbGwsCglhbmQgYWRkIE9sZVNlbGZSZWdpc3RlciB2ZXJzaW9uIHN0cmluZy4KCgkqIGRsbHMvcnBjcnQ0L25kcl9zdHVibGVzcy5jOgoJR3JlZ29yeSBNLiBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglSUENSVDRfTmRyQ2xpZW50Q2FsbDIgaXMgQVRNIGhhcmRseSAic2VtaS1zdHViIi4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQ2hhbmdlIF9fZGFyd2luX18gdG8gX19BUFBMRV9fLgoKCSogZGxscy9udGRsbC9zeXNkZXBzLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBURUIgb24gTWFjIE9TIFguCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZG8gbm90IGZvcmdldCB0byBzZXQgdGhlICdpbml0aWFsX3VwbG9hZF9kb25lJyBmbGFnICh0byBoYXZlIGJldHRlcgoJICBwZXJmb3JtYW5jZSkKCS0gYmV0dGVyIGhhbmRsaW5nIG9mIHRoZSAnaW5pdGlhbCcgZmxhZyBmb3IgZnJhbWUtYnVmZmVyIGZsdXNoZXMKCjIwMDMtMDctMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWw6IEFuZHJldyBCb3JvZGluIDxhYm9yb2RpbkB2bWFpbC5ydT4KCVJlbW92ZWQgZXh0cmEgL2Jvb2sgdGFnLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLCBpbmNsdWRlL2RkcmF3LmgsCgkgIGxvYWRlci9uZS9tb2R1bGUuYywgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmMsIHNlcnZlci9maWxlLmgsCgkgIHRvb2xzL3dpbmVjb25mLmxpYnMvZ2VuZXJhbC5lbmcsIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZWNvbmYuZW5nLAoJICB0b29scy93aW5lbWFrZXIubWFuOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTcGVsbGluZyBmaXhlcyAocy9vY2N1cmVkL29jY3VycmVkLyBhbmQgdmFyaWFudHMpLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBXYXJuaW5nIGZpeC4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBzcGVjIGZpbGUgZm9yIEZUUEZpbmRGaXJzdEZpbGVBL1cgZnVuY3Rpb25zCgktIGltcGxlbWVudCBwYXJzaW5nIG9mIE5UIGRpcmVjdG9yeSBmb3JtYXQKCgkqIGRsbHMvd2luZWRvcy9pbnQxYS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNYWtlIGludDFhIEJJT1MgdGlja3MgYmUgZXF1YWwgdG8gQklPUyBzZWdtZW50IHRpY2tzLgoJRml4IGJ1Z3MgaW4gaW50MWEgc3ViZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL3JlZ3N2ci5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBkbGxzL3NoZWxsMzIvdmVyc2lvbi5yYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9yZWdzdnIuYywKCSAgZGxscy9vbGVhdXQzMi92ZXJzaW9uLnJjOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJSW1wbGVtZW50IERsbFJlZ2lzdGVyU2VydmVyIGFuZCBEbGxVbnJlZ2lzdGVyU2VydmVyLCBhbmQgYWRkCglPbGVTZWxmUmVnaXN0ZXIgdmVyc2lvbiBzdHJpbmcuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHRoZSByZXR1cm4gYnVmZmVyIGxhcmdlciAoZm9yIGV4YW1wbGUgRXVyb1NpZ24gaW4gdWZ0OCBpcyAzKzEKCWJ5dGVzIGxvbmcpLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgaW5jbHVkZS91cmxtb24uaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnQgVVJMRG93bmxvYWRUb0ZpbGVBL1cuCgoJKiBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS93aW5udC5oOgoJUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQ2hhbmdlIF9fUFBDX18gZGVmaW5lIHRvIF9fcG93ZXJwY19fLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDogQ2FzcGVyIEhvcm5zdHJ1cCA8Y2hvcm5zQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCURlZmluZSBjb25zdGFudHMgb2YgTV9QSSAmIE1fUElfMi4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU29tZSBicm9rZW4gZ2FtZXMgZG8gbm90IHB1dCB0aGUgVEVYVFVSRSBmbGFncyBpbiB0aGUgc3VyZmFjZSBjYXBzLgoKCSogZGxscy94MTFkcnYveHZpZG1vZGUuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURlc2t0b3AgbW9kZSBzaG91bGQgb25seSBkaXNhYmxlIG1vZGUgc3dpdGNoaW5nLCBub3QgZ2FtbWEgcmFtcAoJc3VwcG9ydC4KCgkqIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvY2xvY2svd2luY2xvY2suYywKCSAgcHJvZ3JhbXMvY2xvY2svd2luY2xvY2suaDoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCS0gUmVtb3ZlIElkbGUoKS4KCS0gRml4IHJlcGFpbnRpbmcgYXJ0ZWZhY3RzIGJ5IGRyYXdpbmcgb25seSB0aHJvdWdoIFdNX1BBSU5ULgoJLSBVbmlmeSBoYW5kIGRyYXdpbmcgZnVuY3Rpb25zLgoJLSAwICYgNiB0aWNrcyBhcmUgbm93IGFsd2F5cyB2ZXJ0aWNhbC4KCjIwMDMtMDctMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvaG9vay5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbWVzc2FnZS5oLAoJICBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvaG9vay5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmg6CglSdW4gV0hfS0VZQk9BUkRfTEwgYW5kIFdIX01PVVNFX0xMIGhvb2tzIGluIHRoZSBjb250ZXh0IG9mIHRoZSB0aHJlYWQKCXRoYXQgc2V0IHRoZSBob29rLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzogIExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDaGVjayBpZiAnR0xYX0FSQl9nZXRfcHJvY19hZGRyZXNzJyBpcyBzdXBwb3J0ZWQgYmVmb3JlIHVzaW5nCglnbFhHZXRQcm9jQWRkcmVzc0FSQi4KCgkqIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uYywKCSAgcHJvZ3JhbXMvY2xvY2svd2luY2xvY2suYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCU1ha2UgaW5kZW50YXRpb24gY29uc2lzdGVudCAoNCBjaGFycykuCgoJKiBwcm9ncmFtcy9jbG9jay9SRUFETUUsIHByb2dyYW1zL2Nsb2NrL1RPRE8sCgkgIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uYywKCSAgcHJvZ3JhbXMvY2xvY2svd2luY2xvY2suYzoKCVJpY2hhcmQgQ29oZW4gPHJpY2hhcmQuY29oZW5AdmlyZ2luLm5ldD4KCS0gcmVtb3ZlIGVzY2FwZWQgbmV3bGluZXMsIGJvZ3VzICJleGl0IiwgcHJpbnRmJ3MKCS0gc3RhcnQgYXQgYSBzZW5zaWJsZSBzaXplCgktIHRpZHkgdXAgV25kUHJvYwoJLSB1c2UgYSB0aW1lciBpbnN0ZWFkIG9mIHNsZWVwaW5nIGluIHRoZSBtZXNzYWdlIGxvb3AgKFVnaCEpCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzogUGF1bCBSdXBlIDxwcnVwZUBteXJlYWxib3guY29tPgoJcmVnaXN0ZXJfbmV3X2FzeW5jIHNldHMgc3RhdHVzIGFscmVhZHkuICBEbyBub3Qgb3ZlcndyaXRlIGl0IHdpdGggdGhlCglmdW5jdGlvbidzIHJldHVybiB2YWx1ZS4KCgkqIHByb2dyYW1zL3djbWQvRW4ucmMsIHByb2dyYW1zL3djbWQvUHQucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJTWlub3IgZml4ZXMgaW4gUHQsIEVuIHJlc291cmNlcy4KCgkqIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jOiBNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJTFpDb3B5OiBtb2RpZmllZCB0aW1lc3RhbXAgb2YgYSBleHBhbmRlZCBmaWxlIGhhcyB0byBiZSB0aGUgc2FtZSBvZgoJb3JpZ2luYWwgZmlsZS4KCgkqIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywKCSAgc2VydmVyL3RyYWNlLmM6CglJbXBsZW1lbnRlZCB0aGUgU01UT19BQk9SVElGSFVORyBmbGFnIG9mIFNlbmRNZXNzYWdlVGltZW91dC4KCgkqIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2JqaWRsLmlkbDogV2FybmluZyBmaXguCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsOgoJQXZvaWQgZW1wdHkgbGluZXMgYXQgdGhlIGVuZCBvZiBnZW5lcmF0ZWQgZmlsZXMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgZmFzdC1wYXRoIGZvciBjb2xvci1rZXllZCBCbHRzCgktIGZpeCA1NjUgY29sb3VyLWtleWluZyBjb252ZXJzaW9uCgktIHByb3Blcmx5IGhhbmRsZXMgUGl0Y2ggaW4gY29sb3VyIGNvbnZlcnNpb24KCS0gZWFzaWVyIGFuZCBsZXNzIGJ1Z2d5IFVOUEFDS19XSURUSCBzdXBwb3J0CgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJTG9hZCBnbFhHZXRQcm9jQWRkcmVzc0FSQiBkeW5hbWljYWxseS4KCgkqIGRvY3VtZW50YXRpb24vYnVpbGQuc2dtbDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4ZWQgdHlwb3MuCgoJKiBwcm9ncmFtcy93Y21kL0VuLnJjLCBwcm9ncmFtcy93Y21kL0ZyLnJjLCBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsCgkgIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYywgcHJvZ3JhbXMvd2NtZC93Y21kcmMucmM6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUZyZW5jaCB0cmFuc2xhdGlvbiArIG1pc2MgZml4ZXMuCgoyMDAzLTA3LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOiBSZWxlYXNlIDIwMDMwNzA5LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAzLTA3LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3VzZXIvd2lucHJvYy5oLCB3aW5kb3dzL3dpbnByb2MuYzoKCVN0b3JlIHdpbmRvdyBwcm9jZWR1cmVzIGluIGEgc3RhdGljIGFycmF5IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBoZWFwLgoJT25seSBhbGxvY2F0ZSB0aGUgd2lucHJvYyBzZWxlY3RvciB3aGVuIGFjdHVhbGx5IG5lZWRlZC4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCUF2b2lkIGhhcmQtY29kZWQgY29tbWFuZCBsaW5lIGxlbmd0aCBsaW1pdCBpbiBXQ01EX3Byb2Nlc3NfY29tbWFuZC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgYnVmZmVyIG92ZXJmbG93cy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJVXNlIGlubGluZSB2ZXJzaW9ucyBvZiBBUElzIG9ubHkgaW50ZXJuYWxseSBpbiBXaW5lLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmM6IENhdGFsaW4gUGF0dWxlYSA8Y2F0YWxpbnNAdnYuY2FybGV0b24uY2E+CglPbmx5IGRpc3BsYXkgZmlsZW5hbWVzIHdoZW4gc2hvd2luZyBhZGRyZXNzZXMuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6IEdyZWcgTWFyc2RlbiA8R01hcnNkZW5AV0VTQ0FNLmNvbT4KCUFsbG93IGNvbW1hbmQgbGluZXMgd2l0aCBwaXBlcyB0byBiZSBwcm9jZXNzZWQgYnkgd2NtZC4KCgkqIHdpbjMyL2V4Y2VwdC5jOiBKdXJhaiBIZXJjZWsgPGp1cmFqQHN5bmNhZC5jb20+CglNb2RpZmllZCB1bmhhbmRsZWQgZXhjZXB0aW9uIG1lc3NhZ2UgdG8gY29udGFpbiBhbHNvIHRocmVhZAoJaWRlbnRpZmllci4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueTogSnVyYWogSGVyY2VrIDxqdXJhakBzeW5jYWQuY29tPgoJQWRqdXN0ZWQgZ3JhbW1hciB0byBhY2NlcHQgYWxzbyBoZWxwLWlkcyBmb3IgZGlhbG9nZXggY29udHJvbHMuCgoJKiBkbGxzL2lwaGxwYXBpL2lmZW51bS5jOiBSb2JlcnQgTHVubm9uIDxib2JAeWFycmFiZWUubmV0LmF1PgoJRml4ZWQgc29tZSBjb21waWxlIHByb2JsZW1zIHVuZGVyIFNvbGFyaXMuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6CglVc2UgTnRRdWVyeUluZm9ybWF0aW9uVGhyZWFkIHRvIGltcGxlbWVudCBHZXRFeGl0Q29kZVRocmVhZC4KCgkqIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3VzZXIvZGlhbG9nMTYuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICB3aW5kb3dzL2RpYWxvZy5jOgoJT25seSBjb21wdXRlIGRpYWxvZyBiYXNlIHVuaXRzIG9uY2Ugd2UgbmVlZCB0aGVtLgoKCSogZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbCwgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25zb2xlcy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWwsIGRvY3VtZW50YXRpb24vY3ZzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgZG9jdW1lbnRhdGlvbi9kbGxzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pMThuLnNnbWwsIGRvY3VtZW50YXRpb24vaW1wbGVtZW50YXRpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWwsIGRvY3VtZW50YXRpb24vb2xlLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vb3BlbmdsLnNnbWwsIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vdG9vbHMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi10b29sa2l0LnNnbWw6CglUb20gV2lja2xpbmUgPHR3aWNrbGluZUBza3liZXN0LmNvbT4KCVNwZWxsaW5nIGFuZCBVUkwgZml4ZXMuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUxNi5jLAoJICBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUyXzE2LmM6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CgktIENyZWF0ZSBuZXcgZmlsZSBvbGUyXzE2LmMgZm9yIG9sZTIgMTZiaXQgb25seSBmdW5jdGlvbnMuCgktIE1vdmUgQ0xTSURGcm9tUHJvZ0lEMTYgc28gaXQgY2FuIGJlIHVzZWQgaW50ZXJuYWxseS4KCS0gQ29tcGlsZSBvdXQgbW9yZSBXaW4xNiBzb3VyY2VzLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkIGNoYXJzZXQgaW5mb3JtYXRpb24gYXMgdXNlZCBieSBGcmVlQlNELgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJRml4IHNwZWMgZW50cnkgZm9yIFp3U2V0VGltZXJSZXNvbHV0aW9uLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLAoJICBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBpbmNsdWRlL3dpbm5scy5oLCBtZW1vcnkvY29kZXBhZ2UuYywgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIENQX1VOSVhDUC4KCgkqIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEFkZFJlZiB0eXBlIGluZm8gc3RvcmVkIGluIFN0ZERpc3BhdGNoLgoJLSBEb24ndCB1c2Ugb3V0ZXIgdW5rbm93biBpbiBTdGREaXNwYXRjaC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRG8gbm90IGNyYXNoIHdoZW4gdHJ5aW5nIHRvIGxvYWQgYmFkIGZvbnRzLgoKCSogZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL3RocmVhZC5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCUltcGxlbWVudGVkIHRoZSBUaHJlYWRCYXNpY0luZm9ybWF0aW9uIGNhc2UgZm9yCglOdFF1ZXJ5SW5mb3JtYXRpb25UaHJlYWQuCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvZG11c2ljL2hlbHBlci5jLAoJICBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsCgkgIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlMzIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywKCSAgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90eXBlbGliMTYuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYywKCSAgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBpbmNsdWRlL2RkcmF3Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNwZWxsaW5nIGZpeGVzLgoKCSogZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudCwgZG9jdW1lbnRhdGlvbi9idWlsZC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZGV2ZWwuc2dtbDoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHNoZW1lc2guYml6PgoJVGhlIGJlZ2luaW5nIG9mIGEgImJ1aWxkaW5nIHdpbmUiIGRvY3VtZW50YXRpb24uIE1vcmUgZGV0YWlsZWQKCWV4cGxhbmF0aW9uIG9mIHRoZSAic29mdCIgdnMuICJoYXJkIiBkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL250ZGxsL2Vudi5jLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsCgkgIHByb2dyYW1zL3dpbmV2ZG0vd2luZXZkbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJTnVsbCBwYXJhbWV0ZXJzIG5lZWQgdG8gYmUgcXVvdGVkIG9uIHRoZSBjb21tYW5kbGluZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXNlcnZlIEEvVyB3aGVuIGNyZWF0aW5nIHByb3BzaGVldCBkaWFsb2dzLgoKMjAwMy0wNy0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Byb2Nlc3MuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJSW1wbGVtZW50ZWQgTnRSZWFkL1dyaXRlVmlydHVhbE1lbW9yeS4KCgkqIGRsbHMvdXNlci9jb21tMTYuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJTG9va3VwIENPTS9MUFQgZGV2aWNlcyBpbiB0aGUgcmVnaXN0cnkgd2hlbiB0aGV5IGFyZSB1c2VkLCBpbnN0ZWFkIG9mCglsb2FkaW5nIGV2ZXJ5dGhpbmcgYXQgc3RhcnR1cC4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaGltZW0uYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQzMy5jLCBkbGxzL3dpbmVkb3MvdmdhLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZWFsIG1vZGUgY29udGV4dCBzaG91bGQgYWx3YXlzIGhhdmUgVjg2IGZsYWcgdHVybmVkIG9uLgoJRW50ZXJpbmcgcHJvdGVjdGVkIG1vZGUgdXNlcyBzaW1wbGVyIGFuZCBtb3JlIHJvYnVzdCB2aXJ0dWFsIGludGVycnVwdAoJZmxhZyBjaGVjay4KCU1vdXNlIGV2ZW50cyBhcmUgbm93IHJlY2VpdmVkIGluIGdyYXBoaWNzIG1vZGVzLgoJSW1wcm92ZWQgdHJhY2luZyBvdXRwdXQgb2YgaW50MzMgaGFuZGxlci4KCgkqIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlbW92ZWQgYSBubyBsb25nZXIgdXNlZCBoZWFkZXIuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBGUFMgY29tcHV0YXRpb24KCS0gc29tZSBUUkFDRWluZyBmaXhlcwoJLSBvcHRpbWl6ZSBCbHRGYXN0IGxvY2tpbmcgcmVjdGFuZ2xlcwoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3dpbi5pbmk6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJNiBuZXcgbWNpIGV4dGVuc2lvbnMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeGVkIGEgdHlwbyBpbiB0aGUgcHJldmlvdXMgU0hHZXRGaWxlSW5mbygpIHBhdGNoLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCU9ubHkgcHV0ICdwdXJlJyBHTCAxLjIgY2FsbHMgaW4gdGhlICdvcGVuZ2xfbm9ybS5jJyBmaWxlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgYSBtZW1vcnkgYWxsb2NhdGlvbi9jb3JydXB0aW9uIGJ1ZyB3aGVuIGdyb3dpbmcgdGhlIGZvbnQgY2FjaGUuCgoJKiBpbmNsdWRlL2QzZDguaCwgaW5jbHVkZS9kM2Q5dHlwZXMuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJU29tZSBmaXhlcyBvbiBkM2Q4IGFuZCBkM2Q5IGhlYWRlcnMuCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYveDExZHJ2Lmg6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBoYW5kbGluZyBvZiBzeW50aGVzaXplZCBkYXRhLgoJRG9uJ3QgcmVwb3J0IGVycm9ycyB3aGVuIHRoZXJlIGlzIG5vIHNlbGVjdGlvbiBvd25lci4KCVJlaW50ZWdyYXRlIHRoZSBDT01QT1VORF9URVhUIHBhdGNoIGJ5IEt1c2FuYWdpIEtvdWljaGkuCgoJKiBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdm9sdW1lLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gc29tZSBjb3NtZXRpYyBmaXhlcwoJLSBmaXggYSBidWcgb24gSURpcmVjdDNEVm9sdW1lOEltcGxfQWRkRGlydHlCb3gKCjIwMDMtMDctMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLAoJICBsaWJzL3dpbmUvbG9hZGVyLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBZGRlZCBhIGZpbGVfZXhpc3RzIGFyZ3VtZW50IHRvIHdpbmVfZGxsX2xvYWQgdG8gYWxsb3cgY2hlY2tpbmcKCXdoZXRoZXIgYSBmYWlsZWQgZGxsIGxvYWQgaXMgYmVjYXVzZSB0aGUgZmlsZSBkaWRuJ3QgZXhpc3Q7IG1vcmUKCXJvYnVzdCB0aGFuIHRyeWluZyB0byBndWVzcyB0aGUgY29udGVudHMgb2YgdGhlIGVycm9yIHN0cmluZy4uLgoJR2V0IHJpZCBvZiBCVUlMVElOMzJfZGxvcGVuLgoKCSogc2VydmVyL2hvb2suYywgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLAoJICBzZXJ2ZXIvdXNlci5oOgoJU3RvcmUgdGhlIGhvb2sgdGFibGUgaW4gdGhlIHRocmVhZCBxdWV1ZSBpbnN0ZWFkIG9mIHRoZSB0aHJlYWQKCXN0cnVjdHVyZSwgYW5kIG1ha2Ugc3VyZSB0aGUgcXVldWUgaXMgYWxsb2NhdGVkIHdoZW4gc2V0dGluZyBhIGhvb2suCgoJKiBkbGxzL250ZGxsL3N5c2RlcHMuYywgZmlsZXMvc21iLmg6CglGaXhlZCBjb21waWxlIHdoZW4gZnVuY3Rpb25zIGFyZSBub3QgaW5saW5lZC4KCgkqIHNlcnZlci9mZC5jOiBPbmUgbW9yZSB3b3JrYXJvdW5kIGZvciBhIG1pc3NpbmcgTkZTIGxvY2sgZGFlbW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOiBTdGVwaGFuIEJFVVpFIDxmYmlnZ3VuQGhvdG1haWwuY29tPgoJLSBGaXhlZCBpSW5kZXggdXNlIGluIFNIR2V0RmlsZUluZm9BIChhcyBvZiBNU0ROLCBpSW5kZXggaXMgY29waWVkIGluCgkgIHRoZSBpSWNvbiBmaWVsZCBvZiBwc2ZpKQoJLSBSZW1vdmVkIERMTF9USFJFQURfQVRUQUNIIGFuZCBETExfVEhSRUFEX0RFVEFDSCBjYXNlcy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3V0aWxzLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJSW1wbGVtZW50IFVwZGF0ZVRleHR1cmUgZm9yIDJEIHRleHR1cmVzIG9ubHkuCglIYW5kbGUgYWxwaGFvcCBkaXNhYmxlZCBidXQgY29sb3Igb3Agbm90LWRpc2FibGUgaW4gYSBtb3JlIGFwcHJvcHJpYXRlCgl3YXkgKERvY3Mgc2F5IHRoaXMgaXMgYW4gaWxsZWdhbCBzdGF0ZSBhbmQgdGhlbiBwcm9jZWVkIHRvIHVzZSBpdCkuCglUcmFjZSBvdXQgdGV4dHVyZXMgYXMgdGhleSBhcmUgY3JlYXRlZC4KCVVwZGF0ZSB0aGUgY29tbWVudHMgYXJvdW5kIHRoZSBkZWJ1ZyBjb2RlIGFuZCBjb21wbGV0ZSB0aGUgZGVidWdnaW5nCglzZXQgc28gdGV4dHVyZXMgd2hpY2ggYXJlIHVzZWQgaW4gdGhlIGdhbWUgY2FuIGFsc28gYmUgdmlld2VkLgoKCSogZGxscy9xdWFydHovZmlsdGVyZ3JhcGguYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEltcHJvdmUgUXVlcnlJbnRlcmZhY2UgRklYTUUgbWVzc2FnZS4KCS0gQWRkIHN0dWJzIGZvciBJTWVkaWFGaWx0ZXIgaW50ZXJmYWNlIGluIElHcmFwaEJ1aWxkZXIuCgktIEltcGxlbWVudCBzb21lIHNpbXBsZSBtZXRob2RzLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUV4aXQgZWFsaWVyIGZyb20gTENNYXBTdHJpbmdBIGluIHRoZSBjYXNlIG9mIExDTUFQX1NPUlRLRVkuCglEb24ndCByZWx5IG9uIGNvbXB1dGluZyBzdHJpbmcgbGVuZ3RoIGJ5IE11bHRpQnl0ZVRvV2lkZUNoYXIgaW4KCUNvbXBhcmVTdHJpbmdBLCBkbyBpdCBtYW51YWxseS4KCgkqIGRsbHMvd2lubW0vd2luZWphY2svamFjay5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglVc2Ugc3RhbmRhcmQgZGVidWdnaW5nIG1hY3JvcyBmb3IgamFjay4KCUpBQ0tfU09OQU1FIC0+IFNPTkFNRV9MSUJKQUNLIHNvIHdlIGRvIG5vdCBuZWVkIHRoZSBkZXZlbCBzeW1saW5rCgl0aGVyZS4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglEUE1JIGV4Y2VwdGlvbnMgb25seSBoYXBwZW4gb24gaTM4Ni4KCjIwMDMtMDctMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9jb21iby5jLCBkbGxzL2NhYmluZXQvZmRpLmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywKCSAgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywKCSAgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy90d2Fpbi90d2Fpbi5oLCBkbGxzL3VzZXIvbHN0ci5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywKCSAgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWwsIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYywKCSAgb2JqZWN0cy9wYWxldHRlLmMsIHByb2dyYW1zL3JlZ3N2cjMyL3JlZ3N2cjMyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIHNvbWUgY29tbW9uIHNwZWxsaW5nIGVycm9ycy4KCgkqIGxvYWRlci90YXNrLmM6CglBdm9pZCBhY2Nlc3NpbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBpbiBUQVNLX0NyZWF0ZSAoc3BvdHRlZCBieQoJUm9iZXJ0IFNoZWFybWFuKS4KCgkqIGRsbHMvaW1tMzIvaW1tLmMsIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgY2FzdHMgd2hlbiBhc3NpZ25pbmcgTlVMTCB0byBoYW5kbGVzLgoKCSogZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglNYWtlIEluaXQgYW5kIEluaXRBdWRpbyByZXR1cm4gYW4gZXJyb3Igd2hlbiBubyBhdWRpbyBkcml2ZXIgaXMKCWF2YWlsYWJsZS4KCUZpeCBjcmFzaCBpbiBJbml0QXVkaW8gd2hlbiByZWxlYXNpbmcgdGhlIGRzb3VuZCBvYmplY3QuCgoJKiBsaWJzL3BvcnQvaW50ZXJsb2NrZWQuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQWRkZWQgaXN5bmMgdG8gdGhlIGludGVybG9ja2VkIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglQb3dlclBDIGlubGluZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJsb2NrZWQgZnVuY3Rpb25zLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zYWNtL3N0cmVhbS5jLAoJICBkbGxzL21zYWNtL3dpbmVhY20uaCwgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL3dpbm1tL21taW8uYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbm1tLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSByZW5hbWVkIHdpbm1tLk9wZW5Ecml2ZXJXIGludG8gd2lubW0uT3BlbkRyaXZlcgoJLSByZXBsYWNlZCBhbGwgaW50ZXItRExMIGNhbGxzIChtc2FjbSBhbmQgbXN2aWRlbykgdG8gT3BlbkRyaXZlckEgd2l0aAoJICBPcGVuRHJpdmVyICh1bmljb2RlIGZvcm0pCgktIGFzIGEgY29uc2VxdWVuY2UsIGRyaXZlciBuYW1lIGhhbmRsaW5nIGluIG1zYWNtIGlzIG5vdyBtb3N0bHkKCSAgdW5pY29kZQoJLSBtb3ZlZCBVc2VyWWllbGQxNiBhbmQgVW5NYXBMUyBjYWxsIG91dCBvZiB0aGUgMzJiaXQgcGFydCBvZiB3aW5tbQoKCSogZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGUzMi5jOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglGaXhlZCAyIHR5cG9zIGluIG15IGxhc3QgcGF0Y2guCgoJKiBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgaW5jbHVkZS92ZncuaDoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBGaXhlZCBtZW1vcnkgbGVhayBpbiBBVklTYXZlT3B0aW9ucy4KCS0gSW1wbGVtZW50ZWQgQVZJU2F2ZVZXIG1ldGhvZC4KCS0gU2VtaS1zdHViIGltcGxlbWVudGF0aW9uIGZvciBDcmVhdGVFZGl0YWJsZVN0cmVhbSBtZXRob2QuCgktIEFkZGVkIHN1cHBvcnQgZm9yIGNyZWF0aW9uIG9mIGludGVybGVhdmVkIEFWSSBmaWxlcy4KCS0gRml4ZWQgY3JlYXRpb24gb2YgaW5kZXggdGFibGUgaW4gQVZJIGZpbGVzLgoJLSBBZGRlZCBkZWNsYXJhdGlvbiBmb3IgSUFWSVN0cmVhbWluZyBpbnRlcmZhY2UuCgktIEFkZGVkIHNvbWUgbW9yZSBtYWNyb3MuCgktIEZpeGVkIHNvbWUgbWlub3IgYnVncy4KCgkqIGRsbHMvZDNkOC90ZXh0dXJlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglFbnN1cmUgTUlQTUFQIGxldmVscyBpcyByZXNldCB3aGVuIHJlYmluZGluZyBhbiBleGlzdGluZyB0ZXh0dXJlIHRvIGEKCXRleHR1cmUgdW5pdC4KCgkqIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIEdldExldmVsQ291bnQgdG8gdGhlIGJhc2V0ZXh0dXJlIGNsYXNzLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU9ubHkgcmVsZWFzZSBvYmplY3QgaWYgd2UgYWN0dWFsbHkgZ290IGl0LgoKCSogZGxscy9kM2Q4L2RyYXdwcmltLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglFbnN1cmUgcGl4ZWwgY29vcmRpbmF0ZXMgcG9pbnQgdG8gdGhlIGJvdHRvbSBsZWZ0IG9mIHRoZSBwaXhlbCBub3QgdGhlCgltaWRkbGUuCgoJKiBvYmplY3RzL3RleHQuYzogU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoQHNoZW1lc2guYml6PgoJRG9uJ3QgY2FsbCB0aGUgcmVvcmRlcmluZyBmdW5jdGlvbiBpZiB0aGUgc3RyaW5nIGxlbmd0aCBpcyAwLiBUaGlzCgllbGltaW5hdGVzIGEgbm9pc3kgRklYTUUgYWJvdXQgSUNVIHJldHVybmluZyBhbiBpbmNvcnJlY3QgZXJyb3IgY29kZS4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcm1hcHBlci5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUZpeCBjb21waWxhdGlvbiBkdWUgdG8gbmFtZWxlc3Mgc3RydWN0cyBhbmQgdW5pb25zLgoKMjAwMy0wNy0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxpYnMvd3BwL3ByZXByb2MuYywgbGlicy93cHAvd3BwLmMsIGxpYnMvd3BwL3dwcF9wcml2YXRlLmg6CglDcmVhdGUgYSBuZXcgbGlzdCBvZiBkZWZpbmVkIHN5bWJvbHMgd2hlbiBwYXJzaW5nIGEgZmlsZSwgdG8gYWxsb3cKCXJlY3Vyc2l2ZSBwYXJzaW5nIG9mIG11bHRpcGxlIGZpbGVzLgoKCSogZGxscy9kbXVzaWMvZG11c2ljX21pc2MuYywgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS9heGV4dGVuZC5pZGwsIGluY2x1ZGUvZG11c2ljYy5oLCBpbmNsdWRlL2Rzb3VuZC5oLAoJICBpbmNsdWRlL3N0cm1pZi5oLCBpbmNsdWRlL3V1aWRzLmgsIGxpYnMvdXVpZC91dWlkLmM6CglBZGQgc3RybWlmLmggdG8gdGhlIGhlYWRlcnMgaW5jbHVkZWQgaW4gbGlidXVpZC4KCUZpeGVkIGEgZmV3IGhlYWRlciBjb25mbGljdHMuCgoJKiBkbGxzL2RldmVudW0vLmN2c2lnbm9yZSwgZGxscy9kZXZlbnVtL01ha2VmaWxlLmluLAoJICBkbGxzL2RldmVudW0vY3JlYXRlZGV2ZW51bS5jLCBkbGxzL2RldmVudW0vZGV2ZW51bS5yYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW0uc3BlYywgZGxscy9kZXZlbnVtL2RldmVudW1fbWFpbi5jLAoJICBkbGxzL2RldmVudW0vZGV2ZW51bV9wcml2YXRlLmgsIGRsbHMvZGV2ZW51bS9mYWN0b3J5LmMsCgkgIGRsbHMvZGV2ZW51bS9tZWRpYWNhdGVudW0uYywgZGxscy9kZXZlbnVtL3BhcnNlZGlzcGxheW5hbWUuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglJbXBsZW1lbnRlZCBEZXZFbnVtIGRsbC4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9lbnVtbW9uaWtlci5jLAoJICBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLCBkbGxzL3F1YXJ0ei9maWx0ZXJtYXBwZXIuYywKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUltcGxlbWVudGVkIElGaWx0ZXJNYXBwZXIyLgoKCSogaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL3N0cm1pZi5oLAoJICBpbmNsdWRlL3Vua253bi5oLCB0b29scy93aWRsL2hlYWRlci5jOgoJQWRkICNpZmRlZnMgYXJvdW5kIGZvcndhcmRzIGFuZCBpbnRlcmZhY2VzIGxpa2UgTUlETCBkb2VzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS93aW50ZXJubC5oLAoJICBsb2FkZXIvcGVfaW1hZ2UuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIHJlbW92ZWQgbmV4dCAmIHByZXYgZmllbGRzIGZyb20gV0lORV9NT0RSRUYgYW5kIGltcGxlbWVudCBpbnN0ZWFkCgkgIHRoZSB0aHJlZSBsaW5rZWQgbGlzdHMgaW4gTERSX01PRFVMRQoJLSBhZGRlZCBQRUJfTERSX0RBVEEgc3RydWN0dXJlIHRvIFBFQgoJLSByZW1vdmVkIGEgY291cGxlIG9mIG5vIGxvbmdlciBuZWVkZWQgZ2xvYmFsICYgc3RhdGljIHZhcmlhYmxlcwoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL3dpbmVkb3MvaGltZW0uYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIG1lbW9yeS9pbnN0ci5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJU3RhcnQgcHJvY2Vzc2luZyBhc3luY2hyb25vdXMgRE9TIGV2ZW50cyBpbiBEUE1JIG1vZGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglBZGRlZCBkM2Q5IGRsbC4KCgkqIGRsbHMvZDNkOS8uY3ZzaWdub3JlLCBkbGxzL2QzZDkvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOS9iYXNldGV4dHVyZS5jLAoJICBkbGxzL2QzZDkvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q5L2QzZDkuc3BlYywgZGxscy9kM2Q5L2QzZDlfbWFpbi5jLAoJICBkbGxzL2QzZDkvZDNkOV9wcml2YXRlLmgsIGRsbHMvZDNkOS9kZXZpY2UuYywgZGxscy9kM2Q5L2RpcmVjdHguYywKCSAgZGxscy9kM2Q5L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOS9waXhlbHNoYWRlci5jLCBkbGxzL2QzZDkvcXVlcnkuYywKCSAgZGxscy9kM2Q5L3Jlc291cmNlLmMsIGRsbHMvZDNkOS9zdGF0ZWJsb2NrLmMsIGRsbHMvZDNkOS9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOS9zd2FwY2hhaW4uYywgZGxscy9kM2Q5L3RleHR1cmUuYywgZGxscy9kM2Q5L3ZlcnNpb24ucmMsCgkgIGRsbHMvZDNkOS92ZXJ0ZXhidWZmZXIuYywgZGxscy9kM2Q5L3ZlcnRleGRlY2xhcmF0aW9uLmMsCgkgIGRsbHMvZDNkOS92ZXJ0ZXhzaGFkZXIuYywgZGxscy9kM2Q5L3ZvbHVtZS5jLAoJICBkbGxzL2QzZDkvdm9sdW1ldGV4dHVyZS5jLCBkbGxzL2QzZDkvdnNoYWRlcmRlY2xhcmF0aW9uLmMsCgkgIGluY2x1ZGUvZDNkOC5oLCBpbmNsdWRlL2QzZDkuaCwgaW5jbHVkZS9kM2Q5dHlwZXMuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBzb21lIGNsZWFudXBzIGFuZCBmaXhlcyBvbiBkM2Q4IGFuZCBkM2Q5IGhlYWRlcnMKCS0gYSBsb3Qgb2Ygc3R1YnMgZm9yIGQzZDkuZGxsCgoJKiBsaWJzL3V1aWQvTWFrZWZpbGUuaW4sIGxpYnMvdXVpZC9keDlndWlkLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCUFkZGVkIGQzZDkgZ3VpZHMuCgoyMDAzLTA2LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgdGVzdHMgZm9yIE5PUk1fSUdOT1JFTk9OU1BBQ0UgYW5kIE5PUk1fSUdOT1JFU1lNQk9MUyBpbiB0aGUKCUxDTWFwU3RyaW5nKExDTUFQX1NPUlRLRVkpIGJyYW5jaC4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9udGRsbC9zeW5jLmMsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgc2NoZWR1bGVyL3N5bmNocm8uYzoKCUltcGxlbWVudGVkIE50RGVsYXlFeGVjdXRpb24gYW5kIG1ha2UgU2xlZXAgY2FsbCBpdC4KCVRoZSBoYW5kbGUgY291bnQgbXVzdCBub3QgYmUgMCBpbiBOdFdhaXRGb3JNdWx0aXBsZU9iamVjdHMgKHNwb3R0ZWQgYnkKCVRyb3kgUm9sbG8pLgoKCSogZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcG5ocGFzdC9tYWluLmMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsCgkgIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHBfbWFpbi5jLCBkbGxzL2ltbTMyL2ltbS5jLAoJICBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zaXN5cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2lzeXMvbXNpc3lzLmMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlMzIuYywKCSAgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLCBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgZGxscy9zbm1wYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3NubXBhcGkvbWFpbi5jLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLAoJICBkbGxzL3R3YWluL3R3YWluMzJfbWFpbi5jLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVwcy9pbml0LmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL3dpbm1tLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zcG9vbC93c3Bvb2wuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGb3IgYWxsIERMTHMgd2l0aCBkZWZpbmVkIERsbE1haW4gYW5kIHdoaWNoIGRvIG5vdCByZXF1aXJlCglETExfVEhSRUFEX0FUVEFDSC9ETExfVEhSRUFEX0RFVEFDSCBub3RpZmljYXRpb25zLCBjYWxsCglEaXNhYmxlVGhyZWFkTGlicmFyeUNhbGxzKCkgaW4gb3JkZXIgdG8gc2xpZ2h0bHkgaW1wcm92ZSBwZXJmb3JtYW5jZQoJb24gdGhyZWFkIGNyZWF0aW9uL2V4aXRpbmcuCgoJKiBkbGxzL2RtdXNpYy9oZWxwZXIuYzogRml4ZWQgd2FybmluZy4KCgkqIGRsbHMvcXVhcnR6L2ZpbHRlcmdyYXBoLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvYXhjb3JlLmlkbCwKCSAgaW5jbHVkZS9heGV4dGVuZC5pZGwsIGluY2x1ZGUvZGV2ZW51bS5pZGwsIGluY2x1ZGUvZHluZ3JhcGguaWRsLAoJICBpbmNsdWRlL3N0cm1pZi5oLCBpbmNsdWRlL3N0cm1pZi5pZGw6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBBZGRlZCBEU2hvdyBoZWFkZXJzLgoJLSBBZGRlZCBuZWVkZWQgY29uc3QncyBpbiBGaWx0ZXJHcmFwaCBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9QdC5yYywgZGxscy9hdmlmaWwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9QdC5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfUHQucmMsCgkgIGRsbHMvbXN2aWRlby9tc3JsZTMyL3JzcmMucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9QdC5yYywgZGxscy93aW5lcHMvcnNyYy5yYywKCSAgZGxscy93aW5lcHMvd3BzX1B0LnJjLCBkbGxzL3dpbm1tL3dpbm1tX1B0LnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9QdC5yYzoKCU1hcmNlbG8gRHVhcnRlIDx3aW5lLWRldmVsQGJvbC5jb20uYnI+CgktIExvY2FsaXphdGlvbiB0byBQb3J0dWd1ZXNlIG9mIEJyYXppbAoJLSBSZXZpc2lvbiBhbmQgYWRkaXRpb24gb2YgbWlzc2luZyByZXNvdXJjZXMKCS0gTWlub3IgdHlwbyBmaXggYW5kIGNvZGVwYWdlIGZpeCBpbiBwcm9ncmFtcy93aW5lZmlsZSByZXNvdXJjZS4KCgkqIGRvY3VtZW50YXRpb24vUkVBRE1FLnB0X2JyOiBNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJTG9jYWxpemF0aW9uIHRvIFBvcnR1Z3Vlc2Ugb2YgQnJhemlsIG9mIFJFQURNRSBmaWxlLgoKCSogcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6IENhdGFsaW4gUGF0dWxlYSA8Y2F0YWxpbnNAdnYuY2FybGV0b24uY2E+CglGaXhlZCBVbmljb2RlIHN0cmluZyBvdXRwdXQuCgoJKiBkbGxzL2RtdXNpYy9kbXVzaWNfbG9hZGVyLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLCBkbGxzL2RtdXNpYy9oZWxwZXIuYzoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJRmlsZSBsb2FkaW5nIGltcHJvdmVtZW50cy4KCgkqIGluY2x1ZGUvd2lubnQuaCwgbWlzYy9jcHUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBQRl9QQUVfRU5BQkxFRCBhbmQgUEZfWE1NSTY0X0lOU1RSVUNUSU9OUyBkZWZpbmVzLgoJRGV0ZWN0IHRoZW0gYW5kIDNETk9XIGFuZCBYTU1JX0lOU1RSVUNUSU9OUyBmb3IgTGludXguCgoJKiBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL01ha2VmaWxlLmluOgoJUm9iZXJ0IEx1bm5vbiA8Ym9iQHlhcnJhYmVlLm5ldC5hdT4KCUFkZGVkIGxpYnV1aWQgdG8gd2luZWF1ZGlvaW8gbWFrZWZpbGUuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2RwYWRkci5oLCBpbmNsdWRlL2RwbGF5OC5oOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglBZGRlZCBEaXJlY3RQbGF5OCBoZWFkZXJzLgoKCSogZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9zeXN0ZW0uYywgZGxscy91c2VyL2NvbW0xNi5jLAoJICBkbGxzL3dpbmVkb3MvdmdhLmM6CglSZXBsYWNlIGNhbGxzIHRvIFdhaXRGb3JNdWx0aXBsZU9iamVjdHMgd2l0aCBhIDAgY291bnQgYnkgY2FsbHMgdG8KCVNsZWVwRXguCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzogR2V0L1NldFByb3BXIG5lZWRzIGEgVW5pY29kZSBzdHJpbmcuCgoJKiBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZTMyLmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gRml4ZWQgaW50ZXJmcmFtZSBjb21wcmVzc2lvbiAtIG5vdyB3b3JrcyBmb3IgUkxFNCBhbmQgUkxFOC4KCS0gRml4ZWQgYWxpZ25tZW50IG9mIFJMRTQgaW4gYWJzb2x1dGUgbW9kZS4KCS0gSW1wcm92ZWQgY29tcHJlc3Npb24gKHNtYWxsZXIgb3V0cHV0KS4KCgkqIERFVkVMT1BFUlMtSElOVFM6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJLSBhZGRlZCAyIGRsbHMKCS0gYWRkZWQgbGluayB0byBhcGlsaXN0CgktIHJlbW92ZWQgc3VnZ2VzdGlvbiB0byBsb29rIGF0IEJ5dGUgZnJvbSAyMCB5ZWFycyBhZ28KCgkqIG1pc2MvY3B1LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgQ1BVIGRldGVjdGlvbiBmb3IgRnJlZUJTRCBhbmQgUDQuCgoJKiBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX3ByaXZhdGUuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIHZpZGVvIGNvbXByZXNzb3IvZGVjb21wcmVzc29yIGR5bmFtaWMgaW5zdGFsbGF0aW9uLgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywKCSAgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVkb3MvdGltZXIuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1ha2UgdGltZXIgSVJRIGhhbmRsZXIgcmVndWxhciBidWlsdGluIGludGVycnVwdCBoYW5kbGVyIGluc3RlYWQgb2YKCXVzaW5nIGFuIGFzc2VtYmxlciBzdHViLgoKMjAwMy0wNi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGluY2x1ZGUvaW1hZ2VobHAuaDoKCVJlbW92ZWQgV2luZS1zcGVjaWZpYyBkZWZpbml0aW9uIGZyb20gZXhwb3J0ZWQgaGVhZGVyIChzcG90dGVkIGJ5CglTdGV2ZW4gRWR3YXJkcykuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwgZGxscy9kc291bmQvbWl4ZXIuYywKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsCgkgIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCTNEIGJ1ZmZlciBhbmQgbGlzdGVuZXIgcmVmZXJlbmNlIGNvdW50cyBzaG91bGQgYmUgZml4ZWQuCgkzRCBzb3VuZCBub3cgcGxheXMgaW4gM0QuCglDT00gaW50ZXJmYWNlcyBzaG91bGQgYmUgY29ycmVjdCBmb3IgYnVmZmVycyBhbmQgM0Qgc3R1ZmYuIFRoZSBDT00KCWludGVyZmFjZSBpcyBicm9rZW4gb24gbm90aWZpY2F0aW9ucyBidXQgSSB3aWxsIGZpeCB0aGF0IG5leHQuCglGaXhlZCB0aGUgYnVnIHdoZW4gY2xvc2luZyBhbmQgb3BlbmluZyB0aGUgc2FtZSBvciBhbm90aGVyIHNvdW5kCglkZXZpY2UgcXVpY2tseS4KCUZpeGVkIHNvbWUgbG9ja2luZyBidXQgdGhlcmUgaXMgYSBsb3Qgb2Ygd29yayBsZWZ0IHlldC4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCVN0b3JlIFByaW50U3RydWN0dXJlcyBpbiBhIHdpbmRvdyBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGV4dHJhIHdpbmRvdwoJYnl0ZXMuCgoJKiBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q4L2QzZGNvcmVfZ2wuaCwgZGxscy9kM2Q4L2RyYXdwcmltLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gY3VycmVudGx5IGFsd2F5cyB1c2Ugc2xvYXcgcGF0aCBhcyBmYXN0IHBhdGggaGF2ZSBzb21lIHByb2JsZW1zCgktIGZpeCBBUElFTlRSWSBtaXNtYXRjaGVkIHZhbHVlIHVzZWQgYnkgZ2wgZnVuYyBwb2ludGVycyAoaW4KCSAgZDNkY29yZV9nbC5oKQoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2JpZGkuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9mb250LmMsCgkgIG9iamVjdHMvdGV4dC5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc2hlbWVzaC5iaXo+CglJbXBsZW1lbnRhdGlvbiBvZiB0aGUgcmVvcmRlcmluZyBhbGdvcml0aG0gYnkgY2FsbGluZyBJQ1UncyByZW9yZGVyaW5nCglmdW5jdGlvbnMuCgoJKiBkbGxzL2RtdXNpYy9kbXVzaWMuYywgZGxscy9kbXVzaWMvZG11c2ljX2xvYWRlci5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWlzYy5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYywgZGxscy9kbXVzaWMvZG11c2ljX3BsdWdpbnMuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaCwgZGxscy9kbXVzaWMvZG11c2ljX3NlZ21lbnQuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3N0eWxlLmMsIGRsbHMvZG11c2ljL2RtdXNpY19zeW50aC5jLAoJICBkbGxzL2RtdXNpYy9oZWxwZXIuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBodWdlIENPTSBjbGVhbnVwOiBvbmx5IGtlZXAgZG11c2ljOCB2ZXJzaW9uIG9mIGludGVyZmFjZXMgd2hlbiB0aGV5CgkgIGluaGVyaXQgZnJvbSBkbXVzaWMxIGFuZCBkbXVzaWMyIHZlcnNpb24uIEFuZCBhbHdheXMgdXNlIGRtdXNpYzgKCSAgdmVyc2lvbnMgd2hlbiBhdmFpbGFibGUuCgktIHJlYWxseSBzdHVwaWQgaW1wbGVtZW50YXRpb24gb2YgSURpcmVjdE11c2ljTG9hZGVyODo6R2V0T2JqZWN0IHdoZW4KCSAgSURpcmVjdE11c2ljU2NyaXB0IHdhbnRlZAoJLSByZWFsbHkgZml4IHRoZSByZWZjb3VudCBwcm9ibGVtIGZvdW5kIGJ5IFJvawoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRW5hYmxlIGFsbCBvZiBEbGxNYWluKCksIGV2ZW4gaWYgaWYgbm90IE1aX1NVUFBPUlRFRC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCBsaW5lIHdyYXBwaW5nIGZvciBhIEZJWE1FLgoKCSogZGxscy93aW5lZG9zL2ludDMxLmM6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJRGlzcGxheSB0aGUgaW50ZXJydXB0IG51bWJlciBpbiBoZXhhZGVjaW1hbC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBTaWxlbmNlIHRoZSBGSVhNRSBhYm91dCBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIHNpbmNlIGl0IGlzIHdyb25nIGZvcgoJICA5OS45JSBvZiBjYXNlcyAoaWYgTVMgd2lsbCBldmVyIHVzZSB0aGUgZmVhdHVyZSBhdCBhbGwpCgktIEFkZGVkIHN0dWJzIGZvciBJVHlwZUNvbXAgaW50ZXJmYWNlIGluIElUeXBlTGliCgktIEltcGxlbWVudGF0aW9uIG9mIElUeXBlQ29tcCBpbiBJVHlwZUluZm8KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLAoJICBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgaW5jbHVkZS93aW5ubHMuaCwKCSAgbGlicy91bmljb2RlL01ha2VmaWxlLmluLCBsaWJzL3VuaWNvZGUvbWJ0b3djLmMsCgkgIGxpYnMvdW5pY29kZS9zb3J0a2V5LmMsIGxpYnMvdW5pY29kZS91dGY4LmMsIGxpYnMvdW5pY29kZS93Y3RvbWIuYywKCSAgbGlicy91bmljb2RlL3dpbmVfdW5pY29kZS5kZWY6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IExDTWFwU3RyaW5nIHVzaW5nIHVuaWNvZGUgY29sbGF0aW9uIHRhYmxlcy4KCU1vdmUgQ29tcGFyZVN0cmluZyBhbmQgTENNYXBTdHJpbmcgdG8gZGxscy9rZXJuZWwvbG9jYWxlLmMuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvcHJvY2Vzcy5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL3N5c2RlcHMuYywgaW5jbHVkZS90aHJlYWQuaCwKCSAgc2NoZWR1bGVyL2ZpYmVyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYzoKCU1vdmVkIHNvbWUgb2YgdGhlIHByb2Nlc3MgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoJUmVtb3ZlZCBrZXJuZWwgZGVwZW5kZW5jaWVzIGZyb20gc3lzZGVwcy5jIGFuZCBtb3ZlZCBpdCB0byBkbGxzL250ZGxsLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYzoKCU1ha2Ugc3VyZSB0byByZXR1cm4gYW4gZXJyb3IgaWYgbG9hZF9kbGwgZmFpbHMgYmVjYXVzZSB0aGUgbG9hZCBvcmRlcgoJaXMgZW1wdHkuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOiBUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCVJlbW92ZWQgRklYTUUgd2hlbiBsb2FkaW5nIHNlY29uZCBleGUgZmlsZS4KCgkqIGxpYnMvdW5pY29kZS9jb2xsYXRpb24uYywgbGlicy91bmljb2RlL2NwbWFwLnBsOgoJQWRkZWQgZ2VuZXJhdGlvbiBvZiB0YWJsZSBvZiBjb2xsYXRpb24ga2V5cyAoYmFzZWQgb24gYSBwYXRjaCBieQoJRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBkbGxzL3dpbmluZXQvbmV0Y29ubmVjdGlvbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBpbmNsdXNpb24gb2YgPHN5cy90aW1lLmg+IG5lZWRlZCBmb3Igc3RydWN0IHRpbWV2YWwgZGVjbGFyYXRpb24uCglQcm90ZWN0IHNvbWUgb3B0aW9uYWwgaGVhZGVycyBmcm9tIGluY2x1c2lvbi4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglUcm95IFJvbGxvIDx3aW5lQHRyb3kucm9sbG8ubmFtZT4KCUltcGxlbWVudGVkIE9sZURyYXcuCgoyMDAzLTA2LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbGlicy91bmljb2RlL2NfMDM3LmMsIGxpYnMvdW5pY29kZS9jXzA0Mi5jLCBsaWJzL3VuaWNvZGUvY18xMDAwMC5jLAoJICBsaWJzL3VuaWNvZGUvY18xMDAwNi5jLCBsaWJzL3VuaWNvZGUvY18xMDAwNy5jLAoJICBsaWJzL3VuaWNvZGUvY18xMDAyOS5jLCBsaWJzL3VuaWNvZGUvY18xMDA2LmMsCgkgIGxpYnMvdW5pY29kZS9jXzEwMDc5LmMsIGxpYnMvdW5pY29kZS9jXzEwMDgxLmMsCgkgIGxpYnMvdW5pY29kZS9jXzEwMjYuYywgbGlicy91bmljb2RlL2NfMTI1MC5jLCBsaWJzL3VuaWNvZGUvY18xMjUxLmMsCgkgIGxpYnMvdW5pY29kZS9jXzEyNTIuYywgbGlicy91bmljb2RlL2NfMTI1My5jLCBsaWJzL3VuaWNvZGUvY18xMjU0LmMsCgkgIGxpYnMvdW5pY29kZS9jXzEyNTUuYywgbGlicy91bmljb2RlL2NfMTI1Ni5jLCBsaWJzL3VuaWNvZGUvY18xMjU3LmMsCgkgIGxpYnMvdW5pY29kZS9jXzEyNTguYywgbGlicy91bmljb2RlL2NfMjA4NjYuYywKCSAgbGlicy91bmljb2RlL2NfMjA5MzIuYywgbGlicy91bmljb2RlL2NfMjg1OTEuYywKCSAgbGlicy91bmljb2RlL2NfMjg1OTIuYywgbGlicy91bmljb2RlL2NfMjg1OTMuYywKCSAgbGlicy91bmljb2RlL2NfMjg1OTQuYywgbGlicy91bmljb2RlL2NfMjg1OTUuYywKCSAgbGlicy91bmljb2RlL2NfMjg1OTYuYywgbGlicy91bmljb2RlL2NfMjg1OTcuYywKCSAgbGlicy91bmljb2RlL2NfMjg1OTguYywgbGlicy91bmljb2RlL2NfMjg1OTkuYywKCSAgbGlicy91bmljb2RlL2NfMjg2MDAuYywgbGlicy91bmljb2RlL2NfMjg2MDMuYywKCSAgbGlicy91bmljb2RlL2NfMjg2MDQuYywgbGlicy91bmljb2RlL2NfMjg2MDUuYywKCSAgbGlicy91bmljb2RlL2NfMjg2MDYuYywgbGlicy91bmljb2RlL2NfNDI0LmMsIGxpYnMvdW5pY29kZS9jXzQzNy5jLAoJICBsaWJzL3VuaWNvZGUvY181MDAuYywgbGlicy91bmljb2RlL2NfNzM3LmMsIGxpYnMvdW5pY29kZS9jXzc3NS5jLAoJICBsaWJzL3VuaWNvZGUvY184NTAuYywgbGlicy91bmljb2RlL2NfODUyLmMsIGxpYnMvdW5pY29kZS9jXzg1NS5jLAoJICBsaWJzL3VuaWNvZGUvY184NTYuYywgbGlicy91bmljb2RlL2NfODU3LmMsIGxpYnMvdW5pY29kZS9jXzg2MC5jLAoJICBsaWJzL3VuaWNvZGUvY184NjEuYywgbGlicy91bmljb2RlL2NfODYyLmMsIGxpYnMvdW5pY29kZS9jXzg2My5jLAoJICBsaWJzL3VuaWNvZGUvY184NjQuYywgbGlicy91bmljb2RlL2NfODY1LmMsIGxpYnMvdW5pY29kZS9jXzg2Ni5jLAoJICBsaWJzL3VuaWNvZGUvY184NjkuYywgbGlicy91bmljb2RlL2NfODc0LmMsIGxpYnMvdW5pY29kZS9jXzg3NS5jLAoJICBsaWJzL3VuaWNvZGUvY184NzguYywgbGlicy91bmljb2RlL2NfOTMyLmMsIGxpYnMvdW5pY29kZS9jXzkzNi5jLAoJICBsaWJzL3VuaWNvZGUvY185NDkuYywgbGlicy91bmljb2RlL2NfOTUwLmMsIGxpYnMvdW5pY29kZS9jYXNlbWFwLmMsCgkgIGxpYnMvdW5pY29kZS93Y3R5cGUuYzoKCVVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBVbmljb2RlIHN0YW5kYXJkLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9maWxlLmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkbGxzL250ZGxsL3N5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3NtYi5jLAoJICBmaWxlcy9zbWIuaCwgaW5jbHVkZS9hc3luYy5oLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gbWFkZSBhc3luYy5oIHJlYWR5IGZvciB1c2UgaW4gbnRkbGw6IHJlcGxhY2VkIGFsbCBjYWxscyB0byBrZXJuZWwzMgoJICBmdW5jdGlvbnMgd2l0aCBudGRsbCBlcXVpdmFsZW50CgktIHJlcGxhY2VkIHN0YXR1cyBzZXR0ZXIvZ2V0dGVyIGZvciB3aW5lIGFzeW5jIHN0cnVjdHVyZXMgd2l0aCBkaXJlY3QKCSAgYWNjZXNzIHRvIGEgKG5vdyBpbmNsdWRlZCkgSU9fU1RBVFVTX0JMT0NLIHN0cnVjdHVyZQoJLSBzaW5jZSB3ZSBub3cgaGF2ZSBhIElPX1NUQVRVU19CTE9DSyBpbiBhc3luY19wcml2YXRlLCB3ZSBubyBsb25nZXIKCSAgbmVlZCBpbiBtb3N0IG9mIHRoZSB1c2VyIChkZXJpdmF0ZWQpIHN0cnVjdHVyZXMgYSBmaWVsZCBmb3IKCSAgTFBPVkVSTEFQUEVEIChpdCdzIHN0b3JlZCBhcyB0aGUgSU9fU1RBVFVTX0JMT0NLKQoJLSByZXdyb3RlIHRoZSBhc3luYy5oIHVzZXJzIGFjY29yZGluZ2x5CgktIGltcGxlbWVudGVkIG50ZGxsLk50e1JlYWR8V3JpdGV9RmlsZSBhbmQgbGV0CgkgIGtlcm5lbDMyLntSZWFkfFdyaXRlfUZpbGUoRXgpPyB1c2UgdGhvc2UgbmV3IG50ZGxsIGZ1bmN0aW9ucwoJLSByZXdyb3RlIHNtYiByZWFkL3dyaXRlIGludGVyZmFjZXMgdG8gYmUgbW9yZSBudGRsbCBzdHlsaXNoIChubwoJICBvdmVybGFwcGVkIHlldCkKCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZGJnaGVscC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBkYmdoZWxwLmggaGVhZGVyLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIGEgc21hbGwgdGVzdCBmb3IgcHJvY2VzcyBleGl0IGNvZGUgcmV0cmlldmFsLgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jOiBTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglSZW1vdmUgdW5uZWVkZWQgY2FsbHMgdG8gTG9hZExpYnJhcnkxNiBhbmQgRnJlZUxpYnJhcnkxNi4KCjIwMDMtMDYtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJVmFyQWRkOiBBZGRlZCBWVF9SOCwgVlRfRU1QVFksIFZUX05VTEwgaGFuZGxpbmcuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCU1hcCB0b3AtbGV2ZWwgd2luZG93cyB3aGVuIFdTX1ZJU0lCTEUgaXMgc2V0LCBidXQgZG9uJ3QgdW5tYXAgdGhlbQoJd2hlbiBpdCdzIGNsZWFyZWQuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUFub3RoZXIgbWFrZSBpbnN0YWxsIGRlcGVuZGVuY3kgZml4LgoKCSogZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGluY2x1ZGUvZmlsZS5oLCB3aW4zMi9kZXZpY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBzdGFydGVkIGltcGxlbWVudGluZyBudGRsbC5OdERldmljZUlvQ29udHJvbEZpbGUgYW5kIG1hZGUKCSAga2VybmVsMzIuRGV2aWNlSW9Db250cm9sIGNhbGwgaXQKCS0gY2hhbmdlZCBjZHJvbSBpb2N0bCBmdW5jdGlvbidzIHByb3RvdHlwZSB0byBzdGljayB0bwoJICBudGRsbC5OdERldmljZUlvQ29udHJvbEZpbGUgc2lnbmF0dXJlCgoJKiBpbmNsdWRlL2QzZDkuaCwgaW5jbHVkZS9kM2Q5dHlwZXMuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJZDNkOSBoZWFkZXJzIGFyZSBiZXR0ZXIgd2hlbiB0aGV5IGJ1aWxkLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuaCwKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcxNi5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJTW9yZSBzcGxpdHRpbmcgb2YgdGhlIFdpbjE2LzMyIGludGVybmFsIGZpbGVkbGdwcm9jIHdpbmRvdyBwcm9jZWR1cmVzCglhbmQgZGlhbG9nIGluaXQuCglNYWtlIGEgZmV3IGludGVybmFsIGZ1bmN0aW9uIHN0YXRpYyBhbmQgc2hhcmUgYSBmZXcgb3RoZXJzLgoKCSogZmlsZXMvc21iLmMsIGZpbGVzL3NtYi5oOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQG1lcmN1cnlzcGVlZC5jb20+CglBIGxpdHRsZSBTTUIgcHJlcGFyYXRvcnkgd29yazoKCURvbid0IHB1Ymxpc2ggaW50ZXJuYWwgaW5mb3JtYXRpb24uCglBZGQgYSBmdW5jdGlvbiBmb3IgZGV0ZWN0aW5nIFVOQyBuYW1lcy4KCUFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgTlQgYWxsb3dzIGVpdGhlciBzZXBhcmF0b3IgY2hhcmFjdGVyLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVmb250LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbGVDcmVhdGVGb250SW5kaXJlY3QoTlVMTCwuLi4pIHVzZXMgdGhlIE9MRSBTdGRGb250LgoJQWRkZWQgdGVzdGNhc2UgZm9yIE9sZUNyZWF0ZUZvbnRJbmRpcmVjdChOVUxMKS4KCUFkZGVkIFZUX05VTEwgLT4gVlRfQk9PTCB2YXJpYW50IGNvbnZlcnRlci4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9yZXNvdXJjZS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsCgkgIGRsbHMva2VybmVsL3RhcGUuYywgZGxscy9rZXJuZWwvdGhyZWFkLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGZpbGVzL3RhcGUuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgd2luMzIva2VybmVsMzIuYzoKCU1vdmVkIHRhcGUuYyB0byBkbGxzL2tlcm5lbC4KCU1vdmVkIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHJlc291cmNlIHVwZGF0ZSBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCglTdGFydGVkIG1vdmluZyBzb21lIG9mIHRoZSB0aHJlYWQgZnVuY3Rpb25zIHRvby4KCgkqIGRsbHMvZ2RpL21mZHJ2L2luaXQuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIENyZWF0ZU1ldGFGaWxlVyhOVUxMKSBjb3JyZWN0bHkuCgoJKiBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUlTdkl0ZW1DbV9mbkludm9rZUNvbW1hbmQ6IGFkZGVkIHN1cHBvcnQgZm9yICJkZWxldGUiIGNvbW1hbmQuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvZmlsZS5jLCBkbGxzL2tlcm5lbC9maWxlMTYuYywKCSAgZGxscy9rZXJuZWwva2VybmVsX3ByaXZhdGUuaCwgZGxscy9udGRsbC9maWxlLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvZmlsZS5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBzdGFydCBtb3ZpbmcgYSBmZXcgZmlsZSByZWxhdGVkIGZ1bmN0aW9ucyBmcm9tIGZpbGVzL2ZpbGUuYyB0bwoJICBkbGxzL2tlcm5lbCBzdWJkaXIgKGFsc28gc3BsaXR0aW5nIDE2Yml0IEFQSXMgaW4gYSBzZXBhcmF0ZSBmaWxlKQoJLSBpbXBsZW1lbnRlZCBudGRsbC5OdHtMb2NrfFVubG9ja31GaWxlLCBhbmQgbWFkZSB1c2Ugb2YgdGhvc2UgZm9yIHRoZQoJICBrZXJuZWwzMiBlcXVpdmFsZW50CgktIGltcGxlbWVudGVkIGEgZmV3IGluZm9ybWF0aW9uIGNsYXNzZXMgaW4gTnRRdWVyeUluZm9ybWF0aW9uRmlsZSBhbmQKCSAgTnRTZXRJbmZvcm1hdGlvbkZpbGUgKHN0aWxsIGxvdHMgb2YgbWlzc2luZyBjbGFzc2VzKQoJLSBlbmhhbmNlZCB0aGUgZ2V0X2ZpbGVfaW5mbyBzZXJ2ZXIgcmVxdWVzdCBpbiBvcmRlciB0byBpbXBsZW1lbnQKCSAgY29ycmVjdGx5IE50UXVlcnlJbmZvcm1hdGlvbkZpbGUgKGNoYW5nZSB0aW1lICYgZmlsZSBhbGxvYyBzaXplKQoJLSByZXdyb3RlIHJlZ2lzdHJ5IGxvYWRpbmcgdG8gY29tcGx5IHdpdGggbGF0ZXN0IGNoYW5nZXMKCgkqIGRsbHMvZG11c2ljL01ha2VmaWxlLmluLCBkbGxzL2RtdXNpYy9kbXVzaWNfbG9hZGVyLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLAoJICBkbGxzL2RtdXNpYy9oZWxwZXIuYzoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJQWRkZWQgZnJhbWV3b3JrIGZvciBmaWxlIGxvYWRpbmcuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglFeHBvc2UgcGFydCBvZiBET1NWTV9TZW5kUXVldWVkRXZlbnRzKCkgYWxzbyBmb3IgcGxhdGZvcm1zIHdpdGhvdXQKCU1aX1NVUFBPUlRFRC4KCjIwMDMtMDYtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3gxMWRydi5oLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY2xpcGJvYXJkLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmgsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3Mvd2luLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CgktIHVzZSBnbG9iYWwgYXRvbXMgZm9yIHRoZSBmb3JtYXQgaWRzCgktIGFkZCB0aW1lb3V0IHdoZW4gY2FsbGluZyBYQ2hlY2tUeXBlZFdpbmRvd0V2ZW50CgktIGZpeCBicm9rZW4gSXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGU7IGl0IHRyaWVkIHRvIGRvIGEgdHJpY2sgd2l0aAoJICBFbnVtQ2xpcGJvYXJkRm9ybWF0cyBieSBtYWtpbmcgaW5jb3JyZWN0IGFzc3VtcHRpb25zCgktIGluIFgxMURSVl9Jc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZSBkbyBhIHF1aWNrIGV4aXQgaWYgbm8gb25lIG93bnMKCSAgdGhlIHNlbGVjdGlvbgoJLSBhZGQgMSBzZWNvbmQgKm1pbmltdW0qIHRpbWUgbGFwc2UgYmV0d2VlbiBYU2VsZWN0aW9uT3duZXIgY2FsbHMKCS0gc3luYyBjbGlwYm9hcmQgb3duZXJzaGlwIGJldHdlZW4gZGlmZmVyZW50IHdpbmUgcHJvY2Vzc2VzCgktIHByZXZlbnRzIGFwcHMgZnJvbSBnZXR0aW5nIGludG8gd2llcmQgc3RhdGUgd2hlcmUgdGhleSB0aG91Z2h0IHRoZXkKCSAgZGlkbid0IG93biB0aGUgc2VsZWN0aW9uIGJ1dCB0aGV5IGRpZCBhbmQgYXMgYSByZXN1bHQgcXVlcmllZAoJICB0aGVtc2VsdmVzIGZvciBhdmFpbGFibGUgc2VsZWN0aW9uIGRhdGEKCgkqIGRsbHMvd2luZXBzL2luaXQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc3VyZSB3ZSB1cGRhdGUgZGMtPmJpdHNQZXJQaXhlbC4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jOgoJQWRkZWQgc3BlY2lhbCBjYXNlIGZvciAiZGlzcGxheSIgaW4gRFJJVkVSX0dldERyaXZlck5hbWUgc28gdGhhdAoJR2V0REMoTlVMTCwiZGlzcGxheSIpIHdvcmtzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvdGV4dC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGVuYWJsZSBjbGllbnQgc2lkZSBmb250cyB1bmxlc3Mgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgbm9uLXN5bWJvbAoJZm9udCBpbnN0YWxsZWQgLSB0aGlzIGF2b2lkcyBhIG5hc3R5IFdpbmdkaW5ncyBvbmx5IHNjZW5hcmlvLgoJQWRkIHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gZm9udCByZXBsYWNlbWVudHMsIHRoaXMgZXNzZW50aWFsbHkgbGV0cwoJeW91IGdpdmUgYSBzZWNvbmQgbmFtZSB0byBhIGZvbnQgZmFtaWx5IHNvIHRoYXQgZmFtaWx5QSBnZXRzCgllbnVtZXJhdGVkIGFzIGZhbWlseUIgdG9vLgoJSWYgd2UgZW5jb3VudGVyIHR3byBjb3BpZXMgb2YgdGhlIHNhbWUgZm9udCB0aGVuIHVzZSB0aGUgb25lIHdpdGggdGhlCglsYXJnZXIgdmVyc2lvbiBudW1iZXIuCgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgR2V0VGV4dENoYXJzZXRJbmZvIGltcGxlbWVudGF0aW9uIHRvIHRoZSBmb250IGRyaXZlci4KCgkqIHdpbmRvd3Mvd2luLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTaW1wbGUgb3B0aW1pemF0aW9uIGluIEVuYWJsZVdpbmRvdy4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUR1bXAgUkRXXyBmbGFncyBpbiBSZWRyYXdXaW5kb3cuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWxvbmcgd2l0aCBBbHRHciBzdGF0ZSBzYXZlIGFsc28gYWxsIHBvc3NpYmxlIG1vZGlmaWVyIHN0YXRlcy4KCgkqIGRsbHMvd2luZXBzL2Rvd25sb2FkLmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9wcy5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90eXBlNDIuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGb3IgUG9zdFNjcmlwdCB2ZXJzaW9ucyA8IDIuMDE1IHdlIG5lZWQgdG8gZXhwbGljaXRseSBhbGxvY2F0ZSBzcGFjZQoJZm9yIHRoZSAnZ2x5ZicgYXJyYXkuCglUbyBjb25zZXJ2ZSBWTSwgd2Ugb25seSBhbGxvdyB1cCB0byB0d28gZm9udHMgdG8gYmUgZG93bmxvYWRlZCBiZWZvcmUKCXJlY2xhaW1pbmcgdGhlaXIgVk0uCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUl0IHNlZW1zIGN1cHNHZXREZWZhdWx0IHJldHVybnMgdGhlIHN5c3RlbSBkZWZhdWx0IHByaW50ZXIgYW5kIGlnbm9yZXMKCWEgdXNlcidzIG92ZXJyaWRlLiAgU28gdXNlIGN1cHNHZXREZXN0cyBpbnN0ZWFkIHdoaWNoIGRvZXMgcmVzcGVjdCB0aGUKCXVzZXIncyBjaG9pY2UuCglEZWxldGUgYWxsIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIHByaW50ZXIga2V5cyBvbiBzdGFydHVwIGJlZm9yZQoJcXVlcnlpbmcgdGhlIGN1cHMgc2VydmVyLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdG8gcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBmaWxlIGdlbmVyYXRpb24gZmFpbHMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU9fUkRPTkxZPT0wIGJ1dCBpdCdzIGNsZWFuZXIgdG8gcGFzcyBpdCB0byBEUklWRV9PcGVuRGV2aWNlKCkgYW55d2F5LgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIG5vdGlmaWNhdGlvbiBmaXhlcy4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L21hcHBpbmcuYywKCSAgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZWNvcmQgU2V0V29ybGRUcmFuc2Zvcm0gYW5kIE1vZGlmeVdvcmxkVHJhbnNmb3JtIGluIGVuaGFuY2VkCgltZXRhZmlsZXMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUFkZGVkIGltcG9ydCBsaWJzIGRlcGVuZGVuY3kgZm9yIG1ha2UgaW5zdGFsbC4KCgkqIHByb2dyYW1zL2Nsb2NrL0VuLnJjLCBwcm9ncmFtcy9jbG9jay9QdC5yYywgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvRW4ucmMsIHByb2dyYW1zL2NtZGxndHN0L1B0LnJjLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvUHQucmMsIHByb2dyYW1zL3Byb2dtYW4vUHQucmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywgcHJvZ3JhbXMvc3RhcnQvUHQucmMsCgkgIHByb2dyYW1zL3N0YXJ0L3JzcmMucmMsIHByb2dyYW1zL3ZpZXcvRW4ucmMsIHByb2dyYW1zL3ZpZXcvUHQucmMsCgkgIHByb2dyYW1zL3ZpZXcvdmlld3JjLnJjLCBwcm9ncmFtcy93Y21kL0VuLnJjLCBwcm9ncmFtcy93Y21kL1B0LnJjLAoJICBwcm9ncmFtcy93Y21kL3djbWRyYy5yYywgcHJvZ3JhbXMvd2luZWNmZy9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNmZy9QdC5yYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9QdC5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYywgcHJvZ3JhbXMvd2luZW1pbmUvRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL1B0LnJjLCBwcm9ncmFtcy93aW5lbWluZS9yc3JjLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL1B0LnJjLCBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmM6CglNYXJjZWxvIER1YXJ0ZSA8d2luZS1kZXZlbEBib2wuY29tLmJyPgoJLSBsb2NhbGl6YXRpb24gdG8gdGhlIFBvcnR1Z3Vlc2Ugb2YgQnJhemlsIG9mICJwcm9ncmFtcy8qIgoJLSBzZXBhcmF0aW9uIG9mIHNvbWUgcmVzb3VyY2VzIHRoYXQgb25seSBleGlzdGVkIGluIEVuZ2xpc2gKCS0gbGVzc2VyIGFkanVzdG1lbnRzIGluIG1lbnVzCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMvbnRkbGwvaGVhcC5jLAoJICBmaWxlcy9wcm9maWxlLmMsIGZpbGVzL3NtYi5jLCBtZW1vcnkvaGVhcC5jLCBzY2hlZHVsZXIvcHRocmVhZC5jLAoJICBzY2hlZHVsZXIvc3lzbGV2ZWwuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBpbiBrZXJuZWwzMiwgcmVwbGFjZWQgYWxsIHtFbnRlcnxMZWF2ZX1Dcml0aWNhbFNlY3Rpb24gY2FsbHMgd2l0aAoJICBudGRsbCBjb3VudGVycGFydHMKCS0ge0VudGVyfExlYXZlfUNyaXRpY2FsU2VjdGlvbiBpcyBub3cgYSBwdXJlIGZvcndhcmQgZnJvbSBrZXJuZWwzMiB0bwoJICBudGRsbCAod2Ugbm93IGxvbmdlciBjYW4gdXNlIHtFbnRlcnxMZWF2ZX1Dcml0aWNhbFNlY3Rpb24gaW4ga2VybmVsMzIpCgktIHJlcGxhY2VkIGEgZmV3IGtlcm5lbDMyIGhlYXAgbWFuYWdlbWVudCBjYWxscyBmcm9tIG50ZGxsLCB3aXRoCgkgIFJ0bEhlYXAqIGVxdWl2YWxlbnRzCgoJKiBkbGxzL2NhYmluZXQvZmRpLmM6IEdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSByZW1vdmUgdW51c2VkIGxvb3AgdGhhdCBhbHdheXMgaXRlcmF0ZXMgb25jZQoJLSByZW1vdmUgd2FybmluZwoJLSBwcmVwYXJhdGlvbnMgdG8gdXNlIG11bHRpcGxlIGZkaV9kZWNvbXBfc3RhdGUgc3RydWN0dXJlcyBpbiBhIGxpbmtlZGxpc3QsCgkgIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBpbXBsZW1lbnQgc3BsaXQgY2FiaW5ldHMsIGlmIGFsbCBnb2VzIGFjY29yZGluZwoJICB0byBwbGFuIC0tIHRoaXMgaXMgc29tZXdoYXQgYW5hbG9nb3VzIHRvIHN0cnVjdCBjYWJpbmV0IGluIGNhYmV4dHJhY3QuCgoJKiBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2FjbXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL2FwaS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuc3BlYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX3ByaXZhdGUuaCwgZGxscy9hdmlmaWwzMi9leHRyYWNodW5rLmMsCgkgIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYywgZGxscy9hdmlmaWwzMi9pY21zdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi90bXBmaWxlLmMsIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jLCBpbmNsdWRlL3Zmdy5oOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CgktIEZpeGVkIHNvbWUgc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoZXMuCgktIEZpeGVkIGJ1Z3MgaW4gQVZJU2F2ZU9wdGlvbnMgZGlhbG9nIGhhbmRsaW5nLgoJLSBGaXhlZCBidWcgaW4gQVZJRklMRV9Mb2FkRmlsZSAtLSBub3cgY2hlY2sgZm9yIG1vcmUgdGhhbgoJICBNQVhfQVZJU1RSRUFNUyBzdHJlYW1zIGluIGZpbGUuCgktIEltcGxlbWVudGVkIEFWSU1ha2VGaWxlRnJvbVN0cmVhbXMgYW5kIEFWSVNhdmVWQSBtZXRob2QuCgktIEFkZGVkIElBVklFZGl0U3RyZWFtIGludGVyZmFjZS4KCS0gSW1wbGVtZW50ZWQgRWRpdFN0cmVhbSogbWV0aG9kcy4KCS0gQWRkZWQgc3R1YnMgZm9yIEFWSVNhdmVWVywgQ3JlYXRlRWRpdGFibGVTdHJlYW0uCgktIEFkZGVkIHN0dWJzIGZvciBjbGlwYm9hcmQgaGFuZGxpbmcuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9vbGVhY2MvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhY2MvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYWNjL21haW4uYywgZGxscy9vbGVhY2Mvb2xlYWNjLnNwZWM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUNyZWF0ZWQgYW4gZW1wdHkgb2xlYWNjIERMTC4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLCBzZXJ2ZXIvY29uc29sZS5jLAoJICBzZXJ2ZXIvY29uc29sZS5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW4gY29uc29sZSBpbnB1dCByZWNvcmQgcXVldWUsIHJlcGxhY2Ugc2VtYXBob3JlIHdpdGggYSBtYW51YWwgcmVzZXQKCWV2ZW50LCBzbyB0aGF0IHdlIGdldCBjb3JyZWN0IGJlaGF2aW9yIGluIHN5bmNocm9uaXphdGlvbiBoYW5kbGluZy4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQwOS5jLAoJICBkbGxzL3dpbmVkb3MvcmVsYXkuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBJUlEgYWNrbm93bGVkZ2UgaGFuZGxlciBmb3IgaW50ZXJuYWwgSVJRcy4KCUNoYW5nZSBEUE1JIGFzeW5jaHJvbm91cyBldmVudCBoYW5kbGluZy4KCUFsd2F5cyB1c2UgYWx0ZXJuYXRlIHN0YWNrIGluIERQTUkgcmVsYXlzIGFuZCBjaGVjayBmb3IgcGVuZGluZyBldmVudHMKCWFmdGVyIG9yaWdpbmFsIHN0YWNrIGhhcyBiZWVuIHJlc3RvcmVkLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBLdXNhbmFnaSBLb3VpY2hpIDxzbGFzaEBtYS5uZXdlYi5uZS5qcD4KCUFkZGVkIExpc3RWaWV3X0dldEl0ZW1UZXh0IG1hY3JvLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLAoJICBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNvbWUgVFJBQ0VpbmcgZml4ZXMKCS0gZmFzdGVyIEJsdCB0byB0aGUgZnJhbWVidWZmZXIgdXNpbmcgdGV4dHVyZSBlbmdpbmUKCgkqIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjOiBPbGVnIFByb2tob3JvdiA8eG9sZWdwcm9AcmJjbWFpbC5ydT4KCUZpeGVkIFJ1c3NpYW4gY29tbWRsZyBsb2NhbGl6YXRpb24uIFNvbWUgcmVzb3VyY2UgZWxlbWVudHMgZGlkbid0IGhhdmUKCXByb3BlciBzaXplLCBhbmQgd2VyZSBwYXJ0aWFsbHkgdmlzaWJsZS4KCgkqIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fcHJpdmF0ZS5oLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaToKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBhZGRlZCBzdHVicyBmb3IgR2V0T3BlbkZpbGVOYW1lUHJldmlld3tBLFd9CgktIGFkZGVkIHN0dWJzIGZvciBHZXRTYXZlRmlsZU5hbWVQcmV2aWV3e0EsV30KCS0gcmVtb3ZlZCBpbnZhbGlkIFZJREMuTVJMRCBsaW5lIGZyb20gc3lzdGVtLmluaQoKCSogZGxscy9pcGhscGFwaS9pcGhscGFwaV9tYWluLmMsIGRsbHMvbmV0YXBpMzIvdGVzdHMvd2tzdGEuYywKCSAgZGxscy9uZXRhcGkzMi93a3N0YS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyBidWdzIGluIG5ldHdvcmsgaW50ZXJmYWNlIGhhbmRsaW5nIChjb2RlICYgdGVzdCkuCgoyMDAzLTA2LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9lZGl0bGluZS5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfcHJpdmF0ZS5oLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9jb25zb2xlLmMsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLAoJICBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsCgkgIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9jb25zb2xlLmgsIHNlcnZlci9mZC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBhZGFwdGVkIGtlcm5lbDMyIHNvIHRoYXQgaXQgbm8gbG9uZ2VyIChkaXJlY3RseSkgbWFuYWdlcyBjb25zb2xlCgkgIGhhbmRsZXMgYXMgd2luZXNlcnZlciBoYW5kbGVzCgktIGNvbnNvbGUgaW5wdXQgaGFuZGxlIG9iamVjdCBpcyBubyBsb25nZXIgd2FpdGFibGUgKGlucHV0IHJlY29yZAoJICBzeW5jaHJvbmlzYXRpb24gaXMgbm93IGltcGxlbWVudGVkIGFzIGEgc2ltcGxlIHNlbWFwaG9yZSksIGFuZCByZW1vdmVkCgkgIEZEX1RZUEVfQ09OU09MRSBmcm9tIGZkIHR5cGVzIGluIHdpbmVzZXJ2ZXIKCS0gY29uc29sZSBoYW5kbGVzIG5vdyBhbHdheXMgaGF2ZSB0aGVpciB0d28gbG93ZXIgYml0IHNldCBzbyBvbmUgY2FuCgkgIGRpc3Rpbmd1aXNoIGEgY29uc29sZSBoYW5kbGUgZnJvbSBhIGtlcm5lbCBvYmplY3QgaGFuZGxlCgktIGltcGxlbWVudGVkIHNvbWUgdW5kb2N1bWVudGVkIGtlcm5lbDMyIGNvbnNvbGUgcmVsYXRlZCBBUElzCgkgIChDbG9zZUNvbnNvbGVIYW5kbGUsIEdldENvbnNvbGVJbnB1dFdhaXRIYW5kbGUsIE9wZW5Db25zb2xlVywKCSAgVmVyaWZ5Q29uc29sZUlvSGFuZGxlLCBEdXBsaWNhdGVDb25zb2xlSGFuZGxlKQoJLSBhbGxvd2VkIGEgZmV3IGtlcm5lbDMyIEFQSXMgdG8gdGFrZSBjb25zb2xlIHBzZXVkby1oYW5kbGVzCgkgIChGbHVzaEZpbGVCdWZmZXIsIEdldEZpbGVUeXBlLCBXYWl0Rm9yKk9iamVjdCopCgktIHNpbXBsaWZpZWQgdGhlIGNvbnNvbGUgaW5oZXJpdGFuY2UgYXQgcHJvY2VzcyBjcmVhdGlvbgoJLSBpbiBjb25zb2xlIHRlc3RzLCBubyBsb25nZXIgY3JlYXRlIGEgY29uc29sZSBpZiBvbmUgYWxyZWFkeSBleGlzdHMKCgkqIHNlcnZlci9tYXBwaW5nLmM6CglUaGUgc2VydmVyIGFsc28gbmVlZHMgdG8gY29wZSB3aXRoIElNQUdFX1NDTl9DTlRfVU5JTklUSUFMSVpFRF9EQVRBCglhbmQgSU1BR0VfU0NOX0NOVF9JTklUSUFMSVpFRF9EQVRBIGZsYWdzIHNldCB0b2dldGhlci4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIHNlY3Rpb24gbWFwcGluZyBpbiBQRSBsb2FkaW5nIHdoZW4gYm90aAoJSU1BR0VfU0NOX0NOVF9VTklOSVRJQUxJWkVEX0RBVEEgYW5kIElNQUdFX1NDTl9DTlRfSU5JVElBTElaRURfREFUQQoJYXJlIHNldC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglTSEdldEZpbGVJbmZvIHNob3VsZCB0b2xlcmF0ZSBudWxsIHBvaW50ZXJzLgoKMjAwMy0wNi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOiBLdXNhbmFnaSBLb3VpY2hpIDxzbGFzaEBtYS5uZXdlYi5uZS5qcD4KCVN0b3JlIFdNX05BTUUgYW5kIFdNX0lDT05fTkFNRSBpbiBDT01QT1VORF9URVhUIGZvcm1hdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luaW5ldC9jb29raWUuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvbmV0Y29ubmVjdGlvbi5jLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluOgoJRGF2aWQgSGFtbWVydG9uIDxkYXZpZEB0cmFuc2dhbWluZy5jb20+CgktIGltcGxlbWVudGVkIHN1cHBvcnQgZm9yIGh0dHBzIHByb3RvY29sCgktIGZpeGVzIHRvIHRoZSBodHRwIHByb3RvY29sCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW46CglBZGRlZCBjaGVja3MgZm9yIElDVSBsaWJyYXJpZXMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgU2hhY2hhciBTaGVtZXNoKS4KCgkqIHRvb2xzL21ha2VkZXAuYzoKCUFkZGVkIHN1cHBvcnQgZm9yICNpbmNsdWRlIGluIElETCBmaWxlcyAoYmFzZWQgb24gYSBwYXRjaCBieSBSb2JlcnQKCVNoZWFybWFuKS4KCgkqIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGRlZCB0eXBlZGVmIGZvciBDT0xPUlJFRi4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRG8gbm90IHVzZSBhbnkgdHlwZWRlZnMgaW4gdGhlIEdMIHRodW5rcyB0byBwcmV2ZW50IGFsbCBwb3NzaWJsZQoJY29tcGlsYXRpb24gaXNzdWVzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kM2Q5LmgsIGluY2x1ZGUvZDNkOWNhcHMuaCwKCSAgaW5jbHVkZS9kM2Q5dHlwZXMuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQWRkZWQgZDNkOSBoZWFkZXJzLgoKCSogZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIGludDMxIFZJRiBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLgoJRml4IGFzeW5jaHJvbm91cyBldmVudCBsb2NraW5nLgoJTWFrZSBhc3luY2hyb25vdXMgZXZlbnQgaGFuZGxpbmcgc3VwcG9ydCBEUE1JLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUFkZGVkIGEgc2VjdGlvbiBhYm91dCB1c2luZyBrZ2RiIGFuZCBkZGQgdG8gZGVidWcgd2luZS4KCjIwMDMtMDYtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMzA2MTguCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDMtMDYtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLCBkbGxzL2NvbWNhdC9yZWdzdnIuYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywKCSAgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90ZXN0cy9mb3JtYXRfbXNnLmMsCgkgIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL29sZTMyL3JlZ3N2ci5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZWF1dDMyL3BhcnNlZHQuYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsCgkgIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3VzZXIvY29tbTE2LmMsIGRsbHMvdXNlci90ZXN0cy9jbGFzcy5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBmaWxlcy9zbWIuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYywKCSAgcHJvZ3JhbXMvd2luZW1lbnVidWlsZGVyL3dpbmVtZW51YnVpbGRlci5jLCBzY2hlZHVsZXIvY2xpZW50LmMsCgkgIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+Cgknc2l6ZW9mIHR5cGUnIGlzIGJlc3QgYXZvaWRlZCBhcyBpdCB3b24ndCBhbHdheXMgY29tcGlsZSAoZS5nLiAnaW50CgltYWluKCkge3JldHVybiBzaXplb2YgaW50O30nKS4gVXNlICdzaXplb2YodHlwZSknIGluc3RlYWQuCgoJKiBMSUNFTlNFOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUluY2x1ZGUgMjAwMyBpbiB0aGUgY29weXJpZ2h0IHllYXJzLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9MaWNlbnNlX0VuLmMsIHByb2dyYW1zL25vdGVwYWQvbGljZW5zZS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgkjaW5jbHVkZSA8d2luZG93cy5oPiBpbnN0ZWFkIG9mICJ3aW5kb3dzLmgiLgoKCSogZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJRml4ZWQgYSByZWZlcmVuY2UgY291bnRpbmcgYnVnIEkgaW50cm9kdWNlZC4KCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsIGRsbHMvY2FiaW5ldC9mZGkuYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYywgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmMsCgkgIHdpbmVkZWZhdWx0LnJlZywgZGxscy9udGRsbC90aW1lLmMsIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hsd2FwaS9jbGlzdC5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvdGhyZWFkLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYiwKCSAgZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkcsIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9kbGxzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sLCBkb2N1bWVudGF0aW9uL3NoZWxsMzIsCgkgIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXksIGxpYnMvd3BwL3BwbC5sLCBvYmplY3RzL2ZvbnQuYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL3ZpZXcvdmlldy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL21haW4uYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLnJjLAoJICBwcm9ncmFtcy93aW5lZGJnL3JlZ2lzdGVycy5jLCB0b29scy93aW5lZHVtcC9SRUFETUUsCgkgIHRvb2xzL3dyYy9wYXJzZXIueToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVHlwb3Mvc3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9lbnZpcm9uLmMsIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYywKCSAgZGxscy9udGRsbC90ZXN0cy9lbnYuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBrZXJuZWwzMidzIGVudmlyb25tZW50IHRlc3RzOiBhIGZldyBtb3JlIHRlc3RzIG5vdyBzdWNjZWVkCgktIGFkZGVkIHNvbWUgY29uc29sZSByZWxhdGVkIHRlc3RzIHRvIHByb2Nlc3MgY3JlYXRpb24KCS0gYWRkZWQgYSBmZXcgbW9yZSB0ZXN0IGNhc2VzIHRvIHRoZSBudGRsbCBlbnZpcm9ubWVudCB0ZXN0cwoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9udGRsbC9lbnYuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgbWVtb3J5L2Vudmlyb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBmaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIG50ZGxsIGVudmlyb25tZW50IGZ1bmN0aW9ucyAob25lIGluIHRyYWNlLAoJICB0aGUgb3RoZXIgb25lIGluIGVudmlyb25tZW50IHZhcmlhYmxlIGV4cGFuc2lvbikKCS0gdGhlIHByb2Nlc3MgcGFyYW1ldGVycywgd2hlbiBwYXNzZWQgdGhydSB3aW5lc2VydmVyLCBhcmUgbm93IGZ1bGx5CgkgIGhhbmRsZWQgaW4gbnRkbGwsIHRoZXkgYXJlIHN0b3JlZCBpbiB0aGUgUlRMX1VTRVJfUFJPQ0VTU19QQVJBTUVURVJTCgkgIHN0cnVjdHVyZS4KCS0gbGF0ZXIgb24gaW4ga2VybmVsMzIgbG9hZGluZyBzZXF1ZW5jZSwgdGhvc2UgcGFyYW1ldGVycyBhcmUgY29waWVkCgkgIGludG8gU1RBUlRVUElORk8gc2hhZG93IHN0cnVjdHVyZXMKCS0gbGF0ZXIgbW9kaWZpY2F0aW9uIHRvIHRob3NlIHBhcmFtdGVycyBhcmUgbm93IHJlZmxlY3RlZCB0byB0aGUKCSAgUlRMX1VTRVJfUFJPQ0VTU19QQVJBTUVURVJTIHN0cnVjdHVyZSAoYW5kIFNUQVJUVVBJTkZPIGlzIGtlcHQKCSAgdW50b3VjaGVkKSAoZm9yIGV4YW1wbGUsIFN0ZEhhbmRsZSBzZXR0aW5nKSAoV2luIDJrIGJlaGF2ZXMgbGlrZSB0aGlzKQoJLSBFTlZEQiBoYXMgYmVlbiByZW1vdmVkCgktIGNvbW1hbmQgbGluZSBpbmhlcml0YW5jZSAoZnJvbSB1bml4IGNvbW1hbmQgbGluZSkgaXMgbm93IHB1cmVseSBpbiBudGRsbAoJLSBhbGwga2VybmVsMzIgZW52aXJvbm1lbnQgZnVuY3Rpb25zIG5vdyByZWx5IG9uIHRoZWlyIG50ZGxsIGNvdW50ZXJwYXJ0cwoJLSBnb29kaWVzOiBpbnB1dC9vdXRwdXQgaGFuZGxlIGluaGVyaXRhbmNlIHdoaWxlIGFza2luZyBmb3IgYSBkZXRhY2hlZAoJICBjb25zb2xlIGlzIGJldHRlciBoYW5kbGVkOyBhIGZldyBtb3JlIGtlcm5lbDMyIGVudmlyb25tZW50IHRlc3RzIG5vdwoJICBwYXNzIDsgc2lsZW5jZWQgYSB2YWxncmluZCB3YXJuaW5nIGluIHByb2Nlc3MgY3JlYXRpb24KCgkqIHByb2dyYW1zL3dpbmVmaWxlL0VuLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJQWRkZWQgRnJlbmNoIHRyYW5zbGF0aW9uLCBmaW5pc2hlZCBFbmdsaXNoIHRyYW5zbGF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUucHQ6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJVHJhbmxhdGlvbiBvZiBFbmdsaXNoIFJFQURNRSB0byBQb3J0dWd1ZXNlLgoKCSogZGxscy9kbXVzaWMvZG11c2ljX2xvYWRlci5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3NlZ21lbnQuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBhZGQgSURpcmVjdE11c2ljQ29udGFpbmVyIHN1cHBvcnQgaW4KCSAgSURpcmVjdE11c2ljTG9hZGVyOEltcGw6OkxvYWRPYmplY3RGcm9tRmlsZQoJLSBkb24ndCB1c2UgSURpcmVjdE11c2ljU2VnbWVudCpJbXBsIHdoZW4gSURpcmVjdE11c2ljU2VnbWVudCo4SW1wbAoJICBjYW4gYmUgdXNlZCBpbnN0ZWFkIChhdm9pZCBjb2RlIGR1cGxpY2F0aW9uKQoKCSogZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZHJhd3ByaW0uYywgZGxscy9kM2Q4L3N0YXRlYmxvY2suYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3RleHR1cmUuYywgZGxscy9kM2Q4L3V0aWxzLmMsCgkgIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gZHNvdW5kIGFuZCBkM2Qgd29ya3MgYmV0dGVyIHdoZW4geDExZHJ2IGxvY2tzL3VubG9ja3MgYXJlIGNvcnJlY3QKCS0gbW9yZSB0cmFjZXMKCjIwMDMtMDYtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL21zdmNydGQvbXN2Y3J0ZC5zcGVjOgoJQWRkZWQgYW4gYXNzZW1ibHkgd3JhcHBlciB0byByZXRyaWV2ZSB0aGUgdGhpcyBwb2ludGVyIGZyb20gJWVjeCBmb3IKCV90aGlzY2FsbCBmdW5jdGlvbnMuCglGaXhlZCBzb21lIGJ1Z3MsIGFuZCBhZGRlZCBhIGZldyBtaXNzaW5nIGZ1bmN0aW9ucy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmpfcHJpdmF0ZS5oLCBkbGxzL29sZTMyL2dpdC5jLAoJICBkbGxzL29sZTMyL29sZXByb3h5LmM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglJbXBsZW1lbnQgYSBjbGFzcyBmYWN0b3J5IGZvciB0aGUgR2xvYmFsIEludGVyZmFjZSBUYWJsZS4KCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsIGRsbHMvY2FiaW5ldC9jYWJpbmV0LmgsIGRsbHMvY2FiaW5ldC9mZGkuYzoKCUdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBtb3ZlIG1hY3JvcyBhbmQgY29uc3RhbnRzIGludG8gY2FiaW5ldC5oIHdoZXJlIHRoZXkgY2FuIGJlIHNoYXJlZAoJICBiZXR3ZWVuIGNhYmV4dHJhY3QuYyBhbmQgZmRpLmMKCS0gcmVtaW5kZXJzIHRvIGVsaW1pbmF0ZSBnbG9iYWwgdmFyaWFibGVzIChmb3IgbXVsdGl0aHJlYWQKCSAgY29tcGF0aWJpbGl0eSkKCS0gcmVtb3ZlIHN0cnVjdCBmZGlfY2FiOiBkdWUgdG8gdGhlIG5hdHVyZSBvZiB0aGUgRkRJIEFQSSwgd2UgY2Fubm90CgkgIHByZWxvYWQgYWxsIHRoZSBjYWJpbmV0czsgdGhpcyBhcHBlYXJzIHRvIG9idmlhdGUgdGhlIG5lZWQgZm9yIHN0cnVjdAoJICBmZGlfY2FiCgktICJvcHByZXNzIiAodGhhdCBpcywgZG8gbm90IHByb2Nlc3MpIHBhcnRpYWwgZmlsZXMgd2hpY2ggd2VyZQoJICBjb250aW51YXRpb25zIGZyb20gYW5vdGhlciBjYWJpbmV0CgktIG1vcmUgdGhhbiBvbmUgcGFydGlhbCBmaWxlIGNhbiBleGlzdCBpbiBhIHNpbmdsZSBjYWJpbmV0IChob3chPykgLS0KCSAgc28gbW92ZSB0aGUgcGFydGlhbCBmaWxlIG5vdGlmaWNhdGlvbiAoYW5kICJvcHByZXNzaW9uIiB0aGF0IGdvZXMgd2l0aAoJICBpdCkgaW50byB0aGUgbG9vcCB0aGF0IGl0ZXJhdGVzIHRocm91Z2ggZmlsZXMKCjIwMDMtMDYtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RtdXNpYy9kbXVzaWNfbG9hZGVyLmMsIGRsbHMvZG11c2ljL2RtdXNpY19taXNjLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWxsb2NhdGUgbmVjZXNzYXJ5IGRzb3VuZCBidWZmZXJzIGZvciBzdGFuZGFyZCBhdWRpbyBwYXRocyBhbmQgZW5hYmxlCglyZXRyaWV2YWwgb2YgdGhlaXIgaW50ZXJmYWNlcyB2aWEgR2V0T2JqZWN0SW5QYXRoLgoJRml4IGFuZCBjbGVhbiBkc291bmQgYW5kIGRtdXNpY3Mgb2JqZWN0cyBhbGxvY2F0aW9uIHdoZW4gaW5pdGlhbGl6aW5nCgl0aGUgcGVyZm9ybWFuY2Ugb2JqZWN0LgoJU29tZSBzdHVicyBpbXByb3ZlbWVudHMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHJld3JvdGUgdGhlIGJ1ZmZlciB0byBidWZmZXIgZmFzdCBwYXRoIHVzaW5nIFRleHR1cmUgZW5naW5lIChtdWNoCgkgIGZhc3RlciBvbiBteSBOVklESUEgaGFyZHdhcmUpCgktIHNtYWxsIG9wdGltaXphdGlvbnMKCgkqIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsCgkgIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgaW5jbHVkZS9kaW5wdXQuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBESW5wdXQgV2lkZUNoYXIgY2xhc3NlcyBzdXBwb3J0LiBUaGlzIHRpbWUgYWxsIGRpbnB1dCB2ZXJzaW9ucyBoYXZlCgkgIHdpZGVjaGFyIGNsYXNzZXMuCgktIGZpeCBhIHN0dXBpZCBidWcgaW4gY2FsbGJhY2sgaGFuZGxpbmcgY2F1Z2h0IGJ5IExpb25lbC4KCS0gYWRkIHNvbWUgZm9yZ290dGVuIElJRCBvbiBjbGFzcyBmYWN0b3J5IChiZXR0ZXIgaWYgd2Ugd2FudCB0byBhY3RpdmUKCSAgdGhlIGNvZGUpCgktIG1hbnkgY2xlYW51cHMgb24gQ09NIE1hY3JvcyAoZG9uJ3QgbmVlZCBBIGFuZCBXIHZhcmlhbnRzIGFzIHRoZXkgYXJlCgkgIHRoZSBzYW1lKQoKCSogZGxscy9kM2Q4L3N1cmZhY2UuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXggQWRkRGlydHlSZWN0IHVuY29ycmVjdCBiZWhhdmlvciAoY3Jhc2ggaW4gc29tZSBjYXNlcykuIEJhc2VkIG9uIGEKCXBhdGNoIGZyb20gUm9kZXJpY2sgQ29sZW5icmFuZGVyLgoKCSogd2luZWRlZmF1bHQucmVnOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCURpc3BsYXkgaWNvbnMgb2YgZXhlY3V0YWJsZXMgaW4gdGhlIE9wZW5GaWxlIGRpYWxvZyBib3hlcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VjLmMsIGluY2x1ZGUvd2lubnQuaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJPG1hQHRlY2hub3ByaW50LmNoPgoJQWRkZWQgQWRkQWNjZXNzQWxsb3dkQWNlRXgsIEFkZEFjY2Vzc0RlbmllZEFjZUV4LCBHZXRBY2xJbmZvcm1hdGlvbi4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZ2xfYXBpLmgsIGRsbHMvZGRyYXcvZ2xfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBzb21lIHJlZ3Jlc3Npb25zCgktIEdldERDIGRvZXMgbm90IGxvY2sgaW4gUmVhZE9ubHkgbW9kZSBhcyBpdCBsZWFkcyB0byBwcm9ibGVtcyB3aXRoCgkgIHNvbWUgRDNEIG9wdGltaXphdGlvbnMKCS0gYWRkZWQgYSBmYXN0IEJhY2sgPT4gRnJvbnQgLyBGcm9udCA9PiBCYWNrIEJsdCBmYXN0IHBhdGgKCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLAoJICBkbGxzL3NldHVwYXBpL2Rldmluc3QxNi5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJU3BsaXQgV2luMTYvMzIgc2V0dXBhcGkgZGV2aWNlIGluc3RhbGxlciBzdXBwb3J0LgoKCSogZGxscy93aW5pbmV0L3VybGNhY2hlLmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglTdHViIG91dCBTZXRVcmxDYWNoZUVudHJ5SW5mb0EvVy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBVbmJyZWFrIHZlcnRpY2FsIHRyYWNrYmFycwoJLSBNYWtlIGl0IG1vcmUgY2xvc2VseSByZXNlbWJsZSB0aGUgbmF0aXZlIGNvbnRyb2wKCS0gQWRkIGZvY3VzIHJlY3RhbmdsZQoJLSBNaXNjIGZpeGVzIGFuZCBjbGVhbnVwcwoKCSogZGxscy9zaGVsbDMyL2NvbnRyb2wuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCU1pa2UgSGVhcm4gPG1pa2VAdGhlb3JldGljLmNvbT4KCUFkZCBzdHVicyBmb3IgQ29udHJvbF9GaWxsQ2FjaGVfUnVuRExMIGFuc2kvdW5pY29kZSB2YXJpYW50cy4KCgkqIGRsbHMvaXBobHBhcGkvaXBzdGF0cy5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVVuYnJlYWsgZ2V0VGNwVGFibGUoKSBvbiBMaW51eC1iYXNlZCBzeXN0ZW1zIGFuZCBtYWtlIGl0IHdvcmsgb24gQlNECglhbmQgU29sYXJpcyBhcyB3ZWxsLgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglBZGQgdGhlIElEIG9mIHRoZSBibG9ja2luZyB0aHJlYWQgdG8gdGhlIGVycm9yIG1lc3NhZ2UuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfU2kucmMsIGRsbHMvYXZpZmlsMzIvcnNyYy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX1NpLnJjLAoJICBkbGxzL21zdmlkZW8vbXNybGUzMi9yc3JjLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfU2kucmMsIGRsbHMvd2luZXBzL3JzcmMucmMsCgkgIGRsbHMvd2luZXBzL3dwc19TaS5yYywgZGxscy93aW5tbS93aW5tbV9TaS5yYywgcHJvZ3JhbXMvc3RhcnQvU2kucmMsCgkgIHByb2dyYW1zL3N0YXJ0L3JzcmMucmMsIHByb2dyYW1zL3dpbmhlbHAvU2kucmM6CglSb2sgTWFuZGVsamMgPHJvay5tYW5kZWxqY0BnaW1iLm9yZz4KCVVwZGF0ZWQgYSBidW5jaCBvZiB0cmFuc2xhdGlvbnMgZm9yIFNsb3ZlbmlhbiBsYW5ndWFnZS4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9wYXRoLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQ6CgktIFJ0bERvZXNGaWxlRXhpc3RzX1UgYXMgYSBzdHViCgktIFJ0bERvc1NlYXJjaFBhdGhfVQoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIEdMIHN0YXRlIGNoYW5nZSBvcHRpbWl6YXRpb25zCgktIHNvbWUgbW9yZSBwcmVwYXJhdGlvbnMgZm9yIEdMLWFjY2VsZXJhdGVkIEJsdHMKCS0gYWRkZWQgZGVidWcgY29kZSB0byBjb21wdXRlIEZQUyAobmljZSB3aGVuIGFkZGluZyBvcHRpbWl6YXRpb25zKQoKCSogZGxscy9uZXRhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5jLAoJICBkbGxzL25ldGFwaTMyL3drc3RhLmMsIGluY2x1ZGUvbmIzMC5oOgoJSnVhbiBMYW5nIDxqdWFuX2xhbmdAeWFob28uY29tPgoJVXNlIGlwaGxwYXBpIHRvIGVudW1lcmF0ZSBMQU4gYWRhcHRlcnMuCglBZGQgbmFtZXMgdG8gTmV0QklPUyB0cmFuc3BvcnRzLCBhbmQgZWxpbWluYXRlcyBsb29wYmFjayBhZGFwdGVycyBmcm9tCgllbnVtZXJhdGVkIExBTiBhZGFwdGVycy4KCgkqIGluY2x1ZGUvc3RybWlmLmg6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglNYWtlIHRoZSBoZWFkZXIgaW4tbGluZSB3aXRoIGN1cnJlbnQgSUNPTSBuYW1pbmcgY29udmVudGlvbnMuCgoJKiBkbGxzL3gxMWRydi94dmlkbW9kZS5jOiA8bWlycUB6aWVtbmlhay51c3Ryb25pZS5wdy5lZHUucGw+CglDb3JyZWN0IG1vZGUgbnIgcGFzc2VkIHRvIFgxMURSVl9YRjg2Vk1fU2V0Q3VycmVudE1vZGUuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggdGhlIEZpbHRlckdyYXBoIENMU0lEIGRlY2xhcmF0aW9uLgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5oLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzE2LmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglTcGxpdCBXaW4xNi8zMiBmaWxlIGRpYWxvZ3MuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGluY2x1ZGUvdGhyZWFkLmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW1vdmUgU0lHQUxSTSBoYW5kbGVyLgoJUmVzZXJ2ZSBURUIgZmllbGQgZm9yIERQTUkgdmlydHVhbCBpbnRlcnJ1cHQgZmxhZy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNaWdyYXRlIGNyZWF0ZS9vcGVuIGZpbGUgZnVuY3Rpb25zIHRvIHdpbmVkb3MuCglTb21lIGZpeGVzIGJhc2VkIG9uIHBhdGNoIGJ5IEZlcmVuYyBXYWduZXIuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTWFrZSBET1NWTV9XYWl0IHdvcmsgaW4gcHJvdGVjdGVkIG1vZGUuCglSZXBsYWNlIFNIT1VMRF9QRU5EIG1hY3JvIHdpdGggYSBmdW5jdGlvbi4KCgkqIGluY2x1ZGUvY29udHJvbC5oOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJTWFrZSB0aGUgaGVhZGVyIGluLWxpbmUgd2l0aCBjdXJyZW50IElDT00gbmFtaW5nIGNvbnZlbnRpb25zLgoKMjAwMy0wNi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOgoJRml4ZWQgV0NDVVJTRVNfSW5pdEJhY2tlbmQgcHJvdG90eXBlIGluIHRoZSBubyBjdXJzZXMgY2FzZS4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCU1ha2UgaXQgcG9zc2libGUgdG8gcmV0cmlldmUgYW4gaW5oZXJpdGFibGUgaGFuZGxlIGluIG9wZW5fbmFtZWRfcGlwZQoJKHNwb3R0ZWQgYnkgVXdlIEJvbm5lcykuCgoyMDAzLTA2LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgbGlicy9NYWtlbGliLnJ1bGVzLmluLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHNlcnZlci9NYWtlZmlsZS5pbjoKCVByb3BlciBzdXBwb3J0IGZvciBDUFBGTEFHUyBhbmQgTERGTEFHUyAoc3VnZ2VzdGVkIGJ5IFRvZGQgVmllcmxpbmcpLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXhlcyB0aGUgQ09MT1JGSUxMIGNhc2UgZm9yIGZyb250LWJ1ZmZlcgoJLSBzb21lIHByZXBhcmF0aW9ucyBmb3IgR0wtYWNjZWxlcmF0ZWQgQmx0cwoJLSBzb21lIHNtYWxsIG9wdGltaXphdGlvbnMgaW4gdGhlIENsZWFyIGNvZGUKCgkqIGRsbHMvd2luZWRvcy9pbnQzMS5jOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCVRyYWNlIHdoaWNoIHJlYWwgbW9kZSBpbnRlcnJ1cHQgaXMgZW11bGF0ZWQuCgoJKiBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZTMyLmMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX3ByaXZhdGUuaDoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBGaXhlZCBlbmQgZmxhZ3Mgd2hpbGUgZW5jb2RpbmcgLS0gb25seSBFT0kgaW5zdGVhZCBvZiBFT0wgYW5kIEVPSS4KCS0gRml4ZWQgNC1iaXQgUkxFIGVuY29kaW5nIG9mIGtleWZyYW1lcy4KCS0gRml4ZWQgc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoZXMuCgktIEFkZGVkIHNvbWUgbWlzc2luZyBjb25zdCdzLgoKCSogZGxscy9jYWJpbmV0L2ZkaS5jOiBHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gbW9zdCBvZiBGRElDb3B5IGlzIG5vdyBpbXBsZW1lbnRlZCwgYWx0aG91Z2ggdGhlIGFjdHVhbCBkZWNvbXByZXNzaW9uIGlzIG5vdC4KCS0gImNhbiIgLT4gImRvIgoJLSBhIG5vdmVsbGEgYWJvdXQgYSBidWcKCS0gZml4IHNvbWUgbWVtb3J5IGxlYWtzCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWM6CglSZW1vdmVkIG9yZGluYWxzIHRoYXQgZGlmZmVyIGJldHdlZW4gV2luZG93cyB2ZXJzaW9ucy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDgvdXRpbHMuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglGaXggdGhlIHRleHR1cmUgb3BlcmF0aW9ucyB0byByZXNvbHZlIGdsaXRjaGVzIHNob3duIGluIFVUMjAwMyB3aGVuCglnZXQgcXVhZCBkYW1hZ2UuCgljaGVja0dMY2FsbCBtdXN0IG5vdCBzdXBwbHkgYSBcbiBhcyB0aGF0IGlzIHN1cHBsaWVkIGJ5IGl0cwoJZXhwYW5zaW9uLgoJUGVyZm9ybWFuY2UgZml4ZXMgdG8gc2F2ZSBhcHBseWluZyB0aGUgc2FtZSBzdGF0ZXMgNiB0aW1lcyBhbmQgdG8KCXJlZHVjZSBmdW5jdGlvbiBjYWxscyB3aGVuIGFjY2Vzc2luZyBmcm9udC9iYWNrIGJ1ZmZlcnMuCglNYWtlIHRyYWNlcyBtb3JlIHJlYWRhYmxlIGJ5IG1vcmUgY29uc3RhbnRzIC0+IGVuZ2xpc2ggZGVzY3JpcHRpb25zLgoKCSogZGxscy9kbXVzaWMvZG11c2ljX2xvYWRlci5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWlzYy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBhbHdheXMgdXNlIElEaXJlY3RNdXNpY1BlcmZvcm1hbmNlOEltcGwgaW5zdGVhZCBvZgoJICBJRGlyZWN0TXVzaWNQZXJmb3JtYW5jZUltcGwgKGFzIHRoZSBmaXJzdCBpbmhlcml0cyBmcm9tIHRoZSBzZWNvbmQpCgktIGltcGxlbWVudCBtYW55IExvYWRlciwgQXVkaW9QYXRoIGFuZCBQZXJmb3JtYW5jZTggc3R1YnMgLSBmaXggdGhlCgkgIGNsYXNzIGZhY3RvcnkKCS0gbW9yZSBkZWJ1ZyB0cmFjZXMKCS0gZm9yIG5vdyBJRGlyZWN0TXVzaWNMb2FkZXI4OjpMb2FkT2JqZWN0RnJvbUZpbGUgYWx3YXlzIHJldHVybnMgbm90CgkgIHN1cHBvcnRlZCBmb3JtYXQKCS0gZml4IHRoZSBJRGlyZWN0TXVzaWNQZXJmb3JtYW5jZTg6OkluaXQgKG1hbnkgY3Jhc2hlcykKCS0gaW1wbGVtZW50YXRpb24gb2YgSURpcmVjdE11c2ljUGVyZm9ybWFuY2U4SW5pdEF1ZGlvCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywKCSAgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsCgkgIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgaW5jbHVkZS9kaW5wdXQuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCU1ha2UgZGlucHV0OCBiZWhhdmlvdXIgbW9yZSBjb3JyZWN0IGZvciBtb3VzZSBhbmQga2V5Ym9hcmQuCglGaXggc21hbGwgYnVnIHdoZW4ga2V5Ym9hcmQgYnVmZmVyIG92ZXJmbG93cy4KCVVzZSBESV9PSyBpbnN0ZWFkIG9mIDAgZm9yIHJldHVybmVkIHZhbHVlcy4KCgkqIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4IG1hdHJpeCBtdWx0aXBsaWNhdGlvbi4KCgkqIGRsbHMvY2FiaW5ldC9jYWJpbmV0Lmg6IEdyZWdvcnkgTS4gVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJRml4IHNvbWUgdWdsaWVzLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglBZGRlZCBFdXJvIGFuZCBhbnRpcXVvdGUgdG8gdGhlIEZyZW5jaCBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJV2hlbiBlbXVsYXRpbmcgZnVsbHNjcmVlbiBpdCBoZWxwcyB0byBub3QgYWxsb2NhdGUgc3BhY2UgZm9yIG1lbnUgYmFycwoJYW5kIGJvcmRlcnMuIE1ha2UgdGhpcyB3aW5kb3cgYSBwb3B1cCB3aW5kb3cuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsIGluY2x1ZGUvcmFzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBzdHVicyBmb3IgUmFzRGVsZXRlU3ViRW50cnkqIChuZXcgaW4gV2luTWUvV2luWFApLgoJQWRkIHByb3RvdHlwZXMgZm9yIFJhc0RlbGV0ZUVudHJ5KiBhbmQgUmFzRGVsZXRlU3ViRW50cnkqIGluIHJhcy5oLgoKCSogZGxscy9kM2Q4L01ha2VmaWxlLmluLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RyYXdwcmltLmMsCgkgIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3V0aWxzLmMsCgkgIGRsbHMvZDNkOC92c2hhZGVyZGVjbGFyYXRpb24uYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglNYWtlIHRoZSBmaXhlZCBmdW5jdGlvbiBwaXBlbGluZSBzdXBwb3J0IG11bHRpcGxlIHN0cmVhbXMgZm9yIGNyZWF0ZWQKCXZlcnRleCBzaGFkZXJzIHdpdGggbm8gZnVuY3Rpb24gc3VwcGxpZWQuIEFsc28gc3BsaXQgZG93biBkcmF3CglwcmltaXRpdmUgYWxvbmcgdGhlIGxpbmVzIG9mIHRoZSBkM2Rjb3JlIHJlcXVpcmVtZW50cyBhbmQgcHV0IGluIHNvbWUKCWRpYWdub3N0aWMgYWlkcy4KCgkqIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5oLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcxNi5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJU3BsaXQgV2luMTYvMzIgY29sb3IgZGlhbG9nIHN1cHBvcnQuCglTdXBwb3J0aW5nIGNvbXBpbGluZyBvdXQgMTYgYml0IGZpbmQgZGlhbG9nIHN1cHBvcnQuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDogWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCUluY2x1ZGUgdGltZS5oIGluc3RlYWQgb2Ygc3lzL3RpbWUuaC4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9maWx0ZXJncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY29udHJvbC5oLCBpbmNsdWRlL2RzaG93LmgsCgkgIGluY2x1ZGUvc3RybWlmLmgsIGluY2x1ZGUvdXVpZHMuaCwgd2luZWRlZmF1bHQucmVnOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN0dWJiZWQgc29tZSBpbnRlcmZhY2VzIGZvciB0aGUgRmlsdGVyR3JhcGggQ0xTSUQuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgbXNkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBnZXQgY3VycmVudCBkaXJlY3RvcnkgYW5kIHNldCBjdXJyZW50IGRpcmVjdG9yeSBpbnQyMQoJc3ViZnVuY3Rpb25zIGludG8gd2luZWRvcy4gRml4IHF1aXRlIGEgZmV3IGJ1Z3MgaW4gdGhlIGltcGxlbWVudGF0aW9uCglvZiB0aGVzZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2NhYmluZXQvY2FiaW5ldC5oLCBkbGxzL2NhYmluZXQvZmRpLmM6CglHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gaW1wbGVtZW50IEZESXtDcmVhdGUsRGVzdHJveSxJc0NhYmluZXR9CgktIGZpeCBhIHR5cG8KCS0gZHVwbGljYXRlIGEgYnVnCgktIHNvbWUgYmxhdGhlcmluZyBhYm91dCBjb2RlIGR1cGxpY2F0aW9uCgktIGNoYW5nZSBmZGkuYyBpbmRlbnRhdGlvbiB0byBiZSBjb25zaXN0ZW50IHdpdGggY2FiZXh0cmFjdC5jCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBpbmRleCBoYW5kbGluZyBmb3IgbXVsdGkgZGltZW5zaW9uYWwgYXJyYXlzLgoKCSogQlVHUzogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmVAc2t5YmVzdC5jb20+CgktIGNvc21ldGljIGZpeGVzCgktIHJlbW92ZSBvYnNvbGV0ZSBsaW5rCgoJKiB3aW5lZGVmYXVsdC5yZWc6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJU2hvdyB0aGF0IFRDUC9JUCBpcyBpbnN0YWxsZWQgdG8gd2luZG93cyBhcHBzLCBsaWtlIHdpbmlwY2ZnLgoKCSogZGxscy9udGRsbC9jZHJvbS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9udGRkc2NzaS5oLAoJICB3aW4zMi9kZXZpY2UuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3Igb3ZlcmxhcHBlZCBpb2N0bCByZXF1ZXN0cyAoYW5kIGEgZmV3IG90aGVyCgljb3NtZXRpY3MpLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl9wcml2YXRlLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUlmIChuKWN1cnNlcyB3YXNuJ3QgYXZhaWxhYmxlIGF0IGNvbXBpbGUgdGltZToKCS0gcHJpbnQgc2Vuc2libGUgaW5mb3JtYXRpb24KCS0gZmFsbCBiYWNrIHRvIHVzZXIgYmFja2VuZAoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmM6IFBhdWwgQmFpbiA8cHJiYWluQGVzc2V4LmFjLnVrPgoJUHV0IElJRF9JRGlyZWN0SW5wdXREZXZpY2UyQSBiYWNrIGluCglJRGlyZWN0SW5wdXREZXZpY2UyQUltcGxfUXVlcnlJbnRlcmZhY2UuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUJlIG1vcmUgc3RyaW5nZW50IGluIHRoZSAnTG9jaycgaW52YWxpZCBSRUNUIGNoZWNrLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXBncmFkZSBPcGVuR0wgdGh1bmtzIHdpdGggbGF0ZXN0IHZlcnNpb24gb2YgT3BlbkdMIGV4dGVuc2lvbgoJcmVnaXN0cnkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCS0gTWFrZSBidXR0b24gdGV4dCBjZW50cmUgY29ycmVjdGx5IHdoZW4gZHJvcGRvd24gYXJyb3cgaXMgcHJlc2VudAoJLSBDZW50cmUgZHJvcGRvd24gYXJyb3cKCgkqIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywKCSAgZGxscy93aW50cnVzdC93aW50cnVzdC5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgc3R1YnMgZm9yIHNvbWUgbmV3IFdpblhQIEFQSXMuCgoJKiBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgaW5jbHVkZS91cmxtb24uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIGEgc3R1YiBmb3IgQ29tcGFyZVNlY3VyaXR5SWRzIChuZXcgaW4gV2luWFApLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IHRoZSBCTFQgQ09MT1JfRklMTCBjYXNlLgoKCSogZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL3RpbWVyLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglTcGxpdCB0aW1lciBjb2RlIGludG8gc2VwYXJhdGUgc291cmNlIGZpbGUuCglTdG9wIHVzaW5nIFNJR0FMUk0gZm9yIHRpbWVycy4KCgkqIGRsbHMvY2FiaW5ldC9jYWJleHRyYWN0LmMsIGRsbHMvY2FiaW5ldC9jYWJpbmV0Lmg6CglHcmVnb3J5IE0uIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gcGFyYW5vaWE6IGVsaW1pbmF0ZSBzb21lIGdsb2JhbCB2YXJpYWJsZXMKCS0gYmV0dGVyIHJlbWluZGVyIG9uIGhvdyB0byBmaXggbWVtb3J5IGxlYWtzCgoyMDAzLTA2LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kbXVzaWMvZG11c2ljLmMsIGRsbHMvZG11c2ljL2RtdXNpY19pbnN0cnVtZW50LmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19sb2FkZXIuYywgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21pc2MuYywgZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wbHVnaW5zLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wb3J0LmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsIGRsbHMvZG11c2ljL2RtdXNpY19zZWdtZW50LmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19zdHlsZS5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfc3ludGguYzoKCVJvayBNYW5kZWxqYyA8cm9rLm1hbmRlbGpjQGdpbWIub3JnPgoJLSBhZGRlZCBkZWJ1ZwoJLSBpbXBsZW1lbnRlZCBmYWtlIG1pZGkgJiBwZXJmb3JtYW5jZSBjaGFubmVscwoJLSBpbXBsZW1lbnRlZCBzb21lIElEaXJlY3RNdXNpYyo4KiBmdW5jdGlvbnMgd2hlcmUgSURpcmVjdE11c2ljKgoJICBlcXVpdmFsZW50IGV4aXN0cwoJLSBJRGlyZWN0TXVzaWMqOCBpbnRlcmZhY2VzIGNhbiBub3cgYmUgb2J0YWluZWQgZnJvbSBJRGlyZWN0TXVzaWMKCSAgaW50ZXJmYWNlcyAoUXVlcnlJbnRlcmZhY2UuLi4pCgktIGNoYW5uZWwtcmVsYXRlZCBwZXJmb3JtYW5jZSBmdW5jdGlvbnMgYXJlIGtpbmRhIGltcGxlbWVudGVkIG5vdwoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogQXJqZW4gTmllbmh1aXMgPGFyamVuQG5pZW5odWlzYmVoZWVyLm5sPgoJTmV3IGltcGxlbWVudGF0aW9uIG9mIEdkaUdyYWRpZW50RmlsbCB1c2luZyBpbnRlZ2VyIG1hdGguCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeCBTZXREYXRhRm9ybWF0IGFuZCBpbXBsZW1lbnQgR2V0RGV2aWNlSW5mbyBmb3IgbW91c2UgZGV2aWNlLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJQWRkIGEgZHJpdmUgbWFwcGluZyBmb3Igcm9vdCB0byB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGUuCgoJKiB0b29scy93aW5laW5zdGFsbDogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJQ2hlY2sgZm9yIC9saWIvdGxzIGRpcmVjdG9yeSBmb3IgUmVkIEhhdCA5LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJS2VzdGVyIE1hZGRvY2sgPENocmlzdG9waGVyLk1hZGRvY2suMUB1bmkubWFzc2V5LmFjLm56PgoJQ2hlY2sgZm9yIGEgbnVsbCBwb2ludGVyIGluIFdTX3NldHNvY2tvcHQuCgoJKiBkbGxzL3VzZXIvZGRlL21pc2MuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJUHJvdGVjdCBXRE1MX0dldENvbnYgYWdhaW5zdCBudWxsIGhhbmRsZXMuCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9mb250ZGxnLmgsIGRsbHMvY29tbWRsZy9mb250ZGxnMTYuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVNlcGFyYXRlIFdpbjE2IGFuZCBXaW4zMiBmb250IGRpYWxvZyBzdXBwb3J0LgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUNvcnJlY3RseSBjb252ZXJ0IGludG8gRVhDRVBUSU9OX1JFQ09SRCBTSUdUUkFQcyByZWNlaXZlZCBmcm9tCglEZWJ1Z0JyZWFrUHJvY2Vzcy4KCjIwMDMtMDYtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJSW1wbGVtZW50ZWQgd2luaW5ldC5JbnRlcm5ldEdldENvbm5lY3RlZFN0YXRlRXguCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBbGlnbiB0aGUgdGV4dCB2ZXJ0aWNhbGx5IGluIHNpbmdsZSBsaW5lIGxhYmVscyAoc3BvdHRlZCBieSBCaUdnVW4pLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZDNkY29yZV9nbC5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC91dGlscy5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXhlZCBjb21waWxhdGlvbiBwcm9ibGVtcy4KCgkqIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBfR2V0dG5hbWVzLgoKCSogZGxscy9rZXJuZWwvc3luYy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgcmV0dXJuIEZBTFNFIHdoZW4gZG9pbmcgYW4gb3ZlcmxhcHBlZCBDb25uZWN0TmFtZWRQaXBlLgoKCSogb2JqZWN0cy90ZXh0LmM6IEluZ21hciBUaGllbWFubiA8aW5nbWFyQGdlZmFzLmNvbT4KCUltcGxlbWVudGVkIFBvbHlUZXh0T3V0QS9Qb2x5VGV4dE91dFcuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBTdXBwb3J0IGEgZmV3IG1vcmUgZmxhZ3MKCS0gUmV3cml0ZSB0aGUgZW51bWVyYXRpb24gbG9vcAoJLSBTdXBwb3J0IG5vbi1kZXNrdG9wIHJvb3QKCS0gU2lsZW5jZSBoYXJtbGVzcyBhbmQgaW1wbGVtZW50ZWQgZGVidWcgbWVzc2FnZXMKCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglQZW5kaW5nIHRpbWVyIGludGVycnVwdHMgbm8gbG9uZ2VyIGRlYWRsb2NrIERPU1ZNX1dhaXQuCglSZXN0b3JlZCBpbnRlcnJ1cHQgcHJpb3JpdGllcyB0byBjb3JyZWN0IHZhbHVlcy4KCjIwMDMtMDYtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IHRoZSB0ZXh0dXJlIHVwbG9hZCBjb2RlIHdoZW4gUkVDVCBpcyBhY3R1YWxseSB1c2VkCgktIG9wdGltaXplIEZCIExvY2tzIC8gVW5sb2NrcyB3aGVuIFJFQ1RzIGFyZSB1c2VkCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIFZpZXdwb3J0IGhhY2sgdG8gZ2V0IHNvbWUgb2xkIEQzRDEgZ2FtZXMgdG8gd29yawoJLSBUUkFDRWluZyBmaXgKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzbWFsbCBUUkFDRWluZyBmaXgKCS0gZml4IGJ1ZyBpbiB0ZXh0dXJlIHVwbG9hZCAoSSB3b25kZXIgaG93IEkgbWlzc2VkIHRoaXMgOi0vICkKCS0gaW1wcm92ZSB0aGUgRDNEMS8yIHRleHR1cmUgbWFwcGluZyBtb2RlcwoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCAoc3R1cGlkKSByZWdyZXNzaW9ucyBpbnRyb2R1Y2VkIGJ5IGxhc3Qgc2VyaWVzIG9mIHBhdGNoCgktIDI0IGJwcCBoYW5kbGluZyBmb3IgbG9jayAvIHVubG9jayBjb2RlCgktIHNvbWUgYmV0dGVyIGNoZWNrcyBmb3IgQWxwaGFQaXhlbCB2YWx1ZQoJLSBiZXR0ZXIgVFJBQ0VpbmcgdG8gYmV0dGVyIGNhdGNoIHRocmVhZGluZyBwcm9ibGVtcwoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNvbWUgR0wgY3JpdGljYWwgc2VjdGlvbiBmaXhlcwoJLSBvbmx5IGJpbmQgdGV4dHVyZXMgYXQgc3RhcnQgb2YgcmVuZGVyaW5nCgktIG9wdGltaXplZCB0aGUgdGV4dHVyZSBwYXJhbWV0ZXIgY29kZQoJLSBvcHRpbWl6ZSBvZiB0aGUgJ2RpcnR5IGNoZWNraW5nIGNvZGUnIGZvciBtaXBtYXBwaW5nCgktIGhhbmRsZXMgdGhlIE1BWE1JUExFVkVMIHRleHR1cmUgcGFyYW1ldGVyCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uaCwgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBwcm9wZXIgKHRlc3RlZCBvbiBXaW4ySykgcmVmZXJlbmNlIGNvdW50aW5nIGZvciBEaXJlY3QzRCBvYmplY3QKCS0gZml4IG9uZSBjYXNlIG9mIHJlZmVyZW5jZSBjb3VudGluZyBvbiB0ZXh0dXJlcwoJLSBmaXggc3R1cGlkIGJ1ZyBpbiB0ZXh0dXJlIHVwbG9hZCBjb2RlCgktIHlldCBhbm90aGVyIHRleHR1cmUgZW51bWVyYXRpb24gcmVvcmRlcmluZwoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXhlZCBhIGJ1ZyBpbiB0aGUgRnJhbWVCdWZmZXIgPT4gVGV4dHVyZSBibGl0cy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgUkVDVCBzdXBwb3J0IHRvIHRoZSB0ZXh0dXJlIHVwbG9hZCBjb2RlCgktIHVzZSB0aGUgY29tbW9uIGNvZGUgZm9yIHRoZSBGQiBVbmxvY2sgY29kZQoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzb21lIGNsZWFuLXVwcyAoZXh0ZW5zaW9uIGNvZGUgdG8gYmUgYWRkZWQgc29vbikKCS0gc29tZSBpbnRlcmZhY2UgY2hhbmdlcyBmb3IgZnV0dXJlIHJldXNlIGZvciBCbHQgLyBMb2NrIGNvZGUKCS0gZml4ZWQgc29tZSBQaXRjaCBwcm9ibGVtcyBpbiB0ZXh0dXJlIHVwbG9hZHMgKG1vc3RseSBmb3IgJ3NtYWxsJwoJICBtaXAtbWFwcGluZyBsZXZlbHMpCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVmYWN0b3Jpbmcgb2YgdGhlIHRleHR1cmUgdXBsb2FkIGNvZGUuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggdGV4dHVyZSBwYXJhbWV0ZXJzIGhhbmRsaW5nIG9uIHRleHR1cmUgY2hhbmdlLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHJlbW92ZSBzb21lIGV4dHJhbmVvdXMgc2F2aW5nIG9mIHRoZSByZWFkIGJ1ZmZlciBzZXR0aW5ncwoJLSBjbGVhbmVkLXVwIHRoZSBHTCAvIGRldmljZSBjcml0aWNhbCBzZWN0aW9uIGhhbmRsaW5nCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcHJvdGVjdCB2aWV3cG9ydCBzZXR0aW5nIHdpdGggR0wgbG9jawoJLSBubyBuZWVkIGFueW1vcmUgdG8gZmx1c2ggdG8gRkIgb24gZXhlY3V0ZSBidWZmZXIgY2FsbGluZwoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTb21lIHRocmVhZGluZyBmaXhlcyAocHJldmVudHMgc29tZSBkZWFkLWxvY2tzKS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvZ2xfYXBpLmgsIGRsbHMvZGRyYXcvZ2xfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gaW1wbGVtZW50IEZCID0+IFRleHR1cmUgYmxpdHMKCS0gZml4IGNvbXBpbGF0aW9uIG9uIG5vbi1yZWNlbnQgZ2xleHQuaCBzeXN0ZW1zCgoJKiBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLCBkbGxzL2QzZDgvdm9sdW1lLmMsCgkgIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gY2xlYW5pbmcgb2Ygdm9sdW1lLmMvdm9sdW1ldGV4dHVyZS5jIGFzIGRvbmUgcHJldmlvdXNseSBmb3IKCSAgc3VyZmFjZS5jLyp0ZXh0dXJlLmMgKHdpdGggYWRkIG9mIGxvY2thYmxlLCBsb2NrZWQgYW5kIERpcnR5IGZsYWdzKQoJLSBhZGQgb2YgZGlydHlSZWN0L2RpcnR5Qm94IGZvciBiZXR0ZXIgZGlydGlmaWNhdGlvbiBtYW5hZ2VtZW50IChub3QKCSAgdXNlZCB5ZXQsIGJ1dCBodWdlIG9wdGltaXNhdGlvbiBjYW4gYmUgcG9zc2libGUgbm93KQoJLSBmaXggc29tZSBkZWJ1ZyB0cmFjZXMgKHdlbGwgaXQncyBiZXR0ZXIgdG8gdXNlIGRlYnVnX2QzZHBvb2wpCgktIGZpeCBzb21lIHN0dXBpZCByZWdyZXNzaW9uIG9uIHBvaW50IHBhcmFtZXRlcnMgKGZvcmdvdCB0byBjaGVjawoJICBleHRlbnNpb24gb24gZmlsbGNhcHMpCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kM2Rjb3JlX2dsLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBhZGQgYSBuZXcgcHJpdmF0ZSBoZWFkZXIgZDNkY29yZV9nbC5oIHRoYXQgZGVjbGFyZXMgbmVlZGVkIG9wZW5nbAoJICBkZWZpbmVzIGFuZCB0aGUgY2FwcyBkZWZpbmVzCgktIGNsZWFudXAgb2YgZGV2aWNlLmMgdXNpbmcgdGhlIGNhcHMgZGVmaW5lcyAoYXZvaWQgdGhlICNpZmRlZgoJICBuaWd0aG1hcmUpCgktIGFkZCB7U2V0LEdldH1HYW1tYVJhbXAgc3VwcG9ydAoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC9zd2FwY2hhaW4uYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBzb21lIGNsZWFudXAgYW5kIHdhcm5pbmcgZml4ZXMKCS0gc3BsaXQgb2YgQ3JlYXRlRGV2aWNlIGdsL2d4bCBkZXRlY3Rpb24gY29kZSBpbnRvIEZpbGxHTENhcHMKCS0gaW1wbGVtZW50YXRpb24gb2YgcmVzb2x1dGlvbiBjaGFuZ2UgKHVzaW5nIENoYW5nZURpc3BsYXlTZXR0aW5ncykKCSAgYnV0IGRlc2FjdGl2ZWQgYXMgQ2hhbmdlRGlzcGxheVNldHRpbmdzIGRvbid0IHNlZW0gdG8gd29yayB3ZWxsCgktIGJlZ2luIG9mIHN3YXAgY2hhaW4gc3VwcG9ydCAobm93IG5lZWQgdG8gc3BsaXQvY2xlYW4KCSAgZ3hscGJ1ZmZlci9nbHhwaXhtYXAgY29kZSBmb3Igc3dhcCBjaGFpbiB1c2UpCgoJKiBkbGxzL2QzZDgvc3VyZmFjZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRml4IHRoZSBnbFJlYWQgY2FsbCB3aGVuIHBSZWN0ICE9IE5VTEwsIHJlc29sdmUgdGhlIGZpbGUgZm9ybWF0IG9mIHRoZQoJc2F2ZWQgc25hcHNob3QgY29ycmVjdGx5LgoKCSogZGxscy9kM2Q4L3N1cmZhY2UuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGZpeCBhbm90aGVyIHRpbWUgdGhlIHN0dXBpZCBsb2NraW5nIGJ1ZyAoaSBoYWQgYWxyZWFkeSBmaXhlZCBpdCBpbgoJICBBY3RpdmVSZW5kZXIpCgktIGZpeCBzdHVwaWQgcmVzY2FsaW5nIG9mIGNvbG9ycyB2YWx1ZXMgb24gU2F2ZVNuYXBzaG90CgoJKiBkbGxzL2QzZDgvZDNkOC5zcGVjLCBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvc2hhZGVyLmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gcGl4ZWwgc2hhZGVyIHByb2dyYW0gZHVtcCBjb2RlCgktIHBpeGVsIHNoYWRlciBjb2RlIHNwbGl0IGludG8gYSBuZXcgIkNPTSBvYmplY3QiIChhcyBkb25lIGJlZm9yZSBmb3IKCSAgdmVydGV4IHNoYWRlcikKCS0gc29tZSBmaXhlcyBvbiBWYWxpZGF0ZSogZnVuY3Rpb25zIGNhbGwgdHlwZXMKCS0gYWRkIHBpeGVsIHNoYWRlciAoaWUgZnJhZ21lbnRfcHJvZ3JhbSkgZGV0ZWN0aW9uIG9uIGNhcHMgY29kZQoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvdXRpbHMuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgc3VwcG9ydCBmb3IgYSBsb3Qgb2YgdGhlIHJlbWFpbmluZyB0ZXh0dXJlIG9wcywgbW92ZSBjb2RlIGludG8gdGhlCgl1dGlscyBtb2R1bGUsIGFuZCBjbGVhbiB1cCB0aGUgbWFpbiBjb2RlIHBhdGguCgoJKiBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZDNkOC9zdXJmYWNlLmMsCgkgIGRsbHMvZDNkOC90ZXh0dXJlLmMsIGRsbHMvZDNkOC91dGlscy5jLCBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHNvbWUgY2xlYW51cHMKCS0gbW9yZSBjdWJldGV4dHVyZXMgZml4ZXMgKG5vdyBkM2Q4IHNkayBjdWJlbWFwIHNhbXBsZSB3b3JrIGFsbW9zdAoJICBwZXJmZWN0bHkpCgktIGFkZCBhIG5ldyBkZWJ1ZyBmdW5jdGlvbiAiZGVidWdfZDNkcG9vbCIgYW5kIHVzZSBpdAoJLSBhZGQgYSBuZXcgcGFyYW0gKHRoZSBkZXZpY2UpIGZvciB0aGUgY29udmVyc2lvbnMgZnVuY3Rpb25zIChiZWNhdXNlCgkgIHdlIG5lZWQgdG8gY2hlY2sgY2FwcyB0byBzZWUgaG93IHRvIGNvbnZlcnQpCgktIHNvbWUgY3Jhc2hlcyBmaXhlZCBpbiByZW5kZXIgdG8gc3VyZmFjZSBjb2RlIHdpdGggbm8gc3RlbmNpbC1kZXB0aAoJICBzdXJmYWNlCgktIGEgdmVyeSBzaW1wbGUgY2xpcGxhbmUgZml4CgktIGEgc3R1cGlkIHBhbGV0dGVzIGZpeCAoc3R1cGlkIGxhbmd1YWdlKQoJLSBiZWdpbiBvZiBhbmlzb3Ryb3BpYyBmaWx0ZXIgc3VwcG9ydAoJLSBiZWdpbiBvZiBjb21wcmVzc2VkIHRleHR1cmVzIHN1cHBvcnQKCS0gYSB2ZXJ5IHVzZWZ1bCBkZWJ1ZyBmdW5jdGlvbnM6IElEaXJlY3QzRFN1cmZhY2U4SW1wbF9TYXZlU25hcHNob3QgdG8KCSAgZHVtcCBzdXJmYWNlcyBhcyBwbmcgOykKCS0gbWFueSB1c2VmdWwgc3VyZmFjZXMgZGVidWcgY29kZSAodXNpbmcgU2F2ZVNuYXBzaG90KQoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNvcnJlY3Qgc3BlY3VsYXIgZW5hYmxlIHJlbmRlcnN0YXRlLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQXZvaWQgdGhlIHVzZSBvZiBnbEdldCB3aGVuIHdlIGtub3cgdGhlIGluZm9ybWF0aW9uIGxvY2FsbHkuCgoJKiBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvdXRpbHMuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglPcGVuZ2wgMS40IGFkZGVkIHN0ZW5jaWwgd3JhcCBzdXBwb3J0IGFzIHBlciBkaXJlY3R4IChhbHNvIGluIHRoZQoJR0xfRVhUX3N0ZW5jaWxfd3JhcCBleHRlbnNpb24pLgoKCSogZGxscy9kM2Q4L01ha2VmaWxlLmluLCBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywKCSAgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwKCSAgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvcmVzb3VyY2UuYywKCSAgZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL2QzZDgvc3RhdGVibG9jay5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLAoJICBkbGxzL2QzZDgvc3dhcGNoYWluLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsIGRsbHMvZDNkOC91dGlscy5jLAoJICBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGltcGxlbWVudGVkIHJlbmRlciB0byBzdXJmYWNlcyAoYW5kIHJlbmRlciB0byBuZXcgcmVuZGVydGFyZ2V0cykKCSAgdXNpbmcgZ2x4IHBidWZmZXJzICh3aXRoIGEgdXNlZnVsIGRlYnVnIGNvZGUgdG8gZGlzcGxheSByZW5kZXJlZAoJICBzdXJmYWNlIGludG8gd2luZG93IGRyYXdhYmxlKQoJLSBiZXR0ZXIgY3ViZXRleHR1cmVzCgktIHNwbGl0IHV0aWxpdGllcyBmdW5jdGlvbnMgaW50byB1dGlscy5jIGFuZCBhZGRlZCBtb3JlCgktIG1vcmUgcmVhZGFibGUgZGVidWcgYWdhaW4KCS0gYSBiZXR0ZXIgY2FwcyBjb2RlIChub3QgcGVyZmVjdCBidXQgaSdsbCB1c2UgZ2x4IGNvZGUgbGF0ZXIpCgktIHVzZSBvZiB0aGUgbmV3IGNhcHMgY29kZQoJLSBiZWdpbiBvZiBVcGRhdGVUZXh0dXJlCgktIGJlZ2luIG9mIEN1cnNvciBzdXBwb3J0CgktIGNsZWFuaW5nIG1vc3Qgb2YgZGVwcmVjYXRlZCAjaWYgMC8jZW5kaWYKCS0gY29ycmVjdCBzb21lIGxvY2thYmxlL3VubG9ja2FibGUgYmVoYXZpb3IKCS0gY29ycmVjdCBzb21lIHJldHVybnMgY29kZQoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGRvIG5vdCBzZWFyY2ggZm9yIGF0dGFjaGVkIHN1cmZhY2VzIGlmIHRoZSB0ZXh0dXJlIGRvZXNuJ3QgaGF2ZSB0aGUKCSAgTUlQTUFQIGZsYWcgc2V0CgktIGFkZCBHTCBjcml0LiBzZWN0aW9uIHN1cHBvcnQgZm9yIG1hdHJpeCBzZXR0aW5nCgktIHN1cHBvcnQgdGhlIHZhcmlvdXMgQkxFTkQgdGV4dHVyZSBvcGVyYXRpb25zCgoJKiBkbGxzL2RkcmF3L21lc2EuYzogWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCUFkZGVkIHRoZSBEM0RUQkxFTkRfREVDQUwgcmVuZGVyIHN0YXRlLgoKCSogY29udHJvbHMvZWRpdC5jLCBkbGxzL3NldHVwYXBpL3F1ZXVlLmMsIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLnNnbWwsCgkgIGZpbGVzL3Byb2ZpbGUuYywgbWVtb3J5L2dsb2JhbC5jLCBwcm9ncmFtcy9ycGNzcy9ycGNzc19tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBzb21lIHR5cG9zLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBhIGR5bmFtaWNhbGx5IGdyb3dpbmcgcmluZyBidWZmZXIgZm9yIG9zcywgYWxzYSwgYXJ0cywgYW5kIG5hcy4KCgkqIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQ6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJVXBkYXRlZCBteSBlLW1haWwgYWRkcmVzcy4KCgkqIGxpYnMvd3BwL3BwbC5sOiBQYXVsIExhdWZlciA8UGF1bC5FLkxhdWZlckBqcGwubmFzYS5nb3Y+CglXb3JrIGFyb3VuZCBmb3IgZmxleCBicmFpbiBkYW1hZ2UuCgoJKiBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIGxvY2FsZWNvbnYoKSB3aXRoIGxpYmMgZnVuY3Rpb24uCgoJKiBpbmNsdWRlL21zdmNydC90aW1lLmg6IEFudG9uaW8gTGFycm9zYSBKaW3pbmV6IDxhbnRsYXJyQHRlZGlhbC5jb20+CglBZGRlZCBDTE9DS1NfUEVSX1NFQy4KCgkqIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCUFudG9uaW8gTGFycm9zYSBKaW3pbmV6IDxhbnRsYXJyQHRlZGlhbC5jb20+CglBZGRlZCBXU0FTZXRFdmVudCBmb3J3YXJkLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3dpbi5pbmk6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lQHNreWJlc3QuY29tPgoJQWRkZWQgMTAgbmV3IG1jaSBleHRlbnNpb25zLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglVcGRhdGUgbGlzdGJveCBkaXJlY3RvcnkgbW9kZSB0byBuZXcgRmluZEZpcnN0RmlsZSBlcnJvciBjb2RlLgoKCSogZGxscy91c2VyL3RleHQuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglEcmF3VGV4dEV4OiBob25vciBjbGlwcGluZyBmb3IgdW5kZXJzY29yZXMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBEaXJlY3RTb3VuZCBlbnRyaWVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglXaXRoID4yNTYgY29sb3VycywgdGhlcmUgaXMgbm8gbmVlZCB0byByZWFsaXplIGEgcGFsZXR0ZSwgc28gc2tpcCBpdAoJYW5kIHJldHVybiB0aGF0IG5vIHBhbGV0dGUgZW50cmllcyBoYWQgdG8gY2hhbmdlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIGJGaXJzdFBhaW4gZnVua3kgb3B0aW1pemF0aW9uLCBpdCBpcyBjYXVzaW5nIHRvbyBtdWNoIGdyaWVmLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvZHJpdmUuaCwgbXNkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1pZ3JhdGUgbW9zdCBpbnQyMSBpb2N0bCByb3V0aW5lcyB0byB3aW5lZG9zLgoJTWlncmF0ZSBpbnQyMSBzZXQgZHJpdmUgcm91dGluZSB0byB3aW5lZG9zLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbXBsZW1lbnRlZCBhIHNlbWktc3R1YiBmb3IgR2V0UHJvY2Vzc1ByaW9yaXR5Qm9vc3QuCgoJKiBkbGxzL3VzZXIvZGRlL3NlcnZlci5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmV2ZXJ0IHNvbWUgcmVhbGx5IHVud2FudGVkIGNoYW5nZXMgdG8gdGhlIERERSBjb2RlLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJSW1wcm92ZSBDRFJPTV9HZXRJZGVJbnRlcmZhY2UgKGJlY29tZXMgQ0RST01fR2V0SW50ZXJmYWNlSW5mbyksIGluCglvcmRlciB0byBiZXR0ZXIgc3VwcG9ydCBTQ1NJIGRyaXZlcy4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJSW5jbHVkZSBzeXMvdGltZS5oIGZvciBzdHJ1Y3QgdGltZXZhbCBkZWZpbml0aW9uLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJVXNlIFNBX1JFU1RBUlQgb24gTmV0QlNELgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvY3Vyc2VzLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdpbmVjb25zb2xlIGN1cnNlcyBiYWNrZW5kIG5vdyB3b3JrcyBldmVuIGlmIHRlcm1pbmFsIGlzIHNtYWxsZXIgdGhhbgoJY29uc29sZSBzaXplLiBDdXJzb3IgaXMgbm8gbG9uZ2VyIGxlZnQgaW50byB3cm9uZyBsb2NhdGlvbiBhZnRlcgoJc2NyZWVuIHVwZGF0ZXMuCgoJKiBkbGxzL250ZGxsL3N5bmMuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJVGltZXIgcm91dGluZXMgbXVzdCBjaGVjayBmb3IgTlVMTCB0aW1lciBuYW1lLgoKCSogcHJvZ3JhbXMvd2luaGVscC9TaS5yYywgcHJvZ3JhbXMvd2luaGVscC9Tay5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGFkZGVkIHNvbWUgbWlzc2luZyBzdHJpbmdzIHRvIHJlc291cmNlcwoJLSBtYWRlIHRoZSBkZWNvbXByZXNzaW9uIGNvZGUgYSBiaXQgbW9yZSBwZWRhbnRpYyB0byBhdm9pZCBjcmFzaGVzCgktIGZpeGVkIHN0YXJ0dXAgd2l0aG91dCAuSExQIGZpbGVuYW1lIHBhc3NlZCBvbiBjb21tYW5kIGxpbmUKCS0gcGFzc2VkIGEgZmV3IG1vcmUgY29tbWFuZHMgZnJvbSByZW1vdGUgYXBwbGljYXRpb25zIHRvIHRoZSBtYWNyb3MKCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywKCSAgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2dsX2FwaS5oLCBkbGxzL2RkcmF3L2dsX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CgkgTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJIExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglNYWtlIEREcmF3IG5vdCBsaW5rZWQgJ3N0YXRpY2FsbHknIHRvIE9wZW5HTC4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYzogTWFyayBXZXN0Y290dCA8bWFya0Bob3VzZW9mZmlzaC5vcmc+CglESW5wdXQga2V5Ym9hcmQgaGFuZGxpbmcgY2hlY2tzIGZvciBpbmNvbWluZyBYMTEgZXZlbnRzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsCgkgIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIENPTSBhcGFydG1lbnRzLgoKCSogZGxscy9kM2Q4L2RldmljZS5jLCBpbmNsdWRlL2QzZDh0eXBlcy5oOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUZpbGwgaW4gbG90cyBvZiB1bmltcGxlbWVudGVkIHJlbmRlciBzdGF0ZXMuCgoyMDAzLTA1LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJRml4IGNvbXBpbGUgZXJyb3IuCgoJKiBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGluY2x1ZGUvdGhyZWFkLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgbG9hZGVyL21vZHVsZS5jLCBtZW1vcnkvaGVhcC5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJU3RhcnQgdG8gbWFrZSB1c2Ugb2YgdGhlIHByb3BlciBQRUIgc3RydWN0dXJlIGZvciBwcm9jZXNzCglpbmZvcm1hdGlvbi4KCgkqIG1pc2NlbXUvbWFpbi5jOiBXYXJuaW5nIGZpeC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIHdpbjMyL25ld2Zucy5jOgoJQmVlcCgpIGlzIHN0aWxsIG5lZWRlZCBpbiBudGRsbCwgbW92ZSBpdCBiYWNrIHRvIHNvbWUgcmFuZG9tIGZpbGUuCgoJKiBtaXNjZW11L01ha2VmaWxlLmluOgoJQWRkZWQgZGVwZW5kZW5jeSBvbiBsaWJudGRsbCB0byBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nIGxpbmtzCglwcm9wZXJseS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIDNkIHByaW1hcnkgYW5kIHNlY29uZGFyeSBidWZmZXIgdGVzdHMuCglDaGVjayByZWZlcmVuY2UgY291bnQgYXQgb2JqZWN0IHJlbGVhc2UuCglSZW1vdmUgcmVkdW5kYW50IGNvb3BlcmF0aXZlIGxldmVsIHNldHRpbmcuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9taXhlci5jLAoJICBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCS0gbWFrZSBwYXJhbWV0ZXIgY2hlY2tpbmcgYW5kIGVycm9yIG5vdGlmaWNhdGlvbiBjb25zaXN0ZW50CgktIHByb3BhZ2F0ZSBkcml2ZXIgYW5kIGxvY2FsIGZ1bmN0aW9uIGVycm9ycyB3aGVyZSBuZWVkZWQKCS0gZml4IGVycm9yIHJldHVybnMgd2hlcmUgcG9pbnRlciBpcyBnaXZlbiBmb3IgcmV0dXJuZWQgZGF0YQoJLSBhZGQgM2QgbGlzdGVuZXIgdG8gcHJpbWFyeSBidWZmZXIgd2hlbiBuZWVkZWQKCS0gY29weSAzZCBwYXJ0IG9mIGJ1ZmZlciB3aGVuIGR1cGxpY2F0ZWQKCS0gZml4IGJ1ZyB3aGVuIHByaW1hcnkgYnVmZmVyIGlzIHJlb3BlbmVkIHdpdGggc21hbGxlciBidWZmZXIKCS0gbG9vc2VuIHJlcXVpcmVtZW50cyBvbiBjYXBzIGRhdGEgc2l6ZSBjaGVjawoJLSBzZXQgY2FwcyBmb3IgZW11bGF0ZWQgbW9kZSBiYXNlZCBvbiBhY3R1YWwgZHJpdmVyIGNhcHMKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSByZW1vdmUgZm9nZ2luZyB0b28gd2hlbiBkb2luZyB0aGUgZmx1c2ggb2YgdGhlIGZyYW1lIGJ1ZmZlcgoJLSBoYW5kbGUgZGVzdCByZWN0IGluIHRoZSBCbHQgREVQVEhfRklMTCBjYXNlCgktIGZpeCBRdWVyeUludGVyZmFjZSBvbiB0aGUgRDNEIERldmljZQoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggbGlzdHZpZXcgY3VzdG9tIGRyYXcgbm90aWZpY2F0aW9uIGZvciBDRERTX0lURU1QUkVQQUlOVCBhbmQKCUNERFNfU1VCSVRFTVBSRVBBSU5UIG1lc3NhZ2VzLgoKCSogZGxscy9vbGUzMi9kY29tLmgsIGRsbHMvb2xlMzIvZGNvbS5pZGw6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCURDT00gSURMIGZpbGUgYmFzZWQgb24gdGhlIERDT00gc3BlY2lmaWNhdGlvbi4KCgkqIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19taXNjLmgsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW5pdGlhbCBzdXBwb3J0IGZvciBSUEMgY2FsbCBmYWlsdXJlcywgYnkgY2F0Y2hpbmcgUlBDIHNlcnZlcgoJZXhjZXB0aW9ucyBhbmQgcmV0dXJuaW5nIHNpbXBsZSBmYWlsdXJlIHBhY2tldHMsIGFuZCB0aHJvd2luZwoJZXhjZXB0aW9ucyBvbiB0aGUgY2xpZW50IHNpZGUgd2hlbiB1bm1hcnNoYWxsaW5nIHRoZSBmYWlsdXJlIHBhY2tldC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUF2b2lkIHNldHRpbmcgYW5kIHJlc2V0dGluZyB0aGUgc2FtZSB2YWx1ZXMgd2hlbiB0aGVyZSBhcmUgbWFueQoJcmVjdGFuZ2xlcy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglVcGRhdGUgb3JkZXJpbmcgb24gaW5zZXJ0aW9uIG9mIGFuIGl0ZW0uCgoyMDAzLTA1LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaCwKCSAgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lbWVudWJ1aWxkZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVtZW51YnVpbGRlci93aW5lbWVudWJ1aWxkZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBjb2RlIHRoYXQgc3RhcnRzIHdpbmVzaGVsbGxpbmssIGluc3RlYWQgY3JlYXRlIGEgd2luZG93cwoJY29tcGF0aWJsZSBzaG9ydGN1dCAoKi5sbmspIGZpbGUuIEFmdGVyIGNyZWF0aW5nIHRoYXQgZmlsZSwgc3RhcnQgYQoJbGluayBwcm9jZXNzb3IgKHdpbmVtZW51YnVpbGRlcikgb24gaXQsIHdoaWNoIHJlYWRzIGl0IGJhY2sgdGhlbiBjYWxscwoJd2luZXNoZWxsbGluay4KCVJld29yayBDcmVhdGVTdHJlYW1Gcm9tRmlsZSB0byBjcmVhdGUgYW4gSVN0cmVhbSBvYmplY3QgdGhhdCBpcwoJd3JpdGVhYmxlLgoKCSogbGlicy9wb3J0L3NwYXduLmM6CglSZXNldCBTSUdDSExEIGhhbmRsZXIgdG8gZGVmYXVsdCBpZiB3ZSBuZWVkIHRvIHdhaXQuIFJlc2V0IFNJR1BJUEUKCWhhbmRsZXIgYmVmb3JlIGV4ZWMuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYzoKCU1vdmVkIGEgY291cGxlIG9mIDE2LWJpdCBtb2R1bGUgZnVuY3Rpb25zIGZyb20gdG8gbG9hZGVyL25lL21vZHVsZS5jLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2NoYW5nZS5jLCBkbGxzL2tlcm5lbC9lcnJvcjE2LmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIG1pc2MvZXJyb3IuYywKCSAgbWlzYy9tYWluLmM6CglNb3ZlZCBtaXNjL2Vycm9yLmMgdG8gZGxscy9rZXJuZWwvZXJyb3IxNi5jLgoJR2V0IHJpZCBvZiBtaXNjL21haW4uYy4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywKCSAgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2dkaW9iai5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgR2RpQ29tbWVudCBmb3IgZW5oYW5jZWQgbWV0YWZpbGVzLgoKCSogZGxscy9pcGhscGFwaS9pZmVudW0uYzoKCUZpeGVkIHdyb25nIGxlbmd0aCBhcmd1bWVudCBpbiBnZXRJbnRlcmZhY2VQaHlzaWNhbEJ5TmFtZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUluc2VydGluZyBjb2x1bW4gemVybyBzaG91bGQgbm90IG1vZGlmeSB0aGUgbWFpbiBpdGVtIChzcG90dGVkIGJ5CglSb2JlcnQgU2hlYXJtYW4pLgoKCSogbWlzYy9jcHUuYzogRXJpYyBBbmhvbHQgPGV0YUBsY2xhcmsuZWR1PgoJQWRkZWQgQ1BVIGRldGVjdGlvbiBmb3IgRnJlZUJTRC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBdm9pZCAibWlnaHQgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB3YXJuaW5nIGluIGV4ZXJjaXplU2VydmVyKCkuCgoJKiBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZvciBSUEMgc2VydmVycywgZG9uJ3QgZGVhbGxvY2F0ZSB0aGUgUlBDIHJlcXVlc3QgcGFja2V0IGJlZm9yZSB0aGUKCVJQQyByZXBseSBwYWNrZXQgaXMgc2VudCwgaW4gY2FzZSBtYXJzaGFsbGluZyB0aGUgcmVwbHkgbmVlZHMgYW55IG9mCgl0aGUgcmVxdWVzdCBkYXRhLgoKCSogZGxscy9ycGNydDQvbmRyX21pZGwuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIHNlbWktc3R1YiBmb3IgTmRyUHJveHlFcnJvckhhbmRsZXIuCglGaXhlZCBhIGNhc2Ugb2YgcG90ZW50aWFsIHN0YWNrIHRyYXNoaW5nLgoKMjAwMy0wNS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNb3ZlZCBhbGwgcHJvY2VzcyBpbml0aWFsaXNhdGlvbiBjb2RlIHRvIHByb2Nlc3MuYyBhbmQgcmVtb3ZlZAoJbG9hZGVyL21haW4uYy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9vbS5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIE50UXVlcnlPYmplY3QgYW5kIE50U2V0SW5mb3JtYXRpb25PYmplY3QgZm9yIHRoZQoJT2JqZWN0RGF0YUluZm9ybWF0aW9uIGNsYXNzLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB0aGUgR2xvYmFsKiBtZW1vcnkgQVBJIGZ1bmN0aW9ucyB0aHJlYWQgc2FmZS4KCgkqIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6IENhcmxvcyBMb3phbm8gPGNsb3phbm9AYW5kYWdvLmNvbT4KCUF2b2lkIHByaW50aW5nIGFuIHVuaW5pdGlhbGl6ZWQgYnVmZmVyLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJSW1wbGVtZW50IENEUk9NX1Njc2lQYXNzVGhyb3VnaCBhbmQgQ0RST01fU2NzaVBhc3NUaHJvdWdoRGlyZWN0IG9uCglOZXRCU0QuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvc3lzdGVtLmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIG1lbW9yeS9pbnN0ci5jLCBtaXNjL3N5c3RlbS5jOgoJTW92ZWQgc3lzdGVtLmRsbCBpbXBsZW1lbnRhdGlvbiB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZWNsaS9vbGVjbGkxNi5jLAoJICBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJV2luMTYvMzIgc2VwYXJhdGlvbiBvZiBvbGVjbGkzMi4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2Rjb21tb24uYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZW1vdmUgYWxsIG9wZW5HTCBjYWxscyBpbiBleGVjdXRlIGJ1ZmZlcnMgYW5kIHVzZSB0aGUgRGlyZWN0M0Q3IEFQSXMuCglFbmFibGUgcmV0cmlldmluZyB0aGUgcmVuZGVyIHRhcmdldCBzdXJmYWNlIG9mIGEgZGV2aWNlIHRocm91Z2ggaXRzCglRdWVyeUludGVyZmFjZSBtZXRob2QuCglBdm9pZCBsaWdodHMgdXBkYXRpbmcgd2hlbiBhIHZpZXdwb3J0IGFuZCBhIGRldmljZSBoYXZlIG5vdCBiZWVuCglhc3NvY2lhdGVkIHRvIHRoZW0uCglDbGVhciB0aGUgWiBidWZmZXIgb25seSB3aGVuIHdlJ3JlIGFza2VkIHRvIGJ5IENoZWNraW5nIEQzREJUTF9GSUxMCglmbGFnLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZGVkIHNvbWUgbG9uZyBmaWxlbmFtZSBmdW5jdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbWlzYy9jcHUuYzoKCVlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglJbXBsZW1lbnRlZCBHZXRTeXN0ZW1JbmZvIG9uIE5ldEJTRC4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzY2hlZHVsZXIvcGlwZS5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sCgkgIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnQgYW5vbnltb3VzIHBpcGVzIG9uIHRvcCBvZiBuYW1lZCBwaXBlcy4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzb21lIHRyYWNpbmcgZml4ZXMKCS0gZmx1c2ggdGhlIHJpZ2h0IGJ1ZmZlciB0byB0aGUgc2NyZWVuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCU5vIG5lZWQgdG8gZmx1c2ggdGhlIHN1cmZhY2UgYmFjayBpZiBsYXN0IGxvY2sgd2FzIGEgUk8gbG9jay4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL3RpbWVyLmM6CglNb3ZlZCB0aW1lciBmdW5jdGlvbnMgdG8gZGxscy9rZXJuZWwuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dC5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUhhbmRsZSByZXF1ZXN0cyBmb3IgQ0xTSURfUFNEaXNwYXRjaC4KCgkqIGRsbHMvcnBjcnQ0L2Nwcm94eS5jLCBkbGxzL3JwY3J0NC9jcHNmLmMsIGRsbHMvcnBjcnQ0L2Nwc2YuaCwKCSAgZGxscy9ycGNydDQvY3N0dWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgTmRyRGxsUmVnaXN0ZXJQcm94eSBzbyBpdCByZWdpc3RlcnMgdGhlIGtleSBuYW1lcyB0aGF0IG9sZTMyCglleHBlY3RzLiBCZXR0ZXIgZGVidWcgdHJhY2VzIChpbmNsdWRlIG5hbWUgb2YgaW50ZXJmYWNlKS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBidWcgaW4gJ0JsdCBERVBUSF9GSUxMJyBvdmVycmlkZQoJLSBhZGRlZCBhIGxvY2sgYXJvdW5kIHRoZSBmbHVzaGluZyBvZiBhIHN1cmZhY2UgdG8gdGhlIGZyYW1lIGJ1ZmZlcgoJLSBvcHRpbWl6ZSB0ZXh0dXJlIGxvYWRpbmcgbXkgbWluaW1pemluZyB0aGUgY2FzZXMgd2hlcmUgYSBjb252ZXJzaW9uCgkgIG5lZWRzIHRvIG9jY3VyIGFuZCBhbHNvIGJ5IHJldXNpbmcgdGhlIGFsbG9jYXRlZCBtZW1vcnkKCgkqIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3N5bmMuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIHNjaGVkdWxlci90aW1lci5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdGltZXIuYywKCSAgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIHRpbWVyIHJlbGF0ZWQgZnVuY3Rpb25zIGluIG50ZGxsIGFuZCBtYWtlIHRoZSBrZXJuZWwzMgoJZnVuY3Rpb25zIHVzZSB0aGVtLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOiBVc2UgdGhlIHRyYWNlIG1hY3JvIGZvciBkZWJ1Z2dpbmcgb3V0cHV0LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglIYXZlIExpZ2h0cyBhbmQgQ2xpcHBsYW5lcyB0cmFuc2Zvcm1lZCBwcm9wZXJseS4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCU9ubHkgY3JlYXRlIHRoZSAxNi1iaXQgZHVtbXkgbW9kdWxlIHdoZW4gd2UgbmVlZCByZWFsbHkgaXQuCgoJKiBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvaW5pdC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUxvb2sgdXAgdGhlIHByaW50ZXIncyBwb3J0IGluIHRoZSByZWdpc3RyeSBpZiBuZWl0aGVyIENyZWF0ZURDIG9yCglTdGFydERvYyBzcGVjaWZ5IG9uZS4KCVBob3Rvc2hvcCA3IGhhcyBhIGJ1ZyB0aGF0IHJlc3VsdHMgaW4gY2JJbnB1dCBiZWluZyAyIGxlc3MgdGhhbiB0aGUKCWxlbmd0aCBvZiB0aGUgc3RyaW5nIHJhdGhlciB0aGFuIDIgbW9yZS4gIFNvIHVzZSB0aGUgV09SRCBhdAoJaW5fZGF0YVswXSBpbnN0ZWFkLgoKCSogZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wcGQuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglDVVBTIHVzZXMgdGhlIHBwZCBmaWxlIHRvIHN0b3JlIHRoZSBkZWZhdWx0IHBhcGVyIHNpemUsIHNvIHdlJ2xsIHJlYWQKCWl0IGZyb20gaGVyZS4KCUlmIHRoZSBwcGQgZG9lc24ndCBjb250YWluIGFuIGV4cGxpY2l0IHJlc29sdXRpb24gdGhlbiBkZWZhdWx0IHRvCgkzMDBkcGkuCgoJKiBkbGxzL2tlcm5lbC9ubHMvKi5ubHMsIGluY2x1ZGUvd2lubmxzLmg6CglBZGRlZCB2YWx1ZSBmb3IgZGVmYXVsdCBVbml4IGNvZGVwYWdlIHRvIGFsbCB0aGUgbG9jYWxlIGRlZmluaXRpb25zLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCAiZGVyZWZlcmVuY2UiIHBvaW50ZXIgZmxhZy4KCUFkZGVkIE5kckNsZWFyT3V0UGFyYW1ldGVycyBzdHViLgoKCSogZGxscy9ycGNydDQvbmRyX29sZS5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVBvcnRhYmlsaXR5IGZpeC4gQmV0dGVyIGRlYnVnIG1lc3NhZ2VzIChkaXNwbGF5IElJRCBvZiBpbnRlcmZhY2UgdG8KCW1hcnNoYWwpLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuaXQ6CglGcmFuY2VzY28gRGkgUHVuemlvIDxmcmFuY2VzY29fZGlwdW56aW9AdmlyZ2lsaW8uaXQ+CglJdGFsaWFuIHRyYW5zbGF0aW9uIG9mIHRoZSBSRUFETUUgZmlsZS4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gaW1wbGVtZW50IHRoZSBURkFDVE9SIHRleHR1cmUgc3RhZ2Ugc3RhdGUKCS0gc3VwcG9ydCBUZXh0dXJlIG1hdHJpY2VzCgktIHZhcmlvdXMgbWlzYy4gY2xlYW4tdXBzCgoyMDAzLTA1LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oLAoJICBkbGxzL3VzZXIvZGRlL21pc2MuYywgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgaW5jbHVkZS9kZGUuaCwgaW5jbHVkZS9kZGVtbC5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUV4cGVjdCBtdWx0aXBsZSBETlNfIGZsYWdzLgoJUGFydGlhbGx5IGltcGxlbWVudGVkIERkZUVuYWJsZUNhbGxiYWNrLgoJQ2FsbCBhIGNhbGxiYWNrIHdpdGggWFRZUF9DT05ORUNUX0NPTkZJUk0gYWZ0ZXIgYW4gYWNjZXB0ZWQKCVhUWVBfQ09OTkVDVC4KCUFkZGVkIHRyYWNlcywgY2xhcmlmeSBkYXRhIHR5cGVzLCBvdGhlciBjb3NtZXRpY3MuCgoJKiBvYmplY3RzL2ZvbnQuYzogRml4ZWQgcmV0dXJuIHZhbHVlIG9mIEdldFRleHRGYWNlQS4KCgkqIG9iamVjdHMvZGMuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFmdGVyIHdlIHVwZGF0ZSB0aGUgbWFwcGluZyBtb2RlIHJlc2VsZWN0IHRoZSBjdXJyZW50IGZvbnQgYmFjayBpbnRvCgl0aGUgZGMgc28gdGhhdCBpdHMgc2l6ZSBpcyByZWNhbGN1bGF0ZWQuCgoJKiBkbGxzL3dpbmVwcy9wcy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgYWRkIHNwYWNlcyBpbiB0aGUgUG9zdFNjcmlwdCBiZXR3ZWVuIGV2ZXJ5IHBpeGVsIC0gdGhpcyBtYWRlCglkZWJ1Z2dpbmcgZWFzaWVyIGJ1dCByZXN1bHRzIGluIGFuIGF3ZnVsIGxvdCBvZiB3aGl0ZXNwYWNlIGJlaW5nIHNlbnQKCXRvIHRoZSBwcmludGVyLgoJRG9uJ3QgZ2VuZXJhdGUgdGhlICUlT3JpZW50YXRpb24gRFNDIGNvbW1lbnQuICBUaGUgY3VwcyBwc3RvcHMgZmlsdGVyCgl0cmllcyB0byByb3RhdGUgdGhlIGltYWdlIGJ5IDkwZGVncyB3aGVuIHRvIGl0IHNlZXMgdGhpcyBjb21tZW50LgoJU3RvcCBhIGNyYXNoIGlmIHRoZSBkb2N1bWVudCB0aXRsZSBpcyBOVUxMLgoKCSogZGxscy93aW5lcHMvdHlwZTEuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlc2V0IHRoZSBlc2NhcGVtZW50IGJhY2sgdG8gemVybyBiZWZvcmUgcmV0cmlldmluZyB0aGUgb3V0bGluZSAod2UncmUKCWFscmVhZHkgaW4gYSByb3RhdGVkIGNvb3JkaW5hdGUgc3lzdGVtKS4KCgkqIGRsbHMvd2luZXBzL3RleHQuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBoYW5kbGluZyBvZiB0ZXh0IGFsaWduIG1vZGVzIGZvciByb3RhdGVkIHRleHQuCgoJKiBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglCYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiBFbnVtUG9ydHNBOiBkdW1wIGFsbCB0aGUgc2VyaWFsIGFuZCBwcmludGVyCglwb3J0IG5hbWVzIGludG8gYSBzdHJ1Y3R1cmUuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0RhLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0RlLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0VuLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0ZpLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0ZyLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLCBwcm9ncmFtcy9ub3RlcGFkL1NpLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1NrLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1N3LnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1dhLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgcmVkdW5kYW50IExBTkdVQUdFIHN0YXRlbWVudHMuCgoJKiBwcm9ncmFtcy92aWV3L3ZpZXcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRml4IGFuIHVuaW5pdGlhbGl6ZWQgYnVmZmVyLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBDcmVhdGVQcm9jZXNzKCJjOlxQcm9ncmFtIEZpbGVzXGhlbGxvLmJhdCIpLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglXZSBjYW4ndCB1c2UgUnRsQ3JlYXRlVW5pY29kZVN0cmluZ0Zyb21Bc2NpaXogZm9yIFdNX1NFVFRFWFQgYXMgdGhlCglyZXN1bHRpbmcgdW5pY29kZSBzdHJpbmcgbWF5IGJlIGdyZWF0ZXIgdGhhbiAweGZmZmYgYnl0ZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHdlIGZpbmQgdGhlIGRyYWcgYW5kIGRyb3AgZnVuY3Rpb25zIGJlZm9yZSBjYWxsaW5nIHRoZW0uCgoJKiBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywgd2luZG93cy9jbGFzcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldENsYXNzSW5mbyByZXR1cm5zIGNsYXNzIGF0b20gb24gc3VjY2Vzcy4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBTRUVfTUFTS19DTEFTU0tFWSBjYXNlIGZvciBTaGVsbEV4ZWN1dGUuCgoJKiBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHViIGZvciBOZXRTZXJ2ZXJFbnVtLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzdXBwb3J0IGZvciBub24tZnVsbCBzY3JlZW4gdmlld3BvcnRzIGFuZCBjbGVhcmluZy4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2RjLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYzoKCUh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBhIGZldyBtb3JlIGRldmljZSBjYXBzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOiBGZXJlbmMgV2FnbmVyIDx3ZmVyaUB0YmEuZWx0ZS5odT4KCU5ldyBfbGNyZWF0IHRlc3RzIGZvciBmaWxlbmFtZSBlbmRpbmcgaW4gYSBzbGFzaCBhbmQgdm9sdW1lIGxhYmVsCglhdHRyaWJ1dGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9udGRsbC9jZHJvbS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCUFkZGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgQ0RST01fR2V0SWRlSW50ZXJmYWNlIG9uIE5ldEJTRC4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJVXNlIGNvcnJlY3QgdHlwZSBvZiBwb2ludGVyIGluIFNhZmVBcnJheUNyZWF0ZVZlY3RvciB0byBhdm9pZCBtZW1vcnkKCWNvcnJ1cHRpb24uIEFkZCB0cmFjZXMuCgoJKiBkbGxzL3NoZWxsMzIvZGVidWdobHAuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGQgYSBQSURMIHR5cGUgRm9yIE5ldHdvcmsgUHJvdmlkZXIuCgoJKiBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJSW5jbHVkZSBhcnBhL25hbWVzZXIuaCBiZWZvcmUgcmVzb2x2LmguCgoJKiBjb250cm9scy9lZGl0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVJldmVydCB0aGUgV01fR0VURExHQ09ERSBoYW5kbGluZyBwYXRjaCBjb21wbGV0ZWx5IHRoaXMgdGltZS4gSXQKCWJyZWFrcyB0b28gbXVjaC4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIGdldCBjdXJyZW50IGRyaXZlIGludDIxIGZ1bmN0aW9uIHRvIHdpbmVkb3MuCglGaXggc3BlbGxpbmcgbWlzdGFrZXMuCglBZGQgc29tZSBkcml2ZSBoYW5kbGluZyBoZWxwZXIgcm91dGluZXMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRml4IHZhbHVlIG9mIElJRF9JU2hlbGxGb2xkZXIyLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUJldHRlciBoYW5kbGluZyBvZiBwaXRjaCBzZXQgdG8gMC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIFJHQiAzMiBzdXJmYWNlIGxvY2tpbmcgKHNlZW1zIHRvIHdvcmsgZmluZSB3aXRob3V0IHJlc29ydGluZyB0bwoJQWxwaGEgaGFja3MpLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglNYWtlIHN1cmUgZHJhd2FibGVfb3JnIGlzIHNldCBjb3JyZWN0bHkgd2hlbiB1c2luZyBvbmUgb2YgdGhlIHBhcmVudHMKCWFzIGRyYXdhYmxlIChmb3VuZCBieSBEbWl0cnkgVGltb3Noa292KS4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJQXZvaWQgdGhlICdCZWxvdycgc3RhY2tpbmcgbW9kZSB3aGVuIGNoYW5naW5nIFogb3JkZXIgc2luY2UgbWFueQoJd2luZG93IG1hbmFnZXJzIGRvbid0IGdldCBpdCByaWdodC4KCUZpeCBaIG9yZGVyIHN5bmNocm9uaXphdGlvbiBmb3IgY2hpbGQgd2luZG93cyAoZm91bmQgYnkgRG1pdHJ5CglUaW1vc2hrb3YgYW5kIFVscmljaCBDemVrYWxsYSkuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFzayBvdXQgTVdNT19XQUlUQUxMIGlmIG9ubHkgc2VydmVyIHF1ZXVlIGhhbmRsZSB3YXMgcGFzc2VkIGluLgoKCSogZGxscy93aW5lcHMvYml0Ymx0LmMsIGRsbHMvd2luZXBzL2JpdG1hcC5jLCBkbGxzL3dpbmVwcy9icnVzaC5jLAoJICBkbGxzL3dpbmVwcy9jbGlwcGluZy5jLCBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmVwcy9wcy5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90ZXh0LmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrIGNsaXBwaW5nIHNvIHRoYXQgdGhlIFBTIGNsaXAgcGF0aCBpcyBvbmx5IHNldCBqdXN0IGJlZm9yZSBhbnkKCWdyYXBoaWNzIG91dHB1dCBldmVudC4gRG9pbmcgaXQgdGhpcyB3YXkgbWVhbnMgd2UgZG9uJ3QgZXZlciBuZWVkIHRvCgljYWxsIGluaXRjbGlwIHdoaWNoIGlzIGEgR29vZCBUaGluZy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHVubmVjZXNzYXJ5IGNhc3RzLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL3JlZ2lvbi5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUdldFJhbmRvbVJnbiguLi4sMSkgcmV0dXJucyB0aGUgY3VycmVudCBjbGlwcGluZyByZ24uCglNb3ZlZCBHZXRSYW5kb21SZ24gYW5kIHRoZSBNZXRhUmduIGZ1bmN0aW9ucyB0byBvYmplY3RzL2NsaXBwaW5nLmMuCgoJKiB3aW5kb3dzL21kaS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVzdG9yZSBNREkgd2luZG93IGluIHRoZSBjYXNlIG9mIGRpc2FibGVkIG1heGltaXplIGJ1dHRvbi4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBoYm1Db2xvciBvbmx5IGZvciBjb2xvciBpY29ucyBpbiBHZXRJY29uSW5mby4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglDYXRjaCBicm9hZGNhc3Qgd2luZG93IGhhbmRsZXMgaW4gZnVuY3Rpb25zIHRoYXQgYXJlIGltcGxlbWVudGVkIHVzaW5nCglTZW5kTWVzc2FnZS4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgd2luZG93cy9tZXNzYWdlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBCcm9hZGNhc3RTeXN0ZW1NZXNzYWdlVy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgJUwgZXNjYXBlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBSZWFkQ2FiaW5ldFN0YXRlIGFuZCBXcml0ZUNhYmluZXRTdGF0ZS4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywKCSAgZGxscy9zZXR1cGFwaS9xdWV1ZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlc3BlY3QgdGhlIHZlcnNpb24gU1BfQ09QWSBmbGFncyB3aGVuIGluc3RhbGxpbmcgZmlsZXMuCglNYWtlIEdlbkluc3RhbGwxNiBvbmx5IGNvcHkgZmlsZXMgaWYgdGhlIHZlcnNpb24gaXMgbmV3IG9yIHNhbWUuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2VtaS1jb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIE9sZU1ldGFmaWxlUGljdEZyb21JY29uQW5kTGFiZWwuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9iaXRibHQuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgU3RyZXRjaERJQml0cyBpbiB0aGUgRU1GIGNvZGUuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgaXNzdWVzIGluIEVNRkRSVl9FeHRUZXh0T3V0LgoKCSogZGxscy9nZGkvbWZkcnYvaW5pdC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmVjb3JkIGVzY2FwZXMgaW4gbWV0YWZpbGVzLgoKMjAwMy0wNS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcG9ydCBmb3IgZGV2aWNlIHN1cmZhY2UgbG9ja2luZy4KCgkqIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9yZXNvdXJjZS5jLCBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvZDNkOC9zdXJmYWNlLmMsIGRsbHMvZDNkOC90ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC92c2hhZGVyZGVjbGFyYXRpb24uYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBtb3IgdXNlZnVsbCBkZWJ1ZyBmdW5jdGlvbnMgZGVidWdfZDNkdXNhZ2UgYW5kIGRlYnVnX2QzZGRldmljZXR5cGUKCS0gZml4IGEgY3Jhc2ggaW4gcGl4ZWwgc2hhZGVyIHBhcnNlciAoaGFwcGVuZWQgd2l0aCB1bnJlYWwyKQoJLSBjdXJyZW50bHkgZGVzYWN0aXZlIHBpeGVsIHNoYWRlcnMgY2FwcyAod2l0aCAjZGVmaW5lKSB3aGlsZSBodwoJICBzaGFkZXJzIGNvZGUgaXNuJ3QgbWVyZ2VkCgktIHdoZW4gd2UgaGF2ZSBhIHNwZWNpYWwgZGVidWcgY2hhbm5lbCBmb3Igc2hhZGVyLCB1c2UgaXQgOykKCS0gZml4IGFnYWluIHNvbWUgc3R1YnMgcmV0dXJuIHZhbHVlCgktIG1vcmUgbW9yZSByZWFkYWJsZSB0cmFjZXMgbm93IChwcmluY2lwYWx5IElEaXJlY3QzRDggY2FwYWNpdGllcwoJICBjaGVjayBhbmQgc3VyZmFjZSBsb2NraW5nIGNvZGUpIHVzaW5nIG5ldyBkZWJ1ZyBmdW5jdGlvbnMKCS0gZml4L2NsZWFuaW5nIHRoZSBzdXJmYWNlIGxvY2tpbmcgY29kZQoJLSBub3cgd2Ugc3VwcG9ydCBEM0RUT1BfU1VCU1RSQUNUIHNvIGRlY2xhcmUgaXQgaW4gY2FwcwoJLSBub3cgc3VwcG9ydCB0cnVlIDMyYml0ICh3ZWxsIFggMjQgYml0IGNhbiBiZSB1c2VkIGFzIDMyIGJpdCBpbiBjYXBzCgkgIGNvZGUpCgktIGZpcnN0IHRyeSB0byBnZXQgRDNEVFNTX1RDSV9DQU1FUkFTUEFDRU5PUk1BTCBhbmQKCSAgRDNEVFNTX1RDSV9DQU1FUkFTUEFDRVJFRkxFQ1RJT05WRUNUT1IgbG9vayBnb29kCgktIG5hdGl2ZSBzdXBwb3J0IDMyIGJpdCBzdXBwb3J0IChub3cgYXBwbGljYXRpb24gY2FuIGNob29zZSAxNiBvciAzMgoJICBiaXQgc3VwcG9ydCkgaWYgY3VycmVudCByZXNvbHV0aW9uIGlzIDI0IGJpdCAoYXMgd2UgY2FuIG9ubHkgbGF1bmNoCgkgIGdhbWVzIGluIHdpbmRvd2VkIG1vZGUpCgktIHRleHR1cmVzIHBhbGV0dGVzIHN1cHBvcnQKCS0gZml4IHJlZmxleGlvbiBwbGFjZW1lbnQgY29kZSAodGhlIHNkayBzYW1wbGUgYmVnaW4gdG8gd29yaykKCS0gZml4IGEgc3R1cGlkIGNyYXNoIHdoZW4gdXNpbmcgdHJhY2VzIGluIHZzaGFkZXJkZWNsYXJhdGlvbgoJLSBtb3JlIG1vcmUgcmVhZGFibGUgdHJhY2VzIChpbml0L2NhcHMpCgktIG1vcmUgY3ViZXRleHR1cmVzIGZpeGVzCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVNpbGVuY2Ugc29tZSBUUkFDRXMgdG8gYmV0dGVyIHNwb3QgcmVhbCBlcnJvcnMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhaW9uIG9mIFZhckJzdHJGcm9tRGVjLgoKMjAwMy0wNS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9ob29rMTYuYywgZGxscy91c2VyL3duZDE2LmMsIGxvYWRlci90YXNrLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJQXZvaWQgdXNpbmcgdGhlIE1hcEhNb2R1bGUgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglDYWxsIHRoZSB1c2VyIHNpZ25hbCBwcm9jIGZvciBleGUgbW9kdWxlcyB0b28sIHRvIGF2b2lkIGR1cGxpY2F0aW5nCgl0aGUgbW9kdWxlIGNsZWFudXAgY29kZS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9sb2NhbDE2LmMsIG1lbW9yeS9oZWFwLmMsCgkgIG1lbW9yeS9sb2NhbC5jOgoJTW92ZWQgbW9zdCBsb2NhbCBoZWFwIGZ1bmN0aW9ucyB0byBkbGxzL2tlcm5lbC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUZpeGVkIERFQ0lNQUxfU0VUWkVSTwoJUmVtb3ZlZCBhIHdvcmthcm91bmQgZm9yIHRoZSBmb3JtZXIgcHJvYmxlbS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglTaWxlbmNlIGVycm9yIG9uIG5vbi1yZWRoYXQgc3lzdGVtcy4KCgkqIHRvb2xzL2MybWFuLnBsOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZvcmNlIHBlcmwgdG8gdXNlIGJ5dGUgc2VtYW50aWNzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUhUVFBfSHR0cE9wZW5SZXF1ZXN0QTogQ2FsY3VsYXRlIHNpemUgZnJvbSB0aGUgcmlnaHQgYXJndW1lbnQuCgoJKiBncmFwaGljcy9iaXRibHQuYzogSmFla2lsIExlZSA8SmFla2lsLkxlZUBlZmkuY29tPgoJSW1wbGVtZW50IE1hc2tCbHQgdXNpbmcgQml0Qmx0IChhZGFwdGVkIGJ5IERpbWl0cmllIE8uIFBhdW4pLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJSW1wbGVtZW50IHRleHR1cmUgdHJhbnNmb3JtIGZsYWdzIHRoZSBiZXN0IHdlIGNhbiBmb3Igbm93LgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2F0b20uYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgbWVtb3J5L2F0b20uYzoKCU1vdmVkIGF0b20gZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRml4ZWQgcmFuZ2UgY2hlY2tpbmcgb24gdGhlIG51bWJlciBvZiBsaWdodHMuCglTaWxlbmNlIHRoZSBmaXhtZXMuCgoyMDAzLTA1LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi90ZXN0cy9kcGEuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU5ldyBjb21jdGwzMiB0ZXN0IGRpcmVjdG9yeSBhbmQgdGVzdCBjYXNlIGZvciBEUEFfU2VhcmNoLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEUEFfU2VhcmNoOiBIYW5kbGUgRFBBU19JTlNFUlRCRUZPUkUgb24gZW1wdHkgbGlzdC4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zLy5jdnNpZ25vcmUsIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL3Z4ZC5jLCBkbGxzL3dpbmVkb3Mvd3Byb2NzLnNwZWMsIG1zZG9zL3Z4ZC5jOgoJTW92ZWQgdnhkIHN1cHBvcnQgdG8gd2luZWRvcy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVN1cHBseSB0aGUgY29ycmVjdCBib3ggb24gdGhlIHNjcmVlbiB0byBiZSBwcm9jZXNzZWQgZHVyaW5nIHRoZSBjbGVhcgoJY2FsbCwgdXNpbmcgb3BlbmdsIGNvb3JkaW5hdGVzLCBub3QgZGlyZWN0eCBjb29yZGluYXRlcy4KCgkqIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLCBkbGxzL3VzZXIvdXNlcjE2LmMsIGluY2x1ZGUvbW9kdWxlLmgsCgkgIGluY2x1ZGUvdXNlci5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsCgkgIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgd2luZG93cy91c2VyLmM6CglHZXQgcmlkIG9mIHRoZSAzMi1iaXQgdXNlciBzaWduYWwgcHJvYyBzaW5jZSB3ZSBhbHdheXMgcnVuIGJ1aWx0aW4KCVVTRVIgbm93LiAgTW92ZWQgVVNFUiBtb2R1bGUgY2xlYW51cHMgdG8gdGhlIDE2LWJpdCBzaWduYWwgcHJvYy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHN0dWIgZm9yIFZhckJzdHJGcm9tRGVjLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIFZUX0kyIDwtPiBWVF9VU0VSREVGSU5FRC9US0lORF9FTlVNIGNvbnZlcnNpb25zIHRvby4KCgkqIGZpbGVzL2ZpbGUuYzogUGhpbGlwIE1hc29uIDxwbWFzb25AcmljYXJkby5jb20+CglGb3JjZSBGSUxFX0dldFRlbXBGaWxlTmFtZSB0byBjb250aW51ZSBsb29raW5nIGZvciBuZXcgdGVtcCBmaWxlIG5hbWUKCWlmIGVycm9yIHJldHVybmVkIGZyb20gQ3JlYXRlRmlsZVcgaXMgRVJST1JfU0hBUklOR19WSU9MQVRJT04uCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglTb2x2ZWQgdGhlIHRyYW5zcGFyZW5jeSBwcm9ibGVtIHNlZW4gaW4gdGhlIENsaXBNaXJyb3IgU0RLIHNhbXBsZQoJcHJvcGVybHkuIEFsc28gYSBmZXcgdGFicy0+c3BhY2VzIHRvIGNvcnJlY3QgZm9ybWF0dGluZy4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsCgkgIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzMTYuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCVNlcGFyYXRlIFdpbjE2IGFuZCBXaW4zMiBpbXBsZW1lbnRhdGlvbnMgaW4gbWVtbG9ja2J5dGVzLgoKCSogZGxscy9pcGhscGFwaS9pcHN0YXRzLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJSW4gZ2V0VGNwVGFibGUoKSwgZ3VhcmQgTGludXgtc3BlY2lmaWMgY29uc3RhbnRzIGJ5ICNpZmRlZi4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzX2F0X2dteC5hdD4KCUltcGxlbWVudCBmaWxlIGNvbnRyb2wgYmxvY2sgKEZDQikgZnVuY3Rpb25zOgoJICBJTlQyMV9PcGVuRmlsZVVzaW5nRkNCIFsweDBmXSwKCSAgSU5UMjFfQ2xvc2VGaWxlVXNpbmdGQ0IgWzB4MTBdLAoJICBJTlQyMV9TZXF1ZW5pYWxSZWFkRnJvbUZDQiBbMHgxNF0sCgkgIElOVDIxX1NlcXVlbmlhbFdyaXRlVG9GQ0IgWzB4MTVdLAoJICBJTlQyMV9SZWFkUmFuZG9tUmVjb3JkRnJvbUZDQiBbMHgyMV0sCgkgIElOVDIxX1dyaXRlUmFuZG9tUmVjb3JkVG9GQ0IgWzB4MjJdLAoJICBJTlQyMV9SYW5kb21CbG9ja1JlYWRGcm9tRkNCIFsweDI3XSwKCSAgSU5UMjFfUmFuZG9tQmxvY2tXcml0ZVRvRkNCIFsweDI4XS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCU1vcmUgbmFtZWQgcGlwZXMgdGVzdHMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUV4cGxpY2l0bHkgY2xlYW4gZ2VuZXJhdGVkIHN5bWxpbmtzLgoJUmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIGluc3RhbGwgZGVwZW5kZW5jaWVzLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLAoJICBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CgktIHJld3JpdGUgb2YgdGhlIG5hbWVkIHBpcGUgY29kZQoJLSBhbGxvdyBOdEZpbGVGbHVzaEJ1ZmZlcnMgdG8gd2FpdAoJLSBhbGxvdyBEaXNjb25uZWN0TmFtZWRQaXBlIHRvIGludmFsaWRhdGUgY2xpZW50IGNhY2hlZCBmZAoJLSBmaXggdGhlIHBpcGUgdGVzdCBub3cgdGhhdCBvbmUgZXh0cmEgdGVzdCBwYXNzZXMKCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9wYXRoLmMsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgUnRsRG9zUGF0aE5hbWVUb050UGF0aE5hbWVfVSwgUnRsR2V0Q3VycmVudERpcmVjdG9yeV9VLAoJUnRsR2V0RnVsbFBhdGhOYW1lX1UgYW5kIFJ0bFNldEN1cnJlbnREaXJlY3RvcnlfVSAodGhlIGxhc3Qgb25lCglwYXJ0aWFsbHkgYXMgd2UgY2FuJ3QgdGVzdCB3aGV0aGVyIGEgcGF0aCBleGlzdHMgb3Igbm90KS4KCgkqIGRsbHMvaW1tMzIvaW1tLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJRml4IGEgbnVsbCBwb2ludGVyIGNyYXNoIGluIEltbUdldE9wZW5TdGF0dXMuCgoJKiBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglGaXggY29tcGlsYXRpb24gZXJyb3IgcmVwb3J0ZWQgYnkgU3RlZmFuIExlaWNodGVyIHdoZW4gdXNpbmcgb2xkCglvcGVuR0wgaGVhZGVycy4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglQcmV2aW91cyB2aWV3cG9ydCBmaXggb25seSB3b3JrcyBmb3IgZnVsbCBzY3JlZW4gYXBwbGljYXRpb25zIGFzIHdlCglkaWRuJ3QgY2hhbmdlIHRoZSBiYWNrIGJ1ZmZlciBzaXplIGluZm9ybWF0aW9uIHVudGlsIGFmdGVyIGNvcHlpbmcgdGhlCglwcmVzZW50YXRpb24gcGFyYW1ldGVycywgc28gd2hlbiBzZXR0aW5nIHVwIHRoZSB2aWV3cG9ydCB0aGUKCWJhY2tidWZmZXJ3aWR0aC9oZWlnaHQgd2FzIDAuIE1vdmVkIHRoZSBjb3B5IHVudGlsIGFmdGVyIGl0IGhhcyBiZWVuCgljb3JyZWN0ZWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIFZhckRlY0Zyb21TdHIuCgoJKiBjb250cm9scy9lZGl0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVJldmVydCB0aGUgcHJldmlvdXMgcGF0Y2ggZm9yIGNhcHR1cmluZyBrZXlzIGluIGFuIGVkaXQtbGlzdGJveCBjb21iby4KCjIwMDMtMDUtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvcGVfaW1hZ2UuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJUmV3cm90ZSBtb2R1bGUgVExTIHN1cHBvcnQgYW5kIG1vdmVkIGl0IHRvIG50ZGxsLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL21pc2NlbXUuaCwgbWVtb3J5L2luc3RyLmM6CglNYWRlIElOU1RSX0VtdWxhdGVJbnN0cnVjdGlvbiByZXR1cm4gdGhlIGV4Y2VwdGlvbiBjb2RlLgoJRG9uJ3QgYWxsb3cgaW50WFggaW5zdHJ1Y3Rpb25zIGZyb20gMzItYml0IGNvZGUgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCUp1a2thIEhlaW5vbmVuKS4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCU9ubHkgcHJpbnQgd2FybmluZyBvbiBubSBmYWlsdXJlIGJlY2F1c2UgaXQgZmFpbHMgb24gZGFyd2luIGlmIHRoZXJlCglhcmUgbm8gc3ltYm9scyAocmVwb3J0ZWQgYnkgUGllcnJlIGQnSGVyYmVtb250KS4KCgkqIGRsbHMvd2lubW0vd2luZWphY2svTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCXdpbmVqYWNrLmRydi5zbyBuZWVkcyAtbHdpbmVfdXVpZCB0b28uCgoJKiBkbGxzL2QzZDgvc2hhZGVyLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBuZXcgZGVidWcgY2hhbm5lbCBmb3Igc2hhZGVycyBjb2RlICdkM2Rfc2hhZGVyJwoJLSBtb3JlIGRlYnVnZ2luZyB0cmFjZXMKCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIGRlY2xhcmUgYSBuZXcgZGVidWcgY2hhbmVsIGZvciB2ZXJ0ZXggc2hhZGVycwoJLSBzb21lIHVzZWZ1bCBkZWJ1ZyBmdW5jdGlvbnMgZm9yIHRleHR1cmVzIGZvcm1hdAoJLSBjb3JyZWN0IERyYXdQcmltaXRpdmUgKFJIVyBjb3JyZWN0bmVzcyBhbmQgdnNoYWRlciBSSFcpCgktIG1vcmUgY29weXJlY3RzIGZpeGVzIChvbmx5IHR3byB1bmltcGxlbWVudGVkIGJlaGF2aW9yIHJlbWFpbikKCS0gZml4IEdldEZyb250QnVmZmVyIHRvIGdldCBzY3JlZW5zaG90cyBzYW1wbGVzIHdvcmtpbmcKCS0gYWRkIEQzRENPTE9SVE9HTEZMT0FUNCBhbmQgdXNlIGl0CgktIGZpcnN0IHRyeSBvZiBEM0RSU19GT0dUQUJMRU1PREUgc3VwcG9ydAoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CglEZWNsYXJlIHRoYXQgd2UgY2FuIHN1cHBvcnQgY3ViZSB0ZXh0dXJlcyBub3cgKGN1cnJlbnRseSBvbmx5IGNyZWF0aW9uCglpcyBkb25lKS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIG1pc3NpbmcgRU5EU0VTU0lPTl9MT0dPRkYgZGVmaW5lLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglVc2UgU2V0RGxnSXRlbVRleHQgaW5zdGVhZCBvZiBzZW5kaW5nIGEgV01fU0VUVEVYVC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1ha2Ugc3VyZSB0aGUgdmlld3BvcnQgaXMgZnJvbSB0aGUgR0wgKGJvdHRvbSBsZWZ0KSBub3QgdGhlIERpcmVjdFgKCSh0b3AgbGVmdCkuCgoyMDAzLTA1LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMvdHR5ZHJ2L2RjLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLAoJICBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9iaXRtYXAuYywKCSAgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jOgoJVXNlIGEgZGlmZmVyZW50IG1hZ2ljIGZvciBtZW1vcnkgRENzIGFuZCBnZXQgcmlkIG9mIHRoZSBEQ19NRU1PUlkKCWZsYWcuCgoJKiBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jOiBSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gbW92ZWQgbG9hZGluZyBjb2RlIG9mIHZvbHVtZSB0ZXh0dXJlIHRvIFZvbHVtZVRleHR1cmU6OlByZWxvYWQgYXMKCSAgZG9uZSBpbiBUZXh0dXJlL0N1YmVUZXh0dXJlCgktIGZpeGVkIHNvbWUgc3R1YnMgcmV0dXJuIHZhbHVlcwoKCSogZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmM6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBjdWJldGV4dHVyZSBsb2FkaW5nL3ByZWxvYWRpbmcKCS0gc29tZSBzdHVicyBtdXN0IHJldHVybiAwIChhbmQgbm9uIEQzRF9PSykKCS0gZml4IElEaXJlY3QzREN1YmVUZXh0dXJlOEltcGw6OkdldCogKHBvdGVudGlhbHMgQ0QpCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglQcm9wZXJseSBzdXBwb3J0IHRleHR1cmUgY29vcmRpbmF0ZSBpbmRleGVzLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1ha2Ugc3VyZSB3ZSBhZHZlcnRpemUgb3VyIGNhcGFiaWxpdGVzIGNvcnJlY3RseS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzogTWFrZSB0aGUgdGVzdCBwYXNzIG9uIE5UNCB0b28uCgoJKiBkbGxzL2QzZDgvc3RhdGVibG9jay5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJSW5pdGlhbGl6ZSB0aGUgdGV4IGNvb3JkIGluZGV4IGNvcnJlY3RseS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUNvcHlSZWN0cyBuZWVkcyB0byBsb2NrIHRoZSBhcmVhIGl0IGlzIGNvcHlpbmcgdG8gKGVzcC4gaWYgdGhhdCBhcmVhCglpcyB0aGUgYmFjayBidWZmZXIsIGFzIGxvY2tpbmcvdW5sb2NraW5nIGNhdXNlcyBnbHJlYWQvZHJhdyBwaXhlbHMpLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTWFyayBzb21lIHN1cmZhY2UgZm9ybWF0cyBhcyBub3Qgc3VwcG9ydGVkLgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaCwgZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeCBzb21lIHNzY2FuZiBjYXNlcyBhbmQgdGVzdGNhc2UgdG8gZ2V0IHd4dGlkZTMyLmV4ZSBydW5uaW5nLgoKCSogZGxscy91c2VyL2V4dGljb24uYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCVByaXZhdGVFeHRyYWN0SWNvbiogc2hvdWxkIHNlYXJjaCB0aGUgcGF0aCBmb3IgdGhlIGljb24gZmlsZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVJldmVydCBjaGFuZ2UgZm9yIHJlc2l6aW5nIGJ1dHRvbnMuCgoJKiBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpX21haW4uYywgZGxscy9pcGhscGFwaS9pcHN0YXRzLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZCBtaXNzaW5nICNpbmNsdWRlcyBmb3Igbm9uLUxpbnV4IHN5c3RlbXMuCgoJKiB0b29scy93aW5laW5zdGFsbDogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJTWFrZSBzdXJlIHByZWZpeCBpcyBhY3R1YWxseSBob25vdXJlZCBieSBjb25maWd1cmUuCglUZW1wb3JhcnkgaGFjayBmb3IgcmVkaGF0IHVzZXJzIHRvIGVuYWJsZSBOUFRMLgoKCSogZGxscy9rZXJuZWwvcmVzb3VyY2UuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBhbiBvYnZpb3VzIHR5cG8gaW4gZ2V0X3Jlc19uYW1lLiBTcG90dGVkIGJ5IE1pa2UgTWNDb3JtYWNrLgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFrZSBzdXJlIHdpbnNvY2suaCBnZXRzIGluY2x1ZGVkIGJlZm9yZSBzdGRsaWIuaC4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvcXVldWUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIFNldE1lc3NhZ2VFeHRyYUluZm8uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHRlc3QgZm9yIEdldExvbmdQYXRoTmFtZUEoImM6IikuCglBZGRlZCBhIHRlc3QgZm9yIEdldEZ1bGxQYXRoTmFtZUEoImM6IikuCglGaXggYSBudW1iZXIgb2YgbWVzc2FnZXMgdGhhdCByZWZlcnJlZCB0byBHZXRMb25nUGF0aE5hbWUgaW5zdGVhZCBvZgoJR2V0RnVsbFBhdGhOYW1lLgoKCSogZGxscy9zaGRvY3Z3Ly5jdnNpZ25vcmUsIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGRvY3Z3L3ZlcnNpb24ucmMsIGRsbHMvd2luc29jay8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay92ZXJzaW9uLnJjLAoJICBkbGxzL3dzb2NrMzIvLmN2c2lnbm9yZSwgZGxscy93c29jazMyL01ha2VmaWxlLmluLAoJICBkbGxzL3dzb2NrMzIvdmVyc2lvbi5yYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB2ZXJzaW9uIGluZm9ybWF0aW9uLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJU3R1YiBBZGRQb3J0QS4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHBhY2tpbmcvdW5wYWNraW5nIG9mIFdNX1dJTklOSUNIQU5HRS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbi9zdHViIG9mIHVuZG9jdW1lbnRlZCBmdW5jdGlvbiBzaGVsbDMyLjI1Ni4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVBhc3MgY29ycmVjdCBwb2ludGVyIHRvIENvQ3JlYXRlSW5zdGFuY2UgaW4gU0hMb2FkSW5Qcm9jLgoKCSogZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGEgbG9hZCBvZiBzZXR1cHggRGkqIHN0dWJzLgoKCSogZGxscy9zZXR1cGFwaS9pbnN0YWxsLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglVc2Ugc3RydG91bFcgaW5zdGVhZCBvZiBzdHJ0b2xXIGZvciBEV09SRCBjb252ZXJzaW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgcmVkdW5kYW50IElUeXBlTGliMl9BZGRSZWYncy4gTWFrZXMKCUxvYWRUeXBlTGliL0lUeXBlTGliMl9SZWxlYXNlIHdvcmsuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YiBmb3IgT2xlRG9BdXRvQ29udmVydC4KCgkqIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1tLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgYSBudW1iZXIgb2YgSU1NIGZ1bmN0aW9ucy4KCUNyZWF0ZSBhIGRlZmF1bHQgSFdORCB0byBwcm9jZXNzIFdNX0lNRSBtZXNzYWdlcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgaGFuZGxpbmcgb2YgT0ZOX05PVkFMSURBVEUgZm9yIHdpbjMxIHN0eWxlIGZpbGUgZGlhbG9ncy4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzogVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYmFkIG5vbi1jbGllbnQgY2FsY3VsYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggRFRNX1NFVFNZU1RFTVRJTUUuCglNYWtlIHRoZSBzaG93L2hpZGUgYnV0dG9uIGFjdHVhbGx5IGRvIHNvbWV0aGluZy4KCUFkZCBzdXBwb3J0IGZvciB0aGUgJ3l5eXknIGZvcm1hdC4KCgkqIGRsbHMvaXBobHBhcGkvaWZlbnVtLmM6IEZpeGVkIHNvbWUgc3RyaW5nIG92ZXJmbG93cy4KCgkqIGRsbHMvaXBobHBhcGkvLmN2c2lnbm9yZTogQWRkZWQgaXBobHBhcGkuc3BlYy5kZWYuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9waXBlLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYWtlIHN1cmUgd2luc29jay5oIGdldHMgaW5jbHVkZWQgYmVmb3JlIHN0ZGxpYi5oLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWw6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggYSBmZXcgc3R5bGUgaXNzdWVzLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jLCB0b29scy93aW5lZHVtcC9wZS5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglMaXN0ZWQgcmVjZW50bHkgYWRkZWQgc2VjdGlvbnMnIHR5cGVzIChyZXNvdXJjZSwgdGxzKSBmb3IgZHVtcGluZyB0bwoJdXNhZ2Ugc3RyaW5ncy4KCUZpeGVkIHNvbWUgaGVhZGVyIHNpemUgdGVzdGluZy4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUXVpZXQgc29tZSB2YWxncmluZCByZXBvcnRzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL2NvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgYSBzZXQgb2YgdGVzdHMgZm9yIHRoZSBjb25zb2xlIEFQSS4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglGaXhlZCBjb25zb2xlIG91dHB1dCBmb3Igbm9uIHdyYXBwZWQgbW9kZS4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvZW52LmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRW5oYW5jZWQgdGVzdCBmb3IgcXVlcmllcywgYWRkZWQgdGVzdHMgZm9yIGV4cGFuc2lvbi4KCgkqIGRsbHMvbnRkbGwvZW52LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS93aW50ZXJubC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBSdGxFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfVSBhbmQgZml4ZWQgYW4gaW5jb3JyZWN0CgliZWhhdmlvciBpbiBSdGxRdWVyeUVudmlyb25tZW50U3RyaW5nLgoKCSogdG9vbHMvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSWdub3JlIC1tdGhyZWFkcywgaXQncyBub3QgbmVlZGVkIGluIFVuaXguCgoJKiBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBzb21lIHN0dWJzIG5lZWRlZCBmb3IgV2luOTggZXhwbG9yZXIuZXhlLgoKCSogZGxscy93c29jazMyL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsCgkgIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaDoKCUp1YW4gTGFuZyA8anVhbl9sYW5nQHlhaG9vLmNvbT4KCUNoYW5nZWQgd3NvY2szMiB0byB1c2UgdGhlIG5ldyBpcGhscGFwaSBmb3IgaW50ZXJmYWNlIGFuZCByb3V0ZQoJZW51bWVyYXRpb24gaW4gV3NDb250cm9sLgoKCSogZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglVc2UgaXBobHBhcGkgdG8gaW1wbGVtZW50IFNJT19HRVRfSU5URVJGQUNFX0xJU1QgaW4gV1NBSW9jdGwsIGFuZAoJY29ycmVjdHMgaWlGbGFncyBlbnRyeSBpbiB0aGUgcmV0dXJuZWQgaW50ZXJmYWNlIGxpc3QuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmM6IFVzZSBpbnQgaW5zdGVhZCBvZiBzb2NrbGVuX3QuCgoJKiBjb250cm9scy9lZGl0LmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRml4IHByb2JsZW0gd2l0aCBjYXB0dXJpbmcgW3JldHVybl0ga2V5cyBpbiBtdWx0aS1saW5lIGVkaXRzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJR2V0IHJpZCBvZiBkaXJlY3QgSW1hZ2VMaXN0IGFjY2VzcyBoYWNrcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0Lmg6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVJlYXJyYW5nZSBtZW1iZXJzIG9mIEhJTUFHRUxJU1QgdG8gbWF0Y2ggV2luZG93cy4KCVJldXNlIGltYWdlIGFuZCBtYXNrIERDcy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJLSBTYXZlIG1vcmUgcmVnaXN0ZXJzIChleGNlcHRpb24sIGZsb2F0Li4uKSBpZiB0aGV5IGFyZSBkZWZpbmVkLgoJLSBBZGQgTWFjIE9TIFggc2lnbmFsIHN1cHBvcnQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9pcGhscGFwaS8uY3ZzaWdub3JlLAoJICBkbGxzL2lwaGxwYXBpL01ha2VmaWxlLmluLCBkbGxzL2lwaGxwYXBpL2lmZW51bS5jLAoJICBkbGxzL2lwaGxwYXBpL2lmZW51bS5oLCBkbGxzL2lwaGxwYXBpL2lwaGxwYXBpLnNwZWMsCgkgIGRsbHMvaXBobHBhcGkvaXBobHBhcGlfbWFpbi5jLCBkbGxzL2lwaGxwYXBpL2lwc3RhdHMuYywKCSAgZGxscy9pcGhscGFwaS9pcHN0YXRzLmgsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvaXBleHBvcnQuaCwgaW5jbHVkZS9pcGhscGFwaS5oLCBpbmNsdWRlL2lwaWZjb25zLmgsCgkgIGluY2x1ZGUvaXBydHJtaWIuaCwgaW5jbHVkZS9pcHR5cGVzLmg6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglBZGRlZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBpcGhscGFwaS5kbGw7IG1vc3QgR2V0KiBmdW5jdGlvbnMKCWludHJvZHVjZWQgdGhyb3VnaCBXaW45OCBhcmUgaW5jbHVkZWQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglBbGxvY2F0ZS9mcmVlIHRoZSAxNi1iaXQgdGhyZWFkIHN0YWNrIGluIHRoZSBrZXJuZWwgZGxsIGluaXQgcm91dGluZS4KCgkqIGRsbHMvZ2RpL3ByaW50ZHJ2LmM6CglSZXNldCBzaWduYWwgaGFuZGxlcnMgd2hlbiBzdGFydGluZyBjaGlsZCBwcm9jZXNzLgoKCSogZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jLAoJICBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9udGRsbC9ydGxiaXRtYXAuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdXNybWFyc2hhbC5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLAoJICBkbGxzL3JwY3J0NC9ycGNzc19ucF9jbGllbnQuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5yYywKCSAgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NobHdhcGkvcGF0aC5jLAoJICBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9wb3J0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsIGdyYXBoaWNzL3BhaW50aW5nLmMsCgkgIG1zZG9zL3BwZGV2LmMsIHByb2dyYW1zL3JwY3NzL3JwY3NzX21haW4uYywgdG9vbHMvYzJtYW4ucGw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBtaXNjZWxsYW5lb3VzIHNwZWxsaW5nIGVycm9ycyBhbmQgdHlwb3MuCgoJKiBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93aW5zb2NrMi5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBwcm90b3R5cGUgZm9yIF9fV1NBRkRJc1NldC4gRml4IHN5bnRheCBlcnJvci4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2JqaWRsLmlkbDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEltcGxlbWVudCBhIGZldyBtb3JlIGNhc2VzIGluIFByb3BWYXJpYW50Q2xlYXIuCgktIFBhcnRpYWxseSBpbXBsZW1lbnQgUHJvcFZhcmlhbnRDb3B5LgoJLSBJbXBsZW1lbnQgRnJlZVByb3BWYXJpYW50QXJyYXkuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBZGRlZCAyIG1vcmUgSW5zdGFsbFNoaWVsZCB0ZW1wb3JhcnkgZXhlcyBmb3IgRGVza3RvcCBNb2RlLgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTdXBwb3J0IDE0IGFuZCAxNSBhcmd1bWVudHMgaW4gV09XX0NhbGxQcm9jMzJXMTYuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRml4IHVzZSBvZiBmcmVlZCBtZW1vcnkuCgoJKiBkbGxzL21zdmNydC90ZXN0cy9maWxlLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNoYW5nZSB0aGUgI2luY2x1ZGUgb3JkZXIgc28gdGhlIHRlc3QgY29tcGlsZXMgd2l0aCB0aGUgTVNWQyBoZWFkZXJzLgoJRml4IGEgZmV3IHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJbGlicmFyeS9NYWtlZmlsZS5pbiBhbmQgdW5pY29kZS9NYWtlZmlsZS5pbiBkb24ndCBleGlzdCBhbnltb3JlLgoKCSogbWlzYy9tYWluLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTbWFsbCBkZWJ1ZyBjaGFubmVsIGNsZWFudXAuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJRml4IE5VTEwgcG9pbnRlciBlcnJvciB3aGVuIGRpc3BsYXlpbmcgZXJyb3IgbWVzc2FnZSBhYm91dCBtaXNzaW5nCglmb3J3YXJkZWQgZXhwb3J0LgoKMjAwMy0wNS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUNvbW1lbnRlZCBvdXQgdGhlIG5ldyB3aW45OCBleHBvcnRzLCB0aGV5IGFyZSBjYXVzaW5nIHRyb3VibGUuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSdGxVbmljb2RlVG9NdWx0aUJ5dGVTaXplIGFyZ3VtZW50IGlzIG5vdCBhIG51bGwgdGVybWluYXRlZCBzdHJpbmcsCgl1c2UgJ3B0cicuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgcmV0dXJuIGluIEhFQVBfVmFsaWRhdGVJblVzZUFyZW5hLgoKCSogZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgX3dmdWxscGF0aC4KCgkqIGRsbHMvbXByL3B3Y2FjaGUuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBlcnJvciByZXR1cm4gdmFsdWVzIGZyb20gc3R1YiBmdW5jdGlvbnMuCgoJKiBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tcHIvbXByX21haW4uYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdHViIGZvciBEbGxDYW5VbmxvYWROb3cuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJZ25vcmUgcmVxdWVzdGVkIGFjY2VzcyByaWdodHMgd2hlbiBlbXVsYXRlZCB2ZXJzaW9uIGlzIG5vdCBOVC4KCgkqIGRsbHMvZ2RpL21mZHJ2L2dyYXBoaWNzLmM6IFdhcnJlbiBCYWlyZCA8V2FycmVuX0JhaXJkQGNpbW1ldHJ5LmNvbT4KCUZpeCB0aGUgUG9seVBvbHlnb24gZnVuY3Rpb24gc28gaXQgcmVhbGx5IGdlbmVyYXRlcyBhIHBvbHlwb2x5Z29uIGFuZAoJbm90IG11bHRpcGxlIHNldHMgb2YgcG9seWdvbnMuCgoJKiBkbGxzL2dkaS9wcmludGRydi5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWxsb3cgdGhlIGN1cHMgcG9ydCB0byBiZSByZWRpcmVjdGFibGUuICBUaGlzIGdpdmVzIHVzIHRoZSBvcHRpb24gb2YKCXBpcGluZyB0aGUgUG9zdFNjcmlwdCB0aHJvdWdoIHNvbWV0aGluZyBiZWZvcmUgaXQgZ2V0cyBzZW50IHRvIHRoZQoJcHJpbnRlciAobGlrZSB3ZSBjYW4gYWxyZWFkeSBkbyBmb3Igbm9uLWN1cHMgc3lzdGVtcykuCgoJKiBkbGxzL2N0bDNkL2N0bDNkMzIuYywgZGxscy9jdGwzZC9jdGwzZDMyLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBvcmRpbmFscyB0byBjdGwzZDMyLmRsbCwgTXlPREJDIHJlZmVyZW5jZXMgaXQgYnkgb3JkaW5hbC4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2VkaXQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBoYW5kbGluZyBvZiBXTV9JTUVfQ0hBUi4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBkZWZpbml0aW9uIG9mIFNTX1VTRVJJVEVNLgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYywgaW5jbHVkZS93aW5jcnlwdC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YnMgZm9yIENlcnRTYXZlU3RvcmUgYW5kIENlcnRFbnVtQ2VydGlmaWNhdGVzSW5TdG9yZS4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGEgcG9zc2libGUgbWVtb3J5IGNvcnJ1cHRpb24uCglGaXhlZCBhIG1lbW9yeSBsZWFrLgoKCSogY29udHJvbHMvbWVudS5jOiBEb24ndCB0cmFjayB0aGUgc3lzdGVtIG1lbnUgZm9yIG1hbmFnZWQgd2luZG93cy4KCgkqIGRsbHMvZDNkOC9jdWJldGV4dHVyZS5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3RleHR1cmUuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZS5jLCBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIHN1cmZhY2UgcG9vbCBpbml0IGZpeGVzCgktIG1pbm9yIGluZGVudGF0aW9uIGFuZCB0cmFjZXMgZml4ZXMKCS0gZml4IGxvY2tpbmcvdW5sb2NraW5nL2RpcnR5IGJlaGF2aW9yIChkaXJ0aWZ5IG9uIGxvY2spICsKCSAgb3B0aW1pc2F0aW9ucyAob25seSBjb3B5IHdoZW4gZGlydHkpCgktIGZpeCBJRGlyZWN0M0REZXZpY2U4OjpDbGVhciBiZWhhdmlvciAocHJvYmxlbSBzZWVuIGFmdGVyIGEKCSAgbG9ja2luZy91bmxvY2tpbmcgY29kZSBlcnJvcikKCS0gYmVnaW4gdG8gZml4IHZvbHVtZSBhbmQgY3ViZSB0ZXh0dXJlcyBtYW5hZ2VtZW50CgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzZXBhcmF0ZSBnZW9tZXRyeSB0cmFjaW5nIGluIGEgbmV3IGRlYnVnIGNoYW5uZWwgKGRkcmF3X2dlb20pCgktIGFkZGVkIGhhbmRsaW5nIGZvciBzb21lIG5ldyB0ZXh0dXJpbmcgb3BzCgktIHByZXBhcmUgZm9yIGFkZGl0aW9uIG9mIG11bHRpLXRleHR1cmluZwoJLSBhbm90aGVyIHdheSB0byBmaXggdGhlIGRldmljZSBlbnVtZXJhdGlvbiBmb3IgdGhlIHJlZmVyZW5jZSBkZXZpY2UKCS0gZml4IGNvbXBpbGF0aW9uIHdpdGggc29tZSBnbGV4dC5oIGZpbGVzCgktIGZpeCBhIGJ1ZyBpbiBvbmUgdGV4dHVyZSBjb252ZXJzaW9uIGZ1bmN0aW9uCgktIGFkZGVkIG5ldyB0ZXh0dXJlIGZvcm1hdCAoYnV0IHN0aWxsIHRleHR1cmluZyBwcm9ibGVtcyBpbiAzRE1hcmsyMDAwKQoKCSogZGxscy93c29jazMyL3dzY29udHJvbC5oOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglVbmRlZiBpZl90eXBlLCBpZl9tdHUgYW5kIGlmX2xhc3RjaGFuZ2UgZm9yIGRhcndpbi4KCgkqIHNlcnZlci9jb250ZXh0X3Bvd2VycGMuYzogUGllcnJlIGQnSGVyYmVtb250IDxzdGVnZWZpbkBmcmVlLmZyPgoJQWRkIHN1cHBvcnQgZm9yIERhcndpbidzIHB0cmFjZS4KCjIwMDMtMDUtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUluaXRpYWxpemUgdGhlIGR3TWlwbWFwQ291bnQgZmllbGQgZXZlbiBpZiB0aGUgYXBwbGljYXRpb24gZm9yZ2V0cyBpdC4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgbWlwbWFwcGluZyBzdXBwb3J0CgktIGFkZGVkIGxvY2tpbmcgZm9yIGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBEM0QgZGV2aWNlCgktIGltcHJvdmVkIHRyYWNpbmcKCS0gYWRkZWQgc3VwcG9ydCBmb3IgbW9zdCB0ZXh0dXJlIGNvbWJpbmUgc3RhZ2VzIChpbnNwaXJlZCBieSB0aGUgRDNEOAoJICBjb2RlKQoJLSBkaXNhYmxlIGN1cnJlbnQgbG9jayAvIHVubG9jayBjb2RlIHBlbmRpbmcgcHJvcGVyIHNvbHV0aW9uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFN0ZXBoYW4gQmV1emUgPGZiaWdndW5AaG90bWFpbC5jb20+CglJbXBsZW1lbnRlZCBHZXQvU2V0VG9vbFRpcHMgZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJT3JkaW5hbHMgNDEwLTQxMyBhcmUgdGhlIHdpbmRvdyBzdWJjbGFzc2luZyBmdW5jdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUtZmFxLnNnbWw6CglTdG9yZSB0aGUgSFRNTCBpbnRvIGluZGV4Lmh0bWwgbGlrZSBmb3IgdGhlIG90aGVyIGRvY3MuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOC9yZXNvdXJjZS5jLAoJICBkbGxzL2QzZDgvc3RhdGVibG9jay5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvc3dhcGNoYWluLmMsCgkgIGRsbHMvZDNkOC92ZXJ0ZXhidWZmZXIuYywgZGxscy9kM2Q4L3ZvbHVtZS5jLAoJICBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIG1pbm9yIENPTSBmaXhlcyAoZml4ZXMgc29tZSBjcmFzaGVzIG9uIHN0dXBpZCBnYW1lcykKCS0gbWlub3IgaW5kZW50YXRpb24gY2hhbmdlcwoJLSBmaXggU0VMRUNUQVJHMiBiZWhhdmlvciAod2l0aCBoZWxwIGZyb20gTGlvbmVsIFVsbWVyKQoJLSBzdXJmYWNlIGxvY2tpbmcvdW5sb2NraW5nIChvbmx5IHJlbmRlcmluZyBhbmQgdGV4dHVyZXMgc3VyZmFjZXMKCSAgc3VwcG9ydGVkIG5vdykKCS0gYmVnaW5uaW5nIG9mIFRhcmdldC9Gcm9udCBzdXJmYWNlIHN1cHBvcnQKCS0gdHJ5IHRvIGdldCBEM0RUT1BfU0VMRUNUQVJHXyogd29ya2luZwoJLSBpbXBsZW1lbnRlZCBEM0RUT1BfU1VCVFJBQ1Q6IGN1cnJlbnRseSBvbmx5IGlmIE9wZW5HTDEuMyBpcyB1c2VkLCB3ZQoJICBoYXZlIHRvIHVzZSBHTF9TVUJUUkFDVF9BUkIgZm9yIG90aGVyIHZlcnNpb25zCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBvYmplY3RzL2RjLmM6CglBZGRlZCBwYXJ0aWFsIHN0dWIgZm9yIEdldFRyYW5zZm9ybS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW4gdXAgU0hGaWxlT3BlcmF0aW9uQS9XIGRlYnVnZ2luZyBhIGxpdHRsZS4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglTdG9wIHdhdmVtYXAgbG9va3VwIGlmIGEgZGV2aWNlIGlzbid0IGZ1bmN0aW9uYWwgKHNwb3R0ZWQgYnkgTGlvbmVsCglVbG1lcikuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTWFrZSByZWFkIGZyb20gc3RkaW4gdXNlIGJ1ZmZlcmVkIGlucHV0IGNvZGUgYW5kIHJlZGlyZWN0IHN0ZGVyciB0bwoJY29uc29sZS4KCgkqIG1zZG9zL2lvcG9ydHMuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTWFrZSBpb3BvcnQgaW5zdHJ1Y3Rpb24gZW11bGF0aW9uIGNhbGwgd2luZWRvcyBoYW5kbGVycy4KCgkqIHdpbmRvd3MvcXVldWUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCVBvbGwgWCBldmVudHMgaW4gR2V0SW5wdXRTdGF0ZSB0aGUgc2FtZSB3YXkgYXMgaW4gR2V0UXVldWVTdGF0dXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggY3VzdG9tIGRyYXcgZm9yIGl0ZW0gMC4KCgkqIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRW5hYmxlIGJyYW5jaCBmb3J3YXJkIG9wZXJhdGlvbiBpbiBleGVjdXRlIGJ1ZmZlci4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUHV0IHRoZSBkZXZpY2UgbmFtZSBzdHJpbmcgb24gdGhlIHN0YWNrIGR1cmluZyBkZXZpY2VzIGVudW1lcmF0aW9uLgoJRGlzYWJsZSByZWZlcmVuY2UgZW51bWVyYXRpb24uCgoJKiBjb250cm9scy9lZGl0LmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZCBtaXNzaW5nIFJlbGVhc2VEQyBpbiBFRElUX0J1aWxkTGluZURlZnNfTUwuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglQbGF5YmFjayBlc2NhcGVzIGluIG1ldGFmaWxlcy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBsaW5rIG5hbWVzLgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBsaWJzL01ha2VsaWIucnVsZXMgb24gZGlzdGNsZWFuLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgb2JqZWN0cy9kYy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YiBmb3IgU2V0VmlydHVhbFJlc29sdXRpb24uCgoJKiBkbGxzL3gxMWRydi9zY3JvbGwuYywgd2luZG93cy9zY3JvbGwuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIHNob3VsZCBwYXNzIHRoZSBjYWxsZXJzIGNsaWVudC1hcmVhIHJlY3QgYW5kIGNsaXAgcmVjdCB0byB4MTFkcnYKCW90aGVyd2lzZSB3ZSdsbCBmYWlsIHRvIHNjcm9sbCBhbGwgY2hpbGRyZW4uCgoJKiBkbGxzL3dpbm1tL3dpbm1tLmM6IEF2b2lkIGxvY2FsIFdJTkFQSSBmdW5jdGlvbiBwb2ludGVycy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgSW50ZXJuZXRTZXRPcHRpb25FeEEvVy4KCgkqIGRsbHMvdXNlci9wYWludGluZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBsb2dpYyBmb3Igc2V0dGluZyB0aGUgbHBzLT5mRXJhc2UgZmxhZyBpbiBCZWdpblBhaW50LgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgd2luZG93cy93aW5wcm9jLmM6CglBZGRlZCBBPC0+VyBtYXBwaW5ncyBmb3IgV01fSU1FX0NIQVIuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcm90ZWN0IEdsb2JhbExvY2sgZnJvbSBiYWQgcG9pbnRlcnMuCgoJKiBsaWJzL3VuaWNvZGUvd2N0b21iLmM6CglIYW5kbGUgb3ZlcmxhcHBpbmcgYnVmZmVycyBwcm9wZXJseSBpbiB3Y3N0b21ic19zYmNzIChzcG90dGVkIGJ5CglEbWl0cnkgVGltb3Noa292KS4KCgkqIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgZGVsZXRlIHJlZ2lvbiB1bnRpbCBhZnRlciB3ZSdyZSBkb25lIHdpdGggaXQuCgoJKiBvYmplY3RzL2NsaXBwaW5nLmM6IFVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCVJldHVybiB2YWx1ZSBvZiBFeHRTZWxlY3RDbGlwUmduIHNob3VsZCBjb25zaWRlciB2aXNpYmxlIHJlZ2lvbi4KCgkqIGdyYXBoaWNzL21hcHBpbmcuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgU2V0TWFwTW9kZSBzZXQgZGVmYXVsdCB3aW5kb3cgYW5kIHZpZXdwb3J0IGV4dGVudHMgYXMgaW4KCVdpbmRvd3MuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggaGFuZGxpbmcgb2Ygd2NtZCAvYyAiYzpcUHJvZ3JhbSBGaWxlc1xoZWxsby5iYXQiLgoJTWFrZSAvYyBhbmQgL2sgZWZmZWN0aXZlbHkgZXhjbHVzaXZlLCBsaWtlIHRoZSByZWFsIGNtZCBkb2VzLgoJRml4IGhhbmRsaW5nIG9mIC9xOiBpdCdzIGNvbXBhdGlibGUgd2l0aCAvYyBhbmQgL2suCglBZGRlZCBjb21wYXRpYmlsaXR5IHdpdGggL3QgL3ggYW5kIC95LCBqdXN0IGlnbm9yZSB0aGVtLgoKCSogcHJvZ3JhbXMvd2luZXBhdGgvd2luZXBhdGguYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZXNldCB0aGUgcmVzdWx0IGJ1ZmZlciBhZnRlciBlYWNoIGFyZ3VtZW50LgoKCSogc2VydmVyL2ZkLmM6CglJZ25vcmUgbG9ja2luZyBmYWlsdXJlcyBjYXVzZWQgYnkgbWlzc2luZyBORlMgbG9ja2luZyBkYWVtb24uCglIYW5kbGUgRUlOVkFMIHRoZSBzYW1lIHdheSBhcyBFT1ZFUkZMT1cuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSWdub3JlIGhpZ2ggd29yZCBvZiB3UGFyYW0gd2hlbiBoYW5kbGluZyBXTV9DT01NQU5EIGluIHRoZSBNZXNzYWdlQm94Cglwcm9jLgoKCSogd2luZG93cy9pbnB1dC5jOiBEdXNhbiBMYWNrbyA8ZGxhY2tvQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBBTFQgY29udGV4dCBiaXQgZm9yIFdNX0tFWURPV04vVVAuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJV2luZG93cyB0cmVhdHMgZGlhbG9nIGNvbnRyb2wgY2xhc3MgaWRzIDAtNSBzYW1lIHdheSBhcyAweDgwLTB4ODUuCgoJKiBkbGxzL3VzZXIvZGlhbG9nMTYuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBhYm9ydCBkaWFsb2cgY3JlYXRpb24gaWYgRFNfTk9GQUlMQ1JFQVRFIGFsbG93cyB0byBjb250aW51ZS4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBSYXNFbnVtRW50cmllc1cgc3R1Yi4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBXcml0ZUZtdFVzZXJUeXBlU3RnIGFuZCBSZWFkRm10VXNlclR5cGVTdGcuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpbGwgdGhlIGZpbGVkaWFsb2c5NSBjb250cm9scyBiZWZvcmUgc2VuZGluZyBhIENETl9JTklURE9ORQoJbm90aWZpY2F0aW9uLgoKCSogZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW52YWxpZGF0ZSB0aGUgd2luZG93IHdoZW4gdGhlIHJhbmdlIGlzIGNoYW5nZWQuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWJzIGZvciBBY2Nlc3NDaGVja0FuZEF1ZGl0QWxhcm1BL1cuCgoyMDAzLTA1LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOiBSZWxlYXNlIDIwMDMwNTA4LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAzLTA1LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbGlicy91bmljb2RlL3V0ZjguYzoKCUZpeGVkIHJldHVybiB2YWx1ZSBvZiB3aW5lX3V0Zjhfd2NzdG9tYnMgKHNwb3R0ZWQgYnkgSmFuIFNwb3JiZWNrKS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBvbmx5IGVudW1lcmF0ZSAzMiBicHAgQVJHQiB0ZXh0dXJlIGZvcm1hdCBhbmQgcmVtb3ZlIFJHQkEgb25lCgktIGFkZCBzdXBwb3J0IGZvciAzMiBicHAgQVJHQiB0ZXh0dXJlIGZvcm1hdAoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+Cgl3cml0ZWp1bXAoKSBuZWVkcyB0byB0ZWxsIHZhbGdyaW5kIHdoaWNoIHBpZWNlIG9mIGNvZGUgaGFzIGJlZW4KCW1vZGlmaWVkLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCV9vcGVuX29zZmhhbmRsZSBpcyBleHBlY3RlZCB0byB0YWtlIHRoZSBhYnNlbmNlIG9mIGVpdGhlciBfT19URVhUIG9yCglfT19CSU5BUlkgdG8gbWVhbiBfT19CSU5BUlkuCgoJKiBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLAoJICBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gRGlzYWJsZSBzb21lICdjbGFzc2ljJyBkZWJ1ZyB0cmFjZXMgKGF2b2lkIHVzZWxlc3MgZmxvb2Qgb2YgdHJhY2VzCgkgIHdoaWxlIGRlYnVnZ2luZyBnYW1lcykuCgktIEZpeCB0aGUgdGV4dHVyZSBzaXplIGNhcHMgdXNpbmcgR0xfTUFYX1RFWFRVUkVfU0laRS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CgktIEZpeCBzY2FubGluZSBzaXplIGluIE9MRVBpY3R1cmVJbXBsX0xvYWQgZm9yIGpwZWcKCS0gQ29udmVydCBmcm9tIFJHQiB0byBCR1IgYWNjb3JkaW5nIHRvIEJJVE1BUElORk9IRUFERVIKCSAgZG9jdW1lbnRhdGlvbi4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUNvcnJlY3RseSBmaWxsIHRoZSBiYWNrZ3JvdW5kIG9mIGEgY2hlY2tib3ggYnV0dG9uLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS93aW50ZXJubC5oLAoJICBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGNhbGxpbmcgdGhlIFRMUyBjYWxsYmFjayBmdW5jdGlvbnMuCgoJKiB0b29scy93aW5lZHVtcC9wZS5jOiBBZGRlZCBkdW1waW5nIG9mIHRoZSBUTFMgZGlyZWN0b3J5LgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglGaXhlZCB3cm9uZyBmaWxlIG9mZnNldCB1c2VkIHdoZW4gbWFwcGluZyB0aGUgaW1wb3J0IGRpcmVjdG9yeSBmcm9tIGEKCXNoYXJlZCBzZWN0aW9uLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9zaGFkZXIuYywgZGxscy9kM2Q4L3RleHR1cmUuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIE1vdmUgdGV4dHVyZSBsb2FkaW5nIGludG8gUHJlTG9hZCBmb3IgMkQgdGV4dHVyZXMgKG5lZWRzIGRvaW5nIGZvcgoJICB0aGUgb3RoZXJzIGFzIHdlbGwpLCBhbmQgY2FsbCB3aGVuIG5lZWRlZCBhcyB3ZWxsLgoJLSBDaGFuZ2UgRDNERk1UX1I1RzZCNSBoYW5kbGluZyB0byBtYWtlIGJhY2tkcm9wIG9mIE1heCBQYXluZSBhcHBlYXIuCgktIEFkZCBjb2RlIHRvIHJlamVjdCBhdHRlbXB0cyB0byB1c2UgaW52YWxpZCB0ZXh0dXJlIHVuaXRzIChNYXggUGF5bmUKCSAgZGlkIHRoaXMgYSBsb3QpLgoJLSBWYWxpZGF0ZURldmljZSBmaXhtZSBzaWxlbmNlZCBhcyBoYXJtbGVzcyBidXQgb2NjdXJzIGZyZXF1ZW50bHkuCgktIEFkZCB0cmFjZSB3aGljaCBjYW4gYmUgY29tcGlsZWQgaW4gdG8gZGVidWcgdmVydGV4IHNoYWRlcnMsIGFuZAoJICBjb3JyZWN0IGZpeG1lcyBhbmQgZHByaW50ZidzIGludG8gYXBwcm9wcmlhdGUgdHJhY2Ugc3RhdGVtZW50cy4KCS0gRW5zdXJlIHdlIHRyYWNlIHdoYXQgd2UgcmV0dXJuIHdoZW4gcXVlcnlpbmcgdGhlIGRldmljZSBjYXBzLgoJLSBDb3JyZWN0IGJ1ZyB3aXRoIG5lZ2F0aXZlIG51bWJlcnMgaW4gdmVydGV4IHNoYWRlciBjb2RlLgoKCSogaW5jbHVkZS93aW5udC5oOiBQaWVycmUgZCdIZXJiZW1vbnQgPHN0ZWdlZmluQGZyZWUuZnI+CglBZGQgRGFyLCBEc2lzciBhbmQgVHJhcCByZWdpc3RlcnMgZm9yIHRoZSBQb3dlclBDIENPTlRFWFQgc3RydWN0dXJlLgoKCSogZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Rlc3RzL2Vudi5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglBZGRlZCBlbnZpcm9ubWVudCB0ZXN0cy4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZW52LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgYSBidW5jaCBvZiBlbnZpcm9ubWVudCByZWxhdGVkIE5URExMIEFQSXMuCgoyMDAzLTA1LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvcmVzb3VyY2UuYzogQWRkZWQgTk9OQU1FTEVTU1VOSU9OL1NUUlVDVCBkZWZpbmVzLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOiBGaXhlZCB0eXBvIGluIHJldHVybiB2YWx1ZSBvZiB0a2lsbCgpLgoKCSogZGxscy9rZXJuZWwvcmVzb3VyY2UuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9yZXNvdXJjZS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW50ZXJubC5oLAoJICBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCU1vdmVkIHRoZSBFbnVtUmVzb3VyY2UqIGZ1bmN0aW9ucyB0byB0aGUga2VybmVsIGRsbCwgYW5kIGZpeGVkIHRoZWlyCglwcm90b3R5cGVzLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJVXNlIFJ0bEZpbmRNZXNzYWdlIHRvIGxvYWQgbWVzc2FnZSByZXNvdXJjZXMuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmg6CglNaWNoYWVsIFNjaGz8dGVyIDxtaWNoYWVsQGpvaGFsbGEuZGU+CglBZGRlZCB3Z2xHZXRFeHRlbnNpb25zU3RyaW5nQVJCLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgc2Nyb2xsaW5nIHN1cHBvcnQgZm9yIFZHQSB0ZXh0IG1vZGUuCgoyMDAzLTA1LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC92aXJ0dWFsLmM6CglBZGRlZCBjb21tZW50IGFib3V0IHdoeSBjaGFuZ2luZyBBRERSRVNTX1NQQUNFX0xJTUlUIGlzIHdyb25nLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgcmV0cmlldmluZyBwYWdlIGZhdWx0IGFkZHJlc3Mgb24gU29sYXJpcyAoYmFzZWQgb24gYQoJcGF0Y2ggYnkgUm9iZXJ0IEx1bm5vbikuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUluIGFzc2VtYmxlciBjaGVjaywgdHJ5IHRvIHVzZSBnYXMgZmlyc3QgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgUm9iZXJ0CglMdW5ub24pLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBSb2JlcnQgTHVubm9uIDxib2JAeWFycmFiZWUubmV0LmF1PgoJRWxpbWluYXRlIHNlZ2ZhdWx0IGR1ZSB0byBOVUxMIFRoaXMtPnNJY29QYXRoLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJTWVudGlvbiB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gZmlsZSBoZWFkZXIuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1ha2UgaXQgZWFzeSB0byB1c2Ugc29tZXRoaW5nIG90aGVyIHRoYW4gd3JjIHRvIGNvbXBpbGUgcmVzb3VyY2VzLgoKCSogZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYzogVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0BnbXguYXQ+CglUZXN0cyBmb3IgUnRsRHVwbGljYXRlVW5pY29kZVN0cmluZywgUnRsRmluZENoYXJJblVuaWNvZGVTdHJpbmcsCglSdGxJbml0VW5pY29kZVN0cmluZ0V4LgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQGdteC5hdD4KCUltcGxlbWVudCBSdGxEdXBsaWNhdGVVbmljb2RlU3RyaW5nLCBSdGxGaW5kQ2hhckluVW5pY29kZVN0cmluZywKCVJ0bEluaXRVbmljb2RlU3RyaW5nRXguCglEb2N1bWVudGF0aW9uIHVwZGF0ZXMgZm9yIFJ0bEluaXRBbnNpU3RyaW5nLCBSdGxJbml0U3RyaW5nLAoJUnRsSW5pdFVuaWNvZGVTdHJpbmcsIFJ0bEFuc2lTdHJpbmdUb1VuaWNvZGVTdHJpbmcgYW5kCglSdGxPZW1TdHJpbmdUb1VuaWNvZGVTdHJpbmcuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBZGRlZCBpbmNsdWRlIDxlcnJuby5oPi4KCgkqIGNvbnRyb2xzL2VkaXQuYzogQWNoaW0gS2Fpc2VyIDxtYWlsMUBrYWlzZXJzaXRlLmRlPgoJVGFrZSBmb250IG1ldHJpY3MgaW50byBhY2NvdW50IGZvciBFQ19VU0VGT05USU5GTyBtYXJnaW5zLgoKCSogc2VydmVyL3B0cmFjZS5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgcmFjZXMgd2l0aCBleGl0aW5nIHRocmVhZHMgaW4gc3VzcGVuZF9mb3JfcHRyYWNlKCkuCgoJKiBkbGxzL2tlcm5lbC9zeW5jLmM6CglGaXhlZCByZXR1cm4gdmFsdWUgb2YgQ3JlYXRlTmFtZWRQaXBlIChzcG90dGVkIGJ5IE1pa2UgTWNDb3JtYWNrKS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBzdXBwb3J0IGZvciBNdWx0aXBseVRyYW5zZm9ybSAoaGVscHMgbWFrZSB0aGUgU2tpbW1lZE1lc2ggU0RLCglzYW1wbGUgbG9vayBiZXR0ZXIpLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHRoZSBiZWdpbm5pbmdzIG9mIHN1cHBvcnQgZm9yIHRleHR1cmUgY29vcmRpbmF0ZXMuCgoJKiBkbGxzL2RwbmhwYXN0L21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRml4IHJldHVybiBjb2RlIG9mIERQTkhQQVNUX0RsbEdldENsYXNzT2JqZWN0IHN0dWIuCgoJKiBkbGxzL2RtdXNpYy9kbXVzaWMuYywgZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wb3J0LmMsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmg6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJLSBpbXBsZW1lbnRlZCBzb21lIG1vcmUgcG9ydCByZWxhdGVkLWZ1bmN0aW9ucwoJLSBmaXhlZCB3YXJuaW5ncyAocmVwb3J0ZWQgYnkgR2VyYWxkIFBmZWlmZXIpCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVwb3J0IGVycm9ycyB0byBhcHBsaWNhdGlvbnMgd2hlbiBpbGxlZ2FsIGRhdGVzIGFyZSBwYXNzZWQgdG8gc2V0CglzeXN0ZW0gZGF0ZSBjYWxsIChyZXF1aXJlZCBieSBtYW55IGluc3RhbGxhdGlvbiBjaGVja3MpLgoKMjAwMy0wNS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9SdS5yYywgZGxscy9hdmlmaWwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bF9SdS5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfUnUucmMsCgkgIGRsbHMvbXN2aWRlby9tc3JsZTMyL3JzcmMucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1J1LnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9SdS5yYywgcHJvZ3JhbXMvY2xvY2svUnUucmMsCgkgIHByb2dyYW1zL2Nsb2NrL3JzcmMucmMsIHByb2dyYW1zL25vdGVwYWQvUnUucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYywgcHJvZ3JhbXMvcHJvZ21hbi9SdS5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLCBwcm9ncmFtcy9zdGFydC9SdS5yYywKCSAgcHJvZ3JhbXMvc3RhcnQvcnNyYy5yYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfUnUucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5yYywgcHJvZ3JhbXMvd2luZWZpbGUvUnUucmMsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3JzcmMucmMsIHByb2dyYW1zL3dpbmhlbHAvUnUucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvcnNyYy5yYzoKCUlnb3IgU3RlcGluIDxpc0B4dG0ucnU+CglBZGRlZCBhIGxvdCBvZiBSdXNzaWFuIHRyYW5zbGF0aW9ucy4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglTdXBwb3J0IF9ORVRfV01fUElORyBwcm90b2NvbCBzbyB0aGUgV00gY2FuIGRldGVjdCBmcmVlemVzLgoKCSogbGlicy9wb3J0L2ludGVybG9ja2VkLmM6IFBpZXJyZSBkJ0hlcmJlbW9udCA8c3RlZ2VmaW5AZnJlZS5mcj4KCUFkZCByZWdpc3RlciBwcmVzZXJ2YXRpb24gd2hlbiB1c2luZyBsYXdyeCBpbnN0cnVjdGlvbi4KCUZpeCAnOycgZW5kaW5nIHRvICdcbicgZW5kaW5nIGZvciBhIGJldHRlciBjb21wYXRpYmlsaXR5IHdpdGggZGFyd2luLgoKCSogZGxscy9kbXVzaWMvZG11c2ljLmMsIGRsbHMvZG11c2ljL2RtdXNpY19sb2FkZXIuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywgZGxscy9kbXVzaWMvZG11c2ljX3BlcmZvcm1hbmNlLmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJRG11c2ljIGNsYXNzIGZhY3RvcnkgY2FuIG5vdyBjcmVhdGUgZG1sb2FkZXI4IGFuZCBkbXBlcmZvcm1hbmNlOC4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGaXhlZCBub24teDg2IERPU1ZNX1dhaXQgcHJvdG90eXBlLgoKCSogZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGaXhlZCBwb3dlcnBjIGNvbXBpbGUuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJR2l2ZSB0aGUgcmlnaHQgaWRzIHRvIHRoZSBEaXJlY3RTb3VuZENyZWF0ZTggZnVuY3Rpb24gKHRoYW5rcyB0bwoJUm9iZXJ0IFJlaWYpLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWN0dWFsbHkgc2V0IHRoZSBHTCBjb250ZXh0IGJlZm9yZSBkb2luZyBhbnkgR0wgY2FsbHMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aW1lLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgU2V0U3lzdGVtVGltZUFkanVzdG1lbnQgc3R1Yi4KCjIwMDMtMDUtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmM6CglBZGRlZCBkdW1teSByZWFkX2VsZl9pbmZvIGZvciB0aGUgbm9uLUVMRiBjYXNlIChyZXBvcnRlZCBieSBTdGV2ZW4KCUVkd2FyZHMpLgoKCSogZGxscy91c2VyL2tleWJvYXJkLnNwZWM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJTW92ZSBhbGwgdGVzdHMgdG8gb3V0c2lkZSB0aGUgbG9vcCB3aGVuIHNldHRpbmcgdm9sdW1lLgoJQWRkIHRyYWNlcyB0byBmdW5jdGlvbnMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBtaXNjLiB0cmFjaW5nIGZpeGVzCgktIGhhbmRsZSBJSURfSURpcmVjdFNvdW5kKDgpIGFzIHRoZSBkZWZhdWx0IHNvdW5kIGRyaXZlcgoKCSogZGxscy9kbXVzaWMvTWFrZWZpbGUuaW4sIGRsbHMvZG11c2ljL2RtdXNpYy5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLCB3aW5lZGVmYXVsdC5yZWc6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJSW1wbGVtZW50ZWQgRGlyZWN0TXVzaWM6RW51bVBvcnQgYW5kIERpcmVjdE11c2ljOkdldERlZmF1bHRQb3J0LgoKCSogc2VydmVyL3NlbWFwaG9yZS5jOiBSZW1vdmVkIG5vIGxvbmdlciBjb3JyZWN0IGFzc2VydGlvbi4KCgkqIG1pc2MvcmVnaXN0cnkuYzogUmVtb3ZlZCB1c2VsZXNzIGNoZWNrIGZvciByZWdpc3RyeSBmaWxlIHZlcnNpb24uCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9taXhlci5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmM6CglSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJUmV2ZXJzZWQgcmVsYXRpb25zaGlwIGJldHdlZW4gYnVmZmVycyBhbmQgbm90aWZpZXMuCglGaXhlZCBub3RpZnkgcmV1c2UgYnVnLgoJTWlub3IgZG9jdW1lbnRhdGlvbiBhbmQgZXJyb3IgbWVzc2FnZSBjbGVhbnVwLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBkcml2ZXIgcHJvcGVydHkgc2V0IGltcGxlbWVudGF0aW9uLgoJRml4ZWQgbm90aWZ5IHJlbGVhc2UgYnVnLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCVdoZW4gaXRlbXMgYXJlIGluc2VydGVkIGluIGEgcGFydGlhbGx5IHBvcHVsYXRlZCB0cmVldmlldywgdGhlIGZpcnN0Cgl2aXNpYmxlIGl0ZW0gd2FzIG5vdCBjb3JyZWN0bHkgdXBkYXRlZC4KCVRoZSBmaXJzdCB2aXNpYmxlIGl0ZW0gd2FzIHNvbWV0aW1lcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgbG9jYXRpb24gb2YKCW90aGVyIGl0ZW1zIHdoZW4gaXQgaGFkIGJlZW4gZnJlZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJQ2hlY2sgdGhlIG1hc2sgZmxhZ3MgaW4gdGhlIGl0ZW0gc3RydWN0dXJlIHRvIGRldGVybWluZSBob3cgbXVjaAoJbWVtb3J5IHRvIHJlYWQvd3JpdGUuCgoJKiBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MTYuYywgZGxscy93aW5lZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW1vdmUgb2Jzb2xldGUgY29kZSBmcm9tIERPU1ZNX1dhaXQuCglQcmVwYXJlIERPU1ZNX1dhaXQgZm9yIGhhbmRsaW5nIG5lc3RlZCBpbnRlcnJ1cHRzIGluIGJvdGggcmVhbCBhbmQKCXByb3RlY3RlZCBtb2RlLgoJUHJvdmlkZSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3Iga2V5Ym9hcmQgcmVsYXRlZCBkZWFkbG9jay4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZXBvcnQgY29ycmVjdCBJUlEgYmFzZXMgdG8gRFBNSSBhcHBsaWNhdGlvbnMuCglNYWtlIGludDMxIHByaW50IG1vcmUgdHJhY2luZyBpbmZvcm1hdGlvbi4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgcHJvZ3JhbXMvd2luZXZkbS93aW5ldmRtLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglGaXggYXJndW1lbnQgcGFzc2luZyB0byBET1MgcHJvZ3JhbSBmcm9tIHdpbmV2ZG0uCglBZGQgc3VwcG9ydCBmb3IgaW52b2tpbmcgRE9TIHByb2dyYW1zIHdpdGggbG9uZyBjb21tYW5kIGxpbmVzLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBzdGFsZSBsaW5rcyBmcm9tIHRoZSBGQVEuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIG1pc3NpbmcgV2luOTggdXNlcjMyLmRsbCBmdW5jdGlvbiBleHBvcnRzIGVudHJpZXMuCgoJKiBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gaW1wcm92ZSBpbnRybyB0ZXh0CgktIGRlc2NyaWJlIGFsdGVybmF0aXZlcyB0byBXaW5lCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgc29tZSBvYnNvbGV0ZSBhbmQvb3IgcmVkdW5kYW50IGluZm8uCgoyMDAzLTA1LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvd2luZS93cHAuaCwKCSAgbGlicy9NYWtlZmlsZS5pbiwgbGlicy93cHAvLmN2c2lnbm9yZSwgbGlicy93cHAvTWFrZWZpbGUuaW4sCgkgIGxpYnMvd3BwL3BwbC5sLCBsaWJzL3dwcC9wcHkueSwgbGlicy93cHAvcHJlcHJvYy5jLCBsaWJzL3dwcC93cHAuYywKCSAgbGlicy93cHAvd3BwX3ByaXZhdGUuaCwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpZGwvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvd2lkbC5jLCB0b29scy93aW5ld3JhcHBlciwKCSAgdG9vbHMvd3JjL01ha2VmaWxlLmluLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuYzoKCU1vdmVkIHRoZSB3cHAgbGlicmFyeSBmcm9tIHRvb2xzLyB0byBsaWJzLy4KCUNyZWF0ZSBzeW1saW5rcyB0byB0aGUgdmFyaW91cyBsaWJyYXJpZXMgaW4gdGhlIGxpYnMgZGlyZWN0b3J5LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGxpYnMvLmN2c2lnbm9yZSwgbGlicy9NYWtlbGliLnJ1bGVzLmluLAoJICBsaWJzL3VuaWNvZGUvTWFrZWZpbGUuaW4sIGxpYnMvd2luZS9NYWtlZmlsZS5pbjoKCU1vdmVkIHJ1bGVzIGZvciBidWlsZGluZyBzaGFyZWQgbGlicmFyaWVzIGludG8gYSBnbG9iYWwgTWFrZWxpYi5ydWxlcwoJZmlsZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VjLmMsIGluY2x1ZGUvd2ludGVybmwuaDoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CgktIEltcGxlbWVudGVkIFJ0bEFkZEFjY2Vzc0FsbG93ZWRBY2UsIFJ0bEFkZEFjY2Vzc0RlbmllZEFjZSwKCSAgUnRsQWRkQWNlLCBSdGxWYWxpZEFjbC4KCS0gQWRkZWQgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zIGluIGFkdmFwaTMyLgoJLSBHcm91cGVkIHRoZSBBQ0wgZnVuY3Rpb25zIGluIGFkdmFwaTMyLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBcHBsaWNhdGlvbiBzcGVjaWZpYyBzZXR0aW5ncyBhcmUgYWxzbyBzdXBwb3J0ZWQgZm9yIGRzb3VuZCBhbmQKCXZlcnNpb24gc2VjdGlvbnMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBJZ29yIFN0ZXBpbiA8aXNAeHRtLnJ1PgoJQ2hhbmdlZCBmb250IGNoYXJzZXQgZnJvbSBBTlNJIHRvIERFRkFVTFRfQ0hBUlNFVC4KCjIwMDMtMDQtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglDaGFuZ2UgcmV0dXJuIGNvZGUgY29tcGFyaXNvbiBpbiBBVkkgY29udHJvbCAoZnJvbSBwYXRjaCBieQoJc3RhbmxleWc3NkB5YWhvby5jb20pLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmk6CglNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCUFkZCBkZWZhdWx0IGNvZGVjIGVudHJ5IChmcm9tIHBhdGNoIGJ5IHN0YW5sZXlnNzZAeWFob28uY29tKS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCS0gRml4IHNvbWUgaW5kZW50YXRpb24gcHJvYmxlbXMuCgktIEhhbmRsZSBjb3JyZWN0bHkgdGhlIGFsaWduZW1lbnQgb2YgdGhlIGNoZWNrYm94ZXMgaWYgdGhlCgkgIEJTX1RPUC9CU19CT1RUT00gZmxhZ3MgYXJlIHNldC4KCgkqIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUF2b2lkIGNhbGxpbmcgV2luMzIgcmVzb3VyY2UgZnVuY3Rpb25zIG9uIDE2LWJpdCBtb2R1bGVzLgoKCSogbWlzY2VtdS9NYWtlZmlsZS5pbjoKCVdlIHN0aWxsIG5lZWQgdG8gbGluayBhZ2FpbnN0IG50ZGxsIHVudGlsIHRoZSBwdGhyZWFkIHN0dWZmIGlzIGZpeGVkCglwcm9wZXJseS4KCgkqIGRsbHMvbHpleHBhbmQvbHpleHBhbmQxNi5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywKCSAgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGluY2x1ZGUvbHpleHBhbmQuaDoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCUZpeCBmb3IgYnVpbGRpbmcgbHpleHBhbmQgd2l0aCBNaW5ndyBvciBNU19WQysrIGluY2x1ZGVzCgoJKiBsaWJzL3dpbmUvd2luZS5kZWY6IEFkZGVkIHdpbmVfaW5pdC4KCgkqIGRsbHMvbnRkbGwvcmVzb3VyY2UuYzoKCUZpeGVkIHR5cG8gaW4gbGFzdCBtaW51dGUgY2hhbmdlIChzcG90dGVkIGJ5IEdlcmFsZCBQZmVpZmVyKS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9yZXNvdXJjZS5jLAoJICBkbGxzL2tlcm5lbC9yZXNvdXJjZTE2LmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsCgkgIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9jb252ZXJ0LmMsIGxvYWRlci9uZS9tb2R1bGUuYywKCSAgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYzoKCU1vdmVkIG1vc3Qgb2YgdGhlIGtlcm5lbCByZXNvdXJjZSBBUElzIHRvIGRsbHMva2VybmVsLgoKCSogZGxscy91c2VyL3BhaW50aW5nLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglQcm90ZWN0IEJlZ2luUGFpbnQgYW5kIEVuZFBhaW50IGZyb20gbHBzIGJlaW5nIE5VTEwuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCBib3VuZGluZyByZWN0YW5nbGUgY29tcHV0YXRpb24gZm9yIGFuIG93bmVyZHJhdyB0YWIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglHZW5lcmF0ZSBjdXN0b20gZHJhdyBub3RpZmljYXRpb25zIGZvciBvd25lcmRyYXcgbGlzdHZpZXdzIChiYXNlZCBvbiBhCglwYXRjaCBieSBNYXhpbWUgQmVsbGVuZ+kpLgoJUmVvcmdhbml6ZSB0aGUgY3VzdG9tIGRyYXcgY29kZSBmb3IgYmV0dGVyIHJldXNlLgoKCSogZGxscy9uZXRhcGkzMi90ZXN0cy93a3N0YS5jLCBkbGxzL25ldGFwaTMyL3drc3RhLmM6CglKdWFuIExhbmcgPGp1YW5fbGFuZ0B5YWhvby5jb20+CglCZXR0ZXIgQVBJIGNvbXBsaWFuY2UgYW5kIHRlc3QgY2FzZSBmb3IgTmV0V2tzdGFUcmFuc3BvcnRFbnVtLgoKMjAwMy0wNC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvcmVzb3VyY2UuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSW1wbGVtZW50ZWQgbnRkbGwgcmVzb3VyY2UgZnVuY3Rpb25zLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBhIHByb2JsZW0gd2hlcmUgT1NTIHRyaWdnZXIgc3VwcG9ydCBpcyBpbmNvbnNpc3RlbnQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvZ2VuZXJpYy5jLAoJICBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUdldCByaWQgb2YgdGhlIENPTU1ETEdfaEluc3RhbmNlIHZhcmlhYmxlcy4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kc2NvbmYuaCwgbGlicy91dWlkL2R4Z3VpZC5jOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHBhcnRpYWwgcHJvcGVydHkgc2V0IHN1cHBvcnQgd2hpY2ggaXMgdXNlZCBieSBkeGRpYWcuZXhlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBkcml2ZXIgbm90aWZ5IGltcGxlbWVudGF0aW9uLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVNtYWxsIGZpeCBpbiBJRGlyZWN0SW5wdXREZXZpY2UySW1wbF9RdWVyeUludGVyZmFjZS4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOiBNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCS0gRml4IHNvbWUgaW5kZW50YXRpb24uCgktIEZpeCB0aGUgbG9hZGluZyBvZiBpY29uIHJlc291cmNlcy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaDogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVzZXJ2ZSBzcGFjZSBmb3IgMTYgc3RyZWFtcyBpbiB0aGUgc3RhdGVibG9jay4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUVuYWJsZSBjcmVhdGlvbiBvZiBEaXJlY3RJbnB1dCBvYmplY3RzIHRyb3VnaCBDb0NyZWF0ZUluc3RhbmNlLgoKMjAwMy0wNC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzogRml4ZWQgbm9uLU1aIGNhc2UgYnJva2VuIGJ5IHByZXZpb3VzIHBhdGNoLgoKCSogcHJvZ3JhbXMvTWFrZWZpbGUuaW46IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJSW5zdGFsbCB3aW5ldmRtLgoKCSogb2JqZWN0cy9mb250LmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTW92ZWQgKHN0dWIpIGltcGxlbWVudGF0aW9uIG9mIEdldEtlcm5pbmdQYWlycyBmcm9tIGFzY2lpIHRvIHVuaWNvZGUuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbmRlbnRhdGlvbiBmaXhlcy4KCgkqIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU29tZSBVcmxDYWNoZSBzdHVicy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgR2V0UHJpbnRQcm9jZXNzb3JEaXJlY3RvcnlBIHN0dWIuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBTdGVwaGFuIEJFVVpFIDxmYmlnZ3VuQGhvdG1haWwuY29tPgoJSW1wbGVtZW50ZWQgbWVzc2FnZSBUQ01fU0VUUEFERElORyB3aXRoIHRoZSBEaW1pdHJpJ3MgYWR2aWNlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywKCSAgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBsaWJzL3dpbmUvbG9hZGVyLmMsCgkgIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgbWlzY2VtdS8uY3ZzaWdub3JlLAoJICBtaXNjZW11L01ha2VmaWxlLmluLCBtaXNjZW11L21haW4uYywgbXNkb3MvZHBtaS5jLAoJICBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXZkbS8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5ldmRtL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldmRtL3dpbmV2ZG0uYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1vdmVkIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHN0YXJ0aW5nIFdpbjE2IGFuZCBET1MgcHJvZ3JhbXMgZnJvbSB0aGUKCWNvbW1vbiBwcm9jZXNzIHN0YXJ0dXAgaW50byBhIHNlcGFyYXRlIHdpbmV2ZG0gYXBwbGljYXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3Vzcm1hcnNoYWwuYzogQWRkZWQgTk9OQU1FTEVTU1VOSU9OL1NUUlVDVCBkZWZpbmVzLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOgoJU2lsZW50bHkgaWdub3JlICdzbycgbG9hZG9yZGVyIGluIHRoZSBjb25maWcgZmlsZSBpbnN0ZWFkIG9mCglkaXNwbGF5aW5nIGFuIGVycm9yLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJTWFrZSBzdXJlIHRoYXQgc25kX3BjbV9vcGVuIHJldHVybmVkIGEgdmFsaWQgaGFuZGxlIGJlZm9yZSB1c2luZyBpdC4KCgkqIGRsbHMvd2lubW0vd2luZWFydHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW5hcy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmM6CglKZXJyeSBKaSA8SmVycnlKekBob3RtYWlsLmNvbT4KCVRoZSBtaXNzaW5nIHBhcnQgb2YgbXVsdGlwbGUgZGV2aWNlIHN1cHBvcnQgZm9yIHdpbmVhcnRzLCB3aW5lYXVkaW9pbywKCXdpbmVqYWNrIGFuZCB3aW5lbmFzLgoKCSogZGxscy9kbXVzaWMvTWFrZWZpbGUuaW4sIGRsbHMvZG11c2ljL2RtdXNpYy5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfbWFpbi5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcGVyZm9ybWFuY2UuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3ByaXZhdGUuaDoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglTb21lIGRtdXNpYyBmdW5jdGlvbnMgaW1wbGVtZW50YXRpb24uCgoJKiBwcm9ncmFtcy93aW5lY2ZnL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYzoKCU1hdHRoZXcgRGF2aXNvbiA8bS5kYXZpc29uQHZpcmdpbi5uZXQ+CglBZGRlZCBzb21lIHJlZ2lzdHJ5LWxvYWRpbmcgY29kZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogQnJhZCBDYW1wYmVsbCA8YnJhZEBzZW1lLmNvbS5hdT4KCUVNX1JFUExBQ0VTVFIgd2FzIG5vdCByZXNwZWN0aW5nIGJ1ZmZlcl9saW1pdC4KCgkqIHdpbjMyL2V4Y2VwdC5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVJlbW92ZWQgVy0+QSBjYWxscyBmcm9tIEZhdGFsQXBwRXhpdFcuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCB0aGUgY29tcHV0YXRpb24gb2YgdGhlIHRyYWNrYmFyJ3Mgc2l6ZS4KCjIwMDMtMDQtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcHRyYWNlLmM6CglQcm9wZXJseSBoYW5kbGUgdGhlIHdhaXQ0IHN5c2NhbGwgZmFpbHVyZSBvbiBrZXJuZWxzIHRoYXQgZG9uJ3QKCXN1cHBvcnQgdGhlIF9fV0FMTCBmbGFnLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOgoJQWRkZWQgYSBmZXcgc3R1YnMgbmVlZGVkIGJ5IHRoZSBnZW5lcmF0ZWQgb2FpZGxfcC5jLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vYWlkbF9wLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi91c3JtYXJzaGFsLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVByZWxpbWluYXJ5IGltcGxlbWVudGF0aW9uIG9mIHByb3BlciBJRGlzcGF0Y2ggbWFyc2hhbGxpbmcuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1hbnkgdHlwbyBmaXhlcyBhbmQgY2FzZSBmaXhlcy4KCVJlcGhyYXNlZCB0aGluZ3MgaGVyZSBhbmQgdGhlcmUuCgoJKiBkbGxzL3VzZXIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdGVzdHMvbGlzdGJveC5jOgoJRmVyZW5jIFdhZ25lciA8d2ZlcmlAdGJhLmVsdGUuaHU+CglBZGRlZCBsaXN0Ym94IHRlc3QuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGJ1ZyBjYXVzZWQgYnkgT1NTIGluY29uc2lzdGVudCB0cmlnZ2VyIG9wZXJhdGlvbiBvbiBkaWZmZXJlbnQKCWhhcmR3YXJlLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglSZW1vdmUgdGhlIHNlbmRpbmcgb2YgTk1fVE9PTFRJUFNDUkVBVEVEIHdoaWNoIGlzIG5vbiBleGlzdGVudCB1bmRlcgoJV2luZG93cyBkdXJpbmcgdGhlIGNyZWF0aW9uIG9mIHRoZSB0cmFja2Jhci4KCgkqIHdpbmVkZWZhdWx0LnJlZzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUFkZGVkIGRtdXNpYyByZWdpc3RyeSBlbnRyaWVzLgoKCSogZGxscy9rZXJuZWwvbmxzL25sZC5ubHM6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRHV0Y2ggbG9jYWxpc2F0aW9uIG9mIGxhbmd1YWdlIGdyb3VwIG5hbWVzLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggc29tZSB0eXBvcyBhbmQgYSBtZW1vcnkgbGVhayBpbiBTSEZpbGVPcGVyYXRpb25BLgoKMjAwMy0wNC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy94MTFkcnYveDExZHJ2LmgsIGluY2x1ZGUveDExZHJ2Lmg6CglNb3ZlZCB4MTFkcnYuaCB0byBkbGxzL3gxMWRydi4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS93aW50ZXJubC5oOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNb3ZlZCBrZXJuZWwzMi5GbHVzaEZpbGVCdWZmZXJzIHRvIG50ZGxsLk50Rmx1c2hCdWZmZXJzRmlsZS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglEb24ndCBjaGFuZ2UgdG8gdHR5ZHJ2IHRvIGluc3RhbGwgcmVnaXN0cnksIHJlZ2VkaXQgZG9lc24ndCB1c2UgWC4KCU1ha2Ugc3VyZSB0aGUgY3VycmVudCBkaXIgaXMgbWFwcGVkIGluIERPUy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveHZpZG1vZGUuYywgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3VzZXIuYzoKCUFsZXggUGFzYWR5biA8YWpwQG1haWwudXRleGFzLmVkdT4KCUltcGxlbWVudGVkIEVudW1EaXNwbGF5U2V0dGluZ3MqIGFuZCBDaGFuZ2VEaXNwbGF5U2V0dGluZ3MqLgoKMjAwMy0wNC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgbWlzY2VtdS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluOgoJUmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIHVzZXMgb2YgTERQQVRILgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJT25seSByZWFwcGx5IHRoZSB3b3JsZCwgdmlldyBvciBwcm9qZWN0aW9uIHRyYW5zZm9ybSBjaGFuZ2VzIGlmIHdlCglyZWFsbHkgaGF2ZSB0by4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1JUlJPUl9BUkIgc3VwcG9ydCBpcyBub3QgZGVwZW5kZW50IG9uIE9wZW5HTCAxLjMgYXMgSSBvcmlnaW5hbGx5CglpZmRlZidlZC4gSXQgaXMgYXBwYXJlbnRseSBpbnRyb2R1Y2VkIGZ1bGx5IGluIDEuNCwgb3IgZGVwZW5kZW50IG9uCglhbm90aGVyIGlmZGVmLCBHTF9BUkJfdGV4dHVyZV9taXJyb3JlZF9yZXBlYXQuCgoJKiB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jOgoJUmVzb3VyY2UgbmFtZXMgZG9uJ3QgbmVlZCBhIGNhc2Utc2Vuc2l0aXZlIGNvbXBhcmlzb247IHRoaXMgYXZvaWRzCglkZXBlbmRpbmcgb24gbGlid2luZV91bmljb2RlLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglEYW4gV29sZiA8ZGp3b2xmQHJlYWxpdHl3YXZlLmNvbT4KCUltcGxlbWVudGVkIGEgc3R1YiBmb3IgRGV0ZWN0QXV0b1Byb3h5VXJsLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvZG9zY29uZi5jLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9pbnQyMS5jLAoJICBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9tc2Rvcy5oLCBtc2Rvcy9kb3Njb25mLmMsIG1zZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlZCBkb3Njb25mLmMgdG8gd2luZWRvcy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCURvbid0IHJlYXBwbHkgYWxsIHRoZSB0ZXh0dXJlIHN0YXRlcyBpZiB0aGUgdGV4dHVyZSB3ZSBhcmUgcmVwbGFjaW5nCglpcyB0aGUgc2FtZSBhcyB0aGUgdGV4dHVyZSB0aGVyZSBhbHJlYWR5IGFuZCB0aGUgdGV4dHVyZSBpcyBub3QKCSdkaXJ0eScuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtldGVzdC5ydWxlcy5pbjoKCVN1cHBvcnQgcmVzb3VyY2VzIGluIGNyb3NzLWNvbXBpbGVkIHRlc3RzLgoKCSogZGxscy9rZXJuZWwvbmxzL3B0Yi5ubHMsIGRsbHMva2VybmVsL25scy9wdGcubmxzOgoJTWFyY2VsbyBEdWFydGUgPHdpbmUtZGV2ZWxAYm9sLmNvbS5icj4KCUxvY2FsaXphdGlvbiBvZiB0aGUgbmV3IGxhbmd1YWdlIGdyb3VwIHN0cmluZ3MuCgoJKiBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAaW50ZWxsaXdhcmUuY2E+CglSZW1vdmUgcmVmZXJlbmNlcyB0byBvYnNvbGV0ZSBmaWxlcy4KCgkqIGRsbHMvZDNkOC9pbmRleGJ1ZmZlci5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJU2lsZW5jZSBpbmRleCBidWZmZXIgbG9jayArIG9mZnNldCBmaXhtZSB0byBhIHRyYWNlIGJlY2F1c2UgdGhlCgliZWhhdmlvdXIgdW5kZXIgdGhhdCBzY2VuYXJpbyB3b3Jrcy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglET1QzIGlzbid0IHRoZXJlIG9uIGVhcmxpZXIgb3BlbmdsIHZlcnNpb25zLgoKMjAwMy0wNC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJQ2hlY2sgZm9yIHN0cnVjdCBvcHRpb24gaW5kZXBlbmRlbnRseSBvZiB0aGUgZ2V0b3B0X2xvbmcgY2hlY2suCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6CglTZXQgU0FfTk9DTERXQUlUIGluIHRoZSBTSUdDSExEIHNpZ2FjdGlvbiB0byBhdm9pZCB6b21iaWVzLgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVdoZW4gYSBnYW1lIHJlcXVlc3RzIGZ1bGxzY3JlZW4sIG1ha2UgaXRzIHdpbmRvdyB0aGUgZGltZW5zaW9ucwoJcmVxdWVzdGVkLiBJZGVhbGx5IHRoaXMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IG1ha2luZyB0aGUgc2NyZWVuIHRoYXQKCXJlc29sdXRpb24sIGJ1dCB0aGlzIHN1ZmZpY2VzIGZvciBub3cuCgoJKiBtaXNjL3ZlcnNpb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUV4cGxpY2l0bHkgY2FsbCBWRVJTSU9OX0luaXQgd2l0aCB0aGUgbWFpbiBleGUgZmlsZSBuYW1lLCBzbyB0aGF0CglhcHBsaWNhdGlvbiBzZXR0aW5ncyB3b3JrIGZvciBXaW4xNiBhbmQgRE9TIGFwcHMgdG9vLgoKCSogZG9jdW1lbnRhdGlvbi9kYjJodG1sLXdpbmVocSwgZG9jdW1lbnRhdGlvbi9tYWtlX3dpbmVocToKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAaW50ZWxsaXdhcmUuY2E+CglVc2UgdGhlIHN0YW5kYXJkIGRiMmh0bWwgaW5zdGVhZCBvZiBvdXIgZGIyaHRtbC13aW5laHEgc2NyaXB0LgoKCSogZGxscy9kM2Q4L2RpcmVjdHguYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVdpbmRvd3MgbmV2ZXIgcmVwb3J0cyAyNCBiaXQgY29sb3VycywgYW5kIHNvbWUgZ2FtZXMgZmFpbCB0byB3b3JrCgl1bmxlc3MgaW4gc3BlY2lmaWMgbW9kZXMuIFJlcG9ydCAxNmJpdCBjb2xvdXIgZm9yIDI0Yml0IG1vZGVzLgoKMjAwMy0wNC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGFkZGVkIHN1cHBvcnQgZm9yIG11bHRpLXRocmVhZCBpbiBHREIgcmVtb3RlIHJlYWQvd3JpdGUgcmVnaXN0ZXIocykKCSAgY29tbWFuZHMKCS0gYnkgZGVmYXVsdCwgaW50ZXJuYWwgZXJyb3JzIGFyZSBub3cgdmVyYm9zZQoKCSogY29udHJvbHMvZGVza3RvcC5jLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy94MTFkcnYvZGVza3RvcC5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYzoKCURvbid0IGJvdGhlciBzZW5kaW5nIFdNX05DQ1JFQVRFIHRvIHRoZSBkZXNrdG9wIHdpbmRvdywgdGhpcyBkb2Vzbid0Cgl3b3JrIGFueXdheSAoc3BvdHRlZCBieSBVd2UgQm9ubmVzKS4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDb3JyZWN0IGRldmljZSBjYXBhYmlsaXRlcyBpbmNsdWRpbmcgc3VwcG9ydCBpbiBwcmV2aW91cyBwYXRjaCwgYXMKCXdlbGwgYXMgbWFraW5nIHRoZSB0ZXh0dXJlIG9wZXJhdGlvbnMgY2FwYWJpbGl0aWVzIG1vcmUgYWNjdXJhdGUuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglBZGQgRG90UHJvZHVjdDMgc3VwcG9ydCBpZiBzdXBwb3J0ZWQgYnkgb3BlbmdsLgoKCSogZGxscy9rZXJuZWwvbG9jYWxlLmMsIGRsbHMva2VybmVsL2xvY2FsZV9yYy5yYywKCSAgZGxscy9rZXJuZWwvbmxzLyoubmxzLCBpbmNsdWRlL3dpbm5scy5oOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglBZGRlZCByZXNvdXJjZSBzdHJpbmdzIGZvciBsYW5ndWFnZSBncm91cHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGluY2x1ZGUvc2hlbGxhcGkuaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJUmVpbXBsZW1lbnQgU0hGaWxlT3BlcmF0aW9uIGluIFVuaWNvZGUsIGJhc2VkIG9uIHRoZSB3b3JrIG9mIERpZXRyaWNoCglUZWlja25lci4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU1ha2UgY29kZXNhbXBsZXIgdGV4dHVyZSBhZGRyZXNzaW5nIG1vZGUgc2FtcGxlIHdvcmsgYmV0dGVyLgoJQWRkIG1pcnJvcnN1cHBvcnQgKGlmIG9wZW5nbCAxLjMpIGFuZCBtYWtlIGNsYW1wIGFuZCBib3JkZXIgYXBwZWFyCgltb3JlIHNpbWlsYXIgdG8gV2luZG93cy4KCgkqIGluY2x1ZGUvcnBjLmg6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRHVtbXkgUlBDIGV4Y2VwdGlvbiBtYWNyb3MuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5oLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIHNpbXBsZSBjYWNoaW5nIG9mIGNsaWVudCBjb25uZWN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLCBkb2N1bWVudGF0aW9uL2J1aWxkLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY29tcGlsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jb25zb2xlcy5zZ21sLCBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY3ZzLnNnbWwsIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9kbGxzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2kxOG4uc2dtbCwgZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9tYWtlX3dpbmVocSwgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vb2xlLnNnbWwsIGRvY3VtZW50YXRpb24vb3BlbmdsLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sLCBkb2N1bWVudGF0aW9uL3BvcnRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vdG9vbHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1tZmMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBrZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItcG9ydGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmVsaWItdG9vbGtpdC5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBpbnRlbGxpd2FyZS5jYT4KCVJlbW92ZSB0aGUgZ2VuZXJhdGlvbiBvZiBhbGwgZG9jdW1lbnRhdGlvbiBpbiBvbmUgZG9jdW1lbnQuCgoJKiBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgYSByYWNlIGNvbmRpdGlvbiBvbiBSUEMgd29ya2VyIHRocmVhZCBjcmVhdGlvbiwgYW5kIGEgdHlwby4KCgkqIGRsbHMvcnBjcnQ0L2NzdHViLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgbWlzc2luZyBBZGRSZWYuCgoJKiBmaWxlcy9kcml2ZS5jOiBNaWNoYWwgSmFudXN6IE1pcm9zbGF3IDxNLk1pcm9zbGF3QGVsa2EucHcuZWR1LnBsPgoJRml4ZWQgdHlwbyBpbiBjb21tZW50LgoKCSogaW5jbHVkZS9tc3ZjcnQvc2VhcmNoLmg6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVRlcm1pbmF0ZSB0aGUgbGZpbmQgaW5saW5lIGZ1bmN0aW9uLgoKCSogbWlzYy92ZXJzaW9uLmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNoYW5nZSB0aGUgdmVyc2lvbiBvZiB3aW4yayB0byBTUDMuCglDaGFuZ2UgdGhlIHZlcnNpb24gb2YgWFAgdG8gU1AxLgoJTW9kaWZ5IHZhbHVlcyBvZiBYUCBhY2NvcmRpbmcgdG8gYSBwb3N0IGJ5IFBoaWxpcHAgV29sbGVybWFubi4KCgkqIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIC1mbyBhcyBhIHN5bm9ueW0gZm9yIC1vLCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHJjLgoJTGluZSB1cCBoZWxwIG1lc3NhZ2UsIGNsZWFudXAgc29tZSBlcnJvciBtZXNzYWdlcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBNaWNoYWwgSmFudXN6IE1pcm9zbGF3IDxNLk1pcm9zbGF3QGVsa2EucHcuZWR1LnBsPgoJT24gTGludXg6IGF2b2lkIGJsb2NraW5nIGluIERPU0ZTX09wZW5EaXJfVkZBVCBpZiBzcGVjaWZpZWQgcGF0aCBpcwoJbm90IGEgZGlyZWN0b3J5LgoKMjAwMy0wNC0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBZZXQgYW5vdGhlciBhdHRlbXB0IGF0IGZpeGluZyB0aGUgaHRvbmwgZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9tc3ZjcnQvbWFsbG9jLmg6CglGaXhlZCBhbGxvY2EgaGFuZGxpbmcgdGhlIHdheSBtaW5ndyBkb2VzIGl0IChyZXBvcnRlZCBieSBWaW5jZW50CglC6XJvbikuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaDoKCUF2b2lkIGxvY2FsIFdJTkFQSSBmdW5jdGlvbiBwb2ludGVycyBpbiBfaW52b2tlLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbXBsZW1lbnRlZCBJTEdldERpc3BsYXlOYW1lRXhBIGFuZCBJTEdldERpc3BsYXlOYW1lRXhXIGFuZCBjYWxsIHRoZW0KCWZyb20gSUxHZXREaXNwbGF5TmFtZUFXIGFuZCBJTEdldERpc3BsYXlOYW1lRXhBVy4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSGFuZGxlIGNyZWF0aW9uIG9mIGEgZGVwdGgvc3RlbmNpbCBidWZmZXIgd2hlbiBjcmVhdGluZyBhIGRldmljZS4KCUltcGxlbWVudCBJRGlyZWN0M0Q4RGV2aWNlSW1wbF9HZXREZXB0aFN0ZW5jaWxCdWZmZXIuCgoJKiBkbGxzL21zdmNydC9tYmNzLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgltYnRvd2MgcmV0dXJucyAtMSBpZiB3ZSBjYW4ndCBmaW5kIGEgdmFsaWQgbXVsdGlieXRlIGNoYXIgaW4gdGhlIG5vbgoJTlVMTCBzb3VyY2Ugc3RyaW5nLgoKCSogZGxscy9rZXJuZWwvdGltZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4ZXMgZm9yIFN5c3RlbVRpbWVUb1R6U3BlY2lmaWNMb2NhbFRpbWUoKSBhbmQKCVR6U3BlY2lmaWNMb2NhbFRpbWVUb1N5c3RlbVRpbWUoKS4KCgkqIHNlcnZlci9mZC5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jOgoJQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJRml4IGZvciBjbGllbnQgYWNjZXNzaW5nIGEgbmFtZWQgcGlwZSBhZnRlciB0aGUgc2VydmVyIGNsb3NlcyBpdC4KCgkqIGZpbGVzL2RyaXZlLmM6IE1pY2hhbCBKYW51c3ogTWlyb3NsYXcgPE0uTWlyb3NsYXdAZWxrYS5wdy5lZHUucGw+CglSZWZ1c2UgdG8gcmVhZCBub24tYmxvY2sgZGV2aWNlIHNldCBpbiBjb25maWcuCglBdm9pZCBibG9ja2luZyBvbiBvcGVuIGlmIHVzZXIgc2V0cyBkZXZpY2UgdG8gdW5jb25uZWN0ZWQgcGlwZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZmlsZXMvZG9zX2ZzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaW5kRmlyc3RGaWxlIG9uIHJvb3QgZGlyZWN0b3J5IHNob3VsZCBmYWlsLgoKMjAwMy0wNC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9wdHJhY2UuYzoKCUZhbGwgYmFjayB0byBraWxsKCkgaWYgdGhlIGtlcm5lbCBkb2Vzbid0IHN1cHBvcnQgdGtpbGwoKS4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9wYXRoLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglJbXBsZW1lbnRlZCBSdGxJc05hbWVMZWdhbERPUzhEb3QzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEVyaWMgUG91ZWNoKS4KCUltcGxlbWVudGVkIFJ0bFVwY2FzZVVuaWNvZGVTdHJpbmdUb0NvdW50ZWRPZW1TdHJpbmcuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCB3aW5lZGVmYXVsdC5yZWc6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCS0gRml4IERpcmVjdFBsYXlFbnVtZXJhdGVBIGV4aXQgY29kZS4KCS0gQWRkIGRlZmF1bHQgcmVnaXN0cnkgZW50cnkgZm9yIERpcmVjdFBsYXkgU2VydmljZSBQcm92aWRlcnMuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggdGhlIHBhdGggb2Yga2V5Ym9hcmQuYyBpbnNpZGUgYSBGSVhNRSBsb2cgc3RhdGVtZW50LgoKCSogd2luMzIvZXhjZXB0LmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURvbid0IHVzZSBhIGhleCBudW1iZXIgZm9yIHRoZSBldmVudCBpbiB0aGUgZGVmYXVsdCBzdHJpbmcuCgoJKiB0b29scy9jMm1hbi5wbDogVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0BnbXguYXQ+CglDaGFuZ2UgYzJtYW4gdGhhdCBpdCB3b3JrcyB3aXRoIHRoZSBuZXcgZm9ybWF0IG9mIHRoZSBzcGVjIGZpbGVzCgkod2l0aG91dCBleHBvcnRlZCBuYW1lKS4KCgkqIGRsbHMvTWFrZXRlc3QucnVsZXMuaW46IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJRG9uJ3QgbGluayBjcm9zcyBjb21waWxlZCB0ZXN0cyBhZ2FpbnN0IFdpbmUgaW1wb3J0IGxpYnJhcmllcy4KCgkqIG1pc2MvdmVyc2lvbi5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglQcmludCBvdXQgV2luZG93cyB2ZXJzaW9uIHZhbHVlcywgaW4gaHVtYW4tcmVhZGFibGUgZm9ybWF0LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggdGhlIExpc3RWaWV3X1NldEl0ZW1TdGF0ZSBtYWNyby4KCjIwMDMtMDQtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluOgoJQWxsb3cgb3ZlcnJpZGluZyBDRkxBR1Mgd2hlbiBydW5uaW5nIGNvbmZpZ3VyZS4gT3RoZXIgc21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL250ZGxsL2hlYXAuYzoKCUluc2VydCB0aGUgbGFzdCBmcmVlIGJsb2NrIG9mIGEgc3ViaGVhcCBhdCB0aGUgZW5kIG9mIHRoZSBmcmVlIGxpc3QgdG8KCWF2b2lkIHVzaW5nIHVuY29taXR0ZWQgc3BhY2UgdW5sZXNzIHJlYWxseSBuZWNlc3NhcnkuCgoJKiBpbmNsdWRlL3dpbmUvZGVidWcuaDoKCUZpeGVkIGdjYyB2YXJhcmdzIG1hY3JvIHN5bnRheCAocmVwb3J0ZWQgYnkgR2FicmllbGUgR2lvcmdldHRpKS4KCgkqIGxpYnMvdW5pY29kZS9jXzA0Mi5jLCBsaWJzL3VuaWNvZGUvY18xMDAwMC5jLCBsaWJzL3VuaWNvZGUvY18xMDAwNy5jLAoJICBsaWJzL3VuaWNvZGUvY18xMDAyOS5jLCBsaWJzL3VuaWNvZGUvY18xMDA2LmMsCgkgIGxpYnMvdW5pY29kZS9jXzEwMDc5LmMsIGxpYnMvdW5pY29kZS9jXzEwMDgxLmMsCgkgIGxpYnMvdW5pY29kZS9jXzIwODY2LmMsIGxpYnMvdW5pY29kZS9jXzIwOTMyLmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NTkyLmMsIGxpYnMvdW5pY29kZS9jXzI4NTkzLmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NTk0LmMsIGxpYnMvdW5pY29kZS9jXzI4NTk1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NTk2LmMsIGxpYnMvdW5pY29kZS9jXzI4NjAwLmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NjA0LmMsIGxpYnMvdW5pY29kZS9jXzI4NjA1LmMsCgkgIGxpYnMvdW5pY29kZS9jXzI4NjA2LmMsIGxpYnMvdW5pY29kZS9jXzQzNy5jLCBsaWJzL3VuaWNvZGUvY183MzcuYywKCSAgbGlicy91bmljb2RlL2NfODUyLmMsIGxpYnMvdW5pY29kZS9jXzg1NS5jLCBsaWJzL3VuaWNvZGUvY184NjAuYywKCSAgbGlicy91bmljb2RlL2NfODYxLmMsIGxpYnMvdW5pY29kZS9jXzg2Mi5jLCBsaWJzL3VuaWNvZGUvY184NjUuYywKCSAgbGlicy91bmljb2RlL2NfODY2LmMsIGxpYnMvdW5pY29kZS9jXzg3NC5jLCBsaWJzL3VuaWNvZGUvY184NzguYywKCSAgbGlicy91bmljb2RlL2NfOTMyLmMsIGxpYnMvdW5pY29kZS9jXzkzNi5jLCBsaWJzL3VuaWNvZGUvY185NDkuYywKCSAgbGlicy91bmljb2RlL2NfOTUwLmMsIGxpYnMvdW5pY29kZS9jcG1hcC5wbCwgbGlicy91bmljb2RlL2RlZmF1bHRzOgoJSGFja2VkIDB4MDBhNSB0byBtYXAgdG8gYmFja3NsYXNoIGluIFNoaWZ0LUpJUyBjb2RlcGFnZS4KCUFkZGVkIG1hcHBpbmcgZm9yIDB4MDBhNi4KCgkqIE1ha2VmaWxlLmluOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCUZpeCB0eXBvOiBzcW1sIC0+IHNnbWwuCgoJKiB0b29scy9jMm1hbi5wbDogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglIYW5kbGUgbXVsdGlsaW5lIG91dHB1dCBmcm9tIGdyZXAgYW5kIGRvbid0IGdyZXAgZm9yIGVtcHR5IHN0cmluZ3MuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSGF2ZSB0aGUgJ21ha2Vfb3BlbmdsJyBpbiBsaW5lIHdpdGggdGhlIChtYW51YWxseSBlZGl0ZWQpIHNwZWMgZmlsZS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9vbGUzMi9zdG9yYWdlLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXggYmxhdGFudGx5IHdyb25nIFNldEZpbGVQb2ludGVyKCkgY2FsbHMuCgoJKiBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9odHRwLmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJRG9taW5payBTdHJhc3NlciA8RG9taW5pay5TdHJhc3NlckB0LW9ubGluZS5kZT4KCVBhcnRpYWxseSBpbXBsZW1lbnQgcHJveHkgc3VwcG9ydC4KCgkqIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwKCSAgZG9jdW1lbnRhdGlvbi9QQUNLQUdJTkcsIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHEsCgkgIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLXBrZy5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVRyYW5zZm9ybSB0aGUgUGFja2FnaW5nIEd1aWRlIGludG8gYSBuaWNlIEFTQ0lJIGZpbGUuCglVcGRhdGUgaXQgdG8gdGhlIGxhdGVzdCBpbmZvLCBtYWtlIGl0IGxlc3MgcHJvbmUgdG8gb2Jzb2xlc2NlbmNlLgoJVXBkYXRlZCB0aGUgV2luZSBleGVjdXRhYmxlcyBmcm9tIGxpc3QgcHJvZHVjZWQgYnkgVG9tIFdpY2tsaW5lLgoKMjAwMy0wNC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBEb24ndCB1c2UgV2luZSBkZWJ1Z2dpbmcgQVBJIGluIHRlc3RzLgoKCSogZGxscy93aW5lZG9zL2ludGVycnVwdHMuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJSW50ZXJydXB0IGhhbmRsaW5nIG5vdyBwcmludHMgbW9yZSB0cmFjZSBpbmZvcm1hdGlvbi4KCVJlcGxhY2VkIHNvbWUgbWFnaWMgbnVtYmVycyB3aXRoIHByZXByb2Nlc3NvciBjb25zdGFudHMuCgoJKiBzZXJ2ZXIvc2lnbmFsLmM6IFlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglGaXggZm9yIGNvbXBpbGluZyBvbiBOZXRCU0QuCgoJKiBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJSW5jbHVkZSBzaGxndWlkLmggZnJvbSBzaGxvYmouaC4KCUV4cG9zZSBJU2hlbGxMaW5rIHRvIFdpbmVsaWIgYXBwcy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRGVmaW5lIHNvbWUgYWRkaXRpb25hbCBjb25zdGFudHMuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOiBZb3JpY2sgSGFyZHkgPHloQG1ldHJvd2ViLmNvLnphPgoJZXJybm8gc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGEgdmFyaWFibGUgbmFtZS4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUluY3JlYXNlIE1heFN0cmVhbXMgdG8gMiBpbiBDQVBTLgoKCSogaW5jbHVkZS9kM2Q4Lmg6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgZGVmaW5lcyB0byBkM2Q4IGhlYWRlci4KCjIwMDMtMDQtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcGF0aC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvdGVzdHMvcGF0aC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglJbXBsZW1lbnRlZCBSdGxEZXRlcm1pbmVEb3NQYXRoTmFtZVR5cGVfVSBhbmQgUnRsSXNEb3NEZXZpY2VOYW1lX1UuCgoJKiBkbGxzL29sZTMyL29sZTE2LmMsIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYmpiYXNlLmgsCgkgIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvdW5rbnduLmgsIGluY2x1ZGUvdW5rbnduLmlkbCwKCSAgdG9vbHMvd2lkbC9oZWFkZXIuYzoKCVRoZSBjb21faW50ZXJmYWNlIGF0dHJpYnV0ZSBpcyBub3QgbmVlZGVkIG9uIGRlcml2ZWQgY2xhc3Nlcy4KCVJlbW92ZWQgdGhlIElDT01fQ1RISVMqIG1hY3Jvcy4KCgkqIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsCgkgIGRsbHMvZDNkOC9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDgvcmVzb3VyY2UuYywgZGxscy9kM2Q4L3NoYWRlci5jLAoJICBkbGxzL2QzZDgvc3RhdGVibG9jay5jLCBkbGxzL2QzZDgvc3VyZmFjZS5jLCBkbGxzL2QzZDgvc3dhcGNoYWluLmMsCgkgIGRsbHMvZDNkOC90ZXh0dXJlLmMsIGRsbHMvZDNkOC92ZXJ0ZXhidWZmZXIuYywgZGxscy9kM2Q4L3ZvbHVtZS5jLAoJICBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jLCBkbGxzL2QzZDgvdnNoYWRlcmRlY2xhcmF0aW9uLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uaCwgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmgsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmg6CglIZWFkZXIgZmlsZXMgbXVzdCBub3QgaW5jbHVkZSBjb25maWcuaC4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglGaXhlZCBydWxlcyBmb3IgYXV0byBkb2N1bWVudGF0aW9uIChyZXBvcnRlZCBieSBWaW5jZW50IELpcm9uKS4KCgkqIGRsbHMvbnRkbGwvbnQuYzogUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUFkZGVkIE50UXVlcnlQcm9jZXNzSW5mb3JtYXRpb24gY2FzZSBuZWVkZWQgYnkgTlQgdmVyc2lvbiBvZiBNU0kuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogSGFucyBMZWlkZWtrZXIgPGhhbnNAaXQudnUubmw+CglBZGQgYWxpYXNlcyB0byBjb25maWd1cmUgY2hlY2sgZm9yIG1pbmd3IGNyb3NzIGNvbXBpbGVyIGFuZCBkbGx0b29sLgoKMjAwMy0wNC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIFBDTSBmb3JtYXQgZXZhbHVhdGlvbiBidWcuCglQcm9wZXJseSBjbGVhbiB1cCBwYXJ0aWFsbHkgY3JlYXRlZCBzb3VuZCBidWZmZXJzLgoKCSogTWFrZS5ydWxlcy5pbiwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgdG9vbHMvbWFrZWRlcC5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgZ2VuZXJhdGluZyBkZXBlbmRlbmNpZXMgZm9yIGlkbCBmaWxlcy4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJQWRkZWQgdGhlIEdSQURJRU5UX0ZJTExfVFJJQU5HTEUgY2FzZSBpbiBHZGlHcmFkaWVudEZpbGwuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNoYW5nZWQgY2FwdHVyZSBmb3JtYXQgcHJpbnRpbmcgdG8gaGV4LgoKCSogbGlicy91dWlkL2R4Z3VpZC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkIGRpcmVjdCBzb3VuZCBkcml2ZXIgZ3VpZHMuCgoJKiBkbGxzL2RwbGF5eC9kcGxheXNwLmgsIGRsbHMvZHBsYXl4L2xvYmJ5c3AuaCwgZGxscy9vbGUzMi9pZnMuaCwKCSAgZGxscy9zaGVsbDMyL3NoZWxsZm9sZGVyLmgsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kM2QuaCwKCSAgaW5jbHVkZS9kM2Q4LmgsIGluY2x1ZGUvZDNkeDhjb3JlLmgsIGluY2x1ZGUvZGRyYXcuaCwKCSAgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9kbXBsdWdpbi5oLCBpbmNsdWRlL2RtdXNpY2MuaCwKCSAgaW5jbHVkZS9kbXVzaWNpLmgsIGluY2x1ZGUvZG11c2ljcy5oLCBpbmNsdWRlL2RvY29iai5oLAoJICBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL2RzZHJpdmVyLmgsCgkgIGluY2x1ZGUvZHNvdW5kLmgsIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYmpiYXNlLmgsCgkgIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvc2VydnByb3YuaCwKCSAgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvdW5rbnduLmgsCgkgIGluY2x1ZGUvdW5rbnduLmlkbCwgaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS92ZncuaCwKCSAgaW5jbHVkZS93aW5lL29ial9jYWNoZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbWNhdC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NvbW1kbGdicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2RvY2tpbmd3aW5kb3dmcmFtZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3BoZWxwZXIuaCwgaW5jbHVkZS93aW5lL29ial9lbnVtZ3VpZC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2VudW1pZGxpc3QuaCwgaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgaW5jbHVkZS93aW5lL29ial9waWN0dXJlLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaCwgaW5jbHVkZS93aW5lL29ial9zZXJ2aWNlcHJvdmlkZXIuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3dlYmJyb3dzZXIuaCwKCSAgdG9vbHMvd2lkbC9oZWFkZXIuYzoKCVNpbXBsaWZpZWQgQ09NIGludGVyZmFjZSBkZWNsYXJhdGlvbnMsIHJlbW92aW5nIHRoZSBuZWVkIHRvIGRlZmluZQoJYm90aCBhbiB4eHhfTUVUSE9EUyBhbmQgYW4geHh4X0lNRVRIT0RTIG1hY3JvLgoKMjAwMy0wNC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwgZGxscy9kcGxheXgvbG9iYnlzcC5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxmb2xkZXIuaCwgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kM2Q4LmgsCgkgIGluY2x1ZGUvZDNkeDhjb3JlLmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kaW5wdXQuaCwKCSAgaW5jbHVkZS9kbXBsdWdpbi5oLCBpbmNsdWRlL2RtdXNpY2MuaCwgaW5jbHVkZS9kbXVzaWNpLmgsCgkgIGluY2x1ZGUvZG11c2ljcy5oLCBpbmNsdWRlL2RvY29iai5oLCBpbmNsdWRlL2RwbGF5LmgsCgkgIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL2RzZHJpdmVyLmgsIGluY2x1ZGUvZHNvdW5kLmgsCgkgIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL3NlcnZwcm92LmgsCgkgIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3Zmdy5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NhY2hlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29tY2F0LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZG9ja2luZ3dpbmRvd2ZyYW1lLmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwKCSAgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcGhlbHBlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2VudW1ndWlkLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZW51bWlkbGlzdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwKCSAgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NlcnZpY2Vwcm92aWRlci5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfd2ViYnJvd3Nlci5oLAoJICB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3dpZGwuYywgdG9vbHMvd2lkbC93aWRsLmg6CglHZXQgcmlkIG9mIHRoZSBJQ09NX0NBTEwgbWFjcm9zLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOiBJZ25vcmUgIlUgIiBpbiBubSAtdSBvdXRwdXQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUJldHRlciBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLAoJICBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYywKCSAgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywgZGxscy9kcGxheXgvZHBsYXkuYywKCSAgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L2xvYmJ5c3AuYywKCSAgZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvbWl4ZXIuYywKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywKCSAgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2Z0bWFyc2hhbC5jLAoJICBkbGxzL29sZTMyL2dpdC5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMTYuYywKCSAgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywKCSAgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywKCSAgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmMsIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglSZW1vdmVkIHVzZXMgb2YgdGhlIG5vbiBzdGFuZGFyZCBJQ09NX1ZUQkwgbWFjcm8uCgoJKiBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLAoJICBkbGxzL2RwbGF5eC9sb2JieXNwLmgsIGRsbHMvb2xlMzIvaWZzLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGZvbGRlci5oLAoJICBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2QzZDguaCwgaW5jbHVkZS9kM2R4OGNvcmUuaCwgaW5jbHVkZS9kZHJhdy5oLAoJICBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2RtcGx1Z2luLmgsIGluY2x1ZGUvZG11c2ljYy5oLAoJICBpbmNsdWRlL2RtdXNpY2kuaCwgaW5jbHVkZS9kbXVzaWNzLmgsIGluY2x1ZGUvZG9jb2JqLmgsCgkgIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvZHNkcml2ZXIuaCwKCSAgaW5jbHVkZS9kc291bmQuaCwgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29iamJhc2UuaCwKCSAgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vbGVkbGcuaCwgaW5jbHVkZS9zZXJ2cHJvdi5oLAoJICBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS91bmtud24uaCwKCSAgaW5jbHVkZS91cmxtb24uaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5udC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NhY2hlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29tY2F0LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZG9ja2luZ3dpbmRvd2ZyYW1lLmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwKCSAgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcGhlbHBlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2VudW1ndWlkLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZW51bWlkbGlzdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2V4dHJhY3RpY29uLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwKCSAgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwKCSAgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NlcnZpY2Vwcm92aWRlci5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfd2ViYnJvd3Nlci5oLAoJICB0b29scy93aWRsL2hlYWRlci5jOgoJVXNlIGEgbW9yZSBjb21wYXRpYmxlIHRlY2huaXF1ZSB0byBkZWNsYXJlIENPTSBpbnRlcmZhY2VzIG1ldGhvZHMsCgl1c2luZyBNaWNyb3NvZnQncyBTVERNRVRIT0QgbWFjcm9zIGluc3RlYWQgb2YgdGhlIFdpbmUtc3BlY2lmaWMKCUlDT01fTUVUSE9EIG9uZXMuCgoyMDAzLTA0LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kc291bmQvdmVyc2lvbi5yYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUNoYW5nZWQgRExMIHZlcnNpb24gdG8gOC4KCgkqIHRvb2xzL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglXZSBkb24ndCBuZWVkIHRvIGRsb3BlbiB0aGUgYXBwIG1vZHVsZSBiZWZvcmUgdGhlIExvYWRMaWJyYXJ5KCkuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglBZGRlZCBtb3JlIGV4dGVuZGVkIGVycm9yIGNvZGVzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUFkZCBhbmQgZml4IGEgZmV3IHN0dWJzIHRvIHJldHVybiBjb3JyZWN0IGVycm9yLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuZnI6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUtlZXAgUkVBRE1FLmZyIGluIHN5bmMuCgoyMDAzLTA0LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOiBSZWxlYXNlIDIwMDMwNDA4LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAzLTA0LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogUkVBRE1FOiBVcGRhdGVkIFVSTHMuCgoJKiBkbGxzL2RtdXNpYy9NYWtlZmlsZS5pbiwgZGxscy9kbXVzaWMvZG11c2ljLmMsIGRsbHMvZG11c2ljL2RtdXNpYzguYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX2J1ZmZlci5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfY29sbGVjdGlvbi5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfZGxpbnN0cnVtZW50LmMsIGRsbHMvZG11c2ljL2RtdXNpY19kb3dubG9hZC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfbG9hZGVyLmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19taXNjLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wZXJmb3JtYW5jZS5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcGx1Z2lucy5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfcG9ydC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcG9ydGRsLmMsIGRsbHMvZG11c2ljL2RtdXNpY19wcml2YXRlLmgsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19zZWdtZW50LmMsIGRsbHMvZG11c2ljL2RtdXNpY19zdHlsZS5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfc3ludGguYywgZGxscy9kbXVzaWMvZG11c2ljX3RocnUuYywKCSAgZGxscy9kbXVzaWMvcmVmZXJlbmNlX2Nsb2NrLmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQWRkZWQgc3R1YnMgZm9yIGFsbCBkbXVzaWMgaW50ZXJmYWNlcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSnVyYWogSGVyY2VrIDxqdXJhakBzeW5jYWQuY29tPgoJRml4ZWQgdGFnTFZESVNQSU5GTyBkZWZpbml0aW9uLgoKCSogdG9vbHMvd2luZW1ha2VyOiBKdXJhaiBIZXJjZWsgPGp1cmFqQHN5bmNhZC5jb20+CglGaXhlZCBnZW5lcmF0aW9uIG9mIG1ha2VmaWxlcyBhbmQgd3JhcHBlciBmaWxlcyB3aGVuICItLXdyYXAiIG9wdGlvbgoJaXMgdXNlZC4KCgkqIGRsbHMvdGFwaTMyL2Fzc2lzdGVkLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCU9ubHkgbG9nIHRoZSBwYXJhbWV0ZXJzIG9mIHRhcGlHZXRMb2NhdGlvbkluZm8gYXMgYWRkcmVzc2VzLCBhcyBvdXRwdXQKCXBhcmFtZXRlcnMgdGhleSBwcm9iYWJseSBwb2ludCB0byBnYXJiYWdlLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDb21wYXJlIHRoZSB0d28gaXRlbXMgaW4gTElTVEJPWF9GaW5kU3RyaW5nUG9zKCkgaW4gdGhlIHNhbWUgb3JkZXIgYXMKCWluIFdpbmRvd3MuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6IEhhbnMgTGVpZGVra2VyIDxoYW5zQGl0LnZ1Lm5sPgoJQWRkIHNvbWUgbW9yZSBuZXdseSBhcnJpdmVkIGRsbHMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZXR1cm4gY29ycmVjdCBzZWdtZW50IGZvciBWRVNBIGluZm9ybWF0aW9uLgoJQ2hlY2sgb2VtIG51bWJlci92ZXJzaW9uIGZsYWcgZmlyc3QgYW5kIGFmdGVyIHRoYXQgb3ZlcndyaXRlIGNvbmRpdGlvbgoJY29kZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2xvY2FsZS5jOgoJTWljaGFsIEphbnVzeiBNaXJvc2xhdyA8TS5NaXJvc2xhd0BlbGthLnB3LmVkdS5wbD4KCUFkZCBzdHViIGZvciBJbnZhbGlkYXRlTkxTQ2FjaGUuCgoJKiBmaWxlcy9kcml2ZS5jOgoJTWFrZSBEUklWRV9GaW5kUm9vdFcgcmVhbGx5IGJlaGF2ZSBsaWtlIERSSVZFX0ZpbmRSb290LgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZG1iYW5kLy5jdnNpZ25vcmUsCgkgIGRsbHMvZG1iYW5kL01ha2VmaWxlLmluLCBkbGxzL2RtYmFuZC9kbWJhbmQuc3BlYywKCSAgZGxscy9kbWJhbmQvZG1iYW5kX21haW4uYywgZGxscy9kbWJhbmQvdmVyc2lvbi5yYywKCSAgZGxscy9kbWNvbXBvcy8uY3ZzaWdub3JlLCBkbGxzL2RtY29tcG9zL01ha2VmaWxlLmluLAoJICBkbGxzL2RtY29tcG9zL2RtY29tcG9zLnNwZWMsIGRsbHMvZG1jb21wb3MvZG1jb21wb3NfbWFpbi5jLAoJICBkbGxzL2RtY29tcG9zL3ZlcnNpb24ucmMsIGRsbHMvZG1pbWUvLmN2c2lnbm9yZSwKCSAgZGxscy9kbWltZS9NYWtlZmlsZS5pbiwgZGxscy9kbWltZS9kbWltZS5zcGVjLAoJICBkbGxzL2RtaW1lL2RtaW1lX21haW4uYywgZGxscy9kbWltZS92ZXJzaW9uLnJjLAoJICBkbGxzL2RtbG9hZGVyLy5jdnNpZ25vcmUsIGRsbHMvZG1sb2FkZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG1sb2FkZXIvZG1sb2FkZXIuc3BlYywgZGxscy9kbWxvYWRlci9kbWxvYWRlcl9tYWluLmMsCgkgIGRsbHMvZG1sb2FkZXIvdmVyc2lvbi5yYywgZGxscy9kbXNjcmlwdC8uY3ZzaWdub3JlLAoJICBkbGxzL2Rtc2NyaXB0L01ha2VmaWxlLmluLCBkbGxzL2Rtc2NyaXB0L2Rtc2NyaXB0LnNwZWMsCgkgIGRsbHMvZG1zY3JpcHQvZG1zY3JpcHRfbWFpbi5jLCBkbGxzL2Rtc2NyaXB0L3ZlcnNpb24ucmMsCgkgIGRsbHMvZG1zdHlsZS8uY3ZzaWdub3JlLCBkbGxzL2Rtc3R5bGUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZG1zdHlsZS9kbXN0eWxlLnNwZWMsIGRsbHMvZG1zdHlsZS9kbXN0eWxlX21haW4uYywKCSAgZGxscy9kbXN0eWxlL3ZlcnNpb24ucmMsIGRsbHMvZG1zeW50aC8uY3ZzaWdub3JlLAoJICBkbGxzL2Rtc3ludGgvTWFrZWZpbGUuaW4sIGRsbHMvZG1zeW50aC9kbXN5bnRoLnNwZWMsCgkgIGRsbHMvZG1zeW50aC9kbXN5bnRoX21haW4uYywgZGxscy9kbXN5bnRoL3ZlcnNpb24ucmMsCgkgIGRsbHMvZG11c2ljMzIvLmN2c2lnbm9yZSwgZGxscy9kbXVzaWMzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbXVzaWMzMi9kbXVzaWMzMi5zcGVjLCBkbGxzL2RtdXNpYzMyL2RtdXNpYzMyX21haW4uYywKCSAgZGxscy9kbXVzaWMzMi92ZXJzaW9uLnJjLCBkbGxzL2RwbmhwYXN0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZHBuaHBhc3QvTWFrZWZpbGUuaW4sIGRsbHMvZHBuaHBhc3QvZHBuaHBhc3Quc3BlYywKCSAgZGxscy9kcG5ocGFzdC9tYWluLmMsIGRsbHMvZHBuaHBhc3QvdmVyc2lvbi5yYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9kbXBsdWdpbi5oLCBpbmNsdWRlL2RtdXNpY2YuaCwgaW5jbHVkZS9kbXVzaWNpLmgsCgkgIGluY2x1ZGUvZG11c2ljcy5oLCBsaWJzL3V1aWQvZHhndWlkLmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQWRkZWQgc3R1YnMgZm9yIGRwbmhwYXN0IGFuZCBmb3IgYWxsIHRoZSBkbXVzaWMgZGxscy4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogQXZvaWQgd2FybmluZy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcnRsLmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmM6CglUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQGdteC5hdD4KCVRlc3RzIGZvciBSdGxVbG9uZ2xvbmdCeXRlU3dhcCwgUnRsUmFuZG9tLCBSdGxBcmVBbGxBY2Nlc3Nlc0dyYW50ZWQsCglSdGxBcmVBbnlBY2Nlc3Nlc0dyYW50ZWQsIFJ0bFVuaWNvZGVTdHJpbmdUb0Fuc2lTdHJpbmcsCglSdGxBcHBlbmRBc2NpaXpUb1N0cmluZywgUnRsQXBwZW5kU3RyaW5nVG9TdHJpbmcsCglSdGxBcHBlbmRVbmljb2RlVG9TdHJpbmcgYW5kIFJ0bEFwcGVuZFVuaWNvZGVTdHJpbmdUb1N0cmluZy4KCgkqIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywKCSAgZGxscy9udGRsbC9ydGxzdHIuYywgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQGdteC5hdD4KCUltcGxlbWVudGVkIFJ0bFJhbmRvbSwgUnRsQXJlQWxsQWNjZXNzZXNHcmFudGVkLAoJUnRsQXJlQW55QWNjZXNzZXNHcmFudGVkLCBSdGxDb3B5THVpZCwgUnRsRXF1YWxMdWlkLCBSdGxNYXBHZW5lcmljTWFzawoJYW5kIFJ0bENvcHlMdWlkQW5kQXR0cmlidXRlc0FycmF5LgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzIGZvciBSdGxFeHRlbmRlZE1hZ2ljRGl2aWRlLCBSdGxVbmlmb3JtLAoJUnRsVW5pY29kZVN0cmluZ1RvQW5zaVN0cmluZywgUnRsQXBwZW5kQXNjaWl6VG9TdHJpbmcsCglSdGxBcHBlbmRTdHJpbmdUb1N0cmluZywgUnRsQXBwZW5kVW5pY29kZVRvU3RyaW5nIGFuZAoJUnRsQXBwZW5kVW5pY29kZVN0cmluZ1RvU3RyaW5nLgoKMjAwMy0wNC0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0ZC9tc3ZjcnRkLnNwZWM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJRml4ZWQgZWN2dC9mY3Z0L2djdnQgZW50cmllcy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sCgkgIGluY2x1ZGUvc25vb3AuaCwgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jLAoJICByZWxheTMyL3Nub29wLmM6CglBZGRlZCBwb3NzaWJpbGl0eSB0byBmaWx0ZXIgcmVsYXkgdHJhY2VzIGJhc2VkIG9uIHRoZSBtb2R1bGUgdGhhdAoJY2FsbGVkIHRoZSBmdW5jdGlvbi4gQ2xlYW5lZCB1cCBhIGZldyB0cmFjZXMuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL21zaW1nMzIvbXNpbWczMi5zcGVjLAoJICBkbGxzL21zaW1nMzIvbXNpbWczMl9tYWluLmMsIGdyYXBoaWNzL3BhaW50aW5nLmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUltcGxlbWVudGVkIHRoZSBHUkFESUVOVF9GSUxMX1JFQ1R7SHxWfSBjYXNlcyBvZiBHZGlHcmFkaWVudEZpbGwuCgoJKiBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9nbG9zc2FyeS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sOgoJVG9tIEh1Z2hlcyA8dGhoQGN5YmVyc2NpZW5jZS5jb20+CglGaXggYSBmZXcgaW5jb3JyZWN0IHRhZ3MuCgoJKiB0b29scy93aW5hcGkvd2luYXBpLnBtOiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCU1ha2Ugd2luYXBpX2NoZWNrIGhhbmRsZSBzcGVjIGZpbGVzIHdoZXJlIG5vIGhhbmRsZXIgaXMgc3BlY2lmaWVkLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OiBIYW5zIExlaWRla2tlciA8aGFuc0BpdC52dS5ubD4KCVN5bmMgd2luYXBpX2NoZWNrIHRvIFdpbmUgc3BlYyBmaWxlcy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmgsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUltcGxlbWVudCBTSExXQVBJXzI2OSBhbmQgU0hMV0FQSV8yNzAuCglGaXggYSAwIHJlZmVyZW5jZSBidWcgaW4gU0hMV0FQSV80MzYgYW5kIGNoYW5nZSBpdHMgcmV0dXJuIHZhbHVlIHRvCgl3aGF0IGF0IGxlYXN0IFcySyBkb2VzIGFzIHdlbGwuCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jOiBKZXJyeSBKZW5raW5zIDxKZXJyeV9KX0plbmtpbnNAaG90bWFpbC5jb20+CglBbGlnbiBkYXRhIHRvIHByb3BlciBzaXplLgoKMjAwMy0wNC0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVJld3JvdGUgbW9zdCBvZiB0aGUgaW1wb3J0IGZpeHVwIGNvZGUgdG8gYXZvaWQgZG9pbmcgcmVkdW5kYW50IHdvcmsKCWZvciBldmVyeSBlbnRyeSBwb2ludC4gTW92ZWQgaXQgYWxsIHRvIGRsbHMvbnRkbGwvbG9hZGVyLmMuCglWYXJpb3VzIG9wdGltaXphdGlvbnMgaW4gdGhlIG90aGVyIGxvYWRlciByb3V0aW5lcy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUZldGNoIHRoZSBleGUgbW9kdWxlIGRpcmVjdGx5IGZyb20gdGhlIFBEQiBpbnN0ZWFkIG9mIGNhbGxpbmcKCUxkckdldERsbEhhbmRsZS4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBhIHByb2JsZW0gd2hlbiBtdWx0aXBsZSBkZXZpY2VzIGFyZSBwcmVzZW50IGFuZCBhIGRldmljZSBvdGhlcgoJdGhhbiB0aGUgZmlyc3Qgb25lIGlzIHVzZWQuCgoJKiBkbGxzL29sZTMyL2JpbmRjdHguYzogQWxiZXJ0byBNYXNzYXJpIDxhbWFzc2FyaUBwcm9ncmVzcy5jb20+CgktIFRoZSBiaW5kY29udGV4dCBvYmplY3Qgd2FzIGxlYWtpbmcgc3RyaW5ncy4KCS0gUmVtb3ZlZCB1bnVzZWQgdmFyaWFibGUuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IgUkFTIG5vdCBiZWluZyBzdXBwb3J0ZWQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglXb3JrIGFyb3VuZCBub3QgaW1wbGVtZW50ZWQgaW9jdGwgaW4gQlNELgoKMjAwMy0wNC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogQ2xlYW5lZCB1cCB0aGUgb3B0aW9uIG1hcHBpbmcgY29kZSBhIGJpdC4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RocmVhZC5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsCgkgIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUltcGxlbWVudGVkIE50UXVldWVBcGNUaHJlYWQsIGFuZCBjaGFuZ2VkIHRoZSBzZXJ2ZXIgQVBDIGludGVyZmFjZSB0bwoJYWx3YXlzIHRha2UgMyBwYXJhbWV0ZXJzLgoJSW1wbGVtZW50ZWQgYSBudW1iZXIgb2Ygb3RoZXIgbnRkbGwgdGhyZWFkIGZ1bmN0aW9ucywgYW5kIHVzZSB0aGVtCglmcm9tIHRoZSBrZXJuZWwgb25lcy4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywgcHJvZ3JhbXMvd2luZWNmZy9wcm9wZXJ0aWVzLmM6IFdhcm5pbmcgZml4ZXMuCgoJKiBNYWtlZmlsZS5pbiwgUkVBRE1FLCB0b29scy93aW5lY2hlY2s6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglTdHJ1Y3R1cmUgUkVBRE1FIGZpbGUgaW4gYSBiZXR0ZXIgd2F5LCBzb21lIGRvYyBmaXhlcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCUNvcnJlY3QgdGhlIGVycm9yIGNvZGUgcmV0dXJuZWQgd2hlbiBhIGZpbGUgZG9lcyBub3QgZXhpc3QuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywKCSAgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrLmgsIGluY2x1ZGUvd3MydGNwaXAuaDoKCU1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJLSBNYXAgd2luc29jayBzb2Nrb3B0cyB0byB0aGUgUE9TSVggZXF1aXZhbGVudHMgZm9yIElQIG11bHRpY2FzdC4KCS0gUmVtYXAgd2luc29jazEgY29uc3RhbnQgdmFsdWVzIHRvIHdpbnNvY2syIHVzaW5nIGEgZm9yd2FyZGVyCgkgIGZ1bmN0aW9uLgoJLSBDaGFuZ2UgYSBGSVhNRSB0byBhIFRSQUNFLCBpdCBhcHBlYXJlZCB0byBiZSBzaW1wbHkgcmVwb3J0aW5nCgkgIHByb2dyZXNzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL3BlX2ltYWdlLmM6CglNZXJnZWQgUEVfSW5pdERMTCBpbnRvIE1PRFVMRV9Jbml0RExMLgoJRml4ZWQgYSBmZXcgdHJhY2VzLgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLCBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYywKCSAgd2luMzIvZXhjZXB0LmM6CglSZW1vdmUgdGhlIFdpbmUtc3BlY2lmaWMgRVhDRVBUSU9OX0NSSVRJQ0FMX1NFQ1RJT05fV0FJVCBkZWZpbmUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnRkLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2Y3J0ZC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnRkL2RlYnVnLmMsCgkgIGRsbHMvbXN2Y3J0ZC9tc3ZjcnRkLnNwZWM6CglBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCUFkZGVkIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNU1ZDUlRELkRMTCBkZWJ1Z2dpbmcgQyBydW50aW1lIERMTC4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzoKCVJlbW92ZWQgdGhlIGNvbW1lbnRlZCBvdXQgd2luc29jayBzdXBwb3J0LCBpdCBjYW4ndCB3b3JrIGFueXdheS4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJWWV0IGFub3RoZXIgaGFjayB0byB0cnkgdG8gbWFrZSB0aGlzIGZpbGUgY29tcGlsZSBpbiBhbGwKCWNpcmN1bXN0YW5jZXMuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBhIGZldyBtaXNzaW5nIEJOXyogY29uc3RhbnRzLgoKMjAwMy0wNC0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOgoJQXZvaWQgd2FybmluZyBvbiByZWRlZmluaXRpb24gb2YgS0VZX0VWRU5ULgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIGNhbGwgV2FpdEZvcipPYmplY3QqIGZyb20gbnRkbGwgKGJ1dCBOdFdhaXQqT2JqZWN0KikuCgoJKiBkbGxzL2RkcmF3L3ZlcnNpb24ucmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglVcGRhdGUgdmVyc2lvbiBpbmZvIHRvIDguMS4KCgkqIGRsbHMvZDNkOC8uY3ZzaWdub3JlLCBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOC92ZXJzaW9uLnJjLAoJICBkbGxzL2RtdXNpYy8uY3ZzaWdub3JlLCBkbGxzL2RtdXNpYy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbXVzaWMvdmVyc2lvbi5yYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglBZGRlZCB2ZXJzaW9uIGluZm8uCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEb24ndCBvdXRwdXQgcmVnaXN0ZXIgZnVuY3Rpb24gY29kZSBpZiBpdCdzIGEgZm9yd2FyZGVkIGVudHJ5IHBvaW50LgoKCSogZGxscy9jYWJpbmV0L2NhYmV4dHJhY3QuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLAoJICBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUFkZCBzb21lIG1pc3NpbmcgSGVhcEZyZWUncyBhbmQgb25lIG1pc3NpbmcgZnJlZS4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJUmVtb3ZlIGJvZ3VzIGluaXRpYWxpemF0aW9uIGluIFNldEtleWJvYXJkU3RhdGUuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgd2lkZSBjaGFyYWN0ZXIgZW51bWVyYXRpb24gb2Ygc291bmQgZGV2aWNlcy4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBhIGZldyBtaXNzaW5nIERYOCBkZWZpbml0aW9ucy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2tlcm5lbDMyLmM6CglQYXVsIE1jTmV0dCA8cEB1bG1jbmV0dC5jb20+CglTdHVicyBmb3IgQmVnaW5VcGRhdGVSZXNvdXJjZUEoKSwgQmVnaW5VcGRhdGVSZXNvdXJjZVcoKSwKCUVuZFVwZGF0ZVJlc291cmNlQSgpLCBhbmQgRW5kVXBkYXRlUmVzb3VyY2VXKCkuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJQWRkZWQgaGFjayB0byBwYXRjaCB0aGUgZ2xpYmMgZXJybm9fbG9jYXRpb24gdG8ganVtcCB0byBvdXIgZnVuY3Rpb24sCgliYXNlZCBvbiBhIHBhdGNoIGJ5IE1hcmN1cyBNZWlzc25lci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBsaWJzL3dpbmUvZXJybm8uYywgc2NoZWR1bGVyL3B0aHJlYWQuYywgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCUFkZGVkIC0td2l0aC1ucHRsIGNvbmZpZ3VyZSBvcHRpb24gYW5kIG5lY2Vzc2FyeSBjaGFuZ2VzIHRvIHN1cHBvcnQKCXJ1bm5pbmcgb24gdG9wIG9mIE5QVEwgdGhyZWFkcy4KCjIwMDMtMDQtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBhY2xvY2FsLm00LCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCURvbid0IGJvdGhlciBjaGVja2luZyBmb3IgdGhlIGVycm5vIGZ1bmN0aW9uLCBzaW1wbHkgZGVmaW5lIGFsbCBvZgoJdGhlbS4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXggYnVmZmVyIG92ZXJmbG93IGluIGRhdGV0aW1lLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJWmVybyBpbml0aWFsaXplIHRoZSByZXNlcnZlZCBieXRlcyBpbiB0aGUgdG9vbGJhciBkZXRhaWxzIHJldHVybmVkIGJ5CglUT09MQkFSX0dldEJ1dHRvbigpLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzb21lIHN0dWJzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXggSW1hZ2VMaXN0X1JlYWQgLSB0aGUgcm9vdCBjYXVzZSBvZiB1Z2x5IHRvb2xiYXIgaWNvbnMuCgoJKiBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNjaGVkdWxlci90aW1lci5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywKCSAgdG9vbHMvbWFrZV9yZXF1ZXN0czoKCUFkZGVkIGFic190aW1lX3Qgc3RydWN0dXJlIHRvIHRoZSBzZXJ2ZXIgcHJvdG9jb2wsIGFuZCBhZGRlZCBhIGR1bXAKCXJvdXRpbmUgZm9yIGl0IHRoYXQgZGlzcGxheXMgdGhlIHJlbGF0aXZlIHRpbWVvdXQgdG8gbWFrZSB0aW1lb3V0Cgl2YWx1ZXMgZWFzaWVyIHRvIGludGVycHJldC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgbW9yZSBpbmZvcm1hdGlvbiB0byBzb21lIG9mIHRoZSBmYWlsdXJlIG1lc3NhZ2VzLgoJRml4ZWQgYSBidWcgd2hlcmUgZ2FyYmFnZSBkYXRhIGlzIHByaW50ZWQgb3V0IGZvciB0aGUgMiBNSHogdGVzdHMuCgoJKiB0b29scy93aW5lZ2NjLmMsIHRvb2xzL3dpbmV3cmFwLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFrZSB1c2Ugb2YgdGhlIG5ldyBzcGF3bnZwIGZ1bmN0aW9uIGluIHdpbmV7Z2NjLHdyYXB9LgoKCSogZGxscy9kc291bmQvZHNvdW5kLnNwZWM6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBlbnRyeSBmb3IgRGlyZWN0U291bmRGdWxsRHVwbGV4Q3JlYXRlLgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYzogRHVtcCBzdHJpbmcgcmVzb3VyY2VzIGluIGEgbW9yZSByZWFkYWJsZSB3YXkuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sIGxpYnMvcG9ydC9zcGF3bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBpbnRlbGxpd2FyZS5jYT4KCUFkZCBzcGF3bnZwIHRvIHRoZSBwb3J0YWJpbGl0eSBsaWIuCgoJKiBzZXJ2ZXIvc2lnbmFsLmM6CglJbml0aWFsaXplIHRoZSBkdW1teSBjaGFyIHdlIHNlbmQgZG93biB0aGUgcGlwZSB0byBtYWtlIHZhbGdyaW5kCgloYXBweS4KCgkqIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW46CglNYWtlIHN1cmUgd2UgZG9uJ3QgdXNlIGxpYndpbmVfcG9ydCBmdW5jdGlvbnMgd2hlbiBsaW5raW5nIHdpdGgKCW1zdmNydC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL250ZGxsL2hlYXAuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUFkZGVkIHN1cHBvcnQgZm9yIG1hcmtpbmcgaGVhcCBibG9ja3MgYXMgaW5hY2Nlc3NpYmxlL3VuaW5pdGlhbGl6ZWQgaWYKCXZhbGdyaW5kIGlzIGluc3RhbGxlZCwgYmFzZWQgb24gYSBwYXRjaCBieSBBZGFtIEd1bmR5LgoKCSogZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYywgaW5jbHVkZS93aW5zb2NrLmg6CglIYW5kbGUgaHRvbmwoKSBhbmQgZnJpZW5kcyBsaWtlIHNlbGVjdCgpLCB0aGlzIHdpbGwgaG9wZWZ1bGx5IGF2b2lkCgljb25mbGljdHMgd2l0aCBVbml4IGhlYWRlcnMuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLAoJICBkbGxzL250ZGxsL3J0bGJpdG1hcC5jLCBkbGxzL3NldHVwYXBpL2RpcmlkLmMsIGRsbHMvc2hkb2N2dy9ldmVudHMuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLAoJICBkbGxzL3NobHdhcGkvdGhyZWFkLmMsIGRsbHMvdXNlci90ZXh0LmMsCgkgIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGluY2x1ZGUvd2lubnQuaCwgbWVtb3J5L2dsb2JhbC5jLAoJICB0b29scy93aW5lY29uZjoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVNvbWUgc3BlbGxpbmcgYW5kIGZvcm1hdHRpbmcgZml4ZXMuCgoJKiBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgUiB0eXBlcyBpbiBzdGFicyBwYXJzaW5nLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IEZvcm1hdENvZGUgZW50cmllcy4KCjIwMDMtMDQtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCB0ZXN0IHRvIHN1Y2NlZWQgaW4gV2luIDk4LzJLIGFuZCBtb3N0IHByb2JhYmx5IE1FL1hQIGFzIHdlbGwuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS90aHJlYWQuaCwKCSAgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJQWRkZWQgU1lTREVQU19HZXRVbml4VGlkIHRvIHJldHVybiB0aGUgVW5peCB0aHJlYWQgaWQgdG8gc2VuZCB0byB0aGUKCXNlcnZlci4KCgkqIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCU1vdmVkIHByb3RvdHlwZSBmb3IgU0hCaW5kVG9QYXJlbnQoKSB0byBzaGxvYmouaC4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLCBkb2N1bWVudGF0aW9uL2J1aWxkLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY29tcGlsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9jdnMtcmVncmVzc2lvbi5zZ21sLCBkb2N1bWVudGF0aW9uL2N2cy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIGRvY3VtZW50YXRpb24vZGxscy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9mYXEuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9nbG9zc2FyeS5zZ21sLCBkb2N1bWVudGF0aW9uL2ltcGxlbWVudGF0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbiwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vaW50cm9kdWN0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vbXVsdGltZWRpYS5zZ21sLCBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS11c2VyLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi10b29sa2l0LnNnbWw6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIG5ldywgbXVjaCBtb3JlIGRldGFpbGVkIGFuZCBlYXNpZXIgInN0ZXAtYnktc3RlcCIgbGF5b3V0CgktIGJldHRlciBpbnRybwoJLSBhZGQgR2xvc3NhcnkgKGdsb3NzYXJ5LnNnbWwpCgktIG11Y2ggYmV0dGVyIEdldHRpbmcgV2luZSBjaGFwdGVyCgktIG11Y2ggYmV0dGVyIFdpbmUgY29uZmlndXJhdGlvbiBjaGFwdGVyCgktIGJldHRlciBXaW5lIGRyaXZlIGxheWVyIGNvbmZpZ3VyYXRpb24gc2VjdGlvbgoJLSBleHBsYWluIHdpbmVzZXJ2ZXIgY21kbGluZSBvcHRpb25zCgktIHJlYXJyYW5nZWQgdG9ucyBvZiB0aGluZ3MgaW50byBhIGxlc3MgbWVzc3kgc3RhdGUKCS0gdG9ucyBvZiBqYW5pdG9yaWFsIGZpeGVzCgoJKiBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy93aW5lZG9zL2ludDFhLmMsIGRsbHMvd2luZWRvcy92Z2EuYywKCSAgaW5jbHVkZS93aW5lL3dpbnNvY2sxNi5oLCBwcm9ncmFtcy93aW5lZGJnL2RiZy55OgoJUG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgdG9vbHMvd2luZWdjYy5jLAoJICB0b29scy93aW5ld3JhcC5jOgoJVXNlIF9zcGF3bnZwIHRvIHJlcGxhY2UgZm9yayBmb3Igbm9uLVVuaXggcGxhdGZvcm1zLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9tYWluLmM6CglBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIHN0ZGNhbGwgZGxsIGVudHJ5IHBvaW50LgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvbW9kdWxlLmMsIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6CglSZW1vdmVkIHVzZXMgb2YgdV9sb25nLiBVc2Ugdm9pZCogdHlwZSBmb3IgcG9pbnRlcnMgd2hlcmUgcG9zc2libGUuCgoyMDAzLTAzLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdW1vbi5jLAoJICBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywKCSAgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW5pbmV0Lmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJRml4IHNvbWUgcHJvYmxlbXMgZm91bmQgd2hpbGUgY29tcGlsaW5nIGFuZCBsaW5raW5nIFdpbmUgdW5kZXIKCUN5Z3dpbi4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJVHJ5IHRvIG1ha2Ugd2luc29jay5oIG1vcmUgcG9ydGFibGUgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgRnJhbmNvaXMKCUdvdWdldCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjZmcvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWNmZy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNmZy9tYWluLmMsIHByb2dyYW1zL3dpbmVjZmcvcHJvcGVydGllcy5jLAoJICBwcm9ncmFtcy93aW5lY2ZnL3Byb3BlcnRpZXMuaCwgcHJvZ3JhbXMvd2luZWNmZy9yZXNvdXJjZS5oLAoJICBwcm9ncmFtcy93aW5lY2ZnL3dpbmVjZmcuYywgcHJvZ3JhbXMvd2luZWNmZy93aW5lY2ZnLmgsCgkgIHByb2dyYW1zL3dpbmVjZmcvd2luZWNmZy5yYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglOZXcgd2luZWNmZyBza2VsZXRvbiBhcHAsIGJhc2VkIGhlYXZpbHkgb24gb3JpZ2luYWwgd29yayBieSBKYWNvCglHcmVlZmYuCgoJKiBSRUFETUUsIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyLCBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLCB0b29scy93aW5lY2hlY2ssIHdpbmVkZWZhdWx0LnJlZzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJVXNlIHJlZ2VkaXQgaW5zdGVhZCBvZiByZWdhcGkuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVRyYWNlIGZvcm1hdCBmaXguCgoJKiBkbGxzL250ZGxsL3N5bmMuYzogQWRkZWQgbWlzc2luZyBOT05BTUVMRVNTU1RSVUNUL1VOSU9OLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9vbS5jLAoJICBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aW1lLmMsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RpbWVyLmM6CglNb3ZlZCBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIHRvIG50ZGxsIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEVyaWMKCVBvdWVjaCkuCglBZGRlZCBOVERMTF9nZXRfc2VydmVyX3RpbWVvdXQgZnVuY3Rpb24gdG8gY29tcHV0ZSBudGRsbC1zdHlsZQoJdGltZW91dHMgYW5kIGFkYXB0ZWQgdGhlIHRpbWVyIGNvZGUgdG8gdXNlIGl0LgoKCSogZG9jdW1lbnRhdGlvbi9jb21waWxpbmcuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CgktIHMvY3ZzIC1QQWQgdXBkYXRlL2N2cyB1cGRhdGUgLVBBZC8uCgktIEZpeCB0aGUgT2RpbiBsaW5rLgoJLSBBZGQgYSBsaW5rIHRvIEJlV2luZS4KCS0gU21hbGwgdHlwbyBmaXhlcyBhbmQgcmVwaHJhc2luZy4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUZyYW1ld29yayBmb3IgdGhlIGRvcHBsZXIgZWZmZWN0LgoKCSogZGxscy9kbXVzaWMvZG11c2ljLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+Cgkoc29ydGEpIGltcGxlbWVudGVkIEVudW1Qb3J0cy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogVml0YWxpeSBNYXJnb2xlbiA8d2luZS1wYXRjaEBraWV2aW5mby5jb20+CglGaXggcmFuZG9tIHNlZ2ZhdWx0cyBpbiBYMTFEUlZfU2V0SW1hZ2VCaXRzXzEuCgoyMDAzLTAzLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCVVzZSB0aGUgcmlnaHQgYnVmZmVyIHNpemUgaW4gU1lTUEFSQU1TX0xvYWQgaW5zdGVhZCBvZiBzb21lIHJhbmRvbQoJdmFsdWUuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYzoKCUNsZWFyIHRoZSBlbnRpcmUgcmVxdWVzdCwgbm90IGp1c3QgdGhlIGVuZCwgaW4gY2FzZSBpdCBjb250YWlucwoJcGFkZGluZyBieXRlcy4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJRml4ZWQgcmVncmVzc2lvbiBpbiBWRVJTSU9OX0dldExpbmtlZERsbFZlcnNpb24oKSBpbnRyb2R1Y2VkIGJ5CglwcmV2aW91cyBjaGFuZ2UuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJTVNWQ1JUX2ZjbG9zZSgpIG11c3RuJ3QgdXNlIHRoZSBfZmxhZyBmaWVsZCBmcm9tIHRoZSBmaWxlIHN0cnVjdHVyZQoJYWZ0ZXIgX2Nsb3NlKCkgaGFzIGJlZW4gY2FsbGVkLgoJV2hlbiBfb3Blbl9vc2ZoYW5kbGUoKSBpcyB1c2VkIGJ5IE1GQydzIENTdGRpb0ZpbGUsIGl0IGV4cGVjdHMgd3JpdGUKCWFjY2VzcyBldmVuIHRob3VnaCBpdCBkb2Vzbid0IHNldCB0aGUgbmVjZXNzYXJ5IGZsYWcgYml0LgoKCSogZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvcmVnLmM6CglWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCVVuaWNvZGUgc3RyaW5ncyB0ZXJtaW5hdGlvbiBmaXhlcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglGaXggYSByZWdyZXNzaW9uIHdoZW4gbG9hZGluZyBhIHJlYWwgd2luZG93cyByZWdpc3RyeS4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgbXNkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBwcm90b3R5cGUgZm9yIEdldENvbXByZXNzZWRGaWxlU2l6ZS4gTW92ZSBzb21lIGludDIxIGZ1bmN0aW9ucyB0bwoJd2luZWRvcy4gSW1wcm92ZSBmaWxlIGF0dHJpYnV0ZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCURvbid0IGxvb2sgYXQgdGhlIHNlY29uZCBjaGFyYWN0ZXIgb2YgdGhlIHBhdGggdW5sZXNzIHRoZSBmaXJzdAoJY2hhcmFjdGVyIGlzIG5vbi1OVUwuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCURvbid0IGNvbnZlcnQgdW5pbml0aWFsaXplZCBieXRlcyBvZiB0aGUgZmlsZW5hbWUgZnJvbSB3aWRlIHRvCgltdWx0aWJ5dGUuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglNYWtlIHN1cmUgdGhlIG5ldyBhcnJheSBvZiBwcmludGVyIHBvaW50ZXJzIGlzIE5VTEwgaW5pdGlhbGl6ZWQuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJRG9uJ3QgcmVhZCB1bmluaXRpYWxpemVkIGRhdGEgd2hlbiBhICckJyBpcyBmb3VuZC4KCgkqIGxpYnMvd2luZS9sZHQuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglNYWtlIHN1cmUgYWxsIHRoZSBiaXRzIG9mIHRoZSBMRFQgYXJlIGluaXRpYWxpemVkLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglJbml0aWFsaXplIGxwTG9nRm9udC0+bGZRdWFsaXR5IHRvIHRoZSBkZWZhdWx0LgoKMjAwMy0wMy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCUFkZCBpbmZvIG9uIGhvdyB0byB1c2UgdGhlIFdpbmUgdW5pbnN0YWxsZXIuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9jb250cm9scy5oLCBkbGxzL3VzZXIvZGlhbG9nMTYuYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvd25kMTYuYywgd2luZG93cy9kaWFsb2cuYzoKCU1vdmVkIDE2LWJpdCBkaWFsb2cgcm91dGluZXMgdG8gYSBzZXBhcmF0ZSBkaWFsb2cxNi5jIGZpbGUuCglGaXhlZCB3aW5kb3cgY3JlYXRpb24gdG8gY3JlYXRlIEFTQ0lJIHdpbmRvd3Mgd2hlbiBjYWxsZWQgdGhyb3VnaCBvbmUKCW9mIHRoZSBBU0NJSSBkaWFsb2cgZnVuY3Rpb25zLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOiBBdm9pZCBjcmFzaCBpZiBzbmRfcGNtX29wZW4gZmFpbHMuCgoJKiBkbGxzL29sZTMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywKCSAgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsIGRsbHMvb2xlMzIvcmVnc3ZyLmMsIGRsbHMvb2xlMzIvdmVyc2lvbi5yYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUltcGxlbWVudCBEbGxSZWdpc3RlclNlcnZlciBhbmQgRGxsVW5yZWdpc3RlclNlcnZlciBmb3Igb2xlMzIuZGxsLCBhbmQKCWFkZCBPbGVTZWxmUmVnaXN0ZXIgdmVyc2lvbiBzdHJpbmcuCgoJKiBNYWtlLnJ1bGVzLmluLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLAoJICB0b29scy93cmMvd3JjLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIG5vIGxvbmdlciBuZWVkZWQgLW0gb3B0aW9uLCBpZ25vcmUgLXIgZm9yIGNvbXBhdGliaWxpdHkKCXdpdGggcmMuCglSZW5hbWUgLUIgdG8gLS1lbmRpYW5lc3MsIC1kIHRvIC0tZGVidWcsIC1XIHRvIC0tcGVkYW50aWMuCglBZGQgYSBuZXcgLVUsLS11bmRlZmluZSBvcHRpb24gdG8gdW5kZWZpbmVkIHByZXByb2Nlc3NvciBzeW1ib2xzLgoJQ2xlYW51cCB0aGUgaGVscCBtZXNzYWdlIChvcmRlciB0aGUgbG9uZyBvcHRpb25zIGFscGhhYmV0aWNhbGx5KS4KCgkqIGluY2x1ZGUvbXN2Y3J0L2Vycm5vLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggZXJybm8gbGlua2FnZSB3aGVuIGNvbXBpbGluZyBpbiBDKysuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUFsYmVydG8gTWFzc2FyaSA8YW1hc3NhcmlAcHJvZ3Jlc3MuY29tPgoJQWRkZWQgSW50ZXJuZXRTZXRTdGF0dXNDYWxsYmFja0EgYW5kIGEgc3R1YiBmb3IKCUludGVybmV0U2V0U3RhdHVzQ2FsbGJhY2tXLgoKCSogYWNsb2NhbC5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9kcml2ZS5jLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsCgkgIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zaWduYWwuYzoKCVJlcGxhY2VkIFdJTkVfQ0hFQ0tfU1RSVUNUX01FTUJFUiBhdXRvY29uZiBtYWNybyBieSB0aGUgc3RhbmRhcmQKCUFDX0NIRUNLX01FTUJFUlMuIEFkZGVkIGNoZWNrIGZvciBzaV9mZCBpbiBzaWdpbmZvX3QuCgoJKiBsaWJzL3dpbmUvbG9hZGVyLmM6IFlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglzdGRpbnQuaCBzaG91bGQgYmUgaW5jbHVkZWQgZm9yIGNvbXBpbGluZyBvbiBOZXRCU0QuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IFlvcmljayBIYXJkeSA8eWhAbWV0cm93ZWIuY28uemE+CglBZGRlZCBmaWVsZHMgZnJvbSBOZXRCU0Qgc3RydWN0IHNpZ2NvbnRleHQgb24gaTM4Ni4KCgkqIG1lbW9yeS9nbG9iYWwuYzogWW9yaWNrIEhhcmR5IDx5aEBtZXRyb3dlYi5jby56YT4KCUFkZGVkIHRoZSBzeXNjdGwgY2FsbHMgZm9yIE5ldEJTRCB0byBkZXRlcm1pbmUgdGhlIHBoeXNpY2FsIG1lbW9yeQoJYXZhaWxhYmxlLgoKCSogbGlicy91bmljb2RlL3dpbmVfdW5pY29kZS5kZWYsIGxpYnMvd2luZS93aW5lLmRlZjoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUZpeGVkIHRoZSAuZGVmIGZpbGVzIGZvciB0aGUgTWluZ3cgYnVpbGQuCgoyMDAzLTAzLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd3BwL3ByZXByb2MuYywgdG9vbHMvd3BwL3dwcC5jLCB0b29scy93cHAvd3BwLmgsCgkgIHRvb2xzL3dwcC93cHBfcHJpdmF0ZS5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFsbG93IHdwcCB1c2VycyB0byB1bmRlZmluZSBwcmV2aW91c2x5IGRlZmluZWQgc3ltYm9scy4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy93cmMuYywKCSAgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdW51c2VkIG9wdGlvbnMgLWEgYW5kIC1DLgoJQ29sbGFwc2UgdGhlIC13IGludG8gLU8sIGZvciBzeW1tZXRyeSB3aXRoIC1KLgoJVXBkYXRlIHRoZSBtYW4gcGFnZSB0byB0aGUgbGF0ZXN0IG9wdGlvbnMuCgoJKiB0b29scy93aW5lbWFrZXI6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgcGFzcyB1bm5lY2Vzc2FyeSBmbGFncyB0byB3cmMgaW4gZ2VuZXJhdGVkIG1ha2VmaWxlcy4KCgkqIGRsbHMvbXN2Y3J0L2Rpci5jOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCV93c3BsaXRwYXRoOiBEaXNwbGF5IGNvcnJlY3RseSB0aGUgcGF0aCBiZWluZyBzcGxpdC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmgsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUltcGxlbWVudGVkIFNITFdBUElfMjY2IGFuZCBTSExXQVBJXzI3MS4KCgkqIG9iamVjdHMvZGMuYzogUC4gQ2hyaXN0ZWFzIDxwX2NocmlzdEBob2wuZ3I+CglGaXhlZCB0eXBvIGluIFNldEdyYXBoaWNzTW9kZS4KCgkqIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHBfbWFpbi5jOiBQLiBDaHJpc3RlYXMgPHBfY2hyaXN0QGhvbC5ncj4KCUltcGxlbWVudGVkIE1ha2VTdXJlRGlyZWN0b3J5UGF0aEV4aXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglUcmVlVmlldyBzaG91bGQgbm90IHNlbmQgdHdvIGNsaWNrIG5vdGlmaWNhdGlvbnMgd2hlbiBiVHJhY2sgaXMgdHJ1ZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglDb3NtZXRpYyBmaXhlcy4KCjIwMDMtMDMtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywKCSAgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50ZWQgQ2hlY2tFc2NhcGVzQS9XLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2NoYW5nZS5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBmaWxlcy9jaGFuZ2UuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9maWxlLmMsCgkgIHNlcnZlci9maWxlLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci9zaWduYWwuYywgc2VydmVyL3RyYWNlLmM6CglJbXBsZW1lbnRlZCBmaWxlIGNoYW5nZSBub3RpZmljYXRpb25zLCBiYXNlZCBvbiBhIHBhdGNoIGJ5IE1pa2UKCU1jQ29ybWFjay4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJRml4IHRoZSBsb29raW4gY29tYm9ib3ggb3ZlcmxhcHBpbmcgdGhlIHRvb2xiYXIgaW4gb3Blbi9zYXZlIGZpbGUKCWRpYWxvZy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglUUkVFVklFV19HZXRJdGVtQSBzaG91bGQgaWdub3JlIHN0YXRlTWFzay4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkIG5ldyBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgcmVsYXRpdmUgZmlsZSBvciBmb2xkZXIgSXRlbUlETGlzdAoJZm9yIGEgcGF0aCBhbmQgY2hhbmdlIHVzYWdlIG9mIFNIU2ltcGxlSURMaXN0RnJvbVBhdGggdG8gY2FsbCBuZXcKCWZ1bmN0aW9uIGluc3RlYWQuCgoJKiBpbmNsdWRlL3RocmVhZC5oLCBsaWJzL3dpbmUvZXJybm8uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jOgoJTW92ZWQgZXJybm9fbG9jYXRpb24gc3VwcG9ydCB0byBzeXNkZXBzLmMuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9mZC5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsCgkgIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NpZ25hbC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglBZGRlZCBnZW5lcmljIHNpZ25hbCBoYW5kbGluZyBtZWNoYW5pc20gYmFzZWQgb24gcGlwZXMgdG8gc3luY2hyb25pemUKCXNpZ25hbHMgd2l0aCB0aGUgbWFpbiBwb2xsIGxvb3AuCgoJKiBpbmNsdWRlL21zdmNydC9jb25pby5oLCBpbmNsdWRlL21zdmNydC9pby5oLAoJICBpbmNsdWRlL21zdmNydC9wcm9jZXNzLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmg6CglVc2UgYWxpYXNlcyBpbnN0ZWFkIG9mICNkZWZpbmVzIGZvciB0aGUgdmFyYXJncyBmdW5jdGlvbnMgd2hlbiB1c2luZwoJZ2NjLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9tb2R1bGUuaCwgcmVsYXkzMi9idWlsdGluMzIuYywKCSAgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCS0gbm8gbG9uZ2VyIHVzaW5nIGtlcm5lbDMyJ3MgQVBJcyBidXQgbnRkbGwncwoJLSBCVUlMVElOMzJfZGxvcGVuIG5vdyBwcm9wZXJseSByZXR1cm5zIE5URExMIHN0eWxlIHN0YXR1cyBjb2RlcwoKCSogd2luZG93cy9zeXNwYXJhbXMuYzogU3RlcGhhbiBCRVVaRSA8ZmJpZ2d1bkBob3RtYWlsLmNvbT4KCUltcGxlbWVudGVkIGEgZGVmYXVsdCBiZWhhdmlvciBmb3IgU1BJX0dFVEdSQURJRU5UQ0FQVElPTlMgZmxhZyBpbgoJU3lzdGVtUGFyYW1ldGVyc0luZm9BLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbG9jYWxlLmMsIGluY2x1ZGUvd2lubmxzLmg6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCVN0dWJzIGZvciBFbnVtU3lzdGVtTGFuZ3VhZ2VHcm91cHN7QXxXfS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglDb3JyZWN0IHRoZSBjaGVjayBmb3IgY2hhbmdlZCB0cmVldmlldyBpdGVtcywgc28gaXRlbSBzZXRzIHJlcGFpbnQKCXByb3Blcmx5LgoKMjAwMy0wMy0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglTdG9yZSAlZ3MgaW4gdGhlIFRFQiBvbiBldmVyeSBjYWxsIHRvIDE2LWJpdCBjb2RlLCBhbmQgZG9uJ3QgcmVzdG9yZQoJaXQgZnJvbSB0aGUgVEVCIGZvciBzaWduYWxzIHRoYXQgZGlkIG5vdCBoYXBwZW4gaW4gMTYtYml0IGNvZGUuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglNYXhpbWUgQmVsbGVuZ+kgPG1heGltZS5iZWxsZW5nZUBsYXBvc3RlLm5ldD4KCUZpeCBob3cgdGhlIHNpemUgb2YgdGhlIGRpYWxvZyBpcyBjb21wdXRlZCBhbmQgdGhlIGNoaWxkIGNvbXBvbmVudAoJcGxhY2VkLgoJSW4gY2FzZSB0aGUgaGVscCBidXR0b24gYW5kIHRoZSByZWFkb25seSBjaGVjayBib3ggYXJlIGhpZGRlbiwgcGVyZm9ybQoJdGhlIHJlc2l6aW5nIGJlZm9yZSBjYWxsaW5nIHRoZSBob29rIHByb2NlZHVyZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIHByb2dyYW1zL3djbWQvYmF0Y2guYywKCSAgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglMZXQgd2NtZCBoYW5kbGUgLmNtZCBmaWxlcyBsaWtlIC5iYXQgZmlsZXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIHVzaW5nIGtlcm5lbDMyJ3MgQVBJcyBidXQgbnRkbGwncy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFkZCB0cmFpbGluZyBmdWxsLXN0b3AgdG8gd2FybmluZyBpbiBESVJfR2V0UGF0aCgpLgoKMjAwMy0wMy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCUF2b2lkIHJlZmVyZW5jZSB0byB3aW5lX2dldF9jcyBmdW5jdGlvbiBmcm9tIGxpYndpbmUuCgoJKiBjb250cm9scy9zY3JvbGwuYzoKCVJldmVydCBicm9rZW4gY2hhbmdlIHRvIHRoZSBzY3JvbGxiYXIgcG9zaXRpb24gYWRqdXN0bWVudCBjb2RlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIG1pc2NlbXUvTWFrZWZpbGUuaW46CglJZiBzdXBwb3J0ZWQsIHJlbG9jYXRlIHRoZSBtYWluIHdpbmUgYmluYXJ5IHRvIGEgaGlnaGVyIGFkZHJlc3MgdG8KCWxlYXZlIG1vcmUgc3BhY2UgZm9yIHRoZSBXaW4zMiBleGVjdXRhYmxlLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJTWFrZSBzdXJlIGNoYW5nZXMgdG8gdGhlIGRlYnVnIHJlZ2lzdGVycyB3aGlsZSBpbnNpZGUgYSBTSUdUUkFQCglleGNlcHRpb24gYXJlIHRha2VuIGludG8gYWNjb3VudCAoYmFzZWQgb24gYSBwYXRjaCBieSBBbGV4IFBhc2FkeW4pLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IEJyaWFuIFZpbmNlbnQgPFZpbmNlbnRCQGNvcHBlcmNvbG9yYWRvLmNvbT4KCVByb21wdCB0aGUgdXNlciBhZ2FpbiBpZiB0aGV5IGRvbid0IGdldCB0aGUgcm9vdCBwYXNzd29yZCByaWdodC4KCgkqIHRvb2xzL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvbid0IGF0dGVtcHQgdG8gY29tcGlsZSAucmVzIGZpbGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU2VuZCBMVk5fT0RDQUNIRUhJTlQgbm90aWZpY2F0aW9uIGZvciBMVlNfT1dORVJEQVRBIHN0eWxlIGluIGFsbCBtb2RlcwoJKGJhc2VkIG9uIGEgcGF0Y2ggYnkgVml0YWxpeSBNYXJnb2xlbikuCgoJKiBkbGxzL2ltbTMyL2ltbS5jOiBUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJR2V0IHJpZCBvZiBXLT5BIGNhbGxzLgoKCSogb2JqZWN0cy90ZXh0LmM6IFNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHNoZW1lc2guYml6PgoJUmVvcmRlcmluZyBjYW4gdGFrZSBwbGFjZSBldmVuIGlmIHRoZSBmb250IGRvZXMgbm90IGlkZW50aWZ5IGl0c2VsZiBhcwoJYSByZW9yZGVyaW5nIG9uZS4KCjIwMDMtMDMtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbGlicy9wb3J0L21rc3RlbXBzLmMsCgkgIGxpYnMvcG9ydC91c2xlZXAuYywgbGlicy91bmljb2RlL01ha2VmaWxlLmluOgoJUG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJUHJvcGVybHkgaW5pdGlhbGl6ZSBrZXlib2FyZCBhdXRvLXJlcGVhdCBmb3IgYWxsIFggY29ubmVjdGlvbnMuCgoJKiBpbmNsdWRlL3JwY3Byb3h5Lmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21tZW50IG91dCB1bm5lZWRlZCBleHRlbnNpb25zLgoKCSogZGxscy9zaGVsbDMyL3NocG9saWN5LmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCVNISW5pdFJlc3RyaWN0ZWQoKSBmaXggYm9vbGVhbiBlcnJvciBpbnRyb2R1Y2VkIGluIGxhc3QgcGF0Y2guCgoJKiBmaWxlcy9wcm9maWxlLmM6IFN0ZWZhbiBMZWljaHRlciA8c2xlQGNhbWxpbmUuY29tPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgR2V0UHJpdmF0ZVByb2ZpbGVJbnQgZnJvbSBhc2NpaSB0byB1bmljb2RlLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLAoJICBkbGxzL2N0bDNkL01ha2VmaWxlLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLAoJICBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5ubHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW50YWIzMi9NYWtlZmlsZS5pbiwKCSAgbWlzY2VtdS9NYWtlZmlsZS5pbjoKCUxpc3QgMTYtYml0IHNwZWMgZmlsZXMgZXhwbGljaXRseSB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIHNvbWUgdmVyc2lvbnMKCW9mIG1ha2UuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIG1pc2NlbXUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUNvbnZlcnRlZCB3aW5lYnVpbGQgb3B0aW9uIHBhcnNpbmcgdG8gdXNlIGdldG9wdF9sb25nLiBBZGRlZCBhIG51bWJlcgoJb2YgbG9uZyBhbGlhc2VzIGZvciB0aGUgZXhpc3Rpbmcgc2hvcnQgb3B0aW9ucy4KCgkqIGxpYnMvd2luZS9NYWtlZmlsZS5pbiwgbGlicy93aW5lL3dpbmUuZGVmOgoJQWRkZWQgYSAuZGVmIGZpbGUgZm9yIGxpYndpbmUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTWFrZSB1c2Ugb2YgLmhhbGYgYW5kL29yIC5hc2NpaXogYXNzZW1ibGVyIGtleXdvcmRzIHdoZW4gbmVjZXNzYXJ5LgoKMjAwMy0wMy0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbXN2Y3J0L2NvbmlvLmgsIGluY2x1ZGUvbXN2Y3J0L2N0eXBlLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2RpcmVjdC5oLCBpbmNsdWRlL21zdmNydC9tYWxsb2MuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvcHJvY2Vzcy5oLCBpbmNsdWRlL21zdmNydC9zZWFyY2guaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaCwgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0cmluZy5oOgoJTWFkaHVyYSBTYWhhc3JhYnVkaGUgPHNhaGFzcmFiQHVzYy5lZHU+CglDaGFuZ2VkIHRoZSBtYWNyb3MgaW4gdGhlIG1zdmNydCBoZWFkZXJzIHRvIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zLgoKCSogZGxscy93aW5lZG9zL2ludDMxLmMsIGluY2x1ZGUvbWlzY2VtdS5oOgoJQ2hhbmdlZCB0aGUgU0VUX0FYIGV0Yy4gbWFjcm9zIHRvIG5vdCByZXR1cm4gYSB2YWx1ZS4KCgkqIG1zZG9zL2ludDIxLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCB0d28gY29tcGFyaXNvbnMgYmV0d2VlbiBhIDMyIGJpdCByZWdpc3RlciB3aXRoIGEgMTYgYml0IGVycm9yCgljb2RlLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsCgkgIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2NvbnRleHRfcG93ZXJwYy5jLAoJICBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcHRyYWNlLmMsCgkgIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCU1ha2UgYSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSB0aHJlYWQgVW5peCBwaWQgYW5kIHRoZSBwcm9jZXNzIHdpZGUKCXBpZCBmb3IgcGxhdGZvcm1zIHRoYXQgdXNlIGJvdGguCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOgoJRml4ZWQgZHVwbGljYXRlIGluaXRpYWxpemF0aW9uIG9mIHNvbWUgb2YgdGhlIHdtLT5sZHIgZmllbGRzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvY2hlY2tsaW5rLmMsIGxpYnMvTWFrZWZpbGUuaW4sCgkgIGxpYnMvdW5pY29kZS9NYWtlZmlsZS5pbiwgbGlicy91dWlkL01ha2VmaWxlLmluLAoJICBsaWJzL3dpbmUvLmN2c2lnbm9yZSwgbGlicy93aW5lL01ha2VmaWxlLmluLCBsaWJzL3dpbmUvY29uZmlnLmMsCgkgIGxpYnMvd2luZS9kZWJ1Zy5jLCBsaWJzL3dpbmUvZXJybm8uYywgbGlicy93aW5lL2xkdC5jLAoJICBsaWJzL3dpbmUvbG9hZGVyLmMsIHRvb2xzL3dpbmV3cmFwcGVyOgoJTW92ZWQgbGlid2luZSB0byBsaWJzLyBkaXJlY3RvcnkuCglTb21lIG1ha2VmaWxlIGZpeGVzIGFuZCBjbGVhbnVwcy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9sY2Zvcm1hdC5jLCBvbGUvb2xlMm5scy5jOgoJTW92ZWQgZGF0ZS90aW1lL2N1cnJlbmN5IGZvcm1hdCBoYW5kbGluZyB0byBuZXcgbGNmb3JtYXQuYy4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC90ZXN0cy9ydGwuYywgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYzoKCVRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAZ214LmF0PgoJVGVzdHMgZm9yIFJ0bENvbXBhcmVNZW1vcnlVbG9uZywgUnRsVW5pZm9ybSwgUnRsRG93bmNhc2VVbmljb2RlU3RyaW5nLAoJUnRsQXBwZW5kVW5pY29kZVN0cmluZ1RvU3RyaW5nLgoKCSogZGxscy9udGRsbC9sYXJnZV9pbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLAoJICBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3N0cmluZy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCVRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAZ214LmF0PgoJLSBJbXBsZW1lbnQgUnRsRG93bmNhc2VVbmljb2RlU3RyaW5nLCBSdGxVbmlmb3JtLCBpc3dkaWdpdCwgaXN3bG93ZXIsCgkgIGlzd3NwYWNlLCBpc3d4ZGlnaXQuCgktIEZpeGVkIFJ0bEludDY0VG9Vbmljb2RlU3RyaW5nIGFuZCBSdGxJbnRlZ2VyVG9Vbmljb2RlU3RyaW5nLgoJLSBBY2NvcmRpbmcgdG8gdGVzdHMgUnRsQXBwZW5kVW5pY29kZVN0cmluZ1RvU3RyaW5nIGxlYXZlcyB0aGUKCSAgZGVzdGluYXRpb24gdW5jaGFuZ2VkIHdoZW4gdGhlIHNvdXJjZSBsZW5ndGggaXMgMCAoRklYRUQpLgoJLSBEb2N1bWVudGF0aW9uIHVwZGF0ZXMgaW4gUnRsRXh0ZW5kZWRNYWdpY0RpdmlkZSwKCSAgUnRsTGFyZ2VJbnRlZ2VyVG9DaGFyLCBSdGxJbnQ2NFRvVW5pY29kZVN0cmluZywgUnRsVXBwZXJDaGFyLAoJICBSdGxVcHBlclN0cmluZywgUnRsVXBjYXNlVW5pY29kZUNoYXIsIFJ0bENoYXJUb0ludGVnZXIsCgkgIFJ0bEludGVnZXJUb0NoYXIsIFJ0bFVuaWNvZGVTdHJpbmdUb0ludGVnZXIsCgkgIFJ0bEludGVnZXJUb1VuaWNvZGVTdHJpbmcsIF91bHRvYSwgX2x0b2EsIF9pdG9hLCBfdWk2NHRvYSwgX2k2NHRvYSwKCSAgX2F0b2k2NCwgX3VsdG93LCBfbHRvdywgX2l0b3csIF91aTY0dG93LCBfaTY0dG93LCBfd3RvbCwgX3d0b2ksCgkgIF93dG9pNjQuCgoyMDAzLTAzLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsCgkgIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglTcGxpdCBzaWduYWwgYmxvY2tpbmcgY29kZSBvdXQgb2YgU0lHTkFMX1Jlc2V0IGludG8gU0lHTkFMX0Jsb2NrLgoJQWRkZWQgU0lHVEVSTSBoYW5kbGVyLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCXNoZWxsLmMgaXMgbm93IDE2LWJpdCBvbmx5LgoKCSogc2VydmVyL2ZkLmM6CglJZ25vcmUgZmNudGwgZmFpbHVyZSB3aGVuIHNldHRpbmcgYSB3cml0ZSBsb2NrIG9uIGEgcmVhZCBvbmx5IGZpbGUuCgoJKiBkbGxzL250ZGxsL3J0bHN0ci5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBsaWJzL3VuaWNvZGUvY2FzZW1hcC5jLAoJICBsaWJzL3VuaWNvZGUvY3BtYXAucGwsIGxpYnMvdW5pY29kZS9jcHRhYmxlLmMsIGxpYnMvdW5pY29kZS9tYnRvd2MuYywKCSAgbGlicy91bmljb2RlL3V0ZjguYywgbGlicy91bmljb2RlL3djdG9tYi5jLCBsaWJzL3VuaWNvZGUvd2N0eXBlLmMsCgkgIGxpYnMvdW5pY29kZS93aW5lX3VuaWNvZGUuZGVmLCBtZW1vcnkvY29kZXBhZ2UuYywgdG9vbHMvd21jL2xhbmcuYywKCSAgdG9vbHMvd21jL21jbC5jLCB0b29scy93bWMvd3JpdGUuYywgdG9vbHMvd3JjL3BhcnNlci5sLAoJICB0b29scy93cmMvdXRpbHMuYzoKCUFkZGVkICd3aW5lJyBwcmVmaXggdG8gbGlid2luZV91bmljb2RlIGV4cG9ydHMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgaW5jbHVkZS9tb2R1bGUuaCwKCSAgbG9hZGVyL3BlX2ltYWdlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCVJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBNT0RSRUYuZmluZF9leHBvcnQgZmllbGQuCgoJKiBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJLSBBZGQgbmV3IFcySyBwb2xpY2llcyB0byB0aGUga25vd24gbGlzdCBvZiBwb2xpY2llcy4KCS0gTW9kaWZ5IHRoZSBhbGdvcml0aG1lIHRvIGdvIHRocm91Z2ggdGhlIGxpc3QgdW50aWwgYSBOVUxMIGVudHJ5IGlzCgkgIGZvdW5kIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIChJIHdhcyB0byBsYXp5IHRvCgkgIGNvdW50IHRoZW0gYWdhaW4gOy0pCgktIEZpeCBTSEluaXRSZXN0cmljdGVkIHRvIHdvcmsgYXMgVW5pY29kZSBvbiBOVCBzeXN0ZW1zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbXBsZW1lbnQgc29tZSBtb3JlIFdpbiBBUEkgZnVuY3Rpb25zIGFuZCBhZGQgc3VwcG9ydCBmdW5jdGlvbnMgZm9yCgljb21pbmcgY2hhbmdlcyB0byBTSEZpbGVPcGVyYXRpb24uCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgbGlicy9NYWtlZmlsZS5pbiwgbGlicy91bmljb2RlLy5jdnNpZ25vcmUsCgkgIGxpYnMvdW5pY29kZS9NYWtlZmlsZS5pbiwgbGlicy91bmljb2RlL2NfMDM3LmMsIGxpYnMvdW5pY29kZS9jXzA0Mi5jLAoJICBsaWJzL3VuaWNvZGUvY18xMDAwMC5jLCBsaWJzL3VuaWNvZGUvY18xMDAwNi5jLAoJICBsaWJzL3VuaWNvZGUvY18xMDAwNy5jLCBsaWJzL3VuaWNvZGUvY18xMDAyOS5jLAoJICBsaWJzL3VuaWNvZGUvY18xMDA2LmMsIGxpYnMvdW5pY29kZS9jXzEwMDc5LmMsCgkgIGxpYnMvdW5pY29kZS9jXzEwMDgxLmMsIGxpYnMvdW5pY29kZS9jXzEwMjYuYywgbGlicy91bmljb2RlL2NfMTI1MC5jLAoJICBsaWJzL3VuaWNvZGUvY18xMjUxLmMsIGxpYnMvdW5pY29kZS9jXzEyNTIuYywgbGlicy91bmljb2RlL2NfMTI1My5jLAoJICBsaWJzL3VuaWNvZGUvY18xMjU0LmMsIGxpYnMvdW5pY29kZS9jXzEyNTUuYywgbGlicy91bmljb2RlL2NfMTI1Ni5jLAoJICBsaWJzL3VuaWNvZGUvY18xMjU3LmMsIGxpYnMvdW5pY29kZS9jXzEyNTguYywgbGlicy91bmljb2RlL2NfMjA4NjYuYywKCSAgbGlicy91bmljb2RlL2NfMjA5MzIuYywgbGlicy91bmljb2RlL2NfMjg1OTEuYywKCSAgbGlicy91bmljb2RlL2NfMjg1OTIuYywgbGlicy91bmljb2RlL2NfMjg1OTMuYywKCSAgbGlicy91bmljb2RlL2NfMjg1OTQuYywgbGlicy91bmljb2RlL2NfMjg1OTUuYywKCSAgbGlicy91bmljb2RlL2NfMjg1OTYuYywgbGlicy91bmljb2RlL2NfMjg1OTcuYywKCSAgbGlicy91bmljb2RlL2NfMjg1OTguYywgbGlicy91bmljb2RlL2NfMjg1OTkuYywKCSAgbGlicy91bmljb2RlL2NfMjg2MDAuYywgbGlicy91bmljb2RlL2NfMjg2MDMuYywKCSAgbGlicy91bmljb2RlL2NfMjg2MDQuYywgbGlicy91bmljb2RlL2NfMjg2MDUuYywKCSAgbGlicy91bmljb2RlL2NfMjg2MDYuYywgbGlicy91bmljb2RlL2NfNDI0LmMsIGxpYnMvdW5pY29kZS9jXzQzNy5jLAoJICBsaWJzL3VuaWNvZGUvY181MDAuYywgbGlicy91bmljb2RlL2NfNzM3LmMsIGxpYnMvdW5pY29kZS9jXzc3NS5jLAoJICBsaWJzL3VuaWNvZGUvY184NTAuYywgbGlicy91bmljb2RlL2NfODUyLmMsIGxpYnMvdW5pY29kZS9jXzg1NS5jLAoJICBsaWJzL3VuaWNvZGUvY184NTYuYywgbGlicy91bmljb2RlL2NfODU3LmMsIGxpYnMvdW5pY29kZS9jXzg2MC5jLAoJICBsaWJzL3VuaWNvZGUvY184NjEuYywgbGlicy91bmljb2RlL2NfODYyLmMsIGxpYnMvdW5pY29kZS9jXzg2My5jLAoJICBsaWJzL3VuaWNvZGUvY184NjQuYywgbGlicy91bmljb2RlL2NfODY1LmMsIGxpYnMvdW5pY29kZS9jXzg2Ni5jLAoJICBsaWJzL3VuaWNvZGUvY184NjkuYywgbGlicy91bmljb2RlL2NfODc0LmMsIGxpYnMvdW5pY29kZS9jXzg3NS5jLAoJICBsaWJzL3VuaWNvZGUvY184NzguYywgbGlicy91bmljb2RlL2NfOTMyLmMsIGxpYnMvdW5pY29kZS9jXzkzNi5jLAoJICBsaWJzL3VuaWNvZGUvY185NDkuYywgbGlicy91bmljb2RlL2NfOTUwLmMsIGxpYnMvdW5pY29kZS9jYXNlbWFwLmMsCgkgIGxpYnMvdW5pY29kZS9jb21wb3NlLmMsIGxpYnMvdW5pY29kZS9jcG1hcC5wbCwKCSAgbGlicy91bmljb2RlL2NwdGFibGUuYywgbGlicy91bmljb2RlL2RlZmF1bHRzLCBsaWJzL3VuaWNvZGUvbWJ0b3djLmMsCgkgIGxpYnMvdW5pY29kZS9zdHJpbmcuYywgbGlicy91bmljb2RlL3V0ZjguYywgbGlicy91bmljb2RlL3djdG9tYi5jLAoJICBsaWJzL3VuaWNvZGUvd2N0eXBlLmMsIGxpYnMvdW5pY29kZS93aW5lX3VuaWNvZGUuZGVmLAoJICB0b29scy93aW5ld3JhcHBlcjoKCU1vdmVkIGxpYndpbmVfdW5pY29kZSB0byB0aGUgbGlicy8gZGlyZWN0b3J5LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJUmV3cm90ZSBtYXBwaW5nIG9mIG1vZHVsZSBpbnRvIG1lbW9yeSB1c2luZyBvbmx5IE5URExMIEFQSXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgd2luZWRlZmF1bHQucmVnLAoJICBkbGxzL2RtdXNpYy8uY3ZzaWdub3JlLCBkbGxzL2RtdXNpYy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kbXVzaWMvZG11c2ljLmMsIGRsbHMvZG11c2ljL2RtdXNpYy5zcGVjLCBkbGxzL2RtdXNpYy9kbXVzaWM4LmMsCgkgIGRsbHMvZG11c2ljL2RtdXNpY19idWZmZXIuYywgZGxscy9kbXVzaWMvZG11c2ljX2NvbGxlY3Rpb24uYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX2RsaW5zdHJ1bWVudC5jLCBkbGxzL2RtdXNpYy9kbXVzaWNfZG93bmxvYWQuYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX2luc3RydW1lbnQuYywgZGxscy9kbXVzaWMvZG11c2ljX21haW4uYywKCSAgZGxscy9kbXVzaWMvZG11c2ljX3BvcnQuYywgZGxscy9kbXVzaWMvZG11c2ljX3BvcnRkbC5jLAoJICBkbGxzL2RtdXNpYy9kbXVzaWNfcHJpdmF0ZS5oLCBkbGxzL2RtdXNpYy9kbXVzaWNfdGhydS5jLAoJICBkbGxzL2RtdXNpYy9yZWZlcmVuY2VfY2xvY2suYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kbHMxLmgsCgkgIGluY2x1ZGUvZG1kbHMuaCwgaW5jbHVkZS9kbWVycm9yLmgsIGluY2x1ZGUvZG11c2J1ZmYuaCwKCSAgaW5jbHVkZS9kbXVzaWNjLmgsIGxpYnMvdXVpZC9keGd1aWQuYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkbXVzaWMgZGxsLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIG1pc2MvdmVyc2lvbi5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CgktIGltcGxlbWVudGVkIExkclF1ZXJ5UHJvY2Vzc01vZHVsZUluZm9ybWF0aW9uCgktIHJld3JvdGUgVkVSU0lPTl9HZXRMaW5rZWREbGxWZXJzaW9uKCkgd2l0aCB0aGlzIG5ldyBmdW5jdGlvbiBpbnN0ZWFkCgkgIG9mIGFjY2Vzc2luZyBkaXJlY3RseSB0aGUgbW9kcmVmIGxpc3QKCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRm9yd2FyZC1kZWNsYXJlIHN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlciwgYXMgaXQgaXMKCUxpbnV4LXNwZWNpZmljIGFuZCBub3QgYXZhaWxhYmxlIGluIHRoZSBoZWFkZXJzIG9mIG90aGVyIHN5c3RlbXMuCgoyMDAzLTAzLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTW92ZWQgW2VmZ11jdnQgZnVuY3Rpb25zIHRvIG1zdmNydCBhbmQgZml4ZWQgdGhlbSB0byB1c2UgYSBwZXItdGhyZWFkCglidWZmZXIuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sCgkgIGxpYnMvcG9ydC9tZW1jcHlfdW5hbGlnbmVkLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jOgoJQWRkZWQgbWVtY3B5X3VuYWxpZ25lZCB0byBsaWJ3aW5lX3BvcnQuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGUuYywgb2xlL29sZTJubHMuYzoKCU1vdmVkIGEgY291cGxlIG9mIGxvY2FsZSBmdW5jdGlvbnMgZnJvbSBvbGUybmxzLmMgaW50byBsb2NhbGUuYy4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmg6IEFkZGVkIHNwcmludGZXIGFuZCB2c3ByaW50ZlcuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3dpbnRlcm5sLmgsCgkgIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL3ZlcnNpb24uYywgcmVsYXkzMi9yZWxheTM4Ni5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNb3ZlZCBXSU5FX01PRFJFRi5mbGFncyB0byBXSU5FX01PRFJFRi5sZHIuRmxhZ3MsIGFuZCBtYWtlIHVzZSBvZiB0aGUKCXNhbWUgZmxhZ3MgdmFsdWVzIGFzIFdpbjIwMDAuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJzL3BvcnQvTWFrZWZpbGUuaW4sIGxpYnMvcG9ydC9pbnRlcmxvY2tlZC5jOgoJTW92ZWQgaW50ZXJsb2NrZWQgZnVuY3Rpb25zIHRvIGxpYndpbmVfcG9ydC4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9wZV9pbWFnZS5jLAoJICBtaXNjL3ZlcnNpb24uYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRXJpYyBQb3VlY2ggPHBvdWVjaC1lcmljQHdhbmFkb28uZnI+CglNb3ZlIHNvbWUgZmllbGRzIChyZWZDb3VudCwgdGxzX2luZGV4IGFuZCBtb2R1bGUpIGZyb20gV0lORV9NT0RSRUYgdG8KCUxEUl9NT0RVTEUuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IEVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSB1bm5lZWRlZCB1bml4IHRvIFdpbjMyIGVycm9yIG1hcHBpbmcuCgoJKiB0b29scy93aW5lZ2NjLmM6IFJlcGxhY2VkIHRlbXBuYW0gYnkgbWtzdGVtcHMuCgoJKiB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvbWFrZWRlcC5jOgoJRG9uJ3QgdXNlIGxpYndpbmVfcG9ydCBpbiBtYWtlZGVwIHRvIGF2b2lkIGRlcGVuZGVuY3kgcHJvYmxlbXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicy9wb3J0L01ha2VmaWxlLmluLCBsaWJzL3BvcnQvbWtzdGVtcC5jLCBsaWJzL3BvcnQvbWtzdGVtcHMuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9nZGJwcm94eS5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzZXJ2ZXIvZmlsZS5jLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dwcC93cHAuYzoKCVJlcGxhY2VkIG1rc3RlbXAgYnkgbWtzdGVtcHMgZnJvbSBsaWJpYmVydHkuCglSZW1vdmVkIGEgY291cGxlIG9mIHVubmVjZXNzYXJ5IHBvcnRhYmlsaXR5IGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYzoKCUNoYW5nZWQgbmFtZSBvZiB0aGUgYXNtIHZlcnNpb24gb2YgUnRsVWxvbmcvc2hvcnRCeXRlU3dhcCB0byBhdm9pZAoJY29uZmxpY3RzIHdpdGggdGhlIGlubGluZSB2ZXJzaW9uLgoKCSogdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLm1hbjoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbnRyb2R1Y2UgdGhlIC1KLCAtLWlucHV0LWZvcm1hdCBvcHRpb25zIGZvciBjb21wYXRpYmlsaXR5IHdpdGgKCXdpbmRyZXMuCglDb2xscGFzZSB0aGUgLWUgb3B0aW9uIGludG8gdGhlIC1KIG9wdGlvbi4gVXBkYXRlIG1hbiBwYWdlLgoJQ2xlYW51cCBmaWxlIGhlYWRlciAocmVtb3ZlIGhpc3RvcnkgdGhhdCdzIGFscmVhZHkgaW4gbG9nIG1zZ3MsIGV0Yy4pCgoJKiBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCVJlbW92ZSBpbmNvcnJlY3QgZW50cnkgZm9yIDE2IGJpdCBkcml2ZXIgc3VwcG9ydC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglUd2VhayBlcnJvciBtZXNzYWdlIGluIFBST0ZJTEVfVXNhZ2VXaW5lSW5pKCkuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmM6CglFcmljIFBvdWVjaCA8cG91ZWNoLWVyaWNAd2FuYWRvby5mcj4KCU1vdmVkIHRoZSBtb2R1bGUgbG9hZGluZy91bmxvYWRpbmcgY29kZSBhbmQgdGhlIHJlbWFpbmluZyBuZWVkZWQKCXN0YXRpYyB2YXJpYWJsZXMgdG8gbnRkbGwuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgbG9hZGVyL21vZHVsZS5jOgoJUGFydGlhbGx5IGltcGxlbWVudGVkIExkckxvY2svVW5sb2NrTG9hZGVyTG9jay4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hdmljYXAzMi9hdmljYXAzMi5zcGVjLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvY2FiaW5ldC9jYWJpbmV0LnNwZWMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsCgkgIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjLAoJICBkbGxzL2N0bDNkL2N0bDNkMzIuc3BlYywgZGxscy9kM2Q4L2QzZDguc3BlYywgZGxscy9kM2R4OC9kM2R4OC5zcGVjLAoJICBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywKCSAgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZGlucHV0OC9kaW5wdXQ4LnNwZWMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywKCSAgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9pY21wL2ljbXAuc3BlYywKCSAgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsCgkgIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbHpleHBhbmQvbHozMi5zcGVjLAoJICBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLAoJICBkbGxzL21zaW1nMzIvbXNpbWczMi5zcGVjLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLAoJICBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywKCSAgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9vbGVkbGcvb2xlZGxnLnNwZWMsCgkgIGRsbHMvb2xlc3ZyL29sZXN2cjMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywKCSAgZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc3RpL3N0aS5zcGVjLCBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywgZGxscy90d2Fpbi90d2Fpbl8zMi5zcGVjLAoJICBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLCBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjLAoJICBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywKCSAgZGxscy93aW5tbS93aW5tbS5zcGVjLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsCgkgIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGRsbHMvd2ludGFiMzIvd2ludGFiMzIuc3BlYywKCSAgZGxscy93aW50cnVzdC93aW50cnVzdC5zcGVjLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzoKCVRha2UgYWR2YW50YWdlIG9mIG5ldyB3aW5lYnVpbGQgc3ludGF4IHRvIHJlbW92ZSByZWR1bmRhbnQgZnVuY3Rpb24KCW5hbWVzIGluIHNwZWMgZmlsZXMuCgoJKiBkbGxzL21zbmV0MzIvbXNuZXQzMi5zcGVjLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglBZGRlZCBjaGVjayBmb3IgZHVwbGljYXRlIG9yZGluYWxzLCBhbmQgZml4ZWQgYnVnIGl0IHVuY292ZXJlZCBpbgoJbXNuZXQzMi5zcGVjLgoKCSogZGxscy9vbGUzMi9naXQuYzogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglGaXhlZCBjb3B5cmlnaHQgZGF0ZS4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGxpYnMvTWFrZWZpbGUuaW4sIGxpYnMvdXVpZC8uY3ZzaWdub3JlLAoJICBsaWJzL3V1aWQvTWFrZWZpbGUuaW4sIGxpYnMvdXVpZC9keDhndWlkLmMsIGxpYnMvdXVpZC9keGd1aWQuYywKCSAgbGlicy91dWlkL3V1aWQuYywgb2xlLy5jdnNpZ25vcmUsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2R4OGd1aWQuYywKCSAgb2xlL2R4Z3VpZC5jLCBvbGUvdXVpZC5jOgoJTW92ZWQgbGlid2luZV91dWlkIHRvIHRoZSBuZXcgbGlicy8gZGlyZWN0b3J5LgoKMjAwMy0wMy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIC1KLCAtUCwgYW5kIC1WIGFzIHRoZXkgaGF2ZSBsb25nIG9wdGlvbnMgZXF1aXZhbGVudHMuCglVcGRhdGUgZG9jdW1lbnRhdGlvbiwgc21hbGwgY29kZSBjbGVhbnVwcy4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwgbGlicy9wb3J0L2dldG9wdC5jLAoJICBsaWJzL3BvcnQvZ2V0b3B0LmgsIGxpYnMvcG9ydC9nZXRvcHQxLmM6CglBZGRlZCBnZXRvcHQgcm91dGluZSB0byBsaWJ3aW5lX3BvcnQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgRGltaXRyaWUKCU8uIFBhdW4pLgoKCSogc2VydmVyL01ha2VmaWxlLmluOiBXZSBzdGlsbCBuZWVkIGxpYndpbmUgaGVyZS4uLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIGxpYnMvLmN2c2lnbm9yZSwKCSAgbGlicy9NYWtlZmlsZS5pbiwgbGlicy9wb3J0Ly5jdnNpZ25vcmUsIGxpYnMvcG9ydC9NYWtlZmlsZS5pbiwKCSAgbGlicy9wb3J0L2dldHBhZ2VzaXplLmMsIGxpYnMvcG9ydC9sc3RhdC5jLCBsaWJzL3BvcnQvbWVtbW92ZS5jLAoJICBsaWJzL3BvcnQvbWtzdGVtcC5jLCBsaWJzL3BvcnQvcHJlYWQuYywgbGlicy9wb3J0L3B3cml0ZS5jLAoJICBsaWJzL3BvcnQvc3RhdGZzLmMsIGxpYnMvcG9ydC9zdHJjYXNlY21wLmMsIGxpYnMvcG9ydC9zdHJlcnJvci5jLAoJICBsaWJzL3BvcnQvc3RybmNhc2VjbXAuYywgbGlicy9wb3J0L3VzbGVlcC5jLCBtaXNjZW11L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHNlcnZlci9NYWtlZmlsZS5pbiwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpZGwvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpZGwvdXRpbHMuYywgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvd21jL01ha2VmaWxlLmluLAoJICB0b29scy93cmMvTWFrZWZpbGUuaW46CglDcmVhdGVkIGEgc2VwYXJhdGUgc3RhdGljIHBvcnRhYmlsaXR5IGxpYnJhcnkgYW5kIG1vdmVkIHNvbWUgb2YgdGhlCglsaWJ3aW5lIHJvdXRpbmVzIGluIHRoZXJlLgoKMjAwMy0wMy0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAzMDMxOC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMy0wMy0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci90cmFjZS5jOgoJRml4ZWQgYnVnIHRoYXQgY291bGQgY2F1c2UgU2VuZE1lc3NhZ2UgdG8gcmV0dXJuIHRvbyBlYXJseSBpbiBjZXJ0YWluCgljYXNlcy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS93aW50ZXJubC5oOgoJSW1wbGVtZW50ZWQgUnRsKkJ5dGVTd2FwKCkgZnVuY3Rpb25zLCBiYXNlZCBvbiBhIHBhdGNoIGJ5IEpvbgoJR3JpZmZpdGhzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ29ycmVjdCB0aGUgYWd1bWVudCBjb3VudCBmb3IgUnRsSW5pdGlhbGl6ZUdlbmVyaWNUYWJsZSgpLgoJRml4IG15IG93biBicm93biBwYXBlciBiYWcgaW4gUnRsRmlsbE1lbW9yeVVsb25nKCkuCglSdGxHZXROdFZlcnNpb25OdW1iZXJzKCkgc2hvdWxkIG5ldmVyIHJldHVybiA8IDUuCglSZW1vdmUgUnRsQ29weU1lbW9yeSgpLCBpdHMgbm90IGFuIG50ZGxsIGV4cG9ydC4KCUltcGxlbWVudCBSdGxDb21wYXJlTWVtb3J5VWxvbmcoKSwgUnRsQ29tcHV0ZUNyYzMyKCkuCglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglNYWtlIEdldE1vZHVsZUZpbGVOYW1lQSBjYWxsIEdldE1vZHVsZUZpbGVOYW1lVy4gU21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL250ZGxsL3Rlc3RzL3J0bGJpdG1hcC5jOiBBdm9pZCBleHBsaWNpdCBsb25nIGxvbmcgY29uc3RhbnRzLgoKCSogaW5jbHVkZS9kZHJhd2kuaDogRml4ZWQgYSBmZXcgZnVuY3Rpb24gcG9pbnRlciB0eXBlZGVmcy4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCU1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJU3R1YiBmb3IgU0hBdXRvQ29tcGxldGUuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsCgkgIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdGltZS5jLAoJICBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL29tLmMsCgkgIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVhdXQzMi90eXBlbGliMTYuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3RocmVhZC5jLCBkbGxzL3NobHdhcGkvdXJsLmMsCgkgIGRsbHMvc2hsd2FwaS93c3ByaW50Zi5jLCBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvd3NvY2szMi9zZXJ2aWNlLmMsCgkgIG9sZS9vbGUybmxzLmMsIHdpbmRvd3MvZGNlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL21vZHVsZS5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIGxvYWRlci9tb2R1bGUuYzoKCUVyaWMgUG91ZWNoIDxwb3VlY2gtZXJpY0B3YW5hZG9vLmZyPgoJLSBhZGRlZCBMRFJfTU9EVUxFIHN0cnVjdHVyZSB0byBXSU5FX01PRFJFRiBhbmQgbWFkZSBkdW1teSBmaWxsaW5nIG9mCgkgIHRoaXMgc3RydWN0dXJlCgktIGltcGxlbWVudGF0aW9uIG9mIExkckZpbmRFbnRyeQoJLSBpbXBsZW1lbnRhdGlvbiBvZiBHZXRNb2R1bGVGaWxlTmFtZVtBV10gb24gdG9wIG9mIExkckZpbmRFbnRyeQoKCSogZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Rlc3RzL3N0cmluZy5jOgoJVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0BnbXguYXQ+CglUZXN0cyBmb3IgX2l0b2EsIF9sdG9hLCBfdWx0b2EsIF9pNjR0b2EsIF91aTY0dG9hLCBfaXRvdywgX2x0b3csCglfdWx0b3csIF9pNjR0b3csIF91aTY0dG93LCBfYXRvaTY0LCBfd3RvaSwgX3d0b2wsIF93dG9pNjQuCgoJKiBzZXJ2ZXIvZmQuYywgc2VydmVyL2ZpbGUuaDoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4IHNpZ25hdHVyZSBvZiBvcGVuX2ZkKCkuCgoJKiBkbGxzL21zdmNydC9jcHBleGNlcHQuYywgZGxscy9tc3ZjcnQvY3BwZXhjZXB0Lmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIF9fQ3h4RGV0ZWN0UmV0aHJvdygpLCAgX19DeHhRdWVyeUV4Y2VwdGlvblNpemUoKS4KCUNvbnN0aWZ5IHBhcmFtZXRlcnMgKGVuYWJsaW5nIHN0YXRpYyBSVFRJKS4KCU1vdmUgdHlwZSBkZWZpbml0aW9ucyBpbnRvIGEgaGVhZGVyIGZvciBzaGFyaW5nIHdpdGggY3BwLmMgb2JqZWN0cy4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUhhbmRsZSBlbmQgb2YgbGluZSBhcyBhIHN5bnRhY3RpYyBlbGVtZW50IGluIHRoZSBzcGVjIGZpbGUgcGFyc2VyOwoJYmFja3NsYXNoZXMgY2FuIGJlIHVzZWQgdG8gY29udGludWUgbGluZXMuIFRoaXMgYWxsb3dzIHVzIHRvIHNraXAgb3ZlcgoJZXJyb3JzIHRvIGNvbnRpbnVlIHBhcnNpbmcsIGFuZCBhbHNvIHRvIG1ha2Ugc3BlY2lmaWNhdGlvbiBvZiBhbiBlbnRyeQoJcG9pbnQgbGluayBuYW1lIG9wdGlvbmFsLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLAoJICBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvbGlzdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYzoKCUltcGxlbWVudGVkIGZpbGUgbG9ja2luZyBmdW5jdGlvbnMgKHBhcnRseSBiYXNlZCBvbiBteSBvbGQgQ29yZWwKCXBhdGNoKS4gQWRkZWQgYSBmZXcgcmVncmVzc2lvbiB0ZXN0cy4KCjIwMDMtMDMtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVNvbWV3aGF0IG1vcmUgcmVsaWFibGUgZHNvdW5kIHBvc2l0aW9uIG5vdGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglKYW5pdG9yaWFsLiBHZXQgcmlkIG9mIFctPkEgY2FsbC4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N5cy90eXBlcy5oLCBpbmNsdWRlL3dpbnNvY2suaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWZpbmUgdGhlIHVfe2NoYXIsc2hvcnQsaW50LGxvbmd9IGluIG1zdmNydC9zeXMvdHlwZXMuaCBmb3IgVW5peAoJY29tcGF0aWJpbGl0eSAobmVlZGVkIGJ5IHdpbnNvY2suaCBhcyB3ZWxsKS4KCgkqIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbXN2Y3J0Lmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTW92ZSBhIGNvdXBsZSBvZiBzaGFyZWQgZGVmaW5pdGlvbnMgaW50byBtc3ZjcnQuaC4KCWluaXRfdnRhYmxlcygpIGlzIHJlZHVuZGFudCB3aXRoIHVwY29taW5nIGZpeGVzIHRvIGN4eCBmdW5jdGlvbnMuCgoJKiBkbGxzL21zdmNydC9tdGRsbC5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJX0VYSVRfTE9DSzIgaXMgdXNlZCBieSB0eXBlX2luZm8gb2JqZWN0cy4KCgkqIGluY2x1ZGUvd2lucmVnLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBwcm90b3R5cGVzIGZvciB0aGUgUmVtb3RlIFNodXRkb3duIEFwaSBjYWxscy4KCgkqIGRsbHMvbnRkbGwvc2VjLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUNvbnZlcnQgV0lORV9EUFJJTlRGIGNhbGxzIHRvIFdJTkVfVFJBQ0UuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJUmVtb3ZlZCBzdXBwb3J0IGZvciB0aGUgJ2ZvcndhcmQnIG9yZGluYWwgdHlwZS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWM6CglSZXBsYWNlZCBmb3J3YXJkcyBieSBub3JtYWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGaXhlZCBhIGNvdXBsZSBvZiByZWxheSBhcmd1bWVudHMsIGFuZCB1cGRhdGVkIHNvbWUgb2YgdGhlIHN0dWIKCWNvbW1lbnRzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJRml4IHRoZSB0YWIgaGVpZ2h0IHNvIHRoZSBsYWJlbHMgZG9uJ3QgY2xpcCwgYW5kIHJlc3RvcmUgdGhlIG9mZnNldAoJY29uc3RhbnQgdG8gd2hhdCBpdCB3YXMgYmVmb3JlLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJRml4IGEgdHlwby4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgaW5jbHVkZS9zaGxvYmouaDoKCVBhdWwgUnVwZSA8cHJ1cGVAbXlyZWFsYm94LmNvbT4KCUFkZCBDU0lETF9QUk9GSUxFUy4gIEltcHJvdmVkIGxvZ2dpbmcgZm9yIG5vbi1leGlzdGVudCBDU0lETCB2YWx1ZXMuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBQYXVsIFJ1cGUgPHBydXBlQG15cmVhbGJveC5jb20+CglGaXggYSBjb3VwbGUgSU5UL1VJTlQgY29tcGFyaXNvbnMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFBhdWwgUnVwZSA8cHJ1cGVAbXlyZWFsYm94LmNvbT4KCVRyZWF0IGJsYW5rIHByb3RvY29sIHRoZSBzYW1lIGFzIE5VTEwgaW4gZ2V0c2VydmJ5bmFtZSAmCglnZXRzZXJ2Ynlwb3J0LgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2RwbGF5L2RwbGF5LnNwZWMsCgkgIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLAoJICBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGZvbGRlci9zaGZvbGRlci5zcGVjLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywKCSAgZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywKCSAgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL3dvdzMyL3dvdzMyLnNwZWMsCgkgIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWM6CglSZXBsYWNlZCBmb3J3YXJkcyBieSBub3JtYWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYzoKCUltcGxlbWVudGVkIF9nZXRkbGxwcm9jYWRkcigpLCBpdCBjYW5ub3QgYmUgc2ltcGx5IGEgZm9yd2FyZCB0bwoJR2V0UHJvY0FkZHJlc3MuCgoJKiB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglEaXNhYmxlICd2YXJpYWJsZScgaW4gV2luMzIgc3BlYyBmaWxlcy4KCUFkZGVkIHN1cHBvcnQgZm9yIGZvcndhcmRlZCAnZXh0ZXJuJyBvcmRpbmFscy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBBdm9pZCB3YXJuaW5ncy4KCjIwMDMtMDMtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglEb24ndCBlbnRlciBhbiBpbXBvcnRlZCBkbGwgaW4gdGhlIGltcG9ydCB0YWJsZSBhdCBhbGwgaWYgd2UgZGlkbid0CgluZWVkIHRvIGltcG9ydCBhbnkgc3ltYm9sIGZyb20gaXQuCgoJKiBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJUHJvcGVybHkgaW1wb3J0IGJhc2V0c2QuaCBhbmQgZ3VpZGRlZi5oLgoKCSogdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC91dGlscy5jLCB0b29scy93aWRsL3dpZGwuYzoKCU1ha2Ugc3VyZSB3ZSBkaXNwbGF5IHRoZSBjb3JyZWN0IGZpbGUgbmFtZSBhbmQgbGluZSBpbiBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCVZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJLSBtYWtlIFNIR2V0RmlsZUluZm8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzCgktIGZpeCByZXF1ZXN0cyBmb3IgbGFyZ2UgaWNvbnMKCjIwMDMtMDMtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9taXNjLmM6CglJbXBsZW1lbnRlZCBfY2hrZXNwLCBiYXNlZCBvbiBhIHBhdGNoIGJ5IEpvbiBHcmlmZml0aHMuCgoJKiBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvZXhpdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURpc3BsYXkgYWJub3JtYWwgZXhpdCB0ZXh0IGluIGEgbWVzc2FnZSBib3ggZm9yIEdVSSBhcHBzLgoKCSogaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS93dHlwZXMuaWRsOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBzb21lIG1pc3NpbmcgdHlwZXMgbmVlZGVkIGZvciB0aGUgdXBjb21pbmcgb2NpZGwuaWRsLgoJQWRkIG1pc3NpbmcgdmFyaWFudCB0eXBlcy4KCUNvcnJlY3QgdGhlIGRlZmluaXRpb24gb2YgREVDSU1BTCB0eXBlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEFkZGVkICNpZmRlZiBjaGVja3MgZm9yIFNPVU5EX01JWEVSX0lORk8uCgoJKiBkb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50OiBBZGRlZCBKb24gR3JpZmZpdGhzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW46CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXBkYXRlZCBydWxlcyBmb3IgQVBJIGRvYyBnZW5lcmF0aW9uLgoJQWRkIHNnbWxwYWdlcyB0YXJnZXQgZm9yIG1ha2luZyBhIGRvY2Jvb2sgJ1dpbmUgQVBJIEd1aWRlJy4KCgkqIHRvb2xzL2MybWFuLnBsOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wcm92ZSB0aGUgbG9vay9jb250ZW50IG9mIHRoZSBtYW4gcGFnZSBvdXRwdXQuCglHZW5lcmF0ZSBmb3IgYWxsIGV4cG9ydGVkIGZ1bmN0aW9ucyAodGhhdCBoYXZlIGRvY3MpLgoJQWRkIGRsbCBzdW1tYXJ5IHBhZ2UsIEhUTUwgYW5kIFNHTUwgb3V0cHV0LgoKCSogZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWw6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnQgdGhlIEFQSSBnZW5lcmF0aW9uIHByb2Nlc3MgYW5kIGZvcm1hdC4KCVByb3ZpZGUgYW4gb3ZlcnZpZXcgb2YgdGhlIFdpbmUgZG9jdW1lbnRhdGlvbiBzeXN0ZW0uCglBIGNvdXBsZSBvZiBtaW5vciBvdGhlciBmaXhlcy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9ydGxzdHIuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgUnRsRG93bmNhc2VVbmljb2RlQ2hhcigpLCBSdGxFcXVhbENvbXB1dGVyTmFtZSgpLAoJUnRsRXF1YWxEb21haW5OYW1lKCkuIERvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBpbmNsdWRlL3NobHdhcGkuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZCBzb21lIG1pc3NpbmcgcHJvdG90eXBlcy4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTSENyZWF0ZVRocmVhZCBpcyBleHBvcnRlZCBieSBuYW1lIF9hbmRfIG9yZGluYWwuCgoJKiBkbGxzL3NobHdhcGkvY2xpc3QuYywgZGxscy9zaGx3YXBpL3Rlc3RzL2NsaXN0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ29ycmVjdCBiZWhhdmlvdXIgZm9yIHNvbWUgZXJyb3IgY29uZGl0aW9ucy4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGluY2x1ZGUvd2luZS9kZWJ1Zy5oOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJUmVhbGx5IGdldCByaWQgb2YgZGVidWcgY29kZS9zdHJpbmdzIGlmIHdlJ3JlIGJ1aWxkaW5nIHdpdGhvdXQgdGhlbS4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgX19wX19wZ21wdHIsIF9wZ21wdHIuCgoJKiB0b29scy93aW5lZHVtcC9wZS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJT25seSBzb3J0IHRoZSBudW1iZXIgb2Ygc3ltYm9scyBhY3R1YWxseSBmb3VuZC4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglPdXRwdXQgYSBkdW1teSBmdW5jdGlvbiBmb3IgbGlua2luZy4KCURlZmluZSBfX1dJTkVfVVNFX05BVElWRV9IRUFERVJTIGZvciB0ZXN0cyB0aGF0IG5lZWQgdG8gY2FyZS4KCUNoYW5nZSB0aGUgZGVidWcgaW5mb3JtYXRpb24gZm9ybWF0IHRvIHByZXZlbnQgd2luZWRiZyBmcm9tIGNyYXNoaW5nLgoKCSogaW5jbHVkZS93aW5nZGkuaDogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVByb3RlY3QgdGhlIFRFWFRNRVRSSUMgc3RydWN0IGZyb20gcmVkZWZpbml0aW9uLgoKCSogY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglSZXBsYWNlIERQUklOVEYgd2l0aCBUUkFDRS4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9taXhlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgaW5jbHVkZS9tbWRkay5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIG11bHRpcGxlIGRpcmVjdCBzb3VuZCBkZXZpY2VzLgoKCSogZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsCgkgIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLAoJICBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3NldHVwYXBpL3BhcnNlci5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywKCSAgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgZmlsZXMvc21iLmM6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJUmVwbGFjZSBEUFJJTlRGIHdpdGggVFJBQ0UuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IE1heGltZSBCZWxsZW5n6SA8bWF4aW1lLmJlbGxlbmdlQGxhcG9zdGUubmV0PgoJUmVuYW1lICJTaG9ydGN1dCIgdG8gIkRlc2t0b3AiLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzoKCUluaXQgc2lnbmFscyBiZWZvcmUgY2FsbGluZyBDTElFTlRfSW5pdFRocmVhZCBzaW5jZSB3ZSBjYW4gcmVjZWl2ZSBhCglzaWduYWwgdGhlcmUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJQ2hhbmdlcyBmb3IgSWNvbiBhbmQgU21hbGxJY29uIG1vZGVzOgoJIC0gZml4IHR5cG8gY2F1c2luZyB3cm9uZyBzY3JvbGwgYm91bmRhcmllcwoJIC0gcmV2ZXJzZSBtb3VzZSB3aGVlbCBzY3JvbGwgZGlyZWN0aW9ucwoJIC0gZml4IG5hdmlnYXRpb24gd2l0aCBrZXlib2FyZCB3aGVuIGF1dG8gYXJyYW5nZWQKCjIwMDMtMDMtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbW9kdWxlLmM6IENsZWFuZWQgdXAgbG9hZF9saWJyYXJ5X2FzX2RhdGFmaWxlKCkuCgoJKiBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLAoJICBkbGxzL250ZGxsL3NlYy5jOgoJQXZvaWQgR2V0UHJvY2Vzc0hlYXAoKSBpbnNpZGUgbnRkbGwuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCB3aW4zMi9uZXdmbnMuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFkZGVkIHN0dWIgZm9yIEdldERldmljZVBvd2VyU3RhdGUoKS4KCgkqIGRsbHMvbXNuZXQzMi9tc25ldDMyLnNwZWMsIGRsbHMvbXNuZXQzMi9tc25ldF9tYWluLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGRlZCBhIHN0dWIgZm9yIG1zbmV0MzIuNTcKCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNwYWNpbmcgaW5mb3JtYXRpb24gaXMgc2lnbmVkIChkZWJ1Z2dlZCBhbmQgZml4ZWQgYnkgVml0YWxpeQoJTWFyZ29sZW4pLgoJRGVjb2RlIHNwYWNpbmcgaW5mb3JtYXRpb24gaW4gdGhlIHdpbmRvdyBwcm9jZWR1cmUuCglTb21lIHNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwKCSAgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS93aW50ZXJubC5oLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9wZV9pbWFnZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGltcGxlbWVudGF0aW9uIG9mIExkckxvYWREbGwgb3V0IG9mIGxvYWRlci9tb2R1bGUuYwoJLSBpbiBpbXBhY3RlZCBmdW5jdGlvbnMsIGVuc3VyZSB0aGF0IHdlIG9ubHkgdXNlIG50ZGxsIGZ1bmN0aW9ucwoJLSBmb3IgaW50ZXJuYWwgbG9hZGluZywgc3RhcnQgdXNpbmcgTlRETEwgc3R5bGUgZm9yIGVycm9yIHJlcG9ydGluZwoJLSBtYWtpbmcgdXNlIG9mIG5ldyBMZHJMb2FkRGxsCgoJKiBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJSmFuaXRvcmlhbC4gR2V0IHJpZCBvZiBXLT5BIGNhbGxzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbnBvcy5jOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCVJlcGxhY2UgRFBSSU5URiB3aXRoIFRSQUNFLgoKCSogc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJQWRkZWQgLWYgb3B0aW9uIHRvIG1ha2Ugd2luZXNlcnZlciByZW1haW4gaW4gdGhlIGZvcmVncm91bmQgZm9yCglkZWJ1Z2dpbmcuCglDbG9zZSBzdGRpbi9zdGRvdXQgd2hlbiBub3QgaW4gdGhlIGZvcmVncm91bmQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCUZyYW5jb2lzIEdvdWdldCkuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wcm9maWxlLmM6IFdhcm5pbmcgZml4ZXMuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzoKCU9ubHkgcHJpbnQgdGhlIHRyYWNlIGhlYWRlciB3aGVuIHdlIGFyZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbmV3CglsaW5lIChzdWdnZXN0ZWQgYnkgRGltaXRyaWUgTy4gUGF1bikuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLAoJICBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gaW1wbGVtZW50YXRpb24gb2YgTGRyVW5sb2FkRGxsIG91dCBvZiBsb2FkZXIvbW9kdWxlLmMKCS0gaW4gaW1wYWN0ZWQgZnVuY3Rpb25zLCBlbnN1cmUgdGhhdCB3ZSBvbmx5IHVzZSBudGRsbCBmdW5jdGlvbnMKCS0gbWFraW5nIHVzZSBvZiBuZXcgTGRyVW5sb2FkRGxsCgoyMDAzLTAzLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2ZkLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9maWxlLmgsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZXJpYWwuYywKCSAgc2VydmVyL3NtYi5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglBZGRlZCBhbiBpbm9kZSBvYmplY3QgdG8ga2VlcCB0cmFjayBvZiBhbGwgZmlsZSBkZXNjcmlwdG9ycyBvcGVuIGZvciBhCglnaXZlbiBmaWxlLgoJUGx1Z2dlZCBhIGNvdXBsZSBvZiBwb3RlbnRpYWwgZmlsZSBkZXNjcmlwdG9yIGxlYWtzLgoKCSogZGxscy9tc3ZjcnQvd2NzLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwKCSAgdW5pY29kZS9zdHJpbmcuYywgdW5pY29kZS93aW5lX3VuaWNvZGUuZGVmOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCU1vdmUgdnNud3ByaW50ZiBpbXBsZW1lbnRhdGlvbiB0byBsaWJ3aW5lX3VuaWNvZGUsIGV4cG9ydCBzbnByaW50ZlcKCWFuZCB2c25wcmludGZXIGZyb20gdGhlcmUsIGZvcndhcmQgTVNWQ1JUIGFuZCBOVERMTCBmdW5jdGlvbnMgdG8KCWxpYndpbmVfdW5pY29kZS4KCgkqIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ29uc3RpZnkgdGhlIHN0cmluZ3MgaW4gdGhlIHBvbGljeSBjYWNoZS4KCURvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC93Y3MuYywKCSAgZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5zcGVjOgoJVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0BnbXguYXQ+CglGb3J3YXJkIHRvIHRoZSBudGRsbCBmdW5jdGlvbnMgX2l0b2EsIF9sdG9hLCBfdWx0b2EsIF9pNjR0b2EsCglfdWk2NHRvYSwgX2l0b3csIF9sdG93LCBfdWx0b3csIF9pNjR0b3csIF91aTY0dG93LCBfYXRvaTY0LCBfd3RvaSwKCV93dG9sLCBfd3RvaTY0IGZyb20gbXN2Y3J0IC8gbXN2Y3J0MjAuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc3RyaW5nLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCVRob21hcyBNZXJ0ZXMgPHRob21hcy5tZXJ0ZXNAZ214LmF0PgoJSW1wbGVtZW50IF9pdG9hLCBfbHRvYSwgX3VsdG9hLCBfaTY0dG9hLCBfdWk2NHRvYSwgX2l0b3csIF9sdG93LAoJX3VsdG93LCBfaTY0dG93LCBfdWk2NHRvdywgX2F0b2k2NCwgX3d0b2ksIF93dG9sLCBfd3RvaTY0LgoKCSogZGxscy9rZXJuZWwvY29tbS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGaXhlZCAyIGZkIGxlYWtzIGluIGNvbW0gZnVuY3Rpb25zLgoJUmVtb3ZlZCBlcnJvbmVvdXMgR2V0TGFzdEVycm9yKCkgY2hlY2sgaW4gV2FpdENvbW1FdmVudCgpLgoKCSogZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbCwgcHJvZ3JhbXMvd2luZWJvb3Qvd2luZWJvb3QuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CgktIEltcGxlbWVudCBmaW5lciBncmFpbmVkIGNvbnRyb2wgb3ZlciB3aGF0IGdldHMgcnVuLgoJLSBJbXBsZW1lbnQgY29tbWFuZCBsaW5lIHRvIGNvbnRyb2wgcHJlc2V0cyBvZiBzYWlkIGNvbnRyb2wgZm9yCgkgIHZhcmlvdXMgc2NlbmFyaW9zOgoJICBvIHN0YXJ0IC0gc2Vzc2lvbiBzdGFydHVwIC0gcnVuIGV2ZXJ5dGhpbmcuCgkgIG8gcmVzdGFydCAtIHNlc3Npb24gY2xvc2UgKHByZXN1bWVhYmx5IGFmdGVyIHJlYm9vdCkgLSBvbmx5IHBlcmZvcm0KCSAgICAqb25jZSBvcGVyYXRpb25zLgoKCSogaW5jbHVkZS93aW5udC5oOiBUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQWRkIGZsYWdzIGZvciBSZWdSZXN0b3JlS2V5LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogTWlrZSBIZWFybiA8bWlrZUB0aGVvcmV0aWMuY29tPgoJLSBSZWR1Y2VkIHRhYiBvZmZzZXQgY29uc3RhbnQgc2xpZ2h0bHkgdG8gYXZvaWQgY2xpcHBpbmcgdGhlIGxhYmVsLgoJLSBQcmV2ZW50IGxhYmVsIG92ZXJkcmF3IG9mIHVwZG93biBjb250cm9sIGJ5IHJlZHVjaW5nIHRoZSB3aWR0aCBvZgoJICB0aGUgaW52YWxpZGF0ZWQgcmVnaW9uLgoKMjAwMy0wMy0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2NvbnRleHRfcG93ZXJwYy5jLAoJICBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglBdHRhY2hpbmcgdGhlIGRlYnVnZ2VyIHRvIGEgcnVubmluZyBwcm9jZXNzIHNob3VsZCB3b3JrIGFnYWluCgkocmVwb3J0ZWQgYnkgRXJpYyBQb3VlY2gpLiBNaXNjIGNsZWFudXBzLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvZ2l0LmMsIHdpbmVkZWZhdWx0LnJlZywKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmM6CglNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglJbXBsZW1lbnRlZCB0aGUgZ2xvYmFsIGludGVyZmFjZSB0YWJsZSBvYmplY3QgdXNpbmcgYSBzaW1wbGUgbGlua2VkCglsaXN0LgoKMjAwMy0wMy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vY29uc29sZXMuc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVB1dCBjb25zb2xlIGRvY3VtZW50YXRpb24gaW4gc3luYyB3aXRoIGN1cnJlbnQgY29uc29sZSBzdGF0dXMuCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CgktIGltcGxlbWVudGVkIHBhbm5pbmcKCS0gaW1wbGVtZW50ZWQgY29uaW5nCgktIG1hbnkgbWlub3IgZml4ZXMKCgkqIHJlbGF5MzIvc25vb3AuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU05PT1BfUHJpbnRBcmc6IGRvbid0IHRyeSB0byBkZWNpcGhlciBzbm9vcCBhcmdzIHdoZW4gc2VoIGNoYW5lbCBpcwoJb24uCgoJKiBzZXJ2ZXIvcHRyYWNlLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdHlwby4KCgkqIGRsbHMvdXNlci9leHRpY29uLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRml4ZWQgdHlwbyBpbiBQcml2YXRlRXh0cmFjdEljb25FeFcgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBNaWtlIEhlYXJuIDxtaWtlQHRoZW9yZXRpYy5jb20+CglJdCdzIG5vdCBqdXN0IGhlaWdodCB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIGRlZmF1bHQgYnkgcGFzc2luZyB6ZXJvIHRvCglUQ01fU0VUSVRFTVNJWkUsIGJ1dCBhbHNvIHdpZHRoLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBmaXhlZCBhbm90aGVyIHJlZ3Jlc3Npb24gaW4gc3ViLXByb2Nlc3MgY3JlYXRpb24gKGN1cnNlcyBiYWNrZW5kCgkgIG11c3QgYmUgZGVmYXVsdCBmb3IgQWxsb2NDb25zb2xlKCkgaW52b2NhdGlvbikKCS0gZml4ZWQgZW5kbGVzcyBsb29wIHdoZW4gdW5rbm93biBhcmd1bWVudCB3YXMgcGFzc2VkIG9uIGNvbW1hbmRsaW5lCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGVycm9yIGNvZGUgd2hlbiBubyBtYXBwaW5nIGlzIGZvdW5kIGZvciB3YXZlIGlucHV0LgoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJTWF4aW1lIEJlbGxlbmfpIDxtYXhpbWUuYmVsbGVuZ2VAbGFwb3N0ZS5uZXQ+CglJbXBsZW1lbnRlZCBTSFJlZ1NldFVTVmFsdWVBIGFuZCBTSFJlZ1NldFVTVmFsdWVXLgoKMjAwMy0wMy0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvcnRsYml0bWFwLmM6CglSZXdyb3RlIFJ0bEZpbmR7TW9zdCxMZWFzdH1TaWduaWZpY2FudEJpdCBpbiBhIG1vcmUgcG9ydGFibGUgd2F5LgoKCSogZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUphbml0b3JpYWwuIEdldCByaWQgb2YgVy0+QSBjYWxsLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IEFuZHJldyBKb2huc3RvbiA8am9obnN0b25hbUBsb2dpY2EuY29tPgoJTW92ZSBrZXlib2FyZCBldmVudCBwcm9jZXNzaW5nIGZyb20gV25kUHJvYyBjb2RlIGludG8gdGhlIGV4aXN0aW5nCgloZWxwZXIuCglDcmVhdGUgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoZSBjcmVhdGUgZXZlbnQgYW5kIGNsZWFuIHVwIGNvZGUuCglSZW1vdmUgbWFjcm8gZm9yIGRldGVjdGluZyBpbnZhbGlkIFNDUk9MTElORk8gc3RydWN0dXJlcyBhbmQgbWFrZSBpdAoJYW4gaW5saW5lIGZ1bmN0aW9uLgoKCSogY29udHJvbHMvbWVudS5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCUFsbG93IG1vZGlmeWluZyBhIG1lbnUgc3RyaW5nIHRvIGJlIE5VTEwuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglUT09MQkFSX0FkZEJpdG1hcCgpIGFuZCBUT09MQkFSX1JlcGxhY2VCaXRtYXAoKSBhcmUgbm90IHN1cHBvc2VkIHRvCgltb2RpZnkgdGhlIGJpdG1hcCAtIHdlIGNhbGwgSW1hZ2VMaXN0X0FkZE1hc2tlZCgpIHdoaWNoIHR1cm5zIGFsbAoJbWFza2VkIHBpeGVscyBibGFjay4gRml4ZWQgYnkgbWFraW5nIGEgY29weSBvZiB0aGUgYml0bWFwIHRvIGdpdmUgdG8KCUltYWdlTGlzdF9BZGRNYXNrZWQoKS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBBbmRyZXcgSm9obnN0b24gPGpvaG5zdG9uYW1AbG9naWNhLmNvbT4KCS0gR2V0U2Nyb2xsUmFuZ2UgemVyb3MgdGhlIHJldHVybiBwYXJhbWV0ZXJzIGZvciBubyBpbmZvUHRyCgktIEdldFNjcm9sbFJhbmdlLCBHZXRTY3JvbGxQb3MgYW5kIEdldFNjcm9sbEluZm8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlCgkgIHdpbmRvdyBmb3IgdGhlIFNCX0NUTCBjYXNlCgktIE1vdmVkIGNvZGUgZm9yIEdldFNjcm9sbCogdG8gaW50byB3b3JrZXIgZnVuY3Rpb25zCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGJ1ZyB3aGVyZSB0aGUgZW5hYmxlIHN0YXRlIG9mIHRoZSBvdXRwdXQgYW5kIGlucHV0IHdlcmUgbm90IHNldAoJcHJvcGVybHkgd2hlbiBkb2luZyBmdWxsIGR1cGxleC4KCUZpeGVkIGJ1ZyB3aGVyZSByZXNldHRpbmcgdGhlIG91dHB1dCB3b3VsZCBhZmZlY3QgdGhlIGNhcHR1cmUgd2hlbgoJZG9pbmcgZnVsbCBkdXBsZXguCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGEgYnVnIHdoZXJlIGEgY2FwdHVyZSBkZXZpY2Ugd2FzIHVzZWQgYWZ0ZXIgaXQgZmFpbGVkIHRvIG9wZW4KCWR1ZSB0byBhIG1pc3NpbmcgZHJpdmVyLgoJQWRkZWQgdGVzdHMgdG8gdHJ5IGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMgb2Ygc2FtcGxlIHJhdGUsIHNhbXBsZQoJc2l6ZSBhbmQgbW9uby9zdGVyZW8uCgoJKiBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJV2FzIHVzaW5nIHRoZSB3cm9uZyBkZWZpbmUgZm9yIHRoZSBDVVBTIHNvbmFtZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQWRhbSBHdW5keSA8YXJnQGN5YmVyc2NpZW5jZS5jb20+CglXaGVuIHNoaWZ0aW5nIHRoZSBsaXN0J3MgaW5kaWNlcywgd2UgbXVzdCBub3Qgc2VuZCBub3RpZnkgbWVzc2FnZXMgaWYKCXdlIGhhdmUgdG8gcmVmb2N1cy4gSXRlbSBtb2RpZmljYXRpb24gaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3NlZCB0byBiZQoJY2FsbGVkIGhlcmUuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZWdyZXNzaW9uIGluIHN1Yi1wcm9jZXNzIGNyZWF0aW9uLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNvbWUgQ2FwcyBjbGVhbi11cCB3aGVuIG5vIE9wZW5HTCBjb21waWxlZCBpbgoJLSBmaXggc29tZSBmb250cyBkaXNwbGF5aW5nIHByb2JsZW1zCgoJKiBkb2N1bWVudGF0aW9uL3BhdGNoZXMuc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglDbGFyaWZ5IHBhdGNoIHJlcXVpcmVtZW50cy4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW46IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUFkZCBpbXBvcnQgb2YgbnRkbGwuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCVBST1BTSEVFVF9DcmVhdGVEaWFsb2coKSBpcyBkb2N1bWVudGVkIHRvIHJldHVybiAtMSBvbiBmYWlsdXJlLCBhbmQKCXRoZSBkaWFsb2cgaGFuZGxlIG9uIHN1Y2Nlc3MuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJQXJyYW5nZUN0cmxQb3NpdGlvbnMoKSBkaWQgbm90IGNvcGUgY29ycmVjdGx5IHdpdGggYSB0ZW1wbGF0ZWQgZGlhbG9nCgl3aGljaCBoYXMgYW4gZXh0cmEgJ3ByZXZpZXcnIGNvbnRyb2wgdG8gdGhlIHJpZ2h0IG9mIHRoZSAnbWFya2VyJwoJY29udHJvbC4KCUZJTEVETEc5NV9IYW5kbGVfR2V0RmlsZVBhdGgoKSBkaWQgbm90IHJldHVybiB0aGUgcGF0aCAtIGl0IHdhc24ndAoJY29tYmluaW5nIHRoZSBwYXRoIHdpdGggdGhlIGZpbGVuYW1lLgoKMjAwMy0wMy0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxpYnJhcnkvbGR0LmM6CglIYXJkY29kZSBzZXRfdGhyZWFkX2FyZWEgc3lzY2FsbCBudW1iZXIgdG8gYXZvaWQgdHJvdWJsZSB3aXRoIGJyb2tlbgoJaGVhZGVycy4KCgkqIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oLCBpbmNsdWRlL21vZHVsZS5oLAoJICBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGltcGxlbWVudGVkIExkckdldFByb2NlZHVyZUFkZHJlc3MgYW5kIG1hZGUgdXNlIG9mIGl0IGZvcgoJICBHZXRQcm9jQWRkcmVzcwoJLSBpbXBsZW1lbnRlZCBMZHJHZXREbGxIYW5kbGUgYW5kIG1hZGUgdXNlIG9mIGl0IGluIEdldE1vZHVsZUhhbmRsZQoJLSByZW1vdmVkIE1PRFVMRV9EbGxUaHJlYWREZXRhY2ggZnJvbSBsb2FkZXIvbW9kdWxlLmMgKHNob3VsZCBoYXZlCgkgIGJlZW4gcmVtb3ZlZCBpbiBhIHByZXZpb3VzIHBhdGNoKQoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHBvcnQgJ3N0dWInIHdnbEdldEV4dGVuc2lvbnNTdHJpbmdFWFQgZnVuY3Rpb24uCgoJKiBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9wcml2YXRlLmgsIGRsbHMvZHNvdW5kL21peGVyLmMsCgkgIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciBzZXR0aW5nIHRoZSBoYXJkd2FyZSBhY2NlbGVyYXRpb24KCWxldmVsIGp1c3QgbGlrZSB0aGUgZGlyZWN0IHNvdW5kIGNvbnRyb2wgcGFuZWwgYXBwLgoJTW9yZSB3b3JrIG9uIHRoZSBmdWxsIGR1cGxleCBpbnRlcmZhY2Ugc28gdGhlIGNvbXBpbGUgd2FybmluZyBpcyBubwoJbG9uZ2VyIGdlbmVyYXRlZC4gIEZ1bGwgZHVwbGV4IGludGVyZmFjZSBpcyBzdGlsbCBzdHViYmVkIG91dC4KCU1vdmVkIGZ1bGwgZHVwbGV4IG1peGVyIHJlc2V0IGZpeCBpbnRvIHdpbmVvc3MgZHJpdmVyIHdoZXJlIGl0CgliZWxvbmdzLgoJQWRkZWQgc29tZSBtb3JlIGxvY2tpbmcgZml4ZXMuCglDYXB0dXJlIGFuZCBmdWxsIGR1cGxleCBhcmUgbm93IHN0YWJsZS4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBhIEZJWE1FIGZvciBmdWxsIGR1cGxleC4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUphbml0b3JpYWwuIEdldCByaWQgb2YgVy0+QSBjYWxsLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IEFkYW0gR3VuZHkgPGFyZ0BjeWJlcnNjaWVuY2UuY29tPgoJSGFuZGxlIGNvZXJjaW5nIFZUX0RJU1BBVENIIGludG8gVlRfUFRSLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBZGFtIEd1bmR5IDxhcmdAY3liZXJzY2llbmNlLmNvbT4KCVRSRUVWSUVXX1VwZGF0ZVNjcm9sbEJhcnMoKSBub3cgY29wZXMgd2l0aCBhbiBlbXB0eSB0cmVlLgoKMjAwMy0wMy0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLAoJICBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvbmUvbW9kdWxlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgU08gbG9hZGluZyB0eXBlLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUFsbG93IHRvIHJ1biBhdXRvZXhlYy5iYXQgd2hlbiBsYXVuY2hpbmcgd2NtZCwgaXQgd2FzIGJyb2tlbiBkdWUgdG8gYQoJZnVuY3Rpb24gY2hhbmdlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBWaXRhbGl5IE1hcmdvbGVuIDx3aW5lLXBhdGNoQGtpZXZpbmZvLmNvbT4KCUFkZCBmZXcgU0ZHQU9fQ0FOKiBhdHRyaWJ1dGVzIHRvIHN1cHBvcnRlZCBsaXN0LgoKCSogdG9vbHMvZXhhbWluZS1yZWxheTogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZCBmdWxsIGxpc3RpbmcgZm9ybWF0IG9wdGlvbi4KCUZpeCBhbiBpbmZpbml0ZSBsb29wIGlmIHRoZSBsYXN0IGxpbmUgaXMgYSBwYXJ0aWFsIGxpbmUuCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglDaGFuZ2VkIHNvbWUgc3R1ZmYgc28gZGlzdGFuY2UgYXR0ZW51YXRpb24gd29ya3MgZm9yIGJvdGggM2QKCXByb2Nlc3NpbmcgbW9kZXMuCgoyMDAzLTAzLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsCgkgIHNlcnZlci9jb250ZXh0X3Bvd2VycGMuYywgc2VydmVyL2NvbnRleHRfc3BhcmMuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglVc2UgU0lHVVNSMSBpbnN0ZWFkIG9mIFNJR1NUT1AgdG8gc3VzcGVuZCB0aHJlYWRzLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmMsIGRsbHMvd2lubW0vd2lubW0uYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCB3YXZlSW4gdGVzdHMuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglGaXhlZCBpbnQgY29udmVyc2lvbiBpbiBHZXRQcml2YXRlUHJvZmlsZUludCBzbyB0aGF0IGFsbCB0aGUgdGVzdHMKCXN1Y2NlZWQuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvbW9kdWxlLmgsCgkgIGluY2x1ZGUvd2ludGVybmwuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gYWRkZWQgTGRyKiBpbmZvcm1hdGlvbiB0byBpbmNsdWRlL3dpbnRlcm5sLmgKCS0gZXhwb3J0ZWQgYSBmZXcgZnVuY3Rpb25zL2dsb2JhbCB2YXJzIGZyb20gbW9kdWxlLmggd2hpbGUgd2UgbW92ZQoJICBjb2RlIGZyb20gbG9hZGVyL21vZHVsZS5jIHRvIGRsbHMvbnRkbGwvbG9hZGVyLmMKCS0gaW1wbGVtZW50ZWQgTGRyU2h1dGRvd25Qcm9jZXNzLCBMZHJTaHV0ZG93blRocmVhZCBhbmQKCSAgTGRyRGlzYWJsZVRocmVhZENhbGxvdXRzRm9yRGxsIChhbmQgbWFkZSB1c2Ugb2YgdGhlbSkKCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9wcm9maWxlLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHRlc3RzIGZvciBHZXRQcml2YXRlUHJvZmlsZUludC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFZpdGFsaXkgTWFyZ29sZW4gPHdpbmUtcGF0Y2hAa2lldmluZm8uY29tPgoJRml4IGludmlzaWJsZSB0YWJzIGluIFRhYkNvbnRyb2xzIHdpdGggZml4ZWQgdGFiIHdpZHRoLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglEb2N1bWVudCBbV2luTU1dIGRyaXZlcnMgb3B0aW9ucy4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC90aW1lLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIF9kYXlsaWdodCBzdHViIGludCwgYW5kIF9fcF9fZGF5bGlnaHQgZnVuY3Rpb24uCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvaW50dmFyLmgsIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBDdHJsLUMgaGFuZGxpbmcgaWYgbm90IHJ1bm5pbmcgaW4gYSBjb25zb2xlLgoJQWRkZWQgKG1haW50ZW5hbmNlKSBjb25maWd1cmF0aW9uIHZhciB0byB0cmlnZ2VyIGV4dGVybmFsIGRlYnVnZ2VyIG9uCgl3aW5lZGJnJ3MgZXhjZXB0aW9ucy4KCgkqIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IGVuZGxlc3MgbG9vcCBpbiBTdHJQQnJrVy4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gdXBkYXRlIHRvIGxhdGVzdCBHTCBzcGVjIGZpbGVzCgktIGFkZGVkIEtUWCBCdWZmZXIgUmVnaW9uIGV4dGVuc2lvbgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIHJlYWwgbW9kZSBpbnRlcnJ1cHQgZW11bGF0aW9uIGNvZGUgdG8gZmlsZSBpbnRlcnJ1cHRzLmMuCglSZW1vdmUgbGFzdCB3cmFwcGVyIGNoZWNrIGZyb20gaW50MzEgaGFuZGxlci4KCU1vdmUgUk0vUE0gaGFyZHdhcmUgaW50ZXJydXB0IGVtdWxhdGlvbiBjb2RlIHRvIHNlcGFyYXRlIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBkZWNvZGluZyBvZiBsb25nIGZpbGUgbmFtZSBmdW5jdGlvbnMgdG8gd2luZWRvcy4KCU1vdmUgc29tZSBpbnQyMSBmdW5jdGlvbnMgdG8gd2luZWRvcy4KCgkqIGZpbGVzL2RyaXZlLmM6IEVucmljbyBIb3JuIDxmYXJtYm95MUBzdWJkaW1lbnNpb24uY29tPgoJU2ltcGxlIHdheSB0byBnZXQgdGhlIGxhYmVsIG9mIG1peGVkLW1vZGUgY2QuCgoJKiBjb250cm9scy9tZW51LmM6IFRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglKYW5pdG9yaWFsLiBHZXQgcmlkIG9mIFctPkEgY2FsbC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVZhckFkZDogc2V0ICdyYycgY29ycmVjdGx5IGZyb20gQlNUUiBhZGRpdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBWVF9QVFItPlZUX1ZBUklBTlQgYXJndW1lbnRzIG9mIEludm9rZS4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gYWRkZWQgYWJpbGl0eSB0byB1c2UgLS1iYWNrZW5kPShjdXJzZXN8dXNlcikgYXMgd2luZWNvbnNvbGUgcGFyYW1ldGVyCgktIHJld3JvdGUgd2luZWNvbnNvbGUgY29tbWFuZCBsaW5lIG9wdGlvbiBwYXJzaW5nCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglJbiBjdXJzZXMgYmFja2VuZCwgYXBwbHkgdGhlIHF1aWNrLWVkaXQgZGlyZWN0aXZlIGZyb20gcmVnaXN0cnkuCgoJKiBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvY2FwdHVyZS5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9taXhlci5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglGaXhlZCBjb2RlIHRvIGhhbmRsZSBmdWxsIGR1cGxleCBwcm9wZXJseS4KCUFkZGVkIHN1cHBvcnQgZm9yIGNhcHR1cmUgZHJpdmVyIChkaXNhYmxlZCkuCglGaXhlZCBkaXJlY3Qgc291bmQgY2FwdHVyZSB0ZXN0IHRvIGhhbmRsZSBub3RpZmljYXRpb25zIHByb3Blcmx5LgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGluY2x1ZGUvZHNkcml2ZXIuaDoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglDYXB0dXJlIHRocmVhZCBjaGVja3MgcXVldWUgZm9yIG1vcmUgaGVhZGVycyBiZWZvcmUgZ2l2aW5nIGVycm9yLgoJQ2FwdHVyZSBkcml2ZXIgd29yayBzdGFydGVkLgoKMjAwMy0wMi0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCU9ubHkgZG8gdGhlIHVubG9hZF9kbGwgc2VydmVyIGNhbGwgYXQgdGhlIHRpbWUgd2UgYWN0dWFsbHkgdW5sb2FkIHRoZQoJZGxsLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglQZXRlciBIdW5uaXNldHQgPHBldGVyQHRyYW5zZ2FtaW5nLmNvbT4KCVN1c3BlbmRlZCB0aHJlYWRzIHNob3VsZCBub3QgYWNxdWlyZSBzeW5jaHJvbml6YXRpb24gb2JqZWN0cy4KCgkqIGRvY3VtZW50YXRpb24vZmFxLnNnbWw6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gc3VwcG9ydGVkIFBsYXRmb3JtcyBkaWRuJ3QgbWVudGlvbiBNYWNPUyBYIHByb21pbmVudGx5IGVub3VnaCBieQoJICBmYXIuLi4KCS0gYWRkIHNvbWUgVVJMcywgY29ycmVjdCBVUkwgaGFuZGxpbmcKCS0gcmVtb3ZlIGxpbnV4LmNvcmVsLmNvbSwgYXMgaXQncyBERUFEIDotXAoKMjAwMy0wMi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3N5c2RlcHMuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglQcm9wZXJseSBzYXZlL3Jlc3RvcmUgJWdzIHJlZ2lzdGVyIGFjcm9zcyAxNi1iaXQgY2FsbHMuCgoJKiBjb250cm9scy9lZGl0LmMsIGRsbHMvZ2RpLy5jdnNpZ25vcmUsIGRsbHMvZ2RpL01ha2VmaWxlLmluLAoJICBkbGxzL2dkaS9nZGkxNi5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdXR0aHVuay5jLAoJICBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jLAoJICBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvaG9vazE2LmMsCgkgIGRsbHMvdXNlci9kZGUvZGRlbWwxNi5jLCBkbGxzL3VzZXIvcHJvcGVydHkuYywgZGxscy91c2VyL3VzZXIxNi5jLAoJICBkbGxzL3VzZXIvd25kMTYuYywgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgaW5jbHVkZS93b3dudDMyLmgsIG9iamVjdHMvZGMuYywKCSAgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvbWV0YWZpbGUuYywgd2luZG93cy9kcml2ZXIuYywKCSAgd2luZG93cy9wYWludGluZy5jOgoJUmVwbGFjZWQgbW9zdCB1c2VzIG9mIHRoZSBhdXRvLWdlbmVyYXRlZCBnbHVlIGNvZGUgYnkgZXhwbGljaXQgY2FsbHMKCXRvIFdPV0NhbGxiYWNrMTZFeC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzogQWxiZXJ0byBNYXNzYXJpIDxhbWFzc2FyaUBwcm9ncmVzcy5jb20+CglGaXhlcyB0byBJU2hlbGxGb2xkZXI6OkdldEF0dHJpYnV0ZXNPZjoKCS0gYmVmb3JlIGNvbXB1dGluZyB0aGUgZmxhZ3MgZm9yIHRoZSByZXF1ZXN0ZWQgZW50cnksIHJlc2V0IHRoZSBiaXRzCgkgIHdlIGRvbid0IHN1cHBvcnQsIG9yIHdlIHdpbGwgdGVsbCBzb21ldGhpbmcgd2UgZGlkbid0IHdhbnQgdG8uCgktIGluc3RlYWQgb2YgdXNpbmcgYW4gaGV4YWRlY2ltYWwgbWFzayBmb3IgdGhlIHVuc3VwcG9ydGVkIGZsYWdzLCB1c2UKCSAgYSBtYXNrIG1hZGUgb2YgdGhlIHN1cHBvcnRlZCBvbmVzCgktIHJlcGxhY2UgdGhlIG9ic2N1cmUgaGV4YWRlY2ltYWwgdmFsdWVzIHdpdGggdGhlIHByb3BlciBtYWNyb3MKCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCU1vdmVkIENyZWF0ZVRocmVhZDE2IHRvIGtlcm5lbCwgYW5kIG1hZGUgaXQgdXNlIFdPV0NhbGxiYWNrMTYuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIHByb2dyYW1zL3dpbmVkYmcvaW50dmFyLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgVXNlWFRlcm0gaW50ZXJuYWwgdmFyaWFibGUuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsCgkgIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBkb24ndCBjcmVhdGUgYSBuZXcgY29uc29sZSB1cG9uIHN0YXJ0dXAKCS0gbm8gbG9uZ2VyIGFzc3VtZSB3ZSdyZSBhbHdheXMgYXR0YWNoZWQgdG8gYSBjb25zb2xlCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9nZGkvTWFrZWZpbGUuaW46CglHZXQgcmlkIG9mIHdpbjE2ZHJ2IGRpcmVjdG9yeS4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZ2RpLmV4ZS5zcGVjOgoJUmVtb3ZlZCB0aGUgMTYtYml0IGdyYXBoaWNzIGRyaXZlciBzdXBwb3J0OyB0aGlzIGhhcyBiZWVuIGJyb2tlbiBmb3IgYQoJbG9uZyB0aW1lIGFueXdheS4KCjIwMDMtMDItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywgaW5jbHVkZS9taXNjZW11LmgsCgkgIGluY2x1ZGUvc2VsZWN0b3JzLmgsIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvbGR0LmMsCgkgIGxvYWRlci90YXNrLmMsIG1lbW9yeS9pbnN0ci5jLCBtZW1vcnkvc2VsZWN0b3IuYywKCSAgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJTW92ZWQgTERUIHNlbGVjdG9yIGFsbG9jYXRpb24gcm91dGluZXMgdG8gbGlid2luZS4KCUFkZGVkIHN1cHBvcnQgZm9yIGNvcnJlY3QgbG9ja2luZyBvZiBhbGwgTERUIG9wZXJhdGlvbnMuCglBZGRlZCBzZXBhcmF0ZSBmdW5jdGlvbnMgdG8gbWFuaXB1bGF0ZSB0aGUgJWZzIHNlbGVjdG9yLCB3aGljaCBhbGxvd3MKCXVzaW5nIGEgZ2xvYmFsIEdEVCBzZWxlY3RvciBvbiByZWNlbnQgTGludXgga2VybmVscy4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1vdmVGaWxlW0FXXSBzaG91bGQgc2ltcGx5IGNhbGwgTW92ZUZpbGVFeFtBV10uIFNob3VsZCBmaXggaXNzdWUKCXJlcG9ydGVkIGJ5IFJvZGVyaWNrIENvbGVuYnJhbmRlci4KCgkqIGRsbHMvd2luZWRvcy9zb3VuZGJsYXN0ZXIuYzogU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglJbXBsZW1lbnRlZCBEU1AgVmVyc2lvbiBjb21tYW5kLgoKCSogdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuLAoJICB0b29scy93cmMvd3JpdGVyZXMuYywgdG9vbHMvd3JjL3dyaXRlcmVzLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIGFzc2VtYmx5IGdlbmVyYXRpb24gZnJvbSB3cmMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBjb250cm9sbGVyIGluZm8gYW5kIHN0YXRlL2Z1bmN0aW9uYWxpdHkgaW5mbyBpbml0aWFsaXphdGlvbiB0bwoJd2luZWRvcy4gQ29udmVydCBtYW55IGluY29ycmVjdGx5IHN0YXRpYyBmaWVsZHMgaW50byBkeW5hbWljCglmaWVsZHMuIEZpeCB2ZXNhIG1vZGUgcmVwb3J0aW5nIGFuZCByZWFsbG9jIG1lbW9yeSBibG9jayBjb25zaXN0ZW5jeQoJY2hlY2tzLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYmVoYXZpb3Igd2hlbiBjaGFuZ2luZyBib3RoIHNiIGFuZCB3aW4gc2l6ZSwgYXMgdGhlIG9yZGVyIG9mCglvcGVyYXRpb24gaXMgaW1wb3J0YW50IHRvIGtlZXAgc2IgYWx3YXlzIGJpZ2dlciB0aGFuIHdpbi4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglPbmx5IHByaW50IDQgaGV4ZGlnaXRzIGZvciB0aWQuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglDaGVjayBib3RoIHBvaW50ZXJzIGluIEdldENvbnRhaW5pbmdUeXBlTGliLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmgsIG1lbW9yeS9nbG9iYWwuYzoKCU1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJSW1wbGVtZW50ZWQgR2xvYmFsTWVtb3J5U3RhdHVzRXgoKS4KCgkqIGluY2x1ZGUvZG9jb2JqLmg6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJQWRkIHNvbWUgT0xFQ01ESURzIHByZXNlbnQgaW4gTVMgaGVhZGVycy4KCgkqIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQsIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOgoJTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglBZGRlZCBhICJiYXNpYyB1c2FnZSIgc2VjdGlvbiB0aGF0IGRlYWxzIHdpdGggaW5zdGFsbGF0aW9uLAoJdW5pbnN0YWxsYXRpb24gYW5kIGNvbnRyb2wgcGFuZWwgYXBwbGV0cyB0byB0aGUgIlJ1bm5pbmcgV2luZSIgcGFydCBvZgoJdGhlIHVzZXJzIGd1aWRlLgoKMjAwMy0wMi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJQWRkZWQgc2VuZF90aHJlYWRfc2lnbmFsKCkgZnVuY3Rpb24gYW5kIHByb3Blcmx5IGhhbmRsZSBlcnJvcnMgY2F1c2VkCglieSB0aGUgdGhyZWFkIGhhdmluZyBhbHJlYWR5IGRpZWQgd2hlbiB3ZSBzZW5kIGl0IGEgc2lnbmFsLgoJVXNlIC0xIGluc3RlYWQgb2YgMCBhcyBpbnZhbGlkIFVuaXggcGlkIHZhbHVlLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6IEF2b2lkIHNvbWUgcmVkdW5kYW50IGNhbGxzIHRvIHRpbWUoTlVMTCkuCgl0b3VjaF9rZXkoKSBtdXN0IG5vdCBiZSBjYWxsZWQgaW4gY3JlYXRlX2tleS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglUdXJuIG9mZiAtV3BvaW50ZXItYXJpdGggaWYgaXQgZ2VuZXJhdGVzIHdhcm5pbmdzIHdoZW4gaW5jbHVkaW5nCglzdHJpbmcuaC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogVGltIFNlZ2FsbCA8dGltQGNvYmJlci5jb20+CglBY2NlcHQgZWl0aGVyIFRWSV9ST09UIG9yIE5VTEwgZm9yIHRoZSBwYXJlbnQgdG8gaW1wbHkgc29ydCB0aGUgZW50aXJlCgl0cmVlLgoKCSogcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsCgkgIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBtYWRlIHN1cHBvcnQgZm9yIHBhZ2VkIG91dHB1dCBhIGdlbmVyaWMgZmVhdHVyZSBpbiB3Y21kCgktIHJld3JvdGUgRElSIGNvbW1hbmQgYWNjb3JkaW5nbHkKCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGb3JiaWRzIHNlbGVjdGluZyAoZm9yIGNsaXBib2FyZCkgYXJlYXMgbGFyZ2VyIHRoYW4gdGhlIGFjdHVhbAoJc2NyZWVuLWJ1ZmZlciBzaXplLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbnRlcm5ldE9wZW5VcmxBIChodHRwL3MgY2FzZSk6IFVzZSBjbGllbnQgZm9yIEh0dHBPcGVuUmVxdWVzdEEsIGRvbid0CglpbnNlcnQgSE9TVDogdHdpY2UuCglIdHRwQWRkUmVxdWVzdEhlYWRlcnNBOiBhbGxvdyBscHN6SGVhZGVyID09IE5VTEwuCgoJKiB0b29scy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTm8gbmVlZCB0byBzdXBwb3J0IC1td2luZG93cyBhcyBhIHN5bm9uaW0gZm9yIC1tZ3VpOiBpdCdzIGEgZ2NjLWlzbQoJdGhhdCBpcyBoYW5kbGVkIGluIHdpbmVnY2MuCglMaW5rIGluIEdESSBvbmx5IGluIGd1aSBtb2RlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGlwZS5jOiBEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJTm93IGNvbXBpbGVzIG9uIHdpbmRvd3MuICBBZGRlZCBhIGNvdXBsZSBtb3JlIGNoZWNrcy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglEZWZpbmUgQ0RfU0VDUyBhbmQgQ0RfRlJBTUVTIGFsc28gb24gbm9uLUxpbnV4IHN5c3RlbXMuICBBdm9pZCBhCglub24tcG9ydGFibGUgVFJBQ0Ugb24gbm9uLUxpbnV4IHN5c3RlbXMuCgoyMDAzLTAyLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglQYXNzIHRoZSBwaWQgb2YgdGhlIG5ldyBwcm9jZXNzIGluIHRoZSBuZXdfcHJvY2VzcyByZXF1ZXN0LCBkb24ndAoJZGVwZW5kIG9uIHRoZSBwYXJlbnQgcGlkIHRvIGZpbmQgdGhlIHN0YXJ0dXAgaW5mby4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVJlbW92ZSBzb21lIHVucmVhY2hhYmxlIGNvZGUuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUZpeGVkIGEgcHJvYmxlbSBnZXR0aW5nIHRoZSBHVUlEIHRvIGNvbXBpbGUgdW5kZXIgd2luZG93cyBhbmQgd2luZS4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeCBUUkFDRSBmb3JtYXQgc3RyaW5nLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudCBHZXREZXZpY2VJbmZvIGFuZCBHZXRPYmplY3RJbmZvIGZvciB0aGUga2V5Ym9hcmQgZGV2aWNlLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0RlLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRnIucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0h1LnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9aaC5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGNoZWNrcyB3aGVuIGVkaXRpbmcgd2luZG93IGFuZCBzYiBzaXplIHNvIHRoYXQgdGhleSBhcmUga2VwdAoJY29uc2lzdGVudC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgaGFuZGxpbmcgZm9yIFBTTlJFVF9JTlZBTElEIGluIFBTTl9BUFBMWSBub3RpZmljYXRpb24uCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9yZWdpc3RyeS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVNldCBhIGRlZmF1bHQgNTAgbGluZXMgaW4gaGlzdG9yeSBmb3IgY29uc29sZSBhcHBzLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOiBEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJTWFrZSAnY21kIC9jIGNsIC9NVU1CTEUgZm9vLmMnIHBhc3MgL01VTUJMRSB0byBjbC4KCgkqIGRsbHMvZHNvdW5kL2NhcHR1cmUuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUFkZCBtaXNzaW5nIExlYXZlQ3JpdGljYWxTZWN0aW9uJ3MgaW4gZXJyb3IgcGF0aC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglQcmludCBvdXQgbmFtZSBvZiBmbG9hdCBleGNlcHRpb25zLgoKCSogdG9vbHMvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTGluayBpbiBzaGVsbDMyIG9ubHkgaW4gZ3VpIG1vZGUuCglBZGQgYWxsIHRoZSBzdGFuZGFyZCBkZWZpbmVzIHRoYXQgTWluR1cgcHJvdmlkZXMgKHdpdGggdGhlIGV4Y2VwdGlvbgoJb2YgX19NSU5HV19fLCB0aGF0J3MgTWluR1cgcHJlcm9nYXRpdmUpLgoJRG8gbm90IHBhc3MgYWxvbmcgbGlua2VyIG9wdGlvbnMgd2hlbiBvbmx5IGNvbXBpbGluZy4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6IFJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBkZWZpbml0aW9ucyBmb3IgRGlyZWN0U291bmRGdWxsRHVwbGV4IGFuZCBtb3ZlZCBzb21lIEdVSURzCglhcm91bmQuCgoyMDAzLTAyLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDMwMjE5LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAzLTAyLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZTogQWRkZWQgcGlwZS5vay4KCgkqIEFVVEhPUlMsIGRsbHMvc2hlbGwzMi9hdXRob3JzLmg6IFVwZGF0ZWQgYXV0aG9ycyBsaXN0LgoKCSogc2VydmVyL2NvbnNvbGUuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZWFkLW92ZXJmbG93IHNwb3R0ZWQgYnkgdmFsZ3JpbmQuCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL3ZnYS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJSWdub3JlIGdldCBzaGFkb3cgYnVmZmVyIGZ1bmN0aW9uLgoJUmVtZW1iZXIgdG8gc3luY2hyb25pemUgVkdBIGRpc3BsYXkgb24gcHJvZ3JhbSBleGl0IGJlY2F1c2UgdXBkYXRlCgl0aHJlYWQgbWF5IG5vdCBoYXZlIHRpbWUgdG8gcnVuLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglGaXhlZCBpbnN0YWxsYXRpb24gb3JkZXIgb2YgbGlua2FibGUgZGxscy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBpbmNsdWRlL21pc2NlbXUuaCwKCSAgbWVtb3J5L2dsb2JhbC5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgcmVzaXplIG1lbW9yeSBibG9jayB0byB3aW5lZG9zIGFuZCBtYWtlIGl0IHJlc2l6ZSBpbiBwbGFjZSBhbmQKCXdvcmsgY29ycmVjdGx5IGV2ZW4gd2hlbiB0cnlpbmcgdG8gYWxsb2NhdGUgdG9vIG11Y2ggbWVtb3J5LgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC90ZXN0cy9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSb3VnaCBpbXBsZW1lbnRhdGlvbiBvZiBfT19URVhUL19PX0JJTkFSWSB0cmFuc2xhdGlvbiBieSBkb2luZyBzaW5nbGUKCWJ5dGUgcmVhZC93cml0ZXMgaW4gX09fVEVYVCBtb2RlIGFuZCBDUi9MUiBoYW5kbGluZy4KCWZwdXQvZ2V0d2MgbXVzdCByZWFkIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGluIF9PX1RFWFQuCglBZGRlZCB0ZXN0IGNhc2VzIGZvciBfT19URVhUL19PX0JJTkFSWSBmaWxlIGhhbmRsaW5nIGFuZCBmZ2V0d3MuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6IFdhbGRlY2sgU2NodXR6ZXIgPHNjaHV0emVyQG1hdGgucnV0Z2Vycy5lZHU+CgktIFNvbWUgc3lzdGVtcy9kcml2ZXMgYXJlIHZlcnkgc2xvdyB0byByZWFkIHRoZSBUT0MuIFRvIGFkZHJlc3MgdGhpcwoJICBpc3N1ZSwgd2UgYXJlIGNhY2hpbmcgaXQgaW5zaWRlIHRoZSBkcml2ZXIuCgktIFdpbmRvd3Mgd2lsbCBzZWVrIHdoaWxlIG5vdCBwbGF5aW5nLCBMaW51eCB3aWxsIG5vdC4gV2UgYXJlCgkgIHByb3ZpZGluZyBiZXR0ZXIgY29tcGF0aWJpbGl0eSB3aXRoIFdpbmRvd3MgYnkgYWxzbyBjYWNoaW5nIHRoZQoJICBjdXJyZW50IHBvc2l0aW9uLgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmM6CglXYWxkZWNrIFNjaHV0emVyIDxzY2h1dHplckBtYXRoLnJ1dGdlcnMuZWR1PgoJQXZvaWQgcGxheWluZyBkYXRhIHRyYWNrcy4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBdm9pZCB3YXJuaW5ncy4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL3BpcGUuYzoKCURhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CglBZGRlZCBjaGVjayBmb3IgaWxsZWdhbCBwaXBlIG5hbWVzLgoJQWRkZWQgcmVncmVzc2lvbiB0ZXN0LgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglDb252ZXJ0IFR3aXBzIHZhbHVlcyBmcm9tIHRoZSByZWdpc3RyeS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglEaWV0cmljaCBUZWlja25lciA8RGlldHJpY2hfVGVpY2tuZXJAdC1vbmxpbmUuZGU+CgktIEZpeGVkIGluY29ycmVjdCB1bmRvIGJ1ZmZlciBzaXplIChwcmV2aW91cyBjb2RlIGNhdXNlZCBoZWFwCgkgIGNvcnJ1cHRpb24gd2hlbiB1c2luZyBiYWNrc3BhY2UgbWFueSB0aW1lcykuCgktIEFsd2F5cyBraWxsIHRpbWVyIHdoZW4gbGVmdCBtb3VzZSBidXR0b24gaXMgcmVsZWFzZWQgYW5kIGluIGNhcHR1cmVkCgkgIHN0YXRlLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuaCwKCSAgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZvciBiZXR0ZXIgY29uY3VycmVuY3ksIHNlcGFyYXRlIHRoZSBjb25uZWN0aW9ucyBmcm9tIHRoZSBiaW5kaW5ncy4KCgkqIGluY2x1ZGUvd2ludGVybmwuaDogVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0B0LW1vYmlsZS5hdD4KCS0gSW1wbGVtZW50IFJ0bENoYXJUb0ludGVnZXIsIFJ0bEV4dGVuZGVkTWFnaWNEaXZpZGUsIFJ0bFVwcGVyQ2hhciwKCSAgUnRsSW50NjRUb1VuaWNvZGVTdHJpbmcsIFJ0bEludGVnZXJUb0NoYXIsIFJ0bEludGVnZXJUb1VuaWNvZGVTdHJpbmcsCgkgIFJ0bExhcmdlSW50ZWdlclRvQ2hhciwgUnRsVW5pY29kZVN0cmluZ1RvSW50ZWdlciBhbmQKCSAgUnRsVXBjYXNlVW5pY29kZUNoYXIuCgktIFVzZSB0b3VwcGVyVyBpbnN0ZWFkIG9mIHRvdXBwZXIgaW4gUnRsQ29tcGFyZVVuaWNvZGVTdHJpbmcuCgoJKiBkbGxzL21zdmNydC9kaXIuYzogV2FycmVuIEJhaXJkIDxXYXJyZW5fQmFpcmRAY2ltbWV0cnkuY29tPgoJLSBBdm9pZCBwb3NzaWJsZSBzZWcgZmF1bHQgd2hlbiBjYWxsaW5nIFRSQUNFIHdpdGggTlVMTCBzdHJpbmcgcG9pbnRlcnMuCgktIEZpeCBiYWQgc2lkZS1lZmZlY3Qgb2YgbWFrZXBhdGggb24gaW5wdXQgcGFyYW1ldGVycy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6IFdhcnJlbiBCYWlyZCA8V2FycmVuX0JhaXJkQGNpbW1ldHJ5LmNvbT4KCUluY3JlYXNlIHNpemUgb2YgaW5zdWZmaWNpZW50bHkgYmlnIHN0YWNrIGFsbG9jYXRlZCBidWZmZXIgdXNlZCBmb3IKCWVycm9yIG1lc3NhZ2VzIGluIFBST0NFU1NfSW5pdFdpbmUuCgoJKiBkbGxzL2tlcm5lbC9lZGl0bGluZS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXaGVuIHVwZGF0aW5nIHRoZSBlZGl0ZWQgbGluZSwgcmVtZW1iZXIgdG8gdXBkYXRlIGF0dHJpYnV0ZXMsIHRvby4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gcmVtb3ZlZCB1bnVzZWQgZnVuY3Rpb246IFNldFN5bWJvbFZhbHVlCgktIGVuaGFuY2VkIGEgYml0IEFkZFN5bWJvbCByZWdhcmRpbmcgaW52YWxpZCBzeW1ib2wgbWFuYWdlbWVudCAoYW5kCgkgIGVuaGFuY2VkIGl0cyB0cmFjZXMpCgktIG5vdyBwcmludGluZyB0eXBlIGluZm9ybWF0aW9uIGluICdpbmZvIHN5bScKCgkqIHByb2dyYW1zL3dpbmVkYmcvc3RhYnMuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGFkZGVkIHBhcnNpbmcgb2YgQysrIGluaGVyaXRlbmNlIGluZm9ybWF0aW9uCgktIGFkZGVkIGFuIGludGVybmFsIHRyYWNlIGZvciBkaXNwbGF5aW5nIGVycm9ycyBpbiB0eXBlZGVmIHBhcnNpbmcKCS0gZW5oYW5jZWQgRUxGIHN5bWJvbCBtYW5hZ2VtZW50IChkaXJlY3QgY2FsbCB0byBBZGRTeW1ib2wgaW4gRUxGCgkgIGhlYWRlcikKCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUEgZml4IHRvIGdldCBlZGl0IGNvbnRyb2wgc2Nyb2xscyBiYXJzIHRvIGRyYXcgaW4gdGhlIGNvcnJlY3QKCXBvc2l0aW9uLgoKCSogZGxscy9udGRsbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL3Rlc3RzL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL3Rlc3RzL3J0bHN0ci5jOgoJVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0B0LW1vYmlsZS5hdD4KCVRlc3RzIGZvciBSdGxDaGFyVG9JbnRlZ2VyLCBSdGxFeHRlbmRlZE1hZ2ljRGl2aWRlLCBSdGxVcHBlckNoYXIsCglSdGxJbnQ2NFRvVW5pY29kZVN0cmluZywgUnRsSW50ZWdlclRvQ2hhciwgUnRsSW50ZWdlclRvVW5pY29kZVN0cmluZywKCVJ0bExhcmdlSW50ZWdlclRvQ2hhciwgUnRsVW5pY29kZVN0cmluZ1RvSW50ZWdlciBhbmQKCVJ0bFVwY2FzZVVuaWNvZGVDaGFyLgoKCSogZGxscy9udGRsbC9sYXJnZV9pbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLAoJICBkbGxzL250ZGxsL3J0bHN0ci5jOgoJVGhvbWFzIE1lcnRlcyA8dGhvbWFzLm1lcnRlc0B0LW1vYmlsZS5hdD4KCS0gSW1wbGVtZW50IFJ0bENoYXJUb0ludGVnZXIsIFJ0bEV4dGVuZGVkTWFnaWNEaXZpZGUsIFJ0bFVwcGVyQ2hhciwKCSAgUnRsSW50NjRUb1VuaWNvZGVTdHJpbmcsIFJ0bEludGVnZXJUb0NoYXIsIFJ0bEludGVnZXJUb1VuaWNvZGVTdHJpbmcsCgkgIFJ0bExhcmdlSW50ZWdlclRvQ2hhciwgUnRsVW5pY29kZVN0cmluZ1RvSW50ZWdlciBhbmQKCSAgUnRsVXBjYXNlVW5pY29kZUNoYXIuCgktIFVzZSB0b3VwcGVyVyBpbnN0ZWFkIG9mIHRvdXBwZXIgaW4gUnRsQ29tcGFyZVVuaWNvZGVTdHJpbmcuCgoJKiBpbmNsdWRlL3dpbmluZXQuaDogQWxiZXJ0byBNYXNzYXJpIDxhbWFzc2FyaUBwcm9ncmVzcy5jb20+CgktIHRoZSBmaXJzdCBhcmd1bWVudCBpbiBzZXZlcmFsIFVuaWNvZGUgZnVuY3Rpb25zIHdhcyBhbiBBU0NJSSBzdHJpbmcKCSAgaW5zdGVhZCBvZiBhIFVuaWNvZGUgb25lCgktIGFkZGVkIG1vcmUgbWFjcm8gZGVmaW5pdGlvbnMKCgkqIGluY2x1ZGUvcnBjcHJveHkuaDogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CgkiSW1wbGVtZW50ZWQiIElJRF9CU18qIG1hY3Jvcy4KCgkqIHNlcnZlci9xdWV1ZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtaXNzaW5nIHJlbGVhc2Vfb2JqZWN0LgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL2F0b20uYywgc2VydmVyL2NoYW5nZS5jLAoJICBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZmQuYywKCSAgc2VydmVyL2ZpbGUuYywgc2VydmVyL2ZpbGUuaCwgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaG9vay5jLAoJICBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZWdpc3RyeS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NtYi5jLAoJICBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsCgkgIHNlcnZlci90aW1lci5jOgoJTW92ZWQgYWxsIHJlZmVyZW5jZXMgdG8gZmlsZSBkZXNjcmlwdG9ycyBvdXQgb2YgdGhlIGdlbmVyaWMgb2JqZWN0CglzdHJ1Y3R1cmUuCglDaGFuZ2VkIHRoZSBwb2xsKCktcmVsYXRlZCByb3V0aW5lcyB0byBkZWFsIHdpdGggZmlsZSBkZXNjcmlwdG9ycwoJaW5zdGVhZCBvZiBvYmplY3RzIGFuZCBpbnRlZ3JhdGVkIHBvbGwgc3VwcG9ydCBpbnRvIGZkLmMuCgoyMDAzLTAyLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsCgkgIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL3VzZXIvaG9vay5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsCgkgIGlmMTYzMi9yZWxheS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgcmVsYXkzMi9yZWxheTM4Ni5jLAoJICByZWxheTMyL3Nub29wLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9zcHkuYzoKCVByaW50IHRocmVhZCBpZHMgaW4gdHJhY2VzIHdpdGggb25seSA0IGRpZ2l0cyBub3cgdGhhdCB0aGV5IGFyZSBzbWFsbAoJaW50ZWdlcnMuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBQcmludCBkbGwgbmFtZSB0b28gZm9yIHN0dWIgZXhjZXB0aW9ucy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUNvcnJlY3RseSBlbmNvZGUgd1BhcmFtIGZvciBXTV9TWVNDT01NQU5ELFNDX1NJWkUgbWVzc2FnZXMuCgoJKiBkbGxzL2NyeXB0MzIvY3J5cHQzMi5zcGVjOiBBbGJlcnRvIE1hc3NhcmkgPGFtYXNzYXJpQHByb2dyZXNzLmNvbT4KCUFkZGVkIHN0dWIgZm9yIENyeXB0VW5wcm90ZWN0RGF0YS4KCgkqIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUFkZCBlbnRyeSBmb3Igbm8gaHRtbCBpbiBwYXRjaGVzLgoKCSogdG9vbHMvd2luZWdjYy5jLCB0b29scy93aW5ld3JhcC5jOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUG9ydGluZyBmaXhlcy4KCgkqIGRsbHMvbnRkbGwvcnRsYml0bWFwLmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsYml0bWFwLmM6CglUaG9tYXMgTWVydGVzIDx0aG9tYXMubWVydGVzQHQtbW9iaWxlLmF0PgoJLSBGaXggc21hbGwgYnVnIGluIFJ0bEZpbmRNb3N0U2lnbmlmaWNhbnRCaXQuIEl0IHJldHVybmVkIHNvbWV0aW1lcwoJICB3cm9uZyByZXN1bHRzIGlmIG1vcmUgdGhlbiBvbmUgYml0IHdhcyBzZXQuCgktIFVwZGF0ZSB0aGUgdGVzdCBjYXNlcyBhcyB3ZWxsLgoKMjAwMy0wMi0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9tYXBwaW5nLmM6CglNYWtlIHN1cmUgZ2V0X2ZpbGVfc2l6ZSB1c2VzIGEgdmFsaWQgZmQgKHNwb3R0ZWQgYnkgVXdlIEJvbm5lcykuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6CglTZXQgZGVmYXVsdCBsb2Fkb3JkZXIgdG8gbmF0aXZlIGZvciBkbGxzIHRoYXQgY29udGFpbiBhbiBleHBsaWNpdAoJcGF0aC4KCgkqIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglVcGRhdGVkIHJlZ3Jlc3Npb24gdGVzdGluZyBkb2N1bWVudGF0aW9uLgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFsbG93ZWQgd2F2ZUluTWVzc2FnZSB0byB1c2UgcGh5c2ljYWwgaW5mb3JtYXRpb24gKGFzIHdhdmVPdXQgZG9lcykuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglORFIgbWFyc2hhbGxpbmcgZml4ZXMuCgoJKiBkbGxzL3JwY3J0NC9jcHNmLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTWFrZSBOZHJEbGxSZWdpc3RlclByb3h5IHVzZSB0aGUgaW50ZXJmYWNlIHN0dWIgaGVhZGVyIGluc3RlYWQgb2YgdGhlCglpbnRlcmZhY2UgcHJveHkgaGVhZGVyIHRvIGF2b2lkIHN0dWJsZXNzIHByb3h5IGFtYmlndWl0aWVzLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL3R5cGVzLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gYWRkZWQgR2V0TmFtZSgpIHRvIHJldHJpZXZlIHR5cGUgbmFtZQoJLSByZWltcGxlbWVudGVkIER1bXBUeXBlcyBzbyB0aGF0IGl0IHJlYWxseSBkdW1wcyB0aGUgdHlwZXMgY29udGVudAoJLSBub3cgcHJpbnRpbmcgdHlwZSBpbmZvcm1hdGlvbiBpbiAnaW5mbyBzeW0nCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RiZy55OiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIGV4cHIgZnJlZWluZyB3aGVuIHRyYW5zbGF0aW5nIGEgY29tbWFuZCAobm8gbG9uZ2VyIGRvbmUgb24gZWFjaAoJY29tbWFuZCB3aGljaCB1c2VzIGFuIGV4cHIpLgoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJUmVpbXBsZW1lbnRlZCBkaXN0YW5jZSBhdHRlbnVhdGlvbiBmb3JtdWxhLgoJUmVtb3ZlZCBjb25pbmcgZm9ybXVsYSBzaW5jZSBpIGJlbGlldmUgaXQncyBpbmFwcHJvcHJpYXRlLgoKMjAwMy0wMi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX0NhLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRmkucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19IdS5yYywgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfU2kucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tdi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfV2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX1poLnJjLAoJICBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCS0gSW1wbGVtZW50ZWQgdHdvIGxvb2t1cCB0YWJsZXMgZm9yIHRoZSBzYW1wbGUgZm9udHMuIFRoZSBmaXJzdCwKCSAgIkNIQVJTRVRfT1JERVIiLCBpcyBmb3IgY29udmVydGluZyBjb2RlcGFnZSB0byBvcmRpbmFsIGNoYXJzZXQgbnVtLAoJICBhbmQgdGhlIHNlY29uZCwgIlNBTVBMRV9MQU5HX1RFWFQiLCBpcyBmb3IgZ2l2aW5nIHRoZSBhY3R1YWwgc2FtcGxlCgkgIHRleHQuCgktIFJlbW92ZWQgYWxsIHJlZmVyZW5jZXMgdG8gY2hhbmdpbmcgdGhlIGZvbnQgZGlyZWN0bHkgaW4gc3RjNS4KCS0gTW9kaWZpZWQgdGhlICJJbnZhbGlkYXRlUmVjdCIgY2FsbHMgdG8gaW52YWxpZGF0ZSB0aGUgcmVjdCB3aGVyZQoJICBzdGM1IGlzLCByYXRoZXIgdGhhbiBzdGM1IGl0c2VsZi4KCS0gQWRkZWQgaGFuZGxpbmcgb2YgV01fUEFJTlQgdGhhdCBkcmF3cyB0aGUgc2FtcGxlIHRleHQsIHByb3Blcmx5CgkgIHRydW5jYXRlZC4KCS0gUmVtb3ZlZCBoYW5kbGluZyBvZiBXTV9DVExDT0xPUiAtIG5vIGxvbmdlciBuZWNjZXNzYXJ5LgoKCSogZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX3ByaXZhdGUuaCwKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCVJvYmVydCBSZWlmIDxyZWlmQGVhcnRobGluay5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciBkaXJlY3Qgc291bmQgY2FwdHVyZSBhbmQgYSByZWFsIGRpcmVjdCBzb3VuZCBjYXB0dXJlCglkcml2ZXIuIENhcHR1cmUgbm93IHdvcmtzIHdpdGggc29tZSBza2lwcGluZy4gRnVsbCBkdXBsZXggZG9lcyBub3QgYnV0CglJIHdpbGwgYmUgd29ya2luZyBvbiB0aGF0IG5leHQuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJQWRkZWQgYWRkaXRpb25hbCBmb3JtYXRzLgoJRml4ZWQgYSBmZXcgYnVncyBpbiByZWFkL3dyaXRlIHBvc2l0aW9ucyB3aGVuIHRoZSBmb3JtYXQgaXMgbWFwcGVkCgl1c2luZyBhY20uCglGaXhlZCBhIGJ1ZyB3aGVyZSB0aGUgbnVtYmVyIG9mIHdhdmVPdXQgZGV2aWNlcyBpcyB1c2VkIHdoZW4gaXRlcmF0aW5nCglvdmVyIHdhdmVJbiBkZXZpY2VzLgoKMjAwMy0wMi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBSb2JlcnQgUmVpZiA8cmVpZkBlYXJ0aGxpbmsubmV0PgoJU3RhcnRlZCB0byBhZGQgc3VwcG9ydCBmb3IgYSByZWFsIGRpcmVjdCBzb3VuZCBjYXB0dXJlIGRyaXZlci4KCUNoYW5nZWQgdGhlIGNhcHR1cmUgZnJhZ21lbnQgc2l6ZSBidXQgdGhpcyBzdGlsbCBuZWVkcyB0dW5pbmcgZm9yIGJlc3QKCXBlcmZvcm1hbmNlLgoKCSogaW5jbHVkZS9kc2RyaXZlci5oLCBpbmNsdWRlL2Rzb3VuZC5oOgoJUm9iZXJ0IFJlaWYgPHJlaWZAZWFydGhsaW5rLm5ldD4KCUFkZGVkL2ZpeGVkIHNvbWUgZGVmaW5pdGlvbnMgZm9yIGRpcmVjdCBzb3VuZCBjYXB0dXJlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJU3VwcG9ydCB0aGUgdW5kb2N1bWVudGVkIGJlaGF2aW9yIG9mIGRlbGV0aW5nIGNvbHVtbiB6ZXJvLgoKCSogc2VydmVyL3NuYXBzaG90LmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVncmVzc2lvbiBpbiBwcm9jZXNzIHBhcmVudCBoYW5kbGluZy4KCgkqIGRsbHMvb2xlMzIvcnBjLmM6IERhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CglSb2xsIGxvb3AgYmFjayB1cCB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gbWFrZSB3b3JsZCB0cmFuc2Zvcm1zIHdvcmsgaW4gRU1GcwoJLSBmaXggZGVjbGFyYXRpb24gb2YgR0RJQ09NTUVOVF8qIG1hY3JvcwoJLSByZWZ1c2UgdG8gbG9hZCB1bmFsaWduZWQgRU1GcwoJLSBmaXggU2V0V2luTWV0YUZpbGVCaXRzCgoJKiBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywKCSAgZGxscy9uZXRhcGkzMi93a3N0YS5jLCBpbmNsdWRlL2xtd2tzdGEuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNlcGFyYXRlICJFbnVtZXJhdGUgSGFyZHdhcmUgQWRkcmVzc2VzIiBhcyBmdW5jdGlvbiwgYXMgb3RoZXIgbmV0YXBpMzIKCWZ1bmN0aW9uIG5lZWQgaXQuCglJbXBsZW1lbnRlZCBsZXZlbCAwIG9mIE5ldFdrc3RhVHJhbnNwb3J0RW51bS4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJSW1wbGVtZW50ZWQgX21ic25iY2F0LgoKCSogZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2F0b20uYywKCSAgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvY29uc29sZS5oLAoJICBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9jb250ZXh0X3Bvd2VycGMuYywKCSAgc2VydmVyL2NvbnRleHRfc3BhcmMuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9kZXZpY2UuYywKCSAgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oLAoJICBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL2hvb2suYywgc2VydmVyL21hcHBpbmcuYywKCSAgc2VydmVyL211dGV4LmMsIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9vYmplY3QuYywKCSAgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NtYi5jLAoJICBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGltZXIuYywKCSAgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2RldmljZS5jOgoJQ2hhbmdlZCBmZCBvcGVyYXRpb25zIHRvIHRha2UgYSBzdHJ1Y3QgZmQgaW5zdGVhZCBvZiBhIHN0cnVjdCBvYmplY3QuCglSZW1vdmVkIGdldF9maWxlX2luZm8gZnVuY3Rpb24gZnJvbSBvYmplY3Qgb3BlcmF0aW9ucy4KCUFkZGVkIGdldF9kZXZpY2VfaWQgcmVxdWVzdCB0byBhdm9pZCBhYnVzaW5nIGdldF9maWxlX2luZm8uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb3JyZWN0bHkgcmVtZW1iZXIgdGhlIGZpcnN0IHBhaW50IGV2ZW50LCBidXQgZGVsYXkgaXRlbSBtZXRyaWNzCgljYWxjdWxhdGlvbiB1bnRpbCB3ZSBhY3R1YWxseSBoYXZlIHNvbWUgaXRlbXMuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGZpeGVkIG1vdXNlIGV2ZW50IGdlbmVyYXRpb24KCS0gYmV0dGVyIG1hbmFnZW1lbnQgb2Ygc29tZSBrZXlzCgktIG5vdyBnZW5lcmF0aW5nIHNldmVyYWwgd2luY29uLWV2ZW50cyBmb3IgYSBnaXZlbiBjdXJzZXMtZXZlbnQKCS0gYWRkZWQgYmFzaWMgc3VwcG9ydCBmb3IgVi1zY3JvbGxpbmcgKGRpc2FibGVkIGJ5IGRlZmF1bHQpCgktIGZpeGVkIHByaW50aW5nIG9mIHNvbWUgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycwoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy92Z2EuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU91dHB1dHRpbmcgYmFja3NwYWNlcyBzaG91bGQgb25seSBtb3ZlIHRoZSBjdXJzb3IuCglUZXh0IGJ1ZmZlciBjb3B5IGlzIG5vdyBhbHdheXMgaW5pdGlhbGl6ZWQgY29ycmVjdGx5LgoJUHJlc2VydmUgdmlkZW8gbWVtb3J5IGZsYWcgaXMgcGFyc2VkIGFuZCB0ZXh0IHNjcmVlbiBpcyBub3cgcmVhbGx5CgljbGVhcmVkIHdoZW4gZmxhZyBpcyBjbGVhci4KCgkqIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jOiBNaWtlIEhlYXJuIDxtLmhlYXJuQHNpZ25hbC5xaW5ldGlxLmNvbT4KCVJlbW92ZWQgdGhlIG5vbmV4aXN0YW50IGNvbW1hbmQgImRlYnVnbXNnIiBmcm9tIHdpbmVkYmcgaGVscCBzY3JlZW4uCgoyMDAzLTAyLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXNlIHRoZSBkd1N0YXJ0VmVydGV4IGFyZ3VtZW50IGluIHRoZSBEcmF3KlByaW1pdGl2ZVZCIG1ldGhvZHMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDaGFuZ2UgYWxnb3JpdGhtIHRvIGRldGVjdCBsaWdodGVkIC8gdW5saWdodGVkIHZlcnRpY2VzLgoKCSogZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglIYW5kbGUgdGhlIENPTE9SVkVSVEVYIHJlbmRlciBzdGF0ZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVRyYWNlIGFmdGVyIHRoZSBtYXRyaXggaGFzIGJlZW4gY29waWVkLCBub3QgYmVmb3JlLgoKCSogc2VydmVyL25hbWVkX3BpcGUuYzoKCVJlbW92ZWQgZGlyZWN0IHJlZmVyZW5jZXMgdG8gdGhlIGZpbGUgZGVzY3JpcHRvciwgdXNlIHRoZSBuZXcgZmQKCWZ1bmN0aW9ucyBpbnN0ZWFkIHNvIHRoYXQgZ2V0X2ZkIHdvcmtzIHByb3Blcmx5LgoKCSogZGxscy9zaGx3YXBpL3N0cmluZy5jOiBTZXJnZWkgVHVyY2hhbm92IDxwbHVtYmVyQHByaW50LnZsYWQucnU+CgktIF9TSFN0ckR1cEFBIGZvcmdvdCBhYm91dCB0ZXJtaW5hdGluZyAnXDAnLgoJLSBTSFN0ckR1cEEgYWRkcyBleHRyYSB0ZXJtaW5hdG9yIHdoaWNoIGlzIG5vdCBuZWVkZWQgYXMgdGhlIGxlbmd0aAoJICByZXR1cm5lZCBieSBNdWx0aUJ5dGVUb1dpZGVDaGFyKCwsLTEsLCkgYWxyZWFkeSBpbmNsdWRlcyBpdC4KCgkqIGRsbHMvbXN2Y3J0L2xvY2FsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglGaXggd2FybmluZyBpbiBfX2NydExDTWFwU3RyaW5nQS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBdm9pZCB3YXJuaW5ncyBjYXVzZWQgYnkgYXNzZXJ0KC4uLikuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVJlcGxhY2UgSEVBUF9zdHJkdXBBdG9XIGNhbGwgYW5kIGRlbGV0ZSBleHRyYQoJUnRsQ3JlYXRlVW5pY29kZVN0cmluZ0Zyb21Bc2NpaXouCgoJKiBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50ZWQgRW51bU9iamVjdHMgZm9yIHRoZSBrZXlib2FyZCBkZXZpY2UuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeGVkIEdldFRyYW5zZm9ybQoJLSBpbXBsZW1lbnRlZCBNdWx0aXBseVRyYW5zZm9ybQoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIGZvZ2dpbmcgZm9yIHRyYW5zZm9ybWVkIHZlcnRpY2VzLgoKCSogZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQWRkZWQgc29tZSBtaXNzaW5nIExlYXZlQ3JpdGljYWxTZWN0aW9uJ3MuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvb2xlMzIvcnBjLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJUmVtb3ZlIGRlYWQgY29kZSBhZnRlciByZXR1cm4gb3IgcHJvcGVybHkgY29tbWVudCBpdCBvdXQuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUFkZCBlbnRyeSBmb3IgIkVycm9yIGluc3RhbGxpbmcgaUtlcm5lbC5leGU6ICgweDE0MDApIi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJV2luc3Bvb2wgZXhwZWN0cyBOVUxMcyB0byBiZSBwcmVzZXJ2ZWQgaW4gYXNjaWkgdG8gdW5pY29kZQoJY29udmVyc2lvbnMuCgoJKiBsb2FkZXIvZWxmLmM6IFdhcnJlbiBCYWlyZCA8V2FycmVuX0JhaXJkQGNpbW1ldHJ5LmNvbT4KCUluY3JlYXNlIHNpemUgb2YgaW5zdWZmaWNpZW50bHkgYmlnIHN0YWNrIGFsbG9jYXRlZCBidWZmZXIgdXNlZCBmb3IKCWVycm9yIG1lc3NhZ2VzIGluIEVMRl9Mb2FkTGlicmFyeUV4QS4KCgkqIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaDoKCVdhcnJlbiBCYWlyZCA8V2FycmVuX0JhaXJkQGNpbW1ldHJ5LmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIEdldERldmljZUNhcHMgaW4gbWV0YWZpbGUgZHJpdmVyLgoKCSogaW5jbHVkZS93aW5nZGkuaDogV2FycmVuIEJhaXJkIDxXYXJyZW5fQmFpcmRAY2ltbWV0cnkuY29tPgoJQWRkZWQgQllURSBleHBsaWNpdCBjYXN0cyBpbiBSR0IgbWFjcm8gZGVmaW5pdGlvbi4KCgkqIHByb2dyYW1zL3dpbmVib290L3dpbmVib290LmM6IE1hdHRoZXcgRGF2aXNvbiA8bS5kYXZpc29uQHZpcmdpbi5uZXQ+CglNYWtlIHRyYWNlIG91dHB1dCBwcm9kdWNlZCBieSB3aW5lYm9vdCBtb3JlIHVzZWZ1bC4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVwb3J0IGFuIGVycm9yIGlmIEdldERldmljZURhdGEgaXMgY2FsbGVkIG9uIGFuIFVuYWNxdWlyZWQgZGV2aWNlLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgdG9vbHMvd2luZWNvbmY6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJTW9kaWZ5IHRoZSB3aW5lY29uZiB0YWdzIHNvIHRoYXQgdGhlIHNhbXBsZSBjb25maWcgY2FuIGJlIGluY2x1ZGVkIGluCgl0aGUgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4IGNvbW1lbnQgaW4gWmZyb21acHJvai4KCUZpeCBtaXNzaW5nIHBhdGggaW4gbGlnaHRpbmcgY29kZS4KCU1vdmUgc29tZSBPcGVuR0wgZm9nIGluaXQgdG8gdGhlIHJpZ2h0IHBsYWNlLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBJRGlyZWN0M0REZXZpY2U3X0xvYWQuCgoyMDAzLTAyLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL29iamVjdC5oLAoJICBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NtYi5jLAoJICBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVBvcnRpbmcgZml4ZXMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsCgkgIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbXNkb3MvZHBtaS5jLAoJICBtc2Rvcy9pbnQyMS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVvcmdhbml6ZSBJT0NUTCBoYW5kbGluZy4KCU1vdmUgQVNQSSBob29raW5nIHRvIHdpbmVkb3MuCglNb3ZlIHNvbWUgbWlzY2VsbGFuZW91cyBmdW5jdGlvbnMgdG8gd2luZWRvcy4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBleHBvcnRzIGZyb20gd2luZWRvcyBkbGwuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gUEVfZml4dXBfaW1wb3J0cyByZXBvcnQgIm1vZHVsZSBmaWxlIG5vdCBmb3VuZCIgb25seSBpbiBjYXNlIG9mIGEKCSJmaWxlIG5vdCBmb3VuZCIgZXJyb3IuIE90aGVyd2lzZSByZXBvcnQgZmFpbHVyZSBhbmQgZXJyb3IgbnVtYmVyLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgdW5kZWZpbmVkIG9wZXJhdGlvbiBjb21waWxlciB3YXJuaW5nLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgbG9ja2luZyB0byBWR0FfU2V0V2luZG93U3RhcnQuCglNb3ZlIGNvbnNvbGUgdXBkYXRlcyB0byB1cGRhdGUgdGhyZWFkIGluc3RlYWQgb2YgaW1tZWRpYXRlbHkgd3JpdGluZwoJdG8gY29uc29sZS4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgc3VwcG9ydCBmb3IgVkVTQSBtb2RlIGluZm9ybWF0aW9uLgoJUmVvcmdhbml6ZSBjb250cm9sbGVyIGFuZCBzdGF0ZSBpbmZvcm1hdGlvbiByb3V0aW5lcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXB1dGUgbWF0cml4IG9mIGZpcnN0IHBhaW50IHdoZW4gd2UgYWN0dWFsbHkgaGF2ZSBzb21lIGl0ZW1zCgkocHJvYmxlbSBmaXJzdCBzcG90dGVkICYgZGVidWdnZWQgYnkgRHVhbmUgQ2xhcmspLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIG1pc3NpbmcgTGlzdFZpZXdfU2V0SXRlbUNvdW50IGRlY2xhcmF0aW9uLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHN0dWIgZm9yIHVuZG9jdW1lbnRlZCAnd2dsR2V0RGVmYXVsdFByb2NBZGRyZXNzJyBmdW5jdGlvbi4KCgkqIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYzogV2FycmVuIEJhaXJkIDxXYXJyZW5fQmFpcmRAY2ltbWV0cnkuY29tPgoJRml4IHdyb25nIHN0cnVjdHVyZSB1c2VkIHRvIGRldGVybWluZSB0aGUgc2l6ZSBvZiBhIG1lbWNweSBpbgoJTUZEUlZfQ3JlYXRlQnJ1c2hJbmRpcmVjdC4KCgkqIGRsbHMva2VybmVsL3RpbWUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeGVkIHRpbWUgem9uZSBjYWxjdWxhdGlvbi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXaXRoIGhlbHAgZnJvbSBFbmlvIFNjaHV0dCBKciA8ZW5pby5zLmpyQG9wZXJhbWFpbC5jb20+CglTa2lwIHRoZSBvdmVybGFwcGVkIEkvTyB0ZXN0cyBvbiBmaWxlcyBvbiBXaW45eC4KCgkqIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgX19jcnRMQ01hcFN0cmluZ0EuCgoJKiBkbGxzL2N0bDNkL2N0bDNkLmMsIGRsbHMvY3RsM2QvY3RsM2QzMi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCU1hbmFnZSBpbnRlcm5hbCBjdGwzZCBhdXRvIHN1YmNsYXNzIGZsYWcuCgoJKiBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU9ubHkgaW5zdGFsbCB0aGUga2V5Ym9hcmQgaG9vayBvbiBkZXZpY2UgY3JlYXRpb24uCgoJKiBwcm9ncmFtcy93aW5lZGJnL2V4dF9kZWJ1Z2dlci5jLCBwcm9ncmFtcy93aW5lZGJnL2hhc2guYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9tb2R1bGUuYywgcHJvZ3JhbXMvd2luZWRiZy9zb3VyY2UuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJVHJhbnNsYXRlZCBzcHJpbnRmIGNhbGxzIGludG8gc25wcmludGYuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSB0cmFuc2xhdGVkIHNwcmludGYgY2FsbHMgaW50byBzbnByaW50ZgoJLSBhZGRlZCBoZWxwZXIgZm9yIHNlbmRpbmcgc3RyaW5ncyBpbiBoZXggZm9ybQoKCSogcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLAoJICBwcm9ncmFtcy93aW5lZGJnL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQXR0YWNoIGNvbW1hbmQgbm8gbG9uZ2VyIHdvcmtlZCBhcyBleHBlY3RlZCwgZml4ZWQgaXQuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZC5oLAoJICBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUZpeGVkIGhhbmRsaW5nIG9mIFBBVEggY29tbWFuZCB3aXRoIHNwYWNlcy4KCgkqIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIG9wdGlvbiB0byBzZXQgcHJlcHJvY2Vzc29yIChub3QgeWV0IGltcGxlbWVudGVkKS4KCVJlbW92ZSB0aGUgLU4gb3B0aW9uLCB3aGljaCBpcyBlcXVpdmFsZW50IHRvICctUCBjYXQnLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkIHN1cHBvcnQgZm9yIDI0IGJwcCB0byBfQmx0X0NvbG9yRmlsbC4KCUZpeCBlbmRpYW5uZXNzIGlzc3VlIGluIERJQl9EaXJlY3REcmF3U3VyZmFjZV9CbHQuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBGSVhNRSBvbiBzdHViIGV4Y2VwdGlvbi4KCjIwMDMtMDItMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHRyYWNlLmMsCgkgIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywKCSAgdG9vbHMvbWFrZV9yZXF1ZXN0czoKCU1hZGUgcHJvY2VzcyBhbmQgdGhyZWFkIGlkcyBzbWFsbCBpbnRlZ2VycyBpbnN0ZWFkIG9mIHBvaW50ZXJzLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaDoKCVN0b3JlIG1ic3RvaygpIG5leHQgcG9pbnRlciBpbiB0aGUgcGVyLXRocmVhZCBkYXRhLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglJbXBsZW1lbnRlZCBfbWJzdG9rIGFuZCBfbWJzbmJzZXQuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9ycGNydDQvbmRyX21pc2MuaCwKCSAgZGxscy9ycGNydDQvbmRyX29sZS5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgbWFyc2hhbGxpbmcgb2YgcG9pbnRlcnMsIHNpbXBsZSBhbmQgY29tcGxleCBzdHJ1Y3R1cmVzLAoJY29uZm9ybWFudCBhbmQgY29tcGxleCBhcnJheXMsIGFuZCB1c2VyLW1hcnNoYWxsZWQgdHlwZXMuCglJbXByb3ZlZCBtYXJzaGFsbGluZyBvZiBjb25mb3JtYW50IHN0cmluZ3MgYW5kIGludGVyZmFjZSBwb2ludGVycyBhCgliaXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsCgkgIGluY2x1ZGUvc2hsb2JqLmg6CglSb2xmIEthbGJlcm1hdHRlciA8ci5rYWxiZXJtYXR0ZXJAaGNjbmV0Lm5sPgoJQ2hhbmdlIFNIQ3JlYXRlRGlyZWN0b3J5IGFuZCBXaW4zMkRlbGV0ZUZpbGUgdG8gYmUgVW5pY29kZSBvciBBTlNJIGRlcGVuZGluZwoJb24gT1MgdmVyc2lvbi4gQWRkIFNoQ3JlYXRlRGlyZWN0b3J5RXggQVBJLgoKCSogdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy93cmMubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1lcmdlIFJFQURNRS53cmMgaW50byB3cmMncyBtYW4gcGFnZS4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvcGFsZXR0ZS5jOgoJQW5kcmV3IEpvaG4gSHVnaGVzIDxodWdoZXMyMDAyQGJ0aW50ZXJuZXQuY29tPgoJRXh0ZW5kZWQgU2V0U3lzdGVtUGFsZXR0ZVVzZSB0byBkZWFsIHdpdGggZXJyb3IgY29uZGl0aW9ucy4KCgkqIGRsbHMvZDNkOC9kaXJlY3R4LmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDb3JyZWN0IHNvbWUgY2FwYWJpbGl0aWVzLCBhbmQgZGVmYXVsdCBvdGhlcnMgdG8gZnVsbHkgc3VwcG9ydGVkIGZvcgoJbm93LgoKMjAwMy0wMS0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd3JjX3JzYy5oOiBObyBsb25nZXIgdXNlZC4KCgkqIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBpbmNsdWRlL3dpbmdkaS5oOgoJQW5kcmV3IEpvaG4gSHVnaGVzIDxodWdoZXMyMDAyQGJ0aW50ZXJuZXQuY29tPgoJLSBEZXZpY2VDYXBhYmlsaXRpZXMxNiBub3cgY2FsbHMgUFNEUlZfRGV2aWNlQ2FwYWJpbGl0aWVzLgoJLSBFeHREZXZpY2VNb2RlMTYgbm93IGNhbGxzIFBTRFJWX0V4dERldmljZU1vZGUuCgktIEV4dGVuZGVkIHN3aXRjaCBzdGF0ZW1lbnQgaW4gRGV2aWNlQ2FwYWJpbGl0aWVzIHRvIGhhbmRsZSBuZXcKCSAgb3B0aW9ucy4KCS0gQWRkZWQgY29tbWVudHMgdG8gZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL3RleHQuYzogQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJQmV0dGVyIGhhbmRsaW5nIG9mIGJhZCBkYXRhIGluIFRhYmJlZFRleHRPdXQvVGFiYmVkVGV4dEV4dGVudAoJQ2hlY2tlZCB3aXRoOgoJYSkgTnVsbCB0YWJzdG9wIGFycmF5IHdpdGggbm9uLXplcm8gbnVtYmVyIG9mIGVudHJpZXMKCWIpIE5lZ2F0aXZlIG51bWJlciBvZiBlbnRyaWVzIChNU0ROIGlzIHdyb25nOyBpdCBpcyBub3QgYW4gZXJyb3IpCgljKSBTaW5nbGUgdGFid2lkdGggb2YgbmVnYXRpdmUgc2l6ZQoJZCkgU2luZ2xlIHNwZWNpZmllZCB0YWJ3aWR0aCBvZiB6ZXJvIHNpemUKCgkqIGRsbHMvcnBjcnQ0L25kcl9taWRsLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmV1c2VCdWZmZXIgc2hvdWxkIGJlIEZBTFNFIGZvciBSUEMgY2xpZW50cy4KCVNvbWUgY2xlYW51cHMgYW5kIGVsaW1pbmF0aW9uIG9mIHNvbWUgZHVwbGljYXRlIGNvZGUuCgoJKiBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIGEgYnVnIGluIENvbXBsZXRlQmluZGluZ0EvVy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBScGNSYWlzZUV4Y2VwdGlvbi4KCgkqIGluY2x1ZGUvcnBjZGNlLmgsIGluY2x1ZGUvcnBjbmRyLmgsIGluY2x1ZGUvd2luZS9ycGNmYy5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglTb21lIFJQQyBkZWZpbml0aW9ucy4KCgkqIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbiwKCSAgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIHRvb2xzL3dyYy93cml0ZXJlcy5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBoZWFkZXIgZmlsZSBnZW5lcmF0aW9uLCBhbmQgcmVsYXRlZCBvcHRpb25zLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUltcGxlbWVudGVkIG1ic2ljb2xsICh3aXRob3V0IGxvY2FsZSBoYW5kbGluZykuCgoJKiBkbGxzL3dpbm1tL3dpbm1tX1NpLnJjOiBXYWxkZWNrIFNjaHV0emVyIDxzY2h1dHplckBtYXRoLnJ1dGdlcnMuZWR1PgoJUmVtb3ZlZCBpbnZhbGlkIGNoYXIuCgoyMDAzLTAxLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gQWRkZWQgZXhwZXJpbWVudGFsIHBhcnNpbmcgZm9yIEMrKyBjb2RlIChidXQgd2luZWRiZyBkb2Vzbid0IHN1cHBvcnQKCSAgQysrIEFCSSkuCgktIE5vdyBsb2FkaW5nIHN5bWJvbHMgZm9yIGluY2x1ZGVkIGZpbGVzLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCVhDbG9zZUlNIHNvbWV0aW1lcyBjcmFzaGVzIGluIFhsaWIsIGRvbid0IGNhbGwgaXQuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzogTGl1IFNwaWRlciA8bGl1c3BpZGVyQHlhaG9vLmNvbT4KCUFkZGVkIFhORm9jdXNXaW5kb3cgYXR0cmlidXRlIHdoZW4gY3JlYXRpbmcgYSBJQy4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2FzeW5jLmMsIHNlcnZlci9hdG9tLmMsIHNlcnZlci9jaGFuZ2UuYywKCSAgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsCgkgIHNlcnZlci9mZC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5oLCBzZXJ2ZXIvaGFuZGxlLmMsCgkgIHNlcnZlci9ob29rLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VsZWN0LmMsCgkgIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc21iLmMsIHNlcnZlci9zbmFwc2hvdC5jLAoJICBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jOgoJU3RhcnRlZCBtb3ZpbmcgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIFVuaXggZmlsZSBkZXNjcmlwdG9ycyB0byBhCglzZXBhcmF0ZSBmZCBvYmplY3QuIFRoaXMgd2lsbCBiZSBuZWVkZWQgZm9yIGZpbGUgbG9ja2luZy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Zy5sLCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnZ2VyLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jLCBwcm9ncmFtcy93aW5lZGJnL21vZHVsZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIFJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgcXVldWUgJiBtb2RyZWYgcmVsYXRlZCBjb21tYW5kcy4KCS0gUHJvdGVjdGVkIHdhbGsgY29tbWFuZHMgd2hpbGUgYmVpbmcgY2FsbGVkIHdpdGggbm8gcHJvY2VzcyBsb2FkZWQuCgktIEluIGNvbW1hbmQgZ3JhbW1hciwgYWxsb3dlZCBzb21lIGV4cHJlc3Npb25zIHdoaWxlIG9ubHkgbnVtYmVycwoJICB3aGVyZSBhY2NlcHRlZC4KCS0gUmVuYW1lZCAnaW5mbyBtYXBzJyBpbmZvICd3YWxrIG1hcHMnIGFuZCBsZXQgaXQgd29yayBvbiBhbnkKCSAgcHJvY2Vzcy4KCgkqIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwgZGxscy93c29jazMyL3Byb3RvY29sLmMsCgkgIGRsbHMvd3NvY2szMi9zZXJ2aWNlLmMsIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGluY2x1ZGUvbnNwYXBpLmg6CglBbmRyZXcgSm9obiBIdWdoZXMgPGh1Z2hlczIwMDJAYnRpbnRlcm5ldC5jb20+CglQcm92aWRlIHN0dWIgaW1wbGVtZW50YXRpb25zIG9mIEdldFR5cGVCeU5hbWVBIGFuZCBTZXRTZXJ2aWNlQS4KCgkqIGluY2x1ZGUvd2lubnQuaCwgbGlicmFyeS9wb3J0LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgd3JpdGFibGUtc3RyaW5ncyBzdXBwb3J0LgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jOiBEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJT25seSB3YXJuIGlmIG1lc3NhZ2UgaXMgPj0gV01fVVNFUiAmJiA8IFdNX0FQUC4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIERlZmVyIG9mIElEaXJlY3QzRFZlcnRleFNoYWRlcl9TZXRDb25zdGFudCwgd2FpdGluZyBmb3IKCURyYXdQcmltaXRpdmUgY2FsbC4KCS0gQmVnaW5uaW5nIG9mIFZlcnRleFNoYWRlciBjb25zdGFudHMgc3VwcG9ydCBpbnRvIHN0YXRlYmxvY2sgKG9ubHkKCSAgc3RvcmVkLCBub3QgY2FwdHVyZWQgeWV0KS4KCS0gRml4IGNvbXBpYXRpb24gd2l0aCBuaXZkaWEgR0wvZ2wuaCBhbmQgbWVzYSBHbC9nbGV4dCBoZWFkZXJzIGFzCgkgIHJlcG9ydGVkIGJ5IEFuZHJldyBKb2huIEh1Z2hlcy4KCS0gT25lIGdsQWN0aXZlVGV4dHVyZS9nbEFjdGl2ZVRleHR1cmVBUkIgbWlzc2luZy4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkIG1pc3NpbmcgY2FzdHMgcmVsYXRlZCB0byBwdGhyZWFkX3QuIFR3ZWFrIGNvbW1lbnRzLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmMsIG1zZG9zL2ludDIxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUZpeCBidWZmZXJlZCBpbnB1dCBmdW5jdGlvbi4gQWRkIHN1cHBvcnQgZm9yIFVNQiBzdWJmdW5jdGlvbnMgdG8KCW1lbW9yeSBhbGxvY2F0aW9uIHN0cmF0ZWd5IGZ1bmN0aW9uLiBNb3ZlIGZsb2NrIHRvIHdpbmVkb3MuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fcHJpdmF0ZS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIG1hZGUgSUNJbmZvIGNsb3NlciB0byBXaW5kb3dzIGJlaGF2aW9yIChpLmUuIG5vIGxvbmdlciBvcGVucyB0aGUKCSAgZHJpdmVyKQoJLSBmaXhlZCBtb3N0IGVuZGlhbmVzcyByZWxhdGVkIGJ1Z3MgaW4gZm91ckNDIGhhbmRsaW5nCgktIGFkZGVkIGRlYnVnIGZ1bmN0aW9uIGZvciBwcmludGluZyBmb3VyQ0M6cwoJLSBpbnRlcm5hbCBmdW5jdGlvbiBmaXhlcyBhbmQgc3BlZWQtdXAKCgkqIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjOiBEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJQWRkIHJlYWwgc3ludGF4IGRvYyBmb3IgTEFCRUwgY29tbWFuZC4KCjIwMDMtMDEtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLAoJICBkbGxzL2QzZDgvZGlyZWN0eC5jLCBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZDNkOC9zdGF0ZWJsb2NrLmMsCgkgIGRsbHMvZDNkOC92c2hhZGVyZGVjbGFyYXRpb24uYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJU29tZSBuZWVkZWQgY2xlYW51cHMgZm9yIGZ1dHVyZSBkeDkgYW5kIGQzZCBjb21tb24gbGF5ZXIgc3VwcG9ydDoKCSAgLSBzdGF0ZWJsb2NrcyB0byBJRGlyZWN0M0RTdGF0ZUJsb2NrSW1wbCBpbnRlcmZhY2UgYW5kIG1vdmluZyBpbnRvCgkgICAgYSBuZXcgZmlsZSAoc3RhdGVibG9jay5jKQoJICAtIHNoYWRlcnMgdG8gSURpcmVjdDNEKlNoYWRlckltcGwgaW50ZXJmYWNlcwoJICAtIHNwbGl0dGluZyB2c2hhZGVyIGFuZCB2c2hhZGVyIGRlY2xhcmF0aW9uIGFzIGluIGR4OSBpbnRvIDIKCSAgICBpbnRlcmZhY2VzIChmb3IgZnV0dXJlIGNvbW1vbiBsYXllciB1c2UpCgkgIC0gdnNoYWRlciBkZWNsYXJhdGlvbiBjb2RlIHRvIGEgbmV3IGZpbGUgKHZzYWRlcmRlY2xhcmF0aW9uLmMpCgkgIC0gZGV2aWNlIGNhbGxzIHRvIG5ldyBpbnRlcmZhY2VzIChyZWRpcmVjdCBzdHVicykKCVNpbXBsZSB0ZXh0dXJlIGZpeCBmb3IgYSBsaXR0bGUgcmVncmVzc2lvbiBhZnRlciBsYXN0IEphc29uJ3MgcGF0Y2hlcy4KCVNvbWUgY2FwcyBjb2RlIHVzaW5nIHRoZSBHTC9nbGV4dC5oIGRlZmluZXMgKEdMX1ZFUlNJT05fKikuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0VuLnJjLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5oLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmgsIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZF9yZXMuaDoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZWNvZGVAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCUltcGxlbWVudGVkIGZvbnQgc2VsZWN0aW9uLgoJQWRkZWQgYWNjZWxlcmF0b3JzIHJlc291cmNlcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglQcm9wZXJseSAjZGVmaW5lIHNpcHhfbm9kZSBmb3IgRnJlZUJTRC4KCgkqIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWw6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lMkB0cmlhZC5yci5jb20+CglVcGRhdGVkIHRoZSBTYW1wbGUgY29uZmlnCglSZXBsYWNlZCA8cGFyYT4gd2l0aCA8cHJvZ3JhbWxpc3Rpbmc+LgoKCSogZGxscy9vbGUzMi9vbGUyLmM6IEp1ZXJnZW4gU2NobWllZCA8ai5zY2htaWVkQHQtb25saW5lLmRlPgoJRml4IERvRHJhZ0Ryb3AgaW4gY2FzZSBvZiBjaGlsZCB3aW5kb3dzLgoKCSogZGxscy94MTFkcnYvZGVza3RvcC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJV2hlbiB1c2luZyBkZXNrdG9wIG1vZGUgYXR0YWNoIGFsbCB0aHJlYWQgaW5wdXRzIHRvZ2V0aGVyLCBzbyB0aGF0CglrZXlib2FyZCBmb2N1cyB3b3JrcyBwcm9wZXJseS4KCgkqIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWw6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lMkB0cmlhZC5yci5jb20+CglSZW1vdmVkIHRoZSBvbGQgd2luLmluaSBzYW1wbGUgcmVwbGFjZWQgaXQgd2l0aCBhIFJIIDguMCBycG0gLnNwZWMuCglDaGFuZ2VkIHRpdGxlIG5hbWUgb2Ygc2VjdGlvbiA1LjEuCglPdGhlciBzbWFsbCBmaXhlcy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGZyZWUgdGhlIG9sZCBzdHJpbmcgaW4gU3lzUmVBbGxvY1N0cmluZ0xlbiwgcmV1c2UgdGhlIG9sZAoJc3RyaW5nIG1lbW9yeSAoaWYgJ2luJyBpcyBOVUxMKS4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUF2b2lkIGNvbXBpbGVyIHdhcm5pbmcgaW4gU1RPUkFHRV9nZXRfZnJlZV9wcHNfZW50cnkoKS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgc2VydmVyL3NvY2suYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglEbyBub3QgY2xlYXIgRkRfV0lORV9DT05ORUNURUQgb24gc2h1dGRvd24oKS4gRkRfV0lORV9DT05ORUNURUQKCShjdXJyZW50bHkgdW51c2VkKSBjYW4gdGh1cyBiZSB1c2VkIHRvIGRldGVybWluZSBpZiBhIHN0cmVhbSBzb2NrZXQKCXdhcyBldmVyIGNvbm5lY3RlZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFI0IGFuZCBSOCBjb21wYXJpc29uIHRvIFZhckNtcC4KCUFkZGVkIEkyIHRvIFZhckZvcm1hdC4KCUFkZGVkIFZhclN1YiwgVmFyRGl2LCBWYXJNdWwgZm9yIGludGVnZXIgYW5kIGZsb2F0IHR5cGVzLgoKCSogZGxscy93aW5lZG9zL2ludDMxLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlcGxhY2UgRklYTUVzIHdpdGggVFJBQ0VzIGluIHRob3NlIHBhZ2luZyBmdW5jdGlvbnMgdGhhdCByZWFsbHkgYXJlCglub3Qgc3VwcG9zZWQgdG8gZG8gYW55dGhpbmcuCglBZGQgc2ltcGxlIGVtdWxhdGlvbiBvZiBjb3Byb2Nlc3NvciBzdGF0ZSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgbXNkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmV0dXJuIHNjYW5jb2RlIHdoZW4gZXh0ZW5kZWQga2V5Y29kZXMgYXJlIHJlYWQgdXNpbmcgY29uc29sZSBpbnB1dAoJZnVuY3Rpb25zLiBNb3ZlIGZpbGUgc3RhbXAgaGFuZGxpbmcgdG8gd2luZWRvcy4gSW1wbGVtZW50IERPUzcgZmlsZQoJc3RhbXAgZXh0ZW5zaW9ucy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJU2hhY2hhciBTaGVtZXNoIDx3aW5lY29kZUBzdW4uY29uc3VtZXIub3JnLmlsPgoJLSBEZWZpbmVkIElEcyBmb3Igc3RyaW5nIGNvbnN0YW50cyBmb3IgZm9udCBjb2xvciBuYW1lcyBhbmQgZm9yIHRoZQoJICB2YXJpb3VzIGNoYXJzZXRzLgoJLSBMb2FkIHRoZSBjb2xvciBuYW1lcyBmcm9tIHRoZSByZXNvdXJjZXMgaW4gdGhlIGZvbnRzIGRpYWxvZy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLAoJICBpbmNsdWRlL3dpbmluZXQuaDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCSJJbnRlcm5ldEF1dG9EaWFsIiBzaG91bGQgYmUgIkludGVybmV0QXV0b2RpYWwiLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglIYW5kbGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgcmV0cmFjZSBzZXBhcmF0ZWx5LgoKCSogZGxscy93aW5lZG9zL2ludDEwLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVVuaWZ5IFZHQSBhbmQgVkVTQSB2aWRlbyBtb2RlIHNldHRpbmcgY29kZS4KCjIwMDMtMDEtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kM2RpbS8uY3ZzaWdub3JlLAoJICBkbGxzL2QzZGltL01ha2VmaWxlLmluLCBkbGxzL2QzZGltL2QzZGltLnNwZWMsCgkgIGRsbHMvZDNkaW0vZDNkaW1fbWFpbi5jLCBkbGxzL2QzZGltL3ZlcnNpb24ucmM6CglFbnJpY28gSG9ybiA8ZmFybWJveTFAc3ViZGltZW5zaW9uLmNvbT4KCUFkZGVkIGQzZGltLmRsbCB3aXRoIHN0dWJzLgoKCSogZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsCgkgIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9udGRsbC9oZWFwLmMsCgkgIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kcml2ZS5jLAoJICBmaWxlcy9zbWIuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvbXNnYm94LmM6CglSZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgaW5jbHVzaW9uIG9mIGhlYXAuaC4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaCwgaW5jbHVkZS93aW5udC5oOgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiBleHRyYSBzZW1pY29sb25zLgoKCSogZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmUyQHRyaWFkLnJyLmNvbT4KCUZpeGVkICRQUkVGSVggbG9jYXRpb24uCglTb21lIHNtYWxsIHVwZGF0ZXMuCglBZGRlZCBzYW1wbGUgY29uZmlnLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHN1cHBvcnQgZm9yIGNvbG9yIG1hdGVyaWFsIHNvdXJjZXMsIHdpdGggaGVscCBmcm9tIEx1Y2hvLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzoKCUxlb25hcmRvIFF1aWphbm8gVmluY2VuemkgPGxxdWlqYW5vQHBudWRjci5jb20+CglGaXhlZCBMYXRpbiBBbWVyaWNhbiBrZXlib2FyZCAoa2V5ICI/ISIgd2FzIHJldmVyc2VkKS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBNYXR0aGV3IERhdmlzb24gPG0uZGF2aXNvbkB2aXJnaW4ubmV0PgoJUmVtb3ZlZCBzb21lIFVuaWNvZGUgLT4gQXNjaWkgY3Jvc3MtY2FsbHMuCgoJKiBkbGxzL3dpbnNwb29sL3Rlc3RzL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJUmVtb3ZlZCB3aW5kb3dzIHZlcnNpb24gY2hlY2tzIGZyb20gR2V0UHJpbnRlckRyaXZlckRpcmVjdG9yeSB0ZXN0cy4KCgkqIG9iamVjdHMvZGMuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJTG9hZCBkZWZhdWx0IHN0b2NrIGJpdG1hcCBpbiBDcmVhdGVEQygpLgoKMjAwMy0wMS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvaGVhcC5oOiBNYXR0aGV3IERhdmlzb24gPG0uZGF2aXNvbkB2aXJnaW4ubmV0PgoJUmVtb3ZlIHRoZSBIRUFQX3N0cmR1cEF0b1cgbWFjcm8uCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy91c2VyL2hvb2suYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgbG9hZGVyL3Jlc291cmNlLmMsIG1lbW9yeS9lbnZpcm9uLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJTWF0dGhldyBEYXZpc29uIDxtLmRhdmlzb25AdmlyZ2luLm5ldD4KCVJlbW92ZWQgY2FsbHMgdG8gSEVBUF9zdHJkdXBBdG9XLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L3BydGRydi5jLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVqYWNrL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLAoJICBmaWxlcy9wcm9maWxlLmMsIGZpbGVzL3NtYi5jLCBsaWJyYXJ5L2NvbmZpZy5jLCBtc2Rvcy9pbnQyMS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsCgkgIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NlcmlhbC5jLAoJICBzZXJ2ZXIvc21iLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglSZW1vdmUgZXJybm8uaCBmcm9tIGZpbGVzIHRoYXQgZG8gbm90IG5lZWQgaXQuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglVc2UgZGV2aWNlIG1heCBsaWdodHMgYW5kIGNsaXBwbGFuZSBzdXBwb3J0LiBBbHNvIGNoYW5nZSBjbGlwcGxhbmUgdG8KCWJlIGFmZmVjdGVkIGJ5IHZpZXcgbWF0cml4LgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzoKCUtleXN5bSBjaGVjayBzaG91bGQgdXNlIDB4ODAwMCBpbnN0ZWFkIG9mIDB4ODAwIChzcG90dGVkIGJ5IERtaXRyeQoJVGltb3Noa292KS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9pbmRleGJ1ZmZlci5jLAoJICBkbGxzL2QzZDgvc2hhZGVyLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsCgkgIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYzoKCUFkZGVkIC1XcG9pbnRlci1hcml0aCBnY2MgZmxhZywgYW5kIGZpeGVkIHRoZSByZXN1bHRpbmcgd2FybmluZ3MuCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLCBkbGxzL2NhYmluZXQvY2FiaW5ldC5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglGaXggc29tZSBwcm9ibGVtcyB3aGVuIEV4dHJhY3QgaXMgdXNlZCBtb3JlIHRoYW4gb25jZS4KCgkqIHRvb2xzL3dyYy93cmMuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglEZWNsYXJlIHZhcmlhYmxlIG9ubHkgaWYgbmVlZGVkLgoKCSogZGxscy9tc2FjbS9mb3JtYXQuYzogV2FsZGVjayBTY2h1dHplciA8c2NodXR6ZXJAbWF0aC5ydXRnZXJzLmVkdT4KCUF1ZGlvIGNvZGVjcyB3ZXJlIGVycm9uZW91c2x5IGJlaW5nIGxpc3RlZCBtdWx0aXBsZSB0aW1lcywgbWFraW5nIGl0CglkaWZmaWN1bHQgdG8gcnVuIGNlcnRhaW4gYXBwbGljYXRpb25zIGxpa2UgVmlydHVhbER1Yi4KCgkqIGRsbHMvbXNhY20vc3RyZWFtLmM6IFdhbGRlY2sgU2NodXR6ZXIgPHNjaHV0emVyQG1hdGgucnV0Z2Vycy5lZHU+CglNYWtlIHN1cmUgdGhlIHBhcmFtZXRlciBwaGFzIGlzIGNvcnJlY3QgYnkgc2V0dGluZyBpdCBlcXVhbCB0byBOVUxMIGluCglxdWVyeSBtb2RlLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUltcHJvdmUgcG9ydGFiaWxpdHkgd3J0LiBzdHJ1Y3Qgc29ja2FkZHJfaXB4LgoKCSogZmlsZXMvc21iLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJUHJvcGVybHkgY2FzdCBzdHJ1Y3Qgc29ja2FkZHJfaW4qIHRvIHN0cnVjdCBzb2NrYWRkciogd2hlcmUgbmVlZGVkLgoKCSogZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy9tZXNzYWdlLmM6CglBZGRlZCBkZWFkIGtleXMgc3VwcG9ydCB1c2luZyBYIGlucHV0IG1ldGhvZHMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCURtaXRyeSBUaW1vc2hrb3YpLgoKCSogZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglDcmVhdGUgYW4gWCBpbnB1dCBjb250ZXh0IGZvciBlYWNoIHRvcC1sZXZlbCB3aW5kb3cuCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgaW5jbHVkZS93aW5lL29ial9vbGVmb250Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIElDT01fQ0FMTHMgZm9yIElGb250X3h4IG1ldGhvZHMuCglBZGRlZCBJUGVyc2lzdFByb3BlcnR5QmFnLCBJUGVyc2lzdFN0cmVhbUluaXQgaW50ZXJmYWNlcyB3aXRoIHN0dWJzLgoJSW1wbGVtZW50ZWQgSURpc3BhdGNoOjpJbnZva2UgZm9yIHRoZSB1c2VkIERJU1BJRHMuCgoJKiBkbGxzL3dpbmVkb3MvaW50MjEuYywgbXNkb3MvaW50MjEuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHdoZW4gd3JpdGluZyB0byBET1MgY29uc29sZSB1c2luZyBpbnQyMQoJZnVuY3Rpb24gMHg0MC4gTW92ZSBzb21lIGludDIxIGZ1bmN0aW9ucyB0byB3aW5lZG9zLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlb3JnYW5pemUgaW50MTAgY29kZS4gRml4IGNvbW1lbnRzLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJV2FsZGVjayBTY2h1dHplciA8c2NodXR6ZXJAbWF0aC5ydXRnZXJzLmVkdT4KCUZpeGVkIGluaXRpYWxpemF0aW9uIG9mIHN6RGV2aWNlIGluIElDSU5GTy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnQgdmVydGV4IGFuZCBwaXhlbCBmb2cuCglGaXggZm9nIGNvbG9yIGluaXRpYWxpemF0aW9uLgoKMjAwMy0wMS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJTWFrZSBzdXJlIHRvIGFsd2F5cyBzZXQgWCBmb2N1cyBvbiB0aGUgdG9wLWxldmVsIHdpbmRvdywgbm90IG9uCgljaGlsZCB3aW5kb3dzLgoKCSogd2luZWRlZmF1bHQucmVnOiBEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJLnR4dCBmaWxlcyBhcmUgaGFuZGxlZCBieSBub3RlcGFkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9zdGFydC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9zdGFydC9Fbi5yYywKCSAgcHJvZ3JhbXMvc3RhcnQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3N0YXJ0L3Jlc291cmNlcy5oLAoJICBwcm9ncmFtcy9zdGFydC9yc3JjLnJjLCBwcm9ncmFtcy9zdGFydC9zdGFydC5jLCB0b29scy93aW5laW5zdGFsbDoKCURhbiBLZWdlbCA8ZGFua0BrZWdlbC5jb20+CglBZGRlZCBXaW5kb3dzLWNvbXBhdGlibGUgc3RhcnQuZXhlLgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgaW5jbHVkZS9zaGxvYmouaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQ2hhbmdlIFNIQ2hhbmdlTm90aWZ5IHRvIGJlIFVuaWNvZGUgYW5kIEFOU0kgaW5kaWZmZXJlbnQsIGFzIHRoZSB0eXBlCglvZiBwYXJhbWV0ZXJzIGlzIHJlYWxseSBkZWZpbmVkIGJ5IHVGbGFncyBwYXJhbWV0ZXIuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmM6IExpdSBTcGlkZXIgPGxpdXNwaWRlckB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBHZXRGaWxlVGl0bGVXOyBHZXRGaWxlVGl0bGVBIG5vdyBpcyBhIGNhbGwgdG8KCUdldEZpbGVUaXRsZVcuCgoJKiBkb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50OiBUb20gV2lja2xpbmUgPHR3aWNrbGluZTJAdHJpYWQucnIuY29tPgoJRml4IGluY29ycmVjdCBhbHBoYWJldGljYWwgb3JkZXIgYnkgbGFzdCBuYW1lLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCU9ubHkgZGVjbGFyZSB2YXJpYWJsZXMgd2UgYWN0dWFsbHkgbmVlZC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVByaW50IGEgbGFyZ2UgZmFpbHVyZSBtZXNzYWdlIGlmIHdlIHRyeSB0byBsb2FkIHN0ZG9sZTMyLnRsYiBhbmQKCWZhaWwuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglXYWxkZWNrIFNjaHV0emVyIDxzY2h1dHplckBtYXRoLnJ1dGdlcnMuZWR1PgoJRml4ZWQgcHJvYmxlbXMgd2l0aCBmaW5kaW5nIGFuZCBsaXN0aW5nIGFsbCB0aGUgdmlkZW8KCWNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gY29kZWNzLgoJUHJvcGVyIGluaXRpYWxpemF0aW9uIG9mIHN6RHJpdmVyIGZpZWxkIGluIElDSU5GTyBieSBJQ0dldEluZm8uCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBDbGVhciBiaXRzIGluIHN0cnVjdHVyZSBwYXNzZWQgdG8gSU9sZUNvbW1hbmRUYXJnZXRfUXVlcnlTdGF0dXMgdG8KCSAgc2hvdyB0aGF0IHdlIGRvbid0IHN1cHBvcnQgYW55IEV4ZWMncy4KCS0gQWRkIHR3byBFeGVjIGNhc2VzIHRoYXQgd2VyZSBmb3VuZCBkdXJpbmcgdGVzdGluZy4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFsbG9jYXRlIHBhbGV0dGUgb2JqZWN0cyBvbiB0aGUgbGFyZ2UgZ2RpIGhlYXAuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglFbnN1cmUgdXNpbmcgY29ycmVjdCBhcmdzIGR1cmluZyBjb21wbGVtZW50IHRleHR1cmUgb3BlcmF0aW9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJTW92ZWQgdGhlIElQWCBjaGVjayBzbyB0aGF0IHRoZSBzeXMvc29ja2V0LmggY2hlY2sgaGFzIGFscmVhZHkgYmVlbgoJZG9uZSB3aGVuIHdlIGNoZWNrIGZvciBJUFggaGVhZGVycy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVJlc3RvcmUgdGhlIHRleHR1cmUgZW52IG1vZGUgb24gU2V0VGV4dHVyZSAtIEZpeGVzIHByb2JsZW0gaW4KCWNvZGVzYW1wbGVyIGRlbW8uCgoJKiBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2VkIE1PTklUT1JJTkZPRVhBLFcgZGVmaW5pdGlvbiB0byB0aGUgb25lIGluIE1TRE4gd2hpY2ggZG9lcyBub3QKCWNhdXNlIGdjYyAzLjMgd2FybmluZ3MuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCBEZXNrdG9wIG1vZGUgZm9yIDMga25vd24gYmFkIHdvcmtpbmcgSW5zdGFsbFNoaWVsZCB2ZXJzaW9ucy4KCgkqIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjLCB0b29scy93cmMvcGFyc2VyLmw6CglEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJXCBhdCBFT0wgaW4gc3RyaW5nIG5vdyBiZWhhdmVzIGxpa2UgaW4gbXN2YzYncyByYy4KCgkqIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWw6IFRvbSBXaWNrbGluZSA8dHdpY2tsaW5lMkB0cmlhZC5yci5jb20+CglBZGRlZCBteXNlbGYgdG8gYXV0aG9ycyBzZWN0aW9uLgoJVXBkYXRlZCBsYXN0IHJldmlzaW9uIGRhdGUuCglTb21lIHNtYWxsIHVwZGF0ZXMuCgoyMDAzLTAxLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudCwgZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVByb3ZpZGUgdmVyeSBtdWNoIG5lZWRlZCByZWNvbW1lbmRhdGlvbnMgb24gaG93IHRvIHdyaXRlIGdvb2QgZXJyb3IKCW1lc3NhZ2VzLgoJSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSB3aW5kb3dzLmggaW4gY29uZm9ybWFuY2UgdGVzdHMuCglBZGRpbmcgbXlzZWxmIHRvIHRoZSBhdXRob3JzIGxpc3QuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ2hlY2sgZm9yIHN5c3BhcmFtcyBrZXlzIGluIGVpdGhlciB0aGUgV2luOXggb3IgTlQgbG9jYXRpb25zLiBUaGlzCgltYWtlcyB0aGUgdGVzdCBzdWNjZWVkIG9uIFdpbjl4IGFuZCBOVDQgcGxhdGZvcm1zLgoJQWRkIGEgJ3N0cmljdCcgbW9kZSB3aGljaCBzcGVjaWZpY2FsbHkgbWFrZXMgc3VyZSB0aGF0IHRoZSBOVCBsb2NhdGlvbgoJaXMgc2V0LiBJbiBzdHJpY3QgbW9kZSB0aGUgdGVzdCBzdWNjZWVkcyBvbiBXaW5kb3dzIFhQIGFuZCBXaW5lLgoKCSogdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLAoJICB0b29scy93cmMvd3JjLm1hbiwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSBvYnNvbGV0ZSB3cmMgb3B0aW9uczogLUEsIC1ULCBhbmQgLXQuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWtlIHN1cmUgd2UgYWx3YXlzIGtub3cgYWJvdXQgdGhlIDQ4IGFuZCA5NmtIeiBmb3JtYXRzIGV2ZW4gaWYgdGhleQoJYXJlIG5vdCBkZWZpbmVkIGluIHRoZSAob2xkKSBXaW5kb3dzIGhlYWRlcnMuCgoJKiB0b29scy93aW5lbWFrZXI6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW5jbHVkZSAkcHJlZml4L2luY2x1ZGUvd2luZS93aW5kb3dzIGludG8gdGhlIFdJTkUgaW5jbHVkZSBzZWFyY2ggcGF0aC4KCXdyYyBubyBsb25nZXIgdW5kZXJzdGFuZHMgLXIgKG5vdCBuZWVkZWQpLgoKCSogZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCSNpbmNsdWRlIDxzdGRsaWIuaD4gaW5zdGVhZCBvZiB0aGUgbm9uLXN0YW5kYXJkIDxtYWxsb2MuaD4uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUhhbmRsZSBtb3JlIGxpZ2h0IHN0YXRlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCXtHZXQsU2V0fVRocmVhZFByaW9yaXR5Qm9vc3QgYXJlIHN0dWJzIG9uIFdpbjk4LgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglFeHRlbmQgdGhlIGNvZGUgdG8gc2V0IGJvdGggdGhlIFdpbjl4IGFuZCB0aGUgTlQgcmVnaXN0cnkga2V5cy4gT25seQoJdGhlIE5UIGtleXMgYXJlIGF1dGhvcml0YXRpdmUgKGkuZS4gd2Ugc2V0IHRoZSBXaW45eCBrZXlzIGJ1dCBkb24ndAoJcmUtcmVhZCB0aGVtKS4KCgkqIGRsbHMvY29tY2F0Ly5jdnNpZ25vcmUsIGRsbHMvY29tY2F0L01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWNhdC92ZXJzaW9uLnJjLCBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJQWRkZWQgb3B0aW9uYWwgT0xFU2VsZlJlZ2lzdGVyIHRvIHdpbmVfY29tbW9uX3Zlci5yYywgdXNlZCBpbgoJZGxscy9jb21jYXQuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywKCSAgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTWFrZSBEM0QxLi4zIGxpZ2h0cyBjb2RlIHJlbHkgb24gRDNENy4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCU9ubHkgcmVsb2FkIHRoZSBtaXBtYXAgaW1hZ2VzIHdoZW4gZGlydHkuCgoJKiBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywKCSAgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCU1hdHRoZXcgRGF2aXNvbiA8bS5kYXZpc29uQHZpcmdpbi5uZXQ+CglSZW1vdmUgc29tZSBjYWxscyB0byBIRUFQX3N0cmR1cEF0b1cgZnJvbSBhZHZhcGkzMi4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jOiBMYXdzb24gV2hpdG5leSA8d2hpdG5sNzNAanVuby5jb20+CglGaXggcmV2ZXJzZWQgaG91ciBhbmQgbWludXRlIGluIGludCAyMSBhaD0yYy4KCjIwMDMtMDEtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMzAxMTUuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDMtMDEtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmM6CglSZW1vdmVkIGZsYWcgY2hlY2tzIGluIFNldE1lbnVJdGVtSW5mb0EsIE5UIGRvZXNuJ3QgZG8gdGhpcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2FybiBpZiBvcGVuX2NvdW50IGlzIGFscmVhZHkgMCB3aGVuIE9TU19DbG9zZURldmljZSBpcyBjYWxsZWQuCglEb24ndCBkZWNyZW1lbnQgaXQgaW4gdGhhdCBjYXNlLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJVGhlIE1pbm9sdGEgRGlNQUdFIEltYWdlIFZpZXdlciByZWxpZXMgb24gR2xvYmFseyxSZX1BbGxvYyBjYWxsZWQgd2l0aAoJdGhlIEdNRU1fTU9WRUFCTEUgZmxhZyBzZXQsIHRvIGFsbG9jYXRlIHRoZSBleGFjdCBzcGVjaWZpZWQgc2l6ZSBhbmQKCW5vIGJ5dGUgbW9yZSB3aGVuIHNpemUgaXMgYSBtdWx0aXBsZSBvZiA4LiBUbyBhY2hpZXZlIHRoaXMgYWxpZ24gdGhlCglzdG9yYWdlIG5lZWRlZCBmb3IgdGhlIEhHTE9CQUwgaW4gdGhlIGhlYXAgdG8gOGJ5dGUgYm91bmRhcnkuCgoJKiBkbGxzL2Rzb3VuZC9taXhlci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBzYW1lIDgvMTZiaXQgY29udmVyc2lvbiByb3V0aW5lcyBhcyBpbiBwY21jb252ZXJ0ZXIuYy4KCVJlb3JkZXIgdGhlIHR3byBpZnMgaW4gdGhlIGZpcnN0IHBhcnQgb2YgY3BfZmllbGRzIHRvIHNpbXBsaWZ5IHRoZQoJY29kZS4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL2Rzb3VuZC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU2V0Rm9ybWF0IG1heSBub3QgY2hhbmdlIHRoZSBwcmltYXJ5IGJ1ZmZlciBmb3JtYXQgYXMgcmVxdWVzdGVkLgoJRHVtcCB0aGUgZWZmZWN0aXZlIGZvcm1hdCBhbmQgcHJlcGFyZSB0aGUgdG9uZSBzaWduYWwgYWNjb3JkaW5nbHkuCglQbGF5IHRvbmVzIGZyb20gdGhlIHNlY29uZGFyeSBidWZmZXJzIGF0IC0zZEIgcmF0aGVyIHRoYW4gLTEyZEIuCglBbHdheXMgcHJpbnQgdGhlIHZvbHVtZSB0aGUgdG9uZSBpcyBnb2luZyB0byBiZSBwbGF5ZWQgYXQuCglSZW1vdmUgdGhlIGdhbWVkZXYgVVJMLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IHVzZSBvbGRfc3BhY2luZy0xIGlmIG9sZF9zcGFjaW5nIGFscmVhZHkgaGFzIHRoZSBtaW5pbXVtIHZhbHVlLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gTU1TWVNfTk9FUlJPUiBldmVuIGlmIHdlIGRvbid0IG9wZW4gdGhlIGRldmljZSB3aXRoIHRoZQoJcmVxdWVzdGVkIGZvcm1hdCwgb3RoZXJ3aXNlIE9TU19PcGVuRGV2aWNlIHdpbGwgbm90IGluY3JlbWVudAoJb3Blbl9jb3VudC4KCVVzZSAtMSB0byBzaWduYWwgT1NTX1Jhd09wZW5EZXZpY2Ugbm90IHRvIGRvIGlvY3RscyBiZWNhdXNlIDAgaXMKCWFtYmlndW91cyAoYWxzbyBtZWFucyBtb25vIGFzIG9wcG9zZWQgdG8gc3RlcmVvKS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLCBvbGUvb2xlMm5scy5jOgoJQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBtZXJjdXJ5c3BlZWQuY29tPgoJQ29ycmVjdCBHZXREYXRlRm9ybWF0IGhhbmRsaW5nIG9mIHVuaW5pdGlhbGlzZWQgZmllbGRzOiBvbmx5IHRoZSB5ZWFyLAoJbW9udGggYW5kIGRheSBmaWVsZHMgbWF0dGVyOyB0aGUgcmVzdCBtYXkgYmUgdW5pbml0aWFsaXNlZC4KCgkqIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJb2soKSBkb2VzIG5vdCBzdXBwb3J0ICclUycuIFN0b3JlIHRoZSBBbnNpIHZlcnNpb24sIGNvbnZlcnQgdG8gVW5pY29kZQoJd2hlbiBuZWVkZWQsIGFuZCBwcmludCB0aGUgQW5zaSB2ZXJzaW9uIHVzaW5nIG9rKCkuCglGaXggJ3ZhbHVlIGlzIHNvIGxhcmdlIGl0IGlzIHVuc2lnbmVkJyB3YXJuaW5ncy4KCgkqIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLAoJICBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglVc2UgcHJvcGVyIGZpbGUgc2hhcmluZyBwYXJhbWV0ZXJzIHdoZW4gb3BlbmluZyBmaWxlcy4KCUZpeGVkIGhhbmRsaW5nIG9mICdpZiBhID09IGInIHN5bnRheCBpbiBiYXRjaCBmaWxlcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjOiBKdWVyZ2VuIFNjaG1pZWQgPGouc2NobWllZEB0LW9ubGluZS5kZT4KCVRyYW5zbGF0ZWQgc29tZSByZW1haW5pbmcgRW5nbGlzaCB3b3Jkcy4KCgkqIGluY2x1ZGUvd2lubnQuaDogRml4ZWQgdHlwby4KCgkqIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwgaW5jbHVkZS93aW5kZWYuaDoKCURlZmluZSBfX3N0ZGNhbGwgaW4gbXN2Y3J0L3Byb2Nlc3MuaCBpZiB3aW5kZWYuaCBoYXNuJ3QgYmVlbiBpbmNsdWRlZC4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYzoKCUp1ZXJnZW4gU2NobWllZCA8ai5zY2htaWVkQHQtb25saW5lLmRlPgoJR2l2ZSBzb21lIGZ1bmN0aW9ucyByZWFsIG5hbWVzLgoKCSogcHJvZ3JhbXMvd2luZWJvb3Qvd2luZWJvb3QuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CgktIEFkZGVkIGEgInJ1bkNtZCIgZnVuY3Rpb24sIGJhc2VkIG9uIEFuZHJlYXMgTW9ocidzCgkgICJCT09UX0NyZWF0ZVByb2Nlc3MiIGZ1bmN0aW9uLgoJLSBBZGRlZCBhIGZ1bmN0aW9uICJQcm9jZXNzUnVuS2V5cyIsIHRvIHByb2Nlc3MgYWxsIHRoZSBrZXlzIHRoYXQgaGF2ZQoJICB0aGUgY29tbW9uICJSdW4iIHN5bnRheC4KCS0gQ2FsbGVkIHRoZSBuZXcgZnVuY3Rpb24gZnJvbSBtYWluIGZvciBhbGwgdGhlIHZhcmlvdXMga2V5cy4KCgkqIGNvbnRyb2xzL21lbnUuYzogTWlrZSBIZWFybiA8bS5oZWFybkBzaWduYWwucWluZXRpcS5jb20+CglGYWlsIFNldE1lbnVJdGVtSW5mbyBpZiBib3RoIE1GVF9CSVRNQVAgYW5kIE1GVF9TRVBBUkFUT1IgYXJlCglzcGVjaWZpZWQgKGFuIGFwaSB2aW9sYXRpb24pLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTWFrZSBHZXRQcmludGVyRHJpdmVyRGlyZWN0b3J5QSBwYXNzIGFsbCB0ZXN0cy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNwb29sL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvd2luc3Bvb2wvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc3Bvb2wvdGVzdHMvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglBZGRlZCB0ZXN0cyBmb3IgR2V0UHJpbnRlckRyaXZlckRpcmVjdG9yeUEuCgoJKiBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJU2VwYXJhdGUgdGhlIEhJTlNUQU5DRXMgdXNlZCBieSBHZXRTaGVsbE9sZSgpIGFuZCBvdGhlciBkZWxheSBsb2FkCglmdW5jdGlvbnMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUluaXRpYWxpemUgdGhlIHB3YXZlIGFycmF5IHdoZW5ldmVyIHdlIGRvbid0IGhhdmUgYSBoYXJkd2FyZSBidWZmZXIuCglBbHdheXMgY3JlYXRlIHRoZSB3aW5lb3NzIHRocmVhZC4KCUNoYW5nZSB0aGUgbW1hcCBFUlIgaW50byBhIFRSQUNFOiB0aGVyZSBhcmUgbm9ybWFsIGNpcmN1bXN0YW5jZXMgd2hlcmUKCW1tYXAgd2lsbCBmYWlsIGFuZCB3ZSBjYW4gZGVhbCB3aXRoIHRoZW0uCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L2xkdC5jOgoJSmVyb2VuIEphbnNzZW4gPGphcGpAeHM0YWxsLm5sPgoJRml4ZWQgd2luZV9sZHRfY29weSBpbXBvcnRpbmcgb24gY3lnd2luLgoKMjAwMy0wMS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLAoJICBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBkbGxzL2ltYWdlaGxwL2RlYnVnLmMsCgkgIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHBfbWFpbi5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmMsCgkgIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywKCSAgZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9ycGNydDQvcnBjc3NfbnBfY2xpZW50LmMsCgkgIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy9zaGVsbDMyL3NocG9saWN5LmMsCgkgIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYywgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmMsCgkgIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBtZW1vcnkvZ2xvYmFsLmMsIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5jLAoJICBwcm9ncmFtcy9ycGNzcy9ucF9zZXJ2ZXIuYywgcHJvZ3JhbXMvcnBjc3MvcnBjc3NfbWFpbi5jLAoJICBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgd2luMzIvbmV3Zm5zLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSAoUE9JTlRFUilOVUxMIGNhc3RzLgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglIYW5kbGUgdGhlIFdTX0VYX0xFRlRTQ1JPTExCQVIgc3R5bGUgKHRoYXQgaXMsIGRyYXcgdGhlIHZlcnRpY2FsCglzY3JvbGxiYXIgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgY29udHJvbCkuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gYmVnaW5uaW5nIG9mIHZlcnRleCBtYXRyaXggYmxlbmRpbmcgdXNpbmcgZXh0ZW5zaW9ucyAoY3VycmVudGx5CgkgIGFscGhhIGFscGhhIHN0YWdlIGFzIGkgaGF2ZW4ndCB1bmRlcnN0YW5kIG5lZWRlZCBleHRlbnNpb24gYmVoYXZpb3IpCgktIG1vZGlmeSBTZXRSZW5kZXJTdGF0ZSBmb3IgbWF0cml4IGJsZW5kaW5nIHNwZWNpZmljIHBhcmFtcwoJLSBieSBkZWZhdWx0IGRpZmZ1c2UgY29sb3IgaXMgd2hpdGUgOykKCS0gY29tbWVudHMgbW9zdCBvZiB0aGUgdHJhY2VzIChlbHNlIGZsb29kIC4uLikKCS0gYWRkIG1vcmUgdXJscyBpbiBjb21tZW50cwoJLSBpbmRlbnQsIGNsZWFudXBzCgoJKiBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsCgkgIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvcmVzb3VyY2UuYywgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3RleHR1cmUuYywKCSAgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYzoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQmVnaW5uaW5nIG9mIG1vcmUgQ09NIGNvbXBsaWFudCBiZWhhdmlvcjoKCS0gQWRkUmVmL1JlbGVhc2Ugd2hlcmUgbmVlZGVkCgktIHVzZSBJVW5rbm93biogaW5zdGVhZCB2b2lkKgoJLSBmaXggbWFueSBHZXREZXZpY2UgdXNpbmcgQWRkUmVmCgktIGZpeCBJRGlyZWN0M0RTdXJmYWNlOEltcGxfR2V0Q29udGFpbmVyIHVzaW5nIFF1ZXJ5SW50ZXJmYWNlCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglDb3B5cmVjdCBzaG91bGQgZmxhZyBkZXN0aW5hdGlvbiB0ZXh0dXJlIGFzIGRpcnR5LCB0byBmb3JjZSBpdCB0byBiZQoJcmVsb2FkZWQuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHN1cHBvcnQgZm9yIHNvbWUgb2YgdGhlIHRleHR1cmUgYWRkcmVzcyBzdGF0ZXMgYW5kIGJvcmRlciBjb2xvdXIuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3NoYWRlci5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgktIG1vdmUgaW5wdXQgYW5kIG91dHB1dCBkYXRhIGluIFZlcnRleFNoYWRlciBzdHJ1Y3QKCS0gYmV0dGVyIHRyYWNlcwoJLSBzcGVjaWZpYyBpbnB1dCBkYXRhIGZpbGxpbmcgZnVuY3Rpb24gZm9yIHZlcnRleCBzaGFkZXJzIHVzaW5nIHZlcnRleAoJICBzaGFkZXIgZGVjbGFyYXRpb24gKGFuZCBub3QgRlZGIC4uLiBtYXliZSBGVkYgd2lsbCByZXR1cm4gZm9yIGZhc3QKCSAgcGF0aCB3aXRoIHNpbXBsZXMgdmVydGV4IHNoYWRlciBkZWNsYXJhdGlvbnMpCgktIGh1Z2UgdmVydGV4IHNoYWRlciBmaXhlczoKCSAgLSBhZGQgYW5kIGZpeCBtYW55IHZzICgxLjAtPjIuMCkgdXNlZCBvcGNvZGVzIGluIGNvbXBsZXggc2hhZGVycwoJICAtIGltcHJvdmVtZW50cyB0byBwcm9ncmFtcyBwYXJzZXI6IHBhcnNlIGNvbW1lbnRzLCB2ZXJzaW9uLCAuLgoJICAtIGFkZCBhIHZlcnRleCBzaGFkZXIgaW5wdXQgZmlsbGVyIGZ1bmN0aW9uIChwYXJzaW5nIHZlcnRleCBzaGFkZXIKCSAgICBkZWNsYXJhdGlvbik6IGFsbW9zdCBjb21wbGV0ZQoJLSBjb21tZW50cyBtb3N0IG9mIHRoZSB0cmFjZXMgKGVsc2UgZmxvb2QgLi4uKQoJLSBhZGQgbW9yZSB1cmxzIGluIGNvbW1lbnRzCgktIGluZGVudCwgY2xlYW51cHMKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJQ2hlY2sgZm9yIHZzbnByaW50ZiBhbmQgX3ZzbnByaW50ZiwgYW5kIGRlZmluZSB2c25wcmludGYgd2l0aAoJX3ZzbnByaW50ZiBpZiBuZWVkZWQuCgoJKiBkb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50OiBUb20gV2lja2xpbmUgPHR3aWNrbGluZTJAdHJpYWQucnIuY29tPgoJVXBkYXRlZCBhdXRob3JzIGUtbWFpbCBhZHJlc3Nlcy4KCUFkZGVkIG15IGUtbWFpbCB0byB0aGUgbGlzdC4KCgkqIHByb2dyYW1zL3dpbmVib290L3dpbmVib290LmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJLSBBZGRlZCBsaXN0aW5nIG9mIHdoYXQgdGhlIGJvb3QgcHJvY2VzcyBpcyBsaWtlLCBsaXN0aW5nIHdoYXQgaXMgYW5kCgkgIHdoYXQgaXMgbm90ICh5ZXQpIGRvbmUuCgktIEZpeGVkIGluY29ycmVjdCBzdGF0ZW1lbnQgaW4gdGhlICJidWdzIiBsaXN0LgoJLSBBZGRlZCB0cmFjZSB3aGVuIGV2ZXJ5dGhpbmcgaXMgZG9uZS4KCgkqIHdpbmRvd3MvcXVldWUuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUNoZWNrIGZvciBwZW5kaW5nIFggZXZlbnRzIGJlZm9yZSBnZXR0aW5nIHF1ZXVlIHN0YXR1cy4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CgktIEFsaWduIHRoZSBjbGVhbnVwIHBoYXNlIG9mIFJlbGVhc2VTdGdNZWRpdW0gdG8gdGhlIG5hdGl2ZSBBUEkuCgktIFdoZW4gdGhlIGRhdGEgaXMgYSBiaXRtYXAgb3IgYW4gZW5oYW5jZWQgbWV0YWZpbGUsIHVzZSB0aGUgY29ycmVjdAoJICBkYXRhIG1lbWJlci4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTdHVicyBmb3IgVW58TG9ja1NlcnZpY2VEYXRhYmFzZS4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUFkZGVkIGNvbmUgc3VwcG9ydC4KCgkqIHdpbmRvd3MvZGVmZGxnLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglQb3N0IGNvcnJlY3Qgbm90aWZpY2F0aW9uIGNvZGUgb24gV01fQ0xPU0UgZm9yIGRpYWxvZ3MuCgoJKiBjb250cm9scy9tZW51LmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglNb3ZlIGludGVybmFsIGltcGxlbWVudGF0aW9uIGludG8gdGhlIGV4cG9ydGVkIGZ1bmN0aW9uCglEcmF3TWVudUJhclRlbXAuCgoyMDAzLTAxLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywKCSAgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywKCSAgZGxscy93aW50cnVzdC93aW50cnVzdC5zcGVjLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgd2luMzIvZXhjZXB0LmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBBZGQgc29tZSBzdHVicy4KCS0gSW1wbGVtZW50IGtlcm5lbDMyLkZhdGFsRXhpdC4KCgkqIGRsbHMvZGlucHV0Ly5jdnNpZ25vcmUsIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLAoJICBkbGxzL2RpbnB1dC92ZXJzaW9uLnJjOgoJRW5yaWNvIEhvcm4gPGZhcm1ib3kxQHN1YmRpbWVuc2lvbi5jb20+CglBZGQgdmVyc2lvbiBpbmZvIHRvIGRpbnB1dC4KCgkqIGRsbHMvZHNvdW5kLy5jdnNpZ25vcmUsIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLAoJICBkbGxzL2Rzb3VuZC92ZXJzaW9uLnJjOgoJRW5yaWNvIEhvcm4gPGZhcm1ib3kxQHN1YmRpbWVuc2lvbi5jb20+CglBZGQgdmVyc2lvbiBpbmZvIHRvIGRsbC9kc291bmQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSB0aGUgcmVnaXN0cnkga2V5cyBvZiBTUElfSUNPTkhPUklaT05UQUxTUEFDSU5HLAoJU1BJX0lDT05WRVJUSUNBTFNQQUNJTkcgYW5kIFNQSV9TRVRJQ09OVElUTEVXUkFQIHRvIG1hdGNoIFhQLgoJVGhlIFNQSV9TRVRCT1JERVIgdGVzdCBsZWF2ZXMgYW4gaW5jb3JlY3QgYm9yZGVyIHNldHRpbmcgYW5kIGlzIGp1c3QKCXRvbyBlcnJhdGljOiBjb21tZW50IGl0IG91dCBmb3Igbm93LgoJTW9kaWZpZWQgdGhlIFNQSV9JQ09OSE9SSVpPTlRBTFNQQUNJTkcsIFNQSV9JQ09OVkVSVElDQUxTUEFDSU5HIGFuZAoJU1BJX1NFVFdPUktBUkVBIHRvIG5vdCBjYXVzZSB0aGUgaWNvbnMgdG8gYmUgcmVvcmdhbml6ZWQuCglEb24ndCB0ZXN0IG91dC1vZi1ib3VuZCB2YWx1ZXMgZm9yIFNQSV9TRVRLRVlCT0FSRFNQRUVEIGFzIGJlaGF2aW9yCglkaWZmZXJzIGFjY3Jvc3MgV2luZG93cyBwbGF0Zm9ybXMuCglPbiBXaW45eCB0aGUgbWF4aW11bSB2YWx1ZSBmb3IgU1BJX1NFVFNDUkVFTlNBVkVUSU1FT1VUIGlzIDMyNzY3LgoJVGhlIHJlZ2lzdHJ5IGtleXMgYW5kIHZhbHVlcyBzdG9yZWQgaW4gdGhlbSBmb3IKCVNQSV9JQ09OSE9SSVpPTlRBTFNQQUNJTkcgYW5kIFNQSV9JQ09OVkVSVElDQUxTUEFDSU5HIGRlcGVuZCBvbiB0aGUKCVdpbmRvd3MgcGxhdGZvcm06IGlnbm9yZSB0aGVtLgoJTm8gV2luZG93cyBwbGF0Zm9ybSBzZWVtcyB0byBTUElfU0VURkFTVFRBU0tTV0lUQ0g6IG5vIGxvbmdlciB0ZXN0IGl0LgoJVGhlIGxQYXJhbSBvZiBXTV9TRVRUSU5HQ0hBTkdFIGlzIHF1aXRlIHVzZWxlc3MgKGV2ZW4gdGhlIE1TRE4gc2F5cwoJc28hKSBhbmQgdmFyaWVzIGFjY3Jvc3MgV2luZG93cyBwbGF0Zm9ybXMuIElnbm9yZSBpdC4KCUFsd2F5cyBjaGVjayB0aGUgU3lzdGVtUGFyYW1ldGVyc0luZm9BIHJldHVybiBjb2RlIGFzIGl0IGZhaWxzIGluIHZlcnkKCXN0cmFuZ2Ugd2F5cyBvbiBzb21lIHBsYXRmb3Jtcy4gU2tpcCB1bnN1cHBvcnRlZCBzZXR0aW5ncy4KCVNraXAgVW5pY29kZSB0ZXN0cyBvbiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IGl0LgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJU3VwcG9ydCBhIGZldyB0cml2aWFsIGNhc2VzIGluIFByb3BWYXJpYW50Q2xlYXIuCgoJKiBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWxpZ25SZWN0cyBzdHViLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jOgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciByZWdleC5oLgoKCSogZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbDogVG9tIFdpY2tsaW5lIDx0d2lja2xpbmUyQHRyaWFkLnJyLmNvbT4KCUFkZGVkIG1pc3NpbmcgLnNvIGZpbGVzIGluIDM6Mi4KCUFkZGVkIHdpbmVtYWtlciBpbiAzOjMuCglBZGRlZCBtaXNzaW5nIC5oIGZpbGVzIGluIDM6NC4KCUFkZGVkIGRvYyBodG1sIGZpbGVzIGluIDM6NS4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0Lmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWZpbmUgdGhlIChvbGQgbmFtZSkgc3RydWN0IHN0YXQsIGl0IGlzIHVzZWQgYnkgcHJvZ3JhbXMgdXNpbmcgdGhlCglvbGQgbmFtZXMuCgoJKiBkbGxzL2RwbGF5eC92ZXJzaW9uLnJjOiBFbnJpY28gSG9ybiA8ZmFybWJveTFAc3ViZGltZW5zaW9uLmNvbT4KCUV4dGVuZCB2ZXJzaW9uIGluZm8uCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLCBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBkbGxzL2RkcmF3L21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVcGRhdGUgdGhlICdESVJFQ1REUkFXNycgZmxhZyBhY2NvcmRpbmcgdG8gdGhlIGludGVyZmFjZSBpbml0aWFsaXplZC4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBjYXNlIG9mIGZsb2F0cyBpbiBWYXJCc3RyRnJvbVI0LCBWYXJCc3RyRnJvbVI4IGFuZAoJVmFyQnN0ckZyb21DeS4KCVdlIGNhbm5vdCBjaGVjayBmb3IgZXF1YWxpdHkgb2YgZmxvYXRzIG9yIGRvdWJsZXMgYmVjYXVzZSBvZiByb3VuZGluZwoJZXJyb3JzLiBDaGVjayBlcXVhbGl0eSB0byAxNCBkaWdpdHMgZm9yIGRvdWJsZXMuCglBZGQgbW9yZSBwcmVjaXNpb24gdG8gdGhlIGV4cGVjdGVkIHJlc3VsdHMgc28gdGhhdCB0aGV5IG1hdGNoIGFjdHVhbAoJcmVzdWx0cy4KCVByaW50IGZsb2F0aW5nIHZhbHVlcyB3aXRoIG1vcmUgcHJlY2lzaW9uIHNvIHdlIGtub3cgd2hhdCB3ZW50IHdyb25nLgoJU3BlY2lmeSB0aGUgbG9jYWxlIGZvciBhbGwgdmFyaWFudCBmdW5jdGlvbnMgdGhhdCBkZXBlbmQgb24gaXQuCglBZGRlZCByZXR1cm4gY29kZXMgZm9yIFdpbjk1LiBXaW45NSByZXR1cm5zIGRhdGVzIHdpdGggb25seSB0d28gZGlnaXRzCglmb3IgdGhlIHllYXIuCglVbmNvbW1lbnRlZCBtb3JlIFZhcmlhbnRDb3B5SW5kIGFuZCBWYXJpYW50Q2hhbmdlVHlwZUV4IHRlc3RzLgoKCSogZGxscy9hZHZhcGkzMi90ZXN0cy9yZWdpc3RyeS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBvbmx5IEFuc2kgQVBJcyBmb3IgY2xlYW5pbmcgdXAgdGhlIHJlZ2lzdHJ5LgoJU2tpcCBVbmljb2RlIHRlc3RzIGlmIHRoZSBVbmljb2RlIEFQSXMgYXJlIG5vdCBpbXBsZW1lbnRlZC4KCUlmIHRoZSB2YWx1ZSBuYW1lIGJ1ZmZlciBpcyB0b28gc21hbGwsIFdpbjl4IHJldHVybnMgdGhlIG51bWJlciBvZgoJY2hhcmFjdGVycyByZXR1cm5lZCBhcyBzcGVjaWZpZWQgaW4gdGhlIE1TRE4gd2hpbGUgb3RoZXIgV2luZG93cwoJcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiAoaW5jbHVkaW5nIHRoZSB0cmFpbGluZyAnXDAnKS4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglTUElfR0VUTUlOSU1JWkVETUVUUklDUyBpbXBsZW1lbnRlZC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0ZXN0cyBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBkZWJ1ZyBhbmQgc3VzcGVuZCBmbGFncy4KCjIwMDMtMDEtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9zY2FuZi5oLCBwcm9ncmFtcy93aW5lYm9vdC93aW5lYm9vdC5jOiBXYXJuaW5nIGZpeGVzLgoKCSogaW5jbHVkZS9tc3ZjcnQvaW8uaCwgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3RpbWViLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N5cy90eXBlcy5oLCBpbmNsdWRlL21zdmNydC9zeXMvdXRpbWUuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgaW5saW5lIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIG1hY3JvcyB0byBhdm9pZCBwcm9ibGVtcyBpbiBDKysuCglJbmxpbmUgZnVuY3Rpb25zIHJlc3BlY3Qgc2NvcGUsIHdoZXJlYXMgbWFjcm9zIGRvbid0LgoJRGVmaW5lIHVtYXNrIGluIHN5cy9zdGF0LmgsIGFuZCBtb2RlX3QgaW4gc3lzL3R5cGVzLmguCgoJKiBwcm9ncmFtcy93aW5lZGJnL2RiZy55LCBwcm9ncmFtcy93aW5lZGJnL2RlYnVnLmwsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGVidWdnZXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkICdpbmZvIHN5bWJvbCcgY29tbWFuZCB0byBsb29rIGZvciBkZWZpbmVkIHN5bWJvbHMuCgoJKiBkbGxzL3N0aS9zdGkuc3BlYywgZGxscy9zdGkvc3RpX21haW4uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBmZXcgbW9yZSBzdHVicy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW9kaWZ5IE9TU19XYXZle0luLE91dH1Jbml0IHRvIHJlcG9ydCB0aGUgZXhhY3QgY2FwYWJpbGl0aWVzIG9mIHRoZQoJT1NTIGRyaXZlci4KCUFkZCBzdXBwb3J0IGZvciB0aGUgNDhrSHogYW5kIDk2a0h6IGZvcm1hdHMuCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVNvbWUgY29kZSBjbGVhbnVwcy4KCUJldHRlciBlcnJvciBoYW5kbGluZy4KCVJlbW92ZWQgdW5uZWVkZWQgaW50ZXJuYWwgdmFyaWFibGVzLgoKCSogd2luZG93cy9zcHkuYzogUHJpbnQgdGhlIG1lc3NhZ2UgbmFtZSBmb3IgcmVnaXN0ZXJlZCBtZXNzYWdlcy4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmg6IEZpeGVkIEVPRiByZXR1cm4gdmFsdWUgZm9yIHNzY2FuZi4KCgkqIGRsbHMvY29tY2F0L2NvbWNhdF9tYWluLmMsIGRsbHMvY29tY2F0L3JlZ3N2ci5jLAoJICBkbGxzL2NvbWNhdC9yZWdzdnIuaDoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCVJlaW1wbGVtZW50ZWQgRGxsUmVnaXN0ZXJTZXJ2ZXIgYW5kIERsbFVucmVnaXN0ZXJTZXJ2ZXIgaW4gYSBtb3JlCglnZW5lcmFsbHkgdXNlZnVsIHdheSwgZW50aXJlbHkgaW4gcmVnc3ZyLmMuICBBZGRlZCAodW4pcmVnaXN0cmF0aW9uIG9mCglpbnRlcmZhY2VzLgoKCSogZmlsZXMvZmlsZS5jOiBTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJUmVtb3ZlZCB0aGUgRklYTUVzIHdoZW4gcGVyZm9ybWluZyBNb3ZlRmlsZUV4IHdpdGgKCU1PVkVGSUxFX0RFTEFZX1VOVElMX1JFQk9PVCwgYXMgd2luZWJvb3Qgd2lsbCBub3cgdGFrZSBjYXJlIG9mIGl0LgoKCSogcHJvZ3JhbXMvd2luZWJvb3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVib290L3dpbmVib290LmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJSW1wbGVtZW50ZWQgdGhlICJwZW5kaW5nIHJlbmFtZSIgcmVnaXN0cnkgcHJvY2Vzc2luZy4KCgkqIHRvb2xzL3dwcC9wcGwubDogSm9oYW5uZXMgRS4gU2NoaW5kZWxpbiA8Sm9oYW5uZXMuU2NoaW5kZWxpbkBnbXguZGU+CglBbGxvdyBDKysgY29tbWVudHMgYWZ0ZXIgI2VuZGlmLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDcmVhdGUgc3R1YnMgZm9yIGNoc2l6ZSwgZHVwLCBhbmQgZHVwMi4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9IdS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfWmgucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0aGUgR1VJIHBhcnQgZm9yIHNldHRpbmcgdGhlIGVkaXRpb24gbW9kZSBmbGF2b3IuCgoJKiBtc2Rvcy92eGQuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIG5vbiBuZWVkZWQgaW5jbHVkZSBvZiBtb2R1bGUuaC4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglDb2VyY2UgVlRfVU5LTk9XTiA8LT4gVlRfRElTUEFUQ0gsIE5VTEwgaXMgdmFsaWQgaW4gdGhlc2UgY2FzZXMuCglEcm9wIFZUX3ggLT4gVlRfeCBjb2VyY2lvbnMsIHRoZXkgYXJlIGhhbmRsZWQgYmVmb3JlIHRoZSBzd2l0Y2goKQoJYWxyZWFkeS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglDb252ZXJ0IFZUX0RJU1BBVENIIHZhcmlhbnRzIGludG8gVlRfVVNFUkRFRklORUQvVEtJTkRfRElTUEFUQ0ggYW5kCglUS0lORF9JTlRFUkZBQ0UgdGFyZ2V0cywgUXVlcnkgSUlEX0lEaXNwYXRjaCBpZiBuZWNlc3NhcnkuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJSW1wbGVtZW50ZWQgQ29HZXRUcmVhdEFzQ2xhc3MuCgoJKiB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMubWFuOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIHdpbmRyZXMgY29tcGF0aWJpbGl0eSBzd2l0Y2hlczogLXYsIC0tW25vLV11c2UtdGVtcC1maWxlLgoJTmV3IC1oIG9wdGlvbiB0byBjb25mb3JtIHRvIHN0YW5kYXJkIHByYWN0aWNlIChhbmQgTVMnIHJjKS4KCVVwZGF0ZWQgZG9jdW1lbnRhdGlvbiwgbWlub3Igb3B0aW9uIHBhcnNpbmcgY2xlYW51cC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvZHNvdW5kL3ByaW1hcnkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEU0IuU2V0Rm9ybWF0OlRyYWNlIHRoZSByZXF1ZXN0ZWQgZm9ybWF0IGFzIHNvb24gYXMgcG9zc2libGUgaW4gY2FzZQoJaXQgaXMgbm90IHN1cHBvcnRlZCBhbmQgc2ltcGxpZnkgdmFsaWRpdHkgY2hlY2suCglJbml0aWFsaXplIHRoZSBidWZmZXIgZm9ybWF0LCBhbmQgb25seSBmcm9tIHRoZSBmaWVsZHMgd2UgY2hlY2tlZC4KCURpcmVjdFNvdW5kQ3JlYXRlOCBmdWxseSBpbml0aWFsaXplcyB0aGUgYnVmZmVyIGZvcm1hdCAoanVzdCBpbiBjYXNlKS4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVmaW5lIHFzb3J0IGFuZCBic2VhcmNoIGluIHN0ZGxpYi5oLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc3ZjcnQvZGlyZW50Lmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGRpcmVudC5oIGhlYWRlciBmb3IgVW5peC9taW5ndyBjb21wYXRpYmlsaXR5LgoKCSogZGxscy9kc291bmQvbWl4ZXIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBsYXRlbnQgZGVhZGxvY2sgaW4gRFNPVU5EX2NhbGxiYWNrLgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaCwgZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzoKCU1laG1ldCBZYXNhciA8bXlhc2FyQGZyZWUuZnI+CgktIHJldHVybiBFT0Ygd2hlbiBzdHJlYW0gaXMgZW1wdHkKCS0gY29uZm9ybWFuY2UgdGVzdCB1cGRhdGVkCgoyMDAzLTAxLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd3BwL3BwbC5sOgoJRml4ZWQgaGFuZGxpbmcgb2YgdHJhaWxpbmcgd2hpdGVzcGFjZSBhZnRlciAjZWxzZSBhbmQgI2VuZGlmLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfWmgucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5yYzoKCUxpdSBTcGlkZXIgPGxpdXNwaWRlckB5YWhvby5jb20+CglBZGRlZCBTaW1wbGlmaWVkIENoaW5lc2UgcmVzb3VyY2VzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9tc3ZjcnQvc3lzL3VuaXN0ZC5oLAoJICBpbmNsdWRlL21zdmNydC91bmlzdGQuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgdW5pc3RkLmggZmlsZXMgZm9yIG1pbmd3L1VuaXggY29tcGF0aWJpbGl0eS4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCTNkIHNvdW5kIGRpbWluaXNoZXMgd2l0aCBkaXN0YW5jZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogSnVlcmdlbiBTY2htaWVkIDxqLnNjaG1pZWRAdC1vbmxpbmUuZGU+CglGaXhlZCBjcmFzaCBpbiB3aW5hbXAgcmVwb3J0ZWQgYnkgQW5kcmVhcyBNb2hyLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogSnVlcmdlbiBTY2htaWVkIDxqLnNjaG1pZWRAdC1vbmxpbmUuZGU+CglGaXggcmVjZW50bHkgYnJva2VuIEdldERpc3BsYXlOYW1lc09mIG9mIG5hbWVzIG9mIHNoZWxsIGV4dGVuc2lvbgoJZGxscy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglDaGFuZ2UgdHlwZXMgb2YgV1BBUkFNLCBMUEFSQU0gYW5kIExSRVNVTFQgYWNjb3JkaW5nIHRvIE1TIFNESyBkZWZpbml0aW9ucy4KCgkqIHRvb2xzL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN1cHBvcnQgZGVmYXVsdCBvdXRwdXQgbmFtZSAoYS5vdXQpOyBzb21lIGNvbmZpZ3VyZSBzY3JpcHRzIGNoZWNrIGZvcgoJaXQuCgoJKiBmaWxlcy9maWxlLmM6IFNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CglTZXQgY29ycmVjdCBsYXN0IGVycm9yIGlmIHRoZSBwYXRoIGNvbnRhaW5zIHdpbGRjYXJkIGNoYXJhY3RlcnMuCgoyMDAzLTAxLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBHSUYgZGVjb21wcmVzc29yIHN1cHBvcnQgdG8gT0xFIEF1dG9tYXRpb24gSVBpY3R1cmVzLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ2FsY3VsYXRlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciBhIGNvcHlyZWN0IGNvcnJlY3RseS4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fcHJpdmF0ZS5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhbiBlZGl0aW9uIG1vZGUgZmxhdm9yICh3aW4zMi9lbWFjcy4uLikgdG8gdGhlIGNvbnNvbGUgc2V0dGluZ3MKCWluIHRoZSByZWdpc3RyeS4KCgkqIGRsbHMva2VybmVsL2NvbnNvbGUuYywgZGxscy9rZXJuZWwvY29uc29sZV9wcml2YXRlLmgsCgkgIGRsbHMva2VybmVsL2VkaXRsaW5lLmMsIGluY2x1ZGUvd2luY29uLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2NvbnNvbGUuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVNldCB0aGUgZWRpdGlvbiBtb2RlIGFzIGEgc3BlY2lmaWMgYXR0cmlidXRlLCBub3QgYW4gZXh0ZW5zaW9uIG9mIHRoZQoJY29uc29sZSBtb2RlLgoKCSogcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBlbWFjcyBlZGl0aW9uIGZsYXZvciAoaXQncyBub3cgYSBjb25zb2xlIGF0dHJpYnV0ZSkuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglJZiBiaXQvc3RyZXRjaGJsdCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIERDcyBhcmUgdGhlIHNhbWUsIG1ha2Ugc3VyZQoJdGhlIGNoYW5nZXMgYXJlIGNvbW1pdHRlZCBiZWZvcmUgdW5sb2NraW5nLgoKCSogTWFrZS5ydWxlcy5pbiwgbWlzY2VtdS9NYWtlZmlsZS5pbiwgbWlzY2VtdS9tYWluLmMsCgkgIHRvb2xzL3dpZGwvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmFwaS9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cHAvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbjoKCURvIG5vdCBkZWZpbmUgX19XSU5FU1JDX18gd2hlbiBidWlsZGluZyB0b29scyBhbmQgbWlzY2VtdS4KCgkqIGRsbHMvTWFrZXRlc3QucnVsZXMuaW46CglSZW1vdmUgZ2xvYmFsIE5PTkFNRUxFU1MqIGRlZmluZSBmb3IgdGVzdHMgdG9vLgoKCSogaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJUmVnZW5lcmF0ZWQgd2l0aCBsYXRlc3Qgd2lkbC4KCgkqIE1ha2UucnVsZXMuaW4sIGluY2x1ZGUvTWFrZWZpbGUuaW46CglBZGRlZCBhIGZldyBydWxlcyB0byByZWJ1aWxkIGlkbCBoZWFkZXJzLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC93aWRsLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCURlY2xhcmUgdXNlci1tYXJzaGFsbGVyIHByb3RvdHlwZXMgZm9yIHR5cGVzIGRlY2xhcmVkIHdpdGggW3dpcmVfbWFyc2hhbF0uCglEZWZpbmUgX19XSURMX18gcHJlcHJvY2Vzc29yIG1hY3JvLCBzbyBXaW5lLXNwZWNpZmljIElETCBjYW4gYmUgZW5jbG9zZWQKCWluICNpZmRlZiBfX1dJRExfXy4gRml4ZWQgYSBmaWxlIG91dHB1dCBidWcuCgoJKiBwcm9ncmFtcy9jbG9jay9aaC5yYywgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9aaC5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjLCBwcm9ncmFtcy9wcm9nbWFuL1poLnJjLAoJICBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmMsIHByb2dyYW1zL3dpbmVmaWxlL1poLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjLCBwcm9ncmFtcy93aW5oZWxwL1poLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmM6CglsaXUgc3BpZGVyIDxsaXVzcGlkZXJAeWFob28uY29tPgoJQWRkZWQgU2ltcGxpZmllZCBDaGluZXNlIHJlc291cmNlcy4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS90ZXN0cy9wYXRoLmM6CglNYXR0aGV3IE1hc3RyYWNjaSA8bWF0dEBhY2xhcm8uY29tPgoJQWRkIGltcGxlbWVudGF0aW9uIGZvciBQYXRoQ3JlYXRlRnJvbVVybFcgYW5kIGFkZCB0aGUgc3RhcnQgZm9yIHNvbWUKCVVSTCB1bml0IHRlc3RzLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglDaGVjayBhbmQgZGVmaW5lIEFTIChmb3IgY3Jvc3MvYmlhcmNoIGNvbXBpbGVyIHN1cHBvcnQpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglBZGQgLWdzdGFicysgb3B0aW9uIGlmIHN1cHBvcnRlZCAoYmFzZWQgb24gYSBwYXRjaCBieSBNYXJjdXMKCU1laXNzbmVyKS4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy93cmMuYywKCSAgdG9vbHMvd3JjL3dyYy5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29sbGFwc2UgdGhlIC1oSHJzIG9wdGlvbnMgaW50byB0aGUgLU8gb3B0aW9uLgoJR2VuZXJhdGUgLnJlcyBmaWxlcyBieSBkZWZhdWx0LgoKCSogZGxscy9wc2FwaS9wc2FwaV9tYWluLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgR2V0TW9kdWxlQmFzZU5hbWUoQVcpLCBHZXRNb2R1bGVGaWxlTmFtZUV4KEFXKSBhbmQKCUdldE1vZHVsZUluZm9ybWF0aW9uLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBkbGxzL2tlcm5lbC90b29saGVscC5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3RyYWNlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gbm8gbG9uZ2VyIGRlcGVuZCBvbiB0b29saGVscCBkZWZpbml0aW9ucyBmb3IgZ2VuZXJhdGluZyBzbmFwc2hvdHMKCS0gYWRkZWQgZ2V0X2RsbF9pbmZvIHJlcXVlc3QKCjIwMDMtMDEtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3BzYXBpLmg6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdGhlIG1pc3NpbmcgQVBJcy4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLAoJICBjb250cm9scy91aXRvb2xzLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywKCSAgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywKCSAgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLAoJICBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvdHR5ZHJ2L3duZC5jLAoJICBkbGxzL3VzZXIvcGFpbnRpbmcuYywgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvdGV4dC5jLAoJICBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbm1tL21jaWF2aS93bmQuYywKCSAgZGxscy94MTFkcnYvc2Nyb2xsLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveHJlbmRlci5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLAoJICBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9yZWdpb24uYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9pbmZvLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCB3aW5kb3dzL2RjZS5jLAoJICB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLAoJICB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglEYW4gS2VnZWwgPGRhbmtAa2VnZWwuY29tPgoJQ2hhbmdlIFJFQ1QgdG8gdXNlIExPTkcgdG8gbWF0Y2ggd2luMzIgc3RhbmRhcmQgaGVhZGVycyBhbmQgZml4IGZvcm1hdAoJc3RyaW5ncyB0byB1c2UgJWxkIGZvciBSRUNUIGVsZW1lbnRzLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgd2luZG93cy9tZXNzYWdlLmM6CglTdG9yZSB0aGUga2V5Ym9hcmQgc3RhdGUgaW4gdGhlIHRocmVhZCBpbnB1dCBzdHJ1Y3R1cmUgb24gdGhlIHNlcnZlcgoJc2lkZS4KCgkqIHNlcnZlci93aW5kb3cuYzoKCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgbG9jYWwgdmFyaWFibGUgKHNwb3R0ZWQgYnkgRG1pdHJ5IFRpbW9zaGtvdikuCgoJKiBzZXJ2ZXIvYXN5bmMuYzoKCUdyYWIgdGhlIHRocmVhZCBvYmplY3QgaW4gY2FzZSB0aGUgdGhyZWFkIHRlcm1pbmF0ZXMgd2l0aCBwZW5kaW5nCglhc3luYyByZXF1ZXN0cyAoc3BvdHRlZCBieSBBbmRyZWFzIE1vaHIpLgoKCSogd2luZG93cy93aW4uYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVdTX0NBUFRJT04gaXMgYSB0d28gYml0IGZpZWxkLCBzbyB0ZXN0IGFwcHJvcHJpYXRlbHkuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglHZXRQcmludGVyRHJpdmVyRGlyZWN0b3J5QTogZG8gbm90IGNyYXNoIG9uIG51bGwgcG9pbnRlcnMuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmMsCgkgIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmM6CglTdG9yZSB0aGUgaGFyZHdhcmUgbWVzc2FnZXMgaW4gdGhlIHRocmVhZCBpbnB1dCBzdHJ1Y3R1cmUsIG5vdCBpbiB0aGUKCXRocmVhZCBxdWV1ZS4gR2V0IHJpZCBvZiB0aGUgY29va2VkIG1lc3NhZ2VzIHF1ZXVlLgoKMjAwMy0wMS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCBwcm9ncmFtcy9ycGNzcy9ycGNzc19tYWluLmMsCgkgIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jOgoJRGVmaW5lZCBOT05BTUVMRVNTVU5JT04vU1RSVUNUIGRpcmVjdGx5IGluIHRoZSBmaWxlcyB0aGF0IG5lZWQgaXQKCWluc3RlYWQgb2YgZ2xvYmFsbHkgaW4gdGhlIG1ha2VmaWxlLgoKCSogaW5jbHVkZS90Y2hhci5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIHRoZSBzdGFuZGFyZCBzeW1ib2wgbmFtZXMgaW5zdGVhZCBvZiB0aGUgbXN2Y3J0IHNwZWNpZmljIG9uZXMuCgoJKiBkbGxzL3dpbmVwcy9idWlsdGluLmMsIGRsbHMvd2luZXBzL2Rvd25sb2FkLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywKCSAgZGxscy93aW5lcHMvdHlwZTEuYywgZGxscy93aW5lcHMvdHlwZTQyLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3dpbnNwb29sL3dzcG9vbC5jLCBpbmNsdWRlL3dpbnNwb29sLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBleHRyYSAjaW5jbHVkZSBkaXJlY3RpdmVzIGZyb20gd2luc3Bvb2wuaC4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJIC0gcmV3cm90ZSBhIGxpdHRsZSBiaXQgdGhlIHN0YXRlIG1hZ2FnZW1lbnQgdG8gcmVtb3ZlIHRoZSBSZW5kZXJTdGF0ZQoJICAgc3R1Y3R1cmUgYW5kIHVzZSBvbmx5IHRoZSBzdGF0ZV9ibG9jayBjb2RlCgkgLSBmYWN0b3JpemUgc29tZSBjb2RlIGJldHdlZW4gaW50ZXJmYWNlIHJldmlzaW9ucwoJIC0gZml4IHNvbWUgc21hbGxzIGJ1Z3MKCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW4gT1NTX1Jhd09wZW5EZXZpY2UsIGFsd2F5cyByZXRyaWV2ZSB0aGUgZGV2aWNlIGZvcm1hdCBhbmQgc3RvcmUgaXQKCWluIHRoZSBPU1NfREVWSUNFIHN0cnVjdHVyZS4KCU1vZGlmeSBvdXIgaW50ZXJuYWwgZnVuY3Rpb25zIHNvIHRoYXQgdGhleSBjYW4gYmUgdG9sZCB0byBzdGlsbCBvcGVuCgl0aGUgZGV2aWNlIGV2ZW4gaWYgdGhlIGRldmljZSBmb3JtYXQgaXMgbm90IGFuIGV4YWN0IG1hdGNoLgoJSW4gd29kT3BlbiByZXR1cm4gdGhlIGFjdHVhbCBkZXZpY2UgZm9ybWF0IGlmIHRoZSBXQVZFX0RJUkVDVFNPVU5ECglmbGFnIGlzIHNldC4KCUZpeGVzIERpcmVjdFNvdW5kIG9uIGk4MTAgc291bmRjYXJkcyAoaS5lLiBjYXJkcyBzdXBwb3J0aW5nIG9ubHkKCTQ4MDAweDE2eDIpLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsCgkgIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsCgkgIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kZHJhdy9kM2Rjb21tb24uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywKCSAgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLAoJICBkbGxzL2Rzb3VuZC9zb3VuZDNkLmMsIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9udGRsbC9jZHJvbS5jLAoJICBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9oZWFwLmMsIGRsbHMvbnRkbGwvdGltZS5jLAoJICBkbGxzL250ZGxsL3ZpcnR1YWwuYywgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywKCSAgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMmltcGwuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywKCSAgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsCgkgIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfZGVza3RvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsIGRsbHMvc2hlbGwzMi9zaGZsZHJfbXljb21wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsCgkgIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy90d2Fpbi9kc21fY3RybC5jLAoJICBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MmYuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBkbGxzL3dpbm1tL3dpbm1tLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3gxMWRydi9kZ2EyLmMsIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsIGRsbHMveDExZHJ2L21vdXNlLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5udC5oLAoJICBsaWJyYXJ5L2xvYWRlci5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbWVtb3J5L2hlYXAuYywKCSAgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jcHUuYywgbWlzYy9zeXN0ZW0uYywgbXNkb3MvdnhkLmMsCgkgIHNjaGVkdWxlci90aW1lci5jLCB0b29scy93aW5lZHVtcC9wZS5jLCB3aW4zMi9uZXdmbnMuYywKCSAgd2luZG93cy9pbnB1dC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlZmluZSBOT05BTUVMRVNTe1NUUlVDVCxVTklPTn0gZXhwbGljaXRseSBpbiB0aGUgZmlsZXMgdGhhdCBuZWVkIHRoZW0uCgoJKiB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWdjYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVRlYWNoIHdpbmVnY2MgdG8gcHJvZHVjZSBleGVjdXRhYmxlcyBkaXJlY3RseSBmcm9tIGEgYnVuY2ggb2Ygc291cmNlIGZpbGVzLgoJQ3JlYXRlIGEgd2luZWcrKyBha2luIHRvIGcrKy4gRHJvcCBzdXBwb3J0IGZvciB0aGUgYWJ1c2VkIC14YysrIHN3aXRjaGVkLgoKCSogd2luZG93cy93aW4uYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUEgd2luZG93IHdpdGggYSBXU19FWF9BUFBXSU5ET1cgZXh0ZW5kZWQgc3R5bGUgY2FuIGFsc28gZ2V0IGEgbWVudS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZ2RicHJveHkuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwcm90b2NvbCBwYWNrZXQgaGFuZGxpbmcgd2hlbiB3aW5lZGJnIGlzIHRvbyBzbG93IHRvIGFuc3dlci4KCgkqIHByb2dyYW1zL3dpbmVib290L3dpbmVib290LmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJLSBDbGVhbmVkIHVwIHRoZSBjb2RlIChzYXZpbmcgb24gY2hhaW5pbmcgc3RyaW5ncykgYnkgQ0RpbmcgdG8gdGhlCgkgIHN5c3RlbSByb290IGRpcmVjdG9yeSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS4KCS0gV2lsbCBub3cgcmVuYW1lIHdpbmluaXQuaW5pIHRvIHdpbmluaXQuYmFrIGluc3RlYWQgb2YgZXJhc2luZyBpdCBhcwoJICBiZWZvcmUuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIG9wZW4gdGhlIGRldmljZSBpbiB0aGUgZGVmYXVsdCAyMjA1MHg4eDIgZm9ybWF0LCBhbmQgbGV0IGl0CglyZXBvcnQgdGhlIGFjdHVhbCBkZXZpY2UgZm9ybWF0IHRvIHVzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIEJsb2NrU2l6ZSBjaGVjay4KCgkqIGRsbHMvb2xlMzIvb2xlMi5zcGVjLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN0dWJzIGZvciBEbGxHZXRDbGFzc09iamVjdCwgT2xlW0dTXWV0Q2xpcGJvYXJkIGluIG9sZTIuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUNocmlzdG9waCBGcmljayA8ZnJpY2tAU0MtTmV0d29ya3MuZGU+CglJbXBsZW1lbnRhdGlvbiBvZiAoR2V0fFNldClDbGlwUGxhbmUgZm9yIGQzZDcuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFueSBvbGVhdXQzMiBBUElzIGFyZSBtaXNzaW5nIG9uIFdpbjk1L0lFMy4gTG9hZCB0aGVtIGR5bmFtaWNhbGx5LgoJVW5jb21tZW50IHNvbWUgJ05VTEwnIHRlc3RzIGFzIHRoZXkgcGFzcyBvbiBXaW5kb3dzIGFuZCBvbiBXaW5lLgoJQ29tbWVudCBvdXQgdGhvc2UgdGhhdCBjcmFzaCBvbiBXaW45NSBhbmQgaW5kaWNhdGUgd2h5IHRoZXkgYXJlCgljb21tZW50ZWQgb3V0LgoJUmVtb3ZlIHR3byByZWR1bmRhbnQgdGVzdHMgaW4gdmFydGVzdC5jIChWYXJJMUZyb21Cb29sIGFuZAoJVmFyVUkyRnJvbUkyLCBsYXN0IGRpZmYgaHVuaykuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVN0YW5kYXJkaXplIHRoZSBjYXBpdGFsaXphdGlvbiBvZiBXaW5lLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgc3VwcG9ydCBmb3IgLmRydiBleHRlbnNpb24gKGZvciB3aW5zcG9vbC5kcnYgdGVzdHMgZm9yIGluc3RhbmNlKS4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2N1cnNlcy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gZml4ZWQgc29tZSB1cGRhdGUgcHJvYmxlbXMgKGdlbmVyaWMgJiB3aGlsZSBzY3JvbGxpbmcpCgktIG5vdyBnZW5lcmF0aW5nIGtleSBldmVudCBmb3IgQ3RybC1bQS1aXSB0aGF0IG91ciBlZGl0bGluZSB1bmRlcnN0YW5kcwoJLSBpbXBsZW1lbnRlZCBjdXJzb3IgdmlzaWJpbGl0eQoKMjAwMy0wMS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmVkYmcvZXhwci5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYnVncyBpbiBjYXN0IG9wZXJhdG9yLgoKCSogZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgaW5jbHVkZS93aW5lL29ial93ZWJicm93c2VyLmg6CglGaXhlZCBzb21lIGlzc3VlcyBjYXVzZWQgYnkgdGhlIG5ldyBvYWlkbC5oLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9vYWlkbC5oLCBpbmNsdWRlL29haWRsLmlkbCwKCSAgaW5jbHVkZS93aW5lL29ial9lcnJvcmluZm8uaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJV3JvdGUgYSBuZXcgb2FpZGwuaWRsIHRvIHJlcGxhY2UgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCBhbmQKCWluY2x1ZGUvd2luZS9vYmpfZXJyb3JpbmZvLmguCgoJKiB0b29scy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgltaW5ndyBsaW5rcyBpbiBjb21kbGczMiwgc2hlbGwzMiwgYW5kIGFkdmFwaTMyIGJ5IGRlZmF1bHQuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZhY3Rvcml6ZSB0aGUgJ29ydGhvJyBjb2RlICh3aWxsIGJlIG5lZWRlZCBsYXRlciBvbikuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUlnbm9yZSB0aGUgTFBTVVJGQUNFIGJpdCBpZiBBTExPQ09OTE9BRCBpcyBzZXQuCgoJKiBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLAoJICBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbCwgZG9jdW1lbnRhdGlvbi9vbGUuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9wb3J0aW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLWJpbmRsbHMuc2dtbCwKCSAgdG9vbHMvYnVnX3JlcG9ydC5wbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3RhbmRhcmRpemUgdGhlIGNhcGl0YWxpemF0aW9uIG9mIFdpbmUuCgoJKiBwcm9ncmFtcy9jbG9jay9EYS5yYywgcHJvZ3JhbXMvY2xvY2svRGUucmMsIHByb2dyYW1zL2Nsb2NrL0VuLnJjLAoJICBwcm9ncmFtcy9jbG9jay9Fcy5yYywgcHJvZ3JhbXMvY2xvY2svRmkucmMsIHByb2dyYW1zL2Nsb2NrL0ZyLnJjLAoJICBwcm9ncmFtcy9jbG9jay9QdC5yYywgcHJvZ3JhbXMvY2xvY2svU2sucmMsIHByb2dyYW1zL2Nsb2NrL1N3LnJjLAoJICBwcm9ncmFtcy9jbG9jay9XYS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9EYS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9GaS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Gci5yYywgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9TaS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Tay5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Tdy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9XYS5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9Fbi5yYywgcHJvZ3JhbXMvcHJvZ21hbi9Gci5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9EYS5yYywgcHJvZ3JhbXMvd2luaGVscC9EZS5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9Fbi5yYywgcHJvZ3JhbXMvd2luaGVscC9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9GaS5yYywgcHJvZ3JhbXMvd2luaGVscC9Gci5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9IdS5yYywgcHJvZ3JhbXMvd2luaGVscC9JdC5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9Lby5yYywgcHJvZ3JhbXMvd2luaGVscC9QdC5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9Tdy5yYywgcHJvZ3JhbXMvd2luaGVscC9WYS5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9XYS5yYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZWNvZGVAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCUNoYW5nZSB0aGUgU1VCTEFOR19ORVVUUkFMIGNsYXVzZSBpbiBhbGwgd2luZWxpYiBhcHBsaWNhdGlvbnMgdG8KCVNVQkxBTkdfREVGQVVMVCwgYXMgdGhleSBzaG91bGQgYmUuCgoJKiBzZXJ2ZXIvY29uc29sZS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gRml4ZWQgc2V2ZXJhbCBidWdzIHdoaWxlIHJlc2l6aW5nIGFuIGV4aXN0aW5nIHNjcmVlbmJ1ZmZlci4KCS0gUmVkdWNlZCB1cGRhdGUgYXJlYSBmb3Igc29tZSB3cml0ZSBjb25kaXRpb25zLgoJLSBTdGFydGVkIGltcGxlbWVudGluZyBldmVudCBtZXNzYWdlIGNvbGxhcHNpbmcuCgoJKiB0b29scy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUGFzcyAtbCdzIHRoYXQgYXJlIG5vdCAuZGxsJ3Mgb3IgLmEncyB0byB0aGUgbGlua2VyLgoKCSogdG9vbHMvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBEZWZpbmUgdGhlIHN0YW5kYXJkIF9fV0lORV9fIGFuZCBfX1dJTjMyX18gbWFjcm9zLgoJLSBNYXAgLWx1dWlkIHRvIC1sd2luZV91dWlkLCBpbiBVbml4IC1sdXVpZCBkb2VzIHNvbWV0aGluZyBlbHNlLgoKCSogaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS9vY2lkbC5oOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUluY2x1ZGUgb2FpZGwuaCBpbnN0ZWFkIG9mIHdpbmUvb2JqX29sZWF1dC5oLgoKCSogaW5jbHVkZS9vbGVpZGwuaDogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglUZW1wb3JhcmlseSBpbmNsdWRlIG9iamJhc2UuaCBmcm9tIG9sZWlkbC5oLgoJUmVtb3ZlZCBpbmNsdXNpb24gb2Ygb2JqX2Vycm9yaW5mby5oLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQXZvaWQgZGlyZWN0IElDT01fQ0FMTCB1c2FnZS4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBvbGUvZHhndWlkLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1vdmVkIGEgY291cGxlIG9mIGRlZmluaXRpb25zIGZyb20gaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCB0bwoJaW5jbHVkZS9vbGVhdXRvLmguCgoJKiBNYWtlZmlsZS5pbjogQ2hyaXN0b3BoIEZyaWNrIDxmcmlja0BTQy1OZXR3b3Jrcy5kZT4KCUNyZWF0aW9uIG9mIGEgdGFncyBmaWxlIHdpdGggdGhlIGN0YWdzIHRvb2wuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBpbiB0aGUgR2V0SGFuZGxlIG1ldGhvZAoJLSBmYWN0b3JpemUgc29tZSBjb2RlIGJldHdlZW4gRDNEMS8yLzMgYW5kIEQzRDcKCS0gZml4IHJlZmVyZW5jZSBjb3VudGluZyBmb3IgcGFsZXR0ZXMKCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvaWZzLmgsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsCgkgIGRsbHMvb2xlMzIvb2xlMi5zcGVjLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCW9sZTJubHMuYyBpcyBhIDE2Yml0IG9ubHkuCglObyBuZWVkIHRvIGRlZmluZSBJQ09NIG1hY3JvcyBmb3IgMTZiaXQgaWZhY2UgSU1hbGxvYzE2LgoJRGVmaW5lIGFuZCBpbXBsZW1lbnQgSEdMT0JBTF9Mb2NrQnl0ZXMxNi4KCVN0YXJ0ZWQgb24gU3RnT3BlblN0b3JhZ2VPbklMb2NrQnl0ZXMuCgoJKiBpbmNsdWRlL3dpbmUvd2luYmFzZTE2Lmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc2V2ZXJhbCBtaXNzaW5nIEszMldPVyogcHJvdG90eXBlcy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIHZ0IGZpZWxkIHNob3VsZCBiZSBhIFZBUlRZUEUgbm90IGEgVkFSRU5VTS4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggc2lnbmVkL3Vuc2lnbmVkIGNvbXBpbGF0aW9uIHdhcm5pbmdzLgoKMjAwMy0wMS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWJvb3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZWJvb3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVib290L3dpbmVib290LmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmVjb2RlQHN1bi5jb25zdW1lci5vcmcuaWw+CglJbml0aWFsIHdpbmVib290IGltcGxlbWVudGF0aW9uOyBhdCB0aGlzIHN0YWdlIG9ubHkgd2luaW5pdC5pbmkKCXByb2Nlc3NpbmcgaGFzIGJlZW4gd3JpdHRlbi4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCS0gM2QgYnVmZmVycyBwcm9kdWNlIHNvdW5kcwoJLSBzb21lIG90aGVyIHNtYWxsIGZpeGVzCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CgktIGNsZWFuZWQgKlNldCogZnVuY3Rpb25zCgktIGFkZGVkIGluaXRpYWwgY29kZSBmb3IgM2QgYnVmZmVyIHJlY2FsY3VsYXRpbmcKCS0gYWRkZWQgc29tZSBhdXhpbGlhcnkgZnVuY3Rpb25zCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGluY2x1ZGUvbW1kZGsuaCwKCSAgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2JqYmFzZS5oLAoJICBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29iamlkbC5pZGwsIGluY2x1ZGUvb2NpZGwuaCwKCSAgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3JwY2RjZS5oLAoJICBpbmNsdWRlL3JwY3Byb3h5LmgsIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3RjaGFyLmgsCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmRvd3MuaCwKCSAgaW5jbHVkZS93aW5lL2RlYnVnLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnNvY2suaCwKCSAgaW5jbHVkZS93aW50ZXJubC5oLCBpbmNsdWRlL3dvd250MzIuaCwgaW5jbHVkZS93dHlwZXMuaCwKCSAgaW5jbHVkZS93dHlwZXMuaWRsLCBsaWJyYXJ5L01ha2VmaWxlLmluLCBtaXNjZW11L01ha2VmaWxlLmluLAoJICBvbGUvTWFrZWZpbGUuaW4sIHNlcnZlci9NYWtlZmlsZS5pbiwgdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luYXBpL01ha2VmaWxlLmluLCB0b29scy93aW5hcGkvbXN2Y21ha2VyLAoJICB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVkdW1wL01ha2VmaWxlLmluLAoJICB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dwcC9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluLAoJICB1bmljb2RlL01ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbmFtZSBfX1dJTkVfXyB0byBfX1dJTkVTUkNfXy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLAoJICBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZDNkOHR5cGVzLmgsIGluY2x1ZGUvbXN2Y3J0L2VoLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oOgoJUmVtb3ZlZCBhIGZldyBtb3JlICNpZmRlZiBfX1dJTkVfXy4KCgkqIGluY2x1ZGUvd2lubnQuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUVuYWJsZSBuYW1lbGVzcyBzdHJ1Y3R1cmVzIGluIEMrKyBmb3IgZ2NjID49IDMueCAoZGlzY292ZXJ5IGFuZAoJdGVzdGluZyBkb25lIGJ5IERhbiBLZWdlbCkuCgoJKiB0b29scy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQYXNzIG9ubHkgdGhlIC1vIC1sIC1MIG9wdGlvbnMgdG8gd2luZXdyYXAsIGlnbm9yZSB0aGUgcmVzdC4KCjIwMDMtMDEtMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lbWFrZXI6CglSZW1vdmVkIGEgY291cGxlIG9mIG5vIGxvbmdlciB1c2VkIHRlc3RzIGluIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJlCglzY3JpcHQuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgkjaW5jbHVkZSA8c3RkbGliLmg+IGluc3RlYWQgb2YgdGhlIG5vbi1zdGFuZGFyZCA8bWFsbG9jLmg+LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRW5hYmxlIFogYnVmZmVyIGJ5IGRlZmF1bHQuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgVElNRV9LSUxMX1NZTkNIUk9OT1VTLgoKCSogdG9vbHMvd2luZWdjYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUHJvcGVybHkgaGFuZGxlIHRoZSAtTSBzd2l0Y2guCgoJKiB0b29scy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUHJvcGVybHkgbGluayBhZ2FpbnMgLmEgZmlsZXMgdXNpbmcgdGhlIC1sIHN3aXRjaC4KCVN1cHBvcnQgbW9yZSB2ZXJib3NlIG91dHB1dC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZGVkIGJhc2ljIHN1cHBvcnQgZm9yIG1pcG1hcGluZywgdmVyaWZpZWQgdXNpbmcgc2FtcGxlIGZyb20KCWNvZGVzYW1wbGVyLmNvbS4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gVXNlIGZhc3RlciB2ZXJ0ZXggYXJyYXlzIChyYXRoZXIgdGhhbiBwcm9jZXNzaW5nIHZlcnRleGVzIG9uZSBieQoJICBvbmUpLCB3aGVuZXZlciBwb3NzaWJsZS4KCS0gTGVzcyB0cmFjZSBpbiB0aGUgc2xvd2VyIGZvcm0gYnkgZGVmYXVsdC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsCgkgIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gc29tZSBmaXhlcyAvIG9wdGltaXNhdGlvbnMgaW4gdGhlIGNvbG9yIGtleWluZyBjb2RlCgktIG1pbmltaXplIGF0IHRoZSBtYXhpbXVtIHRleHR1cmUgdXBsb2FkcwoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcmUtYWN0aXZhdGUgdGhlIGNvbG9yLWtleWluZyBjb2RlCgktIGZpeCB5ZXQgYWdhaW4gdGV4dHVyZSBlbnVtZXJhdGlvbiB0byBwbGVhc2UgYWxsIGdhbWVzIDotLwoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZWVuYWJsZSBkZXZpY2UncyBkZWZhdWx0IHJlbmRlciBzdGF0ZXMgaW5pdGlhbGl6YXRpb24uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggb3JkZXIgb2YgdGV4dHVyZSBlbnVtZXJhdGlvbiB0byBmaXggeWV0IGFub3RoZXIgc2V0IG9mIGR1bWIgZ2FtZXMuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUJlZ2lubmluZyBvZiBzdGF0ZSBibG9jay4KCUluaXRpYWxpemUgdGhlIGRldmljZSB3aXRoIHRoZSByaWdodCBEM0QgZGVmYXVsdCB2YWx1ZXMuCglJbXBsZW1lbnRzIEdldFJlbmRlclN0YXRlLCBHZXRUZXh0dXJlU3RhZ2VTdGF0ZSBhbmQgR2V0TGlnaHRTdGF0ZS4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2Rjb21tb24uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGhhY2sgZm9yIG9uZSBjYXNlIG9mIHRoZSBQcm9jZXNzVmVydGljZXMgY2FzZQoJLSBzb21lIGNoYW5nZXMgaW4gdGhlIGV4ZWN1dGUgYnVmZmVyIHRvIHJldXNlIHRoZSBuZXcgTWF0cml4IGNvZGUKCS0gYWx3YXlzIHJlaW5pdGlhbGl6ZSB0aGUgZW51bWVyYXRpb24gc3RydWN0dXJlcyBpbiBjYXNlIHNvbWUgZ2FtZXMKCSAgbW9kaWZ5IHRoZW0KCS0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlICh1bnVzZWQpIFJlc2VydmVkMSBmaWVsZCBpbiB0aGUgRlZGIGZvcm1hdHMKCS0gZml4IDMyIGJpdCB0ZXh0dXJpbmcgYW5kIGFkZGVkIG1vcmUgY2hlY2tzCgktIHJlbW92ZSBzb21lIHVzZWxlc3MgYW5kIGFubm95aW5nIGZpeG1lCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RsaWdodC5jLAoJICBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBjcmVhdGUgYSBmdW5jdGlvbiB0byBzZXQgdGhlIHZhcmlvdXMgdHJhbnNmb3JtYXRpb24gbWF0cmljZXMgdG8KCSAgZmFjdG9yaXplIHRoZSBjb2RlIGJldHdlZW4gdGhlIHZhcmlvdXMgY29kZSBwYXRoCgktIGZpeGVkIHNvbWUgbG9nZ2luZyBzdHVmZgoKCSogZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gbW9yZSB0aHVua2luZyBpbiB0aGUgRDNEVmVydGV4QnVmZmVyIENPTSBvYmplY3QKCS0gYWRkZWQgJ3N1cHBvcnQnIGZvciBHZXRJbmZvCgoJKiBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gbGlnaHQgaW1wcm92ZW1lbnRzCgktIG1pc2MuIGZpeGVzCgoJKiB0b29scy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU2ltcGxpZnkgdGhlIGNvZGUgZm9yIHRoZSBnZW5lcmF0ZWQgd3JhcHBlci4KCU1pc2NlbGxhbmVvdXMgc21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYywgZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvZXh0cmFjaHVuay5jLCBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywKCSAgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLCBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYywgZGxscy9jb21jYXQvY29tY2F0X3ByaXZhdGUuaCwKCSAgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZpZGVvL21jaXduZC5jLCBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9wcml2YXRlLmgsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fcHJpdmF0ZS5oLAoJICBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywKCSAgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVkbGcvb2xlZGxnX21haW4uYywKCSAgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmMsIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmgsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGluY2x1ZGUvY29tY2F0LmgsIGluY2x1ZGUvZG9jb2JqLmgsIGluY2x1ZGUvbWFwaWNvZGUuaCwKCSAgaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL21lZGlhb2JqLmgsIGluY2x1ZGUvb2FpZGwuaCwKCSAgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVpZGwuaCwKCSAgaW5jbHVkZS9zZXJ2cHJvdi5oLCBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3dpbmdkaS5oLAoJICBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgb2xlL2R4OGd1aWQuYywgb2xlL2R4Z3VpZC5jLAoJICBvbGUvdXVpZC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUVsaW1pbmF0ZSBsb3RzIG9mIF9fV0lORV9fIGNvbmRpdGlvbmFscyBmcm9tIHRoZSBoZWFkZXJzLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsIGluY2x1ZGUvZDNkLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBzb21lIGFkZGl0aW9ubmFsIGZsYWdzIGxvZ2dlZAoJLSBmaXhlcyBpbiB0aGUgdmVydGV4IGJ1ZmZlciB0aHVua2luZyArIG9wdGltaXplZCBmbGFnIHN1cHBvcnQKCgkqIGRsbHMvdXNlci90ZXN0cy93aW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXaW45eCBkb2VzIG5vdCBzdXBwb3J0IHtHZXQsU2V0fVdpbmRvd0xvbmdXLiBVc2UgdGhlIEFuc2kgdmVyc2lvbgoJaW5zdGVhZCBzaW5jZSBpdCB3b24ndCBpbXBhY3QgX3RoZXNlXyB0ZXN0cyBhbnl3YXkuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgaW5jbHVkZS93aW5lL2RlYnVnLmgsCgkgIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvZGVidWcuYzoKCUFkZGVkIHdpbmVfZGJnX3NwcmludGYgZnVuY3Rpb24gdGhhdCBhbGxvY2F0ZXMgYSB0ZW1wb3JhcnkgYnVmZmVyIGluCgl0aGUgcGVyLXRocmVhZCBzdHJpbmdzIGFyZWEuCglBZGRlZCBpbmxpbmUgZnVuY3Rpb25zIHRvIGZvcm1hdCBQT0lOVCwgU0laRSBhbmQgUkVDVCBzdHJ1Y3R1cmVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU0hHZXRNYWxsb2MoKSByZXR1cm5zIGEgSFJFU1VMVCwgbm90IGEgRFdPUkQuCgoJKiBpbmNsdWRlL21zdmNydC9zdGRsaWIuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlZmluZSBOVUxMIGlmIGl0J3Mgbm90IGRlZmluZWQgYWxyZWFkeS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDaGVjayB0aGUgdmFsdWUgb2YgdGhlIHBmbkNhbGxiYWNrIGluIGFkZGl0aW9uIHRvIHRoZSBjYWxsYmFjayBiaXQuCgoJKiB0b29scy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3VwcG9ydCBvdXRwdXRpbmcgZmlsZXMgdG8gYSBkaWZmZXJlbnQgZGlyZWN0b3J5IHRoYW4gcHdkLgoJU21hbGwgY2xlYW51cHMuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2NsZWFudXAsIHRvb2xzL3dpbmFwaS93aW5hcGlfY2xlYW51cF9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCAtLWluY2x1ZGUtcXVvdGVzIG9wdGlvbiB0aGF0IGZpeGVzICNpbmNsdWRlIHRvIHVzZSB0aGUgY29ycmVjdAoJb2YgPD4gYW5kICIiLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgR2V0UHJpbnRlckRyaXZlckRpcmVjdG9yeSBmcm9tIGFzY2lpIHRvIHVuaWNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglMaXN0dmlldyBzaG91bGQgc2Nyb2xsIGJ5IGF0IGxlYXN0IG9uZSBjb2x1bW4sIGZpeGVzIGJ1ZyB3aGVyZSBpdGVtCgliZWluZyB3aWRlciB0aGFuIGxpc3R2aWV3IHByZXZlbnRzIGFueSBzY3JvbGxpbmcgZnJvbSBvY2N1cmluZy4gIEFkZGVkCglwcmludGluZyBvZiB0aGUgc2Nyb2xsIGNvZGUgdGV4dCBkdXJpbmcgdHJhY2luZyBvZiBzY3JvbGwgZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KCVNoZWxsRXhlY3V0ZShOVUxMLCAid29yZHBhZC5leGUiLCkgbm93IGNvcnJlY3RseSBmaW5kcyB3b3JkcGFkLmV4ZSBpbgoJQXBwIFBhdGhzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCURvbWluaWsgU3RyYXNzZXIgPERvbWluaWsuU3RyYXNzZXJAdC1vbmxpbmUuZGU+CglJbXBsZW1lbnQgVmVyU2V0Q29uZGl0aW9uTWFzayBieSBmb3J3YXJkaW5nIHRvIG50ZGxsLgoKCSogZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDYWxsIGxzdHJjbXBXIHJhdGhlciB0aGFuIHdjc2NtcC4KCjIwMDMtMDEtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmMsCgkgIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBTYWZlQXJyYXl7U2V0SUlELEdldElJRCxTZXRSZWNvcmRJbmZvLEdldFJlY29yZEluZm99LgoJQWRkZWQgc3VwcG9ydCBmb3IgRkFERl9IQVZFSUlELCBGQURGX1JFQ09SRCwgRkFERl9IQVZFVkFSVFlQRS4KCUltcGxlbWVudGVkIFNhZmVBcnJheUFsbG9jRGVzY3JpcHRvckV4IGFuZCBTYWZlQXJyYXlHZXRWYXJUeXBlCgljb3JyZWN0bHkuCglGaXhlZCBzZWNvbmQgYXJndW1lbnQgb2YgU2FmZUFycmF5Q29weURhdGEgKGl0IGlzIGp1c3QgU0FGRUFSUkFZKikuCglDaGFuZ2VkIGFsbG9jYXRpb24gdG8gaW5jbHVkZSAxNiBieXRlcyBiZWZvcmUgdGhlIFNBRkVBUlJBWSAodG8gc3RvcmUKCUlJRC9WQVJUWVBFL0lSZWNvcmRJbmZvKikuCglWQVJUWVBFIC0+IHNpemUgYXJyYXkgd2FzIG5vdCBpbmRleGVkIGNvcnJlY3RseS4KCUFkZGVkIGxvdHMgb2YgdGVzdGNhc2VzIGZvciBtb3N0IGZ1bmN0aW9uYWxpdHkuCglBZGRlZCBJUmVjb3JkSW5mbyBpbnRlcmZhY2UgZGVmaW5pdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBWVF9FUlJPUi0+VlRfSTQvVlRfUjQgY29lcmNpb24uCglWYXJpYW50Q29weSBkb2VzIG5vdCBuZWVkIHRvIGNoZWNrIHRoZSByZXR1cm4gb2YgVmFyaWFudENsZWFyLgoJVmFyaWFudENvcHlJbmQgbm93IGNvcGllcyBWVF9VTktOT1dOIGFuZCBWVF9ESVNQQVRDSCB0b28uCglWYXJDbXAgaGFuZGxlcyBWVF9CT09MLgoJVmFyRm9ybWF0IGhhbmRsZXMgVlRfQlNUUi4KCWNvZXJjZV9hcnJheSBmaXhlZCBmb3IgVlRfQVJSQVl8VlRfVUkxIC0+IFZUX0JTVFIgYW5kIFZUX0FSUkFZfHggLT4KCVZUX1NBRkVBUlJBWSBjYXNlcy4KCVZhckNhdCB0cmllcyB0byBjb2VyY2UgdHlwZXMgaW50byBWVF9CU1RSIHRvIGRvIGNhdC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUHJvY2VzcyBUS0lORF9BTElBUyBpbiBTTFRHIHR5cGVsaWJzLCAweDE0IGluIHRoZSB0YWlsIGlzIHRoZQoJdGRlc2NBbGlhcy52dCBlbnRyeS4KCUFkZGVkIGEgc21hbGwgaGFuZGxlciBmb3IgVEtJTkRfRElTUEFUQ0ggaW4gU0xURy4KCUlUeXBlTGliX1JlbGVhc2UgY2FuIGhhdmUgYSBOVUxMIHBvaW50ZXIgYXMgSVR5cGVJbmZvKi4KCVNwbGl0IG91dCBfY29weV9hcmcgZnVuY3Rpb24gZm9yIGJvdGggRGlzcENhbGwgYW5kIElUeXBlSW5mb19mbkludm9rZSwKCWFkZGVkIHNvbWUgbW9yZSBmdW5jdGlvbmFsaXR5LgoJSVR5cGVJbmZvX2ZuSW52b2tlIGNhbiBoYW5kbGUgVlRfVVNFUkRFRklORUQgdmFyaWFudHMuCgoJKiBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgYWJpbGl0eSBvZiBwbGF5aW5nIGEgdGVzdCB0b25lIHdoZW4gaW4gaW50ZXJhY3RpdmUgbW9kZS4KCVRlc3QgYm90aCBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgYnVmZmVycy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CgktIEltcGxlbWVudGVkIEludGVybmV0Q3JhY2tVcmxXIGFuZCByZS1pbXBsZW1lbnRlZCBJbnRlcm5ldENyYWNrVXJsQQoJICBieSB1c2luZyB0aGUgVW5pY29kZSB2ZXJzaW9uLgoJLSBJbnRlcm5ldENyYWNrVXJsVyBub3cgcGFyc2VzIFVSTCBoYXZpbmcgdGhlICJhYm91dCIgYW5kICJyZXMiCgkgIHNjaGVtZXMuCgoJKiB0b29scy93aW5lZ2NjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCBDKysgc3VwcG9ydCAmIHNtYWxsIGNsZWFudXBzLgoKCSogdG9vbHMvd2luZXdyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVN1cHBvcnQgQysrIGxpbmtpbmcgd2l0aCBhIG5ldyAtQyBzd2l0Y2guCglNb2RpZnkgdGhlIGFwcCBsYXVuY2hlciB0byBwYXNzIGFsbCBvcHRpb25zIGJ1dCAtLWRlYnVnbXNnIGFuZCAtLWRsbAoJdG8gdGhlIGFwcC4KCUxpbmsgdGhlIHdyYXBwZXIgYWdhaW5zdCBhbGwgb2YgdGhlIGFwcCdzIGxpYnMuCglEcm9wIHN1cHBvcnQgZm9yIHBhc3NpbmcgdGhlIGRsbCBuYW1lcyB0byB0aGUgbGF1bmNoZXIuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IGZvciBzdHVwaWQgYXBwbGljYXRpb25zIHJlYWRpbmcgc29tZSBieXRlcyBhZnRlciB0aGUgZW5kIG9mIHRoZQoJc3VyZmFjZSBtZW1vcnkuCgoJKiBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIGVudW1lcmF0aW9uIG9mIHRoZSBSZWZlcmVuY2UgZGV2aWNlIChzb21lIGdhbWVzIHNlZW1zIHRvIG5lZWQKCSAgaXQgdG8gd29yayBhbmQgdGhleSB3YW50IGl0IGVudW1lcmF0ZWQgZmlyc3QuLikKCS0gc29tZSBjb21tZW50cyBhYm91dCBwb3RlbnRpYWwgcHJvYmxlbXMgd2l0aCBaIG1hc2tpbmcKCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzdXBwb3J0IGZvciBwZXItdmVydGV4IG1hdGVyaWFsIHByb3BlcnRpZXMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uaCwKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVpbXBsZW1lbnRlZCBTd2FwVGV4dHVyZUhhbmRsZXMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywKCSAgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSByZW1vdmVkIHNvbWUgdXNlbGVzcyBXQVJOcwoJLSBmaXhlZCBiYWNrZmFjZSBjdWxsaW5nIGFuZCBtYXRlcmlhbCBzZXR0aW5ncwoKCSogZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRml4IElEaXJlY3QzRFZlcnRleEJ1ZmZlciBpbnRlcmZhY2UuCglJbXBsZW1lbnRzIEdldFZlcnRleEJ1ZmZlckRlc2MuCglSZW1vdmUgc29tZSB1c2VsZXNzIEZJWE1FLgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGNvbW1vbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYmVnaW5uaW5nIG9mIE1hdGVyaWFsIGFuZCBMaWdodCBzdXBwb3J0IGZvciBEM0Q3CgktIG5ldyByZW5kZXJpbmcgc3RhdGVzIHN1cHBvcnRlZAoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgdGV4dHVyaW5nLgoKCSogZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFsbG93IGFwcGxpY2F0aW9uIHRvIGxvYWQgcGFsZXR0ZS1sZXNzIHRleHR1cmVzCgktIGhhbmRsZSBwYWxldHRlIGNoYW5nZSBvZiBsb2FkZWQgdGV4dHVyZXMKCS0gc29tZSBjaGFuZ2VzIGluIHRoZSBFeGVjdXRlQnVmZmVyCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgc29tZSB0cmFjaW5nIGluIHRoZSBmYWtlIFpCdWZmZXIgbWV0aG9kcwoJLSBhZGRlZCBzdXBwb3J0IGZvciB0aGUgREVQVEhfRklMTCBCTFQKCS0gc2V0IGJ5IGRlZmF1dCBwZXJzcGVjdGl2ZSBjb3JyZWN0aW9uIHRvIG5pY2VzdC4KCS0gZGVjcmVhc2UgdGhlIGxpbWl0IHdoZXJlICd3JyBpcyBpZ25vcmVkCgoJKiBkbGxzL2RkcmF3L21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHNvbWUgYmxlbmQgc3RhdGVzLgoKCSogZGxscy9kZHJhdy9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUhhbmRsZSBtb3JlIGJsZW5kIHN0YXRlcy4KCgkqIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglQcmV2ZW50IG1lbW9yeSBsZWFrIGluIGZyZWVpbmcgb2YgdGhlIFZlcnRleEJ1ZmZlci4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudCBHZXRUcmFuc2Zvcm0gYW5kIHJld29yayBhIGJpdCB0aGUgbWF0cmljZXMgc3RvcmFnZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5oLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBpbXBsZW1lbnRlZCBHZXRUZXh0dXJlCgktIHNlbWktc3R1YmJlZCBWYWxpZGF0ZVRleHR1cmUKCS0gZml4ZWQgc29tZSBlcnJvcnMgaW4gbG9nZ2luZwoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgJ2JsdCcgYW5kICdibHRmYXN0JyBvdmVycmlkZSBmdW5jdGlvbnMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkICdlbXVsYXRlZCcgVmVydGV4QnVmZmVyIHN1cHBvcnQuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGRvIG5vdCB1c2UgdGhlIGFscGhhIGNvb3JkaW5hdGVzIHdoZW4gQUxQSEFCTEVORCBpcyBkaXNhYmxlZAoJLSBkaXNhYmxlIGZvZ2dpbmcgaW4gdGhlIFhZWlJIVyBjYXNlCgktIHZhcmlvdXMgb3RoZXIgc21hbGwgZml4ZXMKCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRmFjdG9yaXplIHNvbWUgY29kZSBpbiB0aGUgdGV4dHVyZSB1cGxvYWRpbmcgZnVuY3Rpb24uCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglIYW5kbGUgdGV4dHVyZSBhZGRyZXNzaW5nIHRoZSBEM0Q3IHdheS4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUHJldmVudCBsb2NrLXVwIGluIHBhbGV0dGVkIHRleHR1cmUgd2l0aCBubyBwYWxldHRlIGNhc2UuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUVuYWJsZSB0aGUgYXBwbGljYXRpb24gdG8gY3JlYXRlIGZpcnN0IHRleHR1cmVzIGFuZCB0aGVuIHRoZSBEM0QKCWRldmljZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2N0bDNkLy5jdnNpZ25vcmUsCgkgIGRsbHMvY3RsM2QvTWFrZWZpbGUuaW4sIGRsbHMvY3RsM2QvY3RsM2QuYywgZGxscy9jdGwzZC9jdGwzZC5zcGVjLAoJICBkbGxzL2N0bDNkL2N0bDNkMzIuYywgZGxscy9jdGwzZC9jdGwzZDMyLnNwZWMsCgkgIGRsbHMvY3RsM2QvY3RsM2R2Mi5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJQWRkZWQgY3RsM2QsIGN0bDNkdjIgYW5kIGN0bDNkMzIgQVBJIGltcGxlbWVudGF0aW9ucy4KCgkqIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluLCB0b29scy93cmMvd3JjLm1hbjoKCVVwZGF0ZWQgZm9yIHJlY2VudCBvcHRpb25zIGNoYW5nZXMuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2QzZDgvc2hhZGVyLmMsCgkgIGRsbHMvZDNkeDgvZDNkeDhfbWFpbi5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy93aW5tbS93aW5lamFjay9hdWRpby5jLCBpbmNsdWRlL2QzZHg4Y29yZS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5lbWFrZXI6IEplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJU2V2ZXJhbCBpbXByb3ZlbWVudHMgYW5kIGNvcnJlY3Rpb25zLCBmb3JlbW9zdCBiZWluZyBjb3JyZWN0aW5nIHdyYwoJZmxhZ3MgYW5kIHNoYXJlZCBvYmplY3QgZmlsZSBuYW1pbmcuCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpLAoJICB0b29scy93aW5hcGkvd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCS0gTWlub3IgaW1wcm92ZW1lbnQgYW5kIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIHN0cnBicmtXIGZyb20gZmlsZWRsZzk1LmMgdG8gd2luZS91bmljb2RlLmguCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBmaWxlcy9maWxlLmM6CglBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgUmVwbGFjZUZpbGUuCgoJKiB0b29scy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHdyYXBwZXIgZ2VuZXJhdGlvbiB0byB3aW5ld3JhcC4KCVF1aXRlIGEgZmV3IG1pY3JvIGNsZWFudXBzLCBjb2RlIHNob3VsZCBiZSBzaW1wbGVyIHRvIGZvbGxvdy4KCgkqIHRvb2xzL3dpbmVnY2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNvbXBpbGUgd2l0aCBXSU5FX1VOSUNPREVfTkFUSVZFIGRlZmluZWQsIGVzc2VudGlhbCBmb3IgQysrLgoJTmV3IC1WIG9wdGlvbiB0byBkaXNwbGF5IHRoZSB2ZXJzaW9uLgoJRG8gbm90IGxpbmsgLWxjLCBzY3Jld3MgdXAgbGlua2luZywganVzdCBnZXQgdGhlIGRlZmF1bHQuCgoJKiBkbGxzL2tlcm5lbC93aW5kZWJ1Zy5jLCBkbGxzL3dpbmVkb3MvaW50MTYuYywgZGxscy93aW5lZG9zL2ludDJmLmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3htcy5jLCBtZW1vcnkvZ2xvYmFsLmMsCgkgIHRvb2xzL2ZudDJiZGYuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCB1bnVzZWQgI2luY2x1ZGUgb2YgbW9kdWxlLmguCgoJKiBkbGxzL2QzZDgvZDNkOC5zcGVjLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L3NoYWRlci5jLCBpbmNsdWRlL2QzZDguaCwKCSAgaW5jbHVkZS9kM2Q4dHlwZXMuaDoKCVJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJLSBpbnRlZ3JhdGlvbiB3aXRoIERyYXdQcmltaXRpdmUKCS0gcmVtb3ZlIG5vbi1lc3RoZXRpYyBjKysgY29tbWVudHMgaW50byBjIGNvbW1lbnRzIGJsb2NrIDspCgktIG1vcmUgbW9yZSBkZWJ1ZwoJLSBpbmRlbnQsIGNsZWFudXBzCgktIHRyeWluZyB0byB1c2UgRElGRlVTRSBhbmQgU1BFQ1VMQVIgZm9yIHZlcnRleCBzaGFkZXIKCS0gbWFueSBmaXhlcwoJLSBpbnRlZ3JhdGlvbiB3aXRoIEphc29uJ3MgdGV4dHVyZSBwYXRjaAoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVNvbWUgY2xlYW4tdXBzIGFmdGVyIHRoZSBEcmF3UHJpbWl0aXZlIHJld3JpdGUuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBjcmFzaCBpbiBHZXRBdmFpbGFibGVWaWRNZW0gZnVuY3Rpb24gd2hlbiBUUkFDRSBpcyBhY3RpdmF0ZWQuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVdoZW4gdW5tYXBwaW5nIGEgKHdhdmV8bWlkaSktaGVhZGVyIHVucHJlcGFyZSBtZXNzYWdlLCBtYWtlIHN1cmUgdGhlCgl1bnByZXBhcmF0aW9uIHdhcyBzdWNjZXNzZnVsLgoKCSogZGxscy9tc3ZpZGVvL2RyYXdkaWIuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIG5hc3R5IGJ1Z3MgaW4gZHJhd2RpYiBjcmVhdGlvbi9kZWxldGlvbi4KCgkqIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnNwZWMsIGRsbHMvZGV2ZW51bS9kZXZlbnVtX21haW4uYywKCSAgZGxscy9xY2FwL3FjYXAuc3BlYywgZGxscy9xY2FwL3FjYXBfbWFpbi5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjOgoJRG9taW5payBTdHJhc3NlciA8RG9taW5pay5TdHJhc3NlckB0LW9ubGluZS5kZT4KCVNvbWUgc3R1YnMgZm9yIGRsbCBzZXR1cCBuZWVkZWQgYnkgSUU2IHNldHVwLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN1cHBvcnQgRGxsR2V0Q2xhc3NPYmplY3Qgb2YgQ0xTSURfU3RkUGljdHVyZS4KCVBJQ1RZUEVfTk9ORSBoYXMgd2lkdGgvaGVpZ2h0IDAuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJTGV0IEFOSU1BVEVfT3BlbkEgcmV0dXJuIEZBTFNFICg9IGZhaWx1cmUpIHVwb24gYSByZXF1ZXN0IHRvIGNsb3NlIGEKCXByZXZpb3VzbHkgb3BlbmVkIEFWSSBjbGlwIHdoZW4gdGhlcmUgaXNuJ3Qgb25lLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJSW5jcmVtZW50IGxvZyBvdXRwdXQgZnJvbSAyMDAgbGluZXMgdG8gMzAwMCBsaW5lcy4KCUFkZGVkIFdpbiBYUCBhcyBhIGxpc3RlZCBXaW5kb3dzIHZlcnNpb24uCgoJKiBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeCBvZmZfdCBjYXN0IHRoYXQgYnJlYWtzIEZyZWVCU0QuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywgaW5jbHVkZS93aW5lL3Rlc3QuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgV0lORVRFU1RfSU5URVJBQ1RJVkUuIElmIHNldCB0aGVuIHRlc3RzIGNhbiBwZXJmb3JtCglhZGRpdGlvbmFsIGV4cGxpY2l0bHkgaW50ZXJhY3RpdmUgdGVzdHMuCglNb2RpZnkgdGhlIHdpbm1tIHRlc3QgdG8gdXNlIFdJTkVURVNUX0lOVEVSQUNUSVZFLgoKCSogZGxscy9vbGUzMi9iaW5kY3R4LmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUlCaW5kQ3R4OjpSZWdpc3Rlck9iamVjdFBhcmFtIGlzIHN1cHBvc2VkIHRvIHJlcGxhY2UgdGhlIG9sZCB2YWx1ZSBpZgoJdGhlIGtleSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5oOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVZhbGlkYXRlIGltYWdlbGlzdHMgd2l0aCBjaHJpc3RtYXMgbWFnaWMuCgoJKiBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvbnRkbGwvdGVzdHMvZXJyb3IuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IG1hcHBpbmcgb2YgU1RBVFVTX0RFVklDRV9OT1RfQ09OTkVDVEVEIHRvIG1hdGNoIFhQLgoJRml4ZWQgdGhlIHByb3RvdHlwZSBvZiBzdGF0dXN0b2Rvc2Vycm9yIHRvIG1ha2UgdGhlIHRlc3Qgd29yayBvbiBOVDQuCglBZGRlZCBhbHRlcm5hdGUgcmV0dXJuIHZhbHVlcyB0byBtYWtlIHRoZSB0ZXN0IHdvcmsgb24gV2luOTguCglDaGVjayB3aGV0aGVyIFJ0bE50U3RhdHVzVG9Eb3NFcnJvciBpc21pc3NpbmcgdG8gbWFrZSB0aGUgdGVzdCB3b3JrIG9uCglXaW45NS4KCUFkZGVkIGEgc3RyaWN0IG9wdGlvbiB0byBjYXVzZSB0aGUgdGVzdCB0byBvbmx5IGFjY2VwdCB0aGUgc3RhbmRhcmQKCW1hcHBpbmcuCgoJKiBkbGxzL29sZWF1dDMyL3Rlc3RzL3ZhcnRlc3QuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgdW5uZWNlc3Nhcnkgc3ByaW50ZiBjYWxscy4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgdGhlIC1GIG9wdGlvbiB0byBzZXQgYSBETEwncyBmaWxlbmFtZS4KCgkqIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglEZWZhdWx0IHRvICRQJEcgcHJvbXB0LiAgTWFrZSB3aWR0aCBvZiBkYXRlIDEwIGNoYXJhY3RlcnMgdG8gYWxpZ24KCWRhdGUgY29sdW1uIHdpdGggREFURV9TSE9SVERBVEUgZm9ybWF0LgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglVc2UgdGhlIGxvY2FsZSBpZCB3ZSBjcmVhdGVkIGluc3RlYWQgb2YgdGhlIHN5c3RlbSBvciB1c2VyIGRlZmF1bHQsCglvdGhlcndpc2Ugc29tZSB0ZXN0cyBhcmUgYnJva2VuIG9uIHN5c3RlbXMgd2hlcmUgdGhpbmdzIGFyZW4ndAoJZW5nbGlzaC91cy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncy4KCjIwMDItMTItMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogRml4ZWQgcXVvdGluZyBpbiBJTlNUQUxMIGNoZWNrLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwKCSAgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jOgoJUGFzcyB0aGUgY29ycmVjdCBpbnN0YW5jZSB3aGVuIGluc3RhbGxpbmcgdGhlIG1vdXNlIGhvb2sgKHNwb3R0ZWQgYnkKCUxpb25lbCBVbG1lcikuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWN0dWFsbHkgdXNlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHdoZW4gQ2xlYXItaW5nCgktIHJlcGxhY2UgZ2xPcnRobyBieSBhIGhhbmQtYnVpbHQgbWF0cml4CgktIGZpeCBhcHBsaWNhdGlvbnMgZG9pbmcgU2V0VHJhbnNmb3JtICsgdXNpbmcgWFlaUkhXIHZlcnRpY2VzCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsCgkgIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZmFjdG9yaXplIENsZWFyIG1ldGhvZCBiZXR3ZWVuIFZpZXdwb3J0IGFuZCBEZXZpY2UKCS0gc29tZSBtb3JlIHJlbmRlcmluZyBzdGF0ZXMgaGFuZGxlZAoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcG9ydCB2aWV3cG9ydHMgdGhlIEQzRDcgd2F5LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgc29tZSBzdGVuY2lsIC8gRDNERGV2aWNlNyBjYXBhYmlsaXRpZXMuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBSRUFETUUsIGRvY3VtZW50YXRpb24vUkVBRE1FLmZyLAoJICBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOgoJSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglVcGRhdGVkIGRpcmVjdG9yeSBpbmZvIGluIERFVkVMT1BFUlMtSElOVFMsIGFuZCBJUkMgaW5mbyBpbiBzZXZlcmFsCglkb2N1bWVudHMuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uaCwKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNvbWJpbmUgdGV4dHVyaW5nIGZvciBEM0QzIGFuZCA3IGJ5IHRodW5raW5nIDMgdG8gNy4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1vdmUgdGhlIHRlc3Qgc3RyaW5ncyBpbnRvIHRoZWlyIG93biBhcnJheSBhbmQgY29udmVydCB0aGVtIHRvIHVuaWNvZGUKCXVzaW5nIGEgZm9yIGxvb3AuIFRoaXMgbGV0cyB1cyBsYXRlciBwcmludCB0aGUgb2ZmZW5kaW5nIHN0cmluZyB3aGVuIGEKCXRlc3QgZmFpbHMuCglGaXggdGhlIE1TVkMgY29tcGlsYXRpb24gZXJyb3IgKFhYWGUxODMpIGFuZCB3YXJuaW5ncyAocHV0IHN1ZmZpeGVzIGFzCglpbiAwTCAmIDEuMEYsIHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncywgcy8tMjE0NzQ4MzY0OC8weDgwMDAwMDAwTC8pLgoJVW5jb21tZW50IHRoZSBEYXRlRnJvbVN0ciB0ZXN0cyBhbmQgZmlsbCBpbiB0aGUgdG9kbyBmaWVsZHMgd2hlcmUKCWFwcHJvcHJpYXRlLgoJRGVmaW5lIGFuIE5CX09MRV9TVFJJTkdTIG1hY3JvIGFuZCB1c2UgaXQgdG8gbWFrZSBzdXJlIGFsbCB0aGUgYXJyYXlzCgloYXZlIHRoZSByaWdodCBudW1iZXIgb2YgZmllbGRzLgoJSW4gdGhlICpGcm9tU3RyIGxvb3BzLCBmaWxsIHRoZSByZXR1cm4gZmllbGQgd2l0aCBhIGR1bW15IHZhbHVlICg0MikKCWJlZm9yZSBjYWxsaW5nIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uLiBUaGlzIHdheSBhIHRlc3Qgbm8gbG9uZ2VyCglkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIHByZXZpb3VzIHRlc3QgZmFpbGVkIG9yIG5vdCEKCUlmIGEgdGVzdCBpcyBleHBlY3RlZCB0byBmYWlsLCB0aGVuIHJldHZhbCBpcyBtZWFuaW5nbGVzcyAtPiBvbWl0IGl0Cglmcm9tIHRoZSByZXN1bHQgYXJyYXlzLgoJSWYgYSB0ZXN0IGFjdHVhbGx5IGZhaWxzIG9yIHdhcyBleHBlY3RlZCB0byBmYWlsLCB0aGVuIHRoZXJlIGlzIG5vCglwb2ludCBpbiBjaGVja2luZyByZXR2YWwuCglJbXByb3ZlIGVycm9yIHJlcG9ydGluZy4KCVBhc3MgdGhlIHByaW50Zi1zdHlsZSBmb3JtYXQgZGlyZWN0bHkgdG8gb2ssIHJlbW92ZSB0aGUgdW5uZWNlc3NhcnkKCXNwcmludGZzLgoKCSogZGxscy9kZHJhdy9kM2Rjb21tb24uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUR1bXAgbmV3IEQzRDcgcmVuZGVyaW5nIHN0YXRlcy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZmFjdG9yaXplIHRoZSBEM0QxLzIgZHJhd19wcmltaXRpdmUgY29kZSB3aXRoIHRoZSBuZXcgc3RyaWRlZCBmdW5jdGlvbgoJLSByZXdyb3RlIGEgbGl0dGxlIGJpdCB0aGlzIHN0cmlkZWQgZnVuY3Rpb24gdG8gYWx3YXlzIHVzZSB0aGUgc3RhdGljCgkgIGZ1bmN0aW9ucwoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglNYWtlIHN1cmUgSU5TVEFMTCBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSB0b3AgZGlyIHdoZW4gdXNpbmcgdGhlCglzY3JpcHQgaW4gdG9vbHMvLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglUaGUgbmFtZSBvZiB0aGUgZHJpdmVyIHNob3VsZCBiZSB0aGUgMTYtYml0IG9uZSBpbiBjYXNlIHRoZSBhcHAgdHJpZXMKCXRvIGxvYWQgaXQuCgoJKiBkbGxzL3JwY3J0NC9jcHNmLmMsIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvcnBjcnQ0L3Rlc3RzL3JwYy5jLCBpbmNsdWRlL3JwY2RjZS5oOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBkZWZpbml0aW9ucyBmb3IgVXVpZHtUbyxGcm9tfVN0cmluZywgUnBjU3RyaW5nRnJlZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCB0aGUgZGVmaW50aW9uIG9mIHssTFB9Tk1fVFJFRVZJRVd7QSxXfS4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgYSBjb3VwbGUgbWlzc2luZyBtYWNyb3MuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlbW92ZSB1c2VsZXNzIEZJWE1FcyBzaW5jZSB0aGVyZSBpcyBub3RoaW5nIHRvIGRvIGluIEJlZ2luU2NlbmUgYW5kCglFbmRTY2VuZS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJVXBkYXRlIGFuZCBjbGVhbi11cCBkcmF3X3ByaW1pdGl2ZV9zdHJpZGVkXzcuCglNYWtlIGRyYXdfcHJpbWl0aXZlXzcgYmFzZWQgb24gZHJhd19wcmltaXRpdmVfc3RyaWRlZF83LgoKMjAwMi0xMi0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBtaXBtYXAgdGV4dHVyZSBjcmVhdGlvbgoJLSBzb21lIGxvZ2dpbmcgaW1wcm92ZW1lbnRzCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXggc21hbGwgVFJBQ0UgYnVnIGludHJvZHVjZWQgaW4gYSBwcmV2aW91cyBwYXRjaAoJLSBhZGQgV1JBUFUgLyBXUkFQViB3YXJuaW5nCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lcHMvd2luZXBzMTYuZHJ2LnNwZWMsIGRsbHMvd2luZXBzL3dpbmVwczE2LnNwZWM6Cgl3aW5lcHMxNi5kbGwgc2hvdWxkIGJlIG5hbWVkIC5kcnYuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvd2luZW9zcy5kcnYuc3BlYywKCSAgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWw6CglKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCUNvcnJlY3QgYWxsIGluc3RhbmNlcyBvZiBtaXhNZXNzYWdlIHRvIG14ZE1lc3NhZ2UuCgoJKiB0b29scy93aW5ld3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIGxpYnJhcnkgcGF0aCAoLUwpLgoJQWRkIHN1cHBvcnQgZm9yIGxpbmtpbmcgYWdhaW5zdCBzdGF0aWMgbGlicy4KCUlnbm9yZSAtVyBmb3IgZ2NjIGNvbXBhdGliaWxpdHkuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUhhdmUgdGhlICdMb2NrJyB3YXJuaW5nIGEgYml0IGNsZWFyZXIuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVJlcG9ydCB0aGF0IHdlIGRvIG5vdCBzdXBwb3J0IGNvbXByZXNzZWQgdGV4dHVyZSB5ZXQuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCByZXR1cm5pbmcgb2YgY2FwYWJpbGl0aWVzIGluIEZpbmREZXZpY2UKCS0gZmlsbCBwcm9wZXJseSBzb21lIGNhcHMgYWNjb3JkaW5nIHRvIHdoYXQgT3BlbkdMIGNhbiBkbwoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVmFyaWFudENoYW5nZVR5cGVFeCBmb3IgVlRfQVJSQVkgfCB0eXBlIHN0eWxlIHZhcmlhbnRzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLAoJICBkbGxzL29sZWF1dDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvb2xlYXV0MzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvc2FmZWFycmF5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIFZhckJzdHJDbXAvQ2F0IC5zcGVjIGVudHJpZXMuCglTdGFydGVkIHJlZ3Jlc3Npb24gdGVzdCBmb3IgU2FmZUFycmF5IGZ1bmN0aW9ucy4KCUZpeGVkIFNhZmVBcnJheUFsbG9jRGVzY3JpcHRvciAoY2hlY2sgYm91bmRzLCBzZXQgY0RpbXMpLgoJRml4ZWQgVkFSVFlQRV9TSVpFIGFycmF5IGVudHJpZXMgc28gaXQgbWF0Y2hlcyBuYXRpdmUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglSZXBvcnQgbW9kZSBwYWRkaW5nIHR3ZWFrcy4KCUZpeCB0byBMSVNUVklFV19HZXRTdWJJdGVtUmVjdC4KCgkqIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywKCSAgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYywgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglHZXQgcmlkIG9mIG9sZS5oLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvdW5rbnduLmgsCgkgIGluY2x1ZGUvdW5rbnduLmlkbCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1lcmdlIHRoZSByZXN0IG9mIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oIGludG8gaW5jbHVkZS9vYmpiYXNlLmguCgoJKiBkbGxzL2NvbWNhdC9jb21jYXQuaCwgZGxscy9jb21jYXQvY29tY2F0X21haW4uYywKCSAgZGxscy9jb21jYXQvY29tY2F0X3ByaXZhdGUuaCwgZGxscy9jb21jYXQvZmFjdG9yeS5jLAoJICBkbGxzL2NvbWNhdC9pbmZvcm1hdGlvbi5jLCBkbGxzL2NvbWNhdC9tYW5hZ2VyLmMsCgkgIGRsbHMvY29tY2F0L3JlZ2lzdGVyLmMsIGRsbHMvb2xlMzIvaWZzLmgsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsCgkgIGluY2x1ZGUvY29tY2F0Lmg6CglSZW1vdmVkIHNvbWUgcmVtYWluaW5nIHJlZmVyZW5jZXMgdG8gd2luZS9vYmpfYmFzZS5oLgoKCSogZmlsZXMvZHJpdmUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRFJJVkVfSW5pdDogVXNlIHN0cnRvdWxXIHRvIGluaXRpYWxpemUgdGhlIGRyaXZlIHNlcmlhbCBudW1iZXIuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl9wcml2YXRlLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNldmVyYWwgYnVnczoKCSAtIHdyb25nIGRyYXdpbmcgZm9yIGNoYXJzIG91dHNpZGUgdGhlIDIwLTdGIHJhbmdlCgkgLSBjb25zb2xlIG1vdXNlIGV2ZW50IGdlbmVyYXRpb24KCSAtIGNvbnNvbGUgQWx0LT8gY2hhciBldmVudCBnZW5lcmF0aW9uCglQcmVmaXggZm9yIGN1cnNlcyBmdW5jdGlvbnMgaXMgbm93IFdDQ1VSU0VTXyBpbnN0ZWFkIG9mIFdDQ1VSU0VfLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJUXVlcnkgb3BlbmdsIHRvIGVuc3VyZSBpdCBzdXBwb3J0cyBtdWx0aXRleHR1cmUsIGFuZCBob25vdXIgdGhlIG51bWJlcgoJb2Ygc3VwcG9ydGVkIHRleHR1cmUgdW5pdHMuIEVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciBOVmlkaWEgZHJpdmVycwoJd2hpY2ggb25seSBzdXBwb3J0IDIgdGV4dHVyZSB1bml0cy4KCgkqIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IERpcmVjdDNEMiA9PiBEaXJlY3QzRDMgdGh1bmsgZm9yIEZpbmREZXZpY2UuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL29haWRsLmg6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJV2hlcmUgSUNPTSBtYWNyb3MgYXJlIG5lZWRlZCwgaW5jbHVkZSBvYmpiYXNlLmguCgoJKiBpbmNsdWRlL29sZWF1dG8uaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgR2V0QWN0aXZlT2JqZWN0IGRlY2xhcmF0aW9uLgoKCSogaW5jbHVkZS9zaGxvYmouaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgTFBEUk9QRklMRVMgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglERVZNT0RFIHN0cnVjdHVyZSB1c2VzIHNob3J0IG5vdCBTSE9SVCBmb3IgaXRzIGZpZWxkcy4KCjIwMDItMTItMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMjEyMTkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMTItMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglEb24ndCBpZ25vcmUgc3ByaW50Zi9zc2NhbmYgaW1wb3J0cywgc2VtYW50aWNzIGFyZSBub3QgZXhhY3RseSB0aGUKCXNhbWUgb24gV2luZG93cy4KCgkqIGRsbHMvbXN2Y3J0L3NjYW5mLmgsIGRsbHMvbXN2Y3J0L3Rlc3RzL3NjYW5mLmM6CglIYW5kbGUgdW5rbm93biBmb3JtYXQgY2hhcnMgY29ycmVjdGx5IChzcG90dGVkIGJ5IEd59nJneSAnTm9nJwoJSmVuZXkpIGFuZCBhZGRlZCB0ZXN0IGZvciBpdC4KCVJlbW92ZWQgdW5uZWVkZWQgX0xfIG1hY3JvLgoKCSogZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJTW9yZSBpbmZvcm1hdGlvbiBvbiBzdHlsZSBhbmQgZm9ybWF0IG9mIHBhdGNoZXMuCgoJKiBNYWtlLnJ1bGVzLmluLCBsaWJyYXJ5L01ha2VmaWxlLmluLCB1bmljb2RlL01ha2VmaWxlLmluOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSAtLWFkZC1zdGRjYWxsLWFsaWFzIGZsYWcuCgoJKiB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvbWluZ3dyYXAuYywgdG9vbHMvd2luZWdjYy5jOgoJUmVuYW1lZCBtaW5nd3JhcCB0byB3aW5lZ2NjLgoJUmVtb3ZlZCAtRFdJTkVfREVGSU5FX1dDSEFSX1QuCgoJKiB0b29scy93cHAvd3BwLmM6IFRhcGlvIEthdXR0byA8ZWxla25hZGVyQHBobmV0LmZpPgoJRml4IGZvciBtaXNzaW5nIHBwZGVidWcgdmFyaWFibGUuCgoJKiBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGUzMi9tYXJzaGFsLmMsIGRsbHMvb2xlMzIvb2xlMTYuYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLAoJICBkbGxzL29sZTMyL3JwYy5jOgoJRml4ZWQgYSBmZXcgcHJvYmxlbXMgY2F1c2VkIGJ5IHRoZSBuZXcgb2JqaWRsLmlkbC4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCBtaXNzaW5nIEdldFdpbk1ldGFGaWxlQml0cygpIGRlY2xhcmF0aW9uLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vYmppZGwuaWRsLAoJICBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaCwgaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaCwKCSAgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHlzdG9yYWdlLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglXcm90ZSBhIG5ldyBvYmppZGwuaWRsIHRvIHJlcGxhY2UgYSBudW1iZXIgb2YgaW5jbHVkZS93aW5lL29ial8qLmgKCWZpbGVzLgoKCSogZGxscy9jYWJpbmV0L01ha2VmaWxlLmluLCBkbGxzL2NhYmluZXQvY2FiZXh0cmFjdC5jLAoJICBkbGxzL2NhYmluZXQvY2FiaW5ldC5oLCBkbGxzL2NhYmluZXQvY2FiaW5ldC5zcGVjLAoJICBkbGxzL2NhYmluZXQvY2FiaW5ldF9tYWluLmMsIGRsbHMvY2FiaW5ldC9mZGkuYywKCSAgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL3Vtb24uYywKCSAgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIHdpbmVkZWZhdWx0LnJlZzoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBwb3J0IGNhYmV4dHJhY3QgdG8gd2luZQoJLSBpbXBsZW1lbnQgY2FiaW5ldC5kbGwuRXh0cmFjdCwgdXJsbW9uLmRsbC5FeHRyYWN0CgktIGFkZCBTUDZhIHJlZ2lzdHJ5IGtleSB0byB3aW5lZGVmYXVsdC5yZWcKCgkqIGRsbHMvbnRkbGwvdGVzdHMvcnRsc3RyLmM6IEF2b2lkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG1jaGVoYWJAYnJ0dXJiby5jb20+CglJbmNsdWRlZCBhIHNwZWNpZmljIEFCTlQtMiBzY2FuIGFuZCB2a2V5IHRhYmxlcywgYW5kIGFuIEFCTlQtMgoJa2V5Ym9hcmQgd2l0aCA8QUxUPjxHUj4ga2V5IGNvZGVzLgoKCSogaW5jbHVkZS93aW5lL29ial9taXNjLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLAoJICBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1vdmVkIGEgY291cGxlIG9mIHR5cGVzIGZyb20gaW5jbHVkZS93aW5lL29ial8qLmggdG8KCWluY2x1ZGUvd3R5cGVzLmlkbC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBkZWZpbmVzIGZvciBMVl9JVEVNLCBMVl9ESVNQSU5GTywgYW5kIExWX0ZJTkRJTkZPLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZm9ybWF0X21zZy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU9uIFdpbjl4ICJoaVxuIiBnaXZlcyB1cyAiaGlcclxuIi4KCgkqIGluY2x1ZGUvd2lubnQuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBkZWZpbml0aW9ucyBmb3IgTltXXVBTVFIuCglBZGQgYSBidW5jaCBvZiBTRV8qIGRlZmluaXRpb25zLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglBZGQgYWRkaXRpb25hbCB0ZXN0cyBmb3IgR2V0VGltZUZvcm1hdCgpIGFuZCBHZXREYXRlRm9ybWF0KCkuCglVbmNvbW1lbnQgd2luZV90b2RvIHRlc3RzIHRoYXQgbm93IHN1Y2NlZWQgd2l0aCBmaXhlcyB0bwoJR2V0VGltZS9EYXRlRm9ybWF0KCkuCgoJKiBpbmNsdWRlL3dpbm5scy5oLCBvbGUvb2xlMm5scy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJR2V0RGF0ZUZvcm1hdCgpIGFuZCBHZXRUaW1lRm9ybWF0KCkgc2hvdWxkIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUKCXRpbWUvZGF0ZSBzdHJ1Y3R1cmUgaXQgaXMgcHJvY2Vzc2luZy4KCUFkZCBjb21tZW50cyB0byBkZXNjcmliZSBmbGFncyBiZWhhdmlvci4KCUFkZCBzdXBwb3J0IGZvciBUSU1FX0ZPUkNFMjRIT1VSRk9STUFULCBUSU1FX05PTUlOVVRFU09SU0VDT05EUywKCVRJTUVfTk9TRUNPTkRTIGFuZCBUSU1FX05PVElNRU1BUktFUi4KCUFkZCBjaGVjayBpbiBHZXREYXRlRm9ybWF0VygpIGZvciBpbnZhbGlkIGZsYWcgY29tYmluYXRpb25zLgoJQWRkZWQgc29tZSBtaXNzaW5nIERBVEVfKiBkZWZpbmVzIHRvIHdpbm5scy5oLgoJQmVoYXZpb3IgdmVyaWZpZWQgYWdhaW5zdCBOVDQuMC4KCgkqIGRsbHMvbXN2Y3J0L2N0eXBlLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZGlyLmMsCgkgIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tYmNzLmMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9zY2FuZi5jLCBkbGxzL21zdmNydC9zY2FuZi5oLAoJICBkbGxzL21zdmNydC93Y3MuYzoKCVVzZSBNU1ZDUlRfd2NoYXJfdCBpbnN0ZWFkIG9mIFdDSEFSIHNvIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIG1hdGNoZXMKCXRoZSBwcm90b3R5cGVzLgoKCSogdG9vbHMvd21jL21jeS55OiBBdm9pZCByZWZlcmVuY2luZyBwb3RlbnRpYWxseSBmcmVlZCB0b2tlbi4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglJbXBsZW1lbnRlZCBVcmxDcmVhdGVGcm9tUGF0aFtBV10gYW5kIHNsaWdodGx5IHJlbGF0ZWQKCVBhdGhDcmVhdGVGcm9tRmlsZUEuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglTdHViIGZvciBHZXRTZWN1cml0eUluZm9FeFcoKS4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvYWNjY3RybC5oOiBBZGRlZCBhY2NjdHJsLmggaGVhZGVyLgoKCSogdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgdGhlIC1MIHdyYyBvcHRpb24sIGFzIG5vIGF1dG9tYXRpYyBmdWRnaW5nIG9mIGZpbGVuYW1lcyBjYW4KCWV2ZXIgYmUgY29ycmVjdC4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3BhaW50aW5nLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXBkYXRlV2luZG93IHJldHVybnMgYSBCT09MZWFuLgoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2hlbHBlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHN1cmZhY2UgZHVtcGluZyBmdW5jdGlvbiBmb3IgZGVidWcuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aW1lLmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50YXRpb24gb2YgU3lzdGVtVGltZVRvVHpTcGVjaWZpY0xvY2FsVGltZSgpIGFuZAoJVHpTcGVjaWZpY0xvY2FsVGltZVRvU3lzdGVtVGltZSgpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW50cm9kdWNlZCBzb21lIGRlY2xhcmF0aW9ucyBhbmQgcmVzb3VyY2VzIG5lZWRlZCBmb3IgYSBtb3JlIGNvbXBsZXRlCglpbXBsZW1lbnRhdGlvbiBvZiBTSEZpbGVPcGVyYXRpb24uCgoJKiBvbGUvb2xlMm5scy5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglDb21wYXJlU3RyaW5nVyBzaG91bGQgcmV0dXJuIDAgd2hlbiBvbmUgb2YgdGhlIHByb3ZpZGVkIHN0cmluZ3MgaXMgYQoJTlVMTCBwb2ludGVyLgoKCSogZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL2RkZS9taXNjLmMsIGluY2x1ZGUvZGRlbWwuaDoKCUxQQ09OVkNPTlRFWFQgc2hvdWxkIGJlIFBDT05WQ09OVEVYVCAoc3BvdHRlZCBieSBEaW1pdHJpZSBPLiBQYXVuKS4KCVNhbWUgZm9yIExQSFNaUEFJUiBhbmQgTFBDT05WSU5GTy4KCgkqIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1vdmVkIHNvbWUgZGVmaW5pdGlvbnMgZnJvbSBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCB0bwoJZGxscy9vbGUzMi9tb25pa2VyLmguCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgdHlwby4KCgkqIGRsbHMvbmV0YXBpMzIvdGVzdHMvYWNjZXNzLmMsIGRsbHMvbmV0YXBpMzIvdGVzdHMvYXBpYnVmLmMsCgkgIGRsbHMvbmV0YXBpMzIvdGVzdHMvd2tzdGEuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJT24gV2luOXggbmV0YXBpMzIuZGxsIGRvZXMgbm90IGV4cG9ydCBhIHNpbmdsZSBBUEkgc28gd2UgZG8gYQoJR2V0UHJvY0FkZHJlc3MgZm9yIGVhY2ggb2YgdGhlbSBhbmQgc2tpcCB0aGUgdGVzdHMgd2hlbiBuZWNlc3NhcnkuCglPbiBXaW45eCBHZXRVc2VyTmFtZVcgYW5kIEdldENvbXB1dGVyTmFtZVcgYXJlIHN0dWJzLgoJSW1wcm92ZSBlcnJvciByZXBvcnRpbmcgaW4gYWNjZXNzLmMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hbGxvYy5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGVjbGFyZSBMb2NhbERpc2NhcmQgYW5kIEdsb2JhbERpc2NhcmQgKHVzZWQgYnkga2VybmVsL3Rlc3RzL2FsbG9jLmMpCglSZW1vdmUgdGhlIERJU0NBUkRfREVGSU5FRCAjaWZkZWZzLgoJUmVtb3ZlIGFub3RoZXIgZG91YmxlIEhlYXBGcmVlIChjYXVzZWQgYW4gYXNzZXJ0IHdoZW4gcnVuIG9uIE5UNCksCglhbmQgYSBIZWFwU2l6ZSBvbiBhIGZyZWVkIGhlYXAgKHRoZSB0ZXN0IGZhaWxlZCBvbiBXaW45eCkuCglGaXggdGhlIExvY2FsTG9jay9Mb2NhbFVubG9jayB0ZXN0cyAodGhlIG1lbW9yeSBtdXN0IGJlIGFsbG9jYXRlZAoJd2l0aCBMTUVNX01PVkVBQkxFIG90aGVyd2lzZSB0aGUgdGVzdHMgZG9uJ3QgbWFrZSBzZW5zZSkuCglSZW1vdmUgbWFueSB1bm5lY2Vzc2FyeSBjYXN0cy4KCUltcHJvdmVkIGVycm9yIHJlcG9ydGluZyBzb21ld2hhdC4KCjIwMDItMTItMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9mb3JtYXRfbXNnLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW1wcm92ZSBlcnJvciByZXBvcnRpbmcuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWxsIGZpbGVuYW1lcyBjb250YWluaW5nIGEgIjoiIGFyZSBpbnZhbGlkIG9uIFdpbjl4IGFuZCAyMDAwIGJ1dCBhcmUKCXZhbGlkIG9uIE5UNCAtPiByZW1vdmUgdGhlc2UgdGVzdHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJI2lmZGVmLW91dCBkZWNvZGVXIHNpbmNlIGl0IGlzIG5vdCB1c2VkIHlldC4KCUZpeCB0aGUgbHBEZXNrdG9wIGFuZCBscFRpdGxlIGNoZWNrcyBvbiBOVCBwbGF0Zm9ybXMuCgoJKiBkbGxzL3VzZXIvdGVzdHMvd3NwcmludGYuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+Cgl3c3ByaW50ZlcgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW45eCBwbGF0Zm9ybXMuCgl3c3ByaW50ZntBLFd9VGVzdCBzaG91bGQgYmUgdm9pZC4KCUltcHJvdmUgZXJyb3IgcmVwb3J0aW5nLgoJUmVtb3ZlIHVubmVjZXNzYXJ5ICNpbmNsdWRlcy4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9jbGlzdC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJVW5xdW90ZWQgc29tZSAxNi1iaXQgdHlwZXMsIHNvIHRoZSBJREwgY29tcGlsZXIgY2FuIHVzZSB0aGVtLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYXAgc3RyY2FzZWNtcCB0byBfc3RyaWNtcC4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1vdmVkIENPTSBBUEkgcHJvdG90eXBlcyB0byBvYmpiYXNlLmgsIGZyb20gd2luZS9vYmpfKi5oLgoKCSogZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgb2xlL3V1aWQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVtb3ZlZCBhIGZldyBtb3JlIGluY2x1c2lvbnMgb2YgZGVwcmVjYXRlZCB3aW5lL29ial8qLmggaGVhZGVycy4KCgkqIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJTWFkZSBjcnRkbGwgYSBub3JtYWwgdXNlciBvZiBtc3ZjcnQgYnkgc2V0dGluZyB0aGUgcmlnaHQgaW5jbHVkZQoJcGF0aC4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL21zdmNydC9zY2FuZi5jLAoJICBpbmNsdWRlL21zdmNydC9jdHlwZS5oLCBpbmNsdWRlL21zdmNydC9kaXJlY3QuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvZG9zLmgsIGluY2x1ZGUvbXN2Y3J0L2VoLmgsIGluY2x1ZGUvbXN2Y3J0L2Vycm5vLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2lvLmgsIGluY2x1ZGUvbXN2Y3J0L2xvY2FsZS5oLAoJICBpbmNsdWRlL21zdmNydC9tYWxsb2MuaCwgaW5jbHVkZS9tc3ZjcnQvbWJjdHlwZS5oLAoJICBpbmNsdWRlL21zdmNydC9tYnN0cmluZy5oLCBpbmNsdWRlL21zdmNydC9wcm9jZXNzLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3NlYXJjaC5oLCBpbmNsdWRlL21zdmNydC9zZXRqbXAuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkZGVmLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLCBpbmNsdWRlL21zdmNydC9zdHJpbmcuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3RpbWViLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N5cy90eXBlcy5oLCBpbmNsdWRlL21zdmNydC9zeXMvdXRpbWUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvdGltZS5oLCBpbmNsdWRlL21zdmNydC93Y2hhci5oLAoJICBpbmNsdWRlL21zdmNydC93Y3R5cGUuaCwgaW5jbHVkZS93aW5udC5oOgoJQXZvaWQgaW5jbHVkaW5nIG90aGVyIGhlYWRlcnMgZnJvbSB0aGUgbXN2Y3J0IGhlYWRlcnMsIGR1cGxpY2F0ZSBzb21lCglkZWZpbml0aW9ucyBpbnN0ZWFkIGxpa2UgV2luZG93cyBkb2VzLgoJQWx3YXlzIGRlZmluZSB3Y2hhcl90IChzdWdnZXN0ZWQgYnkgRGltaXRyaWUgTy4gUGF1biksIGFuZCB1c2Ugd2NoYXJfdAoJZXZlcnl3aGVyZSBpbnN0ZWFkIG9mIFdDSEFSIHRvIGF2b2lkIGRlcGVuZGluZyBvbiBXaW5kb3dzIGhlYWRlcnMuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3NoYWRlci5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLCBkbGxzL2QzZDgvdm9sdW1ldGV4dHVyZS5jOgoJUmFwaGFlbCBKdW5xdWVpcmEgPGZlbml4QGNsdWItaW50ZXJuZXQuZnI+CgkgLSBzb21lIGZpeGVzIGluIENyZWF0ZURldmljZSBpbml0CgkgLSB2ZXJ0ZXggc2hhZGVyIGRlY2xhcmF0aW9uIHBhcnNlciAod2l0aCBvdXRwdXQgZHVtcCkgYW5kCgkgICBpbnRlcnByZXRhdGlvbiAoZ2VuZXJhdGUgdGhlIEZWRiBkZXNjcmlwdG9yIGZvciBwcm9ncmFtIGlucHV0KQoJIC0gdmVydGV4IHNoYWRlciBwcm9ncmFtIHBhcnNlciAod2l0aCBvdXRwdXQgZHVtcCkKCSAtIHNvZnR3YXJlIHZlcnRleCBzaGFkZXIgcHJvZ3JhbSBlbXVsYXRpb24KCgkqIGluY2x1ZGUvZDNkOHR5cGVzLmg6IFJhcGhhZWwgSnVucXVlaXJhIDxmZW5peEBjbHViLWludGVybmV0LmZyPgoJQWRkZWQgc29tZSBuZWNlc3NhcnkgZGVmaW5pdGlvbnMgZm9yIEQzRDggVmVydGV4IGFuZCBQaXhlbCBzaGFkZXIKCXN1cHBvcnQuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzogQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglJZiBhIC5yZWcgZnVuY3Rpb24gaXMgYWNjZXNzZWQgdGhyb3VnaCBhIHN5bWxpbmsgdGhlbiB3cml0ZSBkaXJlY3RseQoJdG8gdGhlIGZpbGUgcmF0aGVyIHRoYW4gcmVwbGFjaW5nIGl0IHdpdGggYSB0ZW1wIGZpbGUuICBUaGlzIHByZXNlcnZlcwoJb3duZXJzaGlwIGFuZCBwZXJtaXNzaW9ucy4KCgkqIGRsbHMvbnRkbGwvdGltZS5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglJbXBsZW1lbnRlZCBSdGxUaW1lVG9FbGFwc2VkVGltZUZpZWxkcy4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IGluIGFub3RoZXIgcGxhY2UgaW4gdGhlIGNvZGUgY29tcHV0aW5nIHRoZSBtZW1vcnkgdXNhZ2UuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbiwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVB1cmdlIHRyYWNlcyBvZiB0aGUgb2xkIHJlbGF5IGRlYnVnIG1lY2hhbmlzbSBhbmQgZG9jdW1lbnQgbmV3CgltZWNoYW5pc20gYmV0dGVyLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvYXRvbS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvZW52aXJvbi5jLCBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYywgZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2Ugc3RybGVuIG9yIGxzdHJsZW5BIGFzIGFwcHJvcHJpYXRlIHRvIGF2b2lkIHNpZ25lZC91bnNpZ25lZAoJd2FybmluZ3MuCgoJKiB0b29scy93aW5hcGkvbXN2Y21ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZSBsaW5rIGNvbW1hbmQgc3BlY2lmaWVzIHdoaWNoIHZlcnNpb24gb2YgdGhlIEMgbGlicmFyeSB0byBsaW5rIHdpdGgKCShzZWUgL01bVERdZD8gb3B0aW9uKS4gU28gd2UgbXVzdCBub3QgZXhwbGljaXRseSBsaW5rIHdpdGgKCSdtc3ZjcnQubGliJy4gRml4ZXMgdGhlIG1zdmNydCB0ZXN0IGNyYXNoZXMuCgoJKiBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3JwY2RjZS5oOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1vdmVkIFVVSUQgdHlwZSB0byBycGNkY2UuaCwgYXMgaW4gdGhlIE1TIFJQQyBoZWFkZXJzLgoJUmVtb3ZlZCByZWR1bmRhbnQgcHJvdG90eXBlLgoKMjAwMi0xMi0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9wZV9pbWFnZS5jOiBEZWJ1ZyBjaGFubmVscyBjbGVhbnVwLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgaW5jbHVkZS90aHJlYWQuaCwKCSAgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwgc2NoZWR1bGVyL2ZpYmVyLmM6CglJbXBsZW1lbnRlZCB0aGUgRmliZXIqIGZ1bmN0aW9ucyAod2l0aCB0aGUgaGVscCBvZiBIdXcgRGF2aWVzKS4KCgkqIGluY2x1ZGUvdW5rbnduLmgsIHRvb2xzL3dpZGwvaGVhZGVyLmM6CglGaXggdGhlIHR5cGUgb2YgdGhlIFRoaXMgcG9pbnRlciBpbiB0aGUgdnRibCBmdW5jdGlvbnMgaW5oZXJpdGVkIGZyb20KCXRoZSBiYXNlIGNsYXNzLgoKCSogZGxscy93aW5pbmV0L3Rlc3RzL2h0dHAuYzogRml4ZWQgd2FybmluZ3MuCgoJKiBzZXJ2ZXIvaG9vay5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglUaGUgaGFuZGxlciBmb3IgdGhlIHNlcnZlciBtZXNzYWdlIGdldF9uZXh0X2hvb2sgd2FzIHJldHVybmluZyB0aGUKCW1vZHVsZSBuYW1lIG9mIHRoZSBjdXJyZW50IGhvb2ssIGluc3RlYWQgb2YgdGhlIG5leHQgb25lLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkZWQgc3R1YnMgZm9yIHtTdGFydCxFbmR9e0RvYyxQYWdlfVByaW50ZXIuCgoJKiBjb250cm9scy9zY3JvbGwuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCU5lZWQgdG8gaW5pdGlhbGl6ZSB0cmFja2luZyB2YWx1ZSBvbiBtb3VzZWRvd24uCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2Y3J0L3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL21zdmNydC90ZXN0cy9maWxlLmM6CglCaWxsIEN1cnJpZSA8YmlsbEB0YW5pd2hhLm9yZz4KCWZkb3BlbjogZG9uJ3QgcmV3aW5kIHRoZSBmaWxlIGFmdGVyIGNyZWF0aW5nIHRoZSBGSUxFKiBoYW5kbGUuIEFkZGVkCgl1bml0IHRlc3QgZm9yIHRoYXQuCgoJKiBjb250cm9scy9tZW51LmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCVNldCB0aGUgT0RTX0RJU0FCTEVEIGJpdCB3aGVuIHRoZSBpdGVtIGlzIGdyYXllZC4KCgkqIHRvb2xzL3dpbmV3cmFwLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglCZXR0ZXIgaGFuZGxpbmcgb2YgZXJyb3JzIHdoaWxlIGZvcmsvZXhlY2luZy4KCUFkZCB2ZXJib3NlIGNvbW1hbmQgbGluZSBzd2l0Y2guCglBZGQgLXogZGVmcyBhdCBsaW5rIHN0YWdlLCB0byBjYXRjaCBtaXNzaW5nIHN5bWJvbHMuCgoJKiB0b29scy9taW5nd3JhcC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUGFzcyB0aGUgZ3VpIGZsYWcgdG8gd2luZXdyYXAgaWYgd2UncmUgbGlua2luZyBhIEdVSSBhcHAuCgoJKiBkb2N1bWVudGF0aW9uL2NvbXBpbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbDoKCUJpbGwgTWVkbGFuZCA8YmlsbG1lZGxhbmRAbWVyY3VyeXNwZWVkLmNvbT4KCU1vdmUgQ1ZTIGRvY3UgZnJvbSBVc2VyIEd1aWRlIHRvIERldmVsIEd1aWRlLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSWYgd2Ugc3VwcG9ydCAnbm9uLW5hdGl2ZScgdGV4dHVyZSBmb3JtYXQsIGFkdmVydGlzZSBpdC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVRoZSBzaW1wbGUgYml0cyBvZiBmb2cuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW50YWIzMi8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbnRhYjMyL01ha2VmaWxlLmluLCBkbGxzL3dpbnRhYjMyL2NvbnRleHQuYywKCSAgZGxscy93aW50YWIzMi9tYW5hZ2VyLmMsIGRsbHMvd2ludGFiMzIvd2ludGFiLnNwZWMsCgkgIGRsbHMvd2ludGFiMzIvd2ludGFiMTYuYywgZGxscy93aW50YWIzMi93aW50YWIzMi5zcGVjLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3BrdGRlZi5oLCBpbmNsdWRlL3dpbnRhYi5oLAoJICBpbmNsdWRlL3dpbnRhYnguaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc3R1YnMgZm9yIFdJTlRBQnssMzJ9LkRMTCAodXNlZCBieSBtYW55IGltcG9ydGFudCBkcmF3aW5nCglhcHBsaWNhdGlvbnMgZm9yIHN1cHBvcnRpbmcgdGFibGV0cykuCgoJKiBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJQWRkIHN0YW5kYXJkIGRpc3BhdGNoIGltcGxlbWVudGF0aW9uIChDcmVhdGVTdGREaXNwYXRjaCkuCgoJKiBpbmNsdWRlL3dpbmUvdGVzdC5oOiBUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJRGlyZWN0IHRoZSBvdXRwdXQgb2YgdGhlIHRlc3RzIHRvIHN0ZG91dCBzbyB0aGF0IFdpbjk4IGNhbiByZWRpcmVjdAoJdGhlIG91dHB1dCB0byBhIGZpbGUuCgoJKiBkbGxzL25ldGFwaTMyL2FjY2Vzcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTmV0VXNlckdldEluZm86IGltcGxlbWVudGVkIExldmVsIDEuCgoJKiBvbGUvTWFrZWZpbGUuaW4sIG9sZS9keDhndWlkLmMsIG9sZS9keGd1aWQuYywgb2xlL3V1aWQuYzoKCVNwbGl0IERpcmVjdFggR1VJRHMgdG8gc2VwYXJhdGUgZmlsZXMgdG8gYXZvaWQgaGVhZGVyIGNvbmZsaWN0cy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZDNkOC9iYXNldGV4dHVyZS5jLCBkbGxzL2QzZDgvY3ViZXRleHR1cmUuYywKCSAgZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYywgZGxscy9kM2Q4L2luZGV4YnVmZmVyLmMsIGRsbHMvZDNkOC9zaGFkZXIuYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYywgZGxscy9kM2Q4L3N3YXBjaGFpbi5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLAoJICBkbGxzL2QzZDgvdmVydGV4YnVmZmVyLmMsIGRsbHMvZDNkOC92b2x1bWUuYywgZGxscy9tYWtlX2RsbHMsCgkgIGRsbHMvZDNkeDgvLmN2c2lnbm9yZSwgZGxscy9kM2R4OC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kM2R4OC9kM2R4OC5zcGVjLCBkbGxzL2QzZHg4L2QzZHg4X21haW4uYywKCSAgZGxscy9kM2R4OC9kM2R4OGNvcmVfcHJpdmF0ZS5oLCBkbGxzL2QzZHg4L2QzZHhidWZmZXIuYywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9kM2Q4LmgsIGluY2x1ZGUvZDNkOHR5cGVzLmgsCgkgIGluY2x1ZGUvZDNkeDhjb3JlLmg6CglSYXBoYWVsIEp1bnF1ZWlyYSA8ZmVuaXhAY2x1Yi1pbnRlcm5ldC5mcj4KCS0gc29tZSBEM0Q4IGZpeGVzCgktIGJlZ2lubmluZyBvZiBzaGFkZXJzIHN1cHBvcnQgKFZlcnRleCBhbmQgUGl4ZWwgU2hhZGVycyAxLjEgb24KCSAgRGlyZWN0WDgpCgktIGJlZ2lubmluZyBvZiBEM0RYOCBzdXBwb3J0IHRoZSBEM0Q4IHV0aWxpdHkgQVBJICh2ZXJ5IGJhc2ljLCBvbmx5CgkgIHRoZSBjb3JlIGhlYWRlcikKCjIwMDItMTItMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3Vua253bi5oLCBpbmNsdWRlL3Vua253bi5pZGwsCgkgIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglXcm90ZSBhIFdpbmUtY29tcGF0aWJsZSB1bmtud24uaWRsLCBtb3ZpbmcgdGhlIElVbmtub3duIGRlZmluaXRpb24KCWZyb20gd2luZS9vYmpfYmFzZS5oIHRvIHRoZSBnZW5lcmF0ZWQgdW5rbnduLmguCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUNoYW5nZSBjYWxscyB0byBDTFNJREZyb21TdHJpbmcgdG8gU0hDTFNJREZyb21TdHJpbmdXIGV4Y2VwdCBpbgoJU0hDTFNJREZyb21TdHJpbmdXIGZvciB0aGUgdGltZSBiZWluZy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgaW5jbHVkZS93aW5iYXNlLmg6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGFjdHVhbGx5IHVzZSBQTFVJRAoJLSBpbml0aWFsaXplIHRoZSBvdXRib3VuZCBscEx1aWQgdmFyaWFibGUgd2l0aCBib2d1cyB2YWx1ZXMKCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGZpeCBiYWQgVFJBQ0UKCS0gZml4ZWQgY29tcHV0YXRpb24gb2YgbWVtb3J5IHVzZWQgYnkgYSB0ZXh0dXJlCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSByZXZlcnQgc29tZSBvcHRpbWlzYXRpb25zIGJyZWFraW5nIHNvbWUgZ2FtZXMKCS0gYWRkZWQgYSBuZXcgdGV4dHVyZSBmb3JtYXQgKDQ0NDQgQVJHQikKCS0gZml4ZWQgdGhlIGNvbXB1dGF0aW9uIG9mIGNvbG9ycwoJLSBhZGRlZCBuZXcgcmVuZGVyIHN0YXRlcyBhbmQgZm9nIHN1cHBvcnQgKE5PVCBoYW5kbGVkIHlldCBmb3IKCSAgdHJhbnNmb3JtZWQgdmVydGljZXMpCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIERyYXdQcmltaXRpdmVTdHJpZGVkIGFuZCBEcmF3SW5kZXhQcmltaXRpdmVTdHJpZGVkLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeCBhIG1lbW9yeSBsZWFrIGFuZCBvcHRpbWl6ZSBhIGxpdHRsZSBiaXQgdGhlIGdlbmVyaWMgcGF0aC4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcHJvdmUgdHJhY2VzICsgc21hbGwgZml4LgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IFR3aXN0IGRlbW8KCS0gc29tZSBjbGVhbi11cHMgLyB0cmFjZXMKCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywKCSAgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkIGNvbmZpZy5oL3BvcnQuaCB0byBhbGxvdyBjb21waWxhdGlvbi9saW5raW5nIGluIE1TVkMuCglGaXggc29tZSB1bnNpZ25lZC9zaWduZWQgd2FybmluZ3MuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCS0gSW1wbGVtZW50IG9yZGluYWxzIDE2NyBhbmQgMTcxLgoJLSBBZGQgc3R1YnMgZm9yIG9yZGluYWxzIDI4MiBhbmQgNDA2LgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglNYWtlIHNvbWUgc2hlbGwzMiBmaWxlcyBjb21waWxlIGluIE1TVkMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRG8gYXQgbGVhc3Qgc29tZXRoaW5nIGZvciBTSERyYWdEcm9wIGZ1bmN0aW9ucyBhbHRob3VnaCB0aGF0IGlzbid0IHRoZQoJY29tcGxldGUgb3BlcmF0aW9uLgoKCSogZGxscy9zaGVsbDMyL2RlYnVnaGxwLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUFkZCBkZWJ1ZyBpbmZvIGZvciBJRXh0cmFjdEljb25XLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglTdXBwb3J0cyB0aGUgQUxQSEFGVU5DIGFuZCBBTFBIQVJFRiByZW5kZXJpbmcgc3RhdGVzLgoKCSogdG9vbHMvbWFrZV9jdGVzdHM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglPbiBXaW5kb3dzIHdpbmRlZi5oIG11c3QgYmUgaW5jbHVkZWQgYmVmb3JlIHdpbmJhc2UuaC4KCgkqIGRsbHMvd2lubW0vdGVzdHMvd2F2ZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRoZSBjYXBhY2l0eSBvZiBwbGF5aW5nIGEgdGVzdCB0b25lIHVzaW5nIHRoZSAncGxheScgb3B0aW9uLgoJRmFjdG9yaXplIHRoZSByZWd1bGFyIGFuZCBXQVZFX0ZPUk1BVF9ESVJFQ1QgdGVzdHMuCglUZXN0IHRoZSBuZXcgNDggYW5kIDk2a0h6IGZvcm1hdHMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglGaXggYW4gQS9XIHN0cnVjdHVyZSBzaXplIGJ1ZyBpbiBEcmF3Q2FwdGlvblRlbXBXKCkuCgoJKiB0b29scy9ydW50ZXN0OiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkICctLScgb3B0aW9uIGZvciBwYXNzaW5nIGV4dHJhIGFyZ3VtZW50cyB0byB0aGUgdGVzdC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCVNlcGFyYXRlIFhTaG0gdXNpbmcgY29kZS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYywgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5oLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gbGlua3MgY2FuIG5vdyBzcHJlYWQgYWNyb3NzIHNldmVyYWwgZWxlbWVudHMKCS0gbGluayBpbmZvcm1hdGlvbiBpcyBub3cgc2hhcmVkIGJldHdlZW4gZmlsZSAmIHByZXNlbnRhdGlvbgoJLSBmaXJzdCB0cnkgYXQgaGFuZGxpbmcgbWV0YWZpbGVzCgoJKiBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgaXNzdWVzIHdpdGggdGhlIGdkYiBwcm94eS4KCgkqIGRsbHMva2VybmVsL2NvbW0uc3BlYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgc29tZSBXaW4zLjEgZXhwb3J0IHN0dWJzLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIHNwZWxsaW5nIGNvcnJlY3Rpb25zCgktIHByb3Blcmx5IGRvY3VtZW50IGhvdyB0byBzZXQgdGhlIERPUyBQQVRICgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJSW1wbGVtZW50ZWQgVmFyT3IoKS4KCgkqIGRsbHMvZGRyYXcvbWVzYS5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkIHN1cHBvcnQgZm9yIHRoZSBUZXh0dXJlQWRkcmVzcyByZW5kZXIgc3RhdGUuCgoyMDAyLTEyLTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC93aWRsLmMsCgkgIHRvb2xzL3dpZGwvd2lkbC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglPdXRwdXQgcmF3IElDT00tbGVzcyBDL0MrKyBpbnRlcmZhY2UgZGVmaW5pdGlvbnMgYnkgZGVmYXVsdC4gQWRkZWQgbmV3CgktYiBhbmQgLUIgY29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBJQ09NIG1hY3Jvcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglVcGRhdGVkIHdpbmVtYWtlciB0byBhY2NvdW50IGZvciBjaGFuZ2UgaW4gd2luZSdzIGxpbmtpbmcgbWV0aG9kLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLAoJICBkbGxzL3dpbm1tL3dpbm1tLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJbiB0aGUgbGF0ZXN0IHNkayB0aGUge3dhdmVPdXQsbWlkaU91dH17R2V0LFNldH1Wb2x1bWUgZnVuY3Rpb25zIHRha2UKCWEgaGFuZGxlIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBoYW5ndXAgY29uZGl0aW9uIGF0IHRoZSBlbmQgb2Ygc29tZSBwbGF5YmFjay4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUFkZGVkIHN1cHBvcnQgZm9yIGRlZmluaW5nIGZvcndhcmQgZnVuY3Rpb25zIGFzIHN0ZGNhbGwgc28gdGhhdCB3ZSBjYW4KCWdldCB0aGUgcHJvcGVyIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHN0ZGNhbGwgZGVjb3JhdGlvbi4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIGRsbHMvbWFrZV9kbGxzOgoJVXNlIGltcG9ydCBsaWJyYXJpZXMgd2hlbiBidWlsZGluZyB0ZXN0cyB0b28uIE1ha2Ugc3VyZSB0aGUgLmEKCWxpYnJhcmllcyBhcmUgYnVpbHQgZm9yIGNyb3NzdGVzdC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvTWFrZWZpbGUuaW4sIHRvb2xzL3dpZGwvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3BwL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW46CglBZGRlZCB5LnRhYi5bY2hdIHBzZXVkby1kZXBlbmRlbmNpZXMgdG8gZml4IHBhcmFsbGVsIG1ha2VzLgoKCSogZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsCgkgIGRsbHMvd2luZWRvcy9oaW1lbS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgZGxscy93aW5lZG9zL3JlbGF5LmMsCgkgIGRsbHMvd2luZWRvcy93aW5lZG9zMTYuc3BlYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBzdXBwb3J0IGZvciBEUE1JMzIuIE1ha2Ugd2luZWRvczE2LmRsbCB1bm5lY2Vzc2FyeS4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kM2R2ZXJ0ZXhidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCSAtIHJld29yayBob3cgdGV4dHVyaW5nIGlzIGRvbmUgaW4gdGhlIEQzRCBkcml2ZXIKCSAtIGFkZGVkIHRoZSBnZW5lcmljIHBhdGggZm9yIERyYXdQcmltaXRpdmUgQVBJIGluIEQzRCAzIC8gNwoKCSogdG9vbHMvbWluZ3dyYXAuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVRlYWNoIG1pbmd3cmFwIHRvIHVzZSB3aW5ld3JhcCB0byBkbyB0aGUgbGlua2luZywganVzdCBsaWtlIGdjYyB1c2VzCglsZCB0byBsaW5rIG9uIFVuaXguIEJhc2VkIGxvb3NlbHkgb24gYSB1Q2xpYiB1dGlsaXR5IGRldmVsb3BlZCBieQoJTWFudWVsIE5vdm9hIElJSS4KCgkqIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5ld3JhcC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNtYWxsIGNsZWFudXBzIHRvIG1hdGNoIGN1cnJlbnQgYnVpbGQgcHJvY2Vzcy4KCgkqIGRsbHMvbXN2aWRlby9kcmF3ZGliLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggYmFkIGxvZ2ljIGluID09IE5VTEwgdGVzdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkIHN1cHBvcnQgZm9yIFVuaWNvZGUgSUV4dHJhY3RJY29uIGNyZWF0aW9uIGluCglJU2hlbGxGb2xkZXItPkdldFVJT2JqZWN0T2YuCgoJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggY3Jhc2ggd2hlbiBjb25zdHJ1Y3RpbmcgQU5TSSBpbnRlcmZhY2UgcG9pbnRlciB0byBJRXh0cmFjdEljb24sCglmb3VuZCBieSBVd2UgQm9ubmVzLgoJQWRkIHNvbWUgdHJhY2VzIHRvIHRoZSBjb25zdHJ1Y3RvcnMuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3BhcnNlci5sLCB0b29scy93aWRsL3BhcnNlci55LAoJICB0b29scy93aWRsL3dpZGx0eXBlcy5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbmNsdWRlIGd1aWRkZWYuaCBpbiB3aWRsdHlwZXMuaC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSWYgdW5hYmxlIHRvIHNldCB0aGUgZGVzaXJlZCBmb3JtYXQsIE9TU19SYXdPcGVuRGV2aWNlIHNob3VsZCBjYWxsCglUUkFDRSwgbm90IEVSUi4KCgkqIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJT3VyIHJlc2FtcGxpbmcgYWxnb3JpdGhtIGlzIHF1aXRlIHByaW1pdGl2ZSBzbyB0cnkgc2ltcGxlIDgvMTYKCW1vbm8vc3RlcmVvIGNvbnZlcnNpb25zIGZpcnN0LiBPbmx5IHJlc2FtcGxlIGlmIHdlIGNhbm5vdCBhdm9pZCBpdC4KCgkqIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVc2Ugc2xpZ2hseSBtb3JlIGFjY3VyYXRlIGZvcm11bGEgZm9yIEM4MTYuCglXcmFwIGEgY291cGxlIG9mIGNvbW1lbnRzIHRvIDgwIGNvbHVtbnMuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYywgZGxscy93aW5tbS93aW5tbS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGdpdmVuIGEgYmFkIGRldmljZSBpZCB3YXZlT3V0R2V0RGV2Q2Fwc0EgaXMgc3VwcG9zZWQgdG8gcmV0dXJuCglNTVNZU0VSUl9CQURERVZJQ0VJRC4gRml4ZXMgYSB0b2RvX3dpbmUgaW4gdGhlIHdpbm1tIHRlc3QuCgoyMDAyLTEyLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywgZGxscy9zaGVsbDMyL3NobGV4ZWMuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkZWQgVW5pY29kZSB2ZXJzaW9ucyBvZiB0aGUgSENSXyBpbnRlcm5hbCBmdW5jdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL3Rlc3Rpbmcuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb2N1bWVudCBob3cgdG8gY3Jvc3MtY29tcGlsZSB0aGUgdGVzdHMgd2l0aCBNaW5HVy4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lY29uc29sZS9jdXJzZXMuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSAobiljdXJzZXMgYmFja2VuZCB0byB0aGUgd2luZWNvbnNvbGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbGlicmFyeS9wb3J0LmM6CglCcmFkIENhbXBiZWxsIDxicmFkQHNlbWUuY29tLmF1PgoJQWRkZWQgYWRkaXRpb25hbCB0ZXN0IGZvciBnY3Z0IGFzIHVDbGliYyBhcHBlYXJzIHRvIGhhdmUgdGhpcyBhbmQgbm90CgllY3Z0LgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXaGVuIGFzeW5jaHJvbm91cyBzaWduYWxzIGFyZSBibG9ja2VkLCBibG9jayBhbHNvIFNJR1VTUjIuCglGaXggcmFjZSB0aGF0IG1hZGUgc2lnbmFsIGhhbmRsZXIgZm9yZ2V0IHRvIHJlc3RvcmUgRlMgcmVnaXN0ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJUm9iZXJ0IFNoZWFybWFuIDxSLkouU2hlYXJtYW5Ad2Fyd2ljay5hYy51az4KCUltcGxlbWVudGVkIFN0clN0cklXLgoKCSogZGxscy9kc291bmQvc291bmQzZC5jOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgSURpcmVjdFNvdW5kM0RMaXN0ZW5lckltcGxfU2V0KigpLgoKCSogZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL250ZGxsL3RpbWUuYywgaW5jbHVkZS93aW5iYXNlLmg6CglBdm9pZCBjYXN0cyBiZXR3ZWVuIExBUkdFX0lOVEVHRVIgYW5kIEZJTEVUSU1FLgoJRml4ZWQgZGF5IG9mIHdlZWsgb2YgZXBvY2guCglTbWFsbCBjbGVhbnVwcy4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbjoKCUZpeGVkIHNvbWUgZGVwZW5kZW5jaWVzLgoKCSogZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBmaWxlcy9kb3NfZnMuYywKCSAgZmlsZXMvZmlsZS5jLCB3aW4zMi90aW1lLmM6CglHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJLSBSZWltcGxlbWVudCB0aW1lIGZ1bmN0aW9ucyB1c2luZyBudGRsbCBmdW5jdGlvbnMuCgktIFNvbWUgY2xlYW51cHMuCgoJKiBkbGxzL25ldGFwaTMyL2FjY2Vzcy5jLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsCgkgIGluY2x1ZGUvbG1lcnIuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglTdHViIE5ldEdldERDTmFtZSgpLiAgQWRkIGluIHRoZSByZXN0IG9mIHRoZSBORVJSXyogZGVmaW5lcy4KCgkqIGRsbHMvZHNvdW5kL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC90ZXN0cy9kc291bmQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglFeHRlbmQgdGhlIHRlc3QgYnkgY3JlYXRpbmcgYSBQcmltYXJ5QnVmZmVyIG9iamVjdCBhbmQgcGVyZm9ybSBhIGZldwoJYmFzaWMgdGVzdHMgc3VjaCBhcyBxdWVyeWluZyBpdHMgY2hhcmFjdGVyaXN0aWNzIGFuZCBjaGFuZ2luZyBpdHMKCWZvcm1hdC4KCUNoYW5naW5nIHRoZSBmb3JtYXQgcmVxdWlyZXMgdGhhdCB3ZSBjYWxsIFNldGNvb3BlcmF0aXZlTGV2ZWwgZmlyc3QsCgl3aGljaCBtZWFucyB3ZSBuZWVkIGFuIGh3bmQuIFNvIHRoZSB0ZXN0IG11c3Qgbm93IGxpbmsgd2l0aAoJdXNlcjMyLmRsbC4KCgkqIGRsbHMvZHNvdW5kL2J1ZmZlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSURpcmVjdFNvdW5kQnVmZmVyLkdldENhcHMgc2hvdWxkIGZhaWwgaWYgY2Fwcy5kd1NpemUgaXMgbm90IHNldC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVRoYW5rcyB0byBMdWNobywgdGV4dCBzdXBwb3J0IGluIHNhbXBsZXMgbm93IHN0YXJ0cyB0bwoJYXBwZWFyLiBUZXh0dXJlcyBub3cgc2F2ZWQgaW4gc3RhdGUgYmxvY2tzLCBhbmQgY29ycmVjdCBGVkYncyB1c2VkIGZvcgoJZHJhd2luZy4KCgkqIERFVkVMT1BFUlMtSElOVFMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVqYWNrLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2luZWphY2svTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWphY2svYXVkaW8uYywgZGxscy93aW5tbS93aW5lamFjay9qYWNrLmMsCgkgIGRsbHMvd2lubW0vd2luZWphY2svamFjay5oLCBkbGxzL3dpbm1tL3dpbmVqYWNrL3dpbmVqYWNrLmRydi5zcGVjLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUFkZCBzdXBwb3J0IGZvciBKYWNrIGF1ZGlvIHNlcnZlci4KCgkqIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHRoZSA0OCBhbmQgOTZrSHogZm9ybWF0cy4KCgkqIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJLSBDaGFuZ2UgbGF1bmNoIGZ1bmN0aW9ucyB0byB1c2UgdW5pY29kZSBhbmQgaW1wbGVtZW50IENvbnRyb2xfUnVuRExMVy4KCS0gRW5hYmxlIHN1cHBvcnQgZm9yIHVuaWNvZGUgaW4gY29udHJvbCBwYW5lbCBhcHBsaWNhdGlvbnMuCgoJKiBsb2FkZXIvdGFzay5jOgoJRG9uJ3QgY3Jhc2ggaW4gRGlyZWN0ZWRZaWVsZDE2IGlmIG5vIG90aGVyIHRhc2sgaXMgcnVubmluZy4KCgkqIHRvb2xzLy5jdnNpZ25vcmUsIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5ld3JhcC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU5ldyB3aW5lIGJ1aWxkIHV0aWxpdHkgdGhhdCBzaG91bGQgbWFrZSBpdCBlYXN5IGZvciBXaW5lbGliIGFwcHMgdG8KCWxpbmssIGFuZCBnZW5lcmF0ZSBhbiBleGVjdXRhYmxlLgoKCSogZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsCgkgIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2ZzLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXhlZCBzb21lIHNpZ25lZC91bnNpZ25lZCBjb21wYXJpc29uIHdhcm5pbmdzLgoKCSogZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jOgoJTmlrb2xheSBTdGVmYW5vdiA8bnN0ZWZhbm92QGNzLm1hbi5hYy51az4KCUZpeCBpc3N1ZXMgd2l0aCBpODEwLWJhc2VkIGF1ZGlvIGNhcmRzLgoJU3VwcG9ydCBmb3IgdXNlci1zZWxlY3RhYmxlIGF1ZGlvIGNhcmRzIHRocm91Z2ggdGhlIEFMU0FfQ0FSRAoJZW52aXJvbm1lbnQgdmFyaWFibGUgKE0uTWlyb3NsYXdAZWxrYS5wdy5lZHUucGwpLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCVR5cG8gZm91bmQgYnkgY29tcGlsaW5nIHdpdGggc3RhbmRhcmQgTVNWQyB3YXJuaW5nIGxldmVsLgoKCSogZG9jdW1lbnRhdGlvbi9mYXEuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDaGFuZ2UgJ0dldHRpbmctV2luZScgdG8gJ0ZBUS1HZXR0aW5nLVdpbmUnIHNpbmNlIHRoZSBmb3JtZXIgaXMKCWFscmVhZHkgdXNlZCBpbiBnZXR0aW5nLnNnbWwuCgoJKiBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglUd2VhayB0aGUgc2NyZWVuIHNlY3Rpb25zLgoJQWRkIHZhcmlvdXMgdGFncyBzdWNoIGFzOiBwcm9tcHQsIHVzZXJpbnB1dCwgcmVwbGFjZWFibGUsIGZpbGVuYW1lLgoJVXNlICc8Lz4nIHRvIGNsb3NlIHRhZ3MuCgoJKiBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3dpbmRvd3MuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGVkIHRoZSAjaW5jbHVkZSBkaXJlY3RpdmVzIHRvIG1hdGNoIHRoZSBsYXRlc3QgV2luZG93cyBTREsgYW5kIHRvCglpbmNsdWRlIG91ciBuZXcgaGVhZGVycy4KCgkqIGRsbHMvZHNvdW5kL3NvdW5kM2QuYzogUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUltcGxlbWVudGVkIElEaXJlY3RTb3VuZDNEQnVmZmVySW1wbF9TZXQqKCkuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBTSEJyb3dzZUZvckZvbGRlciBXIC0+IEEgY2FsbHMuCgoyMDAyLTEyLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmMsIGRsbHMva2VybmVsL2NvbnNvbGUuYywKCSAgZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLAoJICBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywKCSAgZGxscy9udGRsbC9sb2FkZXIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy91c2VyL2xzdHIuYywKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBmaWxlcy9kb3NfZnMuYywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9leGNwdC5oLCBpbmNsdWRlL21zdmNydC9leGNwdC5oLAoJICBpbmNsdWRlL3dpbmRvd3MuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywKCSAgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvc3RyaW5nLmMsIG1lbW9yeS92aXJ0dWFsLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jLCByZWxheTMyL3Nub29wLmMsCgkgIHdpbjMyL2V4Y2VwdC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIGV4Y3B0Lmggb3V0IG9mIGluY2x1ZGUvbXN2Y3J0LyBhcyBpdCBkb2VzIG5vdCBjb25mbGljdCB3aXRoIGFueQoJc3RhbmRhcmQgVW5peCBoZWFkZXIuCgoJKiBwcm9ncmFtcy9leHBhbmQvZXhwYW5kLmM6IEZpeGVkIExaQ29weSByZXR1cm4gdmFsdWUgY2hlY2suCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglJbXBsZW1lbnRlZCBJRGlyZWN0U291bmQzRExpc3RlbmVySW1wbF9HZXQqKCkgZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUNsZWFudXAgSW50ZXJuYWxFeHRyYWN0SWNvbkV4LiBUaGUgUHJpdmF0ZUV4dHJhY3RJY29ucyBmdW5jdGlvbnMKCXNob3VsZCBhbHNvIGhhbmRsZSB0aGUgY2FzZSBmb3IgMzJiaXQgUEUgYW5kIDE2Yml0IE5FIGZpbGVzIHNvIG5vIG5lZWQKCXRvIGRvIHRoaXMgaGVyZSBpbiBhIGRpZmZlcmVudCB3YXksIHRvby4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IFJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJUmVzb2x2ZSBTSEdldFBhdGhGcm9tSURMaXN0VyAtPiAgU0hHZXRQYXRoRnJvbUlETGlzdEEgY2FsbC4KCVJlbW92ZSBGaXhtZSBjb21tZW50IGluIFNIR2V0UGF0aEZyb21JRExpc3QgYXMgU3RyUmV0VG9TdHJOIHNob3VsZAoJdGFrZSBjYXJlIG9mIHRoaXMuCglHZXQgcmlkIG9mIHNvbWUgdW5zaWduZWQvc2lnbmVkIGNvbXBhcmlzb24gd2FybmluZ3Mgd2l0aCBkZWZhdWx0Cgl3YXJuaW5ncyBpbiBNU1ZDLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50IElFeHRyYWN0SWNvblcgYW5kIGluaGVyaXQgSUV4dHJhY3RJY29uQSBmcm9tIGl0LgoKCSogZGxscy91c2VyL2V4dGljb24uYzogUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggYSBwb3NzaWJsZSBtZW1vcnkgbGVhayB3aGVuIGV4dHJhY3RpbmcgZnJvbSBhbiBJQ08gZmlsZS4KCUZpeCBzb21lIHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncyBzaG93aW5nIHVwIGluIE1TVkMgd2l0aCBkZWZhdWx0Cgl3YXJuaW5nIGxldmVsLgoJRml4IHBvc3NpYmxlIHByb2JsZW0gd2l0aCBzaG9ydCBQSU1BR0VfTlRfSEVBREVSUy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglJbXBsZW1lbnRlZCBEaXNwQ2FsbEZ1bmMgc28gdGhhdCBpdCB3b3JrcyB3aGVuIGNhbGxpbmcgZXZlbnQgaGFuZGxlcnMKCXRoYXQgaGF2ZSBubyByZXR1cm4gdmFsdWUuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglDYWxsaW5nIFNhZmVBcnJheURlc3Ryb3kgb24gYSBkZXN0cm95ZWQgYXJyYXkgc2hvdWxkIGJlIGEgbm8tb3AuCgoJKiBkbGxzL2Rzb3VuZC9zb3VuZDNkLmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglJbXBsZW1lbnRlZCBzb21lIHN0dWJzLgoKCSogdG9vbHMvd2luZW1ha2VyOiBKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCUFkZCAnZGlzdGNsZWFuJyB0YXJnZXQgdG8gd2luZW1ha2VyLWdlbmVyYXRlZCBwcm9qZWN0cy4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCUplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJTU1EUlZfR2V0RGVzY3JpcHRpb24zMiBmaXggKyBhIGZldyBjb3NtZXRpYyBpbXByb3ZlbWVudHMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNZW50aW9uIHRoZSBhcHBsaWNhdGlvbnMgdGhhdCBkZXBlbmQgb24gdGhlIGJlaGF2aW9yIGNoZWNrZWQgYnkgdGhlCglHZXRMb2NhbGVJbmZvQSBwYXJ0aWFsIGJ1ZmZlciB0ZXN0LgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldmVydGVkIGxhc3QgVlRfVVNFUkRFRklORUQgcGF0Y2ggKHdhcyBicm9rZW4pLgoJTWFyc2hhbCBUS0lORF9ESVNQQVRDSCBpbnRlcmZhY2VzIGp1c3QgbGlrZSBUS0lORF9JTlRFUkZBQ0UuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2VwYXJhdGVkIG91dCAxNmJpdCBzb3VyY2VzIGZvciBvbGUyZGlzcC5kbGwuCgoJKiB0b29scy93cmMvd3JjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgZGlzcGxheSB0aGUgbG9uZyBvcHRpb25zIGluIHRoZSB1c2FnZSBtZXNzYWdlIGlmIHdlIGRvbid0CglhY3R1YWxseSBzdXBwb3J0IHRoZW0uIFNtYWxsIG90aGVyIGNsZWFudXBzLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOiBBbGV4IFBhc2FkeW4gPGFqcEBtYWlsLnV0ZXhhcy5lZHU+CglGaXggcmV0dXJuIGZyb20gSU9DVExfQ0RST01fQ0hFQ0tfVkVSSUZZLgoKCSogZGxscy93aW5tbS90ZXN0cy93YXZlLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGVycm9yIHJlcG9ydGluZyBpbiB3YXZlbWFwLmM6d29kT3BlbigpOyB0aGlzIHNvbHZlcyB0aGUKCXdhdmVPdXRPcGVuIHByb2JsZW0gc28gdGhhdCB3ZSBjYW4gcmVtb3ZlIHRoZSB0b2RvX3dpbmUuCglXaW45eCBkb2VzIG5vdCBzdXBwb3J0IFdBVkVfRk9STUFUX0RJUkVDVC4KCURvbid0IGNoZWNrIHRoZSBmb3JtYXQgaWYgdGhlIHdhdmVPdXRPcGVuIGNvbW1hbmQgZmFpbGVkLgoJVXNlIHRyYWNlLCBub3Qgd2luZXRlc3RfdHJhY2UhCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IEFsc28gdHJhY2UgaW1wbGljaXRseSBsb2FkZWQgZGxscyBmb3IgK2xvYWRkbGwuCgoJKiBkbGxzL2FkdmFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvYXZpZmlsMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9jYWJpbmV0Ly5jdnNpZ25vcmUsIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlLAoJICBkbGxzL2NyeXB0MzIvLmN2c2lnbm9yZSwgZGxscy9kM2Q4Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZGNpbWFuMzIvLmN2c2lnbm9yZSwgZGxscy9kZHJhdy8uY3ZzaWdub3JlLAoJICBkbGxzL2RldmVudW0vLmN2c2lnbm9yZSwgZGxscy9kaW5wdXQ4Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZHBsYXkvLmN2c2lnbm9yZSwgZGxscy9kc291bmQvLmN2c2lnbm9yZSwgZGxscy9nZGkvLmN2c2lnbm9yZSwKCSAgZGxscy9nbHUzMi8uY3ZzaWdub3JlLCBkbGxzL2ljbXAvLmN2c2lnbm9yZSwgZGxscy9pbW0zMi8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2x6ZXhwYW5kLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXByLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwgZGxscy9tc2Rtby8uY3ZzaWdub3JlLAoJICBkbGxzL21zaW1nMzIvLmN2c2lnbm9yZSwgZGxscy9tc25ldDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXN2Y3J0Ly5jdnNpZ25vcmUsIGRsbHMvbXN2Y3J0MjAvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZpZGVvLy5jdnNpZ25vcmUsIGRsbHMvbXN2aWRlby9tc3JsZTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbmV0YXBpMzIvLmN2c2lnbm9yZSwgZGxscy9udGRsbC8uY3ZzaWdub3JlLAoJICBkbGxzL29kYmMzMi8uY3ZzaWdub3JlLCBkbGxzL29sZTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlYXV0MzIvLmN2c2lnbm9yZSwgZGxscy9vbGVjbGkvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVkbGcvLmN2c2lnbm9yZSwgZGxscy9vbGVwcm8zMi8uY3ZzaWdub3JlLAoJICBkbGxzL29wZW5nbDMyLy5jdnNpZ25vcmUsIGRsbHMvcHNhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9xY2FwLy5jdnNpZ25vcmUsIGRsbHMvcXVhcnR6Ly5jdnNpZ25vcmUsCgkgIGRsbHMvcmFzYXBpMzIvLmN2c2lnbm9yZSwgZGxscy9ycGNydDQvLmN2c2lnbm9yZSwKCSAgZGxscy9zZXJpYWx1aS8uY3ZzaWdub3JlLCBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3NoZm9sZGVyLy5jdnNpZ25vcmUsCgkgIGRsbHMvc25tcGFwaS8uY3ZzaWdub3JlLCBkbGxzL3N0aS8uY3ZzaWdub3JlLAoJICBkbGxzL3R0eWRydi8uY3ZzaWdub3JlLCBkbGxzL3VybC8uY3ZzaWdub3JlLCBkbGxzL3VybG1vbi8uY3ZzaWdub3JlLAoJICBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy92ZXJzaW9uLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luMzJzLy5jdnNpZ25vcmUsIGRsbHMvd2luYXNwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmVkb3MvLmN2c2lnbm9yZSwgZGxscy93aW5lcHMvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5pbmV0Ly5jdnNpZ25vcmUsIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwKCSAgZGxscy93aW5ubHMvLmN2c2lnbm9yZSwgZGxscy93aW5zb2NrLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luc3Bvb2wvLmN2c2lnbm9yZSwgZGxscy93aW50cnVzdC8uY3ZzaWdub3JlLAoJICBkbGxzL3dvdzMyLy5jdnNpZ25vcmUsIGRsbHMvd3NvY2szMi8uY3ZzaWdub3JlLAoJICBkbGxzL3gxMWRydi8uY3ZzaWdub3JlOgoJQWRkZWQgLnNwZWMuZGVmIGZpbGVzLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tYWtlX2RsbHMsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUltcGxlbWVudGVkIGltcG9ydCBsaWJyYXJpZXM7IG9uIFVuaXggd2UgaW1wb3J0IHRoZSAuZGVmIGZpbGUKCWRpcmVjdGx5LCBvbiBNaW5ndyB3ZSB1c2UgaXQgdG8gYnVpbGQgdGhlIC5hIGxpYnJhcnkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglNYWRlIHN0ZGNhbGwgZGVjb3JhdGlvbiBpbiAuZGVmIGZpbGVzIHRoZSBkZWZhdWx0LCBhbmQgYWRkZWQgLWsgb3B0aW9uCgl0byBzd2l0Y2ggaXQgb2ZmLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYjE2LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNwbGl0IG91dCAxNmJpdCBjb2RlIGludG8gdHlwZWxpYjE2LmMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEb24ndCB0ZXN0IHdoZXRoZXIgR2V0e0N1cnJlbmN5LERhdGUsTnVtYmVyLFRpbWV9Rm9ybWF0QSB3cml0ZXMgYXMKCW11Y2ggYXMgcG9zc2libGUgaW4gdGhlIGJ1ZmZlciBldmVuIGlmIGl0IGlzIHRvbyBzbWFsbC4gVGhpcyBpcwoJdW5kb2N1bWVudGVkIGFuZCBkb2VzIG5vdCBtYXRjaCB0aGUgV2luOXggYmVoYXZpb3IuCglTa2lwIFVuaWNvZGUgdGVzdHMgb24gV2luOXguCglGaXggdXNhZ2Ugb2YgbWVtc2V0L3NpemVvZi9DT1VOVE9GLgoJRml4IHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncyAoaW4gTVNWQykgYnkgdXNpbmcgbHN0cmxlbkEgaW5zdGVhZCBvZgoJc3RybGVuLgoKCSogb2xlL29sZTJubHMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbiBHZXR7Q3VycmVuY3ksTnVtYmVyfUZvcm1hdEEsIFNldExhc3RFcnJvciB0bwoJRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUiBpZiB0aGUgYnVmZmVyIGlzIHRvbyBzbWFsbC4KCgkqIGRsbHMvZ2x1MzIvZ2x1MzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHN0dWJzIGZvciBtaXNzaW5nIEFQSXMuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9kaXJlY3RvcnkuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTa2lwIHRoZSBVbmljb2RlIHRlc3RzIG9uIFdpbjl4LgoJVGVzdCBHZXR7U3lzdGVtLFdpbmRvd3N9RGlyZWN0b3J5e0EsV30oTlVMTCwgMCkuIFRoaXMgaXMgYSBtb3JlCglzdGFuZGFyZCB3YXkgdG8gZ2V0IGxlbl93aXRoX251bGwgdG9vLgoJQWRhcHQgdGhlIGVycm9yIGNvZGUgY2hlY2tzIHRvIHRha2UgaW50byBhY2NvdW50IHZhcmlhdGlvbnMgYmV0d2VlbgoJV2luOXggYW5kIE5ULgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBmaWxlcy9maWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgZXJyb3IgY29kZXMgcmV0dXJuZWQgYnkgRGVsZXRlRmlsZXtBLFd9IHRvIG1hdGNoIE5ULgoJQWRhcHQgdGhlIERlbGV0ZUZpbGVBIGVycm9yIGNvZGUgY2hlY2tzIHRvIHRha2UgaW50byBhY2NvdW50IHZhcmlhdGlvbnMKCWJldHdlZW4gV2luOXggYW5kIE5ULgoJVGVzdCBEZWxldGVGaWxlKE5VTEwpLgoJQWRkIHRlc3RzIGZvciBEZWxldGVGaWxlVy4KCU9uIE5ULCBjYWxsaW5nIF9sY2xvc2Ugb24gYW4gYWxyZWFkeSBjbG9zZWQgaGFuZGxlIHdpbGwgY2F1c2UgbWVtb3J5Cgljb3JydXB0aW9uIGFuZCB0aHVzIHNvbWV0aW1lcyBjcmFzaCAtPiByZW1vdmVkIHRoZSByZWxldmFudCB0ZXN0LgoJU2tpcCB0aGUgVW5pY29kZSB0ZXN0cyB3aGVuIG9uIFdpbjl4LgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuc3BlYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsCgkgIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCUFkZGVkIGxpc3Qgb2Ygc3ltYm9scyB0byBpZ25vcmUgYnkgZGVmYXVsdCBpbiB3aW5lYnVpbGQuCglNYWRlIHRoZSAtaSBvcHRpb24gc3VwcG9ydCByZW1vdmluZyBpZ25vcmVkIHN5bWJvbHMgdG9vLgoJUmVtb3ZlZCB0aGUgLW5vaW1wb3J0IGZsYWcgaW4gc3BlYyBmaWxlcy4KCgkqIHRvb2xzL21pbmd3cmFwLmM6IFdhcm5pbmcgZml4LgoKCSogZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglJbXBsZW1lbnRlZCBCaW5kTW9uaWtlciBmdW5jdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IHNoZWxsMzIuRXh0cmFjdEljb24gd2l0aCBBLT5XIGFuZCAxNiAtPiAzMiBjYWxscy4KCgkqIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBGdHBDb21tYW5kW0F8V10uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9jb2RlcGFnZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRoZSBXaW45eCBwbGF0Zm9ybXMgc3VwcG9ydCBXaWRlQ2hhclRvTXVsdGlCeXRlIGFuZAoJTXVsdGlCeXRlVG9XaWRlQ2hhciBidXQgbm90IGxzdHJjbXBXISBTbyBJIGltcGxlbWVudGVkIG91ciBvd24gc28KCXRoYXQgd2UgY2FuIGhhdmUgYSBtZWFuaW5nZnVsIHRlc3QuCgoJKiBtc2Rvcy9kb3NtZW0uYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJR2l2ZSBET1MgYXBwbGljYXRpb25zIDYzOGsgb2YgZnJlZSBjb252ZW50aW9uYWwgbWVtb3J5LgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSBhbGwgcmVmdHlwZXMgaW4gVlRfVVNFUkRFRklORUQuCgoJKiBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTa2lwIHRoZSBVbmljb2RlIHRlc3RzIChlZmZlY3RpdmVseSBhbGwgdGVzdHMgY3VycmVudGx5KSBvbiBXaW45eC4KCjIwMDItMTItMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluOgoJUGFzcyB0aGUgLUogb3B0aW9uIHRvIHdyYyB0byBhdm9pZCBpbmNsdWRpbmcgaW5zdGFsbGVkIGhlYWRlcnMuCgoJKiB0b29scy9taW5nd3JhcC5jOgoJV2luZSBpbnRlcm5hbCBpbmNsdWRlcyBzaG91bGQgbm90IGJlIGluIHRoZSBpbmNsdWRlIHBhdGguCgoJKiB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy93cmMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+Cgl3cmMgc2hvdWxkIGJlIGF3YXJlIG9mIHRoZSBsb2NhdGlvbiBvZiB0aGUgc3lzdGVtIGhlYWRlcnMuCgoJKiB0b29scy9jb25maWcuZ3Vlc3MsIHRvb2xzL2NvbmZpZy5zdWI6IFVwZGF0ZWQgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uLgoKCSogdG9vbHMvbWFrZWRlcC5jOgoJVHJ5IHRvIG9wZW4gc291cmNlIGZpbGUgaW4gY3VycmVudCBkaXJlY3RvcnkgZmlyc3QgaW4gY2FzZSBpdCBpcyBhCglnZW5lcmF0ZWQgZmlsZS4KCgkqIGRsbHMvTWFrZXRlc3QucnVsZXMuaW46IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJR2VuZXJhdGUgcHJvcGVyIGRlcGVuZGVuY2llcyBmb3IgdGVzdGxpc3QuYy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLCBkbGxzL3dpbm1tL3dpbm1tX1NpLnJjOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUZpeGVkIHNvbWUgY2hhcmFjdGVycy4KCgkqIGFjbG9jYWwubTQsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJQWRkZWQgV0lORV9DSEVDS19ERUZJTkUgbWFjcm8gdG8gZmFjdG9yIG91dCBzb21lIHJlcGVhdGVkIGNvZGUuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC90aW1lLmMsCgkgIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJLSBJbXBsZW1lbnQgUnRsTG9jYWxUaW1lVG9TeXN0ZW1UaW1lIGFuZCBSdGxTeXN0ZW1UaW1lVG9Mb2NhbFRpbWUuCgktIFVzZSBuZXcgdGltZSBmdW5jdGlvbnMgdG8gcmVpbXBsZW1lbnQgRmlsZVRpbWVUb0xvY2FsVGltZSBhbmQKCSAgTG9jYWxUaW1lVG9GaWxlVGltZS4KCgkqIHRvb2xzL3J1bnRlc3Q6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHN0ZGVyciByZWRpcmVjdGlvbi4KCVNpbXBsaWZ5ICRpbmZpbGUgZXhpc3RlbmNlIHRlc3QuCgoJKiBpbmNsdWRlL3dpbmUvdGVzdC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVdoZW4gcmVwb3J0aW5nIGEgdGVzdCBmYWlsdXJlLCBvbmx5IHJlcG9ydCB0aGUgZmlsZSBuYW1lLCBub3QgdGhlIGZ1bGwKCXBhdGguCglNZXJnZSB3aW5ldGVzdF9zZXRfdHJhY2VfbG9jYXRpb24gd2l0aCB3aW5ldGVzdF9zZXRfb2tfbG9jYXRpb24uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6IEZyb206IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJJyInIGlzIGFuIGlsbGVnYWwgY2hhcmFjdGVyIG9uIFdpbjl4IHNvIHdlIGNhbm5vdCB0ZXN0IGl0LgoJR2V0U2hvcnRQYXRoTmFtZUEgYmVoYXZlcyBkaWZmZXJlbnRseSBvbiBXaW45eCBhbmQgTlQ6IG9uIE5UIGl0CglzdWNjZWVkcyBldmVuIGlmIG5vdCBhbGwgcGF0aCBjb21wb25lbnRzIGV4aXN0LCBhcyBsb25nIGFzIHRoZXkgYXJlCglhbHJlYWR5IGluIHRoZSA4LjMgZm9ybWF0LgoJV2luZSBhcHBhcmVudGx5IGltcGxlbWVudHMgdGhlIE5UIGJlaGF2aW9yIHRodXMgbWFueSB0b2RvX3dpbmUgd2VudAoJYXdheS4KCUZpeGVkIHNvbWUgZXJyb3IgY29kZSBjaGVja3MgdG8gdGFrZSBpbnRvIGFjY291bnQgYWxsIHBvc3NpYmxlIHJldHVybgoJdmFsdWVzLgoJR2V0VGVtcEZpbGVOYW1lQSBhcHBlYXJzIHRvIG9ubHkgdXNlIHRoZSBsb3dlciAxNmJpdHMgb2YgdGhlIGlkIG9uCglXaW45NSAoYW5kIG5ldmVyIHJldHVybnMgbW9yZSB0aGFuIDE2IGJpdHMgb24gb3RoZXIgcGxhdGZvcm1zKS4KCUdldExvbmdQYXRoTmFtZUEgaXMgbWlzc2luZyBvbiBzb21lIFdpbmRvd3MgdmVyc2lvbnMuCglNb2RpZmllZCB0aGUgR2V0VGVtcFBhdGggdGVzdHMgdG8gbWFrZSBzdXJlIHRoZXkgcmV0dXJuIHRoZSBleHBlY3RlZAoJdmFsdWUuIFJlbW92ZWQgdGhlIHJlZHVuZGFudCB0ZXN0cyAoZS5nLiBpZiBidWZbMF09PTAgdGhlbiBidWYhPSJmb28iLAoJbm8gbmVlZCB0byB0ZXN0IGJvdGgpLgoJVGhlICdsZW5fd2l0aF9udWxsIC0gMScgY2FzZSBpcyBub3QgdGVzdGFibGUgYXMgdGhlIFdpbmRvd3MgYmVoYXZpb3IKCXZhcmllcyB0b28gbXVjaCBiZXR3ZWVuIHZlcnNpb25zLgoJV2UgY2Fubm90IGNoZWNrIHdoZXRoZXIgV2luZG93cyB0b3VjaGVzIHRoZSBidWZmZXIgZWl0aGVyIGFzIHRoaXMKCWhlYXZpbHkgZGVwZW5kcyBvbiB0aGUgV2luZG93cyB2ZXJzaW9uIGFuZCBzcGVjaWZpYyBjaXJjdW1zdGFuY2VzIG9mCgl0aGUgY2FsbC4KCUZpbmFsbHkgTlQ0IHNvbWV0aW1lcyBleGFnZ2VyYXRlcyB0aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUuCgoJKiBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJSW1wbGVtZW50ICRWIGluIGJ1aWx0aW4gUFJPTVBULgoKMjAwMi0xMi0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsCgkgIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLCBkbGxzL29sZWF1dDMyL3BhcnNlZHQuaCwKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy90d2Fpbi90d2Fpbi5oLCBkbGxzL3dpbmVkb3MvaW50MTcuYywKCSAgZGxscy93aW5lZG9zL2ludDI5LmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBkbGxzL3dpbmVwcy9wcGQuYywKCSAgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgZGxscy93aW5lcHMvdHlwZTFhZm0uYywKCSAgZGxscy94MTFkcnYveHJlbmRlci5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpZjE2MzIvcmVsYXkuYywKCSAgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS9tc3ZjcnQvc3RkbGliLmgsCgkgIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwKCSAgaW5jbHVkZS93aW5lL3JwY3NzX3NoYXJlZC5oLCBpbmNsdWRlL3dpbm50LmgsIGxpYnJhcnkvbG9hZGVyLmMsCgkgIG1lbW9yeS9pbnN0ci5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHJlbGF5MzIvcmVsYXkzODYuYywKCSAgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsCgkgIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsCgkgIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvd2luZWR1bXAvZGVidWcuYywKCSAgdG9vbHMvd2luZWR1bXAvbmUuYywgdG9vbHMvd2luZWR1bXAvcGUuYzoKCXdpbm50Lmggc2hvdWxkIG5vdCBiZSBzZWxmLWNvbnRhaW5lZCwgaXQgbXVzdCBkZXBlbmQgb24gd2luZGVmLmggc28KCXRoYXQgU1RSSUNUIHdvcmtzIGNvcnJlY3RseTsgbW92ZWQgc29tZSBkZWZpbml0aW9ucyBiYWNrIHRvIHdpbmRlZi5oCgl3aGVyZSB0aGV5IGJlbG9uZywgYW5kIHJlbW92ZWQgYSBjb3VwbGUgb2YgZGVmaW5pdGlvbnMgdGhhdCBkb24ndAoJZXhpc3Qgb24gV2luZG93cy4KCgkqIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLAoJICBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbjoKCS1EU1RSSUNUIGlzIG5vdyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBTdGV2ZW4gRWR3YXJkcyA8aXNvX2xhdGlvbkBob3RtYWlsLmNvbT4KCUFscGhhIHBvcnRpbmcgZml4LgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglBZGRlZCBwYXJhbWV0ZXJzIHRvIE50WHh4UG9ydCBmdW5jdGlvbnMgcHJvdG90eXBlcy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZCBhIGRlZmluaXRpb24gZm9yIFNUUklDVC4KCgkqIGluY2x1ZGUvd2lubnQuaDogSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglBZGRlZCBkZWZpbml0aW9ucyBmb3IgUkVHX1FXT1JEIGFuZCBSRUdfUVdPUkRfTElUVExFX0VORElBTi4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmMsCgkgIG1zZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIGludDIxIGNvdW50cnkgaW5mb3JtYXRpb24gaGFuZGxpbmcgdG8gd2luZWRvcy4KCUltcHJvdmUgY291bnRyeSBpbmZvcm1hdGlvbiBoYW5kbGluZy4KCU1vdmUgY29sbGF0ZSB0YWJsZSB0byB1cHBlciBtZW1vcnkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgdG9vbHMvd3JjL3dyYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUdyYWNlZnVsbHkgZGVncmFkZSB0byBnZXRvcHQgaWYgZ2V0b3B0X2xvbmcgZG9lcyBub3QgZXhpc3QuCgoJKiBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJU3VwcHJlc3Mgc29tZSBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5nLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBpbmNsdWRlL3NoZWxsYXBpLmg6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUNoYW5nZSB0aGUgcmV0dXJuIHZhbHVlIGZvciBFeHRyYWN0SWNvbkV4IGZyb20gSElDT04gdG8gVUlOVCBhbmQgbWFrZQoJdGhlIGZ1bmN0aW9uIGNhbGwgZGlyZWN0bHkgdXNlcjMyLlByaXZhdGVFeHRyYWN0SWNvbkV4LgoKCSogZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJLSBNb2RpZnkgSUNPX0V4dHJhY3RJY29uRXhXIHRvOgoJICAgIHJldHVybiBtb3JlIGNvbXBsaWFudCB2YWx1ZXMgZm9yIHVzYWdlIGluIFByaXZhdGVFeHRyYWN0SWNvbnMgYW5kIFByaXZhdGVFeHRyYWN0SWNvbkV4CgkgICAgYWNjZXB0IGFuZCBmaWxsIGluIHRoZSBpY29uIGlkZW50aWZpZXIgYXJyYXkgY29ycmVjdGx5IGlmIHByb3ZpZGVkCgkgICAgYWxsb3cgdG8gcmV0cmlldmUgYm90aCBzbWFsbCBhbmQgbGFyZ2UgaWNvbnMgdG9nZXRoZXIuCgktIFNpbXBsaWZ5IFByaXZhdGVFeHRyYXh0SWNvbnMKCS0gTW9kaWZ5IFByaXZhdGVFeHRyYWN0SWNvbkV4VyB0bzoKCSAgIHVzZSBjb21wYXRpYmxlIHNpZ25hdHVyZSB0byBFeHRyYWN0SWNvbkV4IGluIHNoZWxsMzIgd2hpY2ggaXQgcmVhbGx5IGlzIGRpcmVjdGx5CgkgICAgIGFzIHRlc3RlZCBvbiBXMksgYnkgY2FsbGluZyBib3RoIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMKCSAgIGRpcmVjdGx5IGNhbGwgaW50ZXJuYWwgZXh0cmFjdGlvbiBmdW5jdGlvbgoJICAgZml4IGVycm9yIHdoZW4gcmVxdWVzdGluZyAxIGljb24gZm9yIGJvdGggc2l6ZXMKCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi90cmFja2Jhci5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUdldCByaWQgb2YgZ2VuZXJpYyBub3RpZmljYXRpb24gc3VwcG9ydCBpbiBjb21jdHJsMzIuIFRoZSBNUyBkb2NzIHdlcmUKCW1pc2xlYWRpbmcgaW4gdGhhdCBhbGwgY29udHJvbHMgc2VuZCB0aGVzZSBub3RpZmljYXRpb25zLiBUaGV5IGRvbid0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBQbHVnIGEgYnVuY2ggb2YgbWVtb3J5IGxlYWtzLgoJLSBNYWtlIHJhbmdlc19kZXN0cm95IGJlaGF2ZSBtb3JlIGxpa2UgZnJlZSgpLgoJLSBGaXggbWVzc2VkIHVwIGluZGVudGF0aW9uIGZyb20gdGFicyBzZXQgdG8gNCBjaGFycy4KCS0gVXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJUmVzZXQgdGhlIG9zcyBkZXZpY2UgYmVmb3JlIHdlIHRyeSB0byBjbG9zZSBpdC4gIEZpeGVzIGhhbmcgb24gc3RhcnR1cAoJb2YgU3RhcmNyYWZ0IGR1ZSB0byBvc3MgZGV2aWNlIGJlaW5nIGluIGEgYmFkIHN0YXRlLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglWYXJBZGQgc3VwcG9ydCBmb3IgaW50ZWdlcnMuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJIFVwZGF0ZSBXaW5lIEZBUSB0byBsYXRlc3QgcmV2aXNpb24uCgkgIC0gQmV0dGVyIEJvY2hzL1BsZXg4NiBpbmZvCgkgIC0gQWRkIFEmQSBhYm91dCB1cGdyYWRpbmcgY29uZmlndXJhdGlvbgoJICAtIFJlcGxhY2UgRGVuZWJhJ3MgQ2FudmFzIDcgd2l0aCBBYmlsaXR5IE9mZmljZQoJRnJvbSBlbnRyaWVzIHN1Ym1pdHRlZCBieSBUb20gV2lja2xpbmUuCgoJKiB3aW5kb3dzL2lucHV0LmM6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJTWFrZSBXTV9NT1VTRUhPVkVSIGNvb3JkaW5hdGVzIGNsaWVudCByZWxhdGl2ZS4KCgkqIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL3dpbm50Lmg6CglTdGV2ZW4gRWR3YXJkcyA8aXNvX2xhdGlvbkBob3RtYWlsLmNvbT4KCUFscGhhIHBvcnRpbmcgZml4ZXMuCgoyMDAyLTEyLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCVJlcGxhY2VkICdpZ25vcmUnIHNwZWMgZmlsZSBkaXJlY3RpdmUgYnkgdGhlIC1pIG9wdGlvbi4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjogRG9uJ3QgYnVpbGQgdGVzdHMgYnkgZGVmYXVsdCBqdXN0IHlldC4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgaW5jbHVkZS9zaGxvYmouaDoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJQWRkIFNIRGVmRXh0cmFjdEljb257QVd9IGZ1bmN0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCVVwZGF0ZSBkZWJ1Z2dlciBkb2N1bWVudGF0aW9uIGZvciB3aGVuIHByb2dyYW1zIGhhbmdzLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJRml4IHNpZ25hdHVyZSBvZiBTSExXQVBJXzMzNCBhcyBpdHMgc3RyaW5nIHBhcmFtZXRlciByZWFsbHkgaXMgYW4KCW91dHB1dC4KCgkqIGluY2x1ZGUvZGRyYXcuaDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRmlsbHMgdGhlIG5hbWUgb2YgdGhlIGFyZ3VtZW50cyBvZiB0aGUgQ09NIG1ldGhvZHMsIGVsc2UgTVNWQyBkb2Vzbid0CglsaWtlIHRoZW0uCgoJKiBmaWxlcy9kcml2ZS5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIEdldERpc2tGcmVlU3BhY2VFeCBmcm9tIGFzY2lpIHRvIHVuaWNvZGUuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLAoJICBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9oaW1lbS5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgZGxscy93aW5lZG9zL21vZHVsZS5jLCBpbmNsdWRlL21zZG9zLmgsIG1zZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIGludDA4IHN0dWIgYW5kIExPTCB0byB1cHBlciBtZW1vcnkuCglNb3ZlIHNpbXBsZSBpbnQyMSBmdW5jdGlvbnMgdG8gd2luZWRvcy4KCjIwMDItMTItMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJQ2hlY2sgZmlsZSBoZWFkZXIgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIG9iamVjdCBmaWxlcyBhbmQgcmVzb3VyY2VzCglzbyB0aGF0IHRoZSAtciBvcHRpb24gaXMgbm90IG5lY2Vzc2FyeS4KCgkqIHRvb2xzL01ha2VmaWxlLmluOiBGaXhlZCBtaW5nd3JhcCBpbnN0YWxsIGNvbW1hbmQuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJRml4ZWQgdGhlIGxpc3Qgb2YgYWNjZXB0ZWQgdHlwZXMgcGFzc2VkIHRvIEh0dHBPcGVuUmVxdWVzdEEuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglJbXBsZW1lbnQgUGFyc2VGaWVsZFcgZnVuY3Rpb24gYmFzZWQgb24gaXRzIEFOU0kgc2libGluZy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCSAtIFdoZW4gc2VuZGluZyBhIHJlcXVlc3QgdXNpbmcgSHR0cE9wZW5SZXF1ZXN0L0h0dHBTZW5kUmVxdWVzdCwgc2VuZCB0aGUKCSAgIFVzZXItQWdlbnQgaGVhZGVyOyBmaXhlZCB0aGUgQWNjZXB0IGFuZCB0aGUgUmVmZXJlciBoZWFkZXIgaGFuZGxpbmcgdG8KCSAgIHJlYWxseSB3b3JrLgoJIC0gRml4ZWQgYnVnIGluIHRoZSBIVFRQX1Byb2Nlc3NIZWFkZXI6IHdoZW4gYSBzZWNvbmQgdmFsdWUgd2FzIHN1cHBvc2VkIHRvIGJlCgkgICBhZGRlZCB0byBhbiBleGlzdGluZyBvbmUsIHRoZSBidWZmZXIgd2FzIHJlZHVjZWQgdG8gYmUgMSBjaGFyIGxvbmcgaW5zdGVhZAoJICAgb2YgYmVpbmcgZXhwYW5kZWQsIGR1ZSB0byB0aGUgcHJlY2VkZW5jZSBydWxlcyBvZiB0aGUgb3BlcmF0b3IgJz8nLgoJIC0gQWRkZWQgc3VwcG9ydCBmb3Igb3BlbmluZyBVUkxzIHRoYXQgcmVkaXJlY3QgdG8gYSBkaWZmZXJlbnQgcGxhY2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBpbmNsdWRlL3Byc2h0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURlZmluZSBQU0hfV0laQVJEOTcgKHByb2JsZW0gcmVwb3J0ZWQgYnkgamF5bXpAZnJlZS5mcikuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IENocmlzdG9waCBGcmljayA8ZnJpY2tAU0MtTmV0d29ya3MuZGU+CglGb3JjZSAoV1NfKVNPX1JFVVNFQUREUiBiZWZvcmUgYmluZGluZyB0byBhIHNvY2tldDsgaWdub3JlCgkoV1NfKVNPX0RPTlRST1VURTsgTmV0d29yayBnYW1lcyBpbiBHcmFuZCBQcml4IExlZ2VuZHMgYW5kIE5hc2NhciAyMDAyCglhcmUgcG9zc2libGUgbm93LgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluOgoJQnVpbGQgdGVzdCBwcm9ncmFtcyBhcyBwYXJ0IG9mIHRoZSBub3JtYWwgYnVpbGQuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggc29tZSBwYXJhbWV0ZXIgdHlwZXMuCgoJKiBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1vdmVkIENPTSBBUEkgcHJvdG90eXBlcyBpbiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCB0bwoJaW5jbHVkZS9vYmpiYXNlLmguCgoJKiB0b29scy93cmMvd3JjLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYWtlIHdyYyBjb21tYW5kIGxpbmUgY29tcGF0aWJsZSB3aXRoIHdpbmRyZXMuCgoJKiB0b29scy9NYWtlZmlsZS5pbjoKCUZpeGVkIHBhc3Npbmcgb2YgLURJTkNMVURFRElSIHdoZW4gYnVpbGRpbmcgbWluZ3dyYXAuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW5zdGFsbCBEREsgaGVhZGVycyBhcyB3ZWxsLgoKMjAwMi0xMi0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOiBBZGRlZCBycGMuaCBpbmNsdWRlIHRvIGZpeCB0ZXN0cyBjb21waWxhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RsaWdodC5jLAoJICBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLAoJICBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsCgkgIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLAoJICBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsCgkgIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9mdG1hcnNoYWwuYywgZGxscy9vbGUzMi9pZnMuYywKCSAgZGxscy9vbGUzMi9pdGVtbW9uaWtlci5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5oLAoJICBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsCgkgIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvcnBjcnQ0L2Nwcm94eS5jLCBkbGxzL3JwY3J0NC9jcHNmLmMsIGRsbHMvcnBjcnQ0L2NzdHViLmMsCgkgIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLAoJICBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsIGRsbHMvc2hkb2N2dy9jbGFzc2luZm8uYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwgZGxscy9zaGVsbDMyL2RyYWdkcm9waGVscGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGZvbGRlci5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLAoJICBkbGxzL3NobHdhcGkvY2xpc3QuYywgZGxscy9zaGx3YXBpL2lzdHJlYW0uYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLAoJICBkbGxzL3NobHdhcGkvdGhyZWFkLmMsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9vYWlkbC5oLAoJICBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vYmppZGwuaCwgaW5jbHVkZS9vY2lkbC5oLCBpbmNsdWRlL29sZS5oLAoJICBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlY3RsLmgsCgkgIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvc2VydnByb3YuaCwKCSAgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvdW5rbnduLmgsCgkgIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwKCSAgaW5jbHVkZS93aW5lL29ial9zZXJ2aWNlcHJvdmlkZXIuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTWFrZSBzdXJlIHRoYXQgbm8gZmlsZXMgZXhjZXB0IHVua253bi5oIGluY2x1ZGUgd2luZS9vYmpfYmFzZS5oCglkaXJlY3RseS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvaGVhcC5jLAoJICBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL29tLmMsCgkgIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc3luYy5jLAoJICBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgd2luMzIvZGV2aWNlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlcGxhY2UgMHglcCB3aXRoICVwLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogUGV0ZXIgTWxhZGVrIDxwbWxhZGVrQHN1c2UuY3o+CglBZGRlZCAyIG1vcmUgQ3plY2gga2V5Ym9hcmQgbGF5b3V0cyBjb21wYXRpYmxlIHdpdGggWEZyZWU4NiA0LjEuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3VybGNhY2hlLmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGluY2x1ZGUvd2luaW5ldC5oOgoJQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJIC0gTW92ZWQgR2V0VXJsQ2FjaGVFbnRyeUluZm9BIGFuZCBDb21taXRVcmxDYWNoZUVudHJ5QSB0byB1cmxjYWNoZS5jLgoJIC0gQWRkZWQgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBHZXRVcmxDYWNoZUVudHJ5SW5mb0V4Vy4KCSAtIEltcGxlbWVudGVkIEludGVybmV0UXVlcnlPcHRpb25XLCBJbnRlcm5ldENvbWJpbmVVcmxbQXxXXS4KCSAtIEludGVybmV0U2V0T3B0aW9uVyBwcmludHMgRklYTUVzIHdpdGggbW9yZSBpbmZvcm1hdGlvbnMuCgkgLSBJTlRFUk5FVF9TZXRMYXN0RXJyb3Igd2FzIGNyYXNoaW5nIGlmIGNhbGxlZCBhZnRlciB0aGUgdGhyZWFkCgkgICBsb2NhbCBzdG9yYWdlIGFyZWEgaGFkIGFscmVhZHkgYmVlbiBkZWxldGVkIChpdCBoYXBwZW5zIGlmIHlvdQoJICAgY2xvc2UgSW50ZXJuZXQgRXhwbG9yZXIgd2hpbGUgdGhlIGRvd25sb2FkIGlzIHN0aWxsIGluIHByb2dyZXNzKS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglCYWNrIG91dCB0aGUgYVJ0cyB2b2x1bWUgcGF0Y2gsIHRoaXMgaXMgbm90IHVzZXItZnJpZW5kbHkgYXQgYWxsLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLAoJICBkbGxzL2Rzb3VuZC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2Rzb3VuZC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kc291bmQvdGVzdHMvZHNvdW5kLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQSBzaW1wbGUgdGVzdCBmb3IgSURpcmVjdFNvdW5kLkdldENhcHMuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS1mYXEuc2dtbDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXcmFwIGZhcS5zZ21sIGluIGFuIGFydGljbGUgdGFnIGluIHdpbmUtZG9jLnNnbWwuCglTZXQgdGhlIGFydGljbGUgY2xhc3MgdG8gJ2ZhcScuCglNb3ZlIHRoZSB0aXRsZSB0byBmYXEuc2dtbC4KCgkqIGRvY3VtZW50YXRpb24vdGVzdGluZy5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCByZWZlcmVuY2VzIHRvIHRoZSBQZXJsIHRlc3RzLgoJQWRkZWQgYSBzZWN0aW9uIGRlc2NyaWJpbmcgaG93IHRvIGJ1aWxkIGFuZCBydW4gdGVzdHMgb24gV2luZG93cy4KCVRoZSBWaXN1YWwgQysrIHNlY3Rpb24gc2hvdWxkIGJlIHJlbGF0aXZlbHkgY29tcGxldGUgYnV0IHRoZSBNaW5HVyBhbmQKCWNyb3NzLWNvbXBpbGluZyBzZWN0aW9uIHN0aWxsIG5lZWQgc29tZSB3b3JrLgoKCSogaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGQgcHJvdG90eXBlcyBmb3IgSUV4dHJhY3RJY29uVyBpbnRlcmZhY2UuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCU1hcnNoYWwgVlRfUjQgKDQgYnl0ZSBmbG9hdCkuCgoJKiB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvbWluZ3dyYXAuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglOZXcgTWluR1cgd3JhcHBlciB0aGF0IG1ha2VzIGdjYyBvbiBMaW51eCBiZWhhdmUgbGlrZSBNaW5HVyBvbgoJV2luZG93cywgdXNpbmcgdGhlIFdpbmUgaGVhZGVycy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5oLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglIYXZlIG9ubHkgb25lIEdVSUQgZm9yIFdpbmUncyBPcGVuR0wgRDNEIGRldmljZS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUluc3RhbGwgYXBwcyBpbiB3aW5kb3dzXHN5c3RlbSBzaW5jZSB0aGF0J3Mgd2hhdCB0aGUgc3lzdGVtIGRpcmVjdG9yeQoJaXMgc2V0IHRvIGluIHRoZSBjb25maWcgZmlsZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglDb3JyZWN0IDIgYnVncyBjb25uZWN0ZWQgdG8gYXN5bmNocm9ub3VzIHNodXRkb3duKCk6CgktIENhbm5vdCBjYWxsIFdTQUdldE92ZXJsYXBwZWRSZXN1bHQoKSBiZWNhdXNlIGNvbXBsZXRpb24gZnVuY3Rpb24KCSAgZGVzdHJveXMgdGhlIG92ZXJsYXBwZWQgc3RydWN0dXJlLgoJLSB3czJfYXN5bmNfY2xlYW51cCgpIGNhbGxlZCB0d2ljZSBpbiBjYXNlIG9mIGZhaWx1cmUuCgoJKiBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCVNldCB0aGUgc29ja2V0IHRvIG92ZXJsYXBwZWQgbW9kZS4KCgkqIGRsbHMvcnBjcnQ0L3Rlc3RzL3JwYy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNraXAgVW5pY29kZSB0ZXN0cyBpZiB0aGVyZSdzIG5vIFVuaWNvZGUgc3VwcG9ydC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gYW4gZXJyb3IgaWYgZHdTaXplIGlzIG5vdCB2YWxpZC4KCU5vIG5lZWQgdG8gZHVtcCBkd0ZsYWdzIGJlZm9yZSBpdCBpcyBpbml0aWFsaXplZC4KCgkqIGluY2x1ZGUvbXN2Y3J0L2Vycm5vLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgRURFQURMT0NLLgoKMjAwMi0xMi0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGluY2x1ZGUvTWFrZWZpbGUuaW46CglBZGRlZCBydWxlcyBmb3IgY29tcGlsaW5nIElETCBmaWxlcy4KCgkqIGRvY3VtZW50YXRpb24vLmN2c2lnbm9yZSwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjoKCUFkZGVkIHJ1bGVzIGZvciBidWlsZGluZyB0aGUgRkFRLgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9zY3JvbGwuYywKCSAgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL3VzZXIvaG9vay5jLCBkbGxzL3VzZXIvaG9vazE2LmMsCgkgIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci9tZXNzYWdlLmgsIGRsbHMvdXNlci9tc2cxNi5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMvdXNlci93aW5wcm9jLmgsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS9pbnB1dC5oLAoJICBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3NweS5oLAoJICBpbmNsdWRlL3N5c21ldHJpY3MuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsCgkgIGluY2x1ZGUvd2lucHJvYy5oLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLAoJICB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2lucHV0LmMsCgkgIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvcXVldWUuYywKCSAgd2luZG93cy9zcHkuYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywKCSAgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmM6CglSZW1vdmVkIGlucHV0LmgsIHF1ZXVlLmgsIHNweS5oIGFuZCBzeXNtZXRyaWNzLmggYW5kIG1vdmVkIHRoZWlyCgljb250ZW50cyB0byB1c2VyLmguCglNb3ZlZCBtZXNzYWdlLmggYW5kIHdpbnByb2MuaCB0byBkbGxzL3VzZXIuCgoJKiBkb2N1bWVudGF0aW9uL2ZhcS5zZ21sLCBkb2N1bWVudGF0aW9uL21ha2Vfd2luZWhxLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1mYXEuc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglBZGRlZCB0aGUgRkFRLCBhbmQgYnVpbGQgaXQgd2hlbiBjcmVhdGluZyB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlCgl3ZWJzaXRlLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBDT01TUEVDIGNvbW1hbmQgaW50ZXJwcmV0ZXIgdG8gcnVuIC5iYXQgZmlsZXMuCgoJKiBtc2Rvcy9pbnQyMS5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXhlZCBlcnJvciBjaGVja2luZyBpbiBmaWxlIGNyZWF0aW9uIGFuZCBjbG9zaW5nLgoKCSogZGxscy9kZHJhdy9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZCBzdXBwb3J0IGZvciBEM0RCTEVORF9PTkUgZm9yIEQzRFJFTkRFUlNUQVRFX3tERVNUL1NSQ31CTEVORC4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9pY21wYXBpLmgsCgkgIGluY2x1ZGUvaXBleHBvcnQuaCwgaW5jbHVkZS93aW5lL2ljbXBhcGkuaCwgaW5jbHVkZS93aW5lL2lwZXhwb3J0Lmg6CglJbnN0YWxsIGlwZXhwb3J0LmggYW5kIGljbXBhcGkuaCB3aXRoIHRoZSBvdGhlciBXaW5kb3dzIGluY2x1ZGVzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsCgkgIGluY2x1ZGUvd3R5cGVzLmgsIGluY2x1ZGUvd3R5cGVzLmlkbDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgbW9yZSB0eXBlcyB0byB3dHlwZXMuaWRsLgoKCSogZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglGaXhlZCB0ZXN0IHRvIHJ1biBmaW5lICgwIGVycm9ycykgb24gV2luIE5ULgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGluY2x1ZGUvc2hsb2JqLmg6CglBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglTSEdldFNldFNldHRpbmdzIGhhcyBub3cgdGhlIHJpZ2h0IHNpZ25hdHVyZSBhbmQgdGhlIGV4cGVjdGVkIGJlaGF2aW9yCgl3aGVuIHRoZSB1c2VyIGlzIGFza2luZyB0byBnZXQgdGhlIGN1cnJlbnQgc2V0dGluZ3MuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglSb2xmIEthbGJlcm1hdHRlciA8cm9sZi5rYWxiZXJtYXR0ZXJAY2l0ZW5nLmNvbT4KCUZpeCBBTlNJLT5Vbmljb2RlIGNhbGxpbmcgZm9yIEV4dHJhY3RJY29uRXhBL1cuCgoJKiBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglNb2RpZnkgUHJpdmF0ZUV4dHJhY3RJY29uc3tBV30gdG8gbWF0Y2ggYmV0dGVyIGN1cnJlbnQgTURTTgoJZG9jdW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDaGFuZ2UgaGVhZGVyIGluc3RhbGwgbG9jYXRpb24gYXMgc3VjaDoKCSAgJHtwcmVmaXh9L2luY2x1ZGUvd2luZS93aW5kb3dzICAtLSBzdGFuZGFyZCBXaW5kb3dzIGhlYWRlcnMKCSAgJHtwcmVmaXh9L2luY2x1ZGUvd2luZS9tc3ZjcnQgICAtLSBNUyBWaXN1YWwgQyBSdW50aW1lIGxpYnJhcnkKCSAgJHtwcmVmaXh9L2luY2x1ZGUvd2luZSAgICAgICAgICAtLSBXaW5lIHNwZWNpZmljIGhlYWRlcnMKCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jLCBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsCgkgIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvdHR5ZHJ2L3VzZXIuYywKCSAgZGxscy94MTFkcnYveDExZm9udC5oLCBncmFwaGljcy9mb250ZW5naW5lLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsCgkgIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZm9udC5oLAoJICBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3BhdGguaCwgaW5jbHVkZS94MTFmb250LmgsIGxvYWRlci90YXNrLmMsCgkgIG9iamVjdHMvZGMuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglNZXJnZWQgZm9udC5oIGFuZCBwYXRoLmggaW50byBnZGkuaC4gTW92ZWQgeDExZm9udC5oIHRvCglkbGxzL3gxMWRydi4gUmVtb3ZlZCBhIG51bWJlciBvZiB1bm5lY2Vzc2FyeSAjaW5jbHVkZXMuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL2hlYWRlci5oLCB0b29scy93aWRsL3BhcnNlci5sLAoJICB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3Byb3h5LmMsIHRvb2xzL3dpZGwvd2lkbC5jLAoJICB0b29scy93aWRsL3dpZGwuaCwgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUGFyc2UgdGhlIE5PVCBvcGVyYXRvciwgdGhlIFtpZGVtcG90ZW50XSBhdHRyaWJ1dGUsIGFuZCB0aGUgaGFuZGxlX3QKCWFuZCBlcnJvcl9zdGF0dXNfdCB0eXBlcy4gSW1wcm92ZWQgc29tZSBwYXJzaW5nIHJ1bGVzIHRvIGdldCByaWQgb2YKCXRoZSBMSU5LX0xBU1QgYW5kIExJTktfU0FGRSBtYWNyb3MuIEVuY2xvc2UgZ2VuZXJhdGVkIC5oIGZpbGUgd2l0aGluCglhbiBleHRlcm4gIkMiIChmb3IgQysrKS4gT3V0cHV0IGZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIHJlZ3VsYXIgUlBDCglpbnRlcmZhY2VzLiAgRml4ZWQgYSBjb3VwbGUgb2YgYnVncy4KCgkqIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglDbGVhbiB1cCBpbnQyMSBoYW5kbGluZy4gTW92ZSBlcnJvciBoYW5kbGluZyB0byB3aW5lZG9zLgoJQ2FsbCBJTlRfSW50MjFIYW5kbGVyIG9ubHkgdG8gZW11bGF0ZSBzZWxlY3RlZCBmdW5jdGlvbnMuCgoyMDAyLTEyLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaGltZW0uYywKCSAgZGxscy93aW5lZG9zL2ludDY3LmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCU1vdmUgRFBNSSBzZWdtZW50cyB0byB3aW5lZG9zLgoKCSogZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIG9ubHkgaGFuZGxlIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBub24tYWxyZWFkeSBsb2FkZWQgdGV4dHVyZXMKCS0gaW1wbGVtZW50IEdldENhcHMgZm9yIEQzRERldmljZTcKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwKCSAgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuaCwgZGxscy9ycGNydDQvcnBjX2VwbWFwLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLAoJICBkbGxzL3JwY3J0NC9ycGNzc19ucF9jbGllbnQuYywgZGxscy9ycGNydDQvcnBjc3NfbnBfY2xpZW50LmgsCgkgIGluY2x1ZGUvcnBjZGNlLmgsIGluY2x1ZGUvcnBjZGNlcC5oLCBpbmNsdWRlL3JwY25kci5oLAoJICBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3JwY3NzX3NoYXJlZC5oLAoJICBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcnBjc3MvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcnBjc3MvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JwY3NzL2VwbWFwX3NlcnZlci5jLAoJICBwcm9ncmFtcy9ycGNzcy9ucF9zZXJ2ZXIuYywgcHJvZ3JhbXMvcnBjc3MvcnBjc3MuaCwKCSAgcHJvZ3JhbXMvcnBjc3MvcnBjc3NfbWFpbi5jOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+LAoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CgktIHByZWxpbWluYXJ5IGltcGxlbWVudGF0aW9uIG9mIGVuZHBvaW50LW1hcHBpbmcgdmlhIGEgbmV3IG9uLWRlbWFuZAoJICBzZXJ2ZXItaXNoIHByb2Nlc3MKCS0gbW9yZSBoZWFkZXIgZml4dXBzCgktIChyZSlpbXBsZW1lbnQgUnBjRXBSZWdpc3RlckEsIFJwY0VwVW5yZWdpc3RlciwgYW5kCgkgIFJwY0VwUmVzb2x2ZUJpbmRpbmcgdXNpbmcgdGhlIG5ldyBycGNzcyBmdW5jdGlvbmFsaXR5CgktIHVwZGF0ZSB0aGUgdG9kbyBsaXN0IGluIHJwY3J0NF9tYWluLmMgYSBiaXQKCS0gbWFueSBiZWF1dGlmaWNhdGlvbnMgYW5kIHRvdWNoLXVwcwoJLSBjb21tYW5kLWxpbmUgY29uZmlndXJhYmxlIHRpbWVvdXQKCS0gbWljcm8tY2xpZW50IGltYmVkZGVkIGluIG5wX3NlcnZlci5jCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUhhbmRsZSBEM0RMSUdIVFNUQVRFX0NPTE9SVkVSVEVYIHRvIHByZXZlbnQgU2V0TGlnaHRTdGF0ZSBmcm9tCglmYWlsaW5nLgoKCSogZGxscy9jYWJpbmV0L01ha2VmaWxlLmluLCBkbGxzL2NhYmluZXQvZmNpLmMsIGRsbHMvY2FiaW5ldC9mZGkuYywKCSAgaW5jbHVkZS9mY2kuaCwgaW5jbHVkZS9mZGkuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgRklYTUU6cyBpbiB0aGUgc3R1YnMuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGltcGxlbWVudCB0aGUgdGV4dHVyaW5nIHRoZSBEM0QzIHdheQoJLSBwcmVwYXJlIGZvciBtdWx0aS10ZXh0dXJpbmcgc3VwcG9ydAoKCSogaW5jbHVkZS93aW5nZGkuaDogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglQcm90ZWN0IFBBTEVUVEVFTlRSWSBhbmQgTE9HUEFMRVRURSB3aXRoICNpZm5kZWZzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy93aW5lZG9zL2ludDIxLmMsIG1zZG9zL2RwbWkuYywKCSAgbXNkb3MvaW50MjEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbmFtZSBvbGQgRE9TM0NhbGwgYXMgSU5UX0ludDIxSGFuZGxlciBhbmQgbWFrZSBuZXcgRE9TM0NhbGwgY2FsbAoJZGlyZWN0bHkgd2luZWRvcyBpbnQyMSBoYW5kbGVyLgoKCSogZGxscy93aW5lZG9zL2ludDEzLmMsIHdpbjMyL2RldmljZS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIGludDEzIGhhbmRsZXIgdG8gd2luZWRvcy4KCgkqIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmM6IEplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJRml4IGZvciBNSURJIE1hcHBlci4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9lZGl0LmMsCgkgIGRsbHMvYXZpZmlsMzIvYWNtc3RyZWFtLmMsIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2F2aWZpbDMyL2V4dHJhY2h1bmsuYywKCSAgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLCBkbGxzL2F2aWZpbDMyL2ljbXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL3dhdmZpbGUuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywKCSAgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywKCSAgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLAoJICBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywKCSAgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLAoJICBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywKCSAgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2ltbTMyL2ltbS5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9hbGxvYy5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsCgkgIGRsbHMvbXNhY20vbXNhZHAzMi9tc2FkcDMyLmMsIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5jLAoJICBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zYWNtL3N0cmVhbS5jLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvbXBlZ2wzLmMsIGRsbHMvbXN2aWRlby9tY2l3bmQuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLAoJICBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywKCSAgZGxscy9zaGVsbDMyL2NvbnRyb2wuYywgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy9zaGx3YXBpL2Fzc29jLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYywKCSAgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLAoJICBkbGxzL3VzZXIvZGRlL21pc2MuYywgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywgZGxscy91c2VyL3Jlc291cmNlLmMsCgkgIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGdyYXBoaWNzL3BhdGguYywKCSAgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsCgkgIHByb2dyYW1zL3dpbnZlci93aW52ZXIuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tdWx0aW1vbi5jLAoJICB3aW5kb3dzL3BhaW50aW5nLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgSEFORExFIHR5cGVjYXN0cy4KCjIwMDItMTEtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZCBEM0QgY2FwYWJpbGl0eS4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLAoJICBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywKCSAgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWN0dWFsbHkgdXNlIHRoZSBWZXJ0ZXhCdWZmZXIgc3R1YnMKCS0gaW1wbGVtZW50IExvY2sgZnVuY3Rpb24gdG8gcHJldmVudCBjcmFzaCB3aGVuIHRoZSBzdHVicyBhcmUgdXNlZAoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywKCSAgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglCZWdpbm5pbmcgb2Ygc3VwcG9ydCBmb3IgRDNENyAvIEQzRERldmljZTcuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW46CglSZW1vdmVkIHNvbWUgY2hlY2tsaW5rIHJ1bGVzIG1hZGUgdW5uZWNlc3NhcnkgYnkgdGhlIC16IGRlZnMgbGlua2VyCglmbGFnLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCSAtIHNvbWUgbW9yZSBjb2RlIHNoYXJpbmcgYmV0d2VlbiBEM0REZXZpY2UgdmVyc2lvbnMKCSAtIGltcGxlbWVudGF0aW9uIG9mIEQzREZWRl9UTFZFUlRFWCBmb3JtYXQgZmFzdCBwYXRoCgoJKiBpbmNsdWRlL21zdmNydC9zdGRkZWYuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBhIHdheSB0byB0ZWxsIG1zdmNydCB0byBkZWZpbmUgd2NoYXJfdC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCSAtIGZpeGVkIEQzREZWRl9WRVJURVggY2FzZQoJIC0gc29tZSBvdGhlciBtaXNjZWxsYW5lb3VzIGZpeGVzCgoJKiBwcm9ncmFtcy93aW5lZGJnL1JFQURNRTogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ2hhbmdlIENSTEYgZW5kIG9mIGxpbmVzIGluIExGIG9ubHkuCgoJKiBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJIC0gc3RhcnQgb2Ygc3VwcG9ydCBmb3IgZGV2aWNlIGxvY2tpbmcgLyB1bmxvY2tpbmcgdmlhIGdsUmVhZFBpeGVscyAvCgkgICBnbERyYXdQaXhlbHMgaW50ZXJmYWNlIChzbG93IGJ1dCBzaG91bGQgYmUgZW5vdWdoIGZvciBhIHN0YXJ0KQoJIC0gaW1wbGVtZW50IG9uZSB2ZXJ0ZXggY2FzZSBmb3IgdGhlIEQzRDMvNyBEcmF3UHJpbWl0aXZlIGZ1bmN0aW9ucwoJIC0gZml4IGEgbWlzc2luZyBcbiBpbiBhIFRSQUNFIGNhbGwKCgkqIGRsbHMva2VybmVsL25scy9iZWwubmxzOiBIbGViIFZhbG9za2EgPGVsX2dsb2J1c0B0dXQuYnk+CglTb21lIGZpeGVzIHRvIEJlbGFydXNpYW4gbG9jYWxlLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEZpeGVkIGJ1ZyBjYXVzZWQgYnkgY2hhbmdlcyB0byBXaW5lLgoJLSBBZGRlZCBzdXBwb3J0IGZvciBydW5uaW5nIGFsbCB0aGUgdGVzdHMgaW4gYmF0Y2guCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+Cgl7R2V0LFNldH1UaHJlYWRQcmlvcml0eUJvb3N0IGFuZCBTZXRUaHJlYWRJZGVhbFByb2Nlc3NvciBhcmUgbWlzc2luZwoJb24gV2luOTUgLT4gdXNlIEdldFByb2NBZGRyZXNzLgoJQ2xlYW51cCB0aGUgaGFuZGxpbmcgb2YgT3BlblRocmVhZC4KCUNoZWNrIFN1c3BlbmRUaHJlYWQgYWZ0ZXIgYSB0aHJlYWQgdGVybWluYXRlcyAobmVlZGVkIGJ5IElwaXgpLgoJUmVtb3ZlIHVubmVjZXNzYXJ5IHZlcnNpb24gY2hlY2tzIChjaGVjayBmb3IKCUVSUk9SX0NBTExfTk9UX0lNUExFTUVOVEVEIGFuZCBzaW1pbGFyIGluc3RlYWQpLgoJQ2xlYW51cCBjYXN0cywgc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb25zLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZHJpdmUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglHZXREaXNrRnJlZVNwYWNlKGFsbCBOVUxMcykgY3Jhc2hlcyBvbiBOVDQgLT4gcmVtb3ZlZC4KCUdldERpc2tGcmVlU3BhY2UoIi4iIHwgIi4uIikgZmFpbHMgb24gV2luOTggYW5kIE5UNCBidXQgc3VjY2VlZHMgb24gWFAKCS0+IHJlbW92ZWQuCglTa2lwIHRoZSBHZXREaXNrRnJlZVNwYWNlIHRlc3RzIG9uIGZsb3BweSBkcml2ZXMgYmVjYXVzZSBOVCBwb3BzIHVwIGEKCU1lc3NhZ2VCb3ggaWYgbm8gZmxvcHB5IGlzIHByZXNlbnQuCglGaXggdGhlIGVycm9yIGNvZGUgY2hlY2tzIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuCglXaW45eCwgTlQ0IGFuZCBYUC4KCVNraXAgdGhlIHVuaWNvZGUgdGVzdHMgaWYgdGhlIGZpcnN0IGNhbGwgcmV0dXJucwoJRVJST1JfQ0FMTF9OT1RfSU1QTEVNRU5URUQuCglXaGVuZXZlciBhIHRlc3QgZmFpbHMsIHByaW50IHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gKHR5cGljYWxseSByZXR1cm4KCWNvZGUgYW5kIEdldExhc3RFcnJvcigpISkgdG8gbGV0IHRoZSBkZXZlbG9wZXIgZmlndXJlIG91dCB3aGF0IGlzCgl3cm9uZy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2Vudmlyb24uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTZXRFbnZpcm9ubWVudFZhcmlhYmxlQShOVUxMLCBOVUxMKSBjcmFzaGVzIG9uIFdpbjk4IC0+IHJlbW92ZWQuCglTZXRFbnZpcm9ubWVudFZhcmlhYmxlQSgiIiwgdmFsdWUpIGNyYXNoZXMgb24gTlQ0IC0+IHJlbW92ZWQuCglUaGUgYmVoYXZpb3Igb2YgU2V0RW52aXJvbm1lbnRWYXJpYWJsZUEoIiIsICIiKSB2YXJpZXMgdG8gbXVjaCAtPgoJcmVtb3ZlZC4KCVRlc3QgdGhlIGJlaGF2aW9yIG9mIFNldEVudmlyb25tZW50VmFyaWFibGV7QSxXfShuYW1lLCAiIikgdGFraW5nIGludG8KCWFjY291bnQgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gV2luOXggYW5kIE5ULgoJVGVzdCB0aGUgYmVoYXZpb3Igb2YgR2V0RW52aXJvbm1lbnRWYXJpYWJsZXtBLFd9KG5hbWUsIGJ1ZiwgMCkuCglGaXggdGhlIGVycm9yIGNvZGUgY2hlY2tzIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuCglXaW45eCwgTlQ0IGFuZCBYUC4KCVNraXAgdGhlIHVuaWNvZGUgdGVzdHMgaWYgdGhlIGZpcnN0IGNhbGwgcmV0dXJucwoJRVJST1JfQ0FMTF9OT1RfSU1QTEVNRU5URUQuCglXaGVuZXZlciBhIHRlc3QgZmFpbHMsIHByaW50IHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gKHR5cGljYWxseSByZXR1cm4KCWNvZGUgYW5kIEdldExhc3RFcnJvcigpISkgdG8gbGV0IHRoZSBkZXZlbG9wZXIgZmlndXJlIG91dCB3aGF0IGlzCgl3cm9uZy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgaW5jbHVkZS9zaGVsbGFwaS5oOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglBZGRlZCBzdHViIGltcGxlbWVudGF0aW9uIHdpdGggY29ycmVjdCBwcm90b3R5cGVzIGZvcgoJRXh0cmFjdEFzc29jaWF0ZWRJY29uRXhBL1cuCgoJKiBwcm9ncmFtcy9NYWtlZmlsZS5pbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2Ugd2NtZCBhdmFpbGFibGUgZnJvbSBpbnNpZGUgdGhlIHNvdXJjZSB0cmVlLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW1wbGVtZW50ZWQgR2V0UmVuZGVyVGFyZ2V0LgoKCSogZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBlbnVtZXJhdGlvbiBvZiBaQnVmZmVyIGZvcm1hdC4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglVcGRhdGUgdGhlIGRlYnVnZ2VyIGRvY3VtZW50YXRpb24gZm9yIGN1cnJlbnQgdXNhZ2UuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJUGFydGlhbGx5IGltcGxlbWVudGVkIGtlcm5lbC91c2VyIHRpbWVzIGluIEdldFRocmVhZFRpbWVzIChiYXNlZCBvbiBhCglwYXRjaCBieSBSeWFuIEN1bW1pbmcpLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudCB3Z2xDcmVhdGVMYXllckNvbnRleHQgZm9yIGxheWVyIDAuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglEbyBub3QgZm9yZ2V0IHRvIEFkZFJlZiB0aGUgcmV0dXJuZWQgRGlyZWN0M0QgaW50ZXJmYWNlLgoKCSogZGxscy94MTFkcnYveDExZGRyYXcuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZCBERENBUFMyX0NBTlJFTkRFUldJTkRPV0VEIGNhcGFiaWxpdGllcyB0byBvdXIgRERyYXcgZHJpdmVyLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgZGVjbGFyYXRpb24gZm9yIFNpZ25hbE9iamVjdEFuZFdhaXQuCgoJKiBpbmNsdWRlL21zdmNydC9zdGRsaWIuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBjb25zdGFudHMgZm9yIF9zZXRfZXJyb3JfbW9kZSgpLgoKCSogZGxscy93aW5tbS93aW5tbS5jOiBKZWZmIFNtaXRoIDx3aHlkb3VidEBob3RtYWlsLmNvbT4KCUZpeGVkIDMyIGJpdCBmbGFnIGluIG1pZGlPdXRTaG9ydE1zZy4KCgkqIGluY2x1ZGUvZGRyYXcuaDogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJUmVwbGFjZSBMUEREU1VSRkFDRURFU0MgYnkgTFBERFNVUkZBQ0VERVNDMiBpbiBJRGlyZWN0RHJhd1N1cmZhY2U0CgltZXRob2RzIGRlY2xhcmF0aW9uLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeGVkIHRleHQgbW9kZSB2YWx1ZS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB0aGUgNDggYW5kIDk2a0h6IFdBVkVfRk9STUFUIGNvbnN0YW50cy4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvaGVhZGVyLmgsIHRvb2xzL3dpZGwvcGFyc2VyLmgsCgkgIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUhhbmRsZSBlbmNhcHN1bGF0ZWQgdW5pb25zIGluIGEgY2xlYW5lciAoYW5kIGxlc3MgYnVnZ3kpIHdheS4gRW1pdCB0aGUKCW5hbWVzICJEVU1NWVVOSU9OTkFNRSIgYW5kICJEVU1NWVNUUlVDVE5BTUUiIGZvciBhbm9ueW1vdXMgdW5pb25zIGFuZAoJc3RydWN0cy4gU3VwcG9ydCBjb25zdCBhbmQgZXh0ZXJuIGRlZmluaXRpb25zLiBSZXRhaW4gdG9rZW5zIChhbmQKCXdoZXRoZXIgbnVtYmVycyBhcmUgaGV4IG9yIG5vdCkgdXNlZCBmb3IgY29tcHV0aW5nIGNvbnN0YW50CglleHByZXNzaW9ucywgc28gdGhhdCB0aGUgZnVsbCBleHByZXNzaW9uIGNhbiBiZSB3cml0dGVuIHRvIHRoZSBoZWFkZXIKCWZpbGUgaW5zdGVhZCBvZiB0aGUgY29tcHV0ZWQgaW50ZWdlciByZXN1bHQgb2YgdGhlIGV4cHJlc3Npb24uIFBhcnNlCgl0aGUgc2l6ZW9mKCkgb3BlcmF0b3IuICBDb21wdXRlIGFuZCByZW1lbWJlciBjb25zdGFudCBkZWZpbml0aW9ucyBhbmQKCWVudW0gdmFsdWVzIHNvIHRoZXkgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lvbnMuIEltcHJvdmVkIGlkZW50aWZpZXIKCWxvb2t1cCBzcGVlZC4gRml4ZWQgc29tZSBidWdzLgoKCSogaW5jbHVkZS93dHlwZXMuaWRsOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIG1pc3NpbmcgdW5pb24gbmFtZXMgZm9yIHNvbWUgZW5jYXBzdWxhdGVkIHVuaW9ucy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IGNhcHMgZmlsbGluZyB0byBiZSBtb3JlIGluIGxpbmUgd2l0aCB3aGF0IHdlIHN1cHBvcnQKCS0gb3B0aW1pemUgYSBsaXR0bGUgYml0IHRoZSBEcmF3UHJpbWl0aXZlIGZ1bmN0aW9uCgoJKiBmaWxlcy9maWxlLmM6IE1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglGaXhlZCBzb21lIHByb2JsZW1zIHdpdGggYXN5bmNocm9ub3VzIGZpbGUgSU8uCgoyMDAyLTExLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgkgLSBmaXggdGV4dHVyZSBzbm9vcGluZyAocGx1cyBhZGRzIHNub29wIGZvciAxNTU1IGZvcm1hdCkKCSAtIGFkZCB0ZXh0dXJlIG1lbW9yeSB1c2FnZSB0cmFja2luZwoKCSogZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGluY2x1ZGUvd2luYmFzZS5oOgoJU3RldmUgTHVzdGJhZGVyIDxzdGV2ZS5sdXN0YmFkZXJAcGhpbGlwcy5jb20+CglQcm92aWRlIHN0dWJzIGZvciBEbnNIb3N0bmFtZVRvQ29tcHV0ZXJOYW1lQS9XLgoKCSogZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUFkZGVkIGRlZmluaXRpb25zIGZvciBhIGNvdXBsZSBvZiBzdHViIGZ1bmN0aW9ucyB0aGF0IHdlIGltcG9ydCBzbwoJdGhhdCB3ZSBkb24ndCBpbXBvcnQgc3R1YnMgZGlyZWN0bHkuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsCgkgIGRsbHMvd2luZWRvcy9pbnQyNS5jLCBkbGxzL3dpbmVkb3MvaW50MjYuYywKCSAgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2ludDI1LmMsCgkgIG1zZG9zL2ludDI2LmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlZCBoYW5kbGVycyBmb3IgaW50MjUgYW5kIGludDI2IHRvIHdpbmVkb3MuCgoJKiBvYmplY3RzL2ZvbnQuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRW51bUZvbnQxNiBzaG91bGQgZW51bWVyYXRlIGdkaSBmb250cyB0b28uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIFR5cGVzYWZlIHBhcmFtZXRlcnMgZnJvbSBUUkVFVklFV19Ob3RpZnlGb3JtYXQuCgktIFJld3JpdGUgVFJFRVZJRVdfTm90aWZ5Rm9ybWF0LgoJLSBGaXggc2V2ZXJhbCBpbnZvY2F0aW9ucyBvZiBUUkVFVklFV19TZW5kVHJlZXZpZXdOb3RpZnkuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBTd2l0Y2hUb1RocmVhZC4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXggZm9yIGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGFicy4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4IGZvciBkZXByZWNhdGVkIHVzZSBvZiBsYWJlbCBhdCB0aGUgZW5kIG9mIGNvbXBvdW5kIHN0YXRlbWVudC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLCBvbGUvb2xlMm5scy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDb3JyZWN0IEdldE51bWJlckZvcm1hdEEgZm9yIHplcm8gZGVjaW1hbHMgYW5kIGZvciB6ZXJvIGdyb3VwaW5nLgoKCSogcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6IE1hdHRoZXcgRGF2aXNvbiA8bS5kYXZpc29uQHZpcmdpbi5uZXQ+CglQcmV2ZW50IFdpbmhlbHAgZnJvbSBjcmFzaGluZyB3aGVuIGl0IGNhbid0IGZpbmQgdGhlIGhlbHBmaWxlLgoKCSogaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kZHJhdy5oOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkIHNvbWUgRERSQVcgYW5kIEQzRCBkZWZpbml0aW9ucy4KCgkqIHRvb2xzL3dpbmFwaS9vcHRpb25zLnBtLCB0b29scy93aW5hcGkvd2luMzIuYXBpLAoJICB0b29scy93aW5hcGkvd2luYXBpLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCS0gTWlub3IgaW1wcm92ZW1lbnQgYW5kIGJ1ZyBmaXhlcy4KCjIwMDItMTEtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6IFJlbGVhc2UgMjAwMjExMjUuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMTEtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbGlicmFyeS9wb3J0LmMsCgkgIHNjaGVkdWxlci9wdGhyZWFkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHB0aHJlYWRzIG9uIEZyZWVCU0QgKGJhc2VkIG9uIHBhdGNoIGJ5IEFsZXhhbmRyZSBKdWxsaWFyZCkuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBBZGRlZCBDU19EQkxDTEtTIHN0eWxlIHRvIGRpYWxvZyB3aW5kb3cgY2xhc3MuCgoJKiBvYmplY3RzL2ZvbnQuYzogU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCUNoYW5nZSBzb21lIG9mIHRoZSBudW1iZXIgc2VwZXJhdG9ycyB0byAiTmV1dHJhbCIgcmF0aGVyIHRoYW4gIkxlZnQgdG8KCXJpZ2h0Ii4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvdGltZXIuYzoKCVN0ZXZlIEx1c3RiYWRlciA8c3RldmUubHVzdGJhZGVyQHBoaWxpcHMuY29tPgoJU3R1YnMgZm9yIENyZWF0ZVRpbWVyUXVldWUgYW5kIERlbGV0ZVRpbWVyUXVldWVFeC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS93aW5zdmMuaDoKCVN0ZXZlIEx1c3RiYWRlciA8c3RldmUubHVzdGJhZGVyQHBoaWxpcHMuY29tPgoJQXNzb3J0ZWQgV2luMmsvV2luWFAgc3R1YnMuCgoJKiBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtTGluZS5jb20+CglDb252ZXJ0ZWQgaW1wbGVtZW50YXRpb24gb2YgX2xzZWVrIHRvIF9sc2Vla2k2NCwgaW1wbGVtZW50ZWQgX2xzZWVrIGJ5CgljYWxsaW5nIF9sc2Vla2k2NC4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBpbmNsdWRlL3dpbm50LmgsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL29iamVjdC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCByZWdpc3RyeSBjaGFuZ2Ugbm90aWZpY2F0aW9ucy4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJWDExRFJWX0RyYXdBcmM6IERvbid0IG92ZXJ3cml0ZSB0aGUgRU5EQ0FQIHN0eWxlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3Blbi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJWDExRFJWX1NlbGVjdFBlbigpOiBEb24ndCB1c2UgYSBwZW4gd2l0aCBoYWxmIHRoZSB3aWR0aC4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCB0aGUgbWlzc2luZyBjeCBtZW1iZXIgdG8gdGhlIE15RExHSVRFTVRFTVBMQVRFRVggc3RydWN0LgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQ29udmVydGVkIGltcGxlbWVudGF0aW9uIG9mIF9zdGF0IGFuZCBfZnN0YXQgdG8gX3N0YXRpNjQgYW5kCglfZnN0YXRpNjQuCglJbXBsZW1lbnRlZCBfc3RhdC9fZnN0YXQgYnkgY2FsbGluZyBfc3RhdGk2NC9fZnN0YXRpNjQuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBzdXBwb3J0IGZvciBWYXJBbmQgYmV0d2VlbiBpbnRlZ2Vycy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvaGVscGVyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBQcmV2ZW50IHRoZSBiYWNrYnVmZmVyIHRvIGFsc28gaGF2ZSB0aGUgZnJvbnRidWZmZXIgZmxhZyBzZXQuCgktIExvZyB0aGUgTG9ja2luZyBmbGFncy4KCS0gUHJpbnQgc3ltYm9saWMgbmFtZSAoaWYgYW55KSBvZiB6ZXJvIHZhbHVlcyBmb3IgYml0IGZpZWxkcyAodGhhbmtzCgkgIEFuZGkpLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmM6CglNb3ZlZCBzb21lIEdldFRocmVhZFRpbWVzIHRlc3RzIG91dCBvZiB0aGUgdG9kbyBibG9jay4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2NoZWR1bGVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwKCSAgc2VydmVyL3RyYWNlLmM6CglSeWFuIEN1bW1pbmcgPHJ5YW5AY29tcGxldGVseS5raWNrcy1hc3Mub3JnPgoJUGFydGlhbGx5IGltcGxlbWVudCBHZXRUaHJlYWRUaW1lcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogV2FybmluZ3MgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC90aW1lLmMsCgkgIGluY2x1ZGUvd2ludGVybmwuaDoKCUd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CgktIE1vdmUgU2V0U3lzdGVtVGltZSwgR2V0VGltZVpvbmVJbmZvcm1hdGlvbiBhbmQKCSAgU2V0VGltZVpvbmVJbmZvcm1hdGlvbiBpbXBsZW1lbnRhdGlvbiB0byBudGRsbC4KCS0gRG9jdSB1cGRhdGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJTFZOX0dFVERJU1BJTkZPIHNlZW1zIHRvIGFsd2F5cyBiZSBBbnNpLgoKCSogb2JqZWN0cy9kaWIuYzogU3RldmUgTHVzdGJhZGVyIDxzdGV2ZS5sdXN0YmFkZXJAcGhpbGlwcy5jb20+CglTdHJldGNoRElCaXRzOiBhdm9pZCBjcmFzaCBvbiBudWxsIHBvaW50ZXJzLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGQgc3VwcG9ydCBmb3IgcGFpbnRpbmcgU0JTX1NJWkVCT1ggc3R5bGUgcHJvcGVybHkuCgoyMDAyLTExLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsCgkgIGRsbHMvd2luZWRvcy9pbnQxMS5jLCBkbGxzL3dpbmVkb3MvaW50MTUuYywgZGxscy93aW5lZG9zL2ludDVjLmMsCgkgIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kcG1pLmMsCgkgIG1zZG9zL2ludDExLmMsIG1zZG9zL2ludDE1LmMsIG1zZG9zL2ludDVjLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlZCBoYW5kbGVycyBmb3IgaW50MTEsIGludDE1IGFuZCBpbnQ1YyB0byB3aW5lZG9zLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5oLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZCBpbXBsZW1lbnRhdGlvbiBmb3IgRmluZERldmljZSBmdW5jdGlvbgoJLSBzb21lIG1pc2NlbGxhbmVvdXMgY2xlYW4tdXBzIC8gYWRkaXRpb25zCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglSZXBsYWNlIG1vc3QgUFJPRklMRV9HZXRXaW5lSW5pIGNhbGxzIGJ5IGRpcmVjdCByZWdpc3RyeSBhY2Nlc3Nlcy4KCUtlZXAgdGhlIGNvbmZpZyBrZXkgb3BlbiB0byBxdWVyeSBhbGwgdmFsdWVzIGluc3RlYWQgb2YgcmUtb3BlbmluZyBpdAoJYWxsIHRoZSB0aW1lLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjoKCUFkZGVkIGRpc3QgcnVsZSBmb3IgYnVpbGRpbmcgdGhlIGRpc3RyaWJ1dGlvbiB0YXJiYWxscy4KCgkqIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglBZGRlZCBDU19EQkxDTEtTIHNvIHRoYXQgc3lzdHJheSByZWNlaXZlcyBkb3VibGUgY2xpY2tzLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy9pbnQzMy5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsCgkgIGRsbHMvd2luZWRvcy92Z2EuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVZHQSB0ZXh0IG1vZGUgbm8gbG9uZ2VyIGZsaWNrZXJzIGFuZCBpdCBpcyBtdWNoIGZhc3Rlci4KCVZHQSB0ZXh0IG1vZGUgaXMgbm93IGluaXRpYWxpemVkIGVhcmxpZXIuCglWR0EgdGV4dCBtb2RlIGlzIG5vdyBlbXVsYXRlZCBldmVuIHdpdGhvdXQgY29uc29sZS4KCgkqIGRsbHMvdXNlci9ob29rLmM6IEJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29ycmVjdCBVbmhvb2tXaW5kb3dzSG9vazogY2xlYXIgdGhlIGhhbmRsZSBzbyB0aGF0IHRoZSBzZXJ2ZXIgZG9lc24ndAoJdHJ5IHRvIHVzZSBpdC4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVJlZW5hYmxlIE9wZW5HTCBzdXJmYWNlJ3MgZmxpcCBtZXRob2QuCglSZWVuYWJsZSBleGVjdXRlIGJ1ZmZlcnMuCglTb21lIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6IEplbnMgSG9mZm1hbm4gPGhvZmZtYWpzQGdteC5kZT4KCVBhc3MgY29ycmVjdCBpbnN0YW5jZSBpbiBrZXlib2FyZF9ob29rIHNldHVwLgoKCSogd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYzoKCU1hdHRoZXcgRGF2aXNvbiA8bS5kYXZpc29uQHZpcmdpbi5uZXQ+CglGaXggc29tZSB1bmljb2RlLT5hc2NpaSBjYWxscy4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLnk6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQXZvaWQgdXNpbmcgbGFiZWxzIGF0IHRoZSBlbmQgb2YgY29tbXBvdW5kIHN0YXRlbWVudHMuCgoyMDAyLTExLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvcHJvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL21haW4uYzoKCVJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBQUk9GSUxFX0xvYWRXaW5lSW5pKCkuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9kb3NleGUuaCwKCSAgZGxscy93aW5lZG9zL2ludDJmLmMsIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGluY2x1ZGUvbWlzY2VtdS5oLAoJICBtc2Rvcy9pbnQyZi5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBpbnQyZiBoYW5kbGVyIHRvIHdpbmVkb3MuCglDbGVhbiB3aW5lZG9zIGhlYWRlcnMgYSBiaXQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLAoJICBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluOgoJIFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mICJtYWtlIGV2ZXJ5dGhpbmciIGlzIG5vdyB0byBidWlsZCBzZXBhcmF0ZQoJZ3VpZGVzIHJhdGhlciB0aGFuIHRoZSBiaWcgb25lLgoJRGV0ZXJtaW5lcyB0aGUgbmFtZSBvZiB0aGUgaW5zdGFsbGVkIGRvY2Jvb2sgZmlsdGVyIChkYjJodG1sIG9yCglkb2Nib29rMmh0bWwsIGV0Yy4pIGluIGNvbmZpZ3VyZSwgZGVmYXVsdGluZyB0byBmYWxzZSBpZiBhYnNlbnQuCgoJKiB3aW5kb3dzL2lucHV0LmM6IE1pa2UgSGVhcm4gPG0uaGVhcm5Ac2lnbmFsLnFpbmV0aXEuY29tPgoJQWx0ZXJlZCBXTV9NT1VTRUhPVkVSIHNvIHRoZSBsUGFyYW0gYW5kIHdQYXJhbSBmaWVsZHMgYXJlIHNldAoJY29ycmVjdGx5IHRvIHZpcnR1YWwga2V5IHN0YXRlcyBhbmQgY3Vyc29yIHBvc2l0aW9uLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWY6CglSZW1vdmVkIHRoZSBXSU5FX05PX1NUUklDVCBzdXBwb3J0LgoKCSogaW5jbHVkZS9iYXNldHNkLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBbGxvdyBhcHBzIHRvIGRlZmluZSAgX19pbnR7OCwxNiwzMiw2NH0gb24gdGhlIGNvbW1hbmQgbGluZS4KCjIwMDItMTEtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9tZW51LmM6IEZpeGVkIHVzZSBvZiBIQk1NRU5VXyogaW4gc3dpdGNoIHN0YXRlbWVudHMuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9wcmludGRydi5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9mb250LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvdGV4dC5jLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvbWFwcGluZy5jLAoJICBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIG9iamVjdHMvYml0bWFwLmMsCgkgIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGliLmMsCgkgIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsCgkgIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcmVnaW9uLmM6CglNYWRlIGdkaSBjb21waWxlIHdpdGggLURTVFJJQ1QuCgoJKiBkbGxzL2dkaS9wcmludGRydi5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywKCSAgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJRml4ZWQgYSBudW1iZXIgb2YgLURTVFJJQ1QgaXNzdWVzLgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9saXN0Ym94LmMsCgkgIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3VpdG9vbHMuYywKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvY2FyZXQuYywgZGxscy91c2VyL2NvbW0xNi5jLAoJICBkbGxzL3VzZXIvZm9jdXMuYywgZGxscy91c2VyL2hvb2suYywgZGxscy91c2VyL2RkZS9jbGllbnQuYywKCSAgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9kZGUvc2VydmVyLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvcGFpbnRpbmcuYywKCSAgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvdXNlci90ZXh0LmMsIHdpbmRvd3MvY2xhc3MuYywKCSAgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGNlLmMsCgkgIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsCgkgIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsCgkgIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zcHkuYywKCSAgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywKCSAgd2luZG93cy93aW5wcm9jLmM6CglNYWRlIHVzZXIgY29tcGlsZSB3aXRoIC1EU1RSSUNULgoKCSogZmlsZXMvcHJvZmlsZS5jLCB0b29scy93aW5laW5zdGFsbDoKCVJlbW92ZWQgc3VwcG9ydCBmb3IgY29udmVydGluZyBvbGQgZm9ybWF0IGNvbmZpZywgZXZlcnlib2R5IHNob3VsZAoJaGF2ZSBjb252ZXJ0ZWQgYnkgbm93LgoJUmVtb3ZlZCBsb2cgaW5mbyBmcm9tIHdpbmVpbnN0YWxsLCB0aGlzIGluZm8gaXMgYWxyZWFkeSBpbiBDaGFuZ2VMb2cuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvdXNlci9kZGUvY2xpZW50LmMsIGRsbHMvdXNlci9kZGUvZGRlbWwxNi5jLAoJICBkbGxzL3VzZXIvZGRlL21pc2MuYywgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywgZGxscy91c2VyL21lc3NhZ2UuYywKCSAgaW5jbHVkZS9jdXJzb3JpY29uLmgsIGluY2x1ZGUvdXNlci5oLCB3aW5kb3dzL2NsYXNzLmMsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLAoJICB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3N0cnVjdDMyLmMsCgkgIHdpbmRvd3Mvc3lzY29sb3IuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmM6CglGaXhlZCBtb3JlIC1EU1RSSUNUIGlzc3Vlcy4KCgkqIGRsbHMvdXNlci90ZXh0LmMsIGRsbHMvdXNlci91c2VyMTYuYzoKCVByb3Blcmx5IHNwbGl0IHRoZSAxNi1iaXQgdmVyc2lvbnMgb2YgR3JheVN0cmluZyBhbmQgVGFiYmVkVGV4dE91dC4KCgkqIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL21lbnUuYywKCSAgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvdXNlci9jYXJldC5jLCBkbGxzL3VzZXIvZm9jdXMuYywKCSAgZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMvdXNlci9wcm9wZXJ0eS5jLCBkbGxzL3VzZXIvdGV4dC5jLAoJICBkbGxzL3VzZXIvdXNlcjE2LmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9jbGlwYm9hcmQuYywKCSAgd2luZG93cy9kY2UuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbmhlbHAuYywgd2luZG93cy93aW5wcm9jLmM6CglNb3ZlZCBzb21lIG1vcmUgMTYtYml0IGZ1bmN0aW9ucyB0byB1c2VyMTYuYy4KCUEgZmV3IGZpeGVzIGZvciAtRFNUUklDVC4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL29sZTIuYywKCSAgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsIGRsbHMvb2xlMzIvcnBjLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZS5jOgoJQ29tcGlsZSBvbGUzMiB3aXRoIC1EU1RSSUNULgoKMjAwMi0xMS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsCgkgIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLAoJICBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9kZXNrdG9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGZsZHJfZnMuYywgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYywKCSAgZGxscy9zaGVsbDMyL3NobGV4ZWMuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYzoKCUpvaGFuIERhaGxpbiA8amRhaGxpbkBhc3luYy5jb20uYnI+CglNYWtlIHNoZWxsMzIgY29tcGlsZSB3aXRoIC1EU1RSSUNULgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY2RsZy5oLAoJICBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglBbmRyZXcgSm9obiBIdWdoZXMgPGh1Z2hlczIwMDJAYnRpbnRlcm5ldC5jb20+CglNYWtlIGNvbW1kbGcgY29tcGlsZSB3aXRoIC1EU1RSSUNULgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE1hdHRoZXcgRGF2aXNvbiA8bS5kYXZpc29uQHZpcmdpbi5uZXQ+CglSZW1vdmUgb2Jzb2xldGUgLS1lbmFibGUtb3BlbmdsLgoKCSogb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGFsaWFzaW5nIHByb2JsZW1zIChkbyBub3QgdXNlIChQT0lOVCopJnJlY3QgY29uc3RydWN0cykuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGluY2x1ZGUvd2luY29uLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSB0aGUgQ09PUkQgPC0+IERXT1JEIGNvbnZlcnNpb24gdGhlIGNhbm9uaWNhbCB3YXkuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOiBTdGV2ZSBMdXN0YmFkZXIgPHN0ZXZlLmx1c3RiYWRlckBwaGlsaXBzLmNvbT4KCUhhdmUgUG9zdE1lc3NhZ2UgY2FsbCBQb3N0VGhyZWFkTWVzc2FnZSB3aGVuIGh3bmQgaXMgTlVMTC4KCgkqIGluY2x1ZGUvd2luc29jay5oOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWRkIGRlZmluaXRpb24gZm9yIFdTQUVESVNDT04uCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogUmVtb3ZlZCBPcGVuR0wgdGhyZWFkIHNhZmV0eSBjaGVjay4KCVJlbmFtZWQgb3B0aW9uIHRvIC0td2l0aG91dC1vcGVuZ2wgZm9yIGNvbnNpc3RlbmN5LgoKCSogZGxscy9nZGkvZW5obWZkcnYvb2JqZWN0cy5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L29iamVjdHMuYywgZGxscy9nZGkvd2luZy5jLCBkbGxzL2dkaS93aW4xNmRydi9mb250LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3MvbWFwcGluZy5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsCgkgIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLAoJICBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywKCSAgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglTb21lIC1EU1RSSUNUIGZpeGVzLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IE1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglGaXhlZCBjaXJjdWxhciBpbmNsdWRlIHNlcXVlbmNlIHdpbnNvY2suaCAtPiB3aW5kb3dzLmggLT4gd2luc29jazIuaAoJLT4gd2luc29jay5oLgoKCSogd2luZG93cy9jbGFzcy5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIEdldC9TZXRDbGFzc0xvbmcgZnJvbSBhc2NpaSB0byB1bmljb2RlLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJUmVwbGFjZWQgQ3JlYXRlRENBIGJ5IENyZWF0ZURDVyBpbiBMb2FkSW1hZ2VXLgoKCSogZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uaCwKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2QzZHZlcnRleGJ1ZmZlci5jLAoJICBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGRyYXcvZGRjb21pbXBsLmgsCgkgIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5oLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBpbmNsdWRlL2QzZC5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gQ2xlYW4gdXAgYWxsIHRoZSBEM0QgQ09NIGhhbmRsaW5nIChidXQgdGhlIHVuZGVybGF5aW5nIGNvZGUgaXMgc3RpbGwKCSAgYXMgdWdseSBhcyBiZWZvcmUpLgoJLSBIYW5kbGUgcHJvcGVybHkgKGllIGFzIG9uIHJlYWwgV2luZG93cykgbmVnYXRpdmUgdmFsdWVzIGluCgkgIHJlY3RhbmdsZXMgZHVyaW5nIGJsaXR0aW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglVc2UgdGhlICcteiBkZWZzJyBsaW5rZXIgb3B0aW9uIGlmIHN1cHBvcnRlZCB0byBiZXR0ZXIgY2F0Y2ggdW5kZWZpbmVkCglzeW1ib2xzLgoKCSogY29udHJvbHMvZWRpdC5jOiBDYXJsIFNvcGNoYWsgPGNhcmwuc29wY2hha0BjZWdpczEyMy5jb20+CglJZ25vcmUgYnVmZmVyIGxpbWl0IG9uIFdNX1NFVFRFWFQuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2RjLmM6CglTdGV2ZSBMdXN0YmFkZXIgPHN0ZXZlLmx1c3RiYWRlckBwaGlsaXBzLmNvbT4KCVN0dWIgZm9yIFNldERDQnJ1c2hDb2xvci4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluOgoJQWRkIC1sYyB3aGVuIGxpbmtpbmcgZGxscyB0byBhdm9pZCB3YXJuaW5ncyBvbiBGcmVlQlNELgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvaGVhcC5jLAoJICBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL29tLmMsCgkgIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvc2VjLmMsCgkgIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywgZmlsZXMvZG9zX2ZzLmMsCgkgIGZpbGVzL2ZpbGUuYywgZmlsZXMvc21iLmMsIGZpbGVzL3RhcGUuYywgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLAoJICBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Jlc291cmNlLmMsIG1lbW9yeS9nbG9iYWwuYywKCSAgbWlzYy9yZWdpc3RyeS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3Nub29wLmMsCgkgIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi9uZXdmbnMuYzoKCUFuZHJldyBKb2huIEh1Z2hlcyA8aHVnaGVzMjAwMkBidGludGVybmV0LmNvbT4KCUJ1aWxkIG50ZGxsIHdpdGggLURTVFJJQ1QuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglBZGRlZCB3cmFwcGVyIHRvIHJlcGxhY2UgbGxzZWVrK2xyZWFkIHRvIGF2b2lkIEhBTkRMRS9IRklMRQoJY29udmVyc2lvbnMuCgoJKiB0b29scy93aW5laW5zdGFsbDogU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCS0gSWYgcnVubmluZyB3aW5laW5zdGFsbCBhbmQgYXNraW5nIG5vdCB0byBpbnN0YWxsLCB0aGUgc3ltYm9saWMgbGlua3MKCSAgYXJlIG5vIGNyZWF0ZWQgcG9pbnRpbmcgdG8gdGhlIHNvdXJjZSB0cmVlIGZpbGVzIHJhdGhlciB0byB0aGUKCSAgKG5vbi1leGlzdGluZykgJGxpYmRpcgoJLSBJZiBXaW5kb3dzIGlzIGZvdW5kIG9uIHRoZSBzeXN0ZW0sIHRoZSBpbnN0YWxsZXIgZG9lcyBub3QgYXNzdW1lCgkgIHRoYXQgdGhlIHVzZXIgaXMgaW50ZXJlc3RlZCBpbiB1c2luZyBpdC4gSW5zdGVhZCwgdGhlIHVzZXIgaXMgYXNrZWQsCgkgIGFuZCBpZiBzaGUgYW5zd2VycyAibm8iLCBXaW5lIGlzIGluc3RhbGxlZCBhcyBpZiBubyBXaW5kb3dzIHdhcwoJICBmb3VuZC4KCgkqIHRvb2xzL3dpZGwvaGVhZGVyLmMsIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcGFyc2VyLnksCgkgIHRvb2xzL3dpZGwvcHJveHkuYywgdG9vbHMvd2lkbC93aWRsLmMsIHRvb2xzL3dpZGwvd2lkbC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCAiZ2VuZXJhdGUgaGVhZGVycyBvbmx5IiBjb21tYW5kLWxpbmUgb3B0aW9uLiBJbXBsZW1lbnRlZCBpbXBvcnRzCglmcm9tIGluc2lkZSBpbnRlcmZhY2UgZGVmaW5pdGlvbnMuIEZpeGVkIGEgZmV3IHByb2JsZW1zIHdpdGgKCWdlbmVyYXRpbmcgaGVhZGVyIGZpbGVzIGZvciBDT00gaW50ZXJmYWNlcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBsb2FkZXIvdGFzay5jLCBtc2Rvcy9pbnQyMS5jLAoJICBtc2Rvcy9pbnRlcnJ1cHRzLmMsIHdpbmRvd3MvdXNlci5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVtb3ZlZCBsYXN0IHVzZXJzIG9mIG1zZG9zL2ludGVycnVwdHMuYy4KCjIwMDItMTEtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvaG9vay5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9ob29rLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90cmFjZS5jLAoJICBzZXJ2ZXIvdXNlci5oOgoJQWRkZWQgc3VwcG9ydCBmb3Igc3lzdGVtLXdpZGUgaG9va3MuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVJlbW92ZWQgLW5vaW1wb3J0IG9uIGZ1bmN0aW9ucyB0aGF0IGFyZSBmb3J3YXJkcyB0byBudGRsbC4KCUFkZGVkIC1ub2ltcG9ydCBvbiBmdW5jdGlvbnMgdGhhdCBkaXJlY3RseSBjYWxsIHRoZSBsaWJjIGVxdWl2YWxlbnQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Dbi5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Dbi5yYywgZGxscy9jb21tZGxnL3JzcmMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NuLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIHRvb2xzL3dtYy9sYW5nLmM6CglUaXNoZW5nIENoZW4gPHNoYWRvd0BqY25wLnBrdS5lZHUuY24+CglBZGRlZCBTaW1wbGlmaWVkIENoaW5lc2Ugc3VwcG9ydC4KCgkqIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvMTYuYywKCSAgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19wcml2YXRlLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciB1c2luZyBXaW4zMiBBUEkgcmVsYXRpdmUgdG8gMTYgYml0IHN1YnN5c3RlbSBmb3IgdGhlIDMyIGJpdAoJcGFydC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQmV0dGVyIHN1cHBvcnQgZm9yIG11bHRpcGxlIG1pZGkgZGV2aWNlcyBvbiB0aGUgT1NTIGludGVyZmFjZS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuaCwKCSAgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy93aW5oZWxwL3N0cmluZy5jLAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVdyb3RlIGJhY2sgJiBoaXN0b3J5IHN1cHBvcnQuCglDb3JyZWN0bHkgaW1wbGVtZW50ZWQgPDwgYW5kID4+IGJ1dHRvbnMuCglBZGRlZCBzdXBwb3J0IGZvciBwYWdlIGxldmVsIG1hY3Jvcy4KCgkqIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+Cgl3aW5lZHVtcCB3YXMgc3RpbGwgdXNpbmcgdGhlICJpbml0IiBrZXl3b3JkIGluIHRoZSAuc3BlYyBmaWxlLgoKCSogZGxscy9rZXJuZWwva3JubDM4Ni5leGUuc3BlYywgaW5jbHVkZS9zZWxlY3RvcnMuaCwKCSAgbWVtb3J5L3NlbGVjdG9yLmMsIG1zZG9zL3Z4ZC5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmVtb3ZlIHNvbWUgV2luMzJzIHNwZWNpZmljIGNvZGUuCgoJKiBtc2Rvcy9pbnQxMy5jLCBtc2Rvcy9pbnQyMC5jLCBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgaW5jbHVkZS9taXNjZW11Lmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW1vdmVkIG9ic29sZXRlIGNvZGUuCgoyMDAyLTExLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUltcGxlbWVudGVkIHNvbWUgaXNtYmMqIGZ1bmN0aW9ucyAoYmFzZWQgb24gYSBwYXRjaCBieSBHcmVnIFR1cm5lcikuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jYWJpbmV0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvY2FiaW5ldC9NYWtlZmlsZS5pbiwgZGxscy9jYWJpbmV0L2NhYmluZXQuc3BlYywKCSAgZGxscy9jYWJpbmV0L2ZjaS5jLCBkbGxzL2NhYmluZXQvZmRpLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvZmNpLmgsIGluY2x1ZGUvZmRpLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gb2YgY2FiaW5ldC5kbGwuCgoJKiBpbmNsdWRlL3JpY2hlZGl0Lmg6IFJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglBZGQgc29tZSBSaWNoRWRpdCAyLjAvMy4wIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCBkZWZpbml0aW9uIGZvciBQZWVrTmFtZWRQaXBlCglGaXhlZCBhIGxvdCBvZiBiYWRseSBpbmRlbnRlZCBmdW5jdGlvbnMuCgoyMDAyLTExLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaS5leGUuc3BlYywKCSAgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsLnNwZWMsCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2Rpc3BsYXkuc3BlYywgZGxscy91c2VyL21vdXNlLnNwZWMsCgkgIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCVJlbW92ZWQgc3VwcG9ydCBmb3IgJ3JzcmMnIHNwZWMgZmlsZSBzdGF0ZW1lbnQuCgoJKiBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3JpY2hlZGl0L3J0Zi5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJR2V0IHJpZCBvZiB0aGUgdmFyYXJnIGFuZCBnZW5lcmljIHN0dWZmLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaToKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVJlbW92ZWQgc29tZSB1bnVzZWQgdHlwZXMuCgoJKiBkbGxzL2tlcm5lbC9jb21wdXRlcm5hbWUuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUFkZGVkIG5ldGRiLmggcHJvdGVjdGlvbi4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmMsIHNjaGVkdWxlci90aW1lci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzdHJpY3QgYWxpYXNpbmcgaXNzdWUgaW4gX19wdGhyZWFkX29uY2UgYW5kIFNldFdhaXRhYmxlVGltZXIuCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvaW50MWEuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbW92ZWQgbGFzdCB1c2VyIG9mIG1zZG9zL2ludDFhLmMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywKCSAgZGxscy93aW5lZG9zL2Rvc2FzcGkuYywgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBpbmNsdWRlL2NhbGxiYWNrLmgsCgkgIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kcG1pLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZW1vdmVkIG9ic29sZXRlIElOVF9JbnQzMUhhbmRsZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTZXR0aW5nIHRoZSBob3Jpem9udGFsIHNjcm9sbGJhciBjYW4gY2hhbmdlIHRoZSB2YWx1ZXMgZm9yIHRoZQoJdmVydGljYWwgb25lIHNvIG1ha2Ugc3VyZSB3ZSBjb21wdXRlIHRoZW0gc2VwYXJhdGVseS4KCgkqIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYzoKCUFkZGVkIGVtcHR5IFgxMURSVl9PcGVuR0xfSW5pdCBmb3IgdGhlIG5vbi1PcGVuR0wgY2FzZS4KCgkqIGRsbHMvbnRkbGwvbGFyZ2VfaW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc3RyaWN0IGFsaWFzaW5nIHByb2JsZW0gaW4gUnRsRW5sYXJnZWRVbnNpZ25lZERpdmlkZS4KCgkqIGluY2x1ZGUvd2luY29uLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc3RyaWN0IGFsaWFzaW5nIHByb2JsZW0gaW4KCV9fd2luZV9HZXRMYXJnZXN0Q29uc29sZVdpbmRvd1NpemVfd3JhcHBlci4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuaCwKCSAgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIHdpbmRvdyBpbmZvcm1hdGlvbiBmcm9tIHRoZSAuaGxwIGZpbGUuCglBZGRlZCBzdXBwb3J0IGZvciB3aW5kb3cgbnVtYmVycyBpbiBsaW5rLgoKCSogd2luZG93cy9pbnB1dC5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCU1vdmVkIGltcGxlbWVudGF0aW9uIG9mIExvYWRLZXlib2FyZExheW91dCBmcm9tIEFTQ0lJIHRvIFVuaWNvZGUuCgoJKiBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludXNlci5oOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU5vIHZlcnNpb24gb2YgR05VIEMrKyAodW5saWtlIEdOVSBDKSBzdXBwb3J0cyB1bm5hbWVkIHN0cnVjdHMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdXBwb3J0IGNvbW1jdHJsIG1lc3NhZ2UtaGVscGVyIG1hY3JvcyBpbiBDKysuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIERlbGV0ZURDIGluc3RlYWQgb2YgRGVsZXRlT2JqZWN0IHRvIGZyZWUgSERDcyAoc3BvdHRlZCBieSBEaWV0cmljaAoJVGVpY2tuZXIgPERpZXRyaWNoX1RlaWNrbmVyQHQtb25saW5lLmRlPikuCglDbGVhciB0aGUgaW1hZ2VsaXN0IHN0cnVjdHVyZSBvbiBkZWxldGlvbiwgYXMgc29tZSBzdHVwaWQgYXBwcyBmcmVlCglpbWFnZWxpc3RzIG11bHRpcGxlIHRpbWVzLgoKCSogd2luZG93cy91c2VyLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgRW51bURpc3BsYXlTZXR0aW5ncyBmcm9tIEFTQ0lJIHRvIFVuaWNvZGUuCgoJKiBpbmNsdWRlL3dpbnRlcm5sLmg6IE1pa2UgTWNDb3JtYWNrIDxtaWtlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIGRlZmluaXRpb25zIGZvciBzdHJ1Y3R1cmVzIHVzZWQgYnkgTnRRdWVyeUZpbGVJbmZvLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglSeWFuIEN1bW1pbmcgPHJ5YW5AY29tcGxldGVseS5raWNrcy1hc3Mub3JnPgoJLSBNb3ZlIFN0Z0lzU3RvcmFnZUZpbGUxNidzIGltcGxlbWVudGF0aW9uIHRvIFN0Z0lzU3RvcmFnZUZpbGU7IHBvcnQKCSAgaXQgdG8gV2luMzIuCgktIE1vdmUgU3RnSXNTdG9yYWdlRmlsZSBmcm9tIHN0b3JhZ2UuYyB0byBzdG9yYWdlMzIuYy4KCS0gU3RnSXNTdG9yYWdlRmlsZSBvbmx5IHJldHVybnMgU19PSywgU1RHX0VfRklMRU5PVEZPVU5ELCBhbmQgU19GQUxTRS4KCS0gU3RnSXNTdG9yYWdlRmlsZSBkb2Vzbid0IGNoZWNrIGlmIGEgZmlsZSBpcyBsYXJnZSBlbm91Z2ggdG8gYmUgYQoJICBzdG9yYWdlIGZpbGUsIGl0IG9ubHkgY2hlY2tzIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIDgtYnl0ZSBtYWdpYy4KCgkqIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvd2luaW5ldC5oOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CgktIEFkZGVkIHNvbWUgZGVmaW5pdGlvbnMuCgktIEZpeGVkIHNpZ25hdHVyZSBvZiBHZXRVcmxDYWNoZUVudHJ5SW5mb0V4Vy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglJbnN0YWxsIGxpbmsgdG8gcnVuZGxsMzIuZXhlIHRvby4KCgkqIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUZpeCBjcmFzaCB3aGVuIGludm9rZWQgd2l0aCBubyBhcmd1bWVudHMuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzogUnlhbiBDdW1taW5nIDxyeWFuQGNvbXBsZXRlbHkua2lja3MtYXNzLm9yZz4KCU1ha2UgTG9va3VwSWNvbklkRnJvbURpcmVjdG9yeUV4MTYgY2FsbCBMb29rdXBJY29uSWRGcm9tRGlyZWN0b3J5RXgsCglpbnN0ZWFkIG9mIHRoZSBvdGhlciB3YXkgYXJvdW5kLgoKMjAwMi0xMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2NvbXB1dGVybmFtZS5jLCBwcm9ncmFtcy9ydW5kbGwzMi9ydW5kbGwzMi5jOgoJV2FybmluZyBmaXhlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2QzZDgvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZ2x1MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS94MTFkcnYuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglMb2FkIE9wZW5HTCBsaWJyYXJ5IGR5bmFtaWNhbGx5IGZyb20geDExZHJ2LgoKCSogbG9hZGVyL21vZHVsZS5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCURvbid0IGZ1bGx5IHByb2Nlc3MgRnJlZUxpYnJhcnkgd2hlbiBwcm9jZXNzIGlzIHN0b3BwaW5nLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJUnlhbiBDdW1taW5nIDxyeWFuQGNvbXBsZXRlbHkua2lja3MtYXNzLm9yZz4KCUltcGxlbWVudGVkIEdldEZpbGVTaXplRXggKGJhc2VkIG9uIGEgcGF0Y2ggYnkgU3RldmUgTHVzdGJhZGVyKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcnVuZGxsMzIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcnVuZGxsMzIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3J1bmRsbDMyL3J1bmRsbDMyLmM6CglBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglBZGRlZCBydW5kbGwzMiB1dGlsaXR5LgoKCSogZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywKCSAgaW5jbHVkZS9jYWxsYmFjay5oLCBtc2Rvcy9kcG1pLmMsIHdpbjMyL2RldmljZS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJRGV2aWNlSW9Db250cm9sIG5vdyBjYWxscyB3aW5lZG9zIGludGVycnVwdCBoYW5kbGVycy4KCUZpeGVkIFJhd01vZGVTd2l0Y2guCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYzogVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUZpeCBTTV9DWVZUSFVNQiwgU01fQ1hTTVNJWkUsIFNNX0NYTUVOVUNIRUNLIGFuZCBTTV9DWU1FTlVDSEVDSy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmgsCgkgIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ubGV4LmwsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8ueWFjYy55LAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJld3JvdGUgbWFjcm8gZW5naW5lIGZvciBhZGRpbmcgZHluYW1pYyBtYWNybyBsb2FkaW5nIGNhcGFiaWxpdHkuCglXcm90ZSBSZWdpc3RlclJvdXRpbmUgYW5kIElzQm9vayBtYWNyb3MuCgoJKiBkbGxzL2dkaS9tZmRydi9kYy5jLCBkbGxzL3dpbmVwcy90ZXh0LmMsIG9iamVjdHMvZm9udC5jOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3BlciBoYW5kbGluZyBvZiBTZXRUZXh0Q2hhcmFjdGVyRXh0cmEuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvY29tcHV0ZXJuYW1lLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLAoJICBpbmNsdWRlL3dpbmJhc2UuaCwgbWlzYy9yZWdpc3RyeS5jLCB3aW4zMi9pbml0LmMsIHdpbjMyL25ld2Zucy5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCS0gQWxsb3cgc2V0dGluZyBOZXRCSU9TIENvbXB1dGVyTmFtZSB0aHJvdWdoIHJlZ2lzdHJ5LgoJLSBLZWVwIG9sZCBiZWhhdmlvciBhcyBkZWZhdWx0LCB1c2luZyBuZXcgY29uZmlnIG9wdGlvbiB0byBjaGFuZ2UuCgktIEltcGxlbWVudCBTZXRDb21wdXRlck5hbWUoKSwgU2V0Q29tcHV0ZXJOYW1lRXgoKSwKCSAgR2V0Q29tcHV0ZXJOYW1lRXgoKS4KCS0gQ29tcHV0ZXJOYW1lIGluaXRpYWxpemF0aW9uIG1vdmVkIHRvIGtlcm5lbDMyLgoKCSogZGxscy9udGRsbC9ydGwuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBSdGxEb3NQYXRoTmFtZVRvTnRQYXRoTmFtZV9VLgoKCSogZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jLCBkbGxzL3VzZXIvdGVzdHMvd2luLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgdGVzdHMgY29tcGlsZSBvbiBXaW5kb3dzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBbHNvIHNpbGVuY2UgSVNoZWxsTGlua0FfZm5TZXRTaG93Q21kLgoKCSogZGxscy93aW5lcHMvYnJ1c2guYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2dyYXBoaWNzLmMsCgkgIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIEVzY2FwZXMgKl9QQVRIIGFuZCBQT1NUU0NSSVBUX0lHTk9SRS4KCjIwMDItMTEtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsCgkgIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLAoJICBpbmNsdWRlL3gxMWRydi5oOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNsaWVudCBzaWRlIHJlbmRlciBmb250cyBmb3IgWFNlcnZlcnMgd2l0aG91dCB0aGUgUmVuZGVyIGV4dGVuc2lvbgoJdXNpbmcgWDExIGNvcmUgcmVxdWVzdHMuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS91c2VyLmgsIHdpbmRvd3MvZGNlLmMsCgkgIHdpbmRvd3Mvd2luLmM6CglBZGRlZCBSZWxlYXNlREMgZnVuY3Rpb24gdG8gdGhlIFVTRVIgZHJpdmVyIGludGVyZmFjZS4KCjIwMDItMTEtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJV2UgbmVlZCB0byBjb21wYXJlIHRoZSB3b3JsZCB0cmFuc2Zvcm1zIChhdCBsZWFzdCB0aGUgNCBzY2FsaW5nCgllbGVtZW50cykgd2hlbiB3ZSBhY2NlcHQgYSBmb250IGZyb20gdGhlIGNhY2hlLgoJR2V0IHRoZSBjb3JyZWN0IHZhbHVlcyBmb3IgdGhlIHVuZGVyc2NvcmUgc2l6ZSBhbmQgcG9zaXRpb24uCglBZGRlZCBhIG1pc3NpbmcgY2xvc2VkaXIoKS4KCgkqIGRsbHMvd2luZXBzL2dyYXBoaWNzLmM6IEh1dyBEYXZpZXMgPGh1d0Bjb2Rld2VhdmVycy5jb20+CglGaXggUFNEUlZfRHJhd0FyYyB0byB3b3JrIHByb3Blcmx5IHdpdGggbG9naWNhbCBjb29yZHMuCgoJKiBkbGxzL3dpbmVwcy9kb3dubG9hZC5jLCBkbGxzL3dpbmVwcy9wcGQuYywgZGxscy93aW5lcHMvdHlwZTQyLmM6CglIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJSW5zdGVhZCBvZiB0cnlpbmcgdG8gZG93bmxvYWQgdGhlIFR5cGUgNDIgZ2xweWggbWV0cmljcyBpbmNyZW1lbnRhbGx5Cgkod2hpY2ggbW9zdCBwcmludGVycyBkb24ndCBzZWVtIHRvIHVuZGVyc3RhbmQpLCB3ZSdsbCBkb3dubG9hZCB0aGUKCXdob2xlIGhtdHggdGFibGUgaW4gb25lIGdvIChzaWdoKSB1bmxlc3MgaXQncyBsYXJnZXIgdGhhbiA2NEsgaW4gd2hpY2gKCWNhc2Ugd2UnbGwgZ28gYmFjayB0byB1c2luZyBhIFR5cGUgMSBmb250LgoKCSogZGxscy93aW5lcHMvdHlwZTEuYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIGNhbid0IGNhY2hlIHRoZSB1bnNjYWxlZCBmb250J3MgaGZvbnQsIHNpbmNlIHRoZSBtYXBwaW5nIG1vZGUgbWF5CgljaGFuZ2UuICBUaGlzIHJlc3VsdGVkIGluIHNvbWUgZ2x5cGhzIGJlaW5nIGRvd25sb2FkZWQgYXQgdGhlIHdyb25nCglzaXplLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwKCSAgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCU1ha2Ugc3VyZSB3aWRsIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZSBoZWFkZXJzIGl0IGhhcyB0byBnZW5lcmF0ZS4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IFVwZGF0ZWQgZGVwZW5kZW5jaWVzLgoKCSogZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL2xpbmUuYywgd2luZWRlZmF1bHQucmVnOgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCVplcm8gb3V0IHRoZSByZXR1cm5lZCBMSU5FVFJBTlNMQVRFQ0FQUyBzdHJ1Y3R1cmUuCglSZWFkIGNvdW50cnkgbGlzdCBmcm9tIHRoZSByZWdpc3RyeS4KCUFkZCBhIGxvYWQgb2YgY291bnRyaWVzIHRvIHdpbmVkZWZhdWx0LnJlZy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJU2VuZCBhIENETl9GSUxFT0sgaW4gRklMRURMRzk1X09uT3Blbk11bHRpcGxlRmlsZXMuCglSZXN0cnVjdHVyZSB0aGUgaGFuZGxpbmcgb2YgQ3VzdG9tIGRpYWxvZyBub3RpZmljYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gQWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIGltYWdlIGxpc3RzLgoJLSBBZGQgVEJOX0lOSVRDVVNUT01JWkUgbm90aWZpY2F0aW9uLgoJLSBDb3JyZWN0bHkgcG9wdWxhdGUgVEJOX1FVRVJZREVMRVRFLgoJLSBTdXBwb3J0IFRCTl9HRVRCVVRUT05JTkZPVy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIGJ1ZyB3aXRoIGNvbWJvIGJveGVzIHdoZXJlIG9ubHkgMSBpdGVtcyB3YXMgYmVpbmcgZGlzcGxheWVkLgoKCSogd2luZG93cy93aW4uYzoKCUZpeGVkIHNpZ24gcHJvYmxlbSBpbiBHZXRXaW5kb3dXb3JkL0xvbmcgY2hlY2sgZm9yIG9mZnNldCBsYXJnZXIgdGhhbgoJdGhlIHdpbmRvdyBleHRyYSBieXRlcy4KCgkqIHdpbmVkZWZhdWx0LnJlZzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBJU3RyZWFtIGFuZCBJU3RvcmFnZSBpbnRlcmZhY2UgZW50cmllcy4KCgkqIG1lbW9yeS9nbG9iYWwuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNhcCB0aGUgcmVwb3J0ZWQgcGh5c2ljYWwgbWVtb3J5IHRvIDJHQiB0byBwcmV2ZW50IGFwcGxpY2F0aW9ucwoJKGUuZy4gUXVpY2tUaW1lIDYpIGZyb20gY3Jhc2hpbmcuCgoJKiBmaWxlcy9wcm9maWxlLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNYWludGFpbiBsb3dlciBjYXNlZCBmaWxlIG5hbWVzIGluIHRoZSBXaW5lIGNvbmZpZyBkaXJlY3RvcnkuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJVXNlIGlzbzg4NTktMTUgb24gRXVyb3BlYW4ga2V5Ym9hcmRzLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV29yayB3aXRoIHRoZSBjb3JyZWN0IHN1YmtleSB3aXRoIGxvYWRpbmcga2V5cy4gTm90IGEgdHJ1ZSBmaXggdG8gdGhlCglMb2FkS2V5L1NhdmVLZXkgc2l0dWF0aW9uLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglGaXggYSBmZXcgR0RJIG1lbW9yeSBsZWFrcy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZUBjb2Rld2VhdmVycy5jb20+CglBZGQgc3R1YnMgYW5kIGRlY2xhcmF0aW9ucyBmb3IgV1NBSW5zdGFsbFNlcnZpY2VDbGFzc0EvVy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgY291bnRlciB0byBrZWVwIHRyYWNrIG9mIHRoZSBudW1iZXIgb2Ygb3V0c3RhbmRpbmcgYXN5bmMKCXJlcXVlc3RzLiAgVGhpcyBnZXRzIGFyb3VuZCBhIHByb2JsZW0gd2hlcmUgYSBTZXRFdmVudCBjb3VsZCBiZSBjYWxsZWQKCWJlZm9yZSBhIHByZXZpb3VzIGV2ZW50IGhhZCBiZWVuIGRlYWx0IHdpdGguCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgSW1hZ2VMaXN0X0dldEltYWdlSW5mbyBiZWZvcmUgYWRqdXN0aW5nIHRoZQoJc2l6ZS4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOiBIdXcgRGF2aWVzIDxodXdAY29kZXdlYXZlcnMuY29tPgoJUmVkdWNlIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBkZWJ1ZyBzdHJpbmdzIHRvIDgwIGNoYXJhY3RlcnMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmg6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCURvIG5vdCBkZWZpbmUgTVpfU1VQUE9SVEVEIGlmIHdlIGRvIG5vdCBoYXZlIHN5cy92bTg2LmggZm9yIGFsbCB0aGUKCXN0cnVjdCBkZWZpbml0aW9ucy4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydi5oOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglPbmx5IGluY2x1ZGUgY3Vyc2VzIGhlYWRlcnMgaWYgd2UgYXJlIHVzaW5nIGN1cnNlcyBhdCBhbGwuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJSVR5cGVJbmZvOjpJbnZva2Ugbm93IGlzIGFibGUgdG8gaW52b2tlIGEgZnVuY3Rpb24gZXZlbiB3aGVuIGl0IGlzCglwcm92aWRlZCB3aXRoIGEgYnlyZWYgYXJndW1lbnQuCgoJKiBkbGxzL21zdmNydC9wcm9jZXNzLmM6CglGaXhlZCBkYXRhIGNvcHlpbmcgaW4gbXN2Y3J0X2FyZ3Z0b3MgKHNwb3R0ZWQgYnkgYmlsbEB0YW5pd2hhLm9yZykuCgoJKiBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGwsIHRvb2xzL3dpZGwvd2lkbC5jOgoJTW92ZWQgcnBjLmggaW5jbHVzaW9uIGluIHdpZGwtZ2VuZXJhdGVkIGZpbGUgc28gdGhhdCB0ZXN0cyBjb21waWxlLgoKCSogaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUveDExZm9udC5oLAoJICBvYmplY3RzL2ZvbnQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgbWlzbWF0Y2hlcyBiZXR3ZWVuIHRoZSBXaW5lIGhlYWRlcnMgYW5kIHRoZSBNaWNyb3NvZnQgaGVhZGVycy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuaCwKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNldmVyYWwgYnVncyBpbjoKCSAgLSBwYWdlL3BhcmFncmFwaCByZWFkaW5nIGZvciA+PSBXaW45NSBoZWxwIGZpbGVzIHdpdGhvdXQgY29tcHJlc3Npb24KCSAgLSBiaXRtYXAgJiBtZXRhZmlsZSBsb2FkaW5nCgkgIC0gYnRyZWUgcmVhZGluZwoJTm93IGNhY2hpbmcgYml0bWFwIGxvYWRpbmcgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KCVNldmVyYWwgaW50ZXJuYWwgY29kZSBjbGVhbnVwcy4KCgkqIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJLSBBZGRlZCBzdXBwb3J0IGZvciBDRl9FTkFCTEVURU1QTEFURUhBTkRMRS4KCS0gUmV2aXNlZCB0aGUgRklYTUUgb24gdW5zdXBwb3J0ZWQgZmxhZ3MgdG8gbm90IHJlcG9ydGVkIHRoZSBmbGFncyBub3cKCSAgdHVybmVkIHN1cHBvcnRlZC4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLAoJICBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJQWRkZWQgc3R1YnMgZm9yIElzSG9zdEluUHJveHlCeXBhc3NMaXN0IGFuZCBHZXRVcmxDYWNoZUVudHJ5SW5mb0V4QS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWN0dWFsbHkgZXhpdCBsb29wIG9uICdcMCcgd2hpbGUgcHJpbnRpbmcgYSBzdHJpbmcuCgoJKiBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5pZGw6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVdyb3RlIGEgV2luZS1jb21wYXRpYmxlIHd0eXBlcy5pZGwsIGFuZCBnZW5lcmF0ZWQgd3R5cGVzLmggZnJvbSBpdC4KCjIwMDItMTEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9mcHUuYywgZGxscy93aW5lZG9zL2ludDEyLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQxMy5jLCBkbGxzL3dpbmVkb3MvaW50MWEuYywgZGxscy93aW5lZG9zL2ludDJhLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQ0MS5jLCBkbGxzL3dpbmVkb3MvaW50NGIuYywKCSAgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgbXNkb3MvZnB1LmMsIG1zZG9zL2ludDEyLmMsCgkgIG1zZG9zL2ludDJhLmMsIG1zZG9zL2ludDQxLmMsIG1zZG9zL2ludDRiLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIHNpbXBsZSBpbnRlcnJ1cHQgaGFuZGxlcnMgdG8gd2luZWRvcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJU2lsZW5jZSBJU2hlbGxMaW5rOjpTZXRTaG93Q21kIGZvciB0aGUgY2FzZSB3ZSBzdXBwb3J0LgoKCSogZG9jdW1lbnRhdGlvbi9idWdzLnNnbWw6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJVXBkYXRlIFJlcG9ydGluZyBCdWdzIHNlY3Rpb24gdG8gcmVmbGVjdCBjdXJyZW50IHN0YXRlIG9mIHdpbmUgYnVncy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCXVjb250ZXh0LmggY2hlY2sgcmVxdWlyZXMgc2lnbmFsLmguCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJVGhlIGFscmVhZHkgaW1wbGVtZW50ZWQgZnVuY3Rpb24gc3dzY2FuZiB3YXMgbWlzc2luZyBhbiBlbnRyeS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGxpbmsgYWdhaW5zdCAtbGN1cHMgZGlyZWN0bHksIGJ1dCBkeW5hbWljYWxseSBsb2FkIGl0IGlmCglwcmVzZW50IChqdXN0IGxpa2UgZnJlZXR5cGUgZXRjLikKCgkqIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC90ZXN0cy9ydGxzdHIuYzoKCVJvYmVydCBTaGVhcm1hbiA8Ui5KLlNoZWFybWFuQHdhcndpY2suYWMudWs+CglGaXJzdCBvZiB0ZXN0cyBmb3IgdGhlIFJ0bCogc3RyaW5nIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsc3RyLmM6CglSb2JlcnQgU2hlYXJtYW4gPFIuSi5TaGVhcm1hbkB3YXJ3aWNrLmFjLnVrPgoJSW1wbGVtZW50ZWQgUnRsVW5pY29kZVN0cmluZ1RvSW50ZWdlci4KCgkqIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWRkIG11bHRpbWVkaWEuc2dtbCB0byBzdGFuZGFsb25lIHdpbmUtZGV2ZWwgZ3VpZGUsIHdhcyBhbHJlYWR5IGluCgl3aW5lLWRvYy5zZ21sLgoKCSogZG9jdW1lbnRhdGlvbi9kYjJodG1sLXdpbmVocToKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNvcnJlY3RseSBpZGVudGlmeSBhIFJlZEhhdCBkaXN0cmlidXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbDogRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCVJlYXJyYW5nZWQgY29kZSB0byBtYWtlIGl0IG1vcmUgcmVhZGFibGUuCglBZGRlZCBpbiBSZWRoYXQgaW5zdGFsbCBpbnN0cnVjdGlvbnMsIGFuZCBtYWRlIG5vdGUgaW4gT3RoZXIgRGlzdHJvJ3MKCXNlY3Rpb24gdG8gY2hlY2sgdGhlIFJlZGhhdCBwYWdlIGlmIHlvdSBhcmUgdXNpbmcgTWFuZHJha2UsIGFzIGl0IGlzCglSZWRoYXQtYmFzZWQuCglVcGRhdGVkIEZUUCBsaXN0IGluIHRoZSBkb2NzLCBvbmx5IDEgbGluayBkaWZmZXJlbnQgZnJvbSB0aGUgbW9zdCByZWNlbnQKCUFOTk9VTkNFLCB3b3chCglBZGRlZCBpbnN0cnVjdGlvbnMgb24gdW4tdGFycmluZywgY29tcGlsaW5nLCBhbmQgaW5zdGFsbGluZyB3aW5lIGZyb20KCWEgdGFyYmFsbC4KCgkqIGRvY3VtZW50YXRpb24vd2luZS1kb2Muc2dtbDogRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCUNvcnJlY3RlZCBjb2RlIHNwYWNpbmcgZm9yIHJlYWRhYmlsaXR5LgoKCSogZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbDogRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCUNoYW5nZSBmaXJzdCB1c2FnZSBvZiB0aGUgV29yZCBMaW51eCBpbnRvIGEgbGluayB0byB0aGUgbGludXggRkFRIGF0CglsaW51eGRvYy5vcmcuCglDaGFuZ2UgZmlyc3QgdXNhZ2Ugb2YgdGhlIHdvcmQgWDExIGludG8gYSBsaW5rIHRvIHRoZSBYMTEgRkFRIGF0Cgl4ZnJlZTg2Lm9yZy4KCUFkZCB3aW5lLWRldmVsIHRvIHRoZSBwbGFjZXMgdG8gZ28gZm9yIGJ1cm5pbmcgcXVlc3Rpb25zLgoJVXBwZWQgdGhlIHN5c3RlbSByZXEncyB0byB0aGUgY3VycmVudCByZXF1aXJlbWVudHMuCglGaXhlZCBhIGZldyBncmFtbWF0aWNhbCBlcnJvcnMgYW5kIG1hZGUgdGhlIHRleHQgbG9vayBhIGxpdHRsZQoJcHJldHRpZXIuCgoJKiBkb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50OiBEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJQWRkIHRoZSB3aW5lLWRldmVsIGxpc3QgYW5kIG15c2VsZiB0byB0aGUgZW50aXRpZXMgdG8gYmUgcmVmZXJlbmNlZCBpbgoJdGhlIGRvY3MuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIEZpeCBidWcgaW4gbXVsdGl0ZXh0dXJpbmcgaW50cm9kdWNlZCBkdXJpbmcgZHVtbXkgdGV4dHVyZSBjaGFuZ2VzLgoJLSBBZGRpdGlvbmFsIHRyYWNlcy4KCgkqIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jOiBBbGJlcnRvIE1hc3NhcmkgPGFsYnlAZXhsbi5jb20+CglJbXBsZW1lbnRlZCBib2R5IG9mIEhHTE9CQUxTdHJlYW1JbXBsOjpDbG9uZS4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUFkZGVkIEh0dHBPcGVuUmVxdWVzdFcsIEh0dHBRdWVyeUluZm9XLCBIdHRwU2VuZFJlcXVlc3RXLgoKCSogdG9vbHMvd2lkbC9oZWFkZXIuYywgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC9wYXJzZXIueSwKCSAgdG9vbHMvd2lkbC9wcm94eS5jLCB0b29scy93aWRsL3dpZGwuYywgdG9vbHMvd2lkbC93aWRsdHlwZXMuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJU3VwcG9ydCBmb3IgZW51bXMsIGFycmF5cywgZW5jYXBzdWxhdGVkIHVuaW9ucywgc2lnbmVkL3Vuc2lnbmVkCglxdWFsaWZpZXJzLCBVVUlEcywgaW5jbHVkZSBndWFyZHMsIHRoZSBuZXcgSUNPTV9ERUZJTkUxIG1hY3JvLCBhbmQKCXNvbWUgb3RoZXIgaW1wcm92ZW1lbnRzLgoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHBhcnRzIHRoYXQgaGF2ZSBiZWVuIG1vdmVkIGFscmVhZHkgaW4gdGhlIERldmVsb3BtZW50IEd1aWRlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOgoJUnlhbiBDdW1taW5nIDxyeWFuQGNvbXBsZXRlbHkua2lja3MtYXNzLm9yZz4KCUFkZCB0ZXN0IGZvciBEZWxldGVGaWxlQSB3aXRoIGVtcHR5IHBhdGhzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9zaGVsbDMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3NobHdhcGkvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3VybG1vbi90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy91cmxtb24vdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy93aW5pbmV0L3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luaW5ldC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L3Rlc3RzL2dlbmVyYXRlZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVcGRhdGVkIHRoZSBnZW5lcmF0ZWQgdGVzdHMuCgoJKiB0b29scy93aW5hcGkvY19wYXJzZXIucG0sIHRvb2xzL3dpbmFwaS9jX3R5cGUucG0sCgkgIHRvb2xzL3dpbmFwaS90ZXN0cy5kYXQsIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgdGVzdHMgZm9yIGEgZmV3IG5ldyBETExzLgoKCSogZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLAoJICBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS9zaGxvYmouaCwKCSAgaW5jbHVkZS9zaGx3YXBpLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIG1pc21hdGNoZXMgYmV0d2VlbiB0aGUgV2luZSBoZWFkZXJzIGFuZCB0aGUgTWljcm9zb2Z0IGhlYWRlcnMuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOiBGaXhlZCBzcGFyYyBjaGVjay4KCjIwMDItMTEtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2F1dGhvcnMuZW50LCBkb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24uc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglNYWtlIHRoZSBpbnN0cnVjdGlvbnMgb2YgaG93IHRvIGluc3RhbGwgc2dtbCBlYXNpZXIgdG8gdW5kZXJzdGFuZC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgSVR5cGVJbmZvOjpHZXREbGxFbnRyeSgpLgoKCSogZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2hlbHBlci5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVByb3BlciBsb2dnaW5nIG9mIEREU0NBUFMgLyBERFNDQVBTMiBzdHJ1Y3R1cmVzLgoKCSogZGxscy91c2VyL3VzZXIxNi5jLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9zdHJpbmcuYywKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmMsIHdpbmRvd3Mvd2luaGVscC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCBhIFdpbmUtb25seSBzY2hlbWUgZm9yIGludGVycHJvY2VzcyBXaW5IZWxwIG1lc3NhZ2UKCXBhc3NpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJUm9sZiBLYWxiZXJtYXR0ZXIgPHJvbGYua2FsYmVybWF0dGVyQGNpdGVuZy5jb20+CglGaXggc29tZSBOVUxMIGRlcmVmZXJlbmNpbmcuCgoJKiBtc2Rvcy9pbnQxMS5jOiBSb2JlcnQgJ0FkbWlyYWwnIENvZXltYW4gPGFkbWlyYWxAY29ybmVyLm5ldD4KCUZpeGVkIGJpdCAyIHZhbHVlIGFuZCBzZXQgYml0IDEgdG9vLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbjoKCVJlbW92ZWQgd2luZXRlc3QuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOiBNYXJrbyBLcmVlbiA8bWFya29AbC10LmVlPgoJQ2xpcCBib3R0b20gY29vcmRpbmF0ZXMuCgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCB0b29scy9tYWtlX2N0ZXN0cywKCSAgdG9vbHMvcnVudGVzdDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXdyaXRlIG1ha2VfY3Rlc3RzIGFuZCBydW50ZXN0IGluIHNoZWxsLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy93aW5lZG9zL2ludDMxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIGFsbCBpbnQzMSBmdW5jdGlvbnMgdG8gd2luZWRvcy4KCUZpeCBzb21lIG9idmlvdXMgYnVncyBpbiBpbnQzMSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCS0gRml4ZWQgb3B0aW9ucyAtLWNyb3NzLWNhbGwte3VuaWNvZGUtYXNjaWksd2luMzItd2luMTZ9LgoJLSBNaW5vciByZW9yZ2FuaXphdGlvbiBvZiB0aGUgZ2xvYmFsIGNoZWNrcy4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkIGNhc2UgZm9yIG5vbiBzcGFyYyAvIG5vbiBpMzg2IFNZU0RFUFNfQ2FsbE9uU3RhY2suCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBPbGVMb2FkUGljdHVyZUV4LgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2lsZW5jZSBvbmUgRklYTUUoKS4gSW1wbGVtZW50IElUeXBlSW5mbzo6R2V0RG9jdW1lbnRhdGlvbiBmb3IKCXZhcmlhYmxlIGRlc2NyaXB0aW9ucy4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS93aW5lbW0uaCwKCSAgZGxscy93aW5tbS93aW5tbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOb3cgcHJvcGVybHkgdW5sb2FkaW5nIG11bHRpbWVkaWEgZHJpdmVycyB3aGVuIHdpbm1tIHVubG9hZHMuCgoJKiB3aW5kb3dzL21zZ2JveC5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJRml4IGNvcHkvcGFzdGUgYnVnLiBNYWtlIE1lc3NhZ2VCb3ggd2l0aG91dCBhbiBpY29uIGxvb2sgYmV0dGVyLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbG9hZGluZyBIQ1cgNC4wIGZpbGVzIHdpdGhvdXQgcGhyYXNlIGltYWdlIGNvbXByZXNzaW9uLgoKMjAwMi0xMS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgI2luY2x1ZGUgPHN5cy90eXBlcy5oPiB3aGVyZSBuZWVkZWQgZm9yIEZyZWVCU0QuCgktIEFkZGVkIHByb3RlY3Rpb24gZm9yICNpbmNsdWRlIDxzeXMve3NvY2tldCx1bn0uaD4uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywgZGxscy9jb21tZGxnL2NkbGdfRGEucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfRXMucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZpLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYywgZGxscy9jb21tZGxnL2NkbGdfSHUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX0l0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19KYS5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1BsLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19QdC5yYywgZGxscy9jb21tZGxnL2NkbGdfUnUucmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnX1NpLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19aaC5yYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZWNvZGVAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCS0gQ2hhbmdlZCBhbGwgbnVtZXJpYyByZXNvdXJjZXMgaW4gQ2hvb3NlRm9udCB0byBsYWJlbHMgZm9yIGJldHRlcgoJICByZWFkYWJpbGl0eS4KCS0gQ2hhbmdlZCBhbGwgaGFuZGxpbmcgb2Ygc3RjNiAoMTA5MykgdG8gYXRjNSAoMTA5Mikgc28gdGhhdCB3aWxsIGJlCgkgIGNvbXBhdGlibGUgd2l0aCBXaW5kb3dzIHJlc291cmNlIG51bWJlcnMuCgktIEFkZGVkIGNvZGUgdG8gbG9hZCB0aGUgdXNlcidzIHJlc291cmNlcyByYXRoZXIgdGhhbiBvdXIgb3duIGlmCgkgIENGX0VOQUJMRVRFTVBMQVRFIGlzIHBhc3NlZCBpbiAiZmxhZ3MiLgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOiBQaWVycmUgQmV5c3NhYyA8cGItd2luZUBmYXN0ZXJpeC5mcm11Zy5vcmc+CglBdm9pZCBGcmVlQlNEIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggZGJyZWcgc3RydWN0dXJlLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNb3ZlZCBJTWFsbG9jIGRlZmluaXRpb24gZnJvbSBvYmpfYmFzZS5oIHRvIG9ial9taXNjLmguCgoJKiBpbmNsdWRlL2N1c3RjbnRsLmg6IEp1cmFqIEhlcmNlayA8anVyYWpAc3luY2FkLmNvbT4KCUFkZGVkIFdJTkVMSUJfTkFNRV9BVyBmb3IgTFBDQ0lORk8uCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOiBKdXJhaiBIZXJjZWsgPGp1cmFqQHN5bmNhZC5jb20+CglGaXhlZCBidWcgaW4gY29udGV4dCByZWdpc3RlcnMsIGFkZGVkIEhBTkRMRVJfREVGIGFuZCBIQU5ETEVSX0NPTlRFWFQKCW1hY3Jvcy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJT25seSBlbmFibGUgVk04NiBtb2RlIGlmIHdlIGhhdmUgdGhlIDxzeXMvdm04Ni5oPiBpbmNsdWRlIGZpbGUuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsIGluY2x1ZGUvcmFzLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglOZXcgc3RydWN0dXJlczogUkFTSVBBRERSLCBSQVNERVZJTkZPLCBSQVNFTlRSWS4KCU5ldyBzdHViczogUmFzU2V0RW50cnlQcm9wZXJ0aWVzLgoJUmFzRW51bURldmljZXNBIGVuaGFuY2VkLgoKCSogZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJVGhlIG9iamVjdCByZXR1cm5lZCBieSBJRW51bUZPUk1BVEVUQzo6Q2xvbmUgc2hvdWxkIGhhdmUgdGhlIHNhbWUKCWN1cnNvciBwb3NpdGlvbiBvZiB0aGUgc291cmNlIG9iamVjdC4KCgkqIGRsbHMvcnBjcnQ0L2NzdHViLmM6IEFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCUF2b2lkIGNyYXNoaW5nIHdoZW4gcmVsZWFzaW5nIGFuIE5kckNTdGRTdHViQnVmZmVyIHRoYXQgaGFkIGJlZW4KCXByZXZpb3VzbHkgZGlzY29ubmVjdGVkLgoKCSogZmlsZXMvZmlsZS5jOiBSeWFuIEN1bW1pbmcgPHJ5YW5AY29tcGxldGVseS5raWNrcy1hc3Mub3JnPgoJLSBTaWxlbmNlIGFubm95aW5nICJFbXB0eSBwYXRoIHBhc3NlZCIgZXJyb3IuCgktIFNldCBlcnJvciBjb3JyZWN0bHkgd2hlbiBhbiBlbXB0eSBwYXRoIGlzIHBhc3NlZCB0byBEZWxldGVGaWxlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsIG9sZS9vbGUybmxzLmM6CglSeWFuIEN1bW1pbmcgPHJ5YW5AY29tcGxldGVseS5raWNrcy1hc3Mub3JnPgoJUmVtb3ZlIE9MRV9HZXRGb3JtYXRBLCByZWltcGxlbWVudCBHZXREYXRlRm9ybWF0QSBhbmQgR2V0VGltZUZvcm1hdEEKCWFzIHdyYXBwZXJzIGFyb3VuZCB0aGVpciBVbmljb2RlIHZlcnNpb25zLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRHJhZnQgaW1wbGVtZW50YXRpb24gb2YgRGlzcENhbGxGdW5jLgoKMjAwMi0xMS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvdmlydHVhbC5jOgoJRGlzYWJsZSBhZGRyZXNzIHNwYWNlIGxpbWl0IGNoZWNrIG9uIG5vbi1pMzg2IHBsYXRmb3Jtcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBkcmF3IHRoZSB0ZXh0IG9mIHRoZSBpdGVtIGJlaW5nIGVkaXRlZC4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzogRXJpYyBGcmlhcyA8ZWZyaWFzQHN5bmNhZC5jb20+CglBZGRlZCBxdW90ZXMgdG8gYXNzZW1ibHkgbGFuZ3VhZ2Ugb3V0cHV0LgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYzogSnVyYWogSGVyY2VrIDxqdXJhakBzeW5jYWQuY29tPgoJSW1wbGVtZW50ZWQgU1lTREVQU19DYWxsT25TdGFjayBmb3Igc3BhcmNzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmM6IEp1cmFqIEhlcmNlayA8anVyYWpAc3luY2FkLmNvbT4KCUJ1ZyBmaXhlcyByZWxhdGVkIHRvIHNwYXJjIDQtYnl0ZSBib3VuZGFyeSBhbGlnbm1lbnQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggdGhlICdqdW1waW5nIHNlbGVjdGlvbicgYnVnICgjMTEwOCkuCglNaXNjIHNtYWxsIGNsZWFudXBzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJV2hlbiBjaGVja2luZyBmb3Igc3lzL21vdW50LmggYW5kIHN5cy91c2VyLmggYWxzbyBpbmNsdWRlIHN5cy90eXBlcy5oCglpZiBhdmFpbGFibGUuCgoJKiBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXBkYXRlZCB0aGUgZ2VuZXJhdGVkIHRlc3RzLgoKCSogdG9vbHMvd2luYXBpL3Rlc3RzLmRhdCwgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFkZGVkIGNvZGUgZm9yIGRldGVjdGlvbiBvZiBtaXNzaW5nIHR5cGVzLgoJLSBBZGRlZCBtaXNzaW5nIHR5cGVzLgoJLSBBZGRlZCBhIGZ1bmN0aW9uIGZvciBlYWNoIHR5cGUgdGVzdCB0byBpbXByb3ZlIGNvbXBpbGluZyB3aXRoIC1PMi4KCgkqIGRsbHMvcnBjcnQ0L3JwY19iaW5kaW5nLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gUmVtb3ZlIHN0dXBpZCBpbmRlbnRhdGlvbnMgZnJvbSB0cmFjZSBtc2dzLgoJLSBVcGRhdGUgdGhlIHJwYyBUT0RPIGxpc3QgYSBiaXQuCgktIEFkZCBzb21lIGNvbnN0YW50cyBmb3Igd2luYXBpX2NoZWNrLgoJLSBOaWwgcG9pbnRlciBzdXBwb3J0IGZvciBzb21lIFVVSUQgZnVuY3Rpb25zIChzcG90dGVkIGJ5IE9saXZpZXIKCSAgRXZhbGV0KS4KCgkqIGNvbnRyb2xzL21lbnUuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVJlbW92ZSBFUlIoKSBpZiBtZW51IGVudHJ5IGlzbid0IG9mIHR5cGUgTUZfU1RSSU5HIGFzIHNvbWUKCWFwcGxpY2F0aW9ucyBzZXQgZmxhZ3Mgb2YgTVRfU0VQQVJBVE9SIGFuZCBlcnJvbmVvdXMgZXJyb3JzIGFyZQoJcHJvZHVjZWQuICBBZGQgYSBjb3VwbGUgb2YgY29tbWVudHMuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzogR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCS0gRml4IFJ0bFRpbWVUb1RpbWVGaWVsZHMgdG8gYWN0dWFsbHkgd29yay4KCS0gUmVtb3ZlIGNvbW1lbnRzIGFib3V0IGxlYXAgc2Vjb25kcywgd2luZG93cyBkb2Vzbid0IHRha2UgdGhhdCBpbnRvCgkgIGFjY291bnQuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVN0YXJ0IHVzaW5nIHdpbmVkb3MgaGFuZGxlcnMgZm9yIGFsbCBpbnRlcnJ1cHRzLgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ29tcHV0ZSBTTV9DWU1BWElNSVpFRCBwdXJlbHkgYmFzZWQgb24gdGhlIHNjcmVlbiBoZWlnaHQgdW50aWwgd2Uga25vdwoJaG93IHRvIHRha2UgaW50byBhY2NvdW50ICdzdGFydCBtZW51cycgY29ycmVjdGx5LgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIG1pc2NlbXUvTWFrZWZpbGUuaW4sIG1pc2NlbXUvd2luZS5zcGVjLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW4sIHRvb2xzL3dpbmVtYWtlcjoKCUFkZGVkIHdpbmVidWlsZCAtZSBvcHRpb24gdG8gc3BlY2lmeSB0aGUgZW50cnkgcG9pbnQgYW5kIHJlbW92ZWQgdGhlCgknaW5pdCcgc3BlYyBmaWxlIGRpcmVjdGl2ZS4KCVdpbmVidWlsZCBsb25nIG9wdGlvbnMgbm93IHVzZSBhIG1vcmUgc3RhbmRhcmQgZG91YmxlIGRhc2ggZm9ybWF0Cgkob2xkZXIgZm9ybWF0IHN0aWxsIHN1cHBvcnRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkpLgoKCSogdG9vbHMvd2luYXBpL3dpbjE2LmFwaSwgdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBUEkgZmlsZXMgdXBkYXRlLgoKCSogZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYywgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLAoJICBkbGxzL3dpbmVkb3MvaW50MDkuYywgZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy9pbnQxNi5jLAoJICBkbGxzL3dpbmVkb3MvaW50MTcuYywgZGxscy93aW5lZG9zL2ludDIwLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjkuYywgZGxscy93aW5lZG9zL2ludDMzLmMsIGRsbHMvd2luZWRvcy9pbnQ2Ny5jLAoJICBkbGxzL3dpbmVkb3MvaW50ZXJydXB0cy5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZCBJQ09NX0RFRklORTEgbWFjcm8gdG8gZGVmaW5lIGEgQ09NIGludGVyZmFjZSB3aXRob3V0IGEgYmFzZQoJY2xhc3MuCglVc2UgaXQgdG8gZGVmaW5lIElVbmtub3duLgoKCSogZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywKCSAgZGxscy9kM2Q4L2RpcmVjdHguYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIFN0ZW5jaWwgbWFwcGluZyBub3cgd29ya3MgKGl0IGhlbHBzIHRvIGFjdHVhbGx5IGFsbG9jYXRlIGEgc3RlbmNpbAoJICBidWZmZXIpLgoJLSBUZXh0dXJlIG1hcHBpbmcgY29ycmVjdGVkIGlmIG5vIHJlYWwgdGV4dHVyZSBib3VuZC4KCS0gQ29kZSBub3cgZGV0ZWN0cyB3aGljaCBvcGVuZ2wgZXh0ZW5zaW9ucyBhcmUgcHJlc2VudCAtIHRvIGJlCgkgIGV4dGVuZGVkIGxhdGVyLgoJLSBNb3JlIGRlYnVnIHRyYWNlcG9pbnRzLgoKCSogcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVwbGFjZWQgYXNzZXJ0IGJ5IHNpbXBsZSBpZiArIHdhcm5pbmcgbWVzc2FnZSBmb3IgdG9vIGxvbmcgc3ltYm9scy4KCgkqIGRsbHMvd2luZWRvcy9pbnQzMS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglNb3ZlIG1vc3QgaW50MzEgZnVuY3Rpb25zIHRvIHdpbmVkb3MuCglBZGQgRFBNSTMyIGZpeGVzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9oYWwuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9nYW1tYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL3RodW5rcy5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYzoKCU1hdHRoZXcgQmxvY2ggPG1hdHRoZXdAYnl0ZW1hcmsuY28udWs+CglWdGFibGUgZml4ZXMuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglBZGRlZCBSYXNWYWxpZGF0ZUVudHJ5TmFtZUEgc3R1Yi4KCjIwMDItMTEtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvYXZpZmlsMzIvZmFjdG9yeS5jLAoJICBkbGxzL2NvbWNhdC9jb21jYXQuc3BlYywgZGxscy9jb21jYXQvY29tY2F0X21haW4uYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsCgkgIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLAoJICBkbGxzL2QzZDgvZDNkOC5zcGVjLCBkbGxzL2QzZDgvZDNkOF9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywKCSAgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLAoJICBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9nZGkvZ2RpX21haW4uYywKCSAgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYywKCSAgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsCgkgIGRsbHMvbXNpc3lzL21zaXN5cy5jLCBkbGxzL21zaXN5cy9tc2lzeXMub2N4LnNwZWMsCgkgIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlMzIuYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGUzMi5zcGVjLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywKCSAgZGxscy9vZGJjMzIvb2RiYzMyLnNwZWMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLAoJICBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsCgkgIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuc3BlYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywKCSAgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsCgkgIGRsbHMvc25tcGFwaS9tYWluLmMsIGRsbHMvc25tcGFwaS9zbm1wYXBpLnNwZWMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLAoJICBkbGxzL3R3YWluL3R3YWluMzJfbWFpbi5jLCBkbGxzL3R3YWluL3R3YWluXzMyLnNwZWMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luYXNwaS93bmFzcGkzMi5zcGVjLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgZGxscy93aW5lcHMvaW5pdC5jLAoJICBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuZHJ2LnNwZWMsIGRsbHMvd2lubW0vd2lubW0uYywKCSAgZGxscy93aW5tbS93aW5tbS5zcGVjLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywKCSAgZGxscy93aW5zcG9vbC93c3Bvb2wuYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCU1hZGUgdGhlIGRsbCBlbnRyeSBwb2ludCBkZWZhdWx0IHRvIERsbE1haW4gYW5kIHJlbW92ZWQgbW9zdCBvZiB0aGUKCSdpbml0JyBzcGVjIGZpbGUgZGVjbGFyYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL2NvbnRyb2wuYzogV2FybmluZyBmaXguCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglSeWFuIEN1bW1pbmcgPHJ5YW5AY29tcGxldGVseS5raWNrcy1hc3Mub3JnPgoJSGFuZGxlIEZPUk1BVF9NRVNTQUdFX0ZST01fSE1PRFVMRSBhbmQgRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gYm90aAoJYmVpbmcgc2V0IGF0IG9uY2UuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3Rlc3RzL3dhdmUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUZXN0IHNvdW5kIGZvcm1hdCBzdXBwb3J0IHdpdGggd2F2ZU91dEdldERldkNhcHMgYW5kIHdhdmVPdXRPcGVuLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglIYWNrIHRvIGRldGVjdCByZWdpc3RlciBmdW5jdGlvbnMgYXV0b21hdGljYWxseSBzbyB0aGF0IHJlbGF5IGRlYnVnCglhbHNvIHdvcmtzIGZvciBmdW5jdGlvbnMgdXNpbmcgdGhlIERFRklORV9SRUdTX0VOVFJZX1BPSU5UIG1hY3Jvcy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBNYWtlIENPTVNQRUMgcG9pbnQgdG8gd2NtZC5leGUsIG5vdCBjb21tYW5kLmNvbS4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIG5vb3AgcmVkZWZpbml0aW9uIG9mIFNQSV9bR0VUL1NFVF1NRU5VVU5ERVJMSU5FUwoJLSBkZWZpbmUgYW5kIGZpeG1lIGZvcgoJICBTUElfW0dFVC9TRVRdW1NFTEVDVElPTkZBREUvRFJPUFNIQURPVy9LRVlCT0FSRENVRVNdCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9IdS5yYywgcHJvZ3JhbXMvY2xvY2svSHUucmMsCgkgIHByb2dyYW1zL2Nsb2NrL3JzcmMucmMsIHByb2dyYW1zL25vdGVwYWQvSHUucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYywgcHJvZ3JhbXMvcHJvZ21hbi9IdS5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9IdS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9IdS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvcnNyYy5yYywgcHJvZ3JhbXMvd2luaGVscC9IdS5yYzoKCVpvbHkgTmFneSA8bmFneXpvbGlAZHJvdHBvc3RhLmh1PgoJQWRkZWQvdXBncmFkZWQgSHVuZ2FyaWFuIHJlc291cmNlcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvd2luMzJzL3dpbjMyczE2LmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnVzZXIuaCwKCSAgaW5jbHVkZS94MTFmb250LmgsIG1lbW9yeS92aXJ0dWFsLmMsIG1zZG9zL3Z4ZC5jLAoJICBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBtaXNtYXRjaGVzIGJldHdlZW4gdGhlIFdpbmUgaGVhZGVycyBhbmQgdGhlIE1pY3Jvc29mdCBoZWFkZXJzLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFVwZGF0ZWQgaXQgdG8gc3VwcG9ydCBjaGFuZ2VzIGluIFdpbmUuCgktIEFkZGVkIHN1cHBvcnQgZm9yIEMrKyBjb21waWxhdGlvbiAob2ZmIGJ5IGRlZmF1bHQpLgoKCSogZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL3VzZXIvdGVzdHMvZ2VuZXJhdGVkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVwZGF0ZWQgdGhlIGdlbmVyYXRlZCB0ZXN0cy4KCgkqIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL2NfdHlwZS5wbSwKCSAgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdCwgdG9vbHMvd2luYXBpL3Rlc3RzLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHRlc3RzIGZvciBub3JtYWwgdHlwZXMgKG5vdCBqdXN0IHN0cnVjdHVyZXMpLgoKCSogaW5jbHVkZS93aW5ubHMuaDogUnlhbiBDdW1taW5nIDxyeWFuQGNvbXBsZXRlbHkua2lja3MtYXNzLm9yZz4KCUFkZGVkIG1pc3NpbmcgQ1NUUl8gZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU9TU19SYXdPcGVuRGV2aWNlIHNob3VsZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIGZvcm1hdCBpcyBub3QKCXN1cHBvcnRlZC4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYzoKCVJ5YW4gQ3VtbWluZyA8cnlhbkBjb21wbGV0ZWx5LmtpY2tzLWFzcy5vcmc+CglBZGQgc3R1YiBmb3IgUmFzRW51bUNvbm5lY3Rpb25zVy4KCgkqIGRsbHMvb2xlMzIvbWFyc2hhbC5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtbUBsc3QuZGU+CglIYW5kbGUgZXJyb3JzIGluIHN0ZCBtYXJzaGFsbGVyIGJldHRlciwgZG8gbm90IGNyYXNoLgoJQWRkZWQgYW5vdGhlciBlcnJvciBtZXNzYWdlIGlmIHNvbWUgcHJvZ3JhbSB0cmllcyB0byBtYXJzaGFsCglJT2xlT2JqZWN0LgoJT2xlQ3JlYXRlKCkgc2hvdWxkIGJlIGFibGUgdG8gdXNlIExvY2FsIFNlcnZlcnMgdG9vIChpdCBjYW4ndCBhcyBvZgoJbm93LCBqdXN0IGZvciBkZWJ1Z2dpbmcpLgoKCSogZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2luZXBzL2luaXQuYzogTWFyY3VzIE1laXNzbmVyIDxtbUBsc3QuZGU+CglTcGVjaWZ5IGV4aXN0aW5nIGV4dHJhIHNpemUgb2YgV0lORVBTIERldm1vZGUgc3RydWN0dXJlLgoJTWFrZSBFeHREZXZpY2VNb2RlMTYgaW4gV0lORVBTIHJldHVybiB0aGUgY29ycmVjdCBzaXplLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOiBKYWNvIEdyZWVmZiA8amFjb0BwdXhlZG8ub3JnPgoJU2tpcCB0aGUgYWxsb2NhdGlvbiBvZiBhIG5ldyBjb25zb2xlIG9uICJ3Y21kIC9jIDxjb21tYW5kPiIgZXhlY3V0aW9uLAoJdXNpbmcgdGhlIGN1cnJlbnQgYWxsb2NhdGVkIFNURElOIGFuZCBTVERPVVQgaGFuZGxlcyBmb3IgY29tbWFuZAoJaW5wdXQvb3V0cHV0LgoKCSogZGxscy93aW5lZG9zL2ludDMxLmMsIGRsbHMvd2luZWRvcy9pbnQ2Ny5jLCBkbGxzL3dpbmVkb3MveG1zLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglJZ25vcmUgVkNQSSBpbnN0YWxsYXRpb24gY2hlY2tzLiBIYW5kbGUgWE1TIHF1ZXJ5IGFueSBleHRlbmRlZCBtZW1vcnkKCWZ1bmN0aW9uLiBBZGQgc3R1YnMgZm9yIGdldC9zZXQgZXhjZXB0aW9uIGhhbmRsZXIgdmVjdG9yLgoKCSogZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgbXNkb3MvZG9zbWVtLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXaGVuIHJldHVybmluZyBmcm9tIDMyLWJpdCBkZWZhdWx0IGludGVycnVwdCBoYW5kbGVycywgZWZsYWdzIGFyZSBub3cKCXJldHVybmVkIGNvcnJlY3RseS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkaXRpb25hbCBleHBvcnRlZCBjYXBhYmlsaXRpZXMgdG8gcGxlYXNlIHNvbWUgcGlja3kgZ2FtZXMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gb25seSBjb21wYXJlIHRoZSBmaXJzdCBXT1JEIGluIHRoZSBERFNDQVBTMiBzdHJ1Y3R1cmUgaWYgbm8gRFg3CgktIGFkZCBzb21lIFRSQUNFcwoKCSogZGxscy9kZHJhdy9oZWxwZXIuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUF1Z21lbnQgdGhlIEREU0NBUFMyIGR1bXBpbmcgcm91dGluZSB3aXRoIG5ldyBjYXBzLgoKMjAwMi0xMC0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAyMTAzMS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0xMC0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L2NwcGV4Y2VwdC5jLCBkbGxzL21zdmNydC9leGNlcHQuYzoKCUFkZGVkIGNsb2JiZXIgbGlzdHMgdG8gdGhlIGlubGluZSBhc3NlbWJseSBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglNYXR0aGV3IERhdmlzb24gPG0uZGF2aXNvbkB2aXJnaW4ubmV0PgoJRml4ZWQgc29tZSBoYW5kbGUgY29udmVyc2lvbnMgZm9yIC1EU1RSSUNULgoKCSogZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgaW5jbHVkZS9ycGNkY2UuaCwKCSAgaW5jbHVkZS9ycGNkY2VwLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUZpeCBzb21lIHByb2JsZW1zIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUZpeCBzdHVwaWQgY2xvbmUgb2YgYnJva2VuIG1hY3JvLCBmb3VuZCBieSBNYXJjdXMuCgoJKiBpbmNsdWRlL3dpbmUvcnBjZmMuaDogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglTb21lIFJQQyBmb3JtYXQgY2hhcmFjdGVycyBmcm9tIE1TIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvY29udHJvbC5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCVJlbW92ZSBxdW90ZXMgZnJvbSBmaWxlbmFtZSBiZWZvcmUgY2FsbGluZyBMb2FkTGlicmFyeSBpbiBEb0xhdW5jaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogQWxiZXJ0byBNYXNzYXJpIDxhbGJ5QGV4bG4uY29tPgoJLSBGaXhlZCB0eXBvIGluIFNIR2V0RmlsZUluZm9BLgoJLSBQcm9wZXJseSBjb252ZXJ0IHJldHVybiB2YWx1ZXMgYmFjayB0byBVbmljb2RlIGluIFNIR2V0RmlsZUluZm9XLgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLAoJICBpbmNsdWRlL3JwY2RjZXAuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJUmVtb3ZlICNpZmRlZiBXSU5OVCBjb25kaXRpb25hbHM7IGp1c3QgdXNlIHRoZSBOVCBkZWZpbml0aW9ucy4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gVXNlIGFwcHJvcHJpYXRlIHBlci1wbGF0Zm9ybSBORFJfTE9DQUwgRGF0YSBSZXByZXNlbnRhdGlvbi4KCS0gTWlub3IgaG91c2VrZWVwaW5nIGNoYW5nZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUVzY2FwZSBcIGluIHBhdGggYW5kIGFyZ3VtZW50cy4KCVVzZSBVTklYIHN0eWxlIHdvcmtfZGlyLCBub3Qgd2luZG93cyBkaXIuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL1NpLnJjLCBwcm9ncmFtcy9wcm9nbWFuL3JzcmMucmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJVXBkYXRlZCBTbG92ZW5pYW4gcmVzb3VyY2VzIGZvciAobmV3KSB2ZXJzaW9uIG9mIHByb2dtYW4uCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgaW5jbHVkZS9ycGNkY2UuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBGaXggb2Zmc2V0IGJ1ZyBpbiB0aGUgY29uZm9ybWFudCBzdHJpbmcgdW5tYXJzaGFsbCByb3V0aW5lLgoJLSBGaXggZGlzY3JlcGFuY3kgYmV0d2VlbiBoZWFkZXJzIGFuZCBpbXBsZW1lbnRhdGlvbiBvZgoJICBJX1JwY0JpbmRpbmdTZXRBc3luYyB3aGVuIGNvbXBpbGluZyB1bmRlciBXSU5OVC4KCS0gRWxpbWluYXRlIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gImxpc3Rlbl9jb3VudCIKCSAgYW5kICJzdGRfbGlzdGVuIiBpbiBycGNfc2VydmVyLmguCgktIENvZGUtc3R1YnMgZm9yIFJwY1NlcnZlclVucmVnaXN0ZXJJZiwgUnBjU2VydmVyVW5yZWdpc3RlcklmRXguCgktIEF0dGVtcHQgdG8gaW1wbGVtZW50IFJwY01nbXRTdG9wU2VydmVyTGlzdGVuaW5nIChkZWZpbml0ZWx5IG5vdAoJICBoYXBweSBqdXN0IHlldCkuCgktIFJwY1NlcnZlclVucmVnaXN0ZXJJZkV4IHdhc24ndCB4cC1zZXBjaWZpYyBhZnRlciBhbGw7IHRoaXMgbGVhZHMgbWUgdG8KCSAgc3VzcGVjdCB0aGVyZSBhcmUgbW9yZSBzdWNoIG1pc3Rha2VzIGluIHRoZSBzcGVjLWZpbGUgY29tbWVudHMsIGJ1dCBJCgkgIGhhdmVuJ3QgbG9va2VkIGludG8gaXQgb3IgZml4ZWQgdGhlbSB5ZXQgKGNvbWluZyBzb29uKS4KCS0gQ2xlYW51cHMsIHRyYWNlLWVuaGFuY2VtZW50cywgZXRjLgoKCSogc2VydmVyL2hvb2suYzoKCVdvcmsgYXJvdW5kIHRvIG1ha2Ugc3lzdGVtLWdsb2JhbCBob29rcyBhdCBsZWFzdCBydW4gaW4gdGhlIHRocmVhZAoJdGhhdCBzZXQgdGhlbS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy91c2VyL3VzZXIxNi5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy94MTFkcnYvd2lucG9zLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmM6CglTcGxpdCBvdXQgc29tZSBtb3JlIDE2LWJpdCBjb2RlLgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJX3NlaF9sb25nam1wX3Vud2luZCBpcyBpMzg2IG9ubHkgZm9yIG5vdy4KCgkqIGluY2x1ZGUvcnBjLmgsIGluY2x1ZGUvcnBjbmRyLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gQ2FzdCBORFJfKiAjZGVmaW5lcyB0byAodW5zaWduZWQgbG9uZykgaW5zdGVhZCBvZiAoVUlOVDMyKSBsaWtlIE1TCgkgIGhlYWRlcnMuCgktIENyZWF0ZSBfX1JQQ19NQUNfXyBhbmQgX19SUENfV0lONjRfXyBjb25kaXRpb25hbCAjZGVmaW5lcy4KCS0gQ29ycmVjdCBORFJfTE9DQUxfREFUQV9SRVBSRVNFTlRBVElPTiBmb3IgTWFjJ3MuCgktIE5ldyBORFJfTE9DQUxfSVNfQklHX0VORElBTiBjb25kaXRpb25hbCAjZGVmaW5lLgoJLSAjZGVmaW5lIFRBUkdFVF9JU19OVDUwX09SX0xBVEVSLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJUmVuYW1lIHRoZSAqXzMyX1JFQUQgbWFjcm9zIHRvICpfVUlOVDMyX1JFQUQgZm9yIGNsYXJpdHkuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL0VuLnJjOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXggRW5nbGlzaCBwcm9nbWFuIHJlc291cmNlcyBieSB0cmFuc2xhdGluZyBGcmVuY2ggYml0cy4KCgkqIHByb2dyYW1zL3Byb2dtYW4vRnIucmM6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVNtYWxsIGNsZWFudXAgZm9yIHRoZSBGcmVuY2ggcHJvZ21hbiByZXNvdXJjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogQ2FybG9zIExvemFubyA8Y2xvemFub0BhbmRhZ28uY29tPgoJbFBhcmFtIHdhcyBub3QgcHJvcGVybHkgc2VudCBpbiBDT01CT0VYX0RyYXdJdGVtLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXBwZW5kIGNvbHVtbnMgd2l0aCBsYXJnZSBjb2x1bW4gaW5kaWNlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzY2hlZHVsZXIvY2xpZW50LmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglNaW5ndyBwb3J0aW5nIGZpeC4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVByZXZlbnQgY3Jhc2hlcyB3aGVuIERPUyBwcm9ncmFtIHRyaWVzIHRvIGFjY2VzcyBjb25zb2xlIGFuZCBubwoJV2luZG93cyBjb25zb2xlIGlzIGF2YWlsYWJsZS4KCgkqIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywKCSAgZGxscy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveHJlbmRlci5jLAoJICBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJQ29udmVydGVkIHgxMWRydiB0byAtRFNUUklDVC4KCgkqIGRsbHMvbXN2aWRlby9tY2l3bmQuYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywKCSAgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaCwgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oLCBpbmNsdWRlL21tZGRrLmgsIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2LmgsCgkgIHdpbmRvd3MvZHJpdmVyLmM6CglNb3ZlZCAxNi1iaXQgZGVmaW5pdGlvbnMgb3V0IG9mIG1tZGRrLmggaW50byBtbXN5c3RlbTE2LmguCgoJKiBkbGxzL3gxMWRydi9jbGlwYm9hcmQuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUZpeGVkIGEgbnVtYmVyIG9mIC1EU1RSSUNUIHdhcm5pbmdzLgoKCSogZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgbmVzdGVkIGV4Y2VwdGlvbnMgaGFwcGVuaW5nIGluc2lkZSBhIGNhdGNoIGJsb2NrLgoKCSogd2luZG93cy9tc2dib3guYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1TR0JPWF9EbGdQcm9jOiBicmVhayBvdXQgb2YgV01fQ09NTUFORC4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywKCSAgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsCgkgIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLAoJICBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGRsbHMvd2luZXBzL2RyaXZlci5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9kaWFsb2cuYywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3RpbWVyLmMsCgkgIHdpbmRvd3Mvd2luaGVscC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUZpeCBzb21lIHR5cGVzIGFuZCBmdW5jdGlvbiBwcm90b3R5cGVzIGFjY29yZGluZyB0byBQbGF0Zm9ybSBTREsKCWRlZmluaXRpb25zLgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9qb3lzdGljay5jLAoJICBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsCgkgIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vcGxheXNvdW5kLmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2lubW0uYywgaW5jbHVkZS9tbWRkay5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+Cgl3aW5tbS9tbXN5c3RlbSBub3cgY29tcGlsZXMgd2l0aCAtRFNUUklDVC4KCgkqIGluY2x1ZGUvdmZ3Lmg6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU3BsaXQgYmV0d2VlbiAxNiAvIDMyIGJpdCBjb2RlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHNvbWUgdHJlZXZpZXcgbm90aWZpY2F0aW9uIGNvZGVzIGJldHdlZW4gQU5TSS9Vbmljb2RlIG1vZGUuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJldHVybiBjb3JyZWN0IHZhbHVlcyBmb3Igd2F2ZShJbnxPdXQpR2V0UG9zaXRpb24gZXZlbiBpZiBwbGF5aW5nIG5vbgoJUENNIGZpbGVzLgoKCSogZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlby5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fcHJpdmF0ZS5oLAoJICBkbGxzL21zdmlkZW8vdmZ3MTYuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU3BsaXQgYmV0d2VlbiAxNiAvIDMyIGJpdCBjb2RlLgoKMjAwMi0xMC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZWRvcy8uY3ZzaWdub3JlOiBBZGRlZCB3aW5lZG9zMTYuc3BlYy5jLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL21zdmNydC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZjcnQvdGVzdHMvc2NhbmYuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpcnN0IHZlcnNpb24gb2YgbXN2Y3J0IHNjYW5mIHRlc3QuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2VkaXQuYywKCSAgY29udHJvbHMvc3RhdGljLmMsIGNvbnRyb2xzL3VpdG9vbHMuYywgZGxscy91c2VyL3VzZXIxNi5jLAoJICBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywKCSAgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jLAoJICB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3dpbi5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVNvbWUgbW9yZSBmaXhlcyBmb3IgY29tcGlsaW5nIHRoZSB1c2VyIGRsbCB3aXRoIC1EU1RSSUNULgoKCSogZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3Mvd2luZWRvczE2LnNwZWM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglBZGQgd2luZWRvczE2LmRsbCB3aGljaCBjb250YWlucyAxNi1iaXQgcHJvdGVjdGVkIG1vZGUgaW50ZXJydXB0IGVudHJ5Cglwb2ludHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDoKCUNhcmxvcyBMb3phbm8gPGNsb3phbm9AYW5kYWdvLmNvbT4KCUZpeGVkIFNIR0ZJX1NZU0lDT05JTkRFWCBmbGFnIGhhbmRsaW5nLgoKCSogTWFrZWZpbGUuaW4sIGRsbHMvTWFrZXRlc3QucnVsZXMuaW4sIGluY2x1ZGUvd2luZS90ZXN0LmgsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9tYWtlX2N0ZXN0cywKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd3RtYWluLmM6CglNb3ZlZCB0aGUgdGVzdCByb3V0aW5lcyBmcm9tIHd0bWFpbi5jIGludG8gd2luZS90ZXN0Lmggc28gdGhhdCB0aGV5CgljYW4gYmUgY29tcGlsZWQgc2VwYXJhdGVseSB3aXRoIGRpZmZlcmVudCBmbGFncyBmb3IgZWFjaCBkbGwuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRml4ZWQgTElUVExFX0VORElBTl8zMl9SRUFEIG1hY3JvIHRvIGF0IGxlYXN0IGNvbXBpbGUuCgoJKiBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9hc3luYy5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luc29jay5oOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCS0gRGVmaW5lIFNPQ0tFVCBhcyBVSU5UX1BUUiBmb3IgV2luNjQgKHRoYW5rcyB0byBQLiBTdHJpZHZhbGwpLgoJLSBNYWtlIHdpbnNvY2sgY29tcGlsZSB3aXRob3V0IFdJTkVfTk9fU1RSSUNULgoKCSogZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglQb3dlcnBjIGluc3RydWN0aW9uIHBvaW50ZXIgaXMgSWFyLCBub3QgRWlwLgoKCSogZGxscy93aW5tbS93YXZlbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+Cgl3YXZlbWFwIG5vdyBjb21waWxlcyB3aXRoIC1EU1RSSUNULgoKMjAwMi0xMC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJUmVtb3ZlZCBubyBsb25nZXIgbmVlZGVkIHN1cHBvcnQgZm9yIHBhdGNoaW5nIHRoZSBkZWJ1Z2dlciBwYXRoIGluIHRoZQoJcmVnaXN0cnkuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46CglPbmx5IHJ1biB0aGUgMzItYml0IGNoZWNrbGluayBmb3IgZGxscyB0aGF0IGNvbnRhaW4gMTYtYml0IGZpbGVzLgoKCSogZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGFkZGVkIHRyb3VibGVzaG9vdGluZyBzZWN0aW9uIHRvIFdpbmUgVXNlcnMgR3VpZGUgKHRha2VuIGZyb20gV2luZQoJICBUcm91Ymxlc2hvb3RpbmcgR3VpZGUpCgktIGRvY3VtZW50ZWQgV2luZG93cy9ET1MgdmVyc2lvbiB2YWx1ZXMgKGdycnIgISkKCS0gbWlzYy4gb3RoZXIgc3R1ZmYKCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvd2luZWRvcy9pbnQyMC5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGluY2x1ZGUvbWlzY2VtdS5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW9kaWZ5IHdpbmVkb3MgaW50ZXJydXB0IGhhbmRsZXJzIHNvIHRoYXQgdGhleSB3b3JrIHdpdGggUE0KCWludGVycnVwdHMuCglBZGQgZm9yd2FyZGluZyBmdW5jdGlvbnMgZm9yIGhhbmRsZXJzIGluIG90aGVyIERMTHMuCglNYWtlIERPU1ZNX0dldEJ1aWx0aW5IYW5kbGVyIHVzZSBzdGF0aWMgdGFibGUgaW5zdGVhZCBvZgoJR2V0UHJvY0FkZHJlc3MuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUZpeCBmb3IgbGlzdHZpZXcgd2hlZWxtb3VzZSBtZXNzYWdlIGhhbmRsaW5nLgoKCSogaW5jbHVkZS93aW5lL3Rlc3QuaDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCB7b2ssdHJhY2V9XyBtYWNyb3MgdG8gdGFrZSBleHBsaWNpdCBmaWxlIGFuZCBsaW5lIG51bWJlci4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gbW9yZSBjb21tZW50cyBhbmQgY29tbWVudC1jbGVhbnVwCgktIGF0dGVtcHQgdG8gaW1wbGVtZW50IE5kckNvbmZvcm1hbnRTdHJpbmdNZW1vcnlTaXplCgktIGZpeCBOZHJDb25mb3JtYW50U3RyaW5nVW5NYXJzaGFsbAoJLSB3MDB0IQoKCSogZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIDE2IGJpdCBqb3lzdGljayBmdW5jdGlvbiB0byBtbXN5c3RlbS5jLgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9qb3lzdGljay5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2lubW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBpbnRlcm5hbCByZW5hbWluZyAobm8gbG9uZ2VyIHVzaW5nIE1NU1lTVEVNIHByZWZpeGVzIGZvciBXSU5NTSBvbmx5CgkgIGZ1bmN0aW9ucykKCS0gbW92ZWQgdGltZSAxNi8zMiBjb252ZXJzaW9ucyBmdW5jdGlvbnMgdG8gMTYgYml0IHNvdXJjZSBmaWxlcwoJLSBmaW5hbCBNYWtlZmlsZSBjaGFuZ2VzICgxNiBiaXQgcGFydCBjYW4gbm93IHJlYWxseSBiZSBub3QgY29tcGlsZWQKCSAgd2hlbiAtZGlzYWJsZS13aW4xNiBpcyByZXF1ZXN0ZWQpCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGxldCBhbGwgdGltZSByZWxhdGVkIGZ1bmN0aW9ucyBtYWtlIHVzZSBvZiBsb3cgbGV2ZWwgZHJpdmVycyAxNiBiaXQKCSAgZnVuY3Rpb25zCgktIHNvbWUgcmVuYW1pbmcgKHByZWZpeGluZyBpbnRlcm5hbCB0aW1lIGZ1bmN0aW9ucyB3aXRoIFRJTUUpCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFsbCBsb3cgbGV2ZWwgZHJpdmVyIGZ1bmN0aW9ucyAoaW50ZXJuYWxzIGZvciB3YXZlLCBtaWRpLCBtaXhlciBhbmQKCWF1eCkgYXJlIG5vdyBjbGVhbmx5IHNlcGFyYXRlZC4KCgkqIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbWVzc2FnZTE2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5tbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBbGwgTUNJIGZ1bmN0aW9ucyBhcmUgbm93IGNsZWFubHkgc2VwYXJhdGVkLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBbGwgZHJpdmVyIGZ1bmN0aW9ucyBhcmUgbm93IHByb3Blcmx5IHNlcGFyYXRlZC4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy93aW5tbS93aW5tbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIHJldmlzaXRlZCBtbXN5c3RlbS93aW5tbSBsb2FkaW5nIG1lY2hhbmlzbQoJLSBhZGRlZCBXSU5NTV9DaGVja01NU3lzdGVtIGZ1bmN0aW9uIChoZWxwcyAzMiBiaXQgY29kZSBkZXRlY3QKCSAgcHJlc2VuY2Ugb2Ygb3VyIG93biBtbXN5c3RlbSBETEwpCgktIHNvbWUgaW50ZXJuYWwgcmVuYW1pbmcgKE1VTFRJTUVESUEgPT4gV0lOTU0pCgoJKiBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vdyBvbmx5IHN0b3JpbmcgdGhyZWFkIGlkIGZvciBtY2kgdGFza3MgKDE2IGJpdCBodGFzayBpcyBub3cgZ290dGVuCglmcm9tIFdPVyBmdW5jdGlvbnMpLgoKCSogd2luZG93cy93aW5wb3MuYzogRml4ZWQgU2hvd1dpbmRvd0FzeW5jLgoKCSogZGxscy91c2VyL3VzZXJfbWFpbi5jLCBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvcXVldWUuYzoKCVJlbW92ZWQgYSBjb3VwbGUgb2Ygbm8gbG9uZ2VyIHVzZWQgcXVldWUgZnVuY3Rpb25zLgoKCSogY29udHJvbHMvY29tYm8uYywgZGxscy9hdmljYXAzMi9hdmljYXAzMi5zcGVjLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jLAoJICBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBUEkgZmlsZSB1cGRhdGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLAoJICBkbGxzL3NoZWxsMzIvc2hsZXhlYy5jOgoJR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCVNlcGFyYXRlIG91dCAxNi1iaXQgU2hlbGxFeGVjdXRlIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCUZpeGVkIGZvbnQgb2JqZWN0IGxlYWsgaW4gV01fU0VURk9OVCBoYW5kbGVyLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglDb3JyZWN0aW9ucyB0byB0aGUgU3BhbmlzaCBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCUhhZ2VuIEhlaWR1Y2sgPHdpYm94MUB3aWZhLnVuaS1sZWlwemlnLmRlPgoJQWRkZWQgV1NBU2VuZERpc2Nvbm5lY3QuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc29tZSBkZWZpbmVzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luZG93cyBoZWFkZXJzLgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTaWxlbmNlIHVubmVlZGVkIEVSUiB3aGlsZSBjb252ZXJ0aW5nIHRhc2tzLgoKCSogZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBmaW5pc2ggbW1pbyBzZXBhcmF0aW9uCgktIG5vIGxvbmdlciBzdG9yaW5nIGZ1bmN0aW9uIHBvaW50ZXJzIGluIGdsb2JhbCBJRGF0YQoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU2VuZCB0aGUgcmlnaHQgbm90aWZpY2F0aW9uIGNvZGUgKEEvVykgZGVwZW5kaW5nIG9uIHRoZSBVbmljb2RlCglzZXR0aW5nLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlciwgdG9vbHMvd2luYXBpL21zdmNtYWtlcl9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvdXRpbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkIG5ldyBvcHRpb25zIC0td2luZSBhbmQgLS13aW5ldGVzdCBzbyB3b3Jrc3BhY2UgYW5kIHByb2plY3QgZmlsZXMKCWZvciBXaW5lIGFuZCBXaW5ldGVzdCBtaWdodCBiZSBnZW5lcmF0ZWQgaW5kZXBlbmRlbnRseS4KCgkqIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYywgZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jLAoJICBkbGxzL3VzZXIvdGVzdHMvd2luLmMsIGRsbHMvd2luaW5ldC90ZXN0cy9odHRwLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHRlc3RzIHRvIGNvbXBpbGUgd2l0aCBNUyBDIG9uIFdpbmRvd3MuCgoJKiBkbGxzL2dkaS90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy9rZXJuZWwvdGVzdHMvZ2VuZXJhdGVkLmMsCgkgIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXBkYXRlZCB0aGUgZ2VuZXJhdGVkIHRlc3RzLgoKCSogdG9vbHMvd2luYXBpL3Rlc3RzLmRhdCwgdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzdXBwb3J0IGZvciBleGNsdWRpbmcgb3B0aW9uYWwgZmllbGRzLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIG1pc21hdGNoZXMgYmV0d2VlbiB0aGUgV2luZSBoZWFkZXJzIGFuZCB0aGUgTWljcm9zb2Z0IGhlYWRlcnMuCgoJKiBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmM6IEphY28gR3JlZWZmIDxqYWNvQHB1eGVkby5vcmc+CglNYWRlIHRoZSByZXBvcnRpbmcgZm9yIHRoZSAoY3VycmVudCkgdW5zdXBwb3J0ZWQgZmxhZ3MgaW4gR2VuSW5zdGFsbDE2Cgltb3JlIHVzZXItZnJpZW5kbHksIGkuZS4gcmVwb3J0IHBlciBtaXNzaW5nIGZsYWcgaW5zdGVhZCBvZiBEV09SRCB2YWx1ZS4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9mb2N1cy5jLAoJICBkbGxzL3VzZXIvaG9vay5jLCBkbGxzL3VzZXIvaG9vazE2LmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgaW5jbHVkZS9ob29rLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLAoJICBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9ob29rLmMsIHNlcnZlci9saXN0LmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywKCSAgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuaCwgd2luZG93cy9ob29rLmMsCgkgIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsCgkgIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmM6CglSZXdyb3RlIGhvb2sgc3VwcG9ydCB0byBzdG9yZSB0aGUgaG9vayBjaGFpbiBpbiB0aGUgc2VydmVyLgoJU3BsaXQgb2ZmIDE2LWJpdCBob29rIGZ1bmN0aW9ucyBhbmQgcmUtaW1wbGVtZW50ZWQgdGhlbSBvbiB0b3Agb2YgdGhlCgkzMi1iaXQgb25lczsgc3lzdGVtLXdpZGUgMTYtYml0IGhvb2tzIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkIGF0IHRoaXMKCXBvaW50LgoKMjAwMi0xMC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsCgkgIHByb2dyYW1zL3dpbmVkYmcvd2luZWRiZy5jLCB3aW4zMi9leGNlcHQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSYWlzZSBhbiBleGNlcHRpb24gaWYgYW55IFdpbmUgb3IgV2luZWxpYiBjb2RlIGRvZXMgYW4gYXNzZXJ0LgoKCSogcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYzogU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJUG9ydGluZyBmaXguCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9ycGNydDQvbmRyX21pZGwuYywKCSAgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYzoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBQdWxsIHRoZSBidWZmZXIgZnJvbSB0aGUgcnBjIG1lc3NhZ2UgaW50byB0aGUgbWlkbCBzdHViIG1lc3NhZ2UKCSAgZHVyaW5nIFJwY1NlcnZlckluaXRpYWxpemVOZXcuCgktIEF0dGVtcHQgdG8gaW1wbGVtZW50IE5kckNvbmZvcm1hbnRTdHJpbmdVbm1hcnNoYWxsLgoJLSBNb3JlIGFzc2VydGlvbnMuCgktIENvbW1lbnRzIGFuZCBjbGVhbnVwcy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUFkZCBhIGJ1bmNoIG9mIHN0dWJzLCBhbGwgb2Ygd2hpY2ggSSBwcmVzdW1lIHRvIGJlIFdYUCBhZGRpdGlvbnMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDA5LmMsIGRsbHMvd2luZWRvcy9pbnQxNi5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBNYWtlIGludDA5IHVwZGF0ZSB0aGUgQklPUyBkYXRhIHNlZ21lbnQncyBrZXlib2FyZCBzdGF0dXMgZmxhZ3MKCSAgYnl0ZXMsIGltcGxlbWVudCBwYXVzZSBrZXkgaGFuZGxpbmcuCgktIExldCBpbnQxNi8wMiByZWFkIHRoZSBrZXlib2FyZCBzdGF0dXMgZmxhZ3MgYnl0ZXMgaW5zdGVhZCBvZiBjYWxsaW5nCgkgIEdldEFzeW5jS2V5U3RhdGUoKS4KCS0gTWFrZSB0aGUga2V5Ym9hcmQgc3RhdGUgYnVmZmVyIHVzZWQgZm9yIEdldCpLZXkqKCkgcmVmbGVjdAoJICBWS19ML1JNRU5VIHByb3Blcmx5LgoJLSBTbWFsbCBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCXNldF9tYWluX2l0ZW06IGlnbm9yZSBtZWFuaW5nbGVzcyBiaXRzIGluIHN0YXRlTWFzayBmb3IgTFZTX09XTkVSREFUQQoJaW5zdGVhZCBvZiBmYWlsaW5nLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jOgoJR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCVNlcGFyYXRlIG91dCAxNi1iaXQgcmVnaXN0cnkgZnVuY3Rpb25zLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19tZXNzYWdlLmMsIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuYywKCSAgaW5jbHVkZS9ycGNuZHIuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBDbGVhbiB1cCBhbmQgYWRkIHNvbWUgY29tbWVudHMuCgktIEFkZCBORFIgRGF0YSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCgktIFByb3BhZ2F0ZSBEYXRhUmVwcmVzZW50YXRpb24gaW50byBhbmQgb3V0IG9mIHBhY2tldCBoZWFkZXJzLgoJLSBJbXBsZW1lbnQgTmRyU2VydmVySW5pdGlhbGl6ZU5ldwoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlIGxvdyBsZXZlbCBtdWx0aW1lZGlhIG1lc3NhZ2UgbWFwcGluZyBvdXQgb2YgMzIgYml0IGNvZGUuCgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21lc3NhZ2UxNi5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlIE1DSSBtZXNzYWdlIG1hcHBpbmcgb3V0IG9mIDMyIGJpdCBjb2RlLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlIGRyaXZlciBtZXNzYWdlIG1hcHBpbmcgb3V0IG9mIDMyIGJpdCBjb2RlLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJSGFuZGxlIHRleHR1cmUgRlZGIGZvcm1hdHMgd2hlbiBubyB0ZXh0dXJlIGlzIGJvdW5kLgoKCSogZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBEaXN0aW5ndWlzaCBiZXR3ZWVuIGFjdHVhbCBwYXJhbm9pYSBhbmQgbWVhbmluZ2Z1bCBidWZmZXIgc3BhY2UuCgktIE5vIG5lZWQgdG8gI3VuZGVmIEJVRkZFUl9QQVJBTk9JQSBoZXJlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJV2Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgbWFpbiBpdGVtIGluIHJlcG9ydCBtb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUHJvcGVybHkgZmlsbCBsUGFyYW0gaW4gTk1MSVNUVklFVy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBjcmFzaC1pbmR1Y2luZyB0eXBvL3RoaW5rby4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1hcmsgaW1tdXRhYmxlIG9iamVjdHMgYXMgY29uc3QuIEZpeCBpbmNvbnNpc3RlbnQgKi1zdHlsZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBMVkhJVFRFU1RJTkZPIGRlYnVnIGhlbHBlci4gTW9yZSB0cmFjaW5nLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRGVzcGl0ZSB3aGF0IHRoZSBkb2NzIHNheSwgd2UgaGF2ZSB0byBpbnZhbGlkYXRlIHRoZSBsaXN0IG9uCglXTV9TRVRSRURSQVcoVFJVRSkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglFbGltaW5hdGUgZmxpY2tlciB3aGVuIHJlc2l6aW5nLCBkb2NzIHVwZGF0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbnVwLCBhbmQgc2ltcGxpZmljYXRpb24gb2YgVXBkYXRlU2l6ZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUhhbmRsZSBmb2N1cyBpdGVtIHByb3Blcmx5IGluIFNldEl0ZW1Db3VudC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBvbmx5IHRoZSBuZWNlc3Nhcnkgc2VsZWN0aW9ucyB3aGVuIHNldHRpbmcgdGhlIGl0ZW0gY291bnQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXdyaXRlIG9mIHRoZSBTZXRJdGVtQ291bnQ6IGJ1Z3MgZ290IHNxdWFzaGVkLAoJTFZTSUNGX3tOT1NDUk9MTCxOT0lOVkFMSURBVEVBTEx9IGltcGxlbWVudGVkLgoKCSogZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL2ludDMxLmMsCgkgIGRsbHMvd2luZWRvcy9pbnRlcnJ1cHRzLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCByb3V0aW5lcyBmb3IgbWFuaXB1bGF0aW5nIHByb3RlY3RlZCBtb2RlIGludGVycnVwdCBoYW5kbGVycyB0bwoJd2luZWRvcyBkbGwuIEFkZCByb3V0aW5lIGZvciBjaGVja2luZyBpZiBwcm9jZXNzIGlzIFdpbmRvd3MgcHJvY2Vzcy4KCUZpeCBET1NWTV9Jc0RvczMyIGludGVyZmFjZS4gTW92ZSByZWFsIG1vZGUgaW50ZXJydXB0IGhhbmRsZXIKCW1hbmlwdWxhdGlvbiByb3V0aW5lcyB0byBpbnRlcnJ1cHRzLmMuCgoJKiB3aW5kb3dzL3VzZXIuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJTWFrZSBHZXRGcmVlU3lzdGVtUmVzb3VyY2VzMTYgcHJpbnQgaXRzIHZhbHVlcyBvbiBUUkFDRS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvdXNlci9leHRpY29uLmMsCgkgIGRsbHMvdXNlci9tZXNzYWdlLmMsIGRsbHMvdXNlci93bmQxNi5jLCB3aW5kb3dzL2RlZmRsZy5jLAoJICB3aW5kb3dzL21kaS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVNvbWUgZml4ZXMgZm9yIHRoZSBjb21waWxhdGlvbiBvZiB0aGUgdXNlciBkbGwgd2l0aCAtRFNUUklDVC4KCgkqIGRsbHMvZDNkOC9kZXZpY2UuYzogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBjb3B5cmVjdHMgc3VwcG9ydC4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jLCBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLAoJICBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBpbmNsdWRlL3JwY25kci5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIENsZWFuIHVwIGFuZCBlbmhhbmNlIHNvbWUgdHJhY2VzLgoJLSBTdHVicyBmb3IgTmRyQ29udmVydCwgTmRyQ29udmVydDIsIGFuZCBOZHJTZXJ2ZXJJbml0aWFsaXplTmV3LgoKCSogZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgdGhlIFNIQ09OVEZfSU5DTFVERUhJRERFTiBmbGFnLgoKCSogZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9semV4cGFuZDE2LmMsCgkgIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jOgoJTWF0dGhldyBEYXZpc29uIDxtLmRhdmlzb25AdmlyZ2luLm5ldD4KCU1hZGUgbHpleHBhbmQgY29tcGlsZSB3aXRoIFNUUklDVCBkZWZpbmVkLgoKCSogZGxscy93aW5tbS9tY2kuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtY2lTZW5kU3RyaW5nIGRlYnVnIHJlcG9ydGluZyB3aGVuIGFuIGVycm9yIG9jY3VycyAoc3BvdHRlZCBieQoJRXJsYW5kIExld2luKS4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci93bmQxNi5jLAoJICB3aW5kb3dzL2hvb2suYywgd2luZG93cy9zcHkuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywKCSAgd2luZG93cy93aW5wcm9jLmM6CglNb3ZlZCBhIGZldyByZW1haW5pbmcgMTYtYml0IHdpbmRvdyBmdW5jdGlvbnMgdG8gd25kMTYuYyBhbmQgbW92ZWQgaXQKCXRvIHRoZSBDX1NSQ1MxNiBzb3VyY2VzLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBJbml0aWFsaXplIHRoZSB0ZXh0dXJlIHN0YXRlIGluZm9ybWF0aW9uLgoJLSBBZGQgZHVtbXkgdGV4dHVyZXMgc28gdGV4dHVyZSBvcGVyYXRpb25zIHdoaWNoIGRvbnQgcmVmZXJlbmNlIHRoZQoJICB0ZXh0dXJlIGNhbiB3b3JrLgoJLSBTdXBwb3J0IDJkIGFuZCAzZCB0ZXh0dXJlcyBwcm9wZXJseS4KCS0gUmVhcHBseSB0aGUgdGV4dHVyZSBzdGF0ZSBpbmZvcm1hdGlvbiBhcyB0ZXh0dXJlcyBnZXQgc2V0LCBhcyBvcGVuZ2wKCSAgc3RvcmVzIHRoZSBzdGF0ZSBhbG9uZyB3aXRoIHRoZSBib3VuZCB0ZXh0dXJlIHdoZXJlYXMgZGlyZWN0eCB1c2VzIHRoZQoJICBjdXJyZW50IHN0YXRlIGluZm9ybWF0aW9uIGR1cmluZyB0aGUgZHJhdyBzdGFnZS4KCS0gM3JkIGF0dGVtcHQgdG8gc29ydCBvdXQgbGlnaHRpbmcsIGZvciBwcm9ncmFtcyB3aGljaCBkb250IHNldCBub3JtYWxzLgoJLSBUZW1wb3JhcmlseSBzaWxlbmNlIHNvbWUgdW5uZWNlc3NhcnkgZml4bWVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IENhcmxvcyA8Y2xvemFub0BhbmRhZ28uY29tPgoJbFBhcmFtIHdhcyBub3QgcHJvcGVybHkgc2VudCBpbiBUVE1fQUREVE9PTFcuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogQ2FybG9zIDxjbG96YW5vQGFuZGFnby5jb20+CglsUGFyYW0gd2FzIG5vdCBwcm9wZXJseSBzZW50IGluIENCRU5fR0VURElTUElORk9XLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglDb3B5IHRoZSBuZWNlc3NhcnkgZGF0YSBmcm9tIHRoZSB1bmljb2RlIHN0cnVjdCB0byB0aGUgYXNjaWkgb25lIGluCglET1NGU19GaW5kTmV4dC4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglKYWNvIEdyZWVmZiA8amFjb0BwdXhlZG8ub3JnPgoJLSBJbXBsZW1lbnRhdGlvbiBvZiBbSW50ZXJuZXR8RnRwXSpXIGZ1bmN0aW9ucyB0byBleHRlbmQgKGFsbW9zdCkKCSAgbm9uLWV4aXN0YW50IHdpZGUtY2hhcmFjdGVyIHN1cHBvcnQuCgktIE1vdmVkIHNvbWUgZnVuY3Rpb25zIGZyb20gInN0dWIgaW4gd2luaW5ldC5zcGVjIiB0byAiRklYTUUoIlNUVUIiKSIKCSAgdG8gYWxsb3cgZm9yIHRlc3Rpbmcgb2YgY2hhbmdlcy4KCgkqIGRsbHMvcnBjcnQ0L25kcl9tYXJzaGFsbC5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUZpeCBlbmRpYW5uZXNzIGRlcGVuZGVuY3kgaW4gdGhlICh0aGVyZSBpcyBvbmx5IG9uZSA6KSApIG1hcnNoYWxsCglmdW5jdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogQ2FybG9zIDxjbG96YW5vQGFuZGFnby5jb20+CglUaGUgZnVuY3Rpb24gU0hHZXRGaWxlSW5mb0Egd2Fzbid0IHN1cHBvcnRpbmcgdGhlIGZsYWcKCVNIR0ZJX1VTRUZJTEVBVFRSSUJVVEVTLgoKMjAwMi0xMC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2RnYTIuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglBdm9pZCBYMTEgZXJyb3IgZHVyaW5nIERHQSBkZXRlY3Rpb24uCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9jb25zb2xlLmMsCgkgIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSBrZXJuZWwgZGxsIHdpdGggLURTVFJJQ1QuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9ycGNydDQvbmRyX21pZGwuYywKCSAgZGxscy9ycGNydDQvcnBjX21lc3NhZ2UuYzoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSBVc2UgbWVtc2V0IGluc3RlYWQgb2YgWmVyb01lbW9yeSwganVzdCB0byBiZSBjb25zaXN0ZW50IHdpdGggT3ZlJ3MKCSAgY29kZS4KCS0gQWRkIHNvbWUgYXNzZXJ0aW9ucyB3aGVyZSBhc3N1bXB0aW9ucyBhcmUgbWFkZSAobmVlZCB3YXkgbW9yZSkuCgktIFBsdWcgdGhlIGJpbmRpbmcgaGFuZGxlIGludG8gdGhlIFJQQ19NRVNTQUdFIGR1cmluZyBOZHJHZXRCdWZmZXIuCgktIEltcGxlbWVudCBOZHJTZW5kUmVjZWl2ZS4KCS0gQXR0ZW1wdCB0byBzdXBwb3J0IGNsaWVudCBhbmQgc2VydmVyIGJpbmRpbmdzIGluIElfUnBjU2VuZFtSZWNlaXZlXS4KCgkqIGRsbHMvc2hlbGwzMi9kcmFnZHJvcGhlbHBlci5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9teWNvbXAuYzoKCUFsYmVydG8gTWFzc2FyaSA8YWxieUBleGxuLmNvbT4KCURvbid0IHRvdWNoIHRoZSBUaGlzIHBvaW50ZXIgYWZ0ZXIgaXQgaGFzIGJlZW4gZnJlZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJSW5zdGFsbCB0aGUgc2hlbGwgaG9vayBhcyBhIDMyLWJpdCBob29rLgoKCSogZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLAoJICBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywKCSAgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgYWR2YXBpMzIgZGxsIHdpdGggLURTVFJJQ1QuCgoJKiBkbGxzL250ZGxsL3JlZy5jLCBpbmNsdWRlL3dpbnRlcm5sLmg6CglNYWRlIHRoZSBudGRsbCByZWdpc3RyeSBmdW5jdGlvbnMgdXNlIEhLRVkgaW5zdGVhZCBvZiBIQU5ETEUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvYWxsb2MuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3gxMWRydi9rZXlib2FyZC5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBmaXggc29tZSBwc2VsbGluZwoJLSBlbmhhbmNlIHNvbWUgVFJBQ0VzCgoJKiB3aW5lZGVmYXVsdC5yZWc6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJQWRkZWQgRGlyZWN0UGxheUxvYmJ5IENMU0lEIGVudHJpZXMuCgoJKiBkbGxzL3JwY3J0NC9uZHJfbWFyc2hhbGwuYywgZGxscy9ycGNydDQvbmRyX21pZGwuYywKCSAgZGxscy9ycGNydDQvbmRyX21pc2MuaCwgZGxscy9ycGNydDQvbmRyX3N0dWJsZXNzLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGluY2x1ZGUvcnBjbmRyLmgsIGluY2x1ZGUvd2luZS9ycGNmYy5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIE1ha2UgZXhwbGljaXQgc29tZSBtaXNzaW5nIGluY2x1ZGUgZGVwZW5kZW5jaWVzLgoJLSBJbXBsZW1lbnQgTmRyR2V0QnVmZmVyLCBOZHJGcmVlQnVmZmVyLCBOZHJDb25mb3JtYW50U3RyaW5nQnVmZmVyU2l6ZQoJICBhbmQgTmRyQ29uZm9ybWFudFN0cmluZ01hcnNoYWxsLgoJLSBEZWZpbmUgdGhlIFJQQ19GQ19DX0NTVFJJTkcgY29uc3RhbnQuCgktIFBlcmhhcHMgSSBkb24ndCB3YW50IHRob3NlIE1JRExfKl9GT1JNQVRfU1RSSU5HIHN0cnVjdHMsIGFmdGVyCgkgIGFsbC4gUmVtb3ZlZC4KCS0gQWRkIFJQQyB0b2RvIGxpc3QuCgktIE1JRExfU1RVQl9NRVNTQUdFLnVGbGFncyBhcmVuJ3QuCgktIENvbW1lbnQgb3V0IHRoZSBOZHJDbGllbnRDYWxsMiBtb2NrLXVwIHNpbmNlIHRoYXQgc3R1ZmYgaXMgaW4gdGhlCgkgIHByb2Nlc3Mgb2YgYmVpbmcgaW1wbGVtZW50ZWQgYW5kIG1pZ2h0IGNhdXNlIHByb2JsZW1zLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvbG9jYWxlLmMsIG9sZS9vbGUybmxzLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUZpeCBPTEVfR2V0Rm9ybWF0VyBzbyB0aGF0IEdldERhdGVGb3JtYXRXIHdvcmtzLgoJUmVhcnJhbmdlZCBmb3Igc2ltcGxpY2l0eS4KCgkqIHByb2dyYW1zL3dpbmVkYmcvbWVtb3J5LmM6IEplZmYgU21pdGggPHdoeWRvdWJ0QGhvdG1haWwuY29tPgoJRml4ZWQgYmVoYXZpb3VyIG9mICJ4IC9zIC4uLiIuCgoJKiBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsCgkgIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy90dHlkcnYvd25kLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgdHR5ZHJ2IGRsbCB3aXRoIC1EU1RSSUNULgoKCSogZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS9wbGF5c291bmQuYywgZGxscy93aW5tbS90aW1lLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsCgkgIGRsbHMvd2lubW0vd2lubW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU2ltcGxpZnkgdGhlIGdsb2JhbCBpbnRlcm5hbCBkYXRhIGhhbmRsaW5nLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglVbmlmeSB0aGUgY29uc3RhbnQgdXNlZCBmb3IgZXJyb3IgY29kZXMgcmVwb3J0aW5nIG1hcHBpbmcgZnVuY3Rpb25zCglzdWNjZXNzL2ZhaWx1cmVzLgoKCSogZGxscy9kM2Q4L2QzZDhfbWFpbi5jLCBpbmNsdWRlL2QzZDguaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglEZWZpbmUgdGhlIG1haW4gZGlyZWN0eDggZW50cnlwb2ludC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywKCSAgZGxscy90d2Fpbi9kc19pbWFnZS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCVNvbWUgc21hbGwgY2xlYW51cHMuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRW4ucmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGNvcnJlY3QgR2VybWFuIHN0cmluZ3MgdG8gd2hhdCB0aGV5J3JlIHJlYWxseSBzdXBwb3NlZCB0byBiZQoJLSBsZXNzIGNvbmZ1c2lvbiBhYm91dCBzdG9yZWQgc2V0dGluZ3MKCgkqIGRsbHMvd2luZWRvcy9pbnQxNy5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglUaW55IGludDE3IHByaW50ZXIgZml4LgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIENlcnRPcGVuU3RvcmUgc3R1Yi4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5udC5oOgoJR2V0IHJpZCBvZiBGSUxFX0FUVFJJQlVURV9TWU1MSU5LIChiYXNlZCBvbiBhIHBhdGNoIGJ5IEJpbGwgTWVkbGFuZCkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgaW52YWxpZGF0ZSBsaXN0IG9uIFdNX1NFVFJFRFJBVy4KCVVwZGF0ZSBzaXplIGluZm8gZXZlbiBpZiByZWRyYXdpbmcgaXMgZGlzYWJsZWQuCglUcml2aWFsIGNsZWFudXBzLCBhbmQgc29tZSB0cmFjaW5nLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJV2UgY2FuIGF2b2lkIGZsaWNrZXIgb24gY29sdW1uIHJlc2l6ZSBvbmx5IGlmIGl0J3MgbGVmdCBhbGlnbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFsd2F5cyBkcmF3IHRoZSBtYWluIGl0ZW0gaW4gZnVsbCByb3cgc2VsZWN0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIGl0ZXJhdG9ycyB0byByZW5kZXIgb3ZlciB0aGUgY29sdW1ucywgaW4gcmVwb3J0IG1vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTbWFsbCBpdGVyYXRvci1vdmVyLXJhbmdlW3NdIGNsZWFudXAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglFbGltaW5hdGUgbW9zdCBvZiB0aGUgZmxpY2tlciB3aGVuIHJlc2l6aW5nIGNvbHVtbnMuCglNb3JlIGRlYnVnIHRyYWNpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggc3ViaXRlbSBiYWNrZ3JvdW5kIGNvbG9yIGluIGZ1bGwgcm93IHNlbGVjdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVdlIHNob3VsZCBjYWxsYmFjayBmb3IgaW5leGlzdGVudCBzdWJpdGVtcy4KCURvIG5vdCBzdG9yZSBjYWxsYmFjayBpdGVtcyBmb3Igc3ViaXRlbXMsIGV2ZW4gaWYgd2UncmUgYXNrZWQgdG8uCglTbWFsbCBjbGVhbnVwLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGNyYXNoIHdoZW4gY29tcHV0aW5nIHRoZSBpdGVtIHdpZHRoIG9mIGEgcmVwb3J0IHdpdGggbm8gY29sdW1ucy4KCU92ZXJyaWRlIGN1c3RvbSBkcmF3IGJrZ25kIGNvbG9yIGZvciBzZWxlY3Rpb24gaXRlbXMuCglGaWxsIGJhY2tncm91bmQgZm9yIGFsbCBpdGVtcyB0aGF0IGhhdmUgYSBia2duZCBjb2xvdXIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglLZWVwIGF1dG9hcnJhbmdpbmcgaXRlbXMgdW50aWwgb25lIGlzIG1vdmVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWJzdHJhY3QgYXV0b2FycmFuZ2luZyBkZWNpc2lvbiB0byBhIGhlbHBlciBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBkbyBzY3JlZW4gd29yayBpZiByZWZyZXNoaW5nIGlzIGRpc2FibGVkLgoJUmVpbXBsZW1lbnQgU2V0UmVkcmF3IHRvIGNvcGUgd2l0aCB0aGUgY2hhbmdlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJld3JpdGUgdGhlIFVwZGF0ZVNjcm9sbCBmdW5jdGlvbjogc2ltcGxlciwgZmFzdGVyLgoJQWRkIGRlYnVnZ2luZyBoZWxwZXIgZm9yIFNDUk9MTElORk8uCglGaXggcG90ZW50aWFsIGJ1ZyBpbiBkZWJ1Z2dpbmcgaGVscGVycy4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLAoJICBkbGxzL29sZWF1dDMyL3N0dWJzLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgb2xlYXV0MzIgZGxsIHdpdGggLURTVFJJQ1QuCgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSBzaGx3YXBpIGRsbCB3aXRoIC1EU1RSSUNULgoKCSogZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9maWxlLmMsCgkgIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvdGhyZWFkLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgbXN2Y3J0IGRsbCB3aXRoIC1EU1RSSUNULgoKCSogdG9vbHMvd2luZWNoZWNrOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGNoZWNrIGZvciByb290IHVzZXIKCS0gc2lsZW5jZSBlcnJvcnMKCgkqIGRsbHMvdGFwaTMyL3Bob25lLmM6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZGVkIHNvbWUgY29tbWVudHMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gYWRkICJQcm9kdWN0SWQiIGtleQoJLSBhZGQgSEtFWV9MT0NBTF9NQUNISU5FXEhBUkRXQVJFXERFVklDRU1BUFxTRVJJQUxDT01NIGRlZmF1bHQgbWFwcGluZwoJLSByZW1lbWJlciBvbGQgRGlyZWN0WCB2ZXJzaW9uIHN0cmluZ3MKCjIwMDItMTAtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3JwY3J0NC9uZHJfbWlkbC5jLCBpbmNsdWRlL3JwY25kci5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglJbXBsZW1lbnRlZCBOZHJDbGllbnRJbml0aWFsaXplTmV3LgoKCSogZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglXaGl0ZXNwYWNlIGNsZWFudXAuCgoJKiBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJRml4ZWQgYSB0aW55IHRyYWNlIGJ1Zy4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUNhbGwgQ3JlYXRlUHJvY2Vzc0EoKSB3aGVuIGV4ZWN1dGluZyBub24tZG9zIGFwcGxpY2F0aW9ucyBmcm9tIGEgZG9zCglhcHBsaWNhdGlvbi4KCgkqIE1ha2VmaWxlLmluOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUFsc28gcmVtb3ZlIGNvbmZpZ3VyZS5saW5lbm8gd2hlbiBwZXJmb3JtaW5nIGRpc3RjbGVhbi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0ZyLnJjLAoJICBkbGxzL3dpbmVwcy9yc3JjLnJjLCBkbGxzL3dpbmVwcy93cHNfRnIucmMsIGRsbHMvd2lubW0vd2lubW1fRnIucmMsCgkgIHByb2dyYW1zL2Nsb2NrL0ZyLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0ZyLnJjOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQnJpbmcgc29tZSBGcmVuY2ggcmVzb3VyY2VzIGluIHN5bmMgd2l0aCBFbmdsaXNoIG9uZXMuCgoJKiBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsCgkgIGRsbHMvbXN2aWRlby9tY2l3bmQuYywgZGxscy9tc3ZpZGVvL21zdmlkZW8xNi5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbXN2aWRlby92ZncxNi5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIG1zdmlkZW8gZGxsIHdpdGggLURTVFJJQ1QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBdm9pZCBkaXZpc2lvbiBieSAwIGJ5IGluaXRpYWxpemluZyB0aGUgaXRlbSBzaXplIGluIG9uIGNyZWF0aW9uLgoJUmVuYW1lIHVwZGF0ZV9pY29uX3NpemUgdG8gc2V0X2ljb25fc2l6ZSwgZml4IHBhcmFtZXRlcnMgb3JkZXIuCglBc3NvcnRlZCBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIERQQSwgaWYgaW5zZXJ0IGluZGV4IGlzIHRvbyBsYXJnZS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IENhcmxvcyA8Y2xvemFub0BhbmRhZ28uY29tPgoJRml4ZWQgZHVwbGljYXRlZCBhcnJvd3MgaW4gaGVhZGVyIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggdGhpbmtvIHRoYXQgc2xpcHBlZCBpbiB3aXRoIHRoZSBwcmV2IHBhdGNoIChyZWVuYWJsZXMgcmVmcmVzaCkuCglNYXJrIGEgZmV3IHRoaW5ncyB0aGF0IG5lZWRzIGxvb2tpbmcgYXQuCglTbWFsbCBjbGVhbnVwLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGludmFsaWRhdGUgdGhlIHdpbmRvdyBiZWZvcmUgdGhlIGZpcnN0IHBhaW50IGpvYi4KCUFzc29ydGVkIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVXNlIEludmFsaWRhdGVJdGVtIGluc3RlYWQgb2YgZXhwbGljaXQgSW52YWxpZGF0ZVJlY3QsIGl0IGlzIGNsZWFuZXIsCglhbmQgZmFzdGVyIHdoZW4gcmVkcmF3IGlzIGRpc2FibGVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJVHJhbnNmb3JtIHRoZSBpbnZhbGlkYXRpb24gbWFjcm9zIHRvIHByb3BlciBmdW5jdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWxheSBzb21lIHNpemUgY29tcHV0YXRpb25zIHVudGlsIGFmdGVyIGZpcnN0IHBhaW50LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglSZW9yZ2FuaXplIHRoZSBpdGVtIHNpemUgY2FsY3VsYXRpb24gKGEgYml0IHNpbXBsZXIsIGFuZCBmYXN0ZXIpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglTZWFyY2ggdGhyb3VnaCBhbGwgaXRlbXMgd2hlbiBMSVNUVklFV19GaW5kSXRlbVcgaXMgY2FsbGVkIHdpdGgKCUxWRklfUEFSQU0gZmxhZy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlbGV0ZSB0aGUgaXRlbXMgaWYgd2UgYWN0dWFsbHkgb3duIHRoZW0uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgY2FsbGJhY2sgdG8gdGhlIHBhcmVudCBmb3IgbFBhcmFtIHdoZW4gaW4gTFZTX09XTkVSREFUQS4KCURvY3MgdXBkYXRlLgoKCSogZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsCgkgIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL2ludGVycnVwdHMuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLAoJICBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvbWlzY2VtdS5oLAoJICBtZW1vcnkvaW5zdHIuYywgbXNkb3MvZHBtaS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJTW92ZSBpbnRlcnJ1cHQgZW11bGF0aW9uIGNvZGUgZnJvbSBJTlNUUl9FbXVsYXRlSW5zdHJ1Y3Rpb24gdG8gd2luZWRvcwoJZGxsLiBNYWtlIENUWF9TRUdfT0ZGX1RPX0xJTiB3b3JrIHdpdGggMzItYml0IHNlZ21lbnRlZCBwb2ludGVycwoJY29tbW9uIGluIERQTUkzMi4gRml4IHdpbmVkb3MgaW5pdGlhbGl6YXRpb24gc28gdGhhdCBET1NNRU1fSW5pdChUUlVFKQoJaXMgb25seSBjYWxsZWQgd2hlbiBET1MgZXhlY3V0YWJsZSBpcyBzdGFydGVkLgoKCSogZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwbGF5LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywKCSAgZGxscy9kcGxheXgvZHBsb2JieS5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbXBpbGUgdGhlIGRwbGF5eCBkbGwgd2l0aCBTVFJJQ1QgZGVmaW5lZC4KCgkqIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLAoJICBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsCgkgIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsCgkgIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLAoJICBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywKCSAgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3Ntb290aHNjcm9sbC5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLAoJICBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywKCSAgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi91cGRvd24uYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIGZpeCB0aGUgImludCBmb3JtYXQsIEhBTkRMRSBhcmciIHR5cGUgb2Ygd2FybmluZ3MgZm9yIGNvbWN0bDMyCgktIGNvbXBpbGUgdGhlIGNvbWN0bDMyIGRsbCB3aXRoIC1EU1RSSUNUCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglBZGQgY2FzdHMgdG8gY29tcGlsZSB3aXRoIC1EU1RSSUNULgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGNyYXNoIGlmIGNhbGxiYWNrIHRleHQgaXMgbm90IGZpbGxlZCAoYmVoYXZlIGxpa2UgbmF0aXZlKS4KCVJlbmRlciByZXBvcnQgbW9kZSBmcm9tIHRvcCB0byBib3R0b20gKGVhc2llciBvbiB0aGUgZXllKS4KCURvY3MgdXBkYXRlcywgdHlwZSBmaXhlcywgbW9yZSB0cmFjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb2xsZWN0IGFsbCBidWdzLCBtaXNzaW5nIGZlYXR1cmVzLCBldGMgaW4gdGhlIGhlYWRlciBkb2MuCglNaW5vciBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBhdXRvYXJyYW5nZSBpZiB3ZSBpbnNlcnQvZGVsZXRlIGZyb20gdGhlIGVuZCBvZiB0aGUgbGlzdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJld29yayBTZXRJdGVtUG9zaXRpb24sIGJ1bmNoIG9mIGJ1Z3Mgc3F1YXNoZWQgaW4gdGhlIHByb2Nlc3MuCglDb21wbGV0ZSBpY29uIGFsaWdubWVudCByZXdyaXRlOiBjbGVhbmVyLCBpbmNyZW1lbnRhbCwgZXRjLgoJQ29tcGxldGVseSBhdm9pZCBhbGlnbmluZyBhbGwgaWNvbnMgb24gZXZlcnkgaW5zZXJ0CgkgIC0gaWNvbiBwbGFjZW1lbnQgaXMgaW5jcmVtZW50YWxseSBjb21wdXRlZCBub3c6IGl0J3MgZmFzdC4KCVNtYWxsIGNsZWFudXBzLCBkb2NzIHVwZGF0ZSwgZXRjLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVuYW1lIExJU1RWSUVXX0lURU0gdG8gSVRFTV9JTkZPIGZvciBjb25zaXN0ZW5jeS4KCVJlbmFtZSBMSVNUVklFV19TVUJJVEVNIHRvIFNVQklURU1fSU5GTyBmb3Igc2FtZSByZWFzb24uCglGaXggdHlwZSBpbiBjb21tZW50IHNwb3R0ZWQgYnkgQm9iYnkgQmluZ2hhbS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6IFN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJQWRkZWQgdmFsaWQgZW50cmllcyB0byBzcGVjaWZ5IGlmIGFuIGFwcCBzaG91bGQgYmUgbG9hZGVkIGJ1aWx0aW4gb3IKCW5hdGl2ZS4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbjogTW92ZWQgbmV0d29yay5jIHRvIDE2LWJpdCBzb3VyY2VzLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZmlsZXMvZGlyZWN0b3J5LmMsIGluY2x1ZGUvZmlsZS5oLAoJICBpbmNsdWRlL2hlYXAuaCwgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIG1zZG9zL2Rvc2NvbmYuYywgd2luZG93cy9jbGlwYm9hcmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9uJ3QgdXNlIHdpbmUvdW5pY29kZS5oIGluIHRoZSBoZWFkZXIgZmlsZXMsIGluY2x1ZGUgaXQgZGlyZWN0bHkKCXdoZXJlIG5lZWRlZCBpbnN0ZWFkLgoKCSogaW5jbHVkZS93aW5kZWYuaDogQXZvaWQgcmVkZWZpbml0aW9uIHdhcm5pbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLAoJICBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLAoJICBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUFkZCBuZWVkZWQgY2FzdHMgZm9yIGEgIm5vIHdhcm5pbmdzIiBjb21waWxlIG9mIGNvbWN0bDMyLgoKCSogZGxscy93aW5lZG9zL21vZHVsZS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeCBmb3IgcGxhdGZvcm1zIG5vdCBzdXBwb3J0aW5nIERPUyBtb2RlLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkIHByYWdtYSB0byBlbGltaW5hdGUgTVMgQyB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCBwcm9wZXIgcGFyc2luZyBvZiB0aGUgTWFrZWZpbGUuaW4ncyB0byBmaW5kIHRoZSB0ZXN0cy4KCS0gQWRkZWQgc3VwcG9ydCBmb3Igb3B0aW9uYWxseSB1c2luZyB0aGUgTWljcm9zb2Z0IGhlYWRlcnMgaW5zdGVhZCBvZgoJICB0aGUgV2luZSBoZWFkZXJzLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9Fbi5yYywgcHJvZ3JhbXMvcHJvZ21hbi9Gci5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9kaWFsb2cuYywgcHJvZ3JhbXMvcHJvZ21hbi9saWNlbnNlLmMsCgkgIHByb2dyYW1zL3Byb2dtYW4vbGljZW5zZS5oLCBwcm9ncmFtcy9wcm9nbWFuL21haW4uYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLmgsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9zdHJpbmcuYzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJSW1wbGVtZW50ZWQgTkxTIGluIHByb2dtYW4uCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGluY2x1ZGUvbWVzc2FnZS5oLCB3aW5kb3dzL3RpbWVyLmM6CglTdG9yZSB0aHJlYWQgaWQgaW5zdGVhZCBvZiBxdWV1ZSBoYW5kbGUgaW4gdGltZXIgc3RydWN0dXJlLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvd25kMTYuYywgZGxscy94MTFkcnYvZGVza3RvcC5jLAoJICBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYzoKCUltcGxlbWVudGVkIEdldFdpbmRvd1Rhc2sxNiBvbiB0b3Agb2YgR2V0V2luZG93VGhyZWFkUHJvY2Vzc0lkLgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBobWVtVGFza1EgZmllbGQgaW4gV05EIHN0cnVjdHVyZS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnVzZXIuaCwKCSAgbG9hZGVyL25lL21vZHVsZS5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL25lLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIG1pc21hdGNoZXMgYmV0d2VlbiB0aGUgV2luZSBoZWFkZXJzIGFuZCB0aGUgTWljcm9zb2Z0IGhlYWRlcnMuCgoJKiBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRGUucmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9Fbi5yYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX3ByaXZhdGUuaDoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJQWRkZWQgZGlhbG9nIGZvciBBVklTYXZlT3B0aW9ucy4KCgkqIGRsbHMvYXZpZmlsMzIvYXBpLmM6IE1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJSW1wbGVtZW50ZWQgQVZJQnVpbGRGaWx0ZXJXIGFuZCBBVklTYXZlT3B0aW9ucy4KCgkqIGRsbHMvYXZpZmlsMzIvZ2V0ZnJhbWUuYzogTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglGaXhlZCBidWcgdGhhdCBwcmV2ZW50ZWQgSUNDb21wcmVzc29yQ2hvb3NlIGZyb20gd29ya2luZy4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCU1lc3NhZ2VCb3hJbmRpcmVjdFc6IGNhbGwgRmluZFJlc291cmNlRXggd2l0aCBhcmd1bWVudHMgaW4gdGhlIHJpZ2h0CglvcmRlci4KCgkqIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLCBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywKCSAgZGxscy9udGRsbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVcGRhdGVkIHRoZSBnZW5lcmF0ZWQgdGVzdHMuCgoJKiB0b29scy93aW5hcGkvdGVzdHMuZGF0LCB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIG1vZGlmaWNhdGlvbnMgYW5kIGltcHJvdmVtZW50cy4KCgkqIGRsbHMvc2hlbGwzMi9jb250cm9sLmM6IFN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJRG8gbm90IGJyZWFrIHF1b3RlZCBzdHJpbmdzIGluIENvbnRyb2xfRG9MYXVuY2guCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IENocmlzdGlhbiBOZXVtYWlyIDxjaHJpc0Bnbm9tZS1kZS5vcmc+CglDb2xsZWN0IGFsbCBidWdzLCBtaXNzaW5nIGZlYXR1cmVzLCBldGMgaW4gdGhlIGhlYWRlciBkb2MuCgoJKiBpbmNsdWRlL2RpZ2l0YWx2LmgsIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2Lmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIDE2IGJpdCBkaWdpdGFsIHN0cnVjdHMgdG8gaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaC4KCjIwMDItMTAtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSB3aW5zcG9vbCBkbGwgd2l0aCBTVFJJQ1QgZGVmaW5lZC4KCgkqIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvdGFwaTMyL3Bob25lLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgdGFwaTMyIGRsbCB3aXRoIFNUUklDVCBkZWZpbmVkLgoKCSogZGxscy9wc2FwaS9NYWtlZmlsZS5pbiwgZGxscy9wc2FwaS9wc2FwaV9tYWluLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgcHNhcGkgZGxsIHdpdGggU1RSSUNUIGRlZmluZWQuCgoJKiBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLAoJICBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsCgkgIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20vc3RyZWFtLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgbXNhY20gZGxsIHdpdGggU1RSSUNUIGRlZmluZWQuCgoJKiBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tcHIvYXV0aC5jLCBkbGxzL21wci93bmV0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgbXByIGRsbCB3aXRoIFNUUklDVCBkZWZpbmVkLgoKCSogZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywKCSAgZGxscy9pbWFnZWhscC9kZWJ1Zy5jLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYywKCSAgZGxscy9pbWFnZWhscC9pbnRlZ3JpdHkuYywgZGxscy9pbWFnZWhscC9zeW1ib2wuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb21waWxlIHRoZSBpbWFnZWhscCBkbGwgd2l0aCBTVFJJQ1QgZGVmaW5lZC4KCgkqIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1tLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSB0aGUgaW1tMzIgZGxsIHdpdGggU1RSSUNUIGRlZmluZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgc2NoZWR1bGVyL3B0aHJlYWQuYzoKCUF2b2lkIHJlZmVyZW5jZSB0byBnbGliYyBpbnRlcm5hbCBfX2xpYmNfZm9yayBmdW5jdGlvbi4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Fbi5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfUnUucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1NrLnJjLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9aaC5yYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tc2dib3guYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglSZXN0b3JlIHNldHRpbmcgb2YgY2FwdGlvbiAiRXJyb3IiLgoKCSogZGxscy9kM2Q4L2RldmljZS5jOiBKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQmVnaW5uaW5ncyBvZiBTdGVuY2lsIHN1cHBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQnJpbmcgaGVhZGVyJ3MgaGVpZ2h0IG1vcmUgaW5saW5lIHdpdGggbmF0aXZlJ3MuCgoJKiBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvbmRyX21hcnNoYWxsLmMsCgkgIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBpbmNsdWRlL3JwY25kci5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIFVzZSBPdmUtc3R5bGUgbWFjcm9zIGZvciBOZHJDb25mb3JtYW50U3RyaW5nTWFyc2hhbGwgZGVmaW5pdGlvbi4KCS0gTW92ZSBOZHJDb25mb3JtYW50U3RyaW5nTWFyc2hhbGwgdG8gbmV3IG5kcl9tYXJzaGFsbC5jLgoJLSBTdHVicyBmb3IgTmRyQ29uZm9ybWFudFN0cmluZ0J1ZmZlclNpemUsCgkgIE5kckNvbmZvcm1hbnRTdHJpbmdNZW1vcnlTaXplLCBhbmQgTmRyQ29uZm9ybWFudFN0cmluZ1VubWFyc2hhbGwuCgoJKiBkbGxzL3JwY3J0NC9uZHJfc3R1Ymxlc3MuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CgktIENsaWVudENhbGwyIHN0aWxsIGRlc2VydmVzIGEgRklYTUUuCgktIENvbXBsZXRlIGJpbmRpbmdzIHdpdGggTlVMTCBlbmRwb2ludHMuCgktIEltcGxlbWVudCBScGNTZXJ2ZXJVc2VQcm90c2VxQSwgUnBjU2VydmVyVXNlUHJvdHNlcVcuCgoyMDAyLTEwLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbm50LmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWY6CglGaXhlZCB0aGUgV0lORV9OT19TVFJJQ1QgI2lmZGVmcyB0byBkbyB0aGUgcmlnaHQgdGhpbmcgaWYgU1RSSUNUIGlzCglkZWZpbmVkIChzcG90dGVkIGJ5IE1pY2hhZWwgU3RlZmFuaXVjKS4KCgkqIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsIGluY2x1ZGUvcnBjbmRyLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUZpeCByZXR1cm4gdHlwZXMgb2YgTmRyQ29uZm9ybWFudFN0cmluZ01hcnNoYWxsLCBOZHJHZXRCdWZmZXIsIGFuZAoJTmRyU2VuZFJlY2VpdmUuCgoJKiBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBpbmNsdWRlL3JwY2RjZS5oOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglTdHVicyBmb3IgUnBjU2VydmVyVXNlUHJvdHNlcUEsIFJwY1NlcnZlclVzZVByb3RzZXFXLgoKCSogZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hY21zdHJlYW0uYywKCSAgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsIGRsbHMvYXZpZmlsMzIvaWNtc3RyZWFtLmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCU5ldyBBVkkgc3RyZWFtaGFuZGxlcnMgZm9yIGF1ZGlvIGFuZCB2aWRlbyBzdHJlYW1zLgoKCSogZGxscy9hdmlmaWwzMi9hcGkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlX0RlLnJjLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRW4ucmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9wcml2YXRlLmg6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gRml4ZWQgdXNhZ2Ugb2YgaGFuZGxlciBpbnN0ZWFkIG9mIHR5cGUgaW4gQVZJTWFrZUNvbXByZXNzZWRTdHJlYW0uCgktIEltcGxlbWVudGVkIEFWSUJ1aWxkRmlsdGVyQS4KCS0gU3RhcnRlZCB0byBpbXBsZW1lbnQgQVZJQnVpbGRGaWx0ZXJXLgoKCSogZGxscy9hdmlmaWwzMi9hdmlmaWxlLmM6IE1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBGaXhlZCBtYW55IGJ1Z3Mgd2hpY2ggcHJldmVudHMgd3JpdGluZy4KCS0gRml4ZWQgc2VnZmF1bHQgd2hpbGUgcGFyc2luZyBpbnZhbGlkIGluZGV4LgoJLSBLZWVwIHBhcnNpbmcgb2YgaW5kZXggZXZlbiBpZiBzdHJlYW1oZWFkZXIgc2F5cyBpdCdzIGVtcHR5CgktIEZpeGVkIGJ1ZyBpbiBBVklGSUxFX1NhdmVJbmRleCB3aGVuIHN0cmVhbSBpcyBlbXB0eS4KCS0gRml4ZWQgYnVnIGluIEFWSUZJTEVfV3JpdGVCbG9jaywgd2hlbiBjaHVuayBpcyBub3Qgb2YgZXZlbiBzaXplLgoKCSogaW5jbHVkZS92ZncuaDogTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglBZGRlZCBtYWNyb3MgZm9yIEFWSUZpbGVDbG9zZSBhbmQgQVZJU3RyZWFtQ2xvc2UuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURQQXMgY2FuJ3QgaGF2ZSBtb3JlIHRoYW4gMHg4MDAwIGVsZW1lbnRzIChmaXhlZCB3aXRoIGxvdHMgb2YgaGVscAoJZnJvbSBDYXJsb3MgPGNsb3phbm9AYW5kYWdvLmNvbSkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU5vIG5lZWQgdG8gaW5jcmVtZW50IGl0ZW0gc2l6ZSwgaXQncyBhbHJlYWR5IGFkanVzdGVkIGJ5IERQQV9TZXRQdHIKCShmb3VuZCwgYW5kIGZpeGVkIGJ5IENhcmxvcyA8Y2xvemFub0BhbmRhZ28uY29tPikuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCByZWx5IG9uIEhlYXBSZUFsbG9jIHRvIGFsbG9jYXRlIGEgTlVMTCBwb2ludGVyLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXdyaXRlIERQQV9JbnNlcnRQdHIgaW4gdGVybXMgb24gRFBBX1NldFB0ciwgc28gdGhhdCAgaXQncyBzaW1wbGVyLAoJY2xlYW5lciwgYW5kIG1vcmUgY29ycmVjdC4KCUl0IG5vdyBleHBhbmRzIHRoZSBhcnJheSB0byBhY2NvbW9kYXRlIGxhcmdlciB0aGFuIGN1cnJlbnQgc2l6ZQoJaW5kZXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBzZW5kIHVuaW5pdGlhbGl6ZWQgbFBhcmFtcyBvbiBub3RpZmljYXRpb24gbXNncyAoZm91bmQgYnkgUmVpbgoJS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4pLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgcmV3cml0ZSBvZiB0aGUgcmNWaWV3IGltcGxlbWVudGF0aW9uLgoJTG90cyBvZiBidWdzIGZpeGVkIGluIHJjVmlldyBjb21wdXRhdGlvbi4KCUFzc29ydGVkIGNsZWFudXBzLCBhbmQgc2ltcGxpZmljYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3BsaXQgcmFuZ2VzX2Rlc3Ryb3kgaW4gcmFuZ2VzX2NsZWFyLCBhbmQgcmFuZ2VzX2Rlc3Ryb3kuCglSZXdyaXRlIERlbGV0ZUFsbEl0ZW1zLCBmb3IgY2xlYW5lciwgZmFzdGVyLCBtb3JlIGNvcnJlY3QgY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVwZGF0ZWQgaGVhZGVyIGRvY3VtZW50YXRpb24gdG8gdGhlIGxhdGVzdCwgYW5kIGdyZWF0ZXN0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJT3B0aW1pemUgaW52YWxpZGF0aW9uIG9uIGluc2VydC4KCVNoYXJlIHRoZSBpbnZhbGlkYXRpb24gY29kZSBiZXR3ZWVuIHtEZWxldGUsSW5zZXJ0fUl0ZW0uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXdyaXRlIERlbGV0ZUl0ZW1UOiBjbGVhbmVyLCBhIGxvdCBmYXN0ZXIuCglOdW1iZXIgb2YgYnVnIHdlcmUgZml4ZWQuCglUaGUgbWluaW11bSBwb3NzaWJsZSBpcyByZWRyYXduLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW1wbGVtZW50IG1vc3Qgb2YgTFZNX0FSUkFOR0UuCglNYWtlIHVzZSBvZiBpdCwgd2hlcmUgaXQgd2FzIGFwcHJvcHJpYXRlLgoJVXNlIGluZm9QdHItPmR3U3R5bGUgZGlyZWN0bHksIGluIG1vc3QgcGxhY2VzLgoJQXNzb3J0ZWQgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglQcm9wZXIgKHR5cGUgd2lzZSkgcmV0dXJuIHR5cGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVvcmdhbml6ZSBoZWFkZXIgbm90aWZpY2F0aW9ucy4KCVN1cHBvcnQgbm90aWZpY2F0aW9ucyB0aGF0IGRvbid0IGhhdmUgZW1iZWRkZWQgc2l6ZSBpbmZvLgoJSW52YWxpZGF0ZSBjb2x1bW5zIG9uIGZvcm1hdCBjaGFuZ2UgKGlmIG5lZWRlZCkuCglBc3NvcnRlZCBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNyYXNoIG9uIGludGVybmFsIE5VTEwgcG9pbnRlcnMsIGRvbid0IHRlc3QgYWxsIG92ZXIgdGhlIHBsYWNlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJV2hlbiByZW1vdmluZyBmb2N1cywgbm8gbmVlZCB0byBnbyB0aHJvdWdoIGFsbCBlbGVtZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBjb2xvcnMgZm9yIHNlbGVjdGVkIGl0ZW1zIGluIGZ1bGwgcm93IHNlbGVjdCBtb2RlLgoJRml4IGJ1ZyBjYXVzZWQgYnkgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgc3RhdGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggY29tcHV0YXRpb24gb2Ygc3ViaXRlbSBib3gsIHdoZW4gaW52YWxpZGF0aW5nIGl0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXNzZXJ0IG9uIGluY29uc2lzdGVudCByYW5nZSBsaXN0IHN0YXRlcy4KCVZhcmlvdXMgY29kZSBjbGVhbnVwcywgZmV3IHBvdGVudGlhbCBidWdzIGZpeGVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGdyb3cgdGhlIGl0ZW0gbGlzdCB0byBhcmJyaXRhcnkgaW5kZXg6IGlmIHJlcXVlc3RlZCBpbmRleCBpcwoJbGFyZ2VyIHRoYW4gY3VycmVudCBjb3VudCwganVzdCBhcHBlbmQuCglNaXNjZWxsYW5lb3VzIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU2V0Q29sdW1uV2lkdGggcmV3cml0ZTogc2ltcGxlciwgY2xlYW5lciBjb2RlLiBCdWdzIHNxdWFzaGVkLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSGFuZGxlIGdlbmVyaWMgY29sdW1uIHdpZHRoIGNoYW5nZXMuCglGaXggYnVnIGluIFNldENvbHVtblQgd2hpY2ggcmVuZGVyZWQgaXQgdW51c2FibGUuCglDb2x1bW4gY29kZSBjbGVhbnVwLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQXNzZXJ0IG9uIGludGVybmFsIGludmFyaWFudHMsIHJhdGhlciB0aGFuIGZhaWwgZ3JhY2VmdWxseS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vcmUgZG9jcyBjb21wbGlhbnQgYWxpZ25tZW50IGhhbmRsaW5nIGZvciBzdWJpdGVtcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSdW4gcmVnZWRpdCBldmVuIGlmIG5vdCBpbnN0YWxsZWQuCgoJKiBwcm9ncmFtcy93aW5oZWxwL0RhLnJjLCBwcm9ncmFtcy93aW5oZWxwL0RlLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0VuLnJjLCBwcm9ncmFtcy93aW5oZWxwL0VzLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0ZpLnJjLCBwcm9ncmFtcy93aW5oZWxwL0ZyLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0h1LnJjLCBwcm9ncmFtcy93aW5oZWxwL0l0LnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL0tvLnJjLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5oZWxwL1B0LnJjLCBwcm9ncmFtcy93aW5oZWxwL1NpLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL1NrLnJjLCBwcm9ncmFtcy93aW5oZWxwL1N3LnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL1ZhLnJjLCBwcm9ncmFtcy93aW5oZWxwL1dhLnJjLAoJICBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHBfcmVzLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciB1c2luZyBleHBsaWNpdCB2YWx1ZXMgZm9yIHJlc291cmNlIGlkZW50aWZpY2F0aW9uLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBub3RpZmljYXRpb24gZnJvbSBoZWFkZXIsIG9uIGl0ZW0gY2hhbmdlZC4KCVNtYWxsIGluZGVudGF0aW9uIGZpeGVzLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglTZXQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgUERfUEFHRU5VTVMgZmxhZy4KCgkqIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglJbXBsZW1lbnQgcHJpbnRpbmcgaW4gbm90ZXBhZC4KCgkqIGRsbHMvZDNkOC9kM2Q4X3ByaXZhdGUuaCwgZGxscy9kM2Q4L2RldmljZS5jLCBkbGxzL2QzZDgvZGlyZWN0eC5jLAoJICBkbGxzL2QzZDgvdm9sdW1lLmMsIGRsbHMvZDNkOC92b2x1bWV0ZXh0dXJlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkIHRoZSBiYXNpYyBzdXBwb3J0IGZvciB2b2x1bWUgdGV4dHVyZXMgLyB2b2x1bWVzICgzZCB0ZXh0dXJlcykuCgoJKiBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglLZWVwIG9uIG1vdmluZyAxNiBiaXQgY29kZSBvdXQgb2Ygd2lubW0sIG5vdyBvbmx5IHVzaW5nIGxpbmVhcgoJYWRkcmVzc2VzIGZvciBidWZmZXJzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIGEgZmV3IG1vcmUgbWFjcm9zIGZvciBidXR0b24gbWFuaXB1bGF0aW9uCgkoZW5hYmxlL2Rpc2FibGUvY2hhbmdpbmcgbWFjcm8pLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5oLAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUltcHJvdmVkIGEgYml0IGxpbmsgaGFuZGxpbmcgKGEgZmV3IG1vcmUgbGluayB0eXBlcyBsb2FkZWQgZnJvbSBmaWxlCglhbmQgc3VwcG9ydCBmb3IgbGluayB0byBhIG1hY3JvKS4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglBY3R1YWxseSB1c2UgbGFuZ3VhZ2UgaWRlbnRpZmllci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQ29ycmVjdCB0aGUgYmVoYXZpb3IgZm9yIGRpc2FibGVkIHRvb2xiYXIgYnV0dG9ucy4KCjIwMDItMTAtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgY3JlYXRlIGEgcmFuZ2UgbGlzdCBmb3IgYW4gZW1wdHkgcmFuZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTdG9yZSB0aGUgZW50aXJlIGZvcm1hdCBiaXRtYXAgaW4gdGhlIGNvbHVtbiBpbmZvLgoJUmV3cml0ZSBHZXRDb2x1bW5UIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoYXQuCglSZWxhdGVkIGNsZWFudXBzLCBhbmQgc2ltcGxpZmljYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29sdW1uIHplcm8gaGFzIHRoZSBpbWFnZSBlbmFibGVkIGFsd2F5cywgaXJyZXNwZWN0aXZlIG9mIGZvcm1hdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVuaWZ5IHtJbnNlcnQsU2V0fUNvbHVtblQgYXMgbXVjaCBhcyBwb3NzaWJsZS4KCUZpeCBhIGJ1bmNoIG9mIHByb2JsZW1zIGluIFNldENvbHVtblQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggZnVuY3Rpb24gaGVhZGVyIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglCZXR0ZXIgcmVwb3J0IG1vZGUuCglVc2UgdGhlIG5ldyBjb2x1bW4gaW5mb3JtYXRpb24gdG8gc2ltcGxpZnksIGFuZCBzcGVlZCB1cCB0aGUgY29kZS4KCUVuYWJsZSBzdXBwb3J0IGZvciBpbWFnZXMgaW4gc3ViaXRlbXMgKGluIExWU19SRVBPUlQgbW9kZSkuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9tc2dib3guYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglDb252ZXJ0IE1lc3NhZ2VCb3ggZmFtaWx5IGZ1bmN0aW9ucyB0byB1bmljb2RlLgoKCSogaW5jbHVkZS9ycGNwcm94eS5oOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVBhdGNoIGNydWZ0IHJlbW92YWwuCgoJKiBkbGxzL3JwY3J0NC9uZHJfc3R1Ymxlc3MuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsCgkgIGluY2x1ZGUvcnBjbmRyLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVN1cGVyLWNydWRlIGltcGxlbWVudGF0aW9uIGZvciBOZHJDbGllbnRDYWxsMi4KCVNwZWNzIGFuZCBoZWFkZXJzIGZvciBOZHJDbGllbnRJbml0aWFsaXplTmV3LAoJTmRyQ29uZm9ybWFudFN0cmluZ01hcnNoYWxsLCBOZHJHZXRCdWZmZXIsIE5kckZyZWVCdWZmZXIsIGFuZAoJTmRyU2VuZFJlY2VpdmUuCgoJKiBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmM6IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJRml4IHVwIFJwY01nbXRXYWl0U2VydmVyTGlzdGVuIHRvIGJlIGxlc3MgaW5jb3JyZWN0LgoKCSogZGxscy9ycGNydDQvbmRyX21pZGwuYywgZGxscy9ycGNydDQvbmRyX21pc2MuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJU29tZSBNSURMIGNvbnN0YW50cyBhbmQgc3RydWN0dXJlcyAoc2hvdWxkIGV2ZW50dWFsbHkgbW92ZSB0byBycGNuZHIuaAoJSSB0aGluaykuCglTdHVicyBmb3IgTmRyQ2xpZW50SW5pdGlhbGl6ZU5ldywgTmRyQ29uZm9ybWFudFN0cmluZ01hcnNoYWxsLAoJTmRyR2V0QnVmZmVyLCBOZHJGcmVlQnVmZmVyLCBhbmQgTmRyU2VuZFJlY2VpdmUgKG5vdCBpbiBzcGVjZmlsZSB5ZXQpLgoKCSogaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBsb2FkZXIvdGFzay5jOgoJR2V0L1NldEZhc3RRdWV1ZTE2IHNob3VsZCB1c2UgSFFVRVVFMTYgaGFuZGxlcy4KCgkqIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oOgoJUmVtb3ZlZCBERUNMQVJFX09MRF9IQU5ETEUuIEZpeGVkIGEgZmV3IHJlbWFpbmluZyB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmVkdW1wL21zbWFuZ2xlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglkZW1hbmdsZV9kYXRhdHlwZTogZGVsZXRlIHN1cGVyZmxvdXMgZnJlZSgpLgoKCSogZGxscy9kZHJhdy9kZHJhdy91c2VyLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGQgM0Qgc3VwcG9ydCBhdCB0aGUgVXNlciBkcml2ZXIgbGV2ZWwuCgoJKiBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jLCBpbmNsdWRlL3dpbmUvb2JqX3dlYmJyb3dzZXIuaDoKCU1hbHRlIFN0YXJvc3RpayA8bWFsdGVAa2RlLm9yZz4KCUZpeGVkIElXZWJCcm93c2VyOjpOYXZpZ2F0ZSgpIHBhcmFtZXRlciB0eXBlLgoJQWRkZWQgSVdlYkJyb3dzZXJBcHAgYW5kIHJlbGF0ZWQgdHlwZWRlZnMuCgoJKiBNYWtlLnJ1bGVzLmluLCB0b29scy93bWMvd3JpdGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNvcnJlY3RlZCB0aGUgYWxpZ25tZW50IG9mIHVuaWNvZGUgbWVzc2FnZSB0YWJsZSBzdHJpbmdzIGluIHdtYywgYW5kCglzd2l0Y2hlZCB0byB1bmljb2RlIGZvciBtZXNzYWdlIHN0cmluZ3MsIHNvIHRoYXQgRm9ybWF0TWVzc2FnZSgpIG5vdwoJd29ya3MuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuYywKCSAgdG9vbHMvbWFrZV9yZXF1ZXN0czoKCUNvbnZlcnRlZCB0aGUgc2VydmVyIHRvIC1EU1RSSUNULgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbDoKCUJpbGwgTWVkbGFuZCA8QmlsbC5NZWRsYW5kQGFjY3BhYy5jb20+CglBZGQgZG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gbW9kaWZ5IHdoYXQgLS1kZWJ1Z21zZyArcmVsYXkgcmVwb3J0cy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVdoZW4gZGVsZXRpbmcgYW4gaXRlbSwgcmVtb3ZlIHNlbGVjdGlvbiwgZG9uJ3QgYWRkIGl0IQoKCSogaW5jbHVkZS91c2VyLmgsIHdpbmRvd3MvaG9vay5jOgoJQ2hhbmdlZCB0aGUgVVNFUl9IRUFQXyogbWFjcm9zIHRvIHVzZSBIQU5ETEVzIGluc3RlYWQgb2YgSEFORExFMTZzLgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvdGV4dC5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglTaWxlbmNlIHNvbWUgd2FybmluZ3MgZHVlIHRvIGNhc3RzIGJldHdlZW4gcG9pbnRlciBhbmQgaW50ZWdlcnMgb2YKCWRpZmZlcmVudCBzaXplLgoKCSogZGxscy91c2VyL2RkZS9taXNjLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglGaXggd2FybmluZ3Mgd2hlbiBjb252ZXJ0aW5nIGJldHdlZW4gYW4gQVRPTSBhbmQgYSBIU1ouCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3JlIHRyYWNlcyB0byBoZWxwIHVzIG1ha2Ugc2Vuc2Ugb2YgdGhlIG91dHB1dC4KCUZhc3RlciwgY2xlYW5lciByYW5nZXNfe2FkZCxkZWx9LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHJhbmdlcyBpbnNlcnRpb24gYnVnIChzcGVjaWZ5IERQQVNfU09SVEVEIHdoZW4gc2VhcmNoaW5nKS4KCUFkZCBhIGxvdCBvZiBhc3NlcnQtZWQgY29uc2lzdGVuY3kgY2hlY2tzLgoJQWRkIGJ1bmNoIG9mIHRyYWNlIG1lc3NhZ2VzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW5zcGVjdCBzdHlsZSBiaXRzIGluZGVwZW5kZW50bHkgb24gc3R5bGUgY2hhbmdlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmV3cml0ZSBTdHlsZUNoYW5nZWQgcHJvY2VkdXJlCgkgIG8gc29tZSBidWdzIGhhdmUgYmVlbiBmaXhlZAoJICBvIGNsZWFuZXIsIHNpbXBsZXIgY29kZQoJRml4IHNvbWUgY29ybmVyIGNhc2UsIGljb24gc2l6ZSBjb21wdXRhdGlvbiBidWdzLgoJQXNzb3J0ZWQgZG9jcyB1cGRhdGVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJS2VlcCB0cmFjayBvZiBwZXItY29sdW1uIGluZm9ybWF0aW9uIGluc2lkZSB0aGUgbGlzdHZpZXcuCglDYWNoZSBoZWFkZXIgcmVjdGFuZ2xlcy4KCVVzZWQgdGhlIGNhY2hlZCBpbmZvIGluc3RlYWQgb2YgY2FsbGluZyB0byB0aGUgaGVhZGVyIGVhY2ggdGltZS4KCVVwZGF0ZSB0aGUgbGlzdHZpZXcgYXMgd2UgdHJhY2sgY29sdW1uIHdpZHRoIGNoYW5nZXMuCglVbmlmeSBjb2x1bW4gaGFuZGxpbmcgYmV0d2VlbiB7SW5zZXJ0LERlbGV0ZX1Db2x1bW4sIGFuZCB3aWR0aAoJY2hhbmdlcy4KCVNpbXBsaWZ5IFJlZnJlc2hSZXBvcnQsIGJ5IHVzaW5nIHRoZSBuZXcgY29sdW1uIGluZm8uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEbyBub3QgcXVlcnkgaXRlbXMgdGhhdCBhcmUganVzdCBiZWluZyBpbnNlcnRlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlb3JnYW5pemUgdGhpbmdzIGEgYml0IHNvIHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQgdGhlICd2YWxpZCcgZmxhZyBvbgoJZWFjaCBpdGVtLgoJU21hbGwgY29tbWVudHMgdXBkYXRlLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBCVHJlZXMgaW4gZmlsZSBoZWFkZXIgcmVhZGluZy4KCUZpeGVkIGJvZ3VzIHBhbGV0dGUgbGVuZ3RoIGNvbXB1dGF0aW9uIHdoaWxlIHJlYWRpbmcgYml0bWFwLgoJRml4ZWQgcmVuZGVyaW5nIHdoaWxlIHN0YXJ0aW5nIGEgcGFnZSB3aXRoIGEgYml0bWFwLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9hdmlmaWwzMi93YXZmaWxlLmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gRml4ZWQgbG9hZGluZyBvZiB3YXZlIGZpbGVzLgoJLSBDb3JyZWN0ZWQgQVZJRklMRUlORk9XIHN0cnVjdHVyZSB1cGRhdGVzLgoJLSBJbXBsZW1lbnRlZCBzYXZpbmcgb2Ygd2F2ZSBmaWxlcy4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jOiBNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUZpeGVkIHZlcnkgc2xvdyBsb2FkaW5nIG9mIGluZGV4LgoKMjAwMi0xMC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzJfbWFpbi5jLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2F2aWZpbDMyL2V4dHJhY2h1bmsuYywgZGxscy9hdmlmaWwzMi9mYWN0b3J5LmMsCgkgIGRsbHMvY29tY2F0L2NvbWNhdF9tYWluLmMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsCgkgIGRsbHMvZDNkOC9kaXJlY3R4LmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywKCSAgZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvZHNvdW5kL21peGVyLmMsCgkgIGRsbHMvbXNpbWczMi9tc2ltZzMyX21haW4uYywgZGxscy9tc2lzeXMvbXNpc3lzLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsCgkgIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvb2xlZGxnL29sZWRsZ19tYWluLmMsCgkgIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsCgkgIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9ycGNydDQvY3BzZi5jLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsCgkgIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywKCSAgZGxscy9zZXR1cGFwaS9pbnN0YWxsLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywKCSAgZGxscy9zbm1wYXBpL21haW4uYywgZGxscy90d2Fpbi90d2FpbjMyX21haW4uYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgZGxscy93aW4zMnMvdzMyc3lzLmMsCgkgIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lcHMvYml0bWFwLmMsIGRsbHMvd2luZXBzL2JydXNoLmMsCgkgIGRsbHMvd2luZXBzL2NsaXBwaW5nLmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9mb250LmMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcGVuLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS9pbmZvLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLAoJICBkbGxzL3dpbm1tL21jaWF2aS93bmQuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLAoJICBkbGxzL3dpbnRydXN0L3dpbnRydXN0X21haW4uYzoKCUZpeGVkIHdhcm5pbmdzIGNhdXNlZCBieSBjb252ZXJzaW9uIHRvIC1EU1RSSUNULgoKCSogZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL21wci9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9wc2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9wcm90b2NvbC5kZWY6CglBZGRlZCBzdXBwb3J0IGZvciBidWlsZGluZyBjZXJ0YWluIGRsbHMgd2l0aCAtRFNUUklDVC4KCUFkZGVkIC1EV0lORV9OT19TVFJJQ1QgZmxhZyB0byBkbGxzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBTVFJJQ1QgeWV0LgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYywgaW5jbHVkZS93b3dudDMyLmg6CglBZGRlZCBGSVhNRXMgZm9yIG1ldGFmaWxlIGFuZCBmdWxsaHduZCBoYW5kbGUgY29udmVyc2lvbnMgdGhhdCBhcmVuJ3QKCXN1cHBvcnRlZCBwcm9wZXJseSB5ZXQuCgoJKiBkbGxzL2dkaS9nZGkxNi5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL2xpbmVkZGEuYzoKCU1vdmVkIEVudW1PYmplY3RzMTYsIExpbmVEREExNiBhbmQgYXNzb2NpYXRlZCBnbHVlIGNvZGUgdG8gZ2RpMTYuYy4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkxNi5jLCBkbGxzL2dkaS9nZGkzMi5zcGVjLAoJICBkbGxzL29sZTMyL29sZTIuYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2ZvbnQuYzoKCVNwbGl0IG91dCBzb21lIDE2LWJpdCBHREkgY29kZS4KCgkqIGRsbHMvdXNlci91c2VyMTYuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBpbmNsdWRlL3VzZXIuaCwKCSAgb2JqZWN0cy9wYWxldHRlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVN0b3JlIHRoZSBvcmlnaW5hbCBHREkgcGFsZXR0ZSBmdW5jdGlvbnMgaW4gcGZuU2VsZWN0UGFsZXR0ZSBhbmQKCXBmblJlYWxpemVQYWxldHRlIHNvIHRoYXQgVVNFUiBkb2Vzbid0IGhhdmUgdG8gaW1wb3J0IHRoZW0uCgoJKiBkbGxzL3JwY3J0NC9uZHJfc3R1Ymxlc3MuYywgZGxscy9ycGNydDQvcnBjX2JpbmRpbmcuYywKCSAgZGxscy9ycGNydDQvcnBjX3NlcnZlci5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgaW5jbHVkZS9ycGNkY2UuaDoKCUdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJLSAodHJ5IHRvKSBpbXBsZW1lbnQgUnBjTWdtdFdhaXRTZXJ2ZXJMaXN0ZW4KCS0gcmVtb3ZlIGR1cGxpY2F0ZSBScGNTZXJ2ZXJMaXN0ZW4gZGVjbGFyYXRpb24gaW4gcnBjZGNlLmgKCS0gc29tZSBUUkFDRXMKCgkqIGRsbHMvZ2RpL2dkaTE2LmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKCUNvbnZlcnRlZCBQbGF5TWV0YUZpbGVSZWNvcmQgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIHRvIDMyLWJpdC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGlmMTYzMi9yZWxheS5jLAoJICBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYzoKCU1lcmdlZCB3aW5lX2NhbGxfdG9fMTZfbG9uZyBhbmQgd2luZV9jYWxsX3RvXzE2X3Nob3J0IGludG8gYSBzaW5nbGUKCWZ1bmN0aW9uLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9wb3J0LmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jOgoJQWRkZWQgd2luZV9tZW1jcHlfdW5hbGlnbmVkIGZ1bmN0aW9uIHRvIGF2b2lkIGdjYyBtZW1jcHkKCW9wdGltaXphdGlvbnMuCgoJKiBpbmNsdWRlL3Zmdy5oOiBNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gQWRkIEZJTkRfKiBjb25zdGFudHMuCgktIEFkZCBBVklTQVZFQ0FMTEJBQ0sgZGVjbGFyYXRpb24uCgktIEFkZCBkZWNsYXJhdGlvbiBmb3Igc29tZSBBVkkgZnVuY3Rpb25zLgoJLSBBZGQgc29tZSBBVkkgbWFjcm9zLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi8uY3ZzaWdub3JlLAoJICBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfRGUucmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9Fbi5yYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX3ByaXZhdGUuaCwgZGxscy9hdmlmaWwzMi9leHRyYWNodW5rLmMsCgkgIGRsbHMvYXZpZmlsMzIvZXh0cmFjaHVuay5oLCBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywKCSAgZGxscy9hdmlmaWwzMi9nZXRmcmFtZS5jLCBkbGxzL2F2aWZpbDMyL3JzcmMucmMsCgkgIGRsbHMvYXZpZmlsMzIvd2F2ZmlsZS5jLCB3aW5lZGVmYXVsdC5yZWc6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCS0gQWRkIHdhdmVmaWxlIGhhbmRsZXIuCgktIEFkZCBpbXBsZW1lbnRhdGlvbiBmb3IgSUdldEZyYW1lLgoJLSBJbXBsZW1lbnRlZCBsb2FkaW5nIGFuZCB3cml0aW5nIG9mIEFWSXMuCgktIEFkZCBzb21lIG1vcmUgc3R1YnMgZm9yIHNvbWUgQVBJIGZ1bmN0aW9ucy4KCS0gQWRkIHJlc291cmNlcyB0byBhdmlmaWwzMi5kbGwuCgktIEltcGxlbWVudGVkIEFWSVNhdmVPcHRpb25zRnJlZS4KCS0gRGVjbGFyZWQgSUlEXyogYXMgZXh0ZXJuIGluIGF2aWZpbDMyLnNwZWMgKGF2b2lkcyBsaW5rZXIgcHJvYmxlbSkuCgoJKiBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmM6CglNaWNoYWVsIEf8bm5ld2lnIDxNaWNoYWVsR3Vlbm5ld2lnQGdteC5kZT4KCUZpeGVkIG1lbW9yeSBsZWFrIChyZWxlYXNlIEFWSSBzdHJlYW0pLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOiBTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUJ1aWxkQ29tbURDQkFuZFRpbWVvdXRzQTogTWFkZSB0aGUgYXJndW1lbnQgcGFyc2luZyBjYXNlIGluc2Vuc2l0aXZlLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEJldHRlciAuZHNwIGZpbGUgZ2VuZXJhdGlvbiBmb3IgLmV4ZSBvdXRwdXRzCgktIEFkZGVkIGdlbmVyYXRpb24gb2Ygd2luZXRlc3QuZHN3IGZvciBidWlsZGluZyB3aW5lIHRlc3RzIHVuZGVyCgkgIFdpbmRvd3MgKGN1cnJlbnRseSB2ZXJ5IGtsdWRneSwgYnV0IGl0IHdvcmtzIHRvIHNvbWUgZXh0ZW50KS4KCgkqIHByb2dyYW1zL3dpbmVmaWxlL3dpbmVmaWxlLmM6IE1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglSZW1vdmVkIHdhcm5pbmcgIlNldFdpbmRvd1RleHQoMCwgLi4uKSIgd2hlbiBvcGVuaW5nIG5ldyB3aW5kb3dzLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCXBzelRleHQgaXMgc3RvcmVkIGFzIFVuaWNvZGUsIHNvIGNhbGwgRHJhd1RleHRXKCkgaW5zdGVhZCBvZgoJRHJhd1RleHRBKCkuCgoyMDAyLTEwLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSW5zdHJ1bWVudCBTZXRJdGVtVCB0byBjaGFuZ2Ugb25seSBfb25lXyBpdGVtIGF0IGEgdGltZS4gVGhhdCBpcywgaWYKCXdlIGhhdmUgdG8gY2hhbmdlIGZvY3VzLCB3ZSBjYWxsIGl0IHJlY3Vyc2l2ZWx5IHRvIGZpcnN0IHJlbW92ZSB0aGUKCWZvY3VzIGZyb20gdGhlIGl0ZW0gdGhhdCBoYXMgaXQuIFRoaXMgYWxsb3dzIHNpbXBsZXIsIGFuZCBtb3JlIGNvcnJlY3QKCWludmFsaWRhdGlvbiBoYW5kbGluZy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVuaWZ5IHNldF97b3duZXIsbWFpbn1faXRlbSBmdW5jdGlvbnMuCglGaXgge29sZCxuZXd9c3RhdGUgYW5kIGxQYXJhbSByZXBvcnRpbmcgaW4gTFZOX0lURU1DSEFOR3tJTkcsRUR9LgoJRml4IHNhbml0eSBjaGVjayBjb25kaXRpb25zIGZvciBMVlNfT1dORVJEQVRBLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW9yZSwgYmV0dGVyIHRyYWNpbmcgdG8gaGVscCBuYWlsIGRvd24gc29tZSBjcmFzaGVzLgoJRml4IHR5cG8gaW4gR2V0SXRlbVQgKGZvdW5kLCBhbmQgZml4ZWQgYnkgSHV3IERhdmllcykuCglFeGl0IHJpZ2h0IGF3YXkgZnJvbSBHZXRJdGVtVCBpZiBub3RoaW5nIGlzIGFza2VkIChtYXNrID09IDApLgoJQXNzb3J0ZWQgY29kZSBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURlYWwgd2l0aCBzcGFyc2VseSBwb3B1bGF0ZWQgbGlzdHZpZXdzLgoJQ3Jhc2ggb24gaW50ZXJuYWwgY29ycnVwdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBhYmlsaXR5IHRvIGNyZWF0ZSBhbiBpdGVyYXRvciBvdmVyIGEgcmFuZ2UgbGlzdC4KCUZpeCBtZW1vcnkgbGVhayB3aGVuIGRlc3Ryb3lpbmcgcmFuZ2VzLgoJQWRkIGZ1bmN0aW9uIHRoYXQgd2lsbCB0byBhICdkZWVwJyBjbG9uZSBvZiBhIHJhbmdlIGxpc3QuCglBZGQgZnVuY3Rpb24gdGhhdCB3aWxsIHN1YnRyYWN0IGEgcmFuZ2UgbGlzdCBmcm9tIGFub3RoZXIuCglEbyBub3QgY3Jhc2ggb24gTlVMTCByYW5nZXMgKHNpbWlsYXIgaW4gc3Bpcml0IHRvIEhEUEFzKS4KCUZhbmN5IGRlc2VsZWN0aW9uIHJvdXRpbmVzIHVzZXMgdGhlIGFib3ZlIGluZnJhc3RydWN0dXJlIHRvIGRlc2VsZWN0Cgl0aGUgbWluaW11bSBwb3NzaWJsZS4KCU1vZGlmeSBTZXRHcm91cFNlbGVjdGlvbiB0byB0YWtlIGFkdmFudGFnZSBvZiBhbGwgdGhpcyBuZXcKCWluZnJhc3RydWN0dXJlLCB0byBhdm9pZCBmbGlja2VyIG9uIHNlbGVjdGlvbiBleHRlbnNpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDaGFuZ2UgdGhlIGRlZmluaXRpb24gb2YgcmFuZ2VzIHRvIGV4Y2x1ZGUgdGhlIHVwcGVyIGJvdW5kLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJSGFuZGxlIHJhbmdlIHRyYWNpbmcgaW4gYSBjb25zaXN0ZW50IGZhc2hpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgZGF0ZWQgY29tbWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglCZXR0ZXIgZW5jYXBzdWxhdGlvbiBvZiB0aGUgcmFuZ2VzIGNvbmNlcHQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3duZDE2LmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywKCSAgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJVXNlIHRoZSBXT1dIYW5kbGUgZnVuY3Rpb25zIHRvIGNvbnZlcnQgYmV0d2VlbiB0YXNrIGhhbmRsZSBhbmQgdGhyZWFkCglpZC4gU3RvcCBleHBvcnRpbmcgVEFTS19HZXRQdHIgYW5kIFRIUkVBRF9JZFRvVEVCIGZyb20ga2VybmVsLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUJ1aWxkIGEgZGVmYXVsdCBjb21tYW5kLWxpbmUgaWYgdGhlIG9uZSB3ZSByZWNlaXZlZCBpcyBhbiBlbXB0eQoJc3RyaW5nLgoKCSogd2luZG93cy93aW4uYzogRml4ZWQgdHlwbyBpbiBFbnVtVGhyZWFkV2luZG93cy4KCgkqIGRsbHMvcnBjcnQ0L2Nwcm94eS5jOiBGaXhlZCBjb21waWxhdGlvbiBmb3Igbm9uLWkzODYuCgoJKiBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc3RhdGljLmMsCgkgIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvZ2RpL2dkaTE2LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L3BydGRydi5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9tc3ZpZGVvL3ZmdzE2LmgsIGRsbHMvb2xlMzIvb2xlMi5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsCgkgIGRsbHMvdXNlci9tc2cxNi5jLCBkbGxzL3VzZXIvcHJvcGVydHkuYywgZGxscy91c2VyL3Jlc291cmNlLmMsCgkgIGRsbHMvdXNlci91c2VyMTYuYywgZGxscy91c2VyL3duZDE2LmMsIGRsbHMvd2luZXBzL2RyaXZlci5jLAoJICBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWF2aS9wcml2YXRlX21jaWF2aS5oLAoJICBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLAoJICBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93b3dudDMyLmgsIGluY2x1ZGUvd2luZS93aW5zb2NrMTYuaCwKCSAgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kaWFsb2cuYywKCSAgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvc3RydWN0MzIuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5oZWxwLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRml4ZWQgd293bnQzMi5oIHRvIG1ha2UgaXQgdXNhYmxlIGZyb20gaW5zaWRlIFdpbmUsIGFuZCB1c2UgaXQgdG8KCWF2b2lkIHNvbWUgZHVwbGljYXRpb24gb2YgdGhlIGhhbmRsZSBjb252ZXJzaW9uIG1hY3Jvcy4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2NhcmV0LmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgZGxscy91c2VyL3duZDE2LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgd2luZG93cy9jYXJldC5jLCB3aW5kb3dzL3Njcm9sbC5jLAoJICB3aW5kb3dzL3dpbi5jOgoJUmV3cm90ZSBjYXJldCBpbXBsZW1lbnRhdGlvbiB0byBzdG9yZSB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIHNlcnZlci4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBNYWx0ZSBTdGFyb3N0aWsgPG1hbHRlQGtkZS5vcmc+CglBZGRlZCBwcm9ncmVzcyBtZXNzYWdlcyB3aGlsZSBidWlsZGluZyBmb250IG1ldHJpY3MuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIERvbnQgc2V0IGxpZ2h0aW5nIGR1cmluZyBkcmF3IHByaW1pdGl2ZSwgcmVseSBvbiB0aGUgcmVuZGVyIHN0YXRlLgoJLSBTbWFsbCBmaXggZm9yIGFscGhhIHRlc3RpbmcuCgktIEFkZCBzdXBwb3J0IHRvIGVuYWJsZS9kaXNhYmxlIGNsaXBwaW5nIGFzIGEgd2hvbGUuCgktIEFsbG93IEQzRFJTX1RFWFRVUkVGQUNUT1IgdG8gYmUgY2hhbmdlZCBvbmNlIHRleHR1cmUgc3RhZ2UgYXJnIHNldAoJICB1cC4KCS0gRDNEVE9QX0RJU0FCTEUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50IE9wZW5HTCBvdmVycmlkaW5nIG9mIHN1cmZhY2UncyBmbGlwIG1ldGhvZC4KCVJlbW92ZSBicm9rZW4gY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU5vdGlmaWNhdGlvbiBjb2RlIGNsZWFudXAsIG1vcmUgdHJhY2VzLCBldGMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQvdXBkYXRlIHRoZSBsaXN0dmlldyBzdHJ1Y3R1cmVzIHRvIHZlcnNpb24gNi4wLgoKCSogZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jOiBNYWx0ZSBTdGFyb3N0aWsgPG1hbHRlQGtkZS5vcmc+CglJbml0aWFsaXplIHdpbmVhcnRzJ3Mgdm9sdW1lIGxldmVsIHRvIGZ1bGwsIHNvIGFwcGxpY2F0aW9ucyB0aGF0IGRvbid0CglzZXQgdGhlIHZvbHVtZSBhcmUgYXVkaWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzogSmVycnkgSmVua2lucyA8SmVycnlfSl9KZW5raW5zQGhvdG1haWwuY29tPgoJQWRkZWQgbWlzc2luZyBSZW1vdmVQcm9wIGNhbGxzLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUNvcnJlY3QgaW5pdGlhbCBkaXNwbGF5IG9mIGZpbGUgbGlzdGluZy4KCjIwMDItMTAtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglXZSBuZWVkIHRvIHByb3ZpZGUgZm9jdXMgaW5mbyBhbHdheXMgaW4gSUNPTiBtb2RlIChzcG90dGVkIGJ5IEh1dwoJRGF2aWVzKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VAY29kZXdlYXZlcnMuY29tPgoJRHVwbGljYXRlIHNlbGVjdGVkIGl0ZW1zIGxpc3QgaW4gTElTVFZJRVdfUmVtb3ZlQWxsU2VsZWN0aW9ucyB0bwoJcHJldmVudCBpbmZpbml0ZSBsb29wcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbWVtYmVyIHRoZSBnbG9iYWwgY29sb3JzIGluIGN1c3RvbSBkcmF3IG1vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb21wdXRlIG9ubHkgdGhlIG9sZCBzdGF0ZSB0aGF0IHdlJ3JlIGdvbm5hIGxvb2sgYXQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbnN0cnVtZW50IFNldEl0ZW1UIHRvIGF2b2lkIHJlcGFpbnRpbmcgaWYgbm90aGluZyBjaGFuZ2VkLgoJVGVhY2ggUmVtb3ZlQWxsU2VsZWN0aW9ucyB0byBza2lwIGFuIGl0ZW0sIHNvIHdlIGNhbiBlbGltaW5hdGUgdGhlCglmbGlja2VyIHdoZW4gd2UgY2xpY2sgb24gYSBzZWxlY3RlZCBpdGVtLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGJ1ZyBpbiBlZGl0IGxhYmVsIHdoZW4gc2VuZGluZyB0aGUgdGV4dCB0byB0aGUgYXBwLgoJQ2xlYW51cCB0aGUgaGFuZGxpbmcgb2YgbkVkaXRMYWJlbEl0ZW0uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglFZGl0IGxhYmVsIGNsZWFudXAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggYnVnIGluIHJhbmdlc19zaGlmdCB3aGljaCB3YXMgY29ycnVwdGluZyBzZWxlY3Rpb25zLgoJRml4IGNsaWNrIG5vdGlmaWNhdGlvbiAoZm91bmQgYW5kIGZpeGVkIGJ5IEFsZXhhbmRyZSBKdWxsaWFyZCkuCglGaXggYnVnIGluIHNldHRpbmcgaXRlbSdzIHN0YXRlIChzb21lIHNlbGVjdGlvbiBjaGFuZ2VzIHdlcmUgbG9zdCkuCglTaW1wbGlmeSBzZWxlY3Rpb24gY29kZSBzdWJzdGFudGlhbGx5LgoJQWRkIGEgbG90IG9mIGRlYnVnIHRyYWNpbmcuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWw6IEJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQWRkIGEgc2VjdGlvbiBvbiB1c2luZyBPREJDLgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJSW1wbGVtZW50ZWQgX3NlaF9sb25nam1wX3Vud2luZC4KCgkqIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggdGhlIG9mbiBmbGFncyBzZXR1cC4KCgkqIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLAoJICBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQXNzb2NpYXRlIHRleHR1cmUgdG8gdGhlIGRldmljZSB3aGVuIEdldEhhbmRsZSBpcyBjYWxsZWQgYW5kIHBlcmZvcm0KCXRoZSBhcHByb3ByaWF0ZSBBZGRSZWYvUmVsZWFzZS4KCUZpeCAzXzNfMiBwaXhlbCBmb3JtYXQuCglNb3ZlIHNvbWUgRU5URVJfR0woKSBjYWxscyB0byB0aGUgcmlnaHQgcGxhY2UuCglGaXggc29tZSBGSVhNRS9UUkFDRSBjYWxscy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLAoJICBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywKCSAgZGxscy9jb21jdGwzMi91cGRvd24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgY29tbWVudCBvbiB3aGF0IGlzIGtub3duIGFib3V0IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBjb250cm9scwoJcmVsYXRpdmUgdG8gY29tY3RsMzIuZGxsIHZlcnNpb24gNi4wLgoKCSogZGxscy9ycGNydDQvbmRyX3N0dWJsZXNzLmMsIGluY2x1ZGUvcnBjbmRyLmg6CglHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCVVzZSB0aGUgbXN2YyB3YXkgdG8gcmV0dXJuIGEgc3RydWN0LCBmaXhpbmcgd2llcmQgcHJvYmxlbXMuCgoJKiBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOiBNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW1wbGVtZW50ZWQgcHJvZ3JhbSBsYXVuY2hpbmcgYnkgZG91YmxlIGNsaWNrLgoKMjAwMi0xMC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBpdGVyYXRvciBjcmVhdGlvbiBmb3IgTFZTX0xJU1QgbW9kZS4KCURvIG5vdCB1cGRhdGUgdGhlIGluZm9QdHItPm5JdGVtV2lkdGggaW4gc2V0X21haW5faXRlbS4KCUJldHRlciBoYW5kbGluZyBvZiB0ZXh0IGJrIGNvbG91ciBpbiBjdXN0b20gZHJhdy4KCVJlbmFtZSBHZXRJdGVtTGlzdE9yaWdpbiB0byBHZXRJdGVtT3JpZ2luLgoJQSBidW5jaCBvZiBjb2RlIGNsZWFudXBzLCBzaW1wbGlmaWNhdGlvbnMsIGV0Yy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU5vIGxvbmdlciBjb21wdXRlIHRoZSBpbGwtZGVmaW5lZCBib3VuZHMgaW4gR2V0SXRlbU1ldHJpY3MuCglGaXggYSBidW5jaCBvZiBidWcgaW4gc3ViaXRlbSBtZXRyaWNzIGNvbXB1dGF0aW9uLgoJUHJvcGVybHkgaW1wbGVtZW50IEdldFN1Ykl0ZW1SZWN0IGluIHRlcm1zIG9mIEdldEl0ZW1NZXRyaWNzLgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLCBhbmQgY29kZSBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVRlYWNoIEdldEl0ZW1NZXRyaWNzIHRvIGRlYWwgd2l0aCBzdWJpdGVtcyBpbiByZXBvcnQgbW9kZSBhcyB3ZWxsLgoJVW5pZnkgRHJhd3ssU3VifUl0ZW0sIHNpbXBsaWZ5IFJlZnJlc2hSZXBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggaXRlcmF0b3IgY3JlYXRpb24gZm9yIExWU19MSVNUIG1vZGUuCglVc2UgYXNzZXJ0KCkgaW5zdGVhZCBvZiBoYW5kLW1hZGUgaGFjay4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBpdGVyYXRvcnMgdG8gcHJvcGVybHkgZGVhbCB3aXRoIExWU197LFNNQUxMfUlDT04gbW9kZXMuCglVbmlmeSB0aGUgUmVmcmVzaHtMaXN0LEljb259IGZ1bmN0aW9ucy4KCVNpbXBsaWZ5IEhpdFRlc3QgdG8gbWFrZSBmdWxsIHVzZSBvZiB0aGUgaXRlcmF0b3JzLgoJRml4IHNlbGVjdGlvbiBib3VuZHMgaW4gSGl0VGVzdC4KCUF2b2lkIGVtcHR5IGRlZmF1bHQgdG8gc2lsZW5jZSB3YXJuaW5nIGluIGdjYyAzLjIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJdGVyYXRvciB1cGRhdGVzOgoJICAgQWRkIHRoZSBub3Rpb24gb2YgYSBzcGVjaWFsIGl0ZW0gd2hpY2ggc2l0cyBhdCB0aGUgc3RhcnQgb2YgdGhlCgkgICBsaXN0LgoJICAgQWRkIHRoZSBhYmlsaXR5IHRvIGl0ZXJhdGUgaW4gYm90aCBkaXJlY3Rpb25zIHRocm91Z2ggdGhlIGxpc3QuCgkgICBEb2N1bWVudCB0aGUgaXRlcmF0b3IgaW50ZXJmYWNlLgoJICAgUmVtb3ZlIGl0ZXJhdG9yX3Zpc2libGVpdGVtcy4KCSAgIFJlbmFtZSBpdGVyYXRvcl9jbGlwcGVkaXRlbXMgdG8gaXRlcmF0b3JfdmlzaWJsZWl0ZW1zIGZvcgoJICAgY29uc2lzdGVuY3kuCglVc2UgdGhlIG5ldyBiaWRpcmVjdGlvbmFsaXR5IHRvIHBhaW50IHRoZSBpdGVtcyBpbiBkZWNyZWFzaW5nIG9yZGVyLgoKCSogZGxscy91c2VyL2xzdHIuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCB3aW5kb3dzL3BhaW50aW5nLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29tcGlsZSBmaXggd2hlbiBhbGwgaGFuZGxlcyBhcmUgY29udmVydGVkIHRvIGEgdm9pZCouCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglGaXhlZCByZWZlcmVuY2UgY291bnQgaGFuZGxpbmcgdG8gc3VwcG9ydCBMb2FkTGlicmFyeSBkdXJpbmcgYSBwcm9jZXNzCglhdHRhY2guCgoJKiBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCS0gRml4ZWQgYnVpbGRpbmcgdW50ZXIgbmF0aXZlIFdJTjMyLgoJLSBGaXhlZCBkaXNwbGF5IG9mIGZpbGVuYW1lcyBpbiB0cmVlIHBhbmUuCgoJKiBkbGxzL21zdmNydC9zY2FuZi5jLCBkbGxzL21zdmNydC9zY2FuZi5oOgoJR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUltcGxlbWVudCBbIGZvcm1hdCBzcGVjaWZpZXIuCgoJKiBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVNpbGVuY2Ugd2FybmluZyBpbiBoZXhfZnJvbTAoKS4KCgkqIG1zZG9zL2RwbWkuYzogRGF2aWQgSGFtbWVydG9uIDxkYXZpZEB0cmFuc2dhbWluZy5jb20+CglHZXQgZGVzY3JpcHRvciBzaG91bGQgcmV0dXJuIGNvcnJlY3Qgc2VnbWVudCBsaW1pdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCVN0ZXZlIEx1c3RiYWRlciA8c3RldmUubHVzdGJhZGVyQHBoaWxpcHMuY29tPgoJRml4IG9mZi1ieS1vbmUgZXJyb3IgaW4gZGV0ZXJtaW5pbmcgbnVtYmVyIG9mIGFyZ3VtZW50cy4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0X29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBGaXhlZCBicm9rZW4gd2luYXBpX2V4dHJhY3Qgb3B0aW9ucyAtLXtwc2V1ZG8tLH1zdHViLXN0YXRpc3RpY3MuCgktIEFkZGVkIG5ldyB3aW5hcGlfZXh0cmFjdCBvcHRpb25zIC0te3BzZXVkby0sfWltcGxlbWVudGVkLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCURvIG5vdCBtZXJnZSBpbWFnZSB3aXRoIGdhcmJhZ2UgYmFja2dyb3VuZC4gQmFzZWQgb24gYSBwYXRjaCBieSBDYXJsb3MKCTxjbG96YW5vQGFuZGFnby5jb20+LgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYzoKCUNocmlzdGlhbiBOZXVtYWlyIDxjaHJpc0Bnbm9tZS1kZS5vcmc+CglTdHViIGZvciB0aGUgQ3J5cHRSZWdpc3Rlck9JREZ1bmN0aW9uIGZ1bmN0aW9uLgoKCSogZGxscy9nZGkvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMva2VybmVsL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvdGVzdHMvZ2VuZXJhdGVkLmMsIGRsbHMvdXNlci90ZXN0cy9nZW5lcmF0ZWQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXBkYXRlZCB0aGUgZ2VuZXJhdGVkIHRlc3RzLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV90ZXN0OiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvbid0IHVzZSBhIHNwZWNpYWwgaGVhZGVyIGZpbGUgZm9yIG1hY3JvcyB1c2VkIGluIGdlbmVyYXRlZCB0ZXN0cy4KCUhhdmUgYSBjb3B5IGluIGVhY2ggZ2VuZXJhdGVkIGZpbGUgaW5zdGVhZC4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglGaXhlZCBkaXZpc2lvbiBieSB6ZXJvLCB3aGVuIHJhbmdlIGlzIDAuCgoJKiB0b29scy93aW5laW5zdGFsbDogVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQWN0dWFsbHkgY29tcGlsZSBXaW5lIGV2ZW4gaWYgbm90IGluc3RhbGxpbmcgYXMgcm9vdC4KCjIwMDItMTAtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5lZGVmYXVsdC5yZWc6IFJvZGVyaWNrIENvbGVuYnJhbmRlciA8dGh1bmRlcmJpcmQya0BnbXgubmV0PgoJU2V0IERpcmVjdFggdmVyc2lvbiB0byA4LjEuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIGZ1bmN0aW9uIHRvIGdldCBzaXplIG9mIGluLW1lbW9yeSByZXNvdXJjZSBhbmQgdXNlZCB0aGlzIGZ1bmN0aW9uCgl0byBjb3B5IHJlc291cmNlIHRvIHdyaXRhYmxlIG1lbW9yeS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglBbGxvdyB3aW5laW5zdGFsbCB0byBiZSBydW4gZnJvbSB0b29scy8gb3IgZnJvbSB0aGUgbWFpbiBXaW5lCglkaXJlY3RvcnkuCgoJKiBkbGxzL2QzZDgvZGV2aWNlLmM6IEphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIENsaXBQbGFuZXMgd29yayBiZXR0ZXIuCgktIEN1bGxpbmcgbm93IGNvbmZpZ3VyZXMgaXRzZWxmIHByb3Blcmx5LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogQ2FybG9zIDxjbG96YW5vQGFuZGFnby5jb20+CglBdm9pZCBjcmFzaGVzIHdoZW4gb2ZuVy0+bHBzdHJGaWxlIGlzIG51bGwuCgoyMDAyLTEwLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL3F1ZXVlLmM6CglSZW1vdmUgbm8gbG9uZ2VyIHVzZWQgUEVSUVVFVUVEQVRBIHN0cnVjdHVyZSBhbmQgZnVuY3Rpb25zLgoKCSogd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgY29udHJvbHMvbWVudS5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS9tZXNzYWdlLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3F1ZXVlLmMsCgkgIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJTW92ZWQgbW91c2UgY2FwdHVyZSBoYW5kbGluZyBpbnRvIHRoZSBzZXJ2ZXIuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jOgoJUmVpbXBsZW1lbnRlZCBHZXRMYXN0QWN0aXZlUG9wdXAgdG8gZ2V0IHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZQoJc2VydmVyLgoKMjAwMi0xMC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbnBvcy5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYywgd2luZG93cy9mb2N1cy5jLAoJICB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5wb3MuYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZm9jdXMuYywKCSAgZGxscy91c2VyL21lc3NhZ2UuYzoKCVJlaW1wbGVtZW50ZWQgR2V0L1NldEFjdGl2ZVdpbmRvdywgR2V0L1NldEZvY3VzIGFuZAoJR2V0L1NldEZvcmVncm91bmRXaW5kb3cgYnkgc3RvcmluZyB0aGUgaW5mb3JtYXRpb24gaW4gdGhlCglzZXJ2ZXIuIEltcGxlbWVudGVkIGNvcnJlY3QgaW50ZXItcHJvY2VzcyB3aW5kb3cgYWN0aXZhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbmFtZSBHZXRJdGVtSGVpZ2h0IHRvIENhbGN1bGF0ZU1heEhlaWdodCwgZm9yIGNvbnNpc3RlbmN5CglGaXggdXNhZ2Ugb2Ygbkl0ZW1XaWR0aCB2cy4gaWNvblNwYWNpbmcuY3gKCU1pc2MgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgdGhlIGl0ZW0gYm94IHJhdGhlciB0aGFuIHRoZSBib3VuZHMgd2hlbiBpbnZhbGlkYXRpbmcuCglJbXBsZW1lbnQgJ2JQYXJ0aWFsJyBpbiBFbnN1cmVWaXNpYmxlLgoKCSogZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJU2lnbmlmaWNhbnRseSBpbXByb3ZlIHRoZSBsaWdodGluZyBjb2RlLgoKCSogc2VydmVyL3RyYWNlLmMsIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYywgd2luZG93cy9xdWV1ZS5jLAoJICBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW51c2VyLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oOgoJQWRkZWQgc2VydmVyLXNpZGUgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSB0aHJlYWQgaW5wdXQgc3RydWN0dXJlLgoJUmVpbXBsZW1lbnRlZCBBdHRhY2hUaHJlYWRJbnB1dCgpIGFuZCBhZGRlZCBHZXRHVUlUaHJlYWRJbmZvKCkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVbmlmeSBEcmF3TGFyZ2VJdGVtIHdpdGggRHJhd0l0ZW0uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgR2V0SXRlbU1ldHJpY3MgaW5zdGVhZCBvZiBHZXRJdGVtTWVhc3VyZXMuCglSZW1vdmUgR2V0SXRlbU1lYXN1cmVzLgoJQWRkIEdldEl0ZW1Cb3ggd2hpY2ggb25seSByZXR1cm5zIHRoZSBib3VuZGFyeSBvZiB0aGUgaXRlbS4KCgkqIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9uZHJfb2xlLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBOZHJPbGVBbGxvY2F0ZSwgTmRyT2xlRnJlZSwgTmRySW50ZXJmYWNlUG9pbnRlckJ1ZmZlclNpemUsCglOZHJJbnRlcmZhY2VQb2ludGVyRnJlZSwgTmRySW50ZXJmYWNlUG9pbnRlck1hcnNoYWxsLAoJTmRySW50ZXJmYWNlUG9pbnRlck1lbW9yeVNpemUsIE5kckludGVyZmFjZVBvaW50ZXJVbm1hcnNoYWxsLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQmUgcmVhbCB0b3VnaCBvbiBpbnRlcm5hbCBwcm9ncmFtbWluZyBlcnJvcnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgc3VwcG9ydCBmb3Igb3duZXIgZHJhd24gbGlzdHZpZXdzIGluIG5vbi1SRVBPUlQgbW9kZS4gIFdlIG5lZWQKCXRvIGRvIHRoaXMgc2luY2UgV2luZG93cyBzdXBwb3J0cyBvd25lciBkcmF3ICpvbmx5KiBpbiByZXBvcnQgbW9kZSwKCWFuZCBoZW5jZSBhcHBzIGFyZSBub3QgcHJlcGFyZWQgdG8gaGFuZGxlIGRyYXdpbmcgaW4gb3RoZXIgbW9kZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglVc2UgR2V0SXRlbU1ldHJpY3MgaW5zdGVhZCBvZiBHZXRJdGVtTWVhc3VyZXMgd2hlbiBkcmF3aW5nLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFrZSB1c2Ugb2YgdGhlIG5ldyBHZXRJdGVtTWV0cmljcyBpbiBIaXRUZXN0LCB0byBhdm9pZCBjb2RlCglkdXBsaWNhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVNlcGFyYXRlIGl0ZW0gbWV0cmljcyBjb21wdXRhdGlvbiBmcm9tIHBvc2l0aW9uaW5nCglBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIHN0YXRlIGljb24gbWV0cmljcy4KCgkqIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL2NfdHlwZS5wbSwKCSAgdG9vbHMvd2luYXBpL3Rlc3RzLmRhdCwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gSW1wcm92ZWQgYWxpZ25tZW50IGFuZCBvZmZzZXQgY2FsY3VsYXRpb25zLgoJLSBSZW9yZ2FuaXplZCBhbmQgaW1wcm92ZWQgZW51bS91bmlvbi9zdHJ1Y3QgcGFyc2luZy4KCgkqIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9ycGNfc2VydmVyLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY19zZXJ2ZXIuaCwgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlaW1wbGVtZW50IHNldmVyYWwgUnBjU2VydmVyLiogbWV0aG9kcyBpbiBycGNfc2VydmVyLmMuCglJbXBsZW1lbnQgUnBjU2VydmVySW5xQmluZGluZ3MsIElfUnBjU2VydmVyU3RhcnRMaXN0ZW5pbmcsCglJX1JwY1NlcnZlclN0b3BMaXN0ZW5pbmcsIGFuZCBJX1JwY1dpbmRvd1Byb2MuCgoJKiBkbGxzL21zaW1nMzIvTWFrZWZpbGUuaW46IEdyZWcgVHVybmVyIDxnbXR1cm5lcjAwN0BhbWVyaXRlY2gubmV0PgoJQWRkZWQgbWlzc2luZyBrZXJuZWwzMiBpbXBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglMVlNfT1dORVJEUkFXRklYRUQgc2hvdWxkIG9ubHkgdGFrZSBlZmZlY3QgaW4gUkVQT1JUIG1vZGUuCgoyMDAyLTEwLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L2Nwc2YuYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIE5kckRsbENhblVubG9hZE5vdywgTmRyRGxsR2V0Q2xhc3NPYmplY3QsIE5kckRsbFJlZ2lzdGVyUHJveHksCglOZHJEbGxVbnJlZ2lzdGVyUHJveHksIENTdGRQU0ZhY3RvcnkgbWV0aG9kcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGVfcHJpdmF0ZS5oLAoJICBkbGxzL2F2aWZpbDMyL2ZhY3RvcnkuYywgaW5jbHVkZS92ZncuaDoKCU1pY2hhZWwgR/xubmV3aWcgPE1pY2hhZWxHdWVubmV3aWdAZ214LmRlPgoJLSBNb3ZlIHRoZSBBUEkgaW50byBhIG5ldyBhcGkuYyBmaWxlLgoJLSBBZGRlZCBJQ2xhc3NGYWN0b3J5IGltcGxlbWVudGF0aW9uLgoJLSBBZGRlZCBJUGVyc2lzdEZpbGUgaW1wbGVtZW50YXRpb24gdG8gdGhlIEFWSS1maWxlIGhhbmRsZXIuCgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOgoJTmVyaWp1cyBCYWxpdW5hcyA8bmVyaWp1c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglCZXR0ZXIgTGl0aHVhbmlhbiBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IEF2b2lkIGNhbGxpbmcgRmluZEV4ZWN1dGFibGUxNi4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS90aW1lLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUtlZXAgb24gbW92aW5nIDE2IGJpdCBjb2RlIG91dCBvZiB3aW5tbS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbml0aWFsaXplIHRoZSBERENBUFMgc3RydWN0dXJlIG9mIHRoZSBERFJBVyBvYmplY3QgYXQgY3JlYXRpb24uCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJTWFpbl9EaXJlY3REcmF3U3VyZmFjZV9RdWVyeUludGVyZmFjZTogZW5hYmxlIGNyZWF0aW9uIG9mIGEKCUlEaXJlY3QzRFRleHR1cmUyIGZyb20gYSBzdXJmYWNlLgoKCSogZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L25kcl9taWRsLmMsCgkgIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBpbmNsdWRlL3JwY3Byb3h5Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIE5kclByb3h5RnJlZUJ1ZmZlciwgTmRyUHJveHlHZXRCdWZmZXIsIE5kclByb3h5SW5pdGlhbGl6ZSwKCU5kclByb3h5U2VuZFJlY2VpdmUsIE5kclN0dWJHZXRCdWZmZXIsIE5kclN0dWJJbml0aWFsaXplLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGRyYXdpbmcgYnVnIGludHJvZHVjZWQgd2l0aCB0aGUgY3VzdG9tIG5vdGlmaWNhdGlvbgoJcmVvcmdhbml6YXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTaW1wbGlmeSB0aGUgcmVwb3J0IG1vZGUsIGFuZCBpdGVtIGRyYXdpbmcgY29uc2lkZXJhYmx5LgoJRml4IGZ1bGwgcm93IHNlbGVjdCBpbiByZXBvcnQgbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUhhbmRsZSBjdXN0b20gZHJhdyBub3RpZmljYXRpb25zIHByb3Blcmx5LgoJVmFyaW91cyBjbGVhbnVwcywgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBzdXBlcmZsdW91cyBhYnN0cmFjdGlvbnMgd2hpY2ggbWFrZSB0aGUgY29kZSBoYXJkZXIgdG8KCXVuZGVyc3RhbmQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNb3ZlIHRoZSBjdXN0b20gZHJhdyBub3RpZmljYXRpb25zIGludG8gdGhlIERyYXcuKkl0ZW0gZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSB0aGUgY3VzdG9tIGRyYXcgaXRlbSBub3RpZmljYXRpb25zIGRvd24gaW50byBEcmF3TGFyZ2VJdGVtLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHNpbGx5IHJlZHJhdyBidWcgaW50cm9kdWNlZCBpbiBwcmV2aW91cyBwYXRjaC4KCVRpZHkgdXAsIGFuZCBzaW1wbGlmeSBsYXJnZSBpdGVtIGRyYXdpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbXBsZW1lbnQgV01fU0VUUkVEUkFXIHByb3Blcmx5LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmV3b3JrIHRoZSBtb3VzZSBjbGljayBub3RpZmljYXRpb25zCglBc3NvcnRlZCBjbGVhbnVwcywgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVzZSAoc2VtaSlzdGFuZGFyZCBIaXRUZXN0LCByYXRoZXIgdGhlbiBvdXIgb3duIGxpdHRsZSBpbnZlbnRpb24uCglHZXQgcmlkIG9mIEdldEl0ZW1BdFB0LgoJRml4IEhpdFRlc3QgYnV0IGluIFJFUE9SVCBtb2RlLgoKCSogZGxscy9tc2FjbS9NYWtlZmlsZS5pbjogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBvdXQgMTYgYml0IGNvZGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbm1tLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgbm8gbG9uZ2VyIG5lZWRlZCBsaXN0IG9mIGluc3RhbmNlIGRhdGEuCgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkY29tbW9uLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2EuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzb21lIFRSQUNFcyB0byB0aGUgZGRyYXcgY29kZS4KCgkqIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9jc3R1Yi5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50IHRoZSBDU3RkU3R1YkJ1ZmZlciBtZXRob2RzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBpbmNsdWRlL2N1cnNvcmljb24uaCwgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2luZGVmLmgsIG1zZG9zL2ludGVycnVwdHMuYywgd2luZG93cy9jbGFzcy5jLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9tZGkuYywKCSAgd2luZG93cy9tc2dib3guYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy94MTFkcnYvZGVza3RvcC5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgY29udHJvbHMvc3RhdGljLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIGNoYW5nZSB0aGUgaW50ZXJuYWwgZnVuY3Rpb25zIGluIHdpbmRvd3MvY3Vyc29yaWNvbi5jIHRvIHVzZSAzMmJpdAoJICBoYW5kbGVzCgktIG1vdmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIEV4dHJhY3RBc3NvY2lhdGVkSWNvbjE2IHRvCgkgIEV4dHJhY3RBc3NvY2lhdGVkSWNvbkEKCS0gY29udmVydCBISUNPTiB0byBhIHZvaWQqCgktIGZpeGVkIHNvbWUgaGFuZGxlIGNvbnZlcnNpb25zIHRoYXQgaGFwcGVuZWQgdG8gYmUgaW4gdGhlIHdheSB3aGlsZQoJICBkb2luZyB0aGUgYWJvdmUKCgkqIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9jcHJveHkuYywgZGxscy9ycGNydDQvY3BzZi5oLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSVVua25vd25fW1FBUl1fUHJveHkgaW1wbGVtZW50YXRpb25zLCBWVGJsIGNvbnN0cnVjdGlvbiwgdGhlIGRyZWFkZWQKCU9iamVjdFN0dWJsZXNzLCBhbmQgb3RoZXIgcHJveHktcmVsYXRlZCBnb29kaWVzLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIGNvbnRyb2xzL2NvbWJvLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCVN0ZXZlIEx1c3RiYWRlciA8c3RldmUubHVzdGJhZGVyQHBoaWxpcHMuY29tPgoJUHJvdmlkZSBhIHN0dWIgZm9yIEdldENvbWJvQm94SW5mby4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTW9yZSBzdHVicy4KCgkqIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9uZHJfbWlzYy5oLAoJICBkbGxzL3JwY3J0NC9uZHJfc3R1Ymxlc3MuYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsCgkgIGluY2x1ZGUvcnBjbmRyLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVN0dWJieSBOZHJDbGllbnRDYWxsMiAmIHNvbWUgaGVhZGVyIGNoYW5nZXMuCgoJKiBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLAoJICBpbmNsdWRlL3NldHVwYXBpLmg6CglTdGV2ZSBMdXN0YmFkZXIgPHN0ZXZlLmx1c3RiYWRlckBwaGlsaXBzLmNvbT4KCVByb3ZpZGUgc3R1YiBmb3IgU2V0dXBEaUdldENsYXNzRGV2c1cuCglGaXggcmV0dXJuIHZhbHVlIG9mIFNldHVwRGlHZXRDbGFzc0RldnNBLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBQYXVsIFJ1cGUgPHBydXBlQG15cmVhbGJveC5jb20+CglTY3JvbGwgdGhlIGxpc3R2aWV3IHdoZW4gZG9pbmcgbXVsdGlwbGUgc2VsZWN0aW9ucy4KCgkqIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9ycGNfZGVmcy5oLAoJICBkbGxzL3JwY3J0NC9ycGNfbWVzc2FnZS5jLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgSV9ScGNGcmVlQnVmZmVyLCBJX1JwY0dldEJ1ZmZlciwgSV9ScGNSZWNlaXZlLCBJX1JwY1NlbmQsCglJX1JwY1NlbmRSZWNlaXZlOyBhZG1pbmlzdHJpdmlhLgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmM6CglGaXhlZCBzaWduIGV4dGVuc2lvbiBidWcgaW4gRUhfcHJvbG9nLCBhbmQgbWFkZSB0cnlsZXZlbCBhbiBpbnQgdG8KCWF2b2lkIHNpbWlsYXIgcHJvYmxlbXMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglNYWtlIHN1cmUgYWxsIFp3IGZ1bmN0aW9ucyB3aG9zZSBOdCBlcXVpdmFsZW50IGlzIGltcGxlbWVudGVkIGFyZQoJaW1wbGVtZW50ZWQgdG9vLgoKCSogY29uZmlndXJlLmFjLCBkbGxzL3dpbm1tL3dpbmVuYXMvTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgTkFTIGhlYWRlcnMgYW5kIGxpYnJhcmllcyBhcmUgc29tZXRpbWVzIHN0b3JlZCBpbiB0aGUgWAoJZGlyZWN0b3JpZXMuCgoJKiBjb250cm9scy9zY3JvbGwuYzogQW5kcmV3IE0uIEpvaG5zdG9uIDxqb2huc3RvbmFtQGxvZ2ljYS5jb20+CglNYWtlIGluZm8gc3RydWN0dXJlIG1lbWJlcnMgbG93ZXIgY2FzZSBhcyBlbHNld2hlcmUuCgoJKiBjb25maWd1cmU6IFVwZGF0ZWQgd2l0aCBhdXRvY29uZiAyLjU0LgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3BsYXlzb3VuZC5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbm1tLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0ZWQgcHV0dGluZyBhbGwgMTYgYml0IGNvZGUgaW4gc2VwYXJhdGUgZmlsZXMuCgoJKiBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZTMyLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglQcmV2ZW50IHNvbWUgc2VnZmF1bHRzIGluIG1zcmxlMzIuCglBZGQgdGhlIG5lY2Vzc2FyeSBsaW5lIHRvIHRoZSBzYW1wbGUgc3lzdGVtLmluaSBmb3IgdXNpbmcgdGhpcyB2aWRlbwoJY29kZWMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglOYXJyb3cgZG93biB0aGUgaXRlbXMgd2UgaXRlcmF0ZSBvdmVyIGluIExJU1QsIGFuZCBSRVBPUlQgbW9kZS4KCUZpeCBhIENsaWVudCAtLT4gTGlzdCBjb29yZGluYXRlIHRyYW5zZm9ybWF0aW9ucyBpbiBGaW5kSXRlbS4KCUZpeCBidWcgaW4gSGl0SXRlbSAoaW4gTElTVCBhbmQgUkVQT1JUIG1vZGUpLgoJQXZvaWQgdGhlIGxhc3QgYml0IG9mIGRyYXdpbmcgaW4gUkVQT1JUIG1vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEcmF3IF9vbmx5XyB0aGUgaXRlbXMgdGhhdCBhcmUgaW52YWxpZGF0ZWQuCglGaXggc2VyaW91cyBidWcgd2hlbiBkZWxldGluZyBmcm9tIGEgcmFuZ2UuCglQYXNzIGluIGEgcmFuZ2UgdG8gdGhlIHJhbmdlc197YWRkLGRlbH0gZnVuY3Rpb25zLgoJVGlkeSB1cCB0aGUgUmVmcmVzaEljb24gZnVuY3Rpb24uCglBc3NvcnRlZCBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlaW1wbGVtZW50IEZpbmRJdGVtIChjbGVhbmVyLCBmYXN0ZXIsIG1vcmUgY29tcGxpYW50IHdpdGggTVNETikuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXdyaXRlIEhpdFRlc3QgdG8gbWFrZSBpdCBwcmV0dHksIGFuZCB2ZXJ5IGZhc3QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbnRyb2R1Y2UgdGhlIG5vdGlvbiBvZiBpdGVtIGl0ZXJhdG9ycywgYW5kIHVzZSB0aGVtIHRvIGNsZWFuIHVwIGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTZXBhcmF0ZSByYW5nZSBtYW5pcHVsYXRpb24gZnVuY3Rpb25zIGZyb20gc2VsZWN0aW9uIHJhbmdlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBsYXJnZSBpdGVtIGxhYmVsIGNhbGN1bGF0aW9uIHdoZW4gbm90IGZvY3VzZWQuCglGYW5jeSBmb2N1cyByZWN0YW5nbGUgaGFuZGxpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggZm9jdXMgaGFuZGxpbmcgd2hlbiBkZWxldGluZyBpdGVtcywgb3IgY2hhbmdpbmcgbW9kZXMuCglCZXR0ZXIgbGFiZWwgcmVjdCBjYWxjdWxhdGlvbiBpbiBJQ09OIG1vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggbGFyZ2UgaXRlbSBoYW5kbGluZyBmb2N1cyBpbiBJQ09OIG1vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglObyBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGhlYXZ5IGR1dHkgcmVjdCBjb21wdXRhdGlvbiB3aGVuIGluIE9XTkVSRFJBVy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZhY3RvciBvdXQgb3duZXIgZHJhdyBjb2RlLCBzbyB0aGF0IGl0IHdvcmtzIGZvciBhbGwgbW9kZXMuCglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGYWN0b3Igb3V0IHRoZSBjb21wdXRhdGlvbiBvZiBpdGVtIHBvc2l0aW9uLCBzbyBpdCBjYW4gYmUgdXNlZAoJaW5kZXBlbmRlbnRseSBvZiB0aGUgcmVjdGFuZ2xlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVuaWZ5IExJU1RWSUVXX1VwZGF0ZUxhcmdlSXRlbUxhYmVsUmVjdCwgYW5kIEdldEl0ZW1NZWFzdXJlcy4KCU9wdGltaXplIEdldEl0ZW1NZWFzdXJlcyB0byB0aGUgbWF4LgoJQ2VudHJhbGl6ZSB0aGUgRHJhd1RleHQncyBEVF8qIGZsYWdzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJR2V0IHJpZCBvZiAnZ290bydzIGluIEdldEl0ZW1NZWFzdXJlcy4KCU1vdmUgTElTVFZJRVdfVXBkYXRlTGFyZ2VJdGVtTGFiZWxSZWN0IGNsb3NlIHRvIHdoZXJlIGl0J3MgdXNlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBicmFpbm8gaW4gY2FsY3VsYXRpb24gb2YgTFZTX0xJU1Qgb3JpZ2luLgoJSW52YWxpZGF0ZSB0aGUgZW50aXJlIHdpbmRvdyB3aGVuIHdlIGFyZSBpbnZhbGlkYXRpbmcgdGhlIGxpc3QuCgoyMDAyLTEwLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9tZGkuYzogQW5kcmV3IE0uIEpvaG5zdG9uIDxqb2huc3RvbmFtQGxvZ2ljYS5jb20+CglSZW1vdmVkIHJlZmVyZW5jZSB0byBTQ1JPTExfU2V0TkNTYlN0YXRlLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJVHJ5IENyZWF0ZVByb2Nlc3MgZXZlbiBpZiBTSEdldEZpbGVJbmZvIGZhaWxzIHNvIHRoYXQgd2UgY2FuIGxhdW5jaAoJVW5peCBiaW5hcmllcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgbXVsdGktc291bmQgY2FyZCByZWxhdGVkIGJ1Z3MuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3F1ZXVlLmg6CglBdm9pZCBpbmZpbml0ZSBTZW5kTWVzc2FnZSByZWN1cnNpb24sIGp1c3QgbGlrZSBXaW5kb3dzIGRvZXMuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEb24ndCBsaXN0IHJlZ2lzdGVyIGZ1bmN0aW9ucyBpbiB0aGUgLmRlZiBmaWxlLgoKCSogZGxscy9udGRsbC9zdHJpbmcuYzoKCUZpeGVkIGJ1ZmZlciBzaXplIGluIF91bHRvYSAoc3BvdHRlZCBieSBKb2VyZyBNYXllcikuCgoJKiBtZW1vcnkvZW52aXJvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBmaWxlcy9kaXJlY3RvcnkuYzoKCVRyYW5zbWl0IHRoZSBXaW5kb3dzIFBBVEggdG8gY2hpbGQgcHJvY2Vzc2VzIHVzaW5nIHRoZSBXSU5FUEFUSAoJdmFyaWFibGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogRml4ZWQgZmlsZSBkZXNjcmlwdG9yIGNvcnJ1cHRpb24uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9hdG9tLmMsIGRsbHMva2VybmVsL3Rlc3RzL3RocmVhZC5jOgoJSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglTcGVsbGluZyBjb3JyZWN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9nZW5lcmljLnBwZDogSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEEzIHBhcGVyIHNpemUuCgoJKiBkbGxzL3VzZXIvd25kMTYuYzogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeCBoYW5kbGUgY29udmVyc2lvbnMuCgoJKiBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHRlc3QgdG8gbm90IGZhaWwgYmVoaW5kIGZpcmV3YWxscyBvciB3aXRob3V0IGFuIGludGVybmV0Cgljb25uZWN0aW9uLgoKCSogdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvY190eXBlLnBtLAoJICB0b29scy93aW5hcGkvdGVzdHMuZGF0LCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVvcmdhbml6ZWQgdGhlIGNvZGUgZm9yIGJldHRlciBzdXBwb3J0IG9mIGRhdGEgc3RydWN0dXJlcyBwYXJzaW5nLgoKMjAwMi0xMC0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZTogUmVsZWFzZSAyMDAyMTAwNy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0xMC0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeGVkIGJ1ZyB0aGF0IGNhdXNlZCBpdGVtIHRleHRzIHRvIGJlIGVtcHR5LgoKCSogY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zcmxlMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3JsZTMyL01ha2VmaWxlLmluLCBkbGxzL21zcmxlMzIvbXNybGUzMi5jLAoJICBkbGxzL21zcmxlMzIvbXNybGUzMi5zcGVjLCBkbGxzL21zdmlkZW8vbXNybGUzMi8uY3ZzaWdub3JlLAoJICBkbGxzL21zdmlkZW8vbXNybGUzMi9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGUzMi5jLAoJICBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZTMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX0RlLnJjLAoJICBkbGxzL21zdmlkZW8vbXNybGUzMi9tc3JsZV9Fbi5yYywgZGxscy9tc3ZpZGVvL21zcmxlMzIvbXNybGVfRnIucmMsCgkgIGRsbHMvbXN2aWRlby9tc3JsZTMyL21zcmxlX3ByaXZhdGUuaCwgZGxscy9tc3ZpZGVvL21zcmxlMzIvcnNyYy5yYywKCSAgY29uZmlndXJlOgoJTWljaGFlbCBH/G5uZXdpZyA8TWljaGFlbEd1ZW5uZXdpZ0BnbXguZGU+CglJbXBsZW1lbnRlZCB0aGUgTVMgUkxFIHZpZGVvIGNvZGVjLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1lbW9yeS9pbnN0ci5jLCBtc2Rvcy9kb3NtZW0uYywKCSAgbXNkb3MvaW50ZXJydXB0cy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIHN1cHBvcnQgZm9yIGludGVycnVwdHMgaW4gMzItYml0IGNvZGUuCglSZW1vdmUgc29tZSB1bm5lY2Vzc2FyeSBjb2RlIGZyb20gMTYtYml0IGludGVycnVwdCBlbXVsYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggbmFzdHkgYnVnIGdlbmVyYXRlZCBieSBVSU5UIHZzLiBJTlQgKHJlc3VsdGVkIGluIGJvZ3VzCgljb21wYXJpc29ucykuCglGaXggTFZJUl9TRUxFQ1RCT1VORFMgY29tcHV0YXRpb24sIGZvciBSRVBPUlQgbW9kZS4KCUZpeCBkZXBlbmRlbmN5IGdlbmVyYXRpb24gaW4gR2V0SXRlbU1lYXN1cmVzLgoJRml4IHJlY3RhbmdsZSBjb21wdXRhdGlvbiBmb3IgUkVQT1JUIG1vZGUgKGNvcm5lciBjYXNlIHByb2JsZW1zKS4KCUJldHRlciBkZWJ1ZyBtZXNzYWdlcy4KCUFzc29ydGVkIGNsZWFudXBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ2xlYW5lZCB1cCB0aGUgcmVjdGFuZ2xlIGhhbmRsaW5nLCBhbmQgZml4ZWQgbnVtZXJvdXMgYnVncyBpbgoJcmVjdGFuZ2xlIGNhbGN1bGF0aW9ucy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwKCSAgZGxscy9ycGNydDQvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9ycGNydDQvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnBjcnQ0L3Rlc3RzL3JwYy5jOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglBZGRlZCBza2VsZXRvbiBmb3IgcnBjcnQ0IHVuaXQgdGVzdCB3aXRoIHNvbWUgVVVJRCB0ZXN0cy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglJbXBsZW1lbnRlZCBVdWlkQ29tcGFyZS4KCgkqIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5jLAoJICBkbGxzL3JwY3J0NC9ycGNfYmluZGluZy5oLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgUnBjQmluZGluZ0lucU9iamVjdCwgUnBjQmluZGluZ1NldE9iamVjdCwKCVJwY0JpbmRpbmdWZWN0b3JGcmVlLCBScGNCaW5kaW5nVG9TdHJpbmdCaW5kaW5nQS9XLAoJUnBjQmluZGluZ0Zyb21TdHJpbmdCaW5kaW5nQS9XLCBScGNTdHJpbmdCaW5kaW5nUGFyc2VBL1csCglJX1JwY0JpbmRpbmdTZXRBc3luYywgUnBjU3RyaW5nQmluZGluZ0NvbXBvc2VBL1csIFJwY0JpbmRpbmdGcmVlLAoJUlBDU3RyaW5nRnJlZVcsIFVVSURIYXNoLCBVdWlkVG9TdHJpbmdXLCBhbmQgYXNzb2NpYXRlZCBqdW5rLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwgc2NoZWR1bGVyL3RpbWVyLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglTdGV2ZSBMdXN0YmFkZXIgPHN0ZXZlLmx1c3RiYWRlckBwaGlsaXBzLmNvbT4KCVByb3ZpZGUgc3R1YnMgZm9yIENyZWF0ZS9EZWxldGVUaW1lclF1ZXVlVGltZXIuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFBhdWwgUnVwZSA8cHJ1cGVAbXlyZWFsYm94LmNvbT4KCUZpeCBpbmFjY3VyYXRlIGxpc3R2aWV3IHNjcm9sbGluZyB3aXRoIFBnVXAvRG93biBhbmQgSG9tZS9FbmQga2V5cy4KCgkqIGRsbHMvYXZpY2FwMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzIuc3BlYywKCSAgZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBjYXBDcmVhdGVDYXB0dXJlV2luZG93QS9XIHRvIGdldCBmcmVlVkNSIHN0YXJ0ZWQKCXdpdGhvdXQgY3Jhc2guCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggc2lsbHkgYnVnIGluIFNldEl0ZW1Qb3NpdGlvbiAod2Ugc2hvdWxkIHNldCBpdCwgbm90IGNyZWF0ZSBhIG5ldwoJb25lKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1haW50YWluIHRoZSBpdGVtIHBvc2l0aW9uIGluIHssU01BTEx9SUNPTiBtb2RlIHNlcGFyYXRhbHkgZnJvbSB0aGUKCWl0ZW0sIHNvIHRoYXQgd2UgaGF2ZSBpdCBldmVuIGluIExWU19PV05FUkRBVEEuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbnVwIHRoZSBTZXRJdGVtUG9zaXRpb24gaW50ZXJmYWNlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVtb3ZlIHRoZSBDT1VOVF9PRiBtYWNyby4KCUluZGVudGF0aW9uIGZpeGVzLCBhbmQgbWlub3IgY2xlYW51cHMgdG8gbm90aWZ5X2Rpc3BpbmZvVC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeGVzIGJ1ZyB3aGljaCByZW5kZXJlZCB2aXJ0dWFsIGxpc3Rib3hlcyBhbHdheXMgZW1wdHkuCglTbWFydGVyIGZvY3VzIHJlY3RhbmdsZSBkcmF3aW5nLgoJRml4IGZvY3VzIGhhbmRsaW5nIHdoZW4gd2UgYWRkL2RlbGV0ZSBhIGNvbHVtbi4KCUZpeCBzaWxseSBidWcgaW4gR2V0U3ViSXRlbVJlY3QuCglFbGltaWFudGUgZmxpY2tlciBpbiBSZXBvcnQgbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNsZWFudXAsIGFuZCBjbGFyaWZ5IHRoZSBoYW5kbGluZyBvZiB0aGUgdmFyaW91cyByZWN0YW5nbGVzLgoJRml4IGhhbmRsaW5nIG9mIGxhcmdlIGl0ZW1zIGluIElDT04gbW9kZS4KCUZpeCBjYWxjdWxhdGlvbiBvZiBMVklSX1NFTEVDVEJPVU5EUy4KCVZhcmlvdXMgY2xlYW51cHMsIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDbGVhbnVwIG9mIHRoZSB3YXkgd2UgbWFpbnRhaW4vbG9va3VwIHRoZSBpdGVtIGNvdW50LgoJUmVuYW1lIEdldEl0ZW1XaWR0aCB0byBDYWxjdWxhdGVNYXhXaWR0aC4KCU1pc2MgdHJpdmlhbCBjaGFuZ2VzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGZvY3VzIGhhbmRsaW5nIGZvciBvd25lciBkcmF3IGxpc3R2aWV3cy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeCBwb3RlbnRpYWwgYnVnIGluIFJlbW92ZUFsbEl0ZW1zLgoJRml4IHJlcG9ydC1tb2RlIE9OV0VSRFJBVyBidWcgKHdpdGggaGVscCBmcm9tIEFsZXhhbmRyZSBKdWxsaWFyZCkuCglGaXggbXVsdGlwbGUgc2VsZWN0aW9uIGJ1ZyAoaW4gcmVwb3J0IGFuZCBsaXN0IG1vZGUpLgoJUmVtb3ZlIGNvZGUgZHVwbGljYXRpb24gZm9yIHJlbW92aW5nIHNlbGVjdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbm5scy5oLCBtZW1vcnkvY29kZXBhZ2UuYzoKCVN0ZXZlIEx1c3RiYWRlciA8c3RldmUubHVzdGJhZGVyQHBoaWxpcHMuY29tPgoJSW1wbGVtZW50IEdldFVzZXJEZWZhdWx0VUlMYW5ndWFnZSBhbmQgR2V0U3lzdGVtRGVmYXVsdFVJTGFuZ3VhZ2UuCgoJKiBkbGxzL2QzZDgvZDNkOF9wcml2YXRlLmgsIGRsbHMvZDNkOC9kZXZpY2UuYywgZGxscy9kM2Q4L2RpcmVjdHguYywKCSAgZGxscy9kM2Q4L3N1cmZhY2UuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglWYXJpb3VzIGZpeGVzLCB0eXBvcyBjb3JyZWN0ZWQgYW5kIGNsYXJpZnlpbmcgdHJhY2UgcG9pbnRzLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3Igc2V2ZXJhbCBzb3VuZGNhcmQuCglSZW1vdmUgbm9uIGZ1bGwgZHVwbGV4IG1vZGUgaW4gY29kZS4KCU9TUyBDb21tZXJjaWFsIGRvZXNuJ3QgcHJvcGVybHkgaGFuZGxlIFNORENUTF9EU1BfUkVTRVQsIHNvIGNsb3NlL29wZW4KCWRldmljZSB0byB3b3JrYXJvdW5kIHRoaXMgaXNzdWUgKGJ5IE92ZSBLYWF2ZW4pLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglHb3QgcmlkIG9mIHJlY3Vyc2lvbiBpbiBzdWIgZGV2aWNlIG9wZW5pbmcuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTGV0IHdhdmUoT3V0fEluKU9wZW4gY2FsbCB0aGUgd2F2ZSBtYXBwZXIgd2hlbiB0aGUgbG93IGxldmVsIGRldmljZQoJZG9lc24ndCBoYW5kbGUgdGhlIHdhdmUgZGVzY3JpcHRvci4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzZWd2IHdoZW4gaW5jb3JyZWN0IGNvbW1hbmQgbGluZSBhcmd1bWVudHMgd2hlcmUgZ2l2ZW4uCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaToKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgSU1BIEFDTSBkZWZpbml0aW9uLgoKCSogZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1pbm9yIGNvbW1lbnRzIGNsZWFudXBzLgoJUmVtb3ZlZCB1bm5lZWRlZCBGSVhNRXMuCgoJKiBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIE5VTEwgcG9pbnRlciBoYW5kbGluZyBlcnJvcnMuCgoyMDAyLTEwLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJUmVpbXBsZW1lbnQgR2V0U3ViSXRlbVJlY3QsIHN1Yml0ZW0gc2V0dGluZyBvcHRpbWl6YXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IGJ1ZyBpbiBPV05FUkRBVEEgc2VsZWN0aW9uIGhhbmRsaW5nLgoJRml4IGNyaXRpY2FsIHBlcmZvcm1hbmNlIGJ1ZyBpbiBHZXRTZWxlY3RlZENvdW50LgoJRml4IGNyaXRpY2FsIHBlcmZvcm1hbmNlIGJ1ZyBpbiBTZXRHcm91cFNlbGVjdGlvbi4KCUZpeCBwcm9ibGVtcyBmb3IgT1dORVJEUkFXIHJlcG9ydC4KCUZpeCBoaWRkZW4vbGF0ZW50IGJ1Z3MgaW4gc3RhdGUgaGFuZGxpbmcuCglCZXR0ZXIgZGVidWcgbWVzc2FnZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggb253ZXItZHJhdyBSRVBPUlQgZm9yIGJyb2tlbiBhcHBzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU3RyZWFtbGluZSB0aGUgR2V0SXRlbSB1c2FnZS4KCUZpeCBmYXRhbCBidWcgZm9yIElDT04gbW9kZSBpbiBMVlNfT05XRVJEQVRBLgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLCBtYXJraW5nIHBsYWNlcyB3aGljaCBuZWVkIHdvcmsuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggY29uZGl0aW9uIHNvIHdlIGFjdHVhbGx5IHN0b3JlIHRoZSBzdGF0ZSBpbiB2aXJ0dWFsIGxpc3R2aWV3cy4KCUFzc29ydGVkIGNvZGUgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEVmZmVjdGl2ZSBvcHRpbWl6YXRpb24gaW4gR2V0TmV4dEl0ZW0gKHNwZWVkcyB1cCBYbmV3cykuCgktIE1pc2MgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZXdyaXRlIHRoZSBiZWdpbi9lbmQgbGFiZWwgZWRpdCBwcm9jZWR1cmVzLgoJQmV0dGVyIHN1cHBvcnQgb2YgT1dORVJEUkFXLgoJQ2xlYW5lciwgc2ltcGxlciBjb2RlLgoKMjAwMi0xMC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUZpeGVkIGxhcmdlIGl0ZW0gZm9jdXMgaGFuZGxpbmcgZm9yIHZpcnR1YWwgbGlzdHZpZXdzLiAgU2luY2UgYXQgbW9zdAoJX29uZV8gaXRlbSBjYW4gaGF2ZSB0aGUgZm9jdXMgYXQgYW55IHRpbWUsIHdlIGNhbiBtYWludGFpbiBvbmUgc3VjaAoJcmVjdGFuZ2xlIHBlciBsaXN0LCByYXRoZXIgdGhhbiBwZXIgaXRlbS4gVGhpcyBpcyBib3RoIG1vcmUgZWZmaWNpZW50LAoJYW5kIHdvcmtzIGZvciBMVlNfT1dORVJEQVRBIGxpc3R2aWV3cyBhcyB3ZWxsLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IGJsaW5kbHkgdHJ1c3QgR2V0SXRlbSB0byBzdWNjZWVkIC0tIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUsIGFuZAoJZmFpbCBncmFjZWZ1bGx5LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRG8gbm90IHNlbmQgdW5pbml0aWFsaXplZCBkYXRhIGluIG5vdGlmaWNhdGlvbiB0byBhcHBsaWNhdGlvbi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2F0b20uYywgbWVtb3J5L2F0b20uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglGaXhlZCBhdG9tIHRlc3QgdG8gd29yayBvbiBXaW5kb3dzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL3Rlc3RzL2NvZGVwYWdlLmMsIG1lbW9yeS9jb2RlcGFnZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUFkZGVkIGEgcHJvdG90eXBlIGNvZGUgcGFnZSB0ZXN0LiBGaXhlZCBpc3N1ZSByZWdhcmRpbmcgbmVnYXRpdmUKCXNvdXJjZSBsZW5ndGggaGFuZGxpbmcuCgoJKiBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywgZGxscy91c2VyL3Rlc3RzL3dpbi5jOgoJRml4ZWQgcHJpbnRmIGZvcm1hdHMgZm9yIC1EU1RSSUNUIGhhbmRsZXMuCgoJKiBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGRsbHMvdXNlci91c2VyMTYuYywKCSAgZGxscy93aW5zcG9vbC9pbmZvLmMsIGluY2x1ZGUvdGxoZWxwMzIuaCwgbG9hZGVyL3BlX2ltYWdlLmMsCgkgIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jOgoJRml4ZWQgc29tZSBoYW5kbGUgY29udmVyc2lvbnMgaW4gcHJldmlzaW9uIG9mIHZvaWQqIGhhbmRsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEZpeCBuYXN0eSBidWcgaW4gUkVQT1JUIG1vZGUsIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGxhYmVsIHJlY3QuCgktIExvdHMgb2YgY2xlYW51cHMsIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJSW1wbGVtZW50ZWQgVXVpZEZyb21TdHJpbmdbQVddIGJhc2VkIG9uIENMU0lERnJvbVN0cmluZwoJaW1wbGVtZW50YXRpb24uCgoyMDAyLTEwLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJQWJvcnQgd2l0aCBlcnJvciBpZiB0aGUgYXBwIHVzZXMgb3VyIGFwaSB0byBzdWJjbGFzcyBhbmQgdGhlbiB0aGVpcnMKCXRoZW4gb3VycyBhZ2Fpbi4KCgkqIG9sZS9vbGUybmxzLmM6IFN0ZXZlIEx1c3RiYWRlciA8c3RldmUubHVzdGJhZGVyQHBoaWxpcHMuY29tPgoJSW1wbGVtZW50ZWQgR2V0RGF0ZUZvcm1hdFcuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgVXVpZENyZWF0ZU5pbCwgVXVpZEVxdWFsIGFuZCBVdWlkSXNOaWwuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci90aHJlYWQuYywKCSAgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW4uYywKCSAgZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLAoJICBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3RocmVhZC5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsCgkgIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NvbnNvbGUuYzoKCUFkZGVkIHByb2Nlc3NfaWRfdCBhbmQgdGhyZWFkX2l0X3QgdHlwZXMgdG8gdGhlIHNlcnZlciBpbnRlcmZhY2UKCWluc3RlYWQgb2YgdXNpbmcgdm9pZCosIGFuZCByZW1vdmVkIGEgbnVtYmVyIG9mIHR5cGUgY2FzdHMuCgoJKiBkbGxzL2dkaS9nZGkxNi5jLCBvYmplY3RzL2JydXNoLmM6CglNb3ZlZCBDcmVhdGVCcnVzaEluZGlyZWN0MTYgYW5kIENyZWF0ZURJQlBhdHRlcm5CcnVzaDE2IHRvIGdkaTE2LmMuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMva2VybmVsL3JlZ2lzdHJ5MTYuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5yZWcuaCwgd2luMzIvZGV2aWNlLmM6CglSZW1vdmVkIExQeHh4IGhhbmRsZSB0eXBlcyB0aGF0IGRvbid0IGV4aXN0IHVuZGVyIFdpbmRvd3MuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6IFJlbW92ZWQgZXJyb3IgbWVzc2FnZSB0aGF0IGNvbmZ1c2VzIHVzZXJzLgoKCSogZGxscy91c2VyL3Rlc3RzL3dpbi5jLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluOgoJQnVpbGQgdGVzdHMgd2l0aCAtRFNUUklDVC4KCjIwMDItMTAtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIFJlb3JnYW5pemUgRHJhd0l0ZW0uCgktIFVuaWZ5IHRleHQgYXR0cmlidXRlIHNlbGVjdGlvbiBiZXR3ZWVuIERyYXd7U3ViLH1JdGVtLgoJLSBVc3VhbCBjbGVhbnVwcywgYW5kIHNpbXBsaWZpY2F0aW9ucy4KCgkqIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL2xpc3QuaCwKCSAgc2VydmVyL21haW4uYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5oLAoJICBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90aW1lci5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgb2JqZWN0IG5hbWVzcGFjZXMsIGFuZCBhIGJ1bmNoIGZ1bmN0aW9ucwoJZm9yIG1hbmFnaW5nIGxpbmtlZCBsaXN0cy4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzoKCUZpeGVkIEdESSBoZWFwIHNlbGVjdG9yIGhhbmRsaW5nIGJyb2tlbiBieSBwcmV2aW91cyBjaGFuZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglVc2UgdGhlIG5ldyBTdWJjbGFzc2luZyBBUEkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGYW5jeS9vcHRpbWl6ZWQgRW5zdXJlVmlzaWJsZSBtZXRob2QgdGhhdCBlbGltaW5hdGVzIGZsaWNrZXIuCglNaW5vciBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgaW5jbHVkZS9jb21tY3RybC5oLAoJICBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYzoKCUd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglJbXBsZW1lbnRlZCB7R3xTfWV0V2luZG93U3ViQ2xhc3MsIERlZlN1YmNsYXNzUHJvYywKCVJlbW92ZVdpbmRvd1N1YmNsYXNzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBGaXggdGhlIHN1Yml0ZW0gZHJhd2luZyBjb2RlLgoJLSBBIGxvdCBmYXN0ZXIgZHJhd2luZyBpbiByZXBvcnQgbW9kZS4KCS0gQSBncmVhdCBkZWFsIG9mIGNsZWFudXAsIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9nZGkvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL3Rlc3RzL2dlbmVyYXRlZC5jLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYywgZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXNlci90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3Rlc3RzL2dlbmVyYXRlZC5jLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5hYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc29tZSBtb3JlIGF1dG9nZW5lcmF0ZWQgdGVzdHMuCgoJKiB0b29scy93aW5hcGkvY190eXBlLnBtLCB0b29scy93aW5hcGkvdGVzdHMuZGF0LAoJICB0b29scy93aW5hcGkvd2luYXBpX3Rlc3Q6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgaW1wcm92ZW1lbnRzLgoJLSBBZGRlZCB0ZXN0cyBmb3IgR0RJIGFuZCBVU0VSLgoKCSogaW5jbHVkZS93aW5udC5oOiBHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJQWRkZWQgYSBjb3VwbGUgb2YgZGVmaW5lcy4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYywgaW5jbHVkZS93aW51c2VyLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IFZhbGlkYXRle1JlY3QsUmdufSBwcm90b3R5cGVzLgoKCSogdG9vbHMvd2luZWR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVkdW1wL25lLmMsIHRvb2xzL3dpbmVkdW1wL3BlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmg6CglQcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBkdW1waW5nIE5FIGJpbmFyaWVzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBGaXggdGhlIHN0YXRlIGljb24gaGFuZGxpbmcuCgktIEZpeCBoYW5kbGluZyBvZiBuZXcgaW1hZ2UgbGlzdHMuCgktIFNtYWxsIGNsZWFudXBzLgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmM6CglleGNlcHRfaGFuZGxlcjM6IFNldCBjb3JyZWN0ICVlYnAgd2hlbiBjYWxsaW5nIGV4Y2VwdGlvbiBmaWx0ZXIuCgoJKiBkbGxzL3gxMWRydi94cmVuZGVyLmM6IEVuYWJsZSBhbnRpLWFsaWFzaW5nIGZvciBhbGwgZm9udCBzaXplcy4KCgkqIG9iamVjdHMvZGMuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglDcmVhdGVEQzogaGFuZGxlIChuaWwsIDxzdHJpbmc+LCAuLi4pIGdyYWNlZnVsbHkgaWYgbm8gZHJpdmVyIGZvdW5kLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBSZXdvcmsgdGhlIHtJbnNlcnQsRGVsZXRlfUNvbHVtbiBmdW5jdGlvbnMuCgktIERyYXdpbmcgb3B0aW1pemF0aW9ucyB3aGVuIGFkZGluZy9yZW1vdmluZyBjb2x1bW5zLgoJLSBNb3JlIGNsZWFudXBzLCBhbmQgc2ltcGxpZmljYXRpb25zLgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3Mvc3lzY29sb3IuYzoKCU1ha2Ugc3VyZSB0aGluZ3Mgc3RpbGwgd29yayBpZiAxNi1iaXQgZGxscyBjYW5ub3QgYmUgbG9hZGVkLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUFkZGVkIC0tZGlzYWJsZS13aW4xNiBjb25maWd1cmUgb3B0aW9uLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLAoJICBwcm9ncmFtcy9wcm9nbWFuL2dycGZpbGUuYzoKCUZpeGVkIHdhcm5pbmdzLgoKCSogdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9jXzIwOTMyLmMsIHVuaWNvZGUvY3BtYXAucGwsCgkgIHVuaWNvZGUvY3B0YWJsZS5jOgoJQWRkZWQgRVVDLUpQIGVuY29kaW5nIGFzIGNvZGVwYWdlIDIwOTMyICh3aXRoIHRoZSBoZWxwIG9mIEFyaWMKCVN0ZXdhcnQpLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBncmFwaGljcy94MTFkcnYvb3BlbmdsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlIHVwZGF0ZS4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogaW5jbHVkZS93aW5udC5oOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHNvbWUgbW9yZSB1c2VmdWwgbWFjcm9zLgoKMjAwMi0xMC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2x1MzIvTWFrZWZpbGUuaW4sIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgZGxscy9kM2Q4L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluOgoJTW92ZWQgWCBmbGFncyBhbmQgbGlicmFyaWVzIG91dCBvZiBNYWtlLnJ1bGVzIGludG8gdGhlIG1ha2VmaWxlcyB0aGF0CgluZWVkIHRoZW0uCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL2Rpc3BsYXkucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvbW91c2UucmM6CglVc2UgY29ycmVjdCAxNi1iaXQgcmVzb3VyY2VzIHRvIGF2b2lkIHdhcm5pbmdzLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVwZGF0ZSBkb2N1bWVudGF0aW9uIG9mIGhvdyB0byBpbnZva2Ugd2luZWRiZy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9nZW5lcmF0ZWQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgbmV3IGF1dG9nZW5lcmF0ZWQgdGVzdCBmb3IgZGF0YSBzdHJ1Y3R1cmUgcGFja2luZy4KCgkqIHRvb2xzL3dpbmFwaS9NYWtlZmlsZS5pbiwgdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGkvY190eXBlLnBtLCB0b29scy93aW5hcGkvdGVzdHMuZGF0LAoJICB0b29scy93aW5hcGkvdGVzdHMucG0sIHRvb2xzL3dpbmFwaS93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfY2xlYW51cCwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX3Rlc3QsIHRvb2xzL3dpbmFwaS93aW5hcGlfdGVzdF9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCBhIG5ldyB0b29sIHdpbmFwaV90ZXN0IGZvciBnZW5lcmF0aW5nIHRlc3RzLgoJLSBBZGRlZCBhIGRhdGEgc3RydWN0dXJlIHBhY2tpbmcgdGVzdCB0byB3aW5hcGlfdGVzdC4KCS0gUmVvcmdhbml6ZWQgYW5kIG9wdGltaXplZCBhIGZldyB0aGluZ3MuCgoJKiBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5udC5oLCBtaXNjL29wdGlvbnMuYywKCSAgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGEgR05VIEMgaW1wbGVtZW50YXRpb24gb2Ygc29tZSBvZiB0aGUgREVDTFNQRUNfIG1hY3JvcyBhbmQgdXNlZAoJdGhlbSB3aGVyZXZlciBwb3NzaWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gRml4IExJU1QgbW9kZSwgYnJva2VuIGJ5IHByZXZpb3VzIGNoYW5nZXMuCgktIEltcGxlbWVudCBHZXRJdGVtUmVjdCBpbiB0ZXJtcyBvZiBHZXRJdGVtTWVhc3VyZW1lbnRzLgoJLSBJbXByb3ZlbWVudHMgaW4gZGVidWcgdHJhY2VzLgoJLSBNYW55IGJ1ZyBmaXhlcywgY29tcGVsZXRlIGltcGxlbWVudGF0aW9uIGZvciBHZXRJdGVtTWVhc3VyZW1lbnRzLgoJLSBMb3RzIG9mIGNvZGUgY2xlYW51cHMsIHNpbXBsaWZpY2F0aW9ucy4KCS0gRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKMjAwMi0wOS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzogSmVmZiBTbWl0aCA8d2h5ZG91YnRAaG90bWFpbC5jb20+CglQYXRoSXNFeGU6IGNvcnJlY3RlZCBhbmQgYWRkZWQgZXhlY3V0YWJsZSB0eXBlcy4KCgkqIHdpbmRvd3Mvc3B5LmM6IEd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFRoZSBUVE1fIG1lc3NhZ2UgbmVlZGVkIHRvIGJlIGluIGNvcnJlY3Qgb3JkZXIuCgktIEFkZGVkIFRUTV9HRVRCVUJCTEVTSVpFLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBQYXVsIFJ1cGUgPHBydXBlQG15cmVhbGJveC5jb20+CglQcmV2ZW50IGNyYXNoIHdoZW4gbGlzdHZpZXcgdHJhY2UgbG9nZ2luZyBpcyBvbi4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW1wbGVtZW50IFN3YXBUZXh0dXJlSGFuZGxlcyBtZXRob2QuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDogR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCURlZmluZSBTTkRNU0cuCgoyMDAyLTA5LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCUF0dGVtcHQgYXQgaGFuZGxpbmcgJ2snIGFuZCAnQicgc3ltYm9scy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRWxpbWluYXRlIGV4dHJhIGJhY2tncm91bmQgZmlsbHMuCgktIEVsaW1pbmF0ZSBib2d1cyBlcnJvciBtZXNzYWdlcy4KCgkqIHdpbjMyL2V4Y2VwdC5jOiBGaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIHRoZSBkZWJ1Z2dlciBzdGFydHVwLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglEb24ndCBidWlsZCBkM2Q4IGlmIHdlIGRvbid0IGhhdmUgT3BlbkdMIHN1cHBvcnQuCgoJKiBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOiBBZGRlZCBjaGVjayBmb3IgT3BlbkdMLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglBZGRlZCB7R3xTfWV0V2luZG93TG9uZ1B0ci4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY3VzdGNudGwuaDoKCUd59nJneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGN1c3RvbSBjb250cm9sIGhlYWRlci4KCgkqIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVVzZSBjb3JyZWN0IGNoZWNrIHRvIHNlZSBpZiB4c2VydmVyIHN1cHBvcnRzIHh2aWRtb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBDYWNoZSBHV0xfU1RZTEUsIHRvIGF2b2lkIGZldGNoaW5nIGluIHZpcnR1YWxseSBldmVyeSBmdW5jdGlvbi4KCS0gU2VwYXJhdGUgR2V0T3JpZ2luIGZyb20gR2V0QWxsTWVhc3VyZXMgYXMgaXQgaXMgaXRlbSBpbmRlcGVuZGVudCwKCSAgYW5kIHJlbmFtZSBmdW5jdGlvbiB0byByZWZsZWN0IHRoZSBjaGFuZ2UuCgktIFNtYWxsIGNsZWFudXBzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXggZm9yIHNvdW5kY2FyZHMgdGhhdCBjYW4ndCBkbyA4LWJpdCBhdWRpbywgb25seSAxNi1iaXQgKGFsc28KCWNoZWNrZWQgZm9yIHNvdW5kY2FyZHMgdGhhdCBjYW4ndCBkbyBzdGVyZW8gd2hpbGUgSSB3YXMgYXQgaXQpLgoKCSogZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglleGVjdXRlOiBBY3RpdmF0ZSB0aGUgdmlld3BvcnQgcGFzc2VkIGFzIHBhcmFtZXRlciB3aGVuIGV4ZWN1dGluZwoJYnVmZmVyLgoKCSogZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJbXBsZW1lbnQgSURpcmVjdDNEVmlld3BvcnQyX0RlbGV0ZUxpZ2h0LgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaDogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJRnVuY3Rpb25zIHNzY2FuZiBhbmQgc3dzY2FuZiBub3cgZXhwZWN0IHN0cmluZ3MgdG8gYmUgdGVybWluYXRlZCB3aXRoCgludWxsICgwKSBpbnN0ZWFkIG9mIEVPRiAoLTEpLgoKCSogdG9vbHMvd2luZW1ha2VyOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQGxvb2suY2E+CglNaW5vciB0eXBvIGZpeC4KCjIwMDItMDktMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgaXRlbSBmcm9tIHRoZSBsaXN0LCBpZiB3ZSBmYWlsIHRvIGluaXRpYWxpemUgaXQgYXQgaW5zZXJ0Cgl0aW1lLgoKCSogZGxscy9kM2Q4L01ha2VmaWxlLmluLCBkbGxzL2QzZDgvYmFzZXRleHR1cmUuYywKCSAgZGxscy9kM2Q4L2N1YmV0ZXh0dXJlLmMsIGRsbHMvZDNkOC9kM2Q4LnNwZWMsIGRsbHMvZDNkOC9kM2Q4X21haW4uYywKCSAgZGxscy9kM2Q4L2QzZDhfcHJpdmF0ZS5oLCBkbGxzL2QzZDgvZGV2aWNlLmMsIGRsbHMvZDNkOC9kaXJlY3R4LmMsCgkgIGRsbHMvZDNkOC9pbmRleGJ1ZmZlci5jLCBkbGxzL2QzZDgvcmVzb3VyY2UuYywgZGxscy9kM2Q4L3N1cmZhY2UuYywKCSAgZGxscy9kM2Q4L3N3YXBjaGFpbi5jLCBkbGxzL2QzZDgvdGV4dHVyZS5jLCBkbGxzL2QzZDgvdmVydGV4YnVmZmVyLmMsCgkgIGRsbHMvZDNkOC92b2x1bWUuYywgZGxscy9kM2Q4L3ZvbHVtZXRleHR1cmUuYywgZGxscy9NYWtlZmlsZS5pbjoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglJbml0aWFsIEQzRDggaW1wbGVtZW50YXRpb24uCgoJKiBpbmNsdWRlL2QzZDh0eXBlcy5oOiBGaXhlZCBuYW1lbGVzcyB1bmlvbi9zdHJ1Y3QgZGVjbGFyYXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sOgoJQmlsbCBNZWRsYW5kIDxiaWxsbWVkbGFuZEBsb29rLmNhPgoJRXhwYW5kZWQgdGhlICJMaW51eCBMaWJyYXJpZXMgYXMgRGxscyIgd2luZWxpYiBzZWN0aW9uIGFuZCBicm91Z2h0IGl0Cgl1cCB0byBkYXRlLgoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlZCB0aGUgd3JhcHBlciBjb2RlIHRvIG1hdGNoIHRoZSBuZXcgbmFtaW5nIGV4ZWN1dGFibGUgYW5kCglsaWJyYXJ5IGNvbnZlbnRpb25zLgoJRXhlY3V0YWJsZXMgZG9uJ3QgbmVlZCBzcGVjIGZpbGVzLgoJUmVtb3ZlZCB1bnVzZWQgY29kZS4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywKCSAgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglBZGRlZCBzdHVicyBmb3IgSHR0cEVuZFJlcXVlc3RBL1csIEludGVybmV0UmVhZEZpbGVFeEEvVywKCVNldFVybENhY2hlRW50cnlHcm91cCwgQ3JlYXRlVXJsQ2FjaGVHcm91cCwgRGVsZXRlVXJsQ2FjaGVHcm91cC4KCgkqIGRsbHMvdXNlci91c2VyMTYuYywgd2luZG93cy9jdXJzb3JpY29uLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJTW92ZWQgc29tZSAxNi1iaXQgZnVuY3Rpb25zIGZyb20gd2luZG93cy9jdXJzb3JpY29uLmMgdG8KCWRsbHMvdXNlci91c2VyMTYuYy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBHefZyZ3kgJ05vZycgSmVuZXkgPG5vZ0BzZGYubG9uZXN0YXIub3JnPgoJQ2hlY2sgZm9yIGFuIGVtcHR5IHN0cmluZyBpbiBET1NGU19GaW5kTmV4dEV4IHRvIGF2b2lkIGFuIHVubmVjZXNzYXJ5CglmYWlsdXJlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBGaXggY3Jhc2hlcyBpbiBkZWJ1ZyBtb2RlLgoJLSBGaXggc29tZSBmb2N1cyByZWN0YW5nbGUgcHJvYmxlbXMuCgktIEJldHRlciBkZWJ1Z2dpbmcgb3V0cHV0LgoJLSBNb3JlIGNsZWFudXBzLgoKCSogZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglSZW1vdmUgd3JvbmcgYW5kIHVzZWxlc3MgdHJhbnNmb3JtYXRpb24gb2YgeiBwcm9qZWN0ZWQgY29vcmRpbmF0ZXMuCglBZGQgbm9ybWFscyB3b3JsZCB0cmFuc2Zvcm1hdGlvbi4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUZpeCBkZXZpY2VzIGNyZWF0aW9uIGJyb2tlbiBjb2RlLiBOb3csIHRoZSBkaXNwbGF5IGFuZCB0aGUgZHJhd2FibGUKCWFyZSByZXRyaWV2ZSB0aHJvdWdoIEdESSBlc2NhcGUgc2VxdWVuY2VzIGFuZCBzdG9yZWQgaW4gdGhlIHByaXZhdGUKCWRhdGEuIEFkZCBkZXNhbGxvY2F0aW9uIG9mIHRoZSBkZXZpY2UgcHJpdmF0ZSBkYXRhLgoKCSogZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9semV4cGFuZC9semV4cGFuZDE2LmMsCgkgIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jOgoJR3n2cmd5ICdOb2cnIEplbmV5IDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCVNwbGl0IHRoZSAxNi1iaXQgZnVuY2l0b25zIGludG8gYSBzZXBlcmF0ZSBmaWxlLgoKMjAwMi0wOS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmM6CglGaXhlZCBYMTEgZXJyb3IgY29kZSBtaXNtYXRjaCBhbmQgcmVtb3ZlZCBkZWJ1Z2dpbmcgb3V0cHV0LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBHcmVnIFR1cm5lciA8Z210dXJuZXIwMDdAYW1lcml0ZWNoLm5ldD4KCS0gZml4ZWQgdXAgc29tZSBzZW1hbnRpYyBtaXN1bmRlcnN0YW5kaW5ncyB1c2luZyB0aGUgaGVscGZ1bCBhZHZpY2Ugb2YKCSAgUmVpbiBLbGF6ZXMKCS0gYWRkZWQgU09fU05EVElNRU8gc3VwcG9ydAoJLSBhZGRlZCBpZmRlZidzIGZvciBjb25zaXN0ZW5jeSB3aXRoIHJlc3Qgb2Ygc29ja2V0LmMKCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUJyaW5nIHRoZSBuYW1pbmcgb2YgbGlicmFyaWVzIGFuZCBleGVjdXRhYmxlIHVwIHRvIGN1cnJlbnQgc3RhbmRhcmRzLgoJSW5zdGFsbCBkbGxzIGFuZCBleGVjdXRhYmxlcyBpbiBkbGxkaXIuCglJdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIGltcG9ydCBudGRsbC5kbGwuCgoJKiBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmM6IENocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUFkZGVkIGRlc2FsbG9jYXRpb24gb2YgdGhlIHZpZXdwb3J0IHByaXZhdGUgZGF0YS4KCgkqIGRsbHMvZGRyYXcvZDNkbGlnaHQuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgYWxsb2NhdGlvbi9kZXNhbGxvY2F0aW9uIG9mIHRoZSBsaWdodCBwcml2YXRlIGRhdGEuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJRW5hYmxlIGNyZWF0aW9uIG9mIG91ciBPcGVuR0wgRGlyZWN0M0QgZGV2aWNlIGZyb20gYSBzdXJmYWNlIHVzZWQgYXMKCXJlbmRlcmluZyB0YXJnZXQuCglFbmFibGUgY3JlYXRpb24gb2YgYSB0ZXh0dXJlIGZyb20gYSBzdXJmYWNlLgoKMjAwMi0wOS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdHNfeGxpYi5oLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsCgkgIHRvb2xzL3dpbmV3cmFwcGVyLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLAoJICBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtldGVzdC5ydWxlcy5pbiwKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L1gxMV9jYWxscywKCSAgZGxscy94MTFkcnYvdHNfeGxpYi5jLCBkbGxzL3gxMWRydi90c194bGliLmgsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJTW92ZWQgdHNfeGxpYi5jIGludG8geDExZHJ2IGFuZCByZW1vdmVkIGxpYndpbmVfdHN4MTEuCgoJKiB3aW5kb3dzL3dpbi5jOgoJQWRkZWQgbWlzc2luZyBXSU5fUmVsZWFzZVB0ciAoc3BvdHRlZCBieSBEbWl0cnkgVGltb3Noa292KS4KCgkqIGNvbnRyb2xzL0VESVQuVE9ETywgY29udHJvbHMvZWRpdC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gU3RvcCBwYXNzaW5nIGh3bmQgYXJvdW5kIHdoZW4gd2UncmUgcGFzc2luZyBFRElUU1RBVEUuCgktIE1lcmdlIHRoZSBub24tb2Jzb2xldGUgYml0cyBvZiBFRElULlRPRE8gaW50byBlZGl0LmMuCgktIFNvbWUgY2xlYW51cHMsIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFBhdWwgUnVwZSA8cHJ1cGVAbXlyZWFsYm94LmNvbT4KCS0gSW5pdGlhbGl6ZSBtZW1vcnkgdG8gcHJldmVudCBjcmFzaGVzIHdoZW4gLWRlYnVnbXNnICtsaXN0dmlldyBpcyBvbi4KCS0gRml4IHZhcmlvdXMgYXJyYXkgYm91bmRzIHJlbGF0ZWQgZXJyb3JzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IFBhdWwgUnVwZSA8cHJ1cGVAbXlyZWFsYm94LmNvbT4KCVJlc2l6ZSBkeW5hbWljIHBvaW50ZXIgYXJyYXkgbW9yZSBjYXJlZnVsbHkgd2hlbiBhZGRpbmcgbmV3IGVudHJpZXMuCgoJKiBkbGxzL2RkcmF3L21lc2EuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgUE9JTlQsIFdJUkVGUkFNRSBhbmQgU09MSUQgZmlsbCBtb2Rlcy4KCgkqIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jOiBDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglJRGlyZWN0M0RUZXh0dXJlMkltcGxfTG9hZDogd2hlbiB0aGUgc3VyZmFjZSBpcyBub3QgYWxsb2NhdGVkIGFuZCBubwoJbG9jYXRpb24gYXJlIHNwZWNpZmllZCwgc2V0IGl0IHRvIHZpZGVvIG1lbW9yeS4KCgkqIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5oLCBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmMsCgkgIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy94MTFkcnYvb3BlbmdsLmMsCgkgIGluY2x1ZGUvd2luZV9nbC5oLCBpbmNsdWRlL3gxMWRydi5oLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLAoJICBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwKCSAgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmM6CglJbXBvcnQgd2luZV90c3gxMV9sb2NrL3VubG9jayBkaXJlY3RseSBmcm9tIHgxMWRydiBpbiBvcGVuZ2wzMiBhbmQKCWRkcmF3LCBzbyB0aGF0IHRoZXkgZG9uJ3QgbmVlZCB0byBsaW5rIHdpdGggbGlid2luZV90c3gxMS4KCVJlbW92ZWQgaGVhZGVyIHdpbmVfZ2wuaC4KCgkqIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy93aW4uYywgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL3dpbi5jOgoJRml4ZWQgYSBudW1iZXIgb2YgYnVncyBpbiB0aGUgaGFuZGxpbmcgb2Ygd2luZG93IHBhcmVudCBhbmQgb3duZXIgYW5kCglhZGRlZCBhIHJlZ3Jlc3Npb24gdGVzdCAoYmFzZWQgb24gdGhlIHdvcmsgb2YgQmlsbCBNZWRsYW5kKS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglCeSBkZWZhdWx0LCB3ZSBzaG91bGQgdXNlIG91ciBvd24gZGxscy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogR3JlZyBUdXJuZXIgPGdtdHVybmVyMDA3QGFtZXJpdGVjaC5uZXQ+CglBY2NlcHQgdGltZV90IGFyZ3VtZW50IGluIFdTX3NldHNvY2tvcHQvV1NfU09fUkNWVElNRU87IHRyYW5zbGF0ZSB0bwoJc3RydWN0IHRpbWV2YWwgZm9yIGVkaWZpY2F0aW9uIG9mIHNldHNvY2tvcHQuCgoyMDAyLTA5LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgZGxscy94MTFkcnYvZGdhMi5jLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jLAoJICBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvdHNfeGY4NmRnYTIuaCwKCSAgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHNfeHV0aWwuaDoKCVJlbW92ZWQgc29tZSBtb3JlIFRTWDExIGZ1bmN0aW9ucyBhbmQgZmlsZXMuCgoJKiBsb2FkZXIvbmUvY29udmVydC5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS9lbnZpcm9uLmMsCgkgIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLAoJICBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RyaXZlci5jLAoJICB3aW5kb3dzL2hvb2suYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywKCSAgd2luZG93cy93aW5wcm9jLmMsIGRsbHMvZ2RpL2dkaTE2LmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9uZXRhcGkzMi9hY2Nlc3MuYywgZGxscy9uZXRhcGkzMi9icm93c3IuYywKCSAgZGxscy9uZXRhcGkzMi93a3N0YS5jLCBkbGxzL3VzZXIvbXNnMTYuYywgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwgdG9vbHMvd2luYXBpL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIERvbid0IGFkZCBzdGFuZGFyZCBoZWFkZXJzIGZvciB0aGUgZGxsIHNlcGFyYXRpb24gaGFja3MuCgktIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIExvY2FsaXplIG9yaWdpbiwgbG9jYXRpb24sIGFuZCByZWN0YW5nbGUgY29tcHV0YXRpb24uCgktIFN1cHBvcnQgc3RhdGUgaWNvbnMgaW4gTFZTX0lDT04gc3R5bGUuCgktIERyYXcgb25seSBpdGVtcyB0aGF0IGFyZSBpbiB0aGUgY2xpcCBib3guCgktIERyYXcgbm9uLXNlbGVjdGVkIGl0ZW1zIGZpcnN0IHRoZW4gdGhlIHNlbGVjdGVkIG9uZXMgYmVjYXVzZSBsYXJnZQoJICBpY29ucyBtYXkgb3ZlcmxhcCBlYWNoIG90aGVyLgoJLSBDb3JyZWN0IGludmFsaWRhdGlvbiByZWN0YW5nbGVzIGZvciBpdGVtcy4KCS0gQ29ycmVjdCBkcmF3aW5nIG9mIGxhcmdlIGljb25zLgoJLSBFbGltaW5hdGUgZGl2aWRlIGJ5IHplcm8gY2FzZXMgaW4gc2Nyb2xsaW5nLgoJLSBJbnZhbGlkYXRlIHNlbGVjdGVkIGl0ZW1zIHByaW9yIHRvIHNldHRpbmcgd2luZG93IGxvc2luZyBmb2N1cy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGluY2x1ZGUvd2luLmgsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJU21hbGwgY2xlYW51cHMsIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBGaXhlZCAjZW5kaWYuCgoJKiB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi9rZXlib2FyZC5jLAoJICBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL3RzX3NoYXBlLmgsIGluY2x1ZGUvdHNfeGY4NmRnYS5oLAoJICBpbmNsdWRlL3RzX3hmODZkZ2EyLmgsIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIGluY2x1ZGUvdHNfeGxpYi5oLAoJICBpbmNsdWRlL3RzX3hyZXNvdXJjZS5oLCBpbmNsdWRlL3RzX3hzaG0uaCwgaW5jbHVkZS90c194dXRpbC5oLAoJICBpbmNsdWRlL3RzX3h2aWRlby5oOgoJUmVtb3ZlZCBhIGJ1bmNoIG9mIG5vIGxvbmdlciB1c2VkIFRTWCB3cmFwcGVycy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9jb21jYXQvY29tY2F0X21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgaW5jbHVkZS93aW5kZWYuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglDb252ZXJ0IEhLRVkgdG8gYSB2b2lkKi4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgc3VwcG9ydCBmb3IgJXN0cnVjdDE2ICh1c2VkIGJ5IENMU0lEKS4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgbWlzYy9yZWdpc3RyeS5jOgoJUmF1bCBEaWFzIDxyYXVsQGRpYXMuY29tLmJyPgoJQWRkZWQgbmV3ICJHbG9iYWxSZWdpc3RyeURpciIgb3B0aW9uLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6IFBhdHJpY2sgSi4gTWNOZXJ0aG5leSA8cGF0QG1jbmVydGhuZXkuY29tPgoJUmVtb3ZlZCB0aGUgI3VuZGVmIG9mIFdTX0RFRklORV9TRUxFQ1Qgc28gdGhhdCBzZWxlY3QgaXMgaW4gZmFjdAoJZGVmaW5lZC4KCUZpeGVkIGlmIHN0YXRlbWVudCBpbiBfX1dTX0ZEX1NFVDIgd2hpY2ggdXNlZCBhID0gd2hlcmUgYSA9PSBpcwoJbmVlZGVkLCBpbiBhZGRpdGl0aW9uIHRoZSBpZiBkaWQgbm90IGhhdmUgaXRzIG91dGVyIHNldCBvZgoJcGFyZW50aGVzaXMuCglSZW1vdmVkIHBhcmVudGhlc2VzIGFyb3VuZCB0eXBlIHRvIGJlIGNhc3QgaW4gX19XU19GRF9TRVQgbWFjcm8uCglSZW1vdmVkIFdTIG1hY3JvIHVzYWdlIGZyb20gd2l0aGluIG90aGVyIG1hY3JvcyBiZWNhdXNlIHRoZSBXUyBtYWNybwoJaXMgdW5kZWZpbmVkIHdoZW4gdGhlc2UgbWFjcm9zIGFyZSBleHBhbmRlZC4KCUFkZGVkIFdJTkFQSSBhdHRyaWJ1dGVlIHRvIHNlbGVjdCBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS9tc3ZjcnQvY3J0ZGJnLmg6IFBhdHJpY2sgSi4gTWNOZXJ0aG5leSA8cGF0QG1jbmVydGhuZXkuY29tPgoJQWRkZWQgY2FzdHMgdG8gYWxsIG1hY3JvcyB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KCjIwMDItMDktMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglSZW1vdmUgc29tZSBtb3JlIHN1cGVyZmx1b3VzIFplcm9NZW1vcnkgY2FsbHMsIHNtYWxsIGNsZWFudXBzLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3dpbi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gUmVtb3ZlIGV4cG9ydCBvZiBEUkFHX1F1ZXJ5VXBkYXRlIGZyb20gVVNFUi4KCS0gR2V0IHJpZCBvZiBhc3NvY2lhdGVkIDE2IGJpdCBjb2RlIGZyb20geDExZHJ2LgoJLSBTaW1wbGlmaWNhdGlvbnMsIGNsZWFudXBzLCBldGMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEZpeCBvdXRwdXR0aW5nIG9mIGEgdGV4dCBwb2ludGVyIGluIGRlYnVnIG1vZGUgKGJ5IFJlaW4gS2xhemVzKS4KCS0gUmVtb3ZlIGEgbGFyZ2UgYnVuY2ggb2Ygc3VwZXJmbHVvdXMgWmVyb01lbW9yeSBjYWxscy4KCS0gRml4IGEgY291cGxlIG9mIGJ1Z3MuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2Vudmlyb24uYywgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywKCSAgZGxscy9yaWNoZWRpdC9ydGYuaCwgZGxscy9yaWNoZWRpdC9zdGRjaGFybmFtZXMuaCwKCSAgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luc29jazIuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ2xlYW5lZCB1cCB0aGUgY29kZSBzbyBpdCB3b3VsZCBiZSBlYXNpZXIgdG8gcGFyc2Ugd2l0aCB0aGUgbmV3IEMKCXBhcnNlci4KCgkqIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL2NfdHlwZS5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3Rfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNYWRlIHRoZSBuZXcgQyBwYXJzZXIgaGFuZGxlIHRoZSBjdXJyZW50IFdpbmUgc291cmNlLgoJLSBBZGRlZCBhIGNvbXBhYmlsbGl0eSBsYXllciBiZXR3ZWVuIHRoZSBvbGQgYW5kIHRoZSBuZXcgQyBwYXJzZXIuCgktIEFkZGVkIHBhcnNpbmcgb2YgZGF0YSBzdHJ1Y3R1cmVzLgoKCSogZGxscy9uZXRhcGkzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL25ldGFwaTMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL25ldGFwaTMyL3Rlc3RzL2FjY2Vzcy5jLCBkbGxzL25ldGFwaTMyL3Rlc3RzL3drc3RhLmMsCgkgIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbG0uaCwgaW5jbHVkZS9sbWFjY2Vzcy5oLAoJICBpbmNsdWRlL2xtYnJvd3NyLmgsIGluY2x1ZGUvbG1jb25zLmgsIGluY2x1ZGUvbG1lcnIuaCwKCSAgZGxscy9uZXRhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9uZXRhcGkzMi9hY2Nlc3MuYywKCSAgZGxscy9uZXRhcGkzMi9hcGlidWYuYywgZGxscy9uZXRhcGkzMi9icm93c3IuYywKCSAgZGxscy9uZXRhcGkzMi9uZXRhcGkzMi5zcGVjLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyX21pc2MuaCwKCSAgZGxscy9uZXRhcGkzMi93a3N0YS5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBOZXRRdWVyeURpc3BsYXlJbmZvcm1hdGlvbiwgTmV0VXNlckdldEluZm8sIGNyZWF0ZWQKCWNvbmZvcm1hbmNlIHRlc3RzLCBvdGhlciBuZXRhcGkzMiBidWcgZml4ZXMgYW5kIGltcHJvdmVtZW50cy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUluc3RhbGwgbm90ZXBhZC5leGUgaW4gYzpcd2luZG93cyB0b28uCgoyMDAyLTA5LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9uZXdmbnMuYywgY29udHJvbHMvZWRpdC5jLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvdmlydHVhbC5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCUNvcnJlY3QgU0laRV9UIHNpemUgYWNjb3JkaW5nIHRvIE1TIFNESy4KCUNoYW5nZSBzb21lIHR5cGVzIHRvIFNJWkVfVCBhY2NvcmRpbmcgdG8gTVMgU0RLIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS9kM2Q4dHlwZXMuaDogSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZGVkIHNvbWUgZGVmaW5pdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCB3aW5lZGJnIGRvY3VtZW50YXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUNoYW5nZSBjb25mdXNpbmcgdGl0bGUuCgoyMDAyLTA5LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9zaGx3YXBpLmgsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvdGhyZWFkLmMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglSZW9yZ2FuaXNlL21pbm9yIHRpZHl1cCBvZiBvcmRpbmFsIGZ1bmN0aW9ucy4KCUltcGxlbWVudCBTdHJDbXBMb2dpY2FsVyxTdHJGb3JtYXRCeXRlU2l6ZUEvVyxTdHJGb3JtYXRCeXRlU2l6ZTY0QSwKCVNIQ3JlYXRlU3RyZWFtV3JhcHBlci4KCUZpeCBzb21lIG91dHB1dCAuc3BlYyBwYXJhbWV0ZXJzIGZyb20gc3RyIHRvIHB0ci4KCUZpeCBkZWZpbml0aW9uIG9mIFN0ckZvcm1hdEJ5dGVTaXplIGZ1bmN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi10b29sa2l0LnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU21hbGwgdXBkYXRlcyB0byBiZXR0ZXIgbWF0Y2ggdGhlIGZvcm1hdCBvZiBjdXJyZW50IE1ha2VmaWxlcy4KCVJlbW92ZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBubyBsb25nZXIgc3VwcG9ydGVkIHNwZWMgZmlsZSBvcHRpb25zLgoJQWRkIG5vdGVzIHRvIHBvaW50IG91dCB0aGUgc2VjdGlvbnMgdGhhdCBhcmUgcGFydGljdWxhcmx5IG91dCBvZgoJZGF0ZS4KCgkqIGRvY3VtZW50YXRpb24vcHNkcnYucmVnLCB3aW5lZGVmYXVsdC5yZWc6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSB0aGUgY29udGVudHMgb2YgZG9jdW1lbnRhdGlvbi9wc2Rydi5yZWcgdG8gd2luZWRlZmF1bHQucmVnLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3gxMWRydi9zY3JvbGwuYywgd2luZG93cy9zY3JvbGwuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglIYXZlIFVTRVIgZGVhbCB3aXRoIHRoZSBjYXJldCB3aGVuIHNjcm9sbGluZyBhIHdpbmRvdy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS50ZXhpbmZvOiBBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIGluZm9ybWF0aW9uIGFib3V0IFBPU0lYLCBVbml4LCBYMTEgdHJhZGVtYXJrcy4KCgkqIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJVXBkYXRlIG91dHB1dCBmb3IgY3VycmVudCBidWlsZCBwcm9jZXNzLgoKCSogdG9vbHMvd2luZWR1bXAvUkVBRE1FOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGUuCgoyMDAyLTA5LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBkbGxzL250ZGxsL2hlYXAuYzoKCUF2b2lkIGNhbGxpbmcgc29tZSBrZXJuZWwgZnVuY3Rpb25zLgoKCSogREVWRUxPUEVSUy1ISU5UUzogVXBkYXRlZCBhIGxvdCBvZiBvYnNvbGV0ZSBzdHVmZi4KCgkqIHByb2dyYW1zL01ha2VmaWxlLmluOiBPbmx5IGluc3RhbGwgdGhlIHVzZWZ1bCBwcm9ncmFtcy4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBpbmNsdWRlL3gxMWRydi5oOgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIHRha2UgZm9jdXMgcHJvdG9jb2wuCgoJKiBkb2N1bWVudGF0aW9uL3Byb2dyYW1zLCBkb2N1bWVudGF0aW9uL3dpbnNvY2s6CglSZW1vdmVkIG9ic29sZXRlIGZpbGVzLgoKCSogbGlicmFyeS8uY3ZzaWdub3JlLCB1bmljb2RlLy5jdnNpZ25vcmU6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglVcGRhdGUgZm9yIG1pbmd3L2N5Z3dpbi4KCgkqIHRvb2xzL3dpbmVtYWtlcjogTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCU1ha2UgYWxsIHRhcmdldCBuYW1lcyBsb3dlciBjYXNlLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVwZGF0ZSBkZWJ1ZyBjaGFubmVsIHVzYWdlIGluIERFVkVMT1BFUi1ISU5UUy4KCVJlbW92ZSByZWZlcmVuY2VzIHRvIG9ic29sZXRlIGRpcnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEJldHRlciBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0VG9waW5kZXgvR2V0T3JpZ2luL1NldEljb25TcGFjaW5nLgoJLSBEcmF3aW5nIG9wdGltaXphdGlvbnMsIGJldHRlciBzY3JvbGxpbmcuCgktIEEgZmV3IG1vcmUgYnVncyBzcXVhc2hlZCB3aXRob3V0IG1lcmN5LgoJLSBNYW55IGNsZWFudXBzLCBzaW1wbGlmaWNhdGlvbnMsIGRvYyB1cGRhdGVzLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuZnI6IFZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVNtYWxsIHVwZGF0ZSB0byBrZWVwIGluIHN5bmMgd2l0aCBSRUFETUUuCgoyMDAyLTA5LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9oZWFwLmMsCgkgIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3ZpcnR1YWwuYywKCSAgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW5udC5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIG1lbW9yeS92aXJ0dWFsLmMsIHNlcnZlci9tYXBwaW5nLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJSW1wbGVtZW50ZWQgdGhlIG50ZGxsIHZpcnR1YWwgbWVtb3J5IGZ1bmN0aW9ucywgYW5kIG1hZGUgdGhlIGtlcm5lbAoJZnVuY3Rpb25zIHVzZSB0aGVtLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjogQWRkZWQgdGVzdGluZy5zZ21sLgoKCSogY29udHJvbHMvbWVudS5jOgoJUmVtb3ZlIGNsZWFyaW5nIG9mIHRoZSB3aW5kb3cgbWVudSBpZCBmb3Igbm93LiBUaGlzIHdpbGwgbmVlZCBtb3JlCgl3b3JrLgoKCSogZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWw6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRXhwbGFpbiB3aHkgY29uZm9ybWFuY2UgdGVzdHMgYXJlIHVzZWZ1bCBmb3IgcG9ydHMgdG9vLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBKb3NlZiBNZWl4bmVyIDxKb3NlZi5NZWl4bmVyQHQtb25saW5lLmRlPgoJSHV3IERhdmllcyA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gSW5pdGlhbGl6aW5nIHRoZSByZXR1cm4tc3RyaW5nIHNob3VsZG4ndCBjaGFuZ2UgdGhlIHBvaW50ZXIuCgktIEFkZGVkICJGSVhNRSIgZm9yIGNhc2Ugbm90IGhhbmRsZWQuCgktIERpcmVjdG9yeSBhbmQgdGhlIGZpbGVuYW1lcyBoYXZlIHRvIGJlIHNlcGFyYXRlZCBieSAiXDAiLgoJLSBBZGRlZCBjaGVjayB0byBoYW5kbGUgcG9zc2libGUgc2lnbmVkL3Vuc2lnbmVkIG92ZXJmbG93LgoKCSogaW5jbHVkZS9tc3ZjcnQvZXJybm8uaCwgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2Vycm5vLmMsCgkgIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC9tYXRoLmMsCgkgIGRsbHMvbXN2Y3J0L21zX2Vycm5vLmgsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgaW5jbHVkZS9NYWtlZmlsZS5pbjoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglNU1ZDUlQgbmVlZHMgYSBwdWJsaWMgZXJybm8uaCBmaWxlLgoKCSogdG9vbHMvd2luZW1ha2VyOiBNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJRml4ICJpbnN0YWxsIiBhbmQgInVuaW5zdGFsbCIgdGFyZ2V0czogLmV4ZSAtPiAuZXhlLnNvOyB0YXJnZXQgZGlyIGlzCgkkKGRsbGRpciksIGxpa2UgZm9yIHRoZSAiYnVpbHRpbiIgd2luZSBiaW5hcmllcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglNYWtlIExzYU9wZW5Qb2xpY3kgcmV0dXJuIHN1Y2Nlc3MuCgoJKiB0b29scy93aW5lZHVtcC9tYWluLmM6IEphbiBLcmF0b2NodmlsIDxzaG9ydEB1Y3cuY3o+CglCdWcgZml4LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Fbi5yYywKCSAgZGxscy9jb21jdGwzMi9ob3RrZXkuYzoKCUd5b3JneSAnTm9nJyBKZW5leSA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CgktIFVuaWNvZGVpZnkgY29udHJvbC4KCS0gdXNlIHZvaWQgaW5zdGVhZCBvZiBWT0lELgoJLSBQYXNzIGluZm9QdHIgYXJvdW5kIGluc3RlYWQgb2YgSFdORC4KCS0gSW1wbGVtZW50IG1vc3Qgb2YgdGhlIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIE9wdGltaXplIHRoZSBoZWNrIG91dCBvZiBSZXBvcnQgZHJhd2luZy4KCS0gQSBiaXQgb2Ygb3JnYW5pemF0aW9uLCBmb3Igc2FuaXR5J3Mgc2FrZS4KCS0gTWFueSBzaW1wbGlmaWNhdGlvbnMsIGNsZWFudXBzLCBldGMuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW46CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTW92ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgJ1Nob3dEaXJTeW1saW5rcycgd2hlcmUgaXQgYmVsb25nczogdG8gdGhlCgl3aW5lLmNvbmYgbWFuIHBhZ2UuCgoJKiBjb250cm9scy9lZGl0LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9udGRsbC9oZWFwLmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9jbGlzdC5jLCBmaWxlcy9zbWIuYywgaW5jbHVkZS9jb21tY3RybC5oLAoJICBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS93aW5udC5oLAoJICBpbmNsdWRlL3dpbnRlcm5sLmgsIHdpbmRvd3Mvd2lucHJvYy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgcmVmZXJlbmNlcyB0byBQQ1ZPSUQgYW5kIExQVUlOVC4KCVJlbW92ZSB0eXBlcyB0aGF0IGRvbid0IGV4aXN0IG9uIFdpbmRvd3MuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJRml4ZWQgaW1wb3J0IGRpcmVjdG9yeSBsaW1pdHMgKHNwb3R0ZWQgYnkgSmFuIEtyYXRvY2h2aWwpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCUxpc3R2aWV3X1Byb2Nlc3NMZXR0ZXJLZXlzOiBmaXhlZCBuZXZlciBlbmRpbmcgbG9vcCB3aGVuIGVuZCBpbmRleCBpcwoJemVyby4KCgkqIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYzoKCUplcnJ5IEplbmtpbnMgPEplcnJ5X0pfSmVua2luc0Bob3RtYWlsLmNvbT4KCU1vZGlmaWVkIHZvbHVtZV9lZmZlY3Q4IGZvciB0YWtpbmcgdW5zaWduZWQgZGF0YSBhcyBzaWduZWQgZGF0YSwgYW5kCgl3b2RQbGF5ZXJfV3JpdGVNYXhGcmFncyBiZWNhdXNlIG9mIHdyb25nIGRhdGEgbGVuZ3RoIHdoaWNoIGxlYWQgdG8KCXN0cmFuZ2Ugbm9pc2UgYW5kIHZvbHVtZSBjb250cm9sIHdvcmtpbmcgaW5jb3JyZWN0bHkuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJSmVycnkgSmVua2lucyA8SmVycnlfSl9KZW5raW5zQGhvdG1haWwuY29tPgoJQWRkZWQgd2F2ZU91dFNldFZvbHVtZSB3aGVuIG9wZW5pbmcgc291bmQgZHJpdmVyLiBPdGhlcndpc2UsIHRoZXJlIGlzCglubyBzb3VuZCBpZiB3ZSB1c2UgYVJ0cy4KCgkqIGZpbGVzL2ZpbGUuYzogTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCS0gUmV0dXJuIGNvcnJlY3QgZXJyb3IgY29kZXMuCgktIEZpeCBiZWhhdmlvdXIgaWYgZmlsZXMgYXJlIG9uIGRpZmZlcmVudCBXaW5lIGRyaXZlcwoJICAtIGRlbGV0ZSBzb3VyY2UgaWYgY29weSBzdWNjZXNzZnVsCgkgIC0gdHJ5IHJlbmFtZSgpIC0gZmlsZXMgbWF5IGJlIG9uIHRoZSBzYW1lIFVuaXggZmlsZSBzeXN0ZW0uCgktIFRyeSBjb3B5L2RlbGV0ZSBpZiByZW5hbWUoKSBmYWlsczogZmlsZXMgbWF5IGJlIG9uIHRoZSBzYW1lIERPUwoJICBkcml2ZSwgYnV0IG9uIGRpZmZlcmVudCBVbml4IGZpbGUgc3lzdGVtcy4KCgkqIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi90ZXN0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3dpbmUtZG9jLnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVN0YXJ0IG9mIHRoZSBjb25mb3JtYW5jZSB0ZXN0aW5nIGRvY3VtZW50YXRpb24uIFN0aWxsIHZlcnkKCWluY29tcGxldGUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItdG9vbGtpdC5zZ21sOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVwZGF0ZSB0aGUgc2VjdGlvbiBjb25jZXJuaW5nIHdpbmVtYWtlcidzIG9wdGlvbnMuCglBZGQgYSBjb3VwbGUgb2Ygd2FybmluZ3MgYWJvdXQgb3V0LW9mLWRhdGUgc2VjdGlvbnMuCgoJKiBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRlc3RzIGFyZSByZWd1bGFyIFdpbmVsaWIgYXBwbGljYXRpb25zIGFuZCB0aHVzIHNob3VsZCBub3QgYmUgY29tcGlsZWQKCXdpdGggX19XSU5FX18uCgoJKiBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSURJX0FQUExJQ0FUSU9OVyBkb2VzIG5vdCBleGlzdCBvbiBXaW5kb3dzLiBVc2UgSURJX0FQUExJQ0FUSU9OCglpbnN0ZWFkIGFuZCBjYXN0IHRvIExQV1NUUi4KCUZpeGVkIHR5cGUgY2FzdCB3YXJuaW5ncy4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYywgZGxscy9zaGVsbDMyL3Rlc3RzL3NobGZpbGVvcC5jLAoJICBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDaGFuZ2UgdGhlICNpbmNsdWRlIG9yZGVyIHNvIHRoYXQgdGhlc2UgdGVzdHMgY29tcGlsZSBvbiBXaW5kb3dzLgoKCSogZGxscy9udGRsbC90ZXN0cy9lcnJvci5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL250c3RhdHVzLmgsCgkgIGluY2x1ZGUvd2lubnQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW92ZSBhbGwgU1RBVFVTXyogYW5kIFJQQ19OVF8qIHRvIG50c3RhdHVzLmggYXMgcGVyIFdpbmRvd3MgU0RLLgoJQWRkIHNvbWUgbWlzc2luZyBjb25zdGFudHMuCglJbmNsdWRlIG50c3RhdHVzLmggaW4gd2lubnQuaC4KCgkqIGZpbGVzL2ZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJRml4ZWQgImNvbmRpdGlvbmFsIGV4cHIgaXMgYWx3YXlzIHRydWUgZHVlIHRvIGJlaW5nIHVuc2lnbmVkIDwgMCIKCXByb2JsZW0uCgoyMDAyLTA5LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jLCB0b29scy93aW5lZHVtcC93aW5lZHVtcC5oOgoJSmFuIEtyYXRvY2h2aWwgPHNob3J0QHVjdy5jej4KCU5ldyAtUzogU2VhcmNoIG9ubHkgcHJvdG90eXBlIG5hbWVzIGZvdW5kIGluICdzeW1maWxlJy4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUFkZGVkIGN0eXBlLmguCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywKCSAgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywgaW5jbHVkZS93aW5kZWYuaCwKCSAgbG9hZGVyL3Jlc291cmNlLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbnZlcnQgSFJTUkMgdG8gYSB2b2lkKi4KCgkqIGRsbHMvbmV0YXBpMzIvdGVzdHMvd2tzdGEuYywgZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU5ldHBHZXRDb21wdXRlck5hbWUsIFNIQ29weUtleUEgYW5kIFNIUmVnR2V0UGF0aEEgZG9uJ3QgZXhpc3Qgb24gYWxsCglXaW5kb3dzIHBsYXRmb3JtcyAtPiB1c2UgR2V0TW9kdWxlSGFuZGxlICsgR2V0UHJvY0FkZHJlc3MuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sCgkgIGRvY3VtZW50YXRpb24vd2luZS50ZXhpbmZvLCBmaWxlcy9maWxlLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJTWFyayBmaWxlcyBzdGFydGluZyB3aXRoIGEgZG90IGFzIEZBX0hJRERFTi4KCUFkZCBjb25maWd1cmF0aW9uIG9wdGlvbiAnU2hvd0RvdEZpbGVzJyB0byB0dXJuIHRoaXMgZmVhdHVyZSBvZmYuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6IE1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglGaXggTW92ZUZpbGVFeCgpIGZsYWdzIGluIE1TVkNSVCByZW5hbWUoKS9fd3JlbmFtZSgpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBSZW9yZ2FuaXphdGlvbiBhbmQgY2xlYW51cCBvZiBzZWxlY3Rpb24gY29kZS4KCS0gQ29tcGxldGUgcmV3cml0ZSBvZiBmb2N1cyBoYW5kbGluZyBhbmQgZHJhd2luZyBjb2RlLgoJLSBNYW55IGJ1Z3MgZml4ZWQgKGluY2x1ZGluZyBhIHNlcmlvdXMgbWVtb3J5IGNvcnJ1cHRpb24pLgoJLSBNYW55IHBlcmZvcm1hbmNlIGZpeGVzLgoJLSBMb3RzIG9mIGNsZWFudXBzLCBzaW1wbGlmaWNhdGlvbnMsIGV0Yy4KCS0gRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogaW5jbHVkZS93dHlwZXMuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbmNsdWRlIHJwYy5oIGFmdGVyIExQT0xFU1RSIGFuZCBvdGhlciBuZWVkZWQgdHlwZXMgYXJlIGRlZmluZWQuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglGaXhlZCB0eXBvIHdoaWNoIHByZXZlbnRlZCBjb3JyZWN0IGNvbXBpbGF0aW9uIG9mIGNvZGUgdXNpbmcgdGhlCglHZXR7QyxNLFl9VmFsdWUgbWFjcm9zLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL29tLmMsIGluY2x1ZGUvd2ludGVybmwuaCwKCSAgc2NoZWR1bGVyL2hhbmRsZS5jOgoJSW1wbGVtZW50ZWQgTnREdXBsaWNhdGVPYmplY3QuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvY29tbWN0cmwuaCwKCSAgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS9wcnNodC5oLAoJICBpbmNsdWRlL3JpY2hlZGl0LmgsIGluY2x1ZGUvd2luY3J5cHQuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglSZXBsYWNlIHN0YXRpYyBpbml0aWFsaXplcnMgd2l0aCBhIHByb3BlciAjZGVmaW5lIGluIC5oIGZpbGVzLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZ2RpLmg6IEp1cmFqIEhlcmNlayA8anVyYWpAc3luY2FkLmNvbT4KCS0gZml4ZWQgdHlwbyBlcnJvciBpbiBDTVlLIGRlZmluaXRpb24gKENPTE9SRUYgLT4gQ09MT1JSRUYpCgktIGFkZGVkIHRhZ3MgdG8gc3RydWN0dXJlcyAoX09GU1RSVUNULCBfRklMRVRJTUUsIC4uLikKCgkqIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJV2FpdCBmb3IgYXBwIHRvIGNvbWUgdXAgYmVmb3JlIGF0dGVtcHRpbmcgRERFIGNvbm5lY3Rpb24uCglQYXRoSXNVUkwgc2hvdWxkIGZhaWwgb24gdGV4dCB3aXRob3V0IGEgcHJvcGVyICJzY2hlbWUiLgoKCSogZmlsZXMvZG9zX2ZzLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCWluZm8tPnUuc21iX2RpciBpcyBhIHBvaW50ZXIsIGVycm9ycyBhcmUgc2lnbmFsZWQgYnkgTlVMTC4KCgkqIHByb2dyYW1zL3dpbmVkYmcvYnJlYWsuYywgcHJvZ3JhbXMvd2luZWRiZy9kYmcueSwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL2V4cHIuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9oYXNoLmMsIHByb2dyYW1zL3dpbmVkYmcvaW5mby5jLAoJICBwcm9ncmFtcy93aW5lZGJnL3N0YWJzLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGFiaWxpdHkgdG8gYWJvcnQgb24gaW50ZXJhY3RpdmUgc3ltYm9sIGxvb2t1cC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gR3JhbmQgcmV3cml0ZSBmb3Ige0dldCxTZXQsSW5zZXJ0fUl0ZW0gJiBDby4KCS0gTWFueSBidWdzIGZpeGVkLgoJLSBDYWxsYmFjayBpdGVtcyBhcmUgYmV0dGVyIHN1cHBvcnRlZC4KCS0gSW1wcm92ZW1lbnRzIGluIHJlbmRlcmluZyBzcGVlZC4KCS0gQ2hhbmdlIFZPSUQgdG8gdm9pZC4KCS0gTWFueSBjb2RlIGNsZWFudXBzLCBhbmQgc2ltcGxpZmljYXRpb25zLgoJLSBEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoyMDAyLTA5LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvbnRkbGwvcmVnLmMsCgkgIG1pc2MvcmVnaXN0cnkuYywgd2luMzIvZGV2aWNlLmM6CglIYW5kbGUgc3BlY2lhbCByZWdpc3RyeSByb290IGtleXMgZGlyZWN0bHkgaW4gYWR2YXBpMzIsIGFuZCBhdm9pZAoJdXNpbmcgdGhlbSBpbiBrZXJuZWwgYW5kIG50ZGxsLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgbWVtb3J5L3JlZ2lzdHJ5LmMsIHdpbjMyL2RldmljZS5jOgoJQ29waWVkIHRoZSByZWdpc3RyeSBmdW5jdGlvbnMgbmVlZGVkIGJ5IFZNTSBpbnRvIGRldmljZS5jIGFuZCBnb3QgcmlkCglvZiBtZW1vcnkvcmVnaXN0cnkuYy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBmaWxlcy9kaXJlY3RvcnkuYywgbWlzYy9jcHUuYywgbWlzYy9yZWdpc3RyeS5jLAoJICB3aW4zMi9leGNlcHQuYzoKCVJlbW92ZWQgcmVtYWluaW5nIHJlZmVyZW5jZXMgdG8gYWR2YXBpMzIgcmVnaXN0cnkgZnVuY3Rpb25zIGZyb20KCWtlcm5lbCBmdW5jdGlvbnMuCgoJKiB0b29scy93aW5lbWFrZXI6IE1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CgktIFN1cHBvcnQgIi1pbXN2Y3J0IiBhcyBhbiBhYmJyZXZpYXRpb24gb2YgIi1pbXN2Y3J0LmRsbCIuCgktIEF1dG9tYXRpY2FsbHkgYWRkIE1TVkNSVCBpbmNsdWRlIHBhdGggaWYgTVNWQ1JUIERMTCB3YXMgcmVxdWVzdGVkLgoKCSogZmlsZXMvZmlsZS5jOiBNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJV2FpdCB0aW1lb3V0IG11c3QgYmUgMCBpZiBiV2FpdCA9PSBGQUxTRS4KCgkqIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lZGJnLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVkYmcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVkYmcvUkVBRE1FLAoJICBwcm9ncmFtcy93aW5lZGJnL2JyZWFrLmMsIHByb2dyYW1zL3dpbmVkYmcvZGJfZGlzYXNtLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvZGJnLnksIHByb2dyYW1zL3dpbmVkYmcvZGVidWcubCwKCSAgcHJvZ3JhbXMvd2luZWRiZy9kZWJ1Z2dlci5oLCBwcm9ncmFtcy93aW5lZGJnL2Rpc3BsYXkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9leHByLmMsIHByb2dyYW1zL3dpbmVkYmcvZXhwci5oLAoJICBwcm9ncmFtcy93aW5lZGJnL2V4dF9kZWJ1Z2dlci5jLCBwcm9ncmFtcy93aW5lZGJnL2dkYnByb3h5LmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvaGFzaC5jLCBwcm9ncmFtcy93aW5lZGJnL2luZm8uYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9pbnR2YXIuaCwgcHJvZ3JhbXMvd2luZWRiZy9tZW1vcnkuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9tb2R1bGUuYywgcHJvZ3JhbXMvd2luZWRiZy9tc2MuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9yZWdpc3RlcnMuYywgcHJvZ3JhbXMvd2luZWRiZy9zb3VyY2UuYywKCSAgcHJvZ3JhbXMvd2luZWRiZy9zdGFicy5jLCBwcm9ncmFtcy93aW5lZGJnL3N0YWNrLmMsCgkgIHByb2dyYW1zL3dpbmVkYmcvdHlwZXMuYywgcHJvZ3JhbXMvd2luZWRiZy93aW5lZGJnLmMsIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmFjOgoJTW92ZWQgdGhlIGRlYnVnZ2VyIHRvIHByb2dyYW1zL3dpbmVkYmcgd2hlcmUgaXQgYmVsb25ncy4KCgkqIGZpbGVzL2ZpbGUuYywgZmlsZXMvcHJvZmlsZS5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIG1pc2MvdmVyc2lvbi5jLAoJICBtc2Rvcy9wcGRldi5jLCByZWxheTMyL3JlbGF5Mzg2LmM6CglSZW1vdmVkIHJlZmVyZW5jZXMgdG8gYWR2YXBpMzIgcmVnaXN0cnkgZnVuY3Rpb25zIGZyb20gc29tZSBvZiB0aGUKCWtlcm5lbCBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL3JlZy5jOgoJUnRsRm9ybWF0Q3VycmVudFVzZXJLZXlQYXRoOiByZXR1cm4gcGF0aCBjb250YWluaW5nIHRoZSB1c2VyIG5hbWUKCWluc3RlYWQgb2YgLkRlZmF1bHQuCgoJKiB0b29scy93aW5lbWFrZXI6IE1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CgktIGZpeCBwZXJsIHN5bnRheCBlcnJvciBpbiBteSBvd24gcGF0Y2gKCS0gZml4IHBlcmwgc3ludGF4IGVycm9yIGluIGdlbmVyYXRlX3dyYXBwZXJfZmlsZSgpCgktIGZpeCBvcmRlciBvZiBhcmd1bWVudHMgZ2VuZXJhdGVfZnJvbV90ZW1wbGF0ZSgpIGluCgkgIGdlbmVyYXRlX3dyYXBwZXJfZmlsZSgpCgktIGRvbid0IGlnbm9yZSBjb21tYW5kIGxpbmUgLWwsIC1JLCBhbmQgLWkgYXJndW1lbnRzCgktIGJ1aWxkIHdyYXBwZXIgd2l0aCBhIG1pbmltYWwgc2V0IG9mIERMTHMvbGlicmFyaWVzCgktIGZpeCBhdXRvY29uZiBpbnZvY2F0aW9uIHRvIHN1cHBvcnQgYm90aCAyLjV4IGFuZCAyLjEzCgktIGZpeCB1c2FnZSBtZXNzYWdlIGZvciAtLW5vZGxscwoJLSB0YXJnZXRfaW5pdChcJGdsb2JhbF9zZXR0aW5ncykgbXVzdCBub3QgYmUgZG9uZSBhZnRlciByZWFkaW5nIGNvbW1hbmQKCSAgbGluZQoJLSBmaXggYXBwTmFtZSBkZWNsYXJhdGlvbiBpbiB3cmFwcGVyIGNvZGUKCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wcm92ZSBMVk1fR0VUSVRFTVJFQ1QgdmFsdWVzIGZvciBMVlNfSUNPTiBzdHlsZS4gTm93IG1vc3RseQoJICBjb3JyZWN0IChvciBhdCBsZWFzdCBtYXRjaGVzIG5hdGl2ZSkuCgktIEhhbmRsZSBmb2N1c2VkIGFuZCBzZWxlY3RlZCBsYXJnZSBpY29uIHRleHQgYmV0dGVyLgoJLSBIYW5kbGUgaW50ZXJuYWwgZXJhc2UuCgktIEFkZGl0aW9uYWwgZGVidWdnaW5nIGNvZGUuCgoyMDAyLTA5LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaS5leGUuc3BlYywgZGxscy91c2VyL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvd2luZWJ1aWxkLm1hbi5pbjoKCVJlcGxhY2VkICdoZWFwJyAuc3BlYyBzdGF0ZW1lbnQgYnkgYSBjb21tYW5kIGxpbmUgb3B0aW9uLgoJVXBkYXRlZCB3aW5lYnVpbGQgbWFucGFnZS4KCgkqIGluY2x1ZGUvdGhyZWFkLmg6CglVc2UgbGFyZ2VyIHNpZ25hbCBzdGFjayB0byBhdm9pZCBvdmVyZmxvd3MgaW4gZmlsZXN5c3RlbSBjb2RlIHdoZW4KCWxvYWRpbmcgdGhlIGRlYnVnZ2VyLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6IERlbGV0ZSByZWdpc3RyeSBrZXkgYXQgZXhpdC4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6IEZpeGVkIEFzc29jQ3JlYXRlIGRlY2xhcmF0aW9uLgoKCSogZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9udGRsbC9yZWcuYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglGaXhlZCB3YXJuaW5ncyBjYXVzZWQgYnkgbmV3IHdpbnRlcm5sLmguCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEltcGxlbWVudCBjdXN0b20gZHJhdyBzdXBwb3J0LgoJLSBGaXggdGh1bWIgZHJhd2luZy4KCS0gU29tZSBjbGVhbnVwcywgcmVvcmdhbml6YXRpb25zLCBldGMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglGaXggYSBidW5jaCBvZiBidWdzIHJlbGF0ZWQgdG8gc2Nyb2xsaW5nLgoKCSogdG9vbHMvd2luYXBpL21zdmNtYWtlcjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBidWcgZml4ZXMgYW5kIGltcHJvdmVtZW50cy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZDNkOC5oLCBpbmNsdWRlL2QzZDhjYXBzLmgsCgkgIGluY2x1ZGUvZDNkOHR5cGVzLmg6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQWRkZWQgRGlyZWN0M0QgOCBoZWFkZXJzLgoKCSogd2luMzIvZXhjZXB0LmMsIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgbWlzYy92ZXJzaW9uLmMsCgkgIG1zZG9zL2ludDIxLmMsIG1zZG9zL3Z4ZC5jLCBvbGUvb2xlMm5scy5jLCByZWxheTMyL3JlbGF5Mzg2LmMsCgkgIHJlbGF5MzIvc25vb3AuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9wdGhyZWFkLmMsCgkgIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgZmlsZXMvZGlyZWN0b3J5LmMsCgkgIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywKCSAgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvdGhyZWFkLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW50ZXJubC5oLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvaGVhcC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzL2Vycm9yLmMsIGRsbHMvbnRkbGwvdGVzdHMvcnRsYml0bWFwLmMsCgkgIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywKCSAgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywKCSAgZGxscy9zZXR1cGFwaS9kaXJpZC5jLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsCgkgIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jLCBkbGxzL3NldHVwYXBpL3BhcnNlci5jLAoJICBkbGxzL3NldHVwYXBpL3F1ZXVlLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBkbGxzL21zdmNydC9jcHBleGNlcHQuYywgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLAoJICBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbmV0YXBpMzIvd2tzdGEuYywgZGxscy9udGRsbC9jZHJvbS5jLAoJICBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLAoJICBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvZmlsZS5jLAoJICBkbGxzL250ZGxsL2hlYXAuYywgZGxscy9udGRsbC9sYXJnZV9pbnQuYywgZGxscy9udGRsbC9sb2FkZXIuYywKCSAgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsX21pc2MuaCwgZGxscy9udGRsbC9vbS5jLAoJICBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bGJpdG1hcC5jLAoJICBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3Bvd2VycGMuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywKCSAgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsCgkgIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLAoJICBkbGxzL2Rzb3VuZC9idWZmZXIuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvbWl4ZXIuYywKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywKCSAgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLAoJICBkbGxzL2tlcm5lbC90aHVuay5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBhbGwgdGhlIGNvbnRlbnQgb2YgdGhlIERESyBmaWxlcyBudGRlZi5oIGFuZCBudGRkay5oIHRvCgl3aW50ZXJubC5oLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJRml4ZWQgcmVxdWVzdGVkIGFjY2VzcyByaWdodHMgaW4gUmVnRGVsZXRlS2V5W0FXXS4KCgkqIGRsbHMvYWR2YXBpMzIvdGVzdHMvcmVnaXN0cnkuYzoKCUZpeGVkIHBvc3NpYmxlIGluZmluaXRlIGxvb3AgaW4gZGVsZXRlX2tleS4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIEMrKyBjb21tZW50cy4KCgkqIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVdDTURfcGFyc2U6IGFsbG93IHNsYXNoZXMgaW4gY29tbWFuZCBmaWxlbmFtZXMuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglDbGVhbnVwIHdhcm5pbmcgd2hlbiBidWlsZGluZyBvbiBNaW5ndy4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfY2xlYW51cCwgdG9vbHMvd2luYXBpL3dpbmFwaV9jbGVhbnVwX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWFkZSByZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZSBhIGRlZmF1bHQgb2ZmIG9wdGlvbi4KCS0gQWRkIHN1cHBvcnQgZm9yIEMrKyB0byBDIGNvbW1lbnQgY29udmVyc2lvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gQ29tcGxldGUgcmV3cml0ZSBvZiBzY3JvbGxpbmcgY29kZTogc21hbGxlciwgZmFzdGVyLCBjbGVhbmVyLgoJICBXZSBub3cgcHJvcGVybHkgc2Nyb2xsIHRoZSB3aW5kb3csIHJhdGhlciB0aGFuIGludmFsaWRhdGluZyBpdCBvbgoJICBldmVyeSBzY3JvbGwgYWN0aW9uLgoJLSBBIGJ1ZyBvciB0d28gZ290IHNxdWFzaGVkLgoJLSBNYW55IGNvZGUgY2xlYW51cHMsIHNpbXBsaWZpY2F0aW9ucywgZXRjLgoJLSBTb21lIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSBzdXBwb3J0IGZvciAnZmlsZScsICduYW1lJywgYW5kICdtb2RlJyBpbiAuc3BlYyBmaWxlcy4KCgkqIGRsbHMvc2hsd2FwaS91cmwuYzogSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCU1ha2UgaGV4IGRpZ2l0cyBzdGF0aWMgY29uc3QgJiBzaGFyZSB0aGVtLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvc2hyZWcuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRhdGlvbiBhbmQgdGVzdCBmb3IgU0hDb3B5S2V5QS9XLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9maWxlLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJRml4IHRoZSBiZWhhdmlvciBvZiBHZXRPdmVybGFwcGVkUmVzdWx0KCkgYW5kIFdTQUdldE92ZXJsYXBwZWRSZXN1bHQoKQoJd2l0aCBub24tbWFudWFsLXJlc2V0IChhdXRvLXJlc2V0KSBldmVudHMgaW4gdGhlIE9WRVJMQVBQRUQgc3RydWN0dXJlcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IEFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW5zdGFsbCB0Y2hhci5oLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLXRvb2xraXQuc2dtbDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJU3BlYyBmaWxlcyBkb2N1bWVudGF0aW9uLiBBZGRlZCBpbmZvcm1hdGlvbiBhYm91dCB3aWRlIHN0cmluZ3MuIEJhc2VkCglvbiBjb21tZW50cyBieSBQYXRyaWsgU3RyaWR2YWxsLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IE1pY2hhZWwgQmVhY2ggPG1pY2hhZWxiQGllZWUub3JnPgoJRml4ZWQgYnVmZmVyIHNpemUgaW4gRElSX1RyeU1vZHVsZVBhdGggZm9yIFdpbjMyIG1vZHVsZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy93aW5tbS93aW5lbmFzL2F1ZGlvLmMsCgkgIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL3JwY25kci5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwKCSAgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3d0eXBlcy5oLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jLCBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5oLAoJICB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jLCB0b29scy93aW5lZHVtcC9zeW1ib2wuYzoKCVJlbW92ZWQgdGhlIF9fdWludCogdHlwZXMgZnJvbSBiYXNldHNkLmggc2luY2UgdGhleSBkb24ndCBleGlzdCB1bmRlcgoJV2luZG93cy4gRml4ZWQgYSBmZXcgb3RoZXIgaXNzdWVzIHdpdGggdHlwZSBkZWZpbml0aW9ucy4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rcm5sMzg2LmV4ZS5zcGVjOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmUgdGhlIG5hbWUgZGlyZWN0aXZlIGZyb20gdGhlIC5zcGVjIGZpbGUgdG8gdGhlIE1ha2VmaWxlLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBuYW1pbmcgdGhlIERMTCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJTmV3IENVUFMgbGlicmFyaWVzIHJldHVybiAibm9uZSIgYXMgZGVmYXVsdCBwcmludGVyIGluc3RlYWQgb2YgTlVMTC4KCgkqIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWMsIGRsbHMvdXNlci9kZGVtbC5zcGVjLAoJICBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywgZGxscy93aW5zb2NrL3dpbnNvY2suc3BlYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglNYWtlIGFsbCBzcGVjIGZpbGVzIGdyZXAtYWJsZS4KCgkqIG1pc2NlbXUvTWFrZWZpbGUuaW4sIG1pc2NlbXUvd2luZS5zcGVjOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCU1vdmVkIG1vZGUgc2V0dGluZyBvdXQgb2YgLnNwZWMgZmlsZSBpbnRvIE1ha2VmaWxlLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJR3JlYXRseSBpbXByb3ZlZCBkcmF3aW5nIGNvZGU6IGVsaW1pbmF0ZXMgYWxsIGZsaWNrZXIsIGZhc3RlciwgY2xlYW5lcgoJdGljcyBkcmF3aW5nLCBiZXR0ZXIgdG9vbHRpcCBwb3NpdGlvbmluZywgY29kZSBjbGVhbnVwcyBhbmQKCXNpbXBsaWZpY2F0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIFJld3JpdGUgdGhlIGRyYXdpbmcgY29kZS4gSXQgbm93IGlzIG11Y2ggc21hbGxlciwgZWFzaWVyIHRvIGZvbGxvdywKCSAgYW5kIGZhc3Rlci4gTW9yZW92ZXIsIGl0IG5vdyBzdXBwb3J0cyB0aGUgZHdSb3Agb3BlcmF0aW9uLCBhbmQgaXQgaXMKCSAgaW4gZ29vZCBzaGFwZSB0byBzdXBwb3J0IHRoZSBtaXNzaW5nIGZlYXR1cmVzLgoJLSBEcmF3IHRoZSBkcmFnZ2VkIGltYWdlIHNlbWktdHJhbnNwYXJlbnRseSAod2lsbCB3b3JrIHdoZW4gd2Ugc3VwcG9ydAoJICBhbHBoYSBibGVuZGluZykuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgSW1hZ2VMaXN0IHN0YXRlcyAoSUxTXyopIGRlZmluaXRpb25zLgoKMjAwMi0wOS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbmV0YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbmV0YXBpMzIvYXBpYnVmLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywgZGxscy9uZXRhcGkzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL25ldGFwaTMyL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL25ldGFwaTMyL3Rlc3RzL2FwaWJ1Zi5jLAoJICBkbGxzL25ldGFwaTMyL3Rlc3RzL3drc3RhLmMsIGRsbHMvbmV0YXBpMzIvd2tzdGEuYywKCSAgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9sbS5oLCBpbmNsdWRlL2xtYWNjZXNzLmgsCgkgIGluY2x1ZGUvbG1hcGlidWYuaCwgaW5jbHVkZS9sbWNvbnMuaCwgaW5jbHVkZS9sbWVyci5oLAoJICBpbmNsdWRlL2xtd2tzdGEuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBidWZmZXIgbWFuYWdlbWVudCBmdW5jdGlvbnMsIGEgY291cGxlIG9mIHdvcmtzdGF0aW9uCglpbmZvcm1hdGlvbiBmdW5jdGlvbnMsIGNyZWF0ZWQgY29uZm9ybWFuY2UgdGVzdHMuCgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTdG9yZSB0aGUgZ2xvYmFsIHNldHRpbmdzIGluIE1ha2UucnVsZXMuaW4gaW5zdGVhZCBvZiBkdXBsaWNhdGluZyB0aGVtCglpbiBlYWNoIE1ha2VmaWxlLmluIGZpbGUuCglJbnRyb2R1Y2UgZ2VuZXJhdGVfZnJvbV90ZW1wbGF0ZSB3aGljaCByZXBsYWNlcyBnZW5lcmF0ZV9jb25maWd1cmUKCWFuZCBnZW5lcmF0ZV9nZW5lcmljCglTaW1wbGlmeSB0aGUgd3JhcHBlciBnZW5lcmF0aW9uIGJ5IHVzaW5nIGdlbmVyYXRlX2Zyb21fdGVtcGxhdGUuCglSZW5hbWUgY29uZmlndXJlLmluIHRvIGNvbmZpZ3VyZS5hYy4gTm93IHdvcmtzIHdpdGggYXV0b2NvbmYgMi41eC4KCgkqIHRvb2xzL3dpbmVkdW1wL1JFQURNRSwgdG9vbHMvd2luZWR1bXAvZGVidWcuYywgdG9vbHMvd2luZWR1bXAvcGUuYywKCSAgdG9vbHMvd2luZWR1bXAvcGUuaDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gSW1wbGVtZW50IGR1bXBpbmcgb2YgQ09GRiBkZWJ1ZyBzeW1ib2wgdGFibGUuCgktIEZpeCB3aW5lZHVtcCBzeW50YXggZGVzY3JpcHRpb24uCgktIFNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvYWxsb2MuYzogQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBIGZldyBtb3JlIGNvbmZvcm1hbmNlIHRlc3RzIGZvciBoZWFwIG1lbW9yeSBhbGxvY2F0aW9uLgoKCSogaW5jbHVkZS9udHNlY2FwaS5oOiBBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIHBvbGljeSBhY2Nlc3MgY29uc3RhbnRzLCB0eXBlIGRlZmluaXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEltcGxlbWVudCBhdXRvcGFnaW5nLgoJLSBSZW1vdmUgaW5jb3JyZWN0IEZJWE1Fcy4KCS0gU21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglDb2RlIGNsZWFudXBzIGFuZCBzaW1wbGlmaWNhdGlvbnMsIGRvY3VtZW50YXRpb24gdXBkYXRlcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgV2luZSBkZXRlY3Rpb24gd2hlbiB1c2luZyB0aGUgV2luZSBzb3VyY2UgdHJlZS4KCjIwMDItMDktMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lbWFrZXI6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggZGV0ZWN0aW9uIG9mICdsbiAtcycuCglGaXggY29tcHV0YXRpb24gb2YgVE9QT0JKRElSLgoJSW5zdGFsbCBleGVzIGFuZCBkbGxzIGluICQobGliZGlyKS4KCS1XbCwtcnBhdGggaXMgbm90IHJlbGV2YW50IGZvciBkbGxzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS93aW50ZXJubC5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCB0aGUgbmV3IGhlYWRlciB3aW50ZXJubC5oLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgQDE2MywxNjQsMTY4LDE3NSwxODIsMTg3LDI4NixTSFNraXBKdW5jdGlvbi4KCVN0dWIgQDIwMSwyMDIsMjAzLCBEb2N1bWVudCBtYW55IGZ1bmN0aW9ucy4KCUAxNjU6IEZpeCBtYXNrIGFuZCBmbGFncyBwYXJhbWV0ZXIgb3JkZXIuCglAMTcyOiBXb3JrcyBvbiBJSW50ZXJuZXRTZWN1cml0eU1nclNpdGUgYW5kIElTaGVsbFZpZXcgdG9vLgoJQDE5OSxAMjY4OiBObyByZXR1cm4gdmFsdWUsIGNhbGwgQDE2OS4KCgkqIGluY2x1ZGUvd2lubnQuaDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBhIGZldyBtYWNyb3MgZm9yIE1TIEMvQysrIHNwZWNpZmljIGZlYXR1cmVzLgoKCSogdG9vbHMvd2luZW1ha2VyLCB0b29scy93aW5lbWFrZXIubWFuOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCS0gRml4IC0tbm9tZmMgb3B0aW9uIHdoaWNoIGlzIGN1cnJyZW50bHkgYnJva2VuLgoJLSBBZGQgLS1ub2RsbHMgb3B0aW9uIGZvciBzbWFsbCBhcHBzLgoKMjAwMi0wOS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY3J5cHQzMi9tYWluLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXNzaXAuaCwKCSAgaW5jbHVkZS9zaXBiYXNlLmgsIGluY2x1ZGUvd2luY3J5cHQuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkIGFuZCB1c2UgdGhlIGhlYWRlciBmaWxlcyBtc3NpcC5oIGFuZCBzaXBiYXNlLmguCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvcmVnaXN0cnkxNi5jLCBtaXNjL3JlZ2lzdHJ5LmM6CglNb3ZlZCAxNi1iaXQgcmVnaXN0cnkgZnVuY3Rpb25zIHRvIGtlcm5lbCBkbGwgYW5kIGltcGxlbWVudGVkIHRoZW0gYnkKCWNhbGxpbmcgdXAgdG8gYWR2YXBpMzIuCgoJKiBkbGxzL2dkaS9nZGkxNi5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsCgkgIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywKCSAgd2luZG93cy9xdWV1ZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL250ZGxsL2Vycm9yLmMsIGRsbHMvbnRkbGwvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9udGRsbC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC90ZXN0cy9lcnJvci5jLAoJICBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2lubnQuaDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJUnRsTnRTdGF0dXNUb0Rvc0Vycm9yOiBBZGRlZCBuZXcgTlQgc3RhdHVzIHRvIGVycm9yIGNvZGVzIG1hcHBpbmcsCglhZGRlZCBtaXNzZWQgZGVmaW5pdGlvbnMgb2YgdGhlIHVzZWQgY29uc3RhbnRzLCBjcmVhdGVkIHVuaXQgdGVzdCBmb3IKCXN1YnNldCBvZiB0aGUgbWFwcGluZ3MuCgoJKiBjb250cm9scy91aXRvb2xzLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEltcGxlbWVudCBERkNTX1RSQU5TUEFSRU5ULgoJLSBGaXggaW5kZW50YXRpb24uCgktIEFkZCByZW1hcmsgYWJvdXQgdW5pbXBsZW1lbnRlZCBERkNfUE9QVVBNRU5VLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBQYXNzIGluZm9QdHIgYXJvdW5kLCBpbnN0ZWFkIG9mIGh3bmQuCgktIEltcGxlbWVudCBob3QgY3Vyc29yLgoJLSBVcGRhdGUgbGlzdCBvZiB1bmltcGxlbWVudGVkIG1lc3NhZ2VzLgoJLSBTaW1wbGlmeSB0aGUgY29kZSBmb3IgZWRpdGluZyBsYWJlbHMuCgktIFN0YXJ0IHdvcmtpbmcgdG93YXJkcyBtb3JlIHR5cGUtc2FmZSBmdW5jdGlvbnMuCgktIFNtYWxsIGNvZGUgY2xlYW51cHMuCgktIFNvbWUgZG9jdSB1cGRhdGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywKCSAgZGxscy9jb21jdGwzMi91cGRvd24uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEZpeCBidWcgaW4gbW91c2UgcG9zaXRpb24gcmVhZGluZy4KCS0gUmVtb3ZlIHVzZWxlc3MgY29kZS4KCS0gU21hbGwgY29kZSBjbGVhbnVwcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gRml4IHRoZSB0aWNzIGRyYXdpbmcgY29kZS4KCS0gRml4IHRoZSBzZWxlY3Rpb24gYXJlYSBjYWxjdWxhdGlvbiAmIGRyYXdpbmcuCgktIEltcGxlbWVudCBUQlNfRE9XTklTTEVGVC4KCS0gTWFrZSB1c2Ugb2YgZkxvY2F0aW9uIChUQlRTX3tUT1AsTEVGVCxCVVRUT00sUklHSFR9KS4KCS0gTG90cyBvZiBjb2RlIGNsZWFudXBzIGFuZCBzaW1wbGlmaWNhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgdGhlIFRUTV9HRVRCVUJCTEVTSVpFIG1lc3NhZ2UuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEFkZCBtaXNzaW5nIGRlY2xhcmF0aW9uIGZvciBUQlNfRE9XTklTTEVGVCBhbmQgVFRNX0dFVEJVQkJMRVNJWkUuCgktIEZpeCBpbmRlbnRhdGlvbiBmb3IgYSBidW5jaCBvZiB0aGluZ3MuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZiB0aGUgZGVmYXVsdCBDVVBTIHByaW50ZXIgaGFzIG5vIHBwZCBmaWxlLCBqdXN0IHVzZSB0aGUgZmlyc3QKCXByaW50ZXIgdGhhdCBoYXMgb25lIGFzIFdpbmRvd3MgZGVmYXVsdCBwcmludGVyLgoJU3VwcG9ydCBQUklOVEVSX0VOVU1fQ09OTkVDVElPTlMgaW4gdGhlIGRlZmF1bHQgd2F5LgoKCSogZGxscy9tc3ZjcnQvc2NhbmYuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgdGhlIHNjYW5mIGZhbWlseSByZWNvZ25pemUgY2hhcmFjdGVycyBhZ2Fpbi4KCgkqIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIHRvb2xzL3dpbmVtYWtlcjogTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCS0gQWRkICItbGRsIiBmb3Igd3JhcHBlciBhcHBzLgoJLSBmaXggTWFrZWZpbGUgZm9yIC0td3JhcC4KCS0gRml4IHdyYXBwZXIgY29kZSB3aGljaCB3YXMgYnJva2VuIGZvciBjb25zb2xlIGFwcHMuCgoyMDAyLTA5LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL3dpbnNvY2sxNi5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpbmlzaCB0aGUgY29udmVyc2lvbiBvZiBIV05EIHRvIGEgdm9pZCouCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmMsIHRvb2xzL3dpbmVpbnN0YWxsOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTb21lIHNtYWxsIHR5cG8gLyBwaHJhc2luZyBmaXhlcy4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL01ha2VmaWxlLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBkbGxzL21ha2VfZGxscywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW46CglBZGRlZCBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBjcm9zcy1jb21waWxpbmcgdGVzdHMgdXNpbmcgbWluZ3cgb24KCUxpbnV4IGlmIGF2YWlsYWJsZS4KCgkqIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpYXZpL2luZm8uYywKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpYXZpL3ByaXZhdGVfbWNpYXZpLmgsCgkgIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS93aW5lbW0uaCwgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLAoJICBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L3BydGRydi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvc2V0dXBhcGkvcXVldWUuYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsCgkgIGRsbHMvdHdhaW4vZHNtX2N0cmwuYywgZGxscy90d2Fpbi90d2Fpbl9pLmgsIGRsbHMvd2lubW0vbWNpLmMsCgkgIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsCgkgIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywKCSAgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJUHJlcGFyZSBkbGxzL3tjb21jdGwzMixnZGksbXN2aWRlbyxzZXR1cGFwaSxzaGVsbDMyLHR3YWluLHdpbm1tfSBmb3IKCXRoZSBjb252ZXJzaW9uIG9mIEhXTkQgdG8gYSB2b2lkKi4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBpbmNsdWRlL250c2VjYXBpLmg6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUxzYU50U3RhdHVzVG9Eb3NFcnJvciBpbXBsZW1lbnRhdGlvbi4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQEZ1aml0c3UtU2llbWVucy5jb20+CglXUzJfcmVnaXN0ZXJfYXN5bmNfc2h1dGRvd24oKTogVHJ5IGltbWVkaWF0ZSBjb21wbGV0aW9uLCBpbiBjYXNlIGFuCglhcHAgbmV2ZXIgd2FpdHMgZm9yIGFueXRoaW5nLgoJV1NfYWNjZXB0KCk6IEF2b2lkIGNyYXNoIGlmIGFkZHIgcGFyYW1ldGVyIGlzIE5VTEwuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgcmVnaXN0cnkgTUlNRSB0eXBlIGZ1bmN0aW9ucyBAMzI0LTMyOS4KCgkqIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZHJhdy9NYWtlZmlsZS5pbjoKCUxpbmsgYWxsIHJlbWFpbmluZyBkbGxzIGV4Y2VwdCBrZXJuZWwzMiBhcyBzZXBhcmF0ZWQgZGxscywgYnkKCXRlbXBvcmFyaWx5IGV4cG9ydGluZyB0aGUgZmV3IGZ1bmN0aW9ucyB0aGF0IGFyZSBub3QgcHJvcGVybHkKCXNlcGFyYXRlZCB5ZXQuCgoJKiBtaXNjL3ZlcnNpb24uYzogRml4ZWQgY2hlY2tpbmcgb2Ygc3BlY2lhbCBkbGwgbmFtZXMuCgoJKiBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1lbnRpb24gMzJiaXQgY29vcmRpbmF0ZXMgc3VwcG9ydC4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2F0b20uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBpbmNsdWRlIHdpbmUvdW5pY29kZS5oLgoKCSogdG9vbHMvd2luZW1ha2VyOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHByb3RvdHlwZXMgdG8gYWxsIGZ1bmN0aW9ucy4KCU1ha2Ugd2luZW1ha2VyIHdvcmsgaW4gJ3N0cmljdCcgbW9kZS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIEAxMzgsQDE1NyxAMTgwLEAxOTcsQDIwNC4KCUAxNTEtMTU3OiBQYXJhbWV0ZXJzIGFyZSBjb25zdC4KCUAzNiBpbnNlcnRzIE1GX0JJVE1BUCdzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tARnVqaXRzdS1TaWVtZW5zLmNvbT4KCUZpeGVkIHR5cG8gaW4gY2hlY2tfYnVmZmVyX3NlKCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVJvbGYgS2FsYmVybWF0dGVyIDxyb2xmLmthbGJlcm1hdHRlckBjaXRlbmcuY29tPgoJSW1wbGVtZW50ZWQgU0hDcmVhdGVTdGRFbnVtRm10RXRjLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBFbGltaW5hdGUgZmxpY2tlci4KCS0gTXVjaCBpbXByb3ZlZCB0aHVtYiBkcmFnZ2luZy4KCS0gRml4IHRvb2x0aXAgYmVoYXZpb3VyLgoJLSBGaXggdGljayBoYW5kbGluZy4KCS0gU3RyZWFtbGluZWQgZHJhd2luZyBjb2RlLgoJLSBEZWNlbnQgcGFnaW5nIHdpZHRoLgoJLSBIYW5kbGUgT09NIGdyYWNlZnVsbHkuCgktIEFkZCBwcm9wZXIgbm90aWZpY2F0aW9ucy4KCS0gRml4IHJhbmdlIHNldHRpbmcuCgktIFN0YXJ0IHN1cHBvcnQgZm9yIGN1c3RvbSBkcmF3LgoJLSBGaXggYSBidW5jaCBvZiBidWdzLgoJLSBDb2RlIGNsZWFudXBzLgoJLSBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCS0gU3BhY2luZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZCBnZW5lcmljIG5vdGlmaWNhdGlvbiBzdXBwb3J0IGZvciB0aGUgY29tbW9uIGNvbnRyb2xzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gQ29tcGxldGUgc3VwcG9ydCBmb3Igcmdie0ZnLEJrfSBpbiBEcmF3SW5kaXJlY3QuCgktIFJlbmFtZSBWT0lEIHRvIHZvaWQuCgktIERvY3VtZW50YXRpb24gY2xlYW51cC4KCS0gRml4IElMRF9UUkFOU1BBUkVOVCBoYW5kbGluZy4KCjIwMDItMDktMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6IFJlbGVhc2UgMjAwMjA5MDQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMDktMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIE1ha2V0ZXN0LnJ1bGVzIG9uIGRpc3RjbGVhbi4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzoKCVBlZWtOYW1lZFBpcGU6IENoZWNrIGlmIHRoZSBwaXBlIHdhcyBjbG9zZWQgd2hlbiB0aGVyZSBhcmUgMCBhdmFpbGFibGUKCWJ5dGVzIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFV3ZSBCb25uZXMpLgoKCSogZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvYXNzb2MuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBBc3NvYyogZnVuY3MgKGJ1dCBub3QgdW5kZXJseWluZyBJUXVlcnlBc3NvY2lhdGlvbnMgb2JqZWN0KS4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CgktIEZpeCBJbWFnZUxpc3RfR2V0SWNvbiB0byB1c2UgSW1hZ2VMaXN0XyogZnVuY3Rpb25zIGZvcgoJICBjb21wbGV0ZW5lc3MuCgktIFRpbnkgY29kZSBjbGVhbnVwcy4KCS0gRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBVbmljb2RpZmljYXRpb24gKHVzZSBVbmljb2RlIGZ1bmN0aW9ucyAmIHR5cGVzIGNvbnNpc3RlbnRseSkuCgktIFBhc3MgaW5mb1B0ciBhcm91bmQgaW5zdGVhZCBvZiBod25kLgoJLSBQcm9wZXIgdHlwZS1zYWZlIHNpZ25hdHVyZXMgZm9yIGZ1bmN0aW9ucyBwcm9jZXNzaW5nIG1lc3NhZ2VzLgoJLSBGaXggdGhlIHR5cGVzIGZvciBzb21lIG9mIHRoZSBjb250cm9sJ3MgcGFyYW1ldGVycy4KCS0gSW1wbGVtZW50IFtHU11FVF9VTklDT0RFRk9STUFULgoJLSBGZXcgaW5kZW50YXRpb24gYW5kIHNwYWNpbmcgZml4ZXMuCgktIFRpZHkgdXAgZG9jdS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQWRkZWQgc3ltbGlua3MgZm9yIHdpbmhlbHAuCgoJKiB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsCgkgIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvc3RydWN0MzIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5oZWxwLmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL3N0YXRpYy5jLAoJICBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3Byb3BlcnR5LmMsCgkgIGRsbHMvdXNlci93bmQxNi5jLCBkbGxzL3gxMWRydi9kZ2EyLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGluY2x1ZGUvd2luLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBSZW5hbWUgV0lOX0hhbmRsZTE2IHRvIEhXRE5fMTYgYW5kIG1ha2UgaXQgYSBtYWNyby4KCS0gUHJlcGFyZSB1c2VyLmRsbCBmb3IgdGhlIGNoYW5nZSBvZiBIV05EIHRvIGEgdm9pZCouCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MTAuYywKCSAgZGxscy93aW5lZG9zL2ludDMxLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYywKCSAgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyZi5jOgoJQWRkZWQgRFBNSSBzZWdtZW50cyBzdHJ1Y3R1cmUgYW5kIHJlbGF0ZWQgZnVuY3Rpb24gdG8gYXZvaWQgZGlyZWN0CglyZWZlcmVuY2VzIHRvIGRvc21lbSBpbnRlcm5hbCB2YXJpYWJsZXMuCglEZXRlcm1pbmUgQklPUyBzeXN0ZW0gb2Zmc2V0cyBhdCBjb21waWxlIHRpbWUuCgoJKiBvYmplY3RzL2ZvbnQuYzogU2hhY2hhciBTaGVtZXNoIDx3aW5lLXBhdGNoZXNAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCS0gUmV0dXJuIG9sZCBjb2RlIGZvciBoYW5kbGluZyBwYXJhbWV0ZXJzIHRvIEdldENoYXJhY3RlclBsYWNlbWVudCAoKwoJICBmaXggaGVhcCBvdmVycnVuIGluIGl0KS4gTmV3IGNvZGUgZGlkIG5vdCBjb3JyZWN0bHkgbWF0Y2ggdGhlIFdpbmRvd3MKCSAgYmVoYXZpb3VyLgoJLSBBbWVuZCB0aGUgQmlEaSBhbGdvcml0aG0gc28gdGhhdCBtYW55IHN0cmluZ3Mgd2lsbCBub3cgcHJvZHVjZSBxdWl0ZQoJICByZWFkYWJsZSBvdXRwdXQuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCB0b29scy93cmMvbmV3c3RydWMuYzoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUZpeGVkIHR5cG8gaW4gQklUTUFQVjRIRUFERVIgc3R1Y3R1cmUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi90ZXN0cy9zaGxmaWxlb3AuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJU0hGaWxlT3BlcmF0aW9uQTogaW1wcm92ZWQsIGltcGxlbWVudGVkIEZPX01PVkUgYWN0aW9uLCBhZGRlZCBtb3JlCgljb25mb3JtYW5jZSB0ZXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglTbWFsbCB1cGRvd24gY2xlYW51cC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUFkZGVkIHNvbWUgbWlzc2luZyBJbWFnZUxpc3QgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgeEJpdG1hcCBhbmQgeUJpdG1hcCBpbiBJbWFnZUxpc3RfRHJhd0luZGlyZWN0CgktIHNtYWxsIGNvZGUsIGRvY3MsIGFuZCBtZXNzYWdlcyBjbGVhbnVwcwoKCSogZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jOiBEYXZpZCBELiBIYWdvb2QgPHdvd2JhZ2dlckBza3RjLm5ldD4KCUZpeGVkIExpbnV4IDIuMiBldmVudCBBUEkgY29kZS4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzogRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGNvbnNvbGUgc2l6aW5nIGF0IHN0YXJ0dXAuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3ByaXZhdGUuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl91c2VyLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0RlLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRnIucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBjb25maWd1cmF0aW9uIG9uIHBlciBhcHBsaWNhdGlvbiBiYXNpcy4KCUFkZGVkIGFiaWxpdHkgdG8gb3ZlcnJpZGUgcGFydCBvZiB0aGUgY29uZmlndXJhdGlvbiBmcm9tIGNvbnNvbGUKCWNyZWF0b3IuCglSZXZpc2l0ZWQgYSBiaXQgd2luZWNvbnNvbGUgc3RhcnR1cC4KCUFkZGVkIGRpYWxvZyBwYXJ0IGZvciB3aW5kb3cgY2xvc2luZyBhdCBwcm9jZXNzIHRlcm1pbmF0aW9uLgoKCSogZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9jb25zb2xlX3ByaXZhdGUuaCwKCSAgZGxscy9rZXJuZWwvZWRpdGxpbmUuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHBhc3Npbmcgc29tZSBjb25zb2xlIHBhcmFtZXRlcnMgYXQgd2luZWNvbnNvbGUgY3JlYXRpb24gaW5zdGVhZCBvZgoJc3VjY2Vzc2l2ZSBzZXJ2ZXIgcmVxdWVzdHMuCglCZXR0ZXIgcHJvdG90eXBlcyBmb3IgY29uc29sZSBmdW5jdGlvbnMgaW4ga2VybmVsLgoJU29tZSBtaW5vciBjb25zb2xlIGNyZWF0aW9uIGZpeGVzLgoKMjAwMi0wOC0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL250ZGxsL3RpbWUuYywgZmlsZXMvcHJvZmlsZS5jLAoJICBpbmNsdWRlL21tZGRrLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L2F0b20uYywgbXNkb3MvZG9zY29uZi5jLAoJICBtc2Rvcy92eGQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgd2luMzIvbmV3Zm5zLmMsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1TVkMgY29tcGF0aWJpbGl0eSBmaXhlcy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvU2sucmM6IFJlcGFpcmVkIFNsb3ZhayByZXNvdXJjZXMuCgoJKiBwcm9ncmFtcy93aW5oZWxwL1NpLnJjLCBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQWRkZWQgU2xvdmVuaWFuIHJlc291cmNlcy4KCgkqIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgbG9hZGVyL3Rhc2suYywgbWlzYy9zeXN0ZW0uYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYywKCSAgbXNkb3MvaW50MTEuYywgbXNkb3MvaW50MTIuYywgbXNkb3MvaW50MTUuYywgbXNkb3MvaW50MWEuYywKCSAgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgbXNkb3MvaW50MmYuYywKCSAgbXNkb3MvaW50NGIuYywgbXNkb3MvaW50NWMuYywgbXNkb3MvdnhkLmMsIHdpbjMyL2RldmljZS5jLAoJICB3aW5kb3dzL2lucHV0LmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dpbjg3ZW0uYywKCSAgZGxscy9rZXJuZWwvd2luZGVidWcuYywgZGxscy93aW5lZG9zL2RldmljZXMuYywKCSAgZGxscy93aW5lZG9zL2Rvc2FzcGkuYywgZGxscy93aW5lZG9zL2Rvc2V4ZS5oLCBkbGxzL3dpbmVkb3MvaW50MTAuYywKCSAgZGxscy93aW5lZG9zL2ludDE2LmMsIGRsbHMvd2luZWRvcy9pbnQxNy5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgZGxscy93aW5lZG9zL2ludDMzLmMsIGRsbHMvd2luZWRvcy9pbnQ2Ny5jLCBkbGxzL3dpbmVkb3MveG1zLmM6CglNb3ZlZCBpbnRlcm5hbCBjb250ZXh0IG1hY3JvcyBvdXQgb2Ygd2lubnQuaC4KCUFkZGVkIFNFVF9BWCBldGMuIG1hY3JvcyB0byBhdm9pZCBub24tcG9ydGFibGUgcG9pbnRlciBtYW5pcHVsYXRpb25zLgoKCSogZGVidWdnZXIvc291cmNlLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTG9hZCBzb3VyY2UgZmlsZXMgdGhydSBXaW4zMiBBUEkuCgoJKiBkZWJ1Z2dlci9nZGJwcm94eS5jLCBkZWJ1Z2dlci9tZW1vcnkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUFkZGVkIGdkYnByb3h5IHN1cHBvcnQgZm9yIHBwYywgYWRkZWQgbWlzc2luZyBHRVRfSVAgZm9yIG1lbW9yeS5jLgoKMjAwMi0wOC0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY3J0ZGxsLy5jdnNpZ25vcmUsIGRsbHMvZGlucHV0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvZHBsYXl4Ly5jdnNpZ25vcmUsIGRsbHMvaW1hZ2VobHAvLmN2c2lnbm9yZSwKCSAgZGxscy9tYXBpMzIvLmN2c2lnbm9yZSwgZGxscy9uZXRhcGkzMi8uY3ZzaWdub3JlLAoJICBkbGxzL29sZXN2ci8uY3ZzaWdub3JlLCBkbGxzL3JpY2hlZGl0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvc2hkb2N2dy8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy90YXBpMzIvLmN2c2lnbm9yZSwgZGxscy90d2Fpbi8uY3ZzaWdub3JlLAoJICBkbGxzL2F2aWNhcDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tY2F0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZToKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCVVwZGF0ZSBzb21lIC5jdnNpZ25vcmUgZmlsZXMgZm9yIGJ1aWxkaW5nIG9uIFdpbmRvd3MuCgoJKiBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLCBkbGxzL3dpbmVkb3MvZG9zYXNwaS5jLAoJICBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MTAuYywKCSAgZGxscy93aW5lZG9zL2ludDE2LmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL2ludDY3LmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3ZnYS5jLAoJICBkbGxzL3dpbmVkb3MveG1zLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYzoKCUZpeGVkIHNvbWUgZGxsIHNlcGFyYXRpb24gaXNzdWVzLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IERpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglJbXBsZW1lbnQgQ0JFU19FWF9OT1NJWkVMSU1JVCBzdHlsZS4KCgkqIHRvb2xzL3dpbmFwaS9tc3ZjbWFrZXI6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBQcm9wZXIgaGFuZGxpbmcgb2YgR0RJMzIgYW5kIFVTRVIzMi4KCS0gQWRkZWQgUEFDS0FHRV8qIGZvciB0aGUgY29uZmlnLmggZ2VuZXJhdGlvbi4KCS0gUHJvcGVyIGluY2x1ZGUgcGF0aCBmb3IgdGhlIHJlc291cmNlIGNvbXBpbGVyLgoJLSBNaW5vciBidWcgZml4ZXMgYW5kIGltcHJvdmVtZW50cy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBUEkgZmlsZXMgdXBkYXRlLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jLAoJICBpbmNsdWRlL3dpbm50LmgsIHNlcnZlci9jb250ZXh0X3Bvd2VycGMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVVzZSBJYXIgKEluc3RydWN0aW9uIEFkZHJlc3MgUmVnaXN0ZXIpIGluc3RlYWQgb2YgRmlsbFswXS4KCXNpZ2luZm8uc2lfY29kZSB1c2VzIHRoZSBsb3dlciAxNmJpdCBmb3IgdGhlIHR5cGUgb2YgdGhlIGV4Y2VwdGlvbi4KCgkqIHByb2dyYW1zL2Nsb2NrL1NpLnJjLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCVNsb3ZlbmlhbiByZXNvdXJjZXMgZm9yIGNsb2NrLgoKMjAwMi0wOC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvaW5wdXQuYzogUGVyIE55c3Ryb20gPGNlbnRhdXJAbmV0bWFnaWMubmV0PgoJU2V0IHRoZSBmbGFnIGluIEdldEN1cnNvckluZm8uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFJlZHVjZSB0aGUgbnVtYmVyIG9mIG1lc3NhZ2VzIGJlaW5nIHBhc3NlZCB0byBpdHNlbGYgYnkgdXNpbmcgdGhlCgkgIGludGVybmFsIHJvdXRpbmVzLgoJLSBGaXggcHJvYmxlbSBpbiBfU2V0SWNvblNwYWNpbmcgZm91bmQgYnkgcmVjZW50IGNoYW5nZS4KCS0gQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgY29ycmVjdCBpY29uIHNpemluZy4KCS0gQSBmZXcgZXh0cmEgdHJhY2VzLgoKCSogd2luZG93cy9wYWludGluZy5jOgoJQ3JlYXRlIHRoZSBzY3JhdGNoIHJlZ2lvbiBiZWZvcmUgY29weWluZyBpZiBuZWNlc3NhcnkuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBpbmNsdWRlL3dpbmRlZi5oLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywKCSAgZGxscy9tc3ZpZGVvL3ZmdzE2Lmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29udmVydCBIUEFMRVRURSB0byBhIHZvaWQqLgoKCSogZGxscy9nZGkvZ2RpMTYuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL3BhbGV0dGUuYzoKCUFkZGVkIGludGVybmFsIDMyLWJpdCB2ZXJzaW9ucyBvZiBHRElTZWxlY3RQYWxldHRlIGFuZAoJR0RJUmVhbGl6ZVBhbGV0dGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVhbHNhL2Fsc2EuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLAoJICBjb25maWd1cmUuYWM6CglNYXJjbyBQaWV0cm9ib25vIDxwaWV0cm9ib0BwaWV0cm9iby5jb20+CglVc2UgYWxzYS9hc291bmRsaWIuaCBpbnN0ZWFkIG9mIHN5cy9hc291bmRsaWIuaCBpZiBwb3NzaWJsZS4KCgkqIHdpbmRvd3Mvd2luLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglTdXBwb3J0IGZvciBIV05EX01FU1NBR0UuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIFdTQVN0YXJ0dXAoKSBkb24ndCB0b3VjaCB0aGUgbHBWZW5kb3JJbmZvIGZpZWxkIG9mIHRoZSBXU0FEQVRBCglzdHJ1Y3R1cmUuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbHkgb24gdGhlIHdpbmRvdyBtYW5hZ2VyIHRvIHNob3cgYW5kIGhpZGUgcG9wdXAgd2luZG93cyBmb3IgdXMuCgoyMDAyLTA4LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc2FjbS93aW5lbXAzL2RlY29kZV9pMzg2LmMsIGRsbHMvbXNhY20vd2luZW1wMy9tcGVnbDMuYywKCSAgZGxscy9vbGVhdXQzMi9wYXJzZWR0LmMsIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsCgkgIGRsbHMvcmljaGVkaXQvdGV4dC13cml0ZXIuYywgZGxscy93aW5lZG9zL2ludDY3LmMsCgkgIGRsbHMvd2luZXBzL2Rvd25sb2FkLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9waGVscGVyLmgsIHByb2dyYW1zL3JlZ3N2cjMyL3JlZ3N2cjMyLmMsCgkgIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIHRyYWlsaW5nIHdoaXRlIHNwYWNlLgoKCSogdG9vbHMvd2luYXBpL01ha2VmaWxlLmluLCB0b29scy93aW5hcGkvd2luYXBpX2NsZWFudXAsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfY2xlYW51cF9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglOZXcgdG9vbCB3aW5hcGlfY2xlYW51cCBmb3IgZG9pbmcgc2ltcGxlIGF1dG9tYXRpYyBjbGVhbnVwcy4KCUN1cnJlbnRseSBpdCByZW1vdmVzIHRyYWlsaW5nIHdoaXRlIHNwYWNlIGZyb20gdGhlIC5bY2hdIGZpbGVzLgoKCSogbXNkb3MvaW50MTEuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW9wb3J0cy5jLCBvYmplY3RzL2ZvbnQuYywKCSAgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvdGltZXIuYywKCSAgd2luMzIvZXhjZXB0LmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywKCSAgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3JwY2RjZXAuaCwKCSAgbGlicmFyeS9jb25maWcuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbWFpbi5jLAoJICBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9yZXNvdXJjZS5jLAoJICBtZW1vcnkvcmVnaXN0cnkuYywgZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jLCBkbGxzL2tlcm5lbC9jb21tLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsCgkgIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsCgkgIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL250ZGxsL3NlYy5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9wb3dlcnBjLmMsIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTVNWQyBjb21wYXRpYmlsaXR5IGZpeGVzLgoKCSogZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3dpbnVzZXIuaCwKCSAgd2luZG93cy9pbnB1dC5jOgoJUGVyIE55c3Ryb20gPGNlbnRhdXJAbmV0bWFnaWMubmV0PgoJSW1wbGVtZW50ZWQgR2V0Q3Vyc29ySW5mby4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvYWR2YXBpMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvY29tY3RsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUva2VybmVsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbnRkbGwucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvcnBjcnQ0LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NoZWxsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2hsd2FwaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS91cmxtb24ucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvdXNlcjMyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVcGRhdGVkIHdpbmV0ZXN0J3MgUGVybCBtb2R1bGVzIHVzaW5nIHdpbmFwaV9leHRyYWN0LgoKCSogY29udHJvbHMvbWVudS5jOiBBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglNYWtlIHN1cmUgd2UgY2xlYXIgdGhlIG93bmluZyB3aW5kb3cncyBoTWVudSBpbiBEZXN0cm95TWVudSgpLgoKCSogZGxscy9nZGkvd2luMTZkcnYvZm9udC5jLCBkbGxzL2dkaS93aW4xNmRydi93aW4xNmRydi5oLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2JpdG1hcC5oLAoJICBpbmNsdWRlL2ZvbnQuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9nbG9iYWwuaCwgaW5jbHVkZS94MTFmb250LmgsCgkgIG1lbW9yeS9hdG9tLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZm9udC5jLAoJICBvYmplY3RzL3JlZ2lvbi5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9wYWludGluZy5jOgoJRml4ZWQgYSBudW1iZXIgb2YgZGxsIHNlcGFyYXRpb24gaXNzdWVzLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOiBSZW1vdmVkIHN5c3RlbSBzcGVjaWZpYyBHZXRUZW1wUGF0aEEgdGVzdC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFR3ZWFrIHBvc2l0aW9uIG9mIHN5c3RlbSBtZW51IHNtYWxsIGljb24uCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gaW1wbGVtZW50IENCRU5fRFJBR0JFR0lOCgktIHJlbW92ZSB1c2VsZXNzIEZJWE1FcwoKCSogZGVidWdnZXIvd2luZWRiZy5jOiBFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJyZWFraW5nIERMTCBsb2FkLgoKCSogZGVidWdnZXIvbXNjLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdHlwbyBpbiB0ZXN0LgoKCSogZGxscy9nZGkvbWZkcnYvYml0Ymx0LmM6IEh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUJpdEJsdCBhbmQgU3RyZXRjaEJsdCBnZW5lcmF0ZSBNRVRBX0RJQlNUUkVUQ0hCTFQgcmVjb3Jkcy4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3Qgc29tZSBvZiB0aGUgc3lzdGVtIG1ldHJpY3MgdG8gbW9yZSBjbG9zZWx5IG1hdGNoIFdpbmRvd3MKCXZhbHVlcy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJZiB3ZSBoYXZlIG5vIGRyb3Bkb3duIGhlaWdodCBnaXZlIG91cnNlbHZlcyBhIG1pbmltdW0gaGVpZ2h0IG9mIDUKCWl0ZW1zIG9yIG1heCBpdGVtcyAod2hpY2hldmVyIGlzIGxlc3MpLgoKCSogY29udHJvbHMvY29tYm8uYzoKCUZpeGVkIFdNX0dFVFRFWFQgaGFuZGxpbmcgdG8gYXZvaWQgc3RybmNweSBhbmQgcmV0dXJuIGNvcnJlY3QgbGVuZ3Rocy4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvdXNlci9tc2cxNi5jLAoJICBkbGxzL3VzZXIvcmVzb3VyY2UuYywgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luZGVmLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29udmVydCBIQUNDRUwgdG8gYSB2b2lkKi4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VzZXIuZXhlLnNwZWMsIGRsbHMvdXNlci91c2VyMTYuYywKCSAgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglJbXBsZW1lbnQgd3JhcHBlciBjYWxscyBmb3IgdGhlIDE2IGJpdCBHbG9iYWxBdG9tKiBmdW5jdGlvbnMuCgoyMDAyLTA4LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglBbGV4YW5kZXIgR290dHdhbGQgPEFsZXhhbmRlci5Hb3R0d2FsZEBpbmZvcm1hdGlrLnR1LWNoZW1uaXR6LmRlPgoJQXZvaWQgY3Jhc2ggaWYgbm8gZGVmYXVsdCBjdXBzIHByaW50ZXIgaXMgc2V0LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBBZGRlZCBhIGNvdXBsZSBvZiBsaXN0dmlldyBkZWZpbml0aW9ucy4KCgkqIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCUZpeGVkIGxpbmUgbnVtYmVycyBpbiBlcnJvciBtZXNzYWdlcyBhbmQgaW1wcm92ZWQgcmVkZWZpbml0aW9uIGVycm9yCgkoYmFzZWQgb24gYSBwYXRjaCBieSBKb24gR3JpZmZpdGhzKS4KCgkqIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvd2lkbC5jLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dwcC93cHAuYywgdG9vbHMvd3BwL3dwcC5oLCB0b29scy93cmMvd3JjLmM6CglUcnkgdG8gZGVyaXZlIHRlbXAgZmlsZSBuYW1lcyBmcm9tIG91dHB1dCBmaWxlIG5hbWVzIGZvciBiZXR0ZXIKCXBvcnRhYmlsaXR5LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIHRoZSBpY29uIHNwYWNpbmcgd2hlbiBzZXR0aW5nIHRoZSBpbWFnZSBsaXN0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2luZG93cyBleHBlY3RzIHRoZSBlZGl0IHdpbmRvdyB0byBoYW5nIGFyb3VuZCBhbmQgYmUgdmFsaWQuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL3gxMWRydi9ldmVudC5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvY2xpcGJvYXJkLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CgktIEFkZCBhIG1heCB3YWl0IHRpbWUgZm9yIHNlbGVjdGlvbiBub3RpZmllcy4KCS0gQWRkIG5ldyBmdW5jdGlvbiB0byB0aGUgeDExZHJ2IHRvIGdldCBjbGlwYm9hcmQgZm9ybWF0IG5hbWVzIG9mCgkgIGV4dGVybmFsbHkgcmVnaXN0ZXJlZCBmb3JtYXRzLgoJLSBXaGVuIGEgY2xpcGJvYXJkIGZvcm1hdCBpcyByZWdpc3RlcmVkIHdlIHNob3VsZCBwYXNzIHRoZSBnbG9iYWwgYXRvbQoJICB2YWx1ZSBhcyB0aGUgZm9ybWF0IGlkZW50aWZpZXIuCgktIENsaXBib2FyZCBmb3JtYXQgbmFtZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBjYXNlIGluc2Vuc2l0aXZlLgoJLSBTZXJpYWxpemUgbWV0YWZpbGUgYml0cyB3aGVuIHJlcXVlc3RlZCB2aWEgYSBjbGlwYm9hcmQgc2VsZWN0aW9uLgoJLSBSZXR1cm4gZm9ybWF0IGlkcyBmb3IgbmF0aXZlIGZvcm1hdHMgd2hlbiBtYXBwaW5nIGZyb20gcHJvcGVydGllcy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGZpbGVzL3Byb2ZpbGUuYywKCSAgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9jb25maWcuYywgc2NoZWR1bGVyL2NsaWVudC5jLAoJICBzZXJ2ZXIvcmVnaXN0cnkuYzoKCUFkZGVkIHdpbmVfZ2V0X3VzZXJfbmFtZSBmdW5jdGlvbiBhbmQgZ290IHJpZCBvZiBzb21lIG9mIHRoZSBnZXRwd3VpZAoJcG9ydGFiaWxpdHkgc3R1ZmYuCglNb3JlIHBvcnRhYmxlIHByaW50ZiBmb3JtYXRzIGZvciA2NC1iaXQgdHlwZXMuCgoJKiBkbGxzL250ZGxsL3RpbWUuYywgd2luMzIvbmV3Zm5zLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTVNWQyBsb25nIGxvbmcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCUltcGxlbWVudCBDQkVTX0VYX1BBVEhXT1JEQlJFQUtQUk9DIGZvciB0aGUgQ29tYm9FeCBjb250cm9sLgoKCSogZGxscy94MTFkcnYva2V5Ym9hcmQuYzogSGxlYiBWYWxvc2thIDxlbF9nbG9idXNAdHV0LmJ5PgoJQWRkZWQgQmVsYXJ1c2lhbiBrZXlib2FyZC4KCgkqIGNvbnRyb2xzL2VkaXQuYzogWm9sdGFuIE5hZ3kgPG5hZ3l6b2xpQG5ldGVsZWsuaHU+CglNb3ZlIGNhcmV0IHdoZW4gc2VsZWN0aW5nIGEgdGV4dCBhcmVhIHdpdGggdGhlIG1vdXNlLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRm9yd2FyZCBzaGx3YXBpLjM5MyB0byBDcmVhdGVEaWFsb2dJbmRpcmVjdFBhcmFtVy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9uZS9zZWdtZW50LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgY2FjaGUgZmlsZSBoYW5kbGVzIGZvciBORSBleGVjdXRhYmxlIG1vZHVsZXMgc28gdGhhdCB3ZSBkb24ndAoJbG9jayB0aGUgQ0RST00uCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmMsIGRsbHMva2VybmVsL3Rlc3RzL2RyaXZlLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgYnVuY2ggb2YgbmV3IHJlZ3Jlc3Npb24gdGVzdHMuCgoJKiBjb25maWd1cmUuYWMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL3Rlc3RzL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvdGVzdHMvc2hsZmlsZW9wLmMsIGNvbmZpZ3VyZToKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJU0hGaWxlT3BlcmF0aW9uOiBJbXBsZW1lbnRlZCB0aGUgRk9fUkVOQU1FIGFjdGlvbiwgZml4ZWQgRk9fREVMRVRFLAoJaW1wbGVtZW50ZWQgdW5pdCB0ZXN0cyBmb3IgdGhlc2UgdHdvIGFjdGlvbnMuCgoJKiB3aW4zMi9kZXZpY2UuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgbW9zdCBvZiB0aGUgZmlsZSBBUElzIHRvIFVuaWNvZGUuCgoJKiBmaWxlcy9maWxlLmM6CglGaXhlZCBwZXJtaXNzaW9uIGNoZWNrIHdoZW4gcmVuYW1pbmcgYSBkaXJlY3RvcnkgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCUFuZHJpeSBQYWxhbWFyY2h1aykuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRHVtcCBTZXRXaW5kb3dQb3MgZmxhZ3MuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywKCSAgZmlsZXMvcHJvZmlsZS5jLCBmaWxlcy9zbWIuYywgZmlsZXMvc21iLmgsIGluY2x1ZGUvZHJpdmUuaCwKCSAgaW5jbHVkZS9maWxlLmgsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBtaXNjL3JlZ2lzdHJ5LmMsCgkgIG1zZG9zL2Rvc2NvbmYuYywgbXNkb3MvaW50MTEuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW9wb3J0cy5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL250ZGxsL2ZpbGUuYywKCSAgZGxscy93aW5lZG9zL2ludDIxLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBtb3N0IG9mIHRoZSBmaWxlIEFQSXMgdG8gVW5pY29kZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX1BsLnJjLCBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglKYWNlayBCYXRvciA8amJhdG9yQG1hbi5wb3puYW4ucGw+CglBZGRlZCBQb2xpc2ggdHJhbnNsYXRpb25zLgoKCSogbG9hZGVyL21vZHVsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGJhaWthbC5ydT4KCVJlbGF4IGEgYml0IFBFIGNvbnNpc3RlbmN5IGNoZWNrcy4KCVJldHVybiBCSU5BUllfRE9TIHR5cGUgaWYgZXh0ZW5kZWQgaGVhZGVyIHdhcyBub3QgcmVjb2duaXplZC4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOiBCaWxsIE1lZGxhbmQgPGJpbGxtZWRsYW5kQGxvb2suY2E+CglTZXRXaW5kb3dQb3Mgc2VuZHMgV01fV0lORE9XUE9TQ0hBTkdFRCBldmVuIGlmIGl0IGhhcyBiZWVuIHRvbGQgbm90IHRvCglzZW5kIFdNX1dJTkRPV1BPU0NIQU5HSU5HLgoKCSogaW5jbHVkZS9iYXNldHNkLmg6IFN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUZpeCBmb3IgbG90cyBvZiB3YXJuaW5ncyB3aGVuIGJ1aWxkaW5nIG9uIE1pbmd3MzIuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJQ29ycmVjdCB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgZm9yIFN0clJTdHJJQS9XLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9zaWduYWxfcG93ZXJwYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJSW1wbGVtZW50ZWQgc2lnbmFsIGhhbmRsaW5nIGZvciBQUEMuCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvbXN2Y21ha2VyOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyB3b3Jrc3BhY2UgYW5kIHByb2plY3QgZmlsZSBtYWtlci4KCjIwMDItMDgtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnQxYS5jLCBtc2Rvcy9pbnQyMS5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCB3aW4zMi90aW1lLmMsCgkgIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC90aW1lLmMsCgkgIGRsbHMvbXN2Y3J0L3RpbWUuYywgZGxscy9udGRsbC9jZHJvbS5jLCBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywKCSAgZGxscy9udGRsbC9lcnJvci5jLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGZpbGVzL2ZpbGUuYywKCSAgZmlsZXMvc21iLmMsIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBtaXNjL21haW4uYywKCSAgbWlzYy92ZXJzaW9uLmMsIGNvbmZpZ3VyZToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTVNWQyBjb21wYXRpYmlsaXR5IGZpeGVzLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9kaWFsb2cuYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUGFydGlhbCBmaXggZm9yIGJyb3dzZSBkaWFsb2cgaW4gUHJvZ3JhbSBNYW5hZ2VyLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJVHdlYWtzIHRvIGltcHJvdmUgcGxheWJhY2sgcGVyZm9ybWFuY2UgYW5kIHJlZHVjZSBzb3VuZCBnbGl0Y2hlczoKCS0gd29kR2V0UG9zaXRpb24gZG9lcyBub3Qgc2VuZCBhbiB1cGRhdGUgbWVzc2FnZSB0byB0aGUgcGxheWVyIHRocmVhZDsKCXRoaXMgcmVkdWNlcyB0aGUgYWNjdXJhY3kgb2YgdGhlIHJlYWRvdXQgZnJvbSBieXRlLWFjY3VyYWN5IHRvIG5lYXIKCWZyYWdtZW50LWFjY3VyYWN5LCBidXQgd2Ugc2F2ZSAyLTQgY29udGV4dCBzd2l0Y2hlcyBhbmQga2VybmVsCglzY2hlZHVsaW5nIHBlbmFsdGllcy4KCS0gaWYgRmVlZERTUCBydW5zIG91dCBvZiBkYXRhLCBkbyBub3QgZmx1c2ggb3V0cHV0IGJ1ZmZlcnMgYmVmb3JlCglub3RpZmljYXRpb25zIGFyZSBzZW50IGFuZCBnaXZlbiB0aGUgY2hhbmNlIHRvIHByb3ZpZGUgbW9yZSBzb3VuZCBkYXRhLgoJRG8gbm90IGZsdXNoIGJlZm9yZSB3ZSdyZSBkb3duIHRvIHRoZSBsYXN0IGZyYWdtZW50LgoJLSBtZXNzYWdlcyB0byB0aGUgcGxheWVyIHRocmVhZCBhcmUgc2lnbmFsZWQgdXNpbmcgVW5peCBwaXBlcyBpbnN0ZWFkCglvZiBXaW4zMiBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcywgdG8gYXZvaWQgaGF2aW5nIHRoZSBwbGF5ZXIgdGhyZWFkCgl3YWl0IGZvciB0aGUgd2luZXNlcnZlciAoYW5kIGNvbnRleHQgc3dpdGNoZXMgZnJvbS90byBpdCkgYmVmb3JlIHRoZQoJaXQgY2FuIGZlZWQgbW9yZSBkYXRhIHRvIHRoZSBzb3VuZCBjYXJkLgoJLSByaW5nIGJ1ZmZlciBzaXplIGlzIGluY3JlYXNlZCBmcm9tIDMwIHRvIDE5MiB0byBzdXBwb3J0IHNvbWUgZ2FtZXMKCXRoYXQgZmlyZXMgMTI4IG1lc3NhZ2VzIGF0IG9uY2UgdG8gZGV0ZXJtaW5lIERNQSBidWZmZXIgc2l6ZS4KCgkqIGRlYnVnZ2VyL2luZm8uYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkICd3YXRjaCcgY29tbWFuZCB0byB0aGUgd2luZWRiZyBoZWxwIGNvbW1hbmQuCgoJKiB0b29scy93aW5lZHVtcC9tYWluLmMsIHRvb2xzL3dpbmVkdW1wL21pc2MuYywgdG9vbHMvd2luZWR1bXAvcGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBiYWlrYWwucnU+CglNYWtlIHdpbmVkdW1wIGNvbXBpbGFibGUgYnkgTVNWQy4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgcHJvY2Vzc2luZyBvZiBQU01fU0VUQ1VSU0VMSUQgbWVzc2FnZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBpbXBsZW1lbnQgQ0JFU19FWF9DQVNFU0VOU0lUSVZFCgktIGZpeCBzZXZlcmUgYnVnIGluIENCX0ZJTkRFWEFDVFNUUklORwoJLSBzbWFsbCBjbGVhbnVwcwoKCSogZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlbzE2LmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglNb3ZlZCBtb3N0IG9mIHRoZSAxNi1iaXQgZnVuY3Rpb25zIGluIGRsbHMvbXN2aWRlbyB0byBtc3ZpZGVvMTYuYy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBpbmNsdWRlL3dpbm50Lmg6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVNldFRva2VuSW5mb3JtYXRpb24gc3R1YiBpbXBsZW1lbnRhdGlvbiwgYSBmZXcgb3RoZXIgc21hbGwgY2hhbmdlcy4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnQgVXJsSGFzaFcuCgoyMDAyLTA4LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS94MTFkcnYuaCwgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJRG9uJ3QgbWFwL3VubWFwIGEgdG9wLWxldmVsIHdpbmRvdyB3aGVuIFdTX1ZJU0lCTEUgY2hhbmdlcywgb25seSB3aGVuCgl3ZSBleHBsaWNpdGx5IGRvIGEgU2V0V2luZG93UG9zKFNXUF9TSE9XV0lORE9XL0hJREVXSU5ET1cpLgoJVXBkYXRlIHRoZSBXTSBoaW50cyB3aGVuIG1hcHBpbmcgYSB3aW5kb3cgaW4gY2FzZSB0aGUgc3R5bGUgaGFzCgljaGFuZ2VkIGluIHRoZSBtZWFudGltZS4KCgkqIG9iamVjdHMvZm9udC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIE5VTEwgYnVmZmVyIGluIEdldE9iamVjdC4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvdGVzdHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rlc3RzL2Zvcm1hdF9tc2cuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCByZWdyZXNzaW9uIHRlc3QgZm9yIEZvcm1hdE1lc3NhZ2UuCglGaXhlZCBjci9sZiBoYW5kbGluZy4KCVByZXZlbnQgYW4gaW5maW5pdGUgbG9vcCB3aGVuIGFuIGludmFsaWQgZm9ybWF0ICglUykgaXMgcGFzc2VkIGFzIGEKCWZvcm1hdCBzdHJpbmcgdG8gdnNucHJpbnRmLgoJRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgVyB2ZXJzaW9uLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCURvIG5vdCBlbWl0IC5zdHJpbmcgaW50byB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLCBidXQgaW50byB0aGUgLmRhdGEKCXNlY3Rpb24gKHRvIGF2b2lkIGFsaWdubWVudCBhc3NlcnRpb25zKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzogRHVzYW4gTGFja28gPGRsYWNrb0Bjb2Rld2VhdmVycy5jb20+CglGaXggZXh0cmFjdGlvbiBvZiBpY29ucyBmcm9tIElDTyBmaWxlcy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHNldCBFTl9DSEFOR0UgYXQgY3JlYXRpb24gdGltZS4KCgkqIG1lbW9yeS9lbnZpcm9uLmMsIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90ZXN0cy9lbnZpcm9uLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdW5pdCB0ZXN0IGZvciBlbnZpcm9ubWVudCBmdW5jdGlvbnMgYW5kIGZpeGVkIHNvbWUgYnVncy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvd2luMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBUEkgZmlsZXMgdXBkYXRlLgoKCSogbGlicmFyeS9wb3J0LmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUNsZWFuZWQgdXAgaW50ZXJsb2NraW5nIGZ1bmNzIGZvciBQUEMsIGZpeGVkIHJldHVybiB2YWx1ZSBvZgoJaW50ZXJsb2NrZWRfYWRkLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglJbXBsZW1lbnRlZCBkZWxheWVkIGltcG9ydCBhc3NlbWJsZXIgdGh1bmtzIGZvciBQUEMuCgoJKiBpbmNsdWRlL3dpbm50LmgsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglVc2UgcjIgaW5zdGVhZCBvZiByMTMgZm9yIFRMUywgc2luY2UgcjEzIGlzIHVzZWQgaW4gdGhlIEVMRjMyIFBQQwoJQUJJLgoKMjAwMi0wOC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL2dkYnByb3h5LmM6IFJvYmVydCBMdW5ub24gPGJvYkB5YXJyYWJlZS5uZXQuYXU+CglSZW1vdmVkIHVzZSBvZiBzYWRkciBhcyBhIHZhcmlhYmxlIG5hbWUgd2hpY2ggY29uZmxpY3RzIHdpdGggdXNhZ2UgaW4KCW5ldGluZXQvaW4uaC4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgaW5jbHVkZS9zaGx3YXBpLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4IGV4aXN0aW5nIHN0cmluZyBmdW5jdGlvbnMsIGltcGxlbWVudCBhIGJ1bmNoIG9mIG5ldyBvbmVzLgoKCSogZGxscy9zaGx3YXBpL3RocmVhZC5jOiBKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQ3JlYXRlIHNlY3VyaXR5IGF0dHJpYnV0ZXMgd2hlbiBydW5uaW5nIGFzIE5UIG9yIGxhdGVyLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZyZWUgY29tY3RsMzIgb24gdW5sb2FkLgoKMjAwMi0wOC0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmVkZWZhdWx0LnJlZzogTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUga2V5cyBmb3Igb2xlMzIgaW50ZXJmYWNlcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEZXRlY3QgdGhlIEZyZWVUeXBlIHZlcnNpb24gYW5kIGFkYXB0IHRoZSBzZm50IG9mZnNldCBhY2NvcmRpbmdseS4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2RjLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L21hcHBpbmcuYywgZGxscy9nZGkvbWZkcnYvbWFwcGluZy5jLAoJICBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oLCBncmFwaGljcy9tYXBwaW5nLmMsIGluY2x1ZGUvZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglNYXBwaW5nIG1vZGUgZnVuY3Rpb25zIHNob3VsZCBjaGFuZ2UgZGMgc2V0dGluZ3Mgd2hlbiBkYyBpcyBhbiBlbmhtZi4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOiBNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBXaW5lIGludGVybmFsIGZsYWdzLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc2FuaXR5IGNoZWNrcyBvbiBFTVJDUkVBVEVESUJQQVRURVJOQlJVU0hQVCB2YWx1ZXMuCglGaXggYSBtZW1vcnkgbGVhay4KCgkqIHByb2dyYW1zL3dpbmhlbHAvaGxwMnNnbWwuYzoKCUFkZGVkIEdldFByb2Nlc3NIZWFwIGRlZmluaXRpb24gaW4gY2FzZSBpdCdzIG5vdCBpbmxpbmVkLgoKCSogdG9vbHMvZm50MmJkZi5jLCB0b29scy9tYWtlZGVwLmMsIHRvb2xzL3dpZGwvaGVhZGVyLmMsCgkgIHRvb2xzL3dpZGwvcGFyc2VyLmwsIHRvb2xzL3dpZGwvcHJveHkuYywgdG9vbHMvd2lkbC93aWRsLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLCB0b29scy93aW5lZHVtcC9kZWJ1Zy5jLAoJICB0b29scy93aW5lZHVtcC9wZS5jLCB0b29scy93cHAvcHJlcHJvYy5jLCB0b29scy93cmMvd3JjLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAYmFpa2FsLnJ1PgoJSW5jbHVkZSBwcm90ZWN0aW9uIGZvciA8dW5pc3RkLmg+LCA8c3lzL3R5cGVzLmg+IGFuZCA8c3lzL3N0YXQuaD4uCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0VuLnJjOiBTaGFjaGFyIFNoZW1lc2ggPHN1bkBjb25zdW1lci5vcmcuaWw+CglDaGFuZ2Ugc3VibGFuZ3VhZ2UgZnJvbSAiTkVVVFJBTCIgdG8gIkRFRkFVTFQiLCBzbyBMb2FkUmVzb3VyY2Ugd2lsbAoJYmUgYWJsZSB0byBmaW5kIGl0IGlmIG5vIG90aGVyIGxhbmd1YWdlIGlzIGEgYmV0dGVyIG1hdGNoLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBsZWF2ZSB1bmluaXRpYWxpemVkIHBvaW50ZXIuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6IEh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGFuIGFwcCB0byBvcGVuIHRoZSBmaWxlIG9mIGEgZGlzayBiYXNlZCBlbWYgZm9yIHJlYWRpbmcgd2hpbGUKCXRoZSBoZW1mIGlzIHN0aWxsIG9wZW4uCglJbXBsZW1lbnQgU2V0V2luTWV0YUZpbGVCaXRzIGluIGEgbW9yZSBzYW5lIGZhc2hpb24uCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLCBkbGxzL2dkaS9lbmhtZmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgc2ltcGxlIEV4dFRleHRPdXQgZm9yIGVuaG1mZHJ2LgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBsaWJyYXJ5L2RlYnVnLmMsCgkgIGxpYnJhcnkvbG9hZGVyLmMsIGxpYnJhcnkvcG9ydC5jLCBtZW1vcnkvaW5zdHIuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTVNWQyBjb21wYXRpYmlsaXR5IGZpeGVzLgoKCSogZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZjcnQvZmlsZS5jLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvc2NhbmYuYywgZGxscy9tc3ZjcnQvc2NhbmYuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RkaW8uaDoKCURhbmllbCBHdWRiamFydHNzb24gPGRmZ0BkZWNvZGUuaXM+CglDb21iaW5lZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYWxsIHRoZSBzY2FuZidzIGluIGEgc2luZ2xlIHBsYWNlLgoJQWRkZWQgaW1wbGVtZW50YXRpb25zIG9mIGZ3c2NhbmYsIHN3c2NhbmYsIHdzY2FuZiBhbmQgc3NjYW5mLgoJQ29ycmVjdGVkIHRoZSBkZWNsYXJhdGlvbiBvZiBzd3NjYW5mLgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGwsIGgsIEwgYW5kIHcgcHJlZml4ZXMuCglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYywgQywgcywgUyBhbmQgbiB0eXBlcy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NvbnRleHRfcG93ZXJwYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJSW1wbGVtZW50ZWQgc2VydmVyIGNvbnRleHQvcHRyYWNlIGhhbmRsaW5nIGZvciBMaW51eC9Qb3dlclBDLgoKCSogbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgbXNkb3MvaW9wb3J0cy5jLCBtc2Rvcy92eGQuYywKCSAgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNjaGVkdWxlci9wdGhyZWFkLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsCgkgIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2RldmljZS5jLAoJICB3aW4zMi9pbml0LmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL25ld2Zucy5jLCB3aW4zMi90aW1lLmMsCgkgIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbmhlbHAuYywKCSAgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGZpbGVzL2NoYW5nZS5jLAoJICBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywKCSAgZmlsZXMvcHJvZmlsZS5jLCBmaWxlcy9zbWIuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsCgkgIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLAoJICBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Jlc291cmNlLmMsCgkgIGxvYWRlci90YXNrLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1lbW9yeS92aXJ0dWFsLmMsCgkgIG1pc2MvbWFpbi5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1zZG9zL2Rvc2NvbmYuYywgbXNkb3MvZHBtaS5jLAoJICBtc2Rvcy9pbnQxMy5jLCBtc2Rvcy9pbnQxYS5jLCBtc2Rvcy9pbnQyMS5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgZGxscy93aW5lZG9zL2ludDE2LmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3htcy5jLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2lubW0vam95c3RpY2suYywKCSAgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL3RpbWUuYywKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmMsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbW1hdXguYywgZGxscy93aW5zb2NrL2FzeW5jLmMsCgkgIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL21zdmNydC9maWxlLmMsCgkgIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuYywgZGxscy9udGRsbC9jZHJvbS5jLAoJICBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvb20uYywKCSAgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsCgkgIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvdHdhaW4vZHNfY3RybC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLAoJICBkbGxzL3VzZXIvbmV0d29yay5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy93aW4zMnMvdzMyc3lzLmMsCgkgIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLAoJICBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywKCSAgZGxscy9kc291bmQvYnVmZmVyLmMsIGRsbHMvZHNvdW5kL2NhcHR1cmUuYywKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9kc291bmQvbWl4ZXIuYywKCSAgZGxscy9kc291bmQvcHJpbWFyeS5jLCBkbGxzL2Rzb3VuZC9wcm9wc2V0LmMsIGRsbHMvZHNvdW5kL3NvdW5kM2QuYywKCSAgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9nZGkvd2luMTZkcnYvcHJ0ZHJ2LmMsCgkgIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9jb25zb2xlLmMsCgkgIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdGltZS5jLAoJICBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywKCSAgZGxscy9tcHIvd25ldC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBpbmNsdWRlIHByb3RlY3Rpb24gZm9yIHVuaXN0ZC5oIGFuZCBzeXMvdGltZS5oLgoKCSogZGxscy9nZGkvZW5obWZkcnYvb2JqZWN0cy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJU2V0IGNiQml0cyBpbiB0aGUgRU1SQ1JFQVRFRElCUEFUVEVSTkJSVVNIUFQgc3RydWN0dXJlIHdoZW4gd3JpdGluZyBhbgoJRU1GIHJlY29yZC4KCgkqIGRsbHMvZ2RpL21mZHJ2L3RleHQuYzogSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IGZvciBtZXRhZmlsZSBFeHRUZXh0T3V0IHRoYXQgb25seSBpbmNsdWRlcyB0aGUgcmVjdGFuZ2xlIGlmIGVpdGhlcgoJRVRPX0NMSVBQRUQgb3IgRVRPX09QQVFVRSBpcyBzZXQuCgoJKiBkbGxzL2dkaS9lbmhtZmRydi9kYy5jLCBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBhIGZldyBkZXZpY2UgY2Fwcy4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6IEh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBmb3Igc2lnbiBvZiBmb250IGhlaWdodCBpbiBub24gTU1fVEVYVCBtb2RlLgoJRml4IEdHT19OQVRJVkUgYWdhaW4uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL2dkaS9nZGkxNi5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IEFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJRG8gbm90IHNldCB3aW5kb3cgcG9zaXRpb24gb24gQUJNX1dJTkRPV1BPU0NIQU5HRUQuCgoyMDAyLTA4LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3F1ZXVlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3VzZXIuaDoKCVNpZ25hbCBhbmQgcmVsZWFzZSB0aGUgaWRsZSBldmVudCB3aGVuIHRoZSBwcm9jZXNzIG1haW4gdGhyZWFkIGV4aXRzLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvbWVzc2FnZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVZlcnkgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBCcm9hZGNhc3RTeXN0ZW1NZXNzYWdlQS4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBHcmVlayBrZXlib2FyZCBsYXlvdXQuCglVcGRhdGVkIEJyYXppbGlhbiBBQk5ULTIga2V5Ym9hcmQgbGF5b3V0LgoKCSogZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jOiBBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZXMgdG8gYWxsb3cgSUUgdG8gZG8gbG9jYWwgZmlsZSBsb2FkaW5nIGFuZCBzb21lIGxpbWl0ZWQgYnJvd3NpbmcuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglEb24ndCB0cnkgcmVhZGluZyBhIFBJREwgaW4gSVBlcnNpc3RTdHJlYW0tPkxvYWQgaWYgaXRzIHNpemUgaXMgMC4KCUNoZWNrIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCB3YXMgY29ycmVjdC4KCVNtYWxsIHJlb3JnYW5pemF0aW9uIG9mIGVycm9yIGhhbmRsaW5nLgoKCSogZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRG8gbm90IG1vZGlmeSBwb2ludGVycyBpbiB0aGUgT1BFTkZJTEVOQU1FIHN0cnVjdHVyZSBwYXNzZWQgdG8KCSAgR2V0RmlsZURpYWxvZzk1QS9XLgoJLSBVc2UgVW5pY29kZSBhcyBkZWZhdWx0IGZvciBzdHJpbmdzIGZyb20gdGhlIE9QRU5GSUxFTkFNRSBzdHJ1Y3R1cmVzLgoJLSBGaWxsIG91dCB0aGUgT1BFTkZJTEVOQU1FIHN0cnVjdHVyZSBiZWZvcmUgc2VuZGluZyB0aGUgRklMRU9LCgkgIG5vdGlmaWNhdGlvbi4KCS0gU2VuZCBhIENETl9GT0xERVJDSEFOR0Ugbm90aWZpY2F0aW9uIG9uIE9QRU5GSUxFTkFNRSBkaWFsb2cgaW5pdC4KCS0gRml4IG1pc2NhbGN1bGF0aW9uIG9mIHRoZSBzaXplIG9mIEV4cGxvcmVyIHN0eWxlIGZpbGUgZGlhbG9nIGJveGVzCgkgIHdpdGggdGVtcGxhdGVzLgoJLSBSZW1vdmUgcmVkdW5kYW50IE1hcEhNb2R1bGVMUyBhbmQgTWFwSE1vZHVsZVNMIGNhbGxzIHRoYXQgYWxzbyBjYXVzZQoJICBoSW5zdGFuY2UgdG8gYmUgdHJhc2hlZCB3aGVuIGl0IGhvbGRzIGEgdGVtcGxhdGUgcG9pbnRlciBpbnN0ZWFkIG9mIGEKCSAgcmVhbCBoSW5zdGFuY2UgKHdoZW4gT0ZOX0VOQUJMRVRFTVBMQVRFUE9JTlRFUiBpcyBzcGVjaWZpZWQpLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRXJhc2UgYmFja2dyb3VuZCB3aGVuIGludmFsaWRhdGluZyB0aGUgc2VsZWN0ZWQgdGV4dC4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IGZvciBtZXRhZmlsZSBFeHRUZXh0T3V0IHRoYXQgb25seSBpbmNsdWRlcyB0aGUgcmVjdGFuZ2xlIGlmIGVpdGhlcgoJRVRPX0NMSVBQRUQgb3IgRVRPX09QQVFVRSBpcyBzZXQuCglTbGlnaHRseSBsZXNzIG9mIGEgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IgR2V0V2luTWV0YUZpbGVCaXRzLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9tb2R1bGUuaCwKCSAgbG9hZGVyL2xvYWRvcmRlci5jOgoJRm9yY2UgbG9hZG9yZGVyIG9mIDE2LWJpdCBkbGxzIHRvIGJ1aWx0aW4gaWYgdGhlaXIgMzItYml0IGNvdW50ZXJwYXJ0CgloYXMgYWxyZWFkeSBiZWVuIGxvYWRlZCBhcyBidWlsdGluLgoKCSogc2VydmVyL21haW4uYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuYywKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbGVjdC5jOgoJQWRkZWQgLWsgb3B0aW9uIHRvIGtpbGwgYW4gZXhpc3Rpbmcgd2luZXNlcnZlci4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEJyb2FkY2FzdFN5c3RlbU1lc3NhZ2VBLgoKCSogbWVtb3J5L3N0cmluZy5jOiBsc3RyY3B5bltBV10gY291bnQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgdW5zaWduZWQuCgoJKiBtaXNjL2NwdS5jOiBGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlIHRoZSBkZWZhdWx0IENQVSB0eXBlIHNvIHRoYXQgUXVpY2tUaW1lIHdpbGwgYWxzbyBydW4gb24KCXBsYXRmb3JtcyB3aGVyZSB0aGUgY3B1IGRldGVjdGlvbiBjb2RlIGRvZXMgbm90IHdvcmsuCgoJKiBvYmplY3RzL2ZvbnQuYzogSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJVHJhbnNsYXRlIE91dGxpbmVUZXh0TWV0cmljcyB0byBsb2dpY2FsIGNvLW9yZHMuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRFdPUkQgYXQgb2Zmc2V0IDB4NDAgaW4gdGhlIGhlYWRlciBpcyB0aGUgbnVtYmVyIG9mIGJpZyBibG9ja3MgaW4gdGhlCglzbWFsbCBibG9jayBkZXBvdCBjaGFpbi4KCUJldHRlciBmYWlsdXJlIGhhbmRsaW5nLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU2V0IHVwIGV4Y2VwdGlvbiBoYW5kbGVyIGFyb3VuZCBXRVAgY2FsbC4KCgkqIGRsbHMveDExZHJ2L21vdXNlLmM6CglEb24ndCB1cGRhdGUgdGhlIG1vdXNlIGJ1dHRvbiBzdGF0dXMgaW4gdXBkYXRlX2tleV9zdGF0ZSwgbGVhdmUgdGhhdAoJdG8gdGhlIGlucHV0IHByb2Nlc3NpbmcuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IGNvbWN0bDMyLjQxNyBhbmQgc2hsd2FwaS4yOTkuIFRoaXMgYXZvaWRzIGNyYXNoIGluIElFJ3MKCUhpc3RvcnkuCgoJKiBjb250cm9scy9lZGl0LmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglTdXBwb3J0IGxhcmdlIGVkaXQgYnVmZmVycyBmb3IgcmljaGVkaXQgY29udHJvbC4KCgkqIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL2NvbXBvYmouYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBHZXRDbGFzc0ZpbGUgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFN3aXRjaFRvVGhyZWFkLgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIG1vcmUgc3R1YnMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJSW1hZ2VMaXN0X1NldEltYWdlQ291bnQgc2hvdWxkIHNldCBuQ3VySW1hZ2UgKHRoZSBudW1iZXIgb2YKCWltYWdlcyBpbiB0aGUgbGlzdCkgdG8gdGhlIHZhbHVlIHNwZWNpZmllZCwgYW5kIGV4cGVjdCB0aGF0CglJbWFnZUxpc3RfUmVwbGFjZUltYWdlIGlzIGNhbGxlZCB0byBzZXQgdGhlIG5ldyBpbWFnZXMuCgoJKiB3aW5kb3dzL2lucHV0LmMsIGluY2x1ZGUvd2luZGVmLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29udmVydCBIS0wgdG8gYSB2b2lkKi4KCgkqIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsCgkgIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsCgkgIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYywKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2JpZGkxNi5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL2dkaS5leGUuc3BlYywKCSAgZGxscy9nZGkvZ2RpMTYuYywgZGxscy9nZGkvbWZkcnYvYml0Ymx0LmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvbWZkcnYvb2JqZWN0cy5jLCBkbGxzL2dkaS9wcmludGRydi5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9mb250LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tYXBwaW5nLmMsCgkgIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgaW5jbHVkZS93aW5lL3dpbmdkaTE2Lmg6CglNb3ZlZCBhIGxhcmdlIG51bWJlciBvZiAxNi1iaXQgZnVuY3Rpb25zIHRvIGEgc2VwYXJhdGUgZ2RpMTYuYyBmaWxlLgoKMjAwMi0wOC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUF2b2lkIHRyb3VibGUgaW4gV01fR0VUVEVYVCBpZiBzcGVjaWZpZWQgbGVuZ3RoIGlzIGxhcmdlciB0aGFuIHRoZQoJYnVmZmVyIChmb3VuZCBieSBDYXJsIFNvcGNoYWspLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOiBGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGNvbW1hbmQtbGluZSBwYXJzaW5nIGZvciBXaW5lbGliIGFwcGxpY2F0aW9ucy4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzogSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJR2V0IHRoZSBpbml0aWFsIHBhcGVyIHNpemUgZnJvbSB0aGUgbG9jYWxlIGluZm8uCgoJKiBvYmplY3RzL2dkaW9iai5jOiBIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEZWxldGVPYmplY3QoKSBjYW4gZmFpbCBpZiB0aGUgb2JqZWN0IGlzIGEgREMsIGhvd2V2ZXIgd2UndmUgYWxyZWFkeQoJY2FsbGVkIEdESV9SZWxlYXNlT2JqKCkgc28gZG9uJ3QgY2FsbCBpdCBhZ2Fpbi4KCgkqIG1lbW9yeS9jb2RlcGFnZS5jLCBtZW1vcnkvc3RyaW5nLmMsIG9sZS9vbGUybmxzLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMva2VybmVsL2xvY2FsZS5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBpbmNsdWRlL3RocmVhZC5oLAoJICBpbmNsdWRlL3dpbm5scy5oOgoJRml4ZWQgR2V0TG9jYWxlSW5mb1cgdG8gaGFuZGxlIFVuaWNvZGUgcHJvcGVybHkgYW5kIGNvbXBsZXRlZAoJaW1wbGVtZW50YXRpb24uCglVcGRhdGUgd2luLmluaSBhbmQgcmVnaXN0cnkgb24gc3RhcnR1cCB3aGVuIGxhbmd1YWdlIGNoYW5nZWQuCglNb3JlIGxvZ2ljYWwgcHJpb3JpdHkgb3JkZXIgZm9yIGxvY2FsZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCglJbXBsZW1lbnRlZCBTZXRMb2NhbGVJbmZvVy4KCU1vdmVkIHNvbWUgbG9jYWxlIGZ1bmN0aW9ucyB0byBrZXJuZWwzMi5kbGwuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jOiBUcmFwIGV4Y2VwdGlvbnMgaW4gUnRsSW1hZ2VOdEhlYWRlci4KCgkqIGNvbmZpZ3VyZS5hYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bGJpdG1hcC5jLAoJICBkbGxzL250ZGxsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvdGVzdHMvcnRsYml0bWFwLmMsIGluY2x1ZGUvbnRkZGsuaCwgY29uZmlndXJlOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBhbmQgdGVzdCBydGwgYml0bWFwIGZ1bmN0aW9ucy4KCUFkZCBhIGNvdXBsZSBvZiBvdGhlciBtaXNjIHJ0bCBmdW5jdGlvbnMuCgoJKiBkbGxzL2tlcm5lbC9sb2NhbGVfcmMucmMsIGRsbHMva2VybmVsL25scy8qLm5sczoKCVVwZGF0ZWQgYWxsIGxvY2FsZSB0YWJsZXMgdG8gbWF0Y2ggZXhhY3RseSB3aGF0IFdpbmRvd3MgcmV0dXJucy4KCVJlbmFtZWQgYSBmZXcgZmlsZXMgdG8gZm9sbG93IHRoZSBwcm9wZXIgbmFtaW5nIGNvbnZlbnRpb25zLgoJQWRkZWQgYSBudW1iZXIgb2YgbmV3IGxvY2FsZXMuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19aaC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfWmgucmMsCgkgIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1poLnJjLCBpbmNsdWRlL3dpbm50LmgsIHRvb2xzL3dwcC9wcHkueSwKCSAgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwKCSAgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy91dGlscy5oLCB0b29scy93cmMvd3JjLmMsCgkgIHRvb2xzL3dyYy93cmN0eXBlcy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUFkZGVkIHN1cHBvcnQgZm9yICNwcmFnbWEgY29kZV9wYWdlLgoJRml4ZWQgYSBmZXcgYnVncyBpbiBsYW5ndWFnZSBoYW5kbGluZy4KCUFkZGVkIGVycm9yIG1lc3NhZ2Ugd2hlbiBBbnNpLT5Vbmljb2RlIGNvbnZlcnNpb24gaW4gdGhlIGN1cnJlbnQKCWNvZGVwYWdlIGxvc2VzIGluZm9ybWF0aW9uLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9TaS5yYywgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9TaS5yYywgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUFkZGVkIFNsb3ZlbmlhbiByZXNvdXJjZXMuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVRoZSB0ZXh0IHNlY3Rpb24gYWxpZ25tZW50IHNob3VsZCBiZSBkZWZhdWx0LCBub3QgMS4KCgkqIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglMaW5rIGFnYWluc3QgbXN2Y3J0LCBmaXhlZCBsb2dpYyB0byBoYW5kbGUgcXVvdGVkIHBhdGhzIGluIGNvbW1hbmQKCWxpbmUgcGFyYW1ldGVycy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglMaW5rZWQgcmVnZWRpdCBhZ2FpbnN0IG1zdmNydCBpbnN0ZWFkIG9mIHRoZSBwbGF0Zm9ybSBJL08gbGlicmFyeSwgc28KCWl0IGNhbiBoYW5kbGUgZnVsbCBXaW5kb3dzIHBhdGhzLgoKMjAwMi0wOC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21vZHVsZS5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTWFrZSBiZWhhdmlvciBvZiBidWlsdGluIGV4ZWN1dGFibGVzIGNsb3NlciB0byB0aGF0IG9mIGJ1aWx0aW4gZGxscy4KCUZpeGVkIGNhc2Ugc2Vuc2l0aXZpdHkgb2YgYnVpbHRpbiBleGVjdXRhYmxlcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IFVwZGF0ZWQgZGVwZW5kZW5jaWVzLgoKCSogbGlicmFyeS9sZHQuYywgbWVtb3J5L3NlbGVjdG9yLmM6CglVc2UgdGhlICJuZXciIExEVCBzZXQgY2FsbCBvbiBMaW51eC4KCgkqIGxpYnJhcnkvbG9hZGVyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUJ1aWx0aW4gbW9kdWxlcyBtdXN0IGJlIGFsaWduZWQgb24gNjRLIGJvdW5kYXJ5LgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgZG9kZ3kgYXNtIG9wdGltaXphdGlvbiBpZiB0aGUgc2VydmVyJ3MgYnl0ZSBvcmRlciBpcyBub3QKCUxTQkZpcnN0LgoKCSogZGxscy93aW5lcHMvdHlwZTEuYzogSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQ29ycmVjdCBmb250IHNpemUgZm9yIG5vbiBNTV9URVhUIG1vZGVzLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU5UIHNldHMgdGhlIGVycm9yIGNvZGUgdG8gRVJST1JfUkVTT1VSQ0VfREFUQV9OT1RfRk9VTkQgaWYgdGhlIGZpbGUKCWV4aXN0cyBidXQgZG9lcyBub3QgY29udGFpbiB2ZXJzaW9uIGluZm9ybWF0aW9uLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsCgkgIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgZGlhbG9nIElEcyAiQnJvd3NlIGZvciBGb2xkZXIiIGNvbXBhdGlibGUgd2l0aCBJRS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWJzIGZvciBEQURfRHJhZyBFbnRlciwgRW50ZXJFeCwgTW92ZSBBdXRvU2Nyb2xsIGFuZCBMZWF2ZS4KCgkqIGRsbHMvbXN2aWRlby9kcmF3ZGliLmM6IE1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IHRoZSBzaXplIG9mIHRoZSBjb2xvdXIgbWFwIGFsbG9jYXRlZCBpbiB0aGUgYml0bWFwIGhlYWRlciBmb3IKCXRoZSBjYXNlIGJpQ2xyVXNlZCA9IDAuCgoJKiBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9tYXBpMzIvbWFwaTMyX21haW4uYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBEZWluaXRNYXBpVXRpbCBzdHViLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbDogRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVVwZGF0ZSB0aGUgZGVidWdnaW5nIGNoYW5uZWxzIGRvY3UuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6IFBpZXJyZSBCZXlzc2FjIDxwYi13aW5lQGZhc3Rlcml4LmZybXVnLm9yZz4KCUltcGxlbWVudGVkIENPTlRFWFRfREVCVUdfUkVHSVNURVJTIG9uIEZyZWVCU0QuCgoyMDAyLTA4LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJRml4ZWQgcmFjZSBjb25kaXRpb24gd2hlbiBhIHRocmVhZCBnZXRzIGtpbGxlZCByaWdodCBhZnRlciBzdGFydGluZy4KCgkqIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLAoJICBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5oLCBvbGUvdXVpZC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJVmVyeSBoYWNrZWQgaW1wbGVtZW50YXRpb24gb2YgdXJsIG1vbmlrZXJzLgoKCSogZGxscy9udGRsbC9ydGxzdHIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvc21ldGljcy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6CglBZGQgUU1fU01SRVNVTFQgaW4gd2FrZSBiaXRzIHRvbyBpbiBjYXNlIHRoZSBjaGFuZ2VkIGJpdHMgZ2V0IGNsZWFyZWQKCXdoaWxlIHByb2Nlc3NpbmcgYSBzZW50IG1lc3NhZ2UuCgoJKiBpZjE2MzIvc25vb3AuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBzbm9vcGluZyBvZiAxNi1iaXQgZGxscyBiZWluZyBsb2FkZWQgYXQgdGhlIHNhbWUgYWRkcmVzcy4KCgkqIGdyYXBoaWNzL3BhdGguYzogSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQXQgdGhlIGVuZCBvZiBQQVRIX1N0cm9rZVBhdGgsIHVwZGF0ZSBkYy0+Q3VyUG9zWHxZIHNvIHRoYXQgdGhlaXIKCXZhbHVlcyBhcmUgaW4gbG9naWNhbCBjby1vcmRzLgoKCSogZGxscy9zZXR1cGFwaS9wYXJzZXIuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGhleCB0byBiaW5hcnkgY29udmVyc2lvbi4KCgkqIGRsbHMvbnRkbGwvbWlzYy5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJdXMtPkxlbmd0aCBpcyBpbiBieXRlcy4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVRocm93IGV4Y2VwdGlvbiBvbmx5IGZvciBXaW5lIGludGVybmFsIGxvY2tzLgoKCSogZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jOiBSZWR1Y2UgZmxpY2tlciBvbiB1cGRhdGVzLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJRHVwbGljYXRlIHRoZSBmb250IGhhbmRsZSBwYXNzZWQgdGhyb3VnaCBXTV9TRVRGT05ULCBiZWNhdXNlIGl0IGRvZXMKCW5vdCBiZWxvbmcgdG8gdXMgYW5kIGlzIG5vdCBvdXJzIHRvIGZyZWUuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFdNX0dFVC9TRVRURVhUIHN1cHBvcnQuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0Lmg6IFRoZSBwcm92aWRlciBmdW5jdGlvbnMgYXJlIFdJTkFQSS4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgbW9kaWZ5IHJldHVybmVkIGtleXMgb24gc3VjY2Vzcy4KCgkqIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYywKCSAgZGVidWdnZXIvZGJnLnk6CglBZGRlZCAnd2FsayBleGNlcHRpb24nIGNvbW1hbmQuCgoJKiB0b29scy93aWRsL2hlYWRlci5jLCB0b29scy93aWRsL3BhcnNlci55LCB0b29scy93aWRsL3Byb3h5LmMsCgkgIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmg6CglBdm9pZCBkZXBlbmRlbmNpZXMgb24geS50YWIuaC4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL3N0YWNrZnJhbWUuaDoKCVNldHVwIGV4Y2VwdGlvbiBmcmFtZSBhcm91bmQgMTYtYml0IGNhbGxzIHRvIHVud2luZCBzdGFjayBwcm9wZXJseS4KCgkqIG9sZS91dWlkLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3BoZWxwZXIuaCwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvZHJhZ2Ryb3BoZWxwZXIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglTdHVicyBmb3IgRHJhZ0Ryb3BIZWxwZXIuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6IE1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZpeGVkIHRoZSBwcGRldi5oIHByZXNlbnQgYnV0IG5vdCBkaXJlY3QgaW8gYWNjZXNzIGNhc2UuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6IFBpZXJyZSBCZXlzc2FjIDxwYkBmYXN0ZXJpeC5mcm11Zy5vcmc+CglGaXhlZCBwdHJhY2UgYXJndW1lbnQgb3JkZXIgZm9yIEZyZWVCU0QsIE5ldEJTRCBhbmQgU29sYXJpcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBzdXBwb3J0IGZvciBtb3ZpbmcgVkdBIGNvbnRyb2xsZXIgd2luZG93IGluIGZyYW1lYnVmZmVyIHVzaW5nIFNWR0EKCWludGVycnVwdHMuIERldGVjdCBjb3JyZWN0bHkgY29sb3IgcGxhbmUgbW9kZXMgYW5kIGxpbmVhciBtb2RlcywKCWluY2x1ZGluZyBNb2RlLVguIE1vdmVkIFZFU0EgaW50ZXJydXB0cyBpbnRvIHNlcGFyYXRlIGZ1bmN0aW9uIGFuZAoJaW1wbGVtZW50ZWQgZmV3IG1vcmUgc3R1YnMuCgoyMDAyLTA4LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtldGVzdC5ydWxlcy5pbjoKCVRlc3QgcmVzdWx0cyBuZWVkIHRvIGRlcGVuZCBvbiB0aGUgbW9kdWxlIGJlaW5nIHRlc3RlZC4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLAoJICB0b29scy93aWRsL01ha2VmaWxlLmluLCB0b29scy93cHAvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dyYy9NYWtlZmlsZS5pbjoKCUFkZGVkIGV4cGxpY2l0IGRlcGVuZGVuY3kgb24geS50YWIuaCBmb3IgbGV4IG91dHB1dC4KCjIwMDItMDgtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9leGNlcHQuYzoKCVVucHJvdGVjdCB0aGUgcmVzb3VyY2UgZGF0YSBpbiB0aGUgdW5oYW5kbGVkIGV4Y2VwdGlvbiBoYW5kbGVyIHRvIGZpeAoJYnJva2VuIGFwcHMuCgoJKiBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsCgkgIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBtaXNjL3ZlcnNpb24uYywgbXNkb3MvdnhkLmMsCgkgIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvbnRkZGsuaDoKCUltcGxlbWVudGVkIHRoZSBSdGxJbWFnZSogZnVuY3Rpb25zLCBhbmQgdXNlIHRoZW0gdG8gcmVwbGFjZSB0aGUKCVBFX0hFQURFUiBtYWNyby4KCgkqIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuaCwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9yaWNoZWRpdC5oLAoJICBpbmNsdWRlL3JpY2hvbGUuaDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wcm92ZWQgcmljaGVkaXQgaGVhZGVycy4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBpbmNsdWRlL21tc3lzdGVtLmg6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29udmVydCBITU1JTyB0byBhIHZvaWQqLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IERhdmUgSGF3a2VzIDxkYXZlaEBjYWRsaW5rLmNvbT4KCUZvbnRzIHdpdGggYW4gaW5jb21wbGV0ZSBjaGFyYWN0ZXIgc2V0IGNvdWxkIGNhdXNlIGEgZmF1bHQuCgoJKiBjb25maWd1cmUuYWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtZWlzc25lckBzdXNlLmRlPgoJQ29weSB2YV9saXN0cyBieSB1c2luZyB2YV9jb3B5LCBub3QgYnkganVzdCBhc3NpZ25pbmcgdGhlbS4KCgkqIGRsbHMvb2xlYXV0MzIvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9vbGVhdXQzMi90ZXN0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9zaGx3YXBpL3Rlc3RzL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luaW5ldC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvLmN2c2lnbm9yZSwgZGxscy93aW5zb2NrL3Rlc3RzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L21ha2VfY3Rlc3RzLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwKCSAgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvLmN2c2lnbm9yZSwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL01ha2VmaWxlLmluLCBkbGxzL01ha2V0ZXN0LnJ1bGVzLmluLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL2FkdmFwaTMyL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvdGVzdHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC90ZXN0cy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHMsCgkgIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW46CglDcmVhdGUgc2VwYXJhdGUgbWFrZWZpbGVzIGZvciB0ZXN0cyBmb3IgbW9yZSBmbGV4aWJpbGl0eS4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jOgoJRml4ZWQgc3RyaW5nIGxlbmd0aHMgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciBhbGwgcGxhdGZvcm1zLgoKCSogQVVUSE9SUywgZGxscy9zaGVsbDMyL2F1dGhvcnMuaDogVXBkYXRlZCBhdXRob3JzIGxpc3QuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3JwY2RjZS5oLAoJICBpbmNsdWRlL3JwY2RjZXAuaCwgaW5jbHVkZS9ycGNuZHIuaCwgaW5jbHVkZS9ycGNwcm94eS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglTb21lIG1vcmUgUlBDIGRlZmluaXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLAoJICBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLAoJICBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvdGhyZWFkLmMsCgkgIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLAoJICBmaWxlcy9wcm9maWxlLmMsIHNjaGVkdWxlci9jbGllbnQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbjMyLmFwaSwgdG9vbHMvd2luYXBpL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBUEkgZmlsZSB1cGRhdGUuCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9sb2x2bGRydi5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBpbmNsdWRlL21tZGRrLmgsCgkgIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIENvbnZlcnQgSERSVlIgdG8gYSB2b2lkKi4KCS0gRml4IGRlY2xhcmF0aW9uIG9mIERyaXZlckNhbGxiYWNrKCkuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgYW4gZXhhbXBsZSBvZiB1c2luZyB3aW5lbWFrZXIuCgoJKiB0b29scy93aW5lbWFrZXI6IEFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJVXBkYXRlZCB0byBnZW5lcmF0ZSBidWlsZCBzY3JpcHRzIHdvcmtpbmcgd2l0aCBjdXJyZW50IFdpbmUsIHVzZSBzb21lCglXaW5lIGNvbnZlbnRpb25zLgoJR2VuZXJhdGVkIGNvbmZpZ3VyZSBub3cgZmluZHMgbGlicmFyaWVzIGluIGJpbmFyeSBXaW5lIGluc3RhbGxhdGlvbi4KCgkqIG9iamVjdHMvdGV4dC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgbWlzc2luZyBIZWFwRnJlZS4KCjIwMDItMDgtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93cmMvdXRpbHMuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9tc3ZjcnQvbWF0aC5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCB0b29scy93aWRsL3V0aWxzLmgsIHRvb2xzL3dpZGwvd2lkbHR5cGVzLmgsCgl0b29scy93bWMvdXRpbHMuaDoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUZpeGVzIGZvciBTcGFyYyBidWlsZC4KCgkqIGFjbG9jYWwubTQsIGNvbmZpZ3VyZToKCURvbid0IG1ha2UgdGhlIGFjX2FzbSBmdW5jdGlvbiB3cmFwcGVyIHN0YXRpYyB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcKCW9wdGltaXplZCBvdXQuCgoJKiB0b29scy9NYWtlZmlsZS5pbjogR2V0IHJpZCBvZiByZW1vdmVkIHdpbmFwaV9jaGVjayBzdWJkaXJzLgoKMjAwMi0wOC0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglEb24ndCBjaGFuZ2UgYmFzZSBpbiBtYXBfaW1hZ2Ugc2luY2Ugd2UgdXNlIGl0IGxhdGVyIG9uLgoJQWRkZWQgc29tZSB0cmFjaW5nLgoKCSogbGlicmFyeS9wb3J0LmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIGluY2x1ZGUvd2lubnQuaDoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCVBvd2VyUEMgbG9ja2VkIGV4Y2hhbmdlIGZ1bmN0aW9ucyBtZXJnZWQgZnJvbSBvbGQgcHBjIHBhdGNoLgoJTnRDdXJyZW50VGViIGhhbmRsaW5nIGZvciBQb3dlclBDICh1c2luZyBncHIgMTMpLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCUltcGxlbWVudCBTdHJSZXRUb1N0ciBpbiBzaGx3YXBpLgoKCSogZGxscy9kZHJhdy9kZHJhdy9oYWwuYzogQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJSW5pdGlhbGl6ZSB0aGUgRERDQVBTIHN0cnVjdHVyZSBvZiB0aGUgRERSQVcgb2JqZWN0IGF0IGNyZWF0aW9uLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSGFuZGxlICdub3QgYWNxdWlyZWQnIGVycm9yIG1lc3NhZ2VzIG9uIGtleWJvYXJkIEdldERldmljZURhdGEuCgoyMDAyLTA4LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgVkVSU0lPTiwgY29uZmlndXJlOiBSZWxlYXNlIDIwMDIwODA0LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTA4LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogU2V0IHVzZXIgYWRkcmVzcyBzcGFjZSBsaW1pdCB0byAweGMwMDAwMDAwLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHBvcnQgbmVnYXRpdmUgdmFsdWVzIGluIFJFQ1RzIGR1cmluZyBCbHRzLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGZpbGVzL2ZpbGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CgktIEZpeGVkIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YSB3aXRoIGdpdmVuIG92ZXJsYXBwZWQgc3RydWN0dXJlIG9uIGEKCSAgZmlsZSBvcGVuZWQgaW4gbm9uIG92ZXJsYXBwZWQgbW9kZS4KCS0gRml4bWUgZm9yIGZpbGUtbG9jayBmdW5jdGlvbnMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgbGlicmFyeS9NYWtlZmlsZS5pbjoKCU9ubHkgbGluayB3aXRoIG1zdmNydCBvbiBtaW5ndzMyLiBDbGVhbmVkIHVwIGEgZmV3IEFDX1NVQlNULgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgsIGRsbHMvb2xlMzIvZnRtYXJzaGFsLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlMzIvb2xlMTYuYywgaW5jbHVkZS93dHlwZXMuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CgktIE1vdmVkIDE2IGJpdCBmdW5jdGlvbnMgdG8gYSBzZXBlcmF0ZSBmaWxlLgoJLSBGaXJzdCBpbXBsZW1lbnRhdGlvbiBmb3IgZnJlZSB0aHJlYWRlZCBtYXJzaGFsbGVyLgoJLSBGaXhlZCBoYW5kbGluZyBvZiBSRUdfRVhQQU5EX1NUUklORyByZWdpc3RyeSB2YWx1ZXMgaW4gQ29DcmVhdGVPYmplY3QuCgktIEZpeGVkIENvTG9hZC9GcmVlTGlicmFyeSBmdW5jdGlvbnMuCgktIEZpeGVkIHVzZSBpbnRlcm5hbCBkbGwtbGlzdCAodXNlZCBvbmx5IGZvciBmdW5jdGlvbnMgbG9hZGluZyBhIGRsbAoJICBpbnRlcm5hbGx5IHdpdGhvdXQgcmV0dXJuaW5nIEhNT0RVTEUpLgoKCSogZGxscy93aW5tbS93aW5lbW0uaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ29udmVydCBITUlYRVIsIEhNSVhFUk9CSiB0byBhIHZvaWQqLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6IER1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglPbiBtb3VzZSBkb3duIGluIHRodW1iLCBpc3N1ZSBTQl9USFVNQlRSQUNLIHdpdGggY3VycmVudCBwb3NpdGlvbi4KCU9uIG1vdXNlIHVwIGluIHRodW1iLCBpc3N1ZSBTQl9USFVNQlBPU0lUSU9OIGZvbGxvd2VkIGJ5CglTQl9FTkRTQ1JPTEwuCgoyMDAyLTA4LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGFjbG9jYWwubTQ6CglJbnN0YWxsIHRoZSBhY2xvY2FsIG1hY3JvcyBmb3IgdXNlIGJ5IFdpbmVsaWIgYXBwcy4KCgkqIE1ha2UucnVsZXMuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluOgoJRG9uJ3QgcGFzcyB0aGUgcGVybCBDIGZsYWdzIHRvIHdpbmVidWlsZC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LmM6IE1pa2UgQ2FzdGxlIDxkYWxnb2RhQGl4Lm5ldGNvbS5jb20+CglDb21waWxlIGZpeCBmb3IgbXVsdGktdGhyZWFkZWQgcGVybC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglCZSBsZXNzIHN0cmljdCBvbiBwYXJhbWV0ZXIgY2hlY2tpbmcgaW4gdGhlIFNldFN1cmZhY2VEZXNjIGZ1bmN0aW9uLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy93aW5tbS9sb2x2bGRydi5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CgktIENvbnZlcnRlZCBIV0FWRSwgSFdBVkVJTiwgSFdBVkVPVVQgdG8gdm9pZCouCgktIEZpeGVkIHNvbWUgSE1JREl7SU4sT1VUfTE2IHRvIEhBTkRMRSBjb252ZXJzaW9ucy4KCS0gbWlkaU91dENhY2hlRHJ1bVBhdGNoZXMxNiBjYWxsZWQgaXRzZWxmIHJlY3Vyc2l2ZWx5IGluIGFuIGluZmluaXRlCgkgIGxvb3AuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW5mby5jLAoJICBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3R5cGVzLmMsCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgJHJlZ3MgYXMgYSB2YXJpYWJsZSBmb3IgZGlzcGxheWluZyBhbGwgcmVnaXN0ZXJzLgoKCSogb2JqZWN0cy9kYy5jOgoJRG9uJ3Qgc2V0IHRoZSBEQ19ESVJUWSBmbGFnIGluIFNldERDU3RhdGUgc2luY2Ugd2UganVzdCB1cGRhdGVkIHRoZSBEQy4KCgkqIHRvb2xzL3dyYy93cmN0eXBlcy5oOgoJUmVtb3ZlZCBzdHJ1Y3QgdXNlciB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBzeXN0ZW0gaGVhZGVycyAoc3BvdHRlZCBieQoJTWFydGluIENyYWNhdWVyKS4KCjIwMDItMDgtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgd2luZG93cy8uY3ZzaWdub3JlLCBNYWtlLnJ1bGVzLmluLAoJICBjb250cm9scy8uY3ZzaWdub3JlLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvZ2RpLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS93aW4xNmRydi8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZpZGVvLy5jdnNpZ25vcmUsIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC8uY3ZzaWdub3JlLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL3NldHVwYXBpLy5jdnNpZ25vcmUsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9kZGUvLmN2c2lnbm9yZSwgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBsb2FkZXIvLmN2c2lnbm9yZSwgbG9hZGVyL25lLy5jdnNpZ25vcmUsCgkgIG1lbW9yeS8uY3ZzaWdub3JlLCBvYmplY3RzLy5jdnNpZ25vcmUsIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluOgoJQ3JlYXRlIGF0IG1vc3Qgb25lIGdsdWUgZmlsZSBmb3IgYSBzaW5nbGUgZGxsLgoJQXZvaWQgdGhlIGludGVybWVkaWF0ZSAudG1wLm8gZmlsZSB3aGVuIGJ1aWxkaW5nIHByb2dyYW1zLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsIHRvb2xzL3dpbmVidWlsZC93aW5lYnVpbGQubWFuLmluOgoJSW4gLXNwZWMgYW5kIC1leGUgbW9kZSwgYWNjZXB0IG11bHRpcGxlIG9iamVjdCBmaWxlcyBhbmQgbGluayB0aGVtCgl0b2dldGhlciBpbnRlcm5hbGx5IHRvIGZpbmQgdGhlIHVuZGVmaW5lZCBzeW1ib2xzLgoJSW4gLWdsdWUgbW9kZSwgYWNjZXB0IG11bHRpcGxlIEMgZmlsZXMgYW5kIGdlbmVyYXRlIGEgc2luZ2xlIGdsdWUKCWZpbGUgZm9yIGFsbCBvZiB0aGVtLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWF1ZGlvaW8vLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lYXVkaW9pby9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhdWRpb2lvL2F1ZGlvaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXVkaW9pby93aW5lYXVkaW9pby5kcnYuc3BlYzoKCVJvYmVydCBMdW5ub24gPGJvYkB5YXJyYWJlZS5uZXQuYXU+CglQcmVsaW1pbmFyeSBhdWRpbyBkcml2ZXIgZm9yIFNvbGFyaXMgTGliYXVkaW9pby4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLAoJICBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvd2lubW0vd2luZW1tLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5jb20+CglDb252ZXJ0IEhNSURJLCBITUlESUlOLCBITUlESU9VVCwgSE1JRElTVFJNIHRvIHZvaWQqLgoKMjAwMi0wNy0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvcnVudGVzdCwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglVc2UgdGhlIG5vcm1hbCBwZXJsIGludGVycHJldGVyIGZvciB0ZXN0IHNjcmlwdHMgdGhhdCBkb24ndCBuZWVkIHRvCgljYWxsIFdpbmRvd3MgQVBJcy4KCURvbid0IGJ1aWxkIHdpbmV0ZXN0LmV4ZSBieSBkZWZhdWx0LgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93c29jazMyL3Byb3RvY29sLmMsCgkgIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvcG9ydC5jOgoJTW92ZWQgdGhlICNpZmRlZnMgZm9yIHRoZSBnZXRuZXRieSogZXRjLiBmdW5jdGlvbnMgZGlyZWN0bHkgaW50byB0aGUKCXdpbnNvY2sgaW1wbGVtZW50YXRpb24gdG8gYXZvaWQgaGF2aW5nIHRvIHJlZGVmaW5lIHRoZSBkYXRhIHN0cnVjdHVyZXMKCWluIHBvcnQuaC4KCgkqIHByb2dyYW1zL25vdGVwYWQvU2kucmM6IFJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglGaXhlZCBzb21lIGludmFsaWQgY2hhcmFjdGVycy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvdGVzdHMvcmVnZWRpdC5wbCwgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmV0ZXN0LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC90ZXN0cy93aW5lLnBsOgoJU3BsaXQgcm91dGluZXMgdGhhdCBkb24ndCByZWx5IG9uIEMgZnVuY3Rpb25zIGludG8gd2luZXRlc3QucG0gc28gdGhhdAoJdGhleSBjYW4gYmUgdXNlZCBmcm9tIGEgbm9ybWFsIFBlcmwgc2NyaXB0LgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUFkZCBNU1ZDUlQgcHJlZml4IHRvIF9zdGF0IGFuZCBfZnN0YXQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgUmFmYWVsCglLaXRvdmVyKS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL3dpbmVwcy9idWlsdGluLmMsCgkgIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0LmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy90eXBlcy5oLAoJICB0c3gxMS9NYWtlZmlsZS5pbjoKCVJhZmFlbCBLaXRvdmVyIDxjYWVsdW1AZGViaWFuLm9yZz4KCVBvcnRhYmlsaXR5IGZpeGVzIGZvciBDeWd3aW4uCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3NvY2suYywgd2luMzIvbmV3Zm5zLmMsIG1lbW9yeS9yZWdpc3RyeS5jLAoJICBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy9yZWdpc3RyeS5jLCBtc2Rvcy92eGQuYywgb2JqZWN0cy9wYWxldHRlLmMsCgkgIHJlbGF5MzIvc25vb3AuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywKCSAgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaV9wcml2YXRlLmgsCgkgIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcGFsZXR0ZS5oLCBpbmNsdWRlL3dpbmNyeXB0LmgsCgkgIGxvYWRlci9uZS9tb2R1bGUuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL2NyeXB0LmgsCgkgIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLAoJICBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCUZpeGVkIHNvbWUgaGFuZGxlIHR5cGUgbWlzbWF0Y2hlcyBhbmQgYWRkZWQgYSBmZXcgY2FzdHMgaW4gcHJldmlzaW9uCglvZiB2b2lkKiBoYW5kbGVzLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2NvbnNvbGUuYywKCSAgZGxscy9rZXJuZWwvZWRpdGxpbmUuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgd2luMzIvY29uc29sZS5jLAoJICB3aW4zMi9lZGl0bGluZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBhbGwgY2xpZW50LXNpZGUgY29uc29sZSBjb2RlIHRvIGtlcm5lbC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNb3ZlZCBpbml0aWFsIEFsbG9jQ29uc29sZSBjYWxsIHRvIGtlcm5lbCBpbml0IChiYXNlZCBvbiBhIHBhdGNoIGJ5CglFcmljIFBvdWVjaCkuCgoJKiBmaWxlcy9maWxlLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSB0aGUgY2FsbHMgdG8gKFJlYWR8V3JpdGUpQ29uc29sZSB0aHJvdWdoIGEgZnVuY3Rpb24gcG9pbnRlciB0bwoJZWFzZSB1cCBudGRsbC9rZXJuZWwgc2VwYXJhdGlvbi4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIGdlbmVyaWMgbWVjaGFuaXNtIHRvIHNldCB1cCBob29rcyBmb3IgZGlzcGF0Y2hpbmcgc2lnbmFsCgloYW5kbGVycyBvdXRzaWRlIG50ZGxsLgoKCSogZGxscy9udGRsbC9oZWFwLmM6CglXZSBoYXZlIHRvIHVzZSB0aGUgUnRsIHZhcmlhbnQgb2YgRW50ZXIvTGVhdmVDcml0aWNhbFNlY3Rpb24gaW5zaWRlCgludGRsbC4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglSZW1vdmUgLnNvIGV4dGVuc2lvbiBmcm9tIG1haW4gbW9kdWxlIGZpbGUgbmFtZSBhZnRlciBsb2FkaW5nIGl0IHNvCgl0aGF0IEdldE1vZHVsZUZpbGVOYW1lIHJldHVybnMgdGhlIHJpZ2h0IHRoaW5nLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rlc3RzL2F0b20uYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvYXRvbS5wbDoKCVJld3JvdGUgYXRvbSB0ZXN0IGluIEMuCgoJKiBmaWxlcy9maWxlLmM6IFJhZmFlbCBLaXRvdmVyIDxjYWVsdW1AZGViaWFuLm9yZz4KCUNoYW5nZWQgZG9zX2hhbmRsZXMgdG8gc3RvcmUgZHVwcyBvZiBzdGRpby9vdXQvZXJyIGFzIHBlciBPdmUgS2FhdmVuJ3MKCXN1Z2dlc3Rpb24uCgoJKiBkbGxzL3dpbm1tL3dpbmVuYXMvYXVkaW8uYzogTmljb2xhcyBFc2N1ZGVyIDxuLmVzY3VkZXJAYWxpbmVhbmV0LmNvbT4KCVNwZWVkIGFuZCBidWZmZXIgaW1wcm92ZW1lbnQsIGNvZGUgY2xlYW4gdXAsIGFuZCBmaXggc29tZSBidWcKCW9uIGNsb3NlIC8gcmVzZXQgd2F2ZW91dC4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZmlsZXMvZG9zX2ZzLmMsCgkgIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvd2luYmFzZS5oLAoJICBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLAoJICBsb2FkZXIvcmVzb3VyY2UuYywgb2JqZWN0cy9tZXRhZmlsZS5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9lbmhtZXRhZmlsZWRydi5oLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy9nZGkvbWZkcnYvbWV0YWZpbGVkcnYuaDoKCUZpeGVkIEhBTkRMRTwtPkhGSUxFIGNvbnZlcnNpb25zLCBzaW5jZSB0aGV5IHdpbGwgYmUgZGlmZmVyZW50IHR5cGVzCgl3aGVuIGhhbmRsZXMgYXJlIHZvaWQqLgoKMjAwMi0wNy0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW5hcy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW5hcy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVuYXMvbmFzLmMsIGRsbHMvd2lubW0vd2luZW5hcy9uYXMuaCwKCSAgZGxscy93aW5tbS93aW5lbmFzL3dpbmVuYXMuZHJ2LnNwZWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmFjOgoJTWVyZ2VkIHRoZSBOQVMgZHJpdmVyIHdyaXR0ZW4gYnkgTmljb2xhcwoJRXNjdWRlciA8bi5lc2N1ZGVyQGFsaW5lYW5ldC5jb20+LgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsCgkgIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGFiaWxpdHkgdG8gZGVmZXIgYnJlYWtwb2ludCBzZXR0aW5nIGZvciBicmVha3BvaW50IGRlZmluZWQgYnkgYW4KCWFic29sdXRlIGFkZHJlc3MuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVncmVzc2lvbiBvbiBpbnRlcm5hbCB2YXJzLgoKMjAwMi0wNy0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvdmlydHVhbC5jOgoJU2V0IHRoZSBjb3JyZWN0IHBlcm1pc3Npb25zIG9uIHRoZSBQRSBpbWFnZSBzZWN0aW9ucy4KCgkqIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvcG9ydC5jLCBzZXJ2ZXIvZmlsZS5jLCB0b29scy93cHAvd3BwLmMsCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkZWJ1Z2dlci9nZGJwcm94eS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGluY2x1ZGUvY29uZmlnLmguaW46CglNYXJjdXMgTWVpc3NuZXIgPG1laXNzbmVyQHN1c2UuZGU+CglDaGVjayBmb3IgbWtzdGVtcCwgYWRkZWQgYSBwb3J0IGltcGxlbWVudGF0aW9uIGlmIGl0IGlzIG5vdAoJcHJlc2VudC4gVXNlIG1rc3RlbXAoKSBpbiB2YXJpb3VzIHBsYWNlcyBuZWVkaW5nIHRtcCBmaWxlcy4KCgkqIGRsbHMvd2luZWRvcy92Z2EuaCwgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jLCB3aW4zMi9jb25zb2xlLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvdmdhLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJU29tZSBkb3MgVkdBIGVycm9yIGhhbmRsaW5nLiAgTWlzYyBUUkFDRSBjaGFuZ2VzLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc291cmNlIGNvbW1hbmQuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9pZnMuaCwKCSAgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyX21haW4uYywKCSAgaW5jbHVkZS93aW5lL29ial9taXNjLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJLSBJbXBsZW1lbnRlZCBJTWFsbG9jU3B5IGhvb2tzIGluIElNYWxsb2MuCgktIE1vdmVkIG1lbW9yeSByZWxhdGVkIGZ1bmN0aW9ucyBpbnRvIGlmcy5jLgoJLSBJbXBsZW1lbnRlZCBzdHVicyBmb3IgdGhlIE1hbGxvY1NweS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBmb3JtYXQgc3RyaW5nLgoKCSogZGxscy93aW5lZG9zL2lvcG9ydHMuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJVkdBIGVtdWxhdGlvbiBub3cgc3VwcG9ydHMgb3V0dyBhbmQgb3V0bC4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIFZHQSBjb250cm9sbGVyIGZyYW1lYnVmZmVyIGJldHdlZW4gVkdBIHdpbmRvdyBhbmQKCURpcmVjdERyYXdTdXJmYWNlLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzogU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJUG9ydGFiaWxpdHkgZml4LgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCVN0ZXZlbiBFZHdhcmRzIDxzdGV2ZW5fZWQ0MTUzQHlhaG9vLmNvbT4KCUZpeCBidWlsZGluZy9saW5raW5nIHJlc291cmNlcyBvbiBNaW5ndy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLAoJICBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglJbXBvcnQgY29tY3RsMzIgZnVuY3Rpb25zIGZyb20gc2hlbGwzMiBieSBvcmRpbmFsLgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IG9yZGluYWxzIGluIGNvbWN0bDMyLnNwZWMuCgoJKiB0b29scy93cHAvd3BwLmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglJbmNsdWRlIDxzdGRsaWIuaD4gbmVlZGVkIGJ5IGV4aXQoKS4KCgkqIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBpbmNsdWRlL3dpbmRlZi5oOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUNvbnZlcnRlZCBIRU5ITUVUQUZJTEUgYW5kIEhNRVRBRklMRSB0byBhIHZvaWQqLgoKMjAwMi0wNy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vd2luZW1tLmgsIGluY2x1ZGUvd2luZGVmLmgsIGxvYWRlci90YXNrLmMsCgkgIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUNvbnZlcnQgSFRBU0sgdG8gdm9pZCogKGJhc2VkIG9uIGEgcGF0Y2ggYnkgTWljaGFlbCBTdGVmYW5pdWMpLgoKCSogdG9vbHMvd2luZWJ1aWxkLy5jdnNpZ25vcmUsIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwgdG9vbHMvd2luZWJ1aWxkL3dpbmVidWlsZC5tYW4uaW46CglBZGRlZCBhIHdpbmVidWlsZCBtYW4gcGFnZS4KCgkqIGxpYnJhcnkvbG9hZGVyLmMsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgaW1wb3J0aW5nIGJ5IG9yZGluYWwuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jOgoJU2V0IGNvcnJlY3QgZGxsIGZpbGUgbmFtZSB3aGVuIGJ1aWxkaW5nIGEgLmRlZiBmaWxlLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jOiBGaXhlZCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24uCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmM6CglSeWFuIEN1bW1pbmcgPHJ5YW5AY29tcGxldGVseS5raWNrcy1hc3Mub3JnPgoJSW1wbGVtZW50YXRpb24gb2YgUnRsR2V0TnRWZXJzaW9uTnVtYmVycy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogUmFmYWVsIEtpdG92ZXIgPGNhZWx1bUBkZWJpYW4ub3JnPgoJTWlub3IgZml4IGZvciBpZGUtc2NzaSBjZHJvbXMuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZCBkZWNvZGluZyBsb2dpYyBmb3IgVkdBIGluZGV4ZWQgcmVnaXN0ZXJzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGluY2x1ZGUvd2luZGVmLmgsIHdpbmRvd3MvaG9vay5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCS0gQ29udmVydGVkIEhIT09LIHRvIGEgdm9pZCouCgktIENoYW5nZWQgdGhlIGludGVybmFsIEhPT0tfKiBmdW5jdGlvbnMgdG8gcGFzcyBvbmx5IEhIT09LJ3MgYmV0d2VlbgoJICB0aGVtLgoJLSBGaXhlZCB3cm9uZyBISE9PSyA8LT4gSEFORExFMTYgY29udmVyc2lvbnMuCgoyMDAyLTA3LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9wYWludGluZy5jOgoJUkRXX0ZSQU1FIHNob3VsZCBiZSBSRFdfTk9GUkFNRSB3aGVuIHZhbGlkYXRpbmcgKHNwb3R0ZWQgYnkgRHVhbmUKCUNsYXJrKS4KCjIwMDItMDctMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aWRsL3BhcnNlci5sOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCSNpbmNsdWRlIDx1bmlzdGQuaD4gd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHVubGluaygpLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBCYW5nIEp1bi1Zb3VuZyA8anVueW91bmdAbW9ndWEuY29tPgoJTWFrZSBjb21waWxlIG9uIE5ldEJTRC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmouc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUZhY3RvcmVkIG91dCB0aGUgT0xFIDE2IGJpdCBhbGxvY2F0b3IgZnJvbSBTdHJpbmdGcm9tQ0xTSUQuCglJbXBsZW1lbnRlZCBQcm9nSURGcm9tQ0xTSUQxNi4KCgkqIHRvb2xzL3dpbmVtYWtlcjogQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+Cgl3aW5lYnVpbGQgc2VhcmNoZXMgbGlicmFyaWVzIHNwZWNpZmllZCBpbiAtbCBwYXJhbWV0ZXIgb25seSBpbiB0aGUKCWxpYnJhcnkgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJlZm9yZSBpbiB0aGUgLUwgcGFyYW1ldGVyLCBidXQKCXdpbmVtYWtlciBhZGRlZCAtTCBwYXJhbWV0ZXIgYWZ0ZXIgLWwuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVB1dCBjb3JyZWN0IG9yZGluYWwgaGludHMgaW4gdGhlIGltcG9ydCB0YWJsZS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpbGwgbHBjYkF2YWlsIGZvciBQZWVrTmFtZWRQaXBlLgoKCSogZGxscy9zaGVsbDMyL3NobGV4ZWMuYzogRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUJ1ZyBmaXhlcy4KCjIwMDItMDctMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYzogUmVtb3ZlZCBvcmRpbmFsIDAuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL3BlX2ltYWdlLmM6CglBZGRlZCBzdXBwb3J0IGZvciBvcmRpbmFsIGhpbnQgaW4gUEVfRmluZEV4cG9ydGVkRnVuY3Rpb24uCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL3NobHdhcGkvdXJsLmMsCgkgIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJTWlzYyBzcGVsbGluZyBmaXhlcy4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1tZmMuc2dtbDogQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglVcGRhdGVkIE1GQyBsZWdhbCBpc3N1ZXMgc2VjdGlvbiBhY2NvcmRpbmcgdG8gdGhlIG5ldyBsaWNlbnNlLCBzb21lCglvdGhlciBjaGFuZ2VzLgoKCSogcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJV0NNRF9ydW5fcHJvZ3JhbTogZG9uJ3QgdHJ5IHRvIHJ1biBhbiBlbXB0eSBsaW5lLgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTW9yZSB2ZXJib3NlIG91dHB1dCB3aGVuIGZpbGUgbm90IGZvdW5kLgoKCSogcHJvZ3JhbXMvd2NtZC9iYXRjaC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJV0NNRF9iYXRjaDogaW5jcmVhc2UgcG9zc2libGUgbGluZSBsZW5ndGggYW5kIHdhcm4gaWYgc3RpbGwgdG9vIHNtYWxsLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQ29tYmluZWQgaW1wbGVtZW50YXRpb25zIG9mIFNoZWxsRXhlY3V0ZS9FeC4KCgkqIGRsbHMvc2hsd2FwaS9wYXRoLmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglQYXRoQXBwZW5kQS9XOiBEb24ndCBza2lwICdcXCcgaWYgcGF0aCBpcyBVTkMuCglQYXRoR2V0Q2hhclR5cGVBL1c6ICcvJyBpcyBpbnZhbGlkLCBtYWtlIG5vbi1BU0NJSSBjb21wYXRpYmxlIHRvby4KCUltcGxlbWVudCBQYXRoQ29tcGFjdFBhdGhFeEEvVy4KCVVwZGF0ZSBkb2NzLCByZW1vdmUgc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzIHdpdGggLVcuCgoJKiBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvY3BwZXhjZXB0LmMsCgkgIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUZpcnN0IHBhc3MgaW1wbGVtZW50YXRpb24gb2YgQ3h4RnJhbWVIYW5kbGVyICh0aGFua3MgdG8gSnVlcmdlbgoJU2NobWllZCBmb3IgaGVscCBpbiB0ZXN0aW5nIGl0KS4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLAoJICBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLXBvcnRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9hdXRob3JzLmVudCwgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25zb2xlcy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sLCBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9tdWx0aW1lZGlhLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWw6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIE1vdmUgInF1ZXN0aW9ucyBhbmQgY29tbWVudHMiIGF0IHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50LgoJLSBSZW1vdmVkIGVsZmRsbCBkb2N1bWVudGF0aW9uLgoJLSBQcm9wZXJseSBkb2N1bWVudGVkIERlc2t0b3AgYW5kIE1hbmFnZWQgY29uZmlnLgoJLSBSZWFycmFuZ2VkIGNvbmZpZyBlbnRyaWVzIGFjY29yZGluZyB0byBpbXBvcnRhbmNlLgoJLSAid2luZS5jb25mIiAtPiAidGhlIHdpbmUgY29uZmlnIGZpbGUiIGluIHNvbWUgY2FzZXMuCgktIFVwZGF0ZWQgdG8gbmV3IEZUUCBVUkxzLgoJLSBGaXggbm9uLWJhY2tzbGFzaC1lc2NhcGVkIHBhdGhzIChvdWNoICEpLgoJLSBSZXBsYWNlIHRleHQgcmVmZXJlbmNlcyBieSByZWFsIGxpbmtzLgoJLSBNaXNjLiBvdGhlciB1cGRhdGVzLgoKCSogb2JqZWN0cy9mb250LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglQcm9wZXJseSBjaGVjayB0aGF0IHRoZSBmb250IHJlc291cmNlIGlzIG5vdCBhbHJlYWR5IHRoZXJlLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsd2FwaS5oLAoJICBpbmNsdWRlL3dpbmUvb2JqX3F1ZXJ5YXNzb2NpYXRpb25zLmgsIG9sZS91dWlkLmM6CglGaXhlZCBkdXBsaWNhdGlvbiBvZiBkZWZpbml0aW9ucyBiZXR3ZWVuIHNobHdhcGkuaCBhbmQKCW9ial9xdWVyeWFzc29jaWF0aW9ucy5oLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsCgkgIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsCgkgIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkci5oLCBkbGxzL3NoZWxsMzIvc2hmbGRyX2Rlc2t0b3AuYywKCSAgZGxscy9zaGVsbDMyL3NoZmxkcl9mcy5jLCBkbGxzL3NoZWxsMzIvc2hmbGRyX215Y29tcC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJLSBDbGVhbmVkIHVwIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzaGVsbCBmb2xkZXJzIGFuZCBwdXQgdGhlbSBpbnRvCgkgIHNlcGFyYXRlIGZpbGVzLgoJLSBGaXhlZCBzb21lIG1lbW9yeSBsZWFrcy4KCS0gU29tZSBtb3JlIGZpeGVzLgoKMjAwMi0wNy0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglGaXhlZCBoYW5kbGluZyBvZiAuY29tIGJpbmFyaWVzICh0aGFua3MgdG8gQ2hyaXMgTW9yZ2FuKS4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZW52aXJvbi5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRha2UgYSBzbmFwc2hvdCBvZiB0aGUgZW52aXJvbm1lbnQgc3RyaW5ncyB3aGVuIGJ1aWxkaW5nIHRoZQoJX19wX19lbnZpcm9uIGFycmF5IGFuZCB1cGRhdGUgdGhlIGFycmF5IG9uIGNhbGxzIHRvIF9wdXRlbnYuCgoJKiBkbGxzL21zdmNydC9zdHJpbmcuYzogUmVtb3ZlZCBub24tZXhwb3J0ZWQgc3RyaW5nIGZ1bmN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBtZW50aW9uIG9mIGEgZG90IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBzcGVjaWZpY2F0aW9uLiBBZGRlZAoJcmVmZXJlbmNlIHRvIHRoZSB3aW5lbWFrZXIgbWFuIHBhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBMVk1fU0NST0xMIGFuZCBhZGp1c3Qgc2Nyb2xsaW5nIGZvciBhbGwgZm9ybWF0cy4KCS0gSW1wbGVtZW50IHN0YW5kYXJkIENvbWN0bDMyIGNvbG9yIGhhbmRsaW5nLgoJLSBFbGltaW5hdGUgYm9ndXMgRVJSIG1lc3NhZ2VzIGZvciBhcHBsaWNhdGlvbiBtZXNzYWdlcy4KCgkqIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZWRpdGxpbmUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTXVsdGktbGluZSBlZGl0IGlzIG5vdyBlbmFibGVkLgoJRml4ZWQgYSBidWZmZXIgYWxsb2NhdGlvbiBlcnJvci4KCVlhbmsgYnVmZmVyIGlzIG5vIGxvbmdlciBkZXN0cm95ZWQgYWZ0ZXIgdGhlIGZpcnN0IGNvcHkuCglJbXBsZW1lbnRlZCB0aGUgdHJhbnNwb3NlIHdvcmQgKGFsdC10KSBhbmQgcmVkcmF3IChjdHJsLWwpCgllbWFjcy1jb21tYW5kcy4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9oYXNoLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG9mZnNldCBmb3IgcmVsb2NhdGluZyBzeW1ib2xzIGluIHN5bWJvbGZpbGUgY29tbWFuZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLAoJICBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWM6CglGaXhlZCBicm9rZW4gZm9yd2FyZHMgcmVwb3J0ZWQgYnkgUGF0cmlrIFN0cmlkdmFsbC4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS9yZWdpc3RyeS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIEZpeCBzb21lIHNwZWxsaW5nIHByb2JsZW1zLgoJLSBNb3ZlIFdDVVNFUl9TZXRNZW51RGV0YWlscyB0byBvdGhlciBtZW51IHJlbGF0ZWQgZnVuY3Rpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJSW5jbHVkZSBzeXMvdHlwZXMuaCBiZWZvcmUgc3lzL3NvY2tldC5oLgoKCSogd2luZWRlZmF1bHQucmVnOiBBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIE9MRS9DT00gY2xhc3NlcyByZWdpc3RlcmVkIGJ5IE9MRUFVVDMyLkRMTC4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvd2luMTYuYXBpLCB0b29scy93aW5hcGkvd2luMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFJlcG9ydCBicm9rZW4gZm9yd2FyZHMuCgktIEFQSSBmaWxlcyB1cGRhdGUuCgoyMDAyLTA3LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLAoJICBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCUFkZGVkIG1pc3Npbmcgd2luZS9wb3J0LmguCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBhY2xvY2FsLm00LCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2lubnQuaDoKCUdlbmVyYXRlIHRoZSBfX0FTTV9OQU1FIGFuZCBfX0FTTV9GVU5DIG1hY3JvcyBkaXJlY3RseSBmcm9tCgljb25maWd1cmUuCglTaW1wbGlmaWVkIHRoZSBXSU5FX1RSWV9BU01fTElOSyB0ZXN0LgoJTW92ZWQgREVDTF9HTE9CQUxfQ09OU1RSVUNUT1IgdG8gd2luZS9wb3J0LmguCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIHJlbGF5MzIvc25vb3AuYywgc2NoZWR1bGVyL3B0aHJlYWQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd3JjL3dyYy5jLAoJICB0b29scy93cmMvd3JpdGVyZXMuYzoKCVJlcGxhY2UgYWxsIHVzZXMgb2YgUFJFRklYIGFuZCBAZnVuY3Rpb24gYnkgdGhlIF9fQVNNX05BTUUgYW5kCglfX0FTTV9GVU5DIG1hY3Jvcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IE1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJSW1hZ2VMaXN0X1JlbW92ZSByZXR1cm5zIFRSVUUgd2hlbiByZW1vdmluZyBhbGwgaW1hZ2VzIG9mIGFuIGVtcHR5CglJbWFnZUxpc3QuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCS0gRG9jdW1lbnQgd2hlcmUgdGhlIHN0YWJzIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCwgc28gdGhhdCBzb21lb25lCgkgIGNhbiBoZWxwIHVwZ3JhZGUgdGhpcyBjb2RlLgoJLSBBIGNvdXBsZSBvZiBtaW5vciBlbmhhbmNlbWVudHMgdG93YXJkcyBoYW5kbGluZyBDKysuCgktIERvbid0IGJvdGhlciB0cnlpbmcgdG8gbG9hZCBsaWJzdGRjKyssIHJhdGhlciB0aGFuIGdlbmVyYXRpbmcgYW4KCSAgZW5vcm1vdXMgbnVtYmVyIG9mICJlcnJvcnMiLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3Rfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJSGFuZGxlIGZvcndhcmRlZCBmdW5jdGlvbnMgcHJvcGVybHkgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgRnJhbmNvaXMKCUdvdWdldCkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglNaWNoYWVsIEthcmNoZXIgPG1pY2hhZWwua2FyY2hlckBkcGsuYmVybGluLmZpZG8uZGU+CglTZXQgdGhlIGNvcnJlY3QgbGVuZ3RoIG9mIHRoZSBzdHJ1Y3QgRERTVVJGQUNFREVTQy4KCgkqIG9iamVjdHMvZm9udC5jOiBTaGFjaGFyIFNoZW1lc2ggPHdpbmVjb2RlQHN1bi5jb25zdW1lci5vcmcuaWw+CglOb3cgY2hlY2tzIHRoYXQgdGhlIEdDUF9SRU9SREVSIGZsYWcgaXMgc2V0IGJlZm9yZSB0cnlpbmcgdG8gYWNjZXNzCglhbnkgb2YgdGhlIGZpZWxkcyB0aGF0IGRlcGVuZCBvbiB0aGlzIGZsYWcuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOiBGaXhlZCAuY29tIGJpbmFyeSBzdXBwb3J0LgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglSb2RlcmljayBDb2xlbmJyYW5kZXIgPHRodW5kZXJiaXJkMmtAZ214Lm5ldD4KCVNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnRlcm5ldEF1dG9kaWFsLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW46IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBmbGFnLgoKCSogZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaGFzaC5jLAoJICBkZWJ1Z2dlci9zb3VyY2UuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdmVyeSBsb25nIGxpbmUgcmVhZGluZyAoYW5kIHNvbWUgYnVmZmVyaW5nIGJ1Z3MpLgoJUmVtb3ZlZCB0aGUgc3RhdGljIGxpbWl0IGluIGFycmF5IGZvciBzeW1ib2xzIHBhcnNpbmcuCgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS90aHJlYWQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNb3ZlIHRocmVhZCByZWxhdGVkIGZ1bmN0aW9ucyB0byBuZXcgZmlsZS4KCUltcGxlbWVudCBTSENyZWF0ZVRocmVhZCxAMjI0LEA0MjQsIHN0dWIgU0hSZWxlYXNlVGhyZWFkUmVmLgoJRml4OiBTSEdldFRocmVhZFJlZigpIGNhbGxzIEFkZFJlZigpLCBAMzU2IHBhcmFtIGNvdW50IHdyb25nLgoKCSogaW5jbHVkZS9zaGx3YXBpLmg6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGQgc29tZSBuZXcgZGVmaW5lcyBhbmQgZnVuY3Rpb25zLgoKMjAwMi0wNy0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC90aHJlYWQuYzoKCUFkZGVkIGRlZmluaXRpb24gb2YgbXN2Y3J0IGludGVybmFsIGVycm9yIGNvZGVzLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2dkYnByb3h5LmMsIGRlYnVnZ2VyL3N0YWJzLmMsCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSByZW1vdGUgcHJveHkgZm9yIGdkYi4KCgkqIE1ha2UucnVsZXMuaW46CglGaXhlZCBsaW5raW5nIHJ1bGUgZm9yIHRlc3QgcHJvZ3JhbXMgKHNwb3R0ZWQgYnkgR3JlZ2cgTWF0dGluc29uKS4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLAoJICBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUludmVydGVkIGlubmVyIGxvb3BzIChXaW4zMiBkZWJ1ZyBldmVudCBoYW5kbGluZyAvIFdpbmVEYmcgY29tbWFuZAoJbGluZSBwYXJzZXIpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglBZGRlZCBjaGVja3MgZm9yIF9fc3BhcmNfXywgX19zdW5fXyBhbmQgQGZ1bmN0aW9uLgoKCSogYWNsb2NhbC5tNDogRml4ZWQgcXVvdGluZyBpbiBXSU5FX1RSWV9BU01fTElOSyBtYWNyby4KCgkqIG9iamVjdHMvZGMuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQ3JlYXRlRENBIHNob3VsZCByZXR1cm4gZmFpbHVyZSBpZiBib3RoIGRyaXZlciBhbmQgZGV2aWNlIGFyZSBOVUxMLgoKCSogd2luZG93cy9zcHkuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBBZGQgbWVzc2FnZSBtYXBwaW5nIGZvciB0b29sdGlwcy4KCS0gVXNlIERFQlVHX1NQWSBkZWZpbmUgaW5zdGVhZCBvZiBjb21tZW50aW5nIG91dCBUUkFDRXMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2FkdmFwaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2F2aWZpbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2NvbWNhdC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9kaW5wdXQ4LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2dkaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2ltbTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2tlcm5lbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL250ZGxsLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29sZTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29sZWF1dDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3JwY3J0NC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zZXR1cGFwaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zaGRvY3Z3LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NoZWxsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2hsd2FwaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zdGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvdXNlcjMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmVkb3MucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luaW5ldC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5tbS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93czJfMzIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVwZGF0ZWQgd2luZXRlc3QgUGVybCBtb2R1bGVzIHVzaW5nIHdpbmFwaV9leHRyYWN0LgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCB3aW5hcGlfZXh0cmFjdC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCS0gTWFueSBzdHVicwoJLSBTb21lIG9yZGluYWxzLCBTSFN0ckR1cEEgYW5kIFNIU3RyRHVwVyBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLAoJICBpbmNsdWRlL3dpbnJlZy5oOgoJRG9taW5payBTdHJhc3NlciA8ZG9taW5pay5zdHJhc3NlckBtY2hwLnNpZW1lbnMuZGU+CglJbXBsZW1lbnRlZCBSZWdRdWVyeU11bHRpcGxlVmFsdWVzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglXYWl0IGZvciB0aGUgYXN5bmNocm9ub3VzIHVwZGF0ZSB0aHJlYWQgdG8gY29tcGxldGUgaWYgdGhlIGFwcAoJcmVxdWVzdHMgaXQuIEZpeGVkIGJsaXQgb2Zmc2V0aW5nIGlzc3VlcyBpbiB3aW5kb3dlZCBtb2RlLgoKCSogdG9vbHMvd2lkbC9NYWtlZmlsZS5pbiwgdG9vbHMvd2lkbC9wYXJzZXIubCwgdG9vbHMvd2lkbC93aWRsLmMsCgkgIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmM6CglFeHBsaWNpdGx5IHNwZWNpZnkgdGhlIHBhdGggdG8gd3BwLmggc28gd2UgZG9uJ3QgbmVlZCB0byBjaGFuZ2UgdGhlCglpbmNsdWRlIHBhdGgsIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG11bHRpcGxlIHkudGFiLmggZmlsZXMuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUhvbm91ciB0aGUgVk5MUF9DT1BZSUZFWElTVFMgZmxhZyB3aGVuIGRvaW5nIGEgY29weSBvcGVyYXRpb24uCgoJKiBtc2Rvcy9kb3NtZW0uYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQ2hhbmdlIEJJT1NEQVRBJ3Mgcm93cyBvbiBzY3JlZW4gbWludXMgMSBmcm9tIDIzIHRvIDI0LgoKCSogcHJvZ3JhbXMvcmVnc3ZyMzIvcmVnc3ZyMzIuYzogQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBbGxvdyByZWdzdnIzMiB0byBwcm9jZXNzIG11bHRpcGxlIGZpbGVuYW1lcyAoYXMgZG9lcyB0aGUgV2luZG93cwoJdmVyc2lvbikuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUZpeGVkIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglSZXBhaXIgU2V0TGFzdEVycm9yIGluIEZpbmROZXh0RmlsZUEuCgoJKiBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgYW4gZXh0ZXJuIGRlY2xhcmF0aW9uIHRvIHN0b3AgZWdjcy0yLjkxLjY2IGZyb20gY3Jhc2hpbmcuCgoyMDAyLTA3LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9tc3ZjcnQvZWguaCwgZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLAoJICBkbGxzL21zdmNydC9lcnJuby5jLCBkbGxzL21zdmNydC9maWxlLmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywKCSAgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLAoJICBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBkbGxzL21zdmNydC90aHJlYWQuYzoKCUZpeGVkIHBlci10aHJlYWQgZGF0YSBoYW5kbGluZy4KCU1hZGUgdGVybWluYXRlIGFuZCB1bmV4cGVjdGVkIGZ1bmN0aW9uIHBvaW50ZXIgcGVyLXRocmVhZC4KCUFkZGVkIHNldF9zZV90cmFuc2xhdG9yLgoKCSogZGxscy9kZHJhdy9kZHJhdy91c2VyLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuaCwKCSAgaW5jbHVkZS9udGRkay5oLCB0b29scy93aW5lZHVtcC9jdmluY2x1ZGUuaDoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUF2b2lkIHN0cnVjdHVyZXMgb3IgYXJyYXlzIG9mIHNpemUgMC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9zbWIuYywgZmlsZXMvc21iLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJRmlyc3QgZ28gYXQgcmVhZGluZyBkaXJlY3RvcmllcyBvbiBwdWJsaWMgU01CIHNoYXJlcy4KCgkqIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJIC0gWDExL2V4dGVuc2lvbnMvc2hhcGUuaCByZXF1aXJlcyBYMTEvWHV0aWwuaC4KCSAtIFgxMS9YS0JsaWIuaCByZXF1aXJlcyBYMTEvWGxpYi5oLgoJIC0gbmV0L2lmLmggcmVxdWlyZXMgc3lzL3NvY2tldC5oLgoJIC0gbmV0aW5ldC9pcC5oIHJlcXVpcmVzIHN5cy9zb2NrZXQuaCBhbmQgc3lzL2luX3N5c3RtLmguCgkgLSByZXNvbHYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmguCgoJKiB0b29scy93aW5lbWFrZXI6IEdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCS0gUmVtb3ZlZCBuYW1lLCB0eXBlLCBtb2RlLCByc3JjLCBhbmQgaW1wb3J0IHN0YXRlbWVudHMgZnJvbSAuc3BlYwoJICBmaWxlLgoJLSBBZGRlZCBpbXBvcnRzIGFuZCByZXNvdXJjZXMgdG8gTWFrZWZpbGUuaW4uCgktIENoZWNrZWQgZm9yIF9fc3BhcmNfXyBhbmQgX19zdW5fXywgc2FtZSBhcyBXaW5lJ3MgY29uZmlndXJlLgoJLSBDaGVja2VkICRXSU5FX1JPT1QvbGlicmFyeSBmb3IgbGlicmFyeSBmaWxlcy4KCS0gQ2hhbmdlZCBtaXhlZGNydCBkaXJlY3RvcnkgdG8gbXN2Y3J0LgoKCSogZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVNldCBhbW91bnRzIHJlYWQvd3JpdHRlbiB0byAwLCBzaGFyZSBVbi9Mb2NrIGNvZGUsIHVuaWZ5IGN0b3JzLgoJU0hPcGVuUmVnU3RyZWFtQS9XIHJldHVybiBhIGR1bW15IG9iamVjdCBvbiBmYWlsdXJlLCBub3QgTlVMTC4KCUltcGxlbWVudCBAMTIgdXNpbmcgY29tbW9uIGN0b3IuCgoJKiBjb250cm9scy9jb21iby5jOiBDYXJsIFNvcGNoYWsgPGNhcmwuc29wY2hha0BjZWdpczEyMy5jb20+CglSZXR1cm4gZW1wdHkgc3RyaW5nIG9uIGVycm9yIGluIFdNX0dFVFRFWFQuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzogTWFyY3VzIE1laXNzbmVyIDxtbUBsc3QuZGU+CglQcm90ZWN0IEludGVybmV0Q2xvc2VIYW5kbGUoKSBhZ2FpbnN0IGludmFsaWQgaGFuZGxlcy4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS93aW4xNi5hcGksCgkgIHRvb2xzL3dpbmFwaS93aW4zMi5hcGksIHRvb2xzL3dpbmFwaS93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWVyZ2VkIGFsbCBBUEkgZmlsZXMgaW50byB0d28gZmlsZXMgKFdpbjE2L1dpbjMyKS4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywKCSAgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywgZGxscy93aW5tbS93aW5lYWxzYS9hbHNhLmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYywgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpb18wNS5jLAoJICBvYmplY3RzL2ZvbnQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogaW5jbHVkZS93aW5kZWYuaDogTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5jb20+CglDb252ZXJ0IEhNT05JVE9SIHRvIGEgdm9pZCouCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQWxsb3cgdGhlIGFwcGxpY2F0aW9uIHRvIHN1YmNsYXNzIGEgYnVkZHkgZWRpdCAoc3BvdHRlZCBieSBHdXkKCUwuIEFsYmVydGVsbGkpLgoKCSogd2luZWRlZmF1bHQucmVnOiBBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIENMU0lEX1N0ZEZvbnQgY2xhc3MgcmVnaXN0cmF0aW9uLgoKCSogdG9vbHMvd2luZWR1bXAvb3V0cHV0LmM6IEpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVcGRhdGUgb3V0cHV0IGZvciByZWNlbnQgYnVpbGQgY2hhbmdlcy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCBTSEJyb3dzZUZvckZvbGRlclcuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQXZvaWQgd2lucmVnLmggaW5jbHVzaW9uLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBDb0luaXRpYWxpemVTZWN1cml0eS4KCjIwMDItMDctMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93cHAvd3BwLmM6IEZpeGVkIHRlbXAgbmFtZSBoYW5kbGluZy4KCgkqIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS93aW5lL3JwY2ZjLmgsIHRvb2xzL01ha2VmaWxlLmluLAoJICB0b29scy93aWRsLy5jdnNpZ25vcmUsIHRvb2xzL3dpZGwvTWFrZWZpbGUuaW4sIHRvb2xzL3dpZGwvaGVhZGVyLmMsCgkgIHRvb2xzL3dpZGwvaGVhZGVyLmgsIHRvb2xzL3dpZGwvcGFyc2VyLmgsIHRvb2xzL3dpZGwvcGFyc2VyLmwsCgkgIHRvb2xzL3dpZGwvcGFyc2VyLnksIHRvb2xzL3dpZGwvcHJveHkuYywgdG9vbHMvd2lkbC9wcm94eS5oLAoJICB0b29scy93aWRsL3V0aWxzLmMsIHRvb2xzL3dpZGwvdXRpbHMuaCwgdG9vbHMvd2lkbC93aWRsLmMsCgkgIHRvb2xzL3dpZGwvd2lkbC5oLCB0b29scy93aWRsL3dpZGx0eXBlcy5oLCBjb25maWd1cmU6CglNZXJnZWQgdGhlIElETCBjb21waWxlciB3cml0dGVuIGJ5IE92ZSBLYWF2ZW4uCgoJKiB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy9wcHkueSwgdG9vbHMvd3JjL3ByZXByb2MuYywKCSAgdG9vbHMvd3JjL3ByZXByb2MuaCwgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy91dGlscy5oLAoJICB0b29scy93cmMvd3JjLmMsIGNvbmZpZ3VyZS5hYywgdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHRvb2xzL3dwcC8uY3ZzaWdub3JlLCB0b29scy93cHAvTWFrZWZpbGUuaW4sIHRvb2xzL3dwcC9wcGwubCwKCSAgdG9vbHMvd3BwL3BweS55LCB0b29scy93cHAvcHJlcHJvYy5jLCB0b29scy93cHAvd3BwLmMsCgkgIHRvb2xzL3dwcC93cHAuaCwgdG9vbHMvd3BwL3dwcF9wcml2YXRlLmgsIHRvb2xzL3dyYy8uY3ZzaWdub3JlLAoJICB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LAoJICBjb25maWd1cmU6CglTcGxpdCB0aGUgQyBwcmVwcm9jZXNzb3IgZnJvbSB3cmMgaW50byBhIHNlcGFyYXRlIGxpYnJhcnkuCglQcmVmaXhlZCBleHBvcnRlZCBmdW5jdGlvbnMgYnkgJ3BwJyB0byBhdm9pZCBuYW1lc3BhY2UgY29uZmxpY3RzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jLCBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywKCSAgcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmgsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywKCSAgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5sZXgubCwgcHJvZ3JhbXMvd2luaGVscC9tYWNyby55YWNjLnksCgkgIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQnJpbmcgd2luaGVscCBiYWNrIHRvIGxpZmUsIHdpdGggbWFpbmx5IHN1cHBvcnQgZm9yIFdpbjk1IGhlbHAgZmlsZXMuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzogRml4ZWQgc2V0dGluZyBvZiBtaW4vbWF4aW1pemUgbXdtIGhpbnRzLgoKCSogZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJRml4ZWQgdHdvIGxlYWtzIGluIGZpbGUtIGFuZCBpdGVtbW9uaWtlci4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmM6CglUb255IExhbWJyZWd0cyA8dG9ueV9sYW1icmVndHNAdGVsdXNwbGFuZXQubmV0PgoJQWRkZWQgc3VwcG9ydCBEREJMVF9EREZYIGZsYWcgaW4gRGlyZWN0RHJhd1N1cmZhY2VfQmx0LgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFJlbW92ZSBzdHViIGZvciBvcmRpbmFsIDM5NCBhbmQgcmVwbGFjZSB3aXRoIGZvcndhcmQgdG8KCSAgQ3JlYXRlRGlhbG9nSW5kaXJlY3RQYXJhbUEgd2hlcmUgdHJhY2luZyBzaG93cyBpdCBnb2luZy4KCS0gQWRkIHN0dWIgZm9yIG9yZGluYWwgNDMwLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsCgkgIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLAoJICBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsCgkgIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsCgkgIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCURvbid0IGlzc3VlIGVycm9yIG1lc3NhZ2UgaWYgbWVzc2FnZSBudW1iZXIgaW4gYXBwbGljYXRpb24gcmFuZ2UuCgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9pc3RyZWFtLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS90ZXN0cy9jbGlzdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBTSENyZWF0ZVN0cmVhbU9uRmlsZUEvVy9FeCwgb3JkaW5hbHMgQDE2NiwxODQsMjEyLTIxNC4KCgkqIHNlcnZlci9zZXJpYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBGbHVzaEZpbGVCdWZmZXJzIGZvciBzZXJpYWwgZGV2aWNlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzogUGF1bCBNaWxsYXIgPHBhdWxtQGFzdHJvLmdsYS5hYy51az4KCVJlbW92ZWQgZHJpdmUgYXNzdW1wdGlvbnMgaW4gdGhlIHBhdGggaGFuZGxpbmcgcmVncmVzc2lvbiB0ZXN0cy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJRml4ZWQgYSBtZW1vcnkgbGVhayBhbmQgYSB3cm9uZyBtZW1vcnkgZnJlZSBjYWxsLgoKCSogcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRG8gbm90ICNpbmNsdWRlIDxtYWxsb2MuaD4sIHdoaWNoIGlzIG5vbi1zdGFuZGFyZCBhbmQgbm90IG5lZWRlZC4KCgkqIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglUZXN0IGZvciBYMTEgZXJyb3JzIGZvciBER0EyIGFuZCBYVmlkTW9kZSBleHRlbnNpb25zLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9oZWxwZXIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIEREUkFXX1NZU1RFTU1FTU9SWSBpcyBoYW5kbGVkIGxpa2UgT0ZGU0NSRUVOUExBSU4gZm9yIG5vdwoJLSBhZGRlZCBtb3JlIGxvZ2dpbmcKCgkqIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglGaXhlZCBhbm90aGVyIG5vbi1zdGF0aWMgc3RydWN0dXJlIGluaXRpYWxpemVyLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDb3JyZWN0aW9uIHRvIGhlYWRlciBvcmRlciBtYWludGVuYW5jZSB3aGVuIGEgZHVtbXkgZmlyc3QgaXRlbSBpcwoJYWRkZWQgYW5kIHRoZW4gZGVsZXRlZCAoYXMgc3VnZ2VzdGVkIGJ5IE1TRE4gdG8gaGFuZGxlIHRoZSBmYWN0IHRoYXQKCXRoZSBmaXJzdCBjb2x1bW4gb2YgYSBsaXN0dmlldyBpcyBsZWZ0IGp1c3RpZmllZCkuICBBbHNvIHJlbW92ZWQKCXJlZHVuZGFudCBjYXN0cy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogUm9iIE1jQ2xpbnRvbiA8bXlwdWJsaWNhY2NvdW50QGhvdG1haWwuY29tPgoJWDExRFJWX0dldERJQml0czogRG9uJ3QgY2xlYXIgdGhlIGJpQ29tcHJlc3Npb249PUJJX0JJVEZJRUxEUyBmbGFnCglhZnRlciBjcmVhdGluZyB0aGUgYml0cy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJRml4ZWQgdm9pZCogYXJpdGhtZXRpYy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUluaXRpYWxpemVkIHRoZSBwaWRsT3V0IHZhcmlhYmxlIGluIFNIRUxMMzJfUGFyc2VOZXh0RWxlbWVudCB0bwoJcHJldmVudCBhIGNyYXNoIGluIHNvbWUgY2FzZXMuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRml4ZWQgdW5pbml0aWFsaXplZCBIS0VZcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglEZWxldGVDb2x1bW4gc2hvdWxkIHJldHVybiBzdWNjZXNzIGV2ZW4gZm9yIHVPd25lckRhdGEuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5oLAoJICBwcm9ncmFtcy9ub3RlcGFkL21haW4uYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQSBmZXcgY29zbWV0aWMgY2hhbmdlcyBwbHVzIGZpeGVzIGZvciBwcm9ibGVtcyBzcG90dGVkIGJ5IERtaXRyeQoJVGltb3Noa292LgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9TaS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9yc3JjLnJjOgoJUm9rIE1hbmRlbGpjIDxyb2ttYW5kZWxqY0Bob3RtYWlsLmNvbT4KCUFkZGVkIFNsb3ZlbmlhbiByZXNvdXJjZXMuCgoyMDAyLTA3LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOiBSZWxlYXNlIDIwMDIwNzEwLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTA3LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvd3Byb2NzLnNwZWM6CglBZGRlZCBGUFUgZW11bGF0aW9uIGludGVycnVwdHMuCgoJKiBtc2Rvcy9mcHUuYywgbXNkb3MvaW50M2QuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGluY2x1ZGUvbWlzY2VtdS5oOgoJQWRtaXJhbCBDb2V5bWFuIDxhZG1pcmFsQGNvcm5lci5uZXQ+CglBZGRlZCBzdXBwb3J0IGZvciBGUFUgZW11bGF0aW9uIGludGVycnVwdHMuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2ludXNlci5oLAoJICB3aW5kb3dzL2hvb2suYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglTdHVicy9kb2NzIGZvciBOb3RpZnlXaW5FdmVudCxTZXRXaW5FdmVudEhvb2ssSXNXaW5FdmVudEhvb2tJbnN0YWxsZWQsCglVbmhvb2tXaW5FdmVudC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6CglRdWlldCB0aGUgZm9udCBsb2FkaW5nIGVycm9yLgoKCSogY29udHJvbHMvY29tYm8uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNCVXBkYXRlRWRpdDogTEJfR0VUVEVYVExFTiByZXR1cm5zIExCX0VSUiBvbiBlcnJvciwgbm90IDAuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOgoJRml4ZWQgY29ycnVwdGlvbiB3aGVuIGNvcHlpbmcgdG8gdGhlIHNhbWUgc3VyZmFjZSAod2l0aCB0aGUgaGVscCBvZgoJVG9ueSBMYW1icmVndHMgYW5kIExpb25lbCBVbG1lcikuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJSm9oYW4gR2lsbCA8am9oYW5lQGx5c2F0b3IubGl1LnNlPgoJNDggd2FzIHBsYWluIHdyb25nIGFzIHZhbHVlIGZvciBIRUxtYXJnaW4uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmg6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglGaXhlcyB0byBhbGxvdyBiaWcgZW5kaWFuIG1hY2hpbmVzIHRvIGxvYWQgTVNGVCB0eXBlbGliIGZpbGVzLgoKCSogZmlsZXMvZHJpdmUuYzoKCUZpeGVkIGhhbmRsaW5nIG9mIGRyaXZlcyB3aXRoICIvIiBwYXRoICh0aGFua3MgdG8gTWFyY3VzIE1laXNzbmVyKS4KCgkqIGRsbHMvd2luZXBzL3BwZC5jOgoJQ2FybCBTb3BjaGFrIDxjYXJsLnNvcGNoYWtAY2VnaXMxMjMuY29tPgoJUGFzcyAiTWFudWFsIEZlZWQiIGFzIHNob3J0IGlucHV0IHNsb3QgbmFtZS4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc3luY2hyb25pc2F0aW9uIGZvciBjdHJsIGV2ZW50IGdlbmVyYXRpb24uCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJU2hhY2hhciBTaGVtZXNoIDxzdW5AY29uc3VtZXIub3JnLmlsPgoJLSBGaXhlZCBhY2Nlc3MgdG8gdGhlIGxwVGVtcGxhdGVOYW1lIG9mIENob29zZUZvbnQgaW4gY2FzZXMgd2hlcmUgdGhlCgkgIGZsYWdzIGRvbid0IHNwZWNpZnkgdG8gdXNlIGl0LgoJLSBEbyBub3QgdHJ5IHRvIGNvbnZlcnQgdGhlIHJlc291cmNlIG5hbWUgZnJvbSBBTlNJIHRvIFdpZGUgaWYgaXQgaXMgYQoJICByZXN1bHQgb2YgTUFLRUlOVFJFU09VUkNFIChhbmQgdGhlcmVmb3JlIG5vdCBhIHN0cmluZykuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9hZHZhcGkzMi90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL2FkdmFwaTMyL3Rlc3RzL3JlZ2lzdHJ5LmM6CglDcmVhdGVkIHJlZ2lzdHJ5IHVuaXQgdGVzdCBhbmQgYWRkZWQgdGVzdHMgZm9yIFJlZ0VudW1WYWx1ZVtBV10uCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIG1lbW9yeS9yZWdpc3RyeS5jOgoJUmVnRW51bVZhbHVlW0FXXSBuZWVkIHRvIHVwZGF0ZSB0aGUgZGF0YSBzaXplIG9uIGJ1ZmZlciBvdmVyZmxvdwoJKHNwb3R0ZWQgYnkgTWFzc2ltbyA8bWF4QHZlbmV0by5jb20+KS4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlbW92ZWQgdGhlIGZsYWdzIGZpZWxkcyBvZiBJRGlyZWN0RHJhd1BhbGV0dGVJbXBsLCBhcyB3ZSBzaG91bGQgdXNlCgl0aGUgZHdGbGFncyBmaWVsZCBvZiBERFJBV0lfRERSQVdQQUxFVFRFX0dCTCBzdHJ1Y3R1cmUgaW5zdGVhZC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2Uvd25kcHJvYy5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglIYW5kbGUgV01fU1lOQ1BBSU5UIHdpdGggRGVmV2luZG93UHJvYy4KCgkqIGRlYnVnZ2VyL2RlYnVnLmw6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUVuaGFuY2VkIGVycm9yIGhhbmRsaW5nIG9uIGlucHV0IHN0cmVhbSByZWFkaW5nLgoKCSogZGVidWdnZXIvZXh0X2RlYnVnZ2VyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGV4dGVybmFsIGRlYnVnZ2VyIHN0YXJ0dXAuCgoJKiBkbGxzL3dpbm1tL3dpbm1tX1NpLnJjLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYzoKCVJvayBNYW5kZWxqYyA8cm9rbWFuZGVsamNAaG90bWFpbC5jb20+CglBZGRlZCBTbG92ZW5pYW4gcmVzb3VyY2VzLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJRml4IGJ1ZmZlciBsZW5ndGggY2FsY3VsYXRpb24gaW4gSW5pdGlhbGl6ZUdlbmVyaWNTRigpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wcm92ZSB0cmFjZXMuCgktIENoYW5nZWQgZGVmYXVsdCBjb2x1bW4gd2lkdGggdG8gMTI4IHRvIG1hdGNoIG5hdGl2ZSBhbmQgbWFrZSB0aGF0CgkgIHRoZSBtaW1pbXVtIGZvciBMVlNfU01BTExJQ09OIGFuZCBMVlNfTElTVCBzdHlsZXMuCgktIENvcnJlY3RlZCBtYXggdmFsdWUgZm9yIExWU19MSVNUIHN0eWxlIHNjcm9sbCBpbmZvLgoJLSBJc3N1ZSBvdXIgb3duIFNob3dTY3JvbGxCYXIgbGlrZSB0aGUgbmF0aXZlIHdpdGggcHJvcGVyIHRlc3QuCgktIENvcnJlY3QgYWxpZ25tZW50IHdoZW4gdXNpbmcgTFZTX0lDT04gc3R5bGUuCgktIENvcnJlY3QgRklYTUVzIGZvciB1bmltcGxlbWVudGVkIHN0eWxlcy4KCS0gQ29ycmVjdCByZWN0IHNpemUgY29tcHV0YXRpb24gZm9yIExWU19MSVNULgoJLSBSZXNldCBzY3JvbGwgYmFycyB3aGVuIGNoYW5naW5nIHN0eWxlcy4KCS0gSW1wbGVtZW50IFdNX1dJTkRPV1BPU0NIQU5HRUQuCgoyMDAyLTA3LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvY2xpc3QuYywKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy9zaGx3YXBpL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMvc2hsd2FwaS90ZXN0cy9jbGlzdC5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudC9kb2N1bWVudCBAMTcsMTgsMTksMjAsMjEsMjIgKENvbXBhY3QgbGlzdCBBUEkpLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcG9ydCBuZXcgcmVnaXN0ZXJlZCBleHRlbnNpb25zLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJX29wZW5fb3NmaGFuZGxlOiBzZXQgYXQgbGVhc3QgdGhlIF9JT1JFQUQgZmxhZy4KCgkqIHdpbmRvd3MvZGNlLmM6CglSeWFuIEN1bW1pbmcgPHJ5YW5AY29tcGxldGVseS5raWNrcy1hc3Mub3JnPgoJTWFrZSBMb2NrV2luZG93VXBkYXRlIHJldHVybiBtb3JlIFdpbmRvd3MtbGlrZSB2YWx1ZXMuCgoyMDAyLTA3LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOgoJUmVtb3ZlIC5kbGwgZXh0ZW5zaW9uIGZyb20gbW9kdWxlIG5hbWUsIGFkZGVkIHdpbGRjYXJkIHN1cHBvcnQgaW4KCXJlbGF5IHNwZWNpZmljYXRpb25zICh3aXRoIHRoZSBoZWxwIG9mIERtaXRyeSBUaW1vc2hrb3YpLgoKCSogbWVtb3J5L3N0cmluZy5jOgoJVG9tbXkgU2NodWx0eiBMYXNzZW4gPHRsYXNzZW5AdGxhc3Nlbi5kaz4KCUZpeGVkIGxzdHJjcHluQSBkZWJ1ZyB0cmFjaW5nLgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglmZ2V0cywgZmdldHdzOiBkb24ndCB0cmVhdCB0aGUgcG9zc2libGUgdW5pbml0aWFsaXplZCBidWZmZXJzIGFzIHZhbGlkCglzdHJpbmdzLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTVNWQ1JUX2ZyZWFkOiBleHBvc2UgZmVvZiBmbGFnLgoKCSogdG9vbHMvd2luZWNoZWNrOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVdpbmRvd3MgcmVnaXN0cnkgbm90IGZvdW5kIHNob3VsZCBiZSBhIG5vdGljZSB0byB0aGUgdXNlciwgbm90IGEKCWNyaXRpY2FsIGVycm9yLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCVJlbW92ZWQgd29ya2Fyb3VuZCBmb3IgMTYtYml0IGxvYWRlciBidWcuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0RhLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0RlLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0VuLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL0ZpLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0ZyLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL1B0LnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1JFQURNRSwgcHJvZ3JhbXMvbm90ZXBhZC9Tay5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Tdy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9UT0RPLAoJICBwcm9ncmFtcy9ub3RlcGFkL1dhLnJjLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5oLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuaCwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZF9yZXMuaCwgcHJvZ3JhbXMvbm90ZXBhZC9zZWFyY2guYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJVXNlIHJpY2ggdGV4dCBlZGl0IGNvbnRyb2wgaW5zdGVhZCBvZiBoYW5kbGluZyB1c2VyIGlucHV0IGFuZAoJcmVuZGVyaW5nIG9uIGl0cyBvd24sIHVzZSBuYW1lZCBjb25zdGFudHMgaW5zdGVhZCBvZiBtYWdpYyBudW1iZXJzLAoJY2xlYW5lZCBjb2RlLCBpbXBsZW1lbnRlZCBVbmRvIGZ1bmN0aW9uYWxpdHkuCgoJKiBkbGxzL2tlcm5lbC90aHVuay5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBBbHdheXMgY29weSAoYWxtb3N0KSB0aGUgd2hvbGUgc3RhY2sgc3BhY2Ugb3ZlciB0byB0aGUgMTZiaXQgc3RhY2sKCSAgaW5zdGVhZCBvZiBjYWxjdWxhdGluZyBzb21lIHBvdGVudGlhbGx5IGJvZ3VzIHBhcmFtZXRlciBjb3VudC4KCS0gQWRkIHNvbWUgY29tbWVudHMuCgoJKiBpbmNsdWRlL29sZWF1dG8uaDoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUZpeGVkIFZfREVDSU1BTCBtYWNybyB0byByZWZsZWN0IHdoZXJlIHRoZSBkZWNWYWwgbWVtYmVyIGlzIGFjdHVhbGx5CglzdG9yZWQuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIF9VQFlBUEFYSUBaIGFuZCBfVkBZQVBBWElAWi4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1TVkNSVF9mc2Vlazogc2hvdWxkIHJldHVybiAwIG9uIHN1Y2Nlc3MuCgoJKiBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvcmljaGVkaXQvcnRmLmgsIGRsbHMvcmljaGVkaXQvdGV4dC13cml0ZXIuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGQgcmljaGVkaXQgc3VwcG9ydCBmb3IgYSBwbGFpbiB0ZXh0IHN0cmVhbS4KCgkqIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgc29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJLSBWYXJGb3JtYXQgbm93IHN1cHBvcnRzIFZUX1I4IGFuZCBCWVJFRiB2YXJpYW50IHR5cGVzLgoJLSBBZGQgVmFyQ3lNdWxJNCBzdXBwb3J0LgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhbm90aGVyIFBsYXlTb3VuZCBidWcgKHdoZW4gU05EX0xPT1AgaXMgcmVxdWVzdGVkKS4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW9fMDUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgY29tcGlsYXRpb24gd2FybmluZ3MuCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHBvcnQgd2dsVXNlRm9udEJpdG1hcHNBIHdoZW4gdXNpbmcgY2xpZW50LXNpZGUgcmVuZGVyaW5nLgoKMjAwMi0wNy0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluOgoJU3RldmVuIEVkd2FyZHMgPHN0ZXZlbl9lZDQxNTNAeWFob28uY29tPgoJTmVlZCB0byBpbXBvcnQgbnRkbGwuCgoJKiBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJTW9kaWZpZWQgV0NNRF9maWxlc2l6ZTY0IHRvIGhhbmRsZSB1bnNpZ25lZCBudW1iZXJzLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBtZW1vcnkvcmVnaXN0cnkuYzoKCU1vcmUgZXhwbGljaXQgaW5pdGlhbGl6YXRpb24gb2YgaW5mb19zaXplIGZvciBzdHVwaWQgY29tcGlsZXJzLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJVXNlIFdpbmUgZGVidWdnaW5nIEFQSS4gRml4ZWQgTWVzc2FnZUJveCBsb29wLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oOgoJRmx1c2ggc3RkaW8gb24gZXhpdC4KCgkqIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jOiBGaXhlZCB3YXJuaW5ncy4KCgkqIGRsbHMveDExZHJ2L3dpbmVjbGlwc3J2LmMsIGluY2x1ZGUvd2luZS9kZWJ1Zy5oLAoJICBpbmNsdWRlL3dpbm50LmgsIG1zZG9zL2ludDJmLmM6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CgktIEZvcnRlIEMgZG9lcyBub3Qgc3VwcG9ydCBuYW1lbGVzcyBzdHJ1Y3R1cmVzIG9yIHVuaW9ucwoJLSBJbXBsZW1lbnRlZCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MgZm9yIEZvcnRlIEMgb24gc3BhcmMKCS0gSW1wbGVtZW50ZWQgREVDTF9HTE9CQUxfQ09OU1RSVUNUT1IgZm9yIG5vbi0zODYsIG5vbi1HTlUgQwoJLSBJbXBsZW1lbnRlZCBXSU5FX0RQUklOVEYgdG8gaGF2ZSBmdW5jdGlvbiBuYW1lIHdpdGggRm9ydGUgQwoKCSogZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWVpc3NuZXJAc3VzZS5kZT4KCUFkZGVkIGEgZ2VuZXJpYyB3YXkgb2YgZG9pbmcgR2V0SEdsb2JhbEZyb21JTG9ja0J5dGVzKCkuCgoJKiBwcm9ncmFtcy93aW5lbGF1bmNoZXIuaW46CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIG1ha2Ugc3VyZSBldmVuIEdVSSB1c2VycyBub3RpY2UgYSAibWlzc2luZyB4bWVzc2FnZSIgcHJvYmxlbSBieQoJICBjaGVja2luZyBmb3IgdG9ucyBvZiBYMTEgZWRpdG9ycwoJLSByZXBsYWNlIGR1cGxpY2F0ZWQgKDN4KSBjb2RlIHdpdGggZnVuY3Rpb24gbGF1bmNoX3dpbmVzZXR1cCgpCgktIGltcHJvdmVkICJ3aW5lc2V0dXAgbm90IGZvdW5kIiBlcnJvciBtZXNzYWdlCgktIGJyZWFrIGxvb3BpbmcgKHZpYSBjb2RlIDEyNykgaW4gY2FzZSBubyB4bWVzc2FnZSBpbnN0YWxsZWQKCS0gc3RyZXNzIHRoZSBmYWN0IHRoYXQgcGVvcGxlIHNob3VsZCByZW1lbWJlciB0aGF0IHRoZXkgY2FuIHJlZ2FpbiBjZXJ0YWluCgkgIHNldHRpbmdzIGJ5IGRlbGV0aW5nIGZsYWcgZmlsZXMKCS0gc3BlbGxpbmcgZml4ZXMKCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUltcGxlbWVudGVkIEZvcm1hdE1lc3NhZ2UgZm9yIHNwYXJjLiAgU2luY2UgdGhlIHZhX2xpc3QgaXMgc3RvcmVkIGluCgltZW1vcnkgbGlrZSBfX2kzODZfXywgdGhlIHNhbWUgaW1wbGVtZW50YXRpb24gc2hvdWxkIHdvcmsuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLAoJICBsb2FkZXIvbG9hZG9yZGVyLmMsIG1pc2MvdmVyc2lvbi5jOgoJTm8gbmVlZCB0byBjYWxsIEdldE1vZHVsZUZpbGVOYW1lMTYgbm93IHRoYXQgR2V0TW9kdWxlRmlsZU5hbWVBCgloYW5kbGVzIDE2LWJpdCB0YXNrcy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUZpeGVkIEdldE1vZHVsZUZpbGVOYW1lVyByZXR1cm4gdmFsdWUuCglRdWlldCBkbGwgbG9hZGluZyBlcnJvciBtZXNzYWdlLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCVJldHVybiBFUlJPUl9CQURfRVhFX0ZPUk1BVCB3aGVuIGJ1aWx0aW4gZGxsIHN0aWxsIG5vdCBmb3VuZCwgc2luY2Ugd2UKCW1vc3QgbGlrZWx5IGxvYWRlZCBhIDE2LWJpdCBidWlsdGluLgoKCSogd2luZG93cy9wYWludGluZy5jOgoJTW92ZWQgTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0cyBjYWxsIG91dCBvZiB0aGUgd2luZG93IGxvY2suCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkIGRyaXZlIGxldHRlciBhbmQgVW5peCBwYXRoIHRlc3RzIG9mIEdldEZ1bGxQYXRoTmFtZUEuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglFbnN1cmUgVmFyQnN0ckNhdCBoYW5kbGVzIG51bGwgcGFybXMgYXMgcGVyIHdpbmRvd3MgYW5kIGFjdHVhbGx5IGRvZXMKCXRoZSBjb25jYXRlbmF0aW9uIGV2ZW4gZm9yIG51bGwgYXJncy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUNoZWNrIGZvciBOVUxMIGtleXZhbHVlIGluIFJlZ0VudW1LZXlFeEEvVy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCUNvbWJvTEJXbmRQcm9jOiBmYWxsIHRocm91Z2ggdG8gTGlzdEJveFduZFByb2MgaWYgdGhlIGxpc3Rib3ggaXMgbm90IGEKCUNvbWJvTEJveC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglSZW1vdmVkICJzbyIgZnJvbSB0aGUgZGVmYXVsdCBsb2FkIG9yZGVyLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL21zZzE2LmMsIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLAoJICBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIHdpbmRvd3MvZGlhbG9nLmM6CglUcmllZCB0byBtYWtlIElzRGlhbG9nTWVzc2FnZVcgbW9yZSBjb21wYXRpYmxlLiBDaGFuZ2VkCglJc0RpYWxvZ01lc3NhZ2UxNi9BIHRvIGNhbGwgSXNEaWFsb2dNZXNzYWdlVy4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJLSBSZXBsYWNlZCAucHJldmlvdXMgd2l0aCBhIC5zZWN0aW9uIHN0YXRlbWVudCBmb3IgdGhlIGFwcHJvcHJpYXRlCgkgIHNlY3Rpb24uCgktICcuc2VjdGlvbiAudGV4dCcgaXMgaW5jb3JyZWN0LiAgSXQgc2hvdWxkIGJlICcuc2VjdGlvbiAiLnRleHQiJy4KCgkqIGRsbHMvbXN2Y3J0L2hlYXAuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1TVkNSVF9vcGVyYXRvcl9uZXc6IENhbGwgaGFuZGxlciBvbmx5IHdoZW4gIm5ldyIgb3BlcmF0aW9uIGZhaWxzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cHJpbmNlLm5ldD4KCUNoYW5nZWQgR2V0TW9kdWxlRmlsZU5hbWVBIHRvIHVzZSBHZXRDdXJyZW50VGFzayBpbnN0ZWFkIG9mCglNT0RVTEUzMl9Mb29rdXBITU9EVUxFIHdoZW4gY2FsbGVkIGJ5IGEgMTYtYml0IHRhc2suCgoyMDAyLTA3LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsCgkgIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZmlsZXMvc21iLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywKCSAgbWVtb3J5L3ZpcnR1YWwuYywgdG9vbHMvd2luZWR1bXAvcGUuYywgd2luZG93cy9zeXNjb2xvci5jLAoJICBkZWJ1Z2dlci9tb2R1bGUuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJQ2FzdCB2b2lkKiB0byBjaGFyKiBmb3IgcG9pbnRlciBhcml0aG1ldGljLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJc3RyY2FzZWNtcCByZXR1cm5zIHplcm8gb24gYSBtYXRjaC4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3RodW5rcy5jLAoJICBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS93aW5lZmlsZS5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJUmVtb3ZlZCBub24tc3RhdGljIHN0cnVjdHVyZSBpbml0aWFsaXplcnMuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglCZXR0ZXIgdG9nZ2xlIGFsbCByZWxldmFudCBiaXRzIGluIFZHQSBjcnQgcmVnaXN0ZXIuCgoJKiBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9zb2NrLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJQ2hlY2sgUE9MTEhVUCBzZW1hbnRpY3MgYXQgcmVtb3RlIHNodXRkb3duIHdoZW4gd2luZXNlcnZlciBpcyBzdGFydGVkLgoJRml4IHNvY2tldCBzdGF0ZSBoYW5kbGluZyBhbmQgZXZlbnQgaGFuZGxpbmcgZm9yIG5vbi1TVFJFQU0gc29ja2V0cy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUZpeGVkIFgxMURSVl9TZXRESUJpdHNUb0RldmljZSB0byBkbyB0aGUgcmlnaHQgdGhpbmcgZm9yIHRvcC1kb3duCglhbmQvb3IgcGFydGlhbCBiaXRtYXBzLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZy5zZ21sOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCURvY3VtZW50IHRoZSBuZXcgdHJhY2UtcmVsYXRlZCB3aW5lZGJnIGNvbW1hbmRzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvdXNlci93bmQxNi5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJVm9pZCBmdW5jdGlvbnMgY2FuJ3QgcmV0dXJuIGEgdmFsdWUsIGV2ZW4gaWYgaXQgaXMgdGhlIHJldHVybiB2YWx1ZQoJZnJvbSBhbm90aGVyIHZvaWQgZnVuY3Rpb24uCgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURldGVjdCBEQ3Mgd2l0aG91dCBmb250cyBhbmQgcmV0dXJuIGFuIGVycm9yIGluIHdnbFVzZUJpdG1hcEZvbnRzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9tYWNyby5sZXgubDoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCVJlbW92ZWQgdW51c3VhbCB0eXBlIGNhc3RpbmcuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3JlZ2VkaXQuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUF2b2lkIG11bHRpLWxpbmUgc3RyaW5nIGNvbnN0YW50cy4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmg6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglSZW1vdmVkIGV4dHJhICwgZnJvbSBsYXN0IGVsZW1lbnQgaW4gZW51bSBkZWNsYXJhdGlvbnMuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJUmVtb3ZlZCBleHRyYSA7IGZyb20gZW5kIG9mIElDT01fTUVUSE9EIG1hY3Jvcy4KCgkqIGRsbHMvd2lubW0vd2luZWFsc2EvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBtb3JlIGNvbmZpZ3VyYXRpb24gaXNzdWVzLgoKCSogZGxscy93aW5lZG9zL2ludDE2LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglNYWtlIHN1cmUgd2Ugd2FpdCBzb21lIHRpbWUgZHVyaW5nIGludDE2IGtleWJvYXJkIHF1ZXJ5IGNhbGwuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBhIERPUyB0ZXh0IG1vZGUgbWVtb3J5IGJ1ZmZlciBjb3B5IGluIG9yZGVyIHRvIGJlIGFibGUgdG8gdGVsbAoJd2hpY2ggbGluZXMgb2YgdGV4dCBjaGFuZ2VkIGFuZCB0aHVzIHdoaWNoIG9uZXMgdG8gdXBkYXRlLgoKCSogbXNkb3MvaW50MmYuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUNhbGwgU2xlZXAgZm9yIGludCAweDJmIGZ1bmN0aW9uIDB4MTY4MCAoSURMRSBDQUxMKS4KCjIwMDItMDctMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmM6CglSZW1vdmVkIHJlZHVuZGFudCBHZXRNZXNzYWdlIGNhbGwuCgoJKiBkbGxzL21zYWNtL21zYWRwMzIvbXNhZHAzMi5jLCBkbGxzL3NoZWxsMzIvZGVidWdobHAuaCwKCSAgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLCBmaWxlcy9zbWIuYywgbG9hZGVyL3BlX2ltYWdlLmMsCgkgIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuYywKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6CglGaXhlZCB3YXJuaW5ncy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCS0gaW1wbGVtZW50YXRpb25zIGZvciBTSExXQVBJXzI2NywgU0hMV0FQSV8yNjgKCS0gc21hbGwgZml4ZXMKCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsCgkgIGRsbHMvc2hlbGwzMi9jbGlwYm9hcmQuYywgZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCS0gY2hhbmdlZCBTVFJSRVQgZGVmaW5pdGlvbgoJLSBzbWFsbCBjaGFuZ2VzIGZvciBzZXBlcmF0aW9uIG9mIHNoZWxsMzIgZnJvbSBvbGUzMgoJLSBkZWJ1Z2hlbHBlciBmb3IgcHJpbnRpbmcgaW50ZXJmYWNlIG5hbWVzIChzaGVsbCBpbnRlcm5hbCkKCS0gY2hhbmdlZCBzaGVsbCBtZW1vcnkgYWxsb2NhdGlvbiB0byB1c2UgSU1hbGxvYyBvZiBvbGUzMiB3aGVuIHRoaXMKCSAgbGlicmFyeSBpcyBhbHJlYWR5IGxvYWRlZAoJLSBmYWxsYmFjayBJTWFsbG9jIGludGVybmFsbHkgaW4gc2hlbGwKCS0gdW5pZmllZCBjb25zdHJ1Y3RvciBzeW50YXggZm9yIHNldmVyYWwgb2JqZWN0cyAgY3JlYXRlZCBieSBEbGxHZXRDbGFzc09iamVjdAoJLSByZXdyb3RlIGluc3RhbmNlIGNyZWF0aW9uIGZvciBjb20gb2JqZWN0cwoJLSBtYWRlIHRoZSBkZXNrdG9wIGZvbGRlciBwYXJzaW5nIHBhdGhzIGxpa2UgOjp7Q0xTSUR9CgktIEltcGxlbWVudGVkIElQZXJzaXN0Rm9sZGVyMyBwYXJ0aWFsbHkKCjIwMDItMDctMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0RlLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRnIucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMucmMsIHNlcnZlci9jb25zb2xlLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIFVzZSBQZWVrTWVzc2FnZSBsb29wIGFyb3VuZCBHZXRNZXNzYWdlLgoJLSBBZGRlZCBHZXJtYW4gcmVzb3VyY2UgZmlsZS4KCS0gUmVhbGlnbiBzb21lIGRpYWxvZyBwYXJ0cy4KCS0gIlByb3BlcnR5IiAtPiAiUHJvcGVydGllcyIKCS0gQWRkIHNvbWUgdHJhY2VzLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCS0gc3R1YnMgZm9yIFNITFdBUEkuMjk1IChjcmVhdGUgYSBVUkwgc2hvcnRjdXQgPykgYW5kIFNITFdBUEkuMzk0CgktIG1pbm9yIGNsZWFudXBzCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCB0aGUgRmlyc3RJbnN0YWxsRGF0ZVRpbWUga2V5LgoKCSogZGxscy9udGRsbC9oZWFwLmM6CglNYWtlIHN1cmUgYWxsb2NhdGVkIGJsb2NrcyBhcmUgYWxpZ25lZCBvbiBhbiA4LWJ5dGUgYm91bmRhcnkuCgoJKiBhY2xvY2FsLm00LCBjb25maWd1cmU6CglIb3BlZnVsbHkgbW9yZSBwb3J0YWJsZSBlcnJubyBjaGVjay4KCgkqIFJFQURNRSwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHMsCgkgIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluOgoJRml4ZWQgbWFrZSBpbnN0YWxsIGZyb20gcmVhZC1vbmx5IGJ1aWxkIGRpcmVjdG9yeSAoc3BvdHRlZCBieSBNYXJjdXMKCU1laXNzbmVyKS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJUmVsZWFzZSB0aGUgV2luMTYgbG9jayBiZWZvcmUgd2FpdGluZyBpbiBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzRXguCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbGlicmFyeS9jb25maWcuYzoKCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3IgZ2V0cHd1aWQuCgoJKiBkbGxzL250ZGxsL3RpbWUuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCUF2b2lkIGFsaWdubWVudCBwcm9ibGVtIGluIE50UXVlcnlTeXN0ZW1UaW1lLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lZG9zL3ZnYS5oLAoJICBpbmNsdWRlL21pc2NlbXUuaDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUltcGxlbWVudGVkIHNldCBjdXJzb3Igc2hhcGUgZnVuY3Rpb25hbGl0eS4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gdGhlIGNvcnJlY3QgbGVuZ3RoIHdoZW4gZ2V0dGluZyBhIGNvbXBsZXRlIHNlY3Rpb24gaW4KCVBST0ZJTEVfR2V0U3RyaW5nLgoKCSogZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvaWZzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJU3VwcG9ydCBmb3IgbGFyZ2UgYW5kIG5lZ2F0aXZlIG9mZnNldHMuCgoyMDAyLTA2LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9iaXRtYXAuYzoKCUJJVE1BUF9TZWxlY3RPYmplY3QgbXVzdCByZXR1cm4gdGhlIG9sZCBoYW5kbGUsIG5vdCB0aGUgY3VycmVudCBvbmUuCgoJKiB3aW5kb3dzL2RlZmRsZy5jOgoJQ2hlY2sgZm9yIHZhbGlkIGRpYWxvZyBpbmZvIGJlZm9yZSB1c2luZyBpdC4KCgkqIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmM6CglOaXggTi4gTml4IDxuaXhAZ28tbml4LmNhPgoJUmVtb3ZlZCBtZXNzYWdlIGJveCB0aGF0IHdvdWxkIHBvcCB1cCBpZiBhIFJ1bk1SVSBsaXN0IHdhcyBub3QgZm91bmQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9TaS5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19TaS5yYywgZGxscy9jb21tZGxnL3JzcmMucmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQWRkZWQgU2xvdmVuaWFuIHJlc291cmNlcy4KCgkqIGRsbHMvdXNlci90ZXN0cy9zeXNwYXJhbXMuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCVBoaWxpcHAgV29sbGVybWFubiA8cGhpbF93b0BnbXgubmV0PgoJSW1wbGVtZW50ZWQgU1BJX0dFVERFU0tXQUxMUEFQRVIgYWN0aW9uLCBmaXhlZCBTUElfU0VUREVTS1dBTExQQVBFUi4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJRGlzYWJsZSBPV05fV0lORE9XIGFzIGl0IG5vIGxvbmdlciB3b3Jrcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbm1tL3dpbmVhbHNhL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2Fsc2EuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCUFkZGVkIHNvbWUgQUxTQSBjb25maWd1cmUgY2hlY2tzLgoKCSogY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVhbHNhLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vd2luZWFsc2EvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZWFsc2EvYWxzYS5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2Fsc2EuaCwgZGxscy93aW5tbS93aW5lYWxzYS9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVhbHNhL2F1ZGlvXzA1LmMsCgkgIGRsbHMvd2lubW0vd2luZWFsc2Evd2luZWFsc2EuZHJ2LnNwZWMsIGNvbmZpZ3VyZToKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQ3JlYXRlZCBhbiBBTFNBIGRyaXZlciAod2l0aCB0aGUgaGVscCBvZiBEYXZpZCBIYW1tZXJ0b24gYW5kIE1hcmNvCglQaWV0cm9ib25vKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJRml4ZWQgdHlwbyBpbiBYMTFEUlZfU2V0UGl4ZWwuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmgsIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuaCwKCSAgZGxscy90d2Fpbi90d2Fpbi5oLCBkbGxzL3dzb2NrMzIvd3Njb250cm9sLmgsCgkgIGluY2x1ZGUvd25hc3BpMzIuaCwgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5jLAoJICBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmgsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLAoJICBwcm9ncmFtcy93aW5lZmlsZS9zcGxpdHBhdGguYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCVJlbW92ZWQgQysrIHN0eWxlIGNvbW1lbnRzLgoKCSogZGxscy9zaGx3YXBpL3Rlc3RzL3NocmVnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBkZXBlbmRzIG9uIGV4dGVybmFsIGVudiBzdHJpbmdzIHZhbHVlcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglEbyBub3QgY2hhbmdlIGRpcmVjdG9yeSBpZiBwYXRoIGlzIGludmFsaWQuCgoJKiBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmM6CglLbnV0IFN0LiBPc211bmRzZW4gPGJpcmRAYW5kdWluLm5ldD4KCURvIG5vdCBhY2Nlc3MgbWVtb3J5IHRoYXQgaGFzIGp1c3QgYmVlbiBmcmVlZC4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgc3VwcG9ydCBmb3IgVXBEb3duIGNvbnRyb2wgbWVzc2FnZXMuCgktIEFkZCBkZXRlY3Rpb24gZm9yIFdpbmUncyBQcm9wZXJ0eVNoZWV0IERpYWxvZyB0byB0cmFuc2xhdGUKCSAgbWVzc2FnZXMuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywgcHJvZ3JhbXMvcmVnZWRpdC90ZXN0cy9vcmlnLnJlZywKCSAgcHJvZ3JhbXMvcmVnZWRpdC90ZXN0cy9yZWdlZGl0LnBsOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglGaXhlZCBhIGZldyBidWdzLCBhZGRlZCBwcm9jZXNzaW5nIG9mIFJFR19NVUxUSV9TWiBmb3JtYXQuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jOgoJVG9ueSBMYW1icmVndHMgPHRvbnlfbGFtYnJlZ3RzQHRlbHVzcGxhbmV0Lm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIEREQkxUX0tFWVNSQ09WRVJSSURFL0REQkxUX0tFWURFU1RPVkVSUklERS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIFRDTV9TRVRDVVJTRUwgd2hlbiBzZXR0aW5nIHBhZ2UgY3VycmVudC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglFbnN1cmVkIGZ1bGwgZHVwbGV4IG1vZGUgaXMgb25seSB1c2VkIHdpdGggc2FtZSBwYXJhbWV0ZXJzIGluIGluL291dAoJc3RyZWFtcy4KCVNvbWUgbW9yZSB3b3JrIHRvd2FyZHMgbXVsdGlwbGUgYXVkaW8gY2FyZHMgc3VwcG9ydC4KCjIwMDItMDYtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2luaXQuYywgZGxscy9nZGkvd2luMTZkcnYvdGV4dC5jLAoJICBkbGxzL2dkaS93aW4xNmRydi93aW4xNmRydi5oLCBkbGxzL3dpbmVwcy90ZXh0LmMsCgkgIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsCgkgIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglSZXBsYWNlZCBMUFRPRFAvRFBUT0xQIG1hY3JvcyBieSBjYWxscyB0byBMUHRvRFAvRFB0b0xQICh3aXRoIHRoZSBoZWxwCglvZiBIdXcgRGF2aWVzKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2QzZDgvLmN2c2lnbm9yZSwKCSAgZGxscy9kM2Q4L01ha2VmaWxlLmluLCBkbGxzL2QzZDgvZDNkOC5zcGVjLAoJICBkbGxzL2QzZDgvZDNkOF9tYWluLmM6CglTeWx2YWluIFBldHJlb2xsZSA8c3BldHJlb2xsZUB5YWhvby5mcj4KCUNyZWF0ZWQgZDNkOCBzdHViIGRsbC4KCgkqIGluY2x1ZGUvbWFwaWRlZnMuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUZpeGVkIGVuZGlhbm5lc3MgI2lmZGVmcyAoc3BvdHRlZCBieSBKYXNvbiBFZG1lYWRlcykuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZsYWdzIGhhbmRsaW5nIGluIHNuZFBsYXlTb3VuZC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CglGaXhlZCBjcmFzaCBpbiBvcGVuIGZpbGUgZGlhbG9nIG9uIG5vbi13aW5kb3dzIDk4IGVtdWxhdGlvbiB3aGVuCglscHN6SW5pdGlhbERpciBpcyBudWxsLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRW5zdXJlIHdlIGZyZWUgdGhlIGNhY2hlZCBIRk9OVCBhZnRlciBsb2FkaW5nIGluIGEgZnJlc2ggZm9udC4gRW5hYmxlcwoJZm9udHMgaW4gVkIgcHJvZ3JhbXMgdG8gYXBwZWFyIGNvcnJlY3RseS4KCgkqIG1lbW9yeS9jb2RlcGFnZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIG5hc3R5IGJ1ZyBmb3IgMisgYnl0ZSBtdWx0aWJ5dGUgc3RyaW5ncyBhbmQgR2V0U3RyaW5nVHlwZS4KCUZsZXNoZWQgb3V0IEdldFN0cmluZ1R5cGUgQ1RZUEUzIGZyb20gdGhlIHVuaWNvZGUgdGFibGVzLgoJQ1BfU1lNQk9MIGlzIG5vdCBhIHZhbGlkIGNvZGVwYWdlIHdoaWxlIENQX1VURjd8OCBhcmUuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sIGluY2x1ZGUvbW9kdWxlLmgsCgkgIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgcGF0aCB3aWxkY2FyZHMgb2YgdGhlIGZvcm0gIipkbGxuYW1lIiBpbiBsb2FkIG9yZGVyCglzcGVjaWZpY2F0aW9ucy4KCU9ubHkgdXNlIHdpbGRjYXJkIGVudHJ5IGZvciBkbGxzIHRoYXQgZG9uJ3Qgc3BlY2lmeSBhbiBleHBsaWNpdCBwYXRoLgoJUmVtb3ZlZCB0aGUgb2xkIERsbE92ZXJyaWRlcyBzeW50YXggc3VwcG9ydC4KCU1pc2MgY2xlYW51cHMgYW5kIG9wdGltaXphdGlvbnMuCgoyMDAyLTA2LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2JydXNoLmMsCgkgIGRsbHMvd2luZXBzL2J1aWx0aW4uYywgZGxscy93aW5lcHMvZG93bmxvYWQuYywKCSAgZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9mb250LmMsCgkgIGRsbHMvd2luZXBzL3BwZC5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90ZXh0LmMsIGRsbHMvd2luZXBzL3R5cGUxLmMsIGRsbHMvd2luZXBzL3R5cGU0Mi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgVHlwZSAxIGFuZCBUeXBlIDQyIGZvbnQgZG93bmxvYWRpbmcuCglNaXNjIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBkbVNjYWxlLgoKCSogZGxscy93aW5lcHMvY2xpcHBpbmcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCXBzZHJ2IGRvZXNuJ3QgY2FyZSBhYm91dCBoR0NDbGlwUmduLCBqdXN0IHVzZSBHZXRDbGlwUmduIGluc3RlYWQuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvZ2x5cGhsaXN0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglHZXQgcmlkIG9mIGEgZmV3IHRob3VzYW5kIHVzZWxlc3MgVFJBQ0UgbGluZXMuCgoJKiBkbGxzL3dpbmVwcy90eXBlMWFmbS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYWZtIHdlaWdodCAiTk9STUFMIi4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRlbXAgZml4IGZvciB3b3JsZCB0cmFuc2Zvcm0gYnVnIGluIFNldFdpbmRvd09yZ0V4IGhhbmRsZXIuCglBZGRlZCBoYW5kbGVycyBmb3IgRU1SX1NFVFRFWFRKVVNUSUZJQ0FUSU9OIGFuZCBFTVJfU0VUTEFZT1VULgoKCSogZGxscy9nZGkvbWZkcnYvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgbWFwIHN5bWJvbCBjaGFyc2V0IHRocm91Z2ggV0NUb01CLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCU1hZGUgaW5pdGlhbGl6YXRpb24gbW9yZSB2ZXJib3NlIGluIGNhc2Ugb2YgZXJyb3JzLgoKCSogY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBsaWJyYXJ5L2NvbmZpZy5jLCBjb25maWd1cmU6CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglBZGRlZCBjaGVjayBmb3IgcHdkLmguCgoJKiBkbGxzL3dpbmVkb3MvaW9wb3J0cy5jLCBkbGxzL3dpbmVkb3MvdmdhLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZWRpcmVjdCBhbGwgcmVhZHMgYW5kIHdyaXRlcyB0byBWR0EgY29udHJvbGxlciB0byBWR0EgZW11bGF0aW9uLgoJQ2F0Y2ggYW5kIHJlcG9ydCAxNi8zMi1iaXQgcmVhZHMvd3JpdGVzIHRvIFZHQSBjb250cm9sbGVyLgoJVXNlIGNvcnJlY3QgZmxhZ3Mgd2hlbiBjcmVhdGluZyBmdWxsIHNjcmVlbiBEaXJlY3REcmF3IHdpbmRvdyBmb3IKCVZHQS4KCgkqIGRsbHMvd2luZWRvcy9pbnQ2Ny5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkIHNhdmUvcmVzdG9yZSBtYXBwaW5nIGNvbnRleHQgcm91dGluZXMuCglBZGQgbWFwIG11bHRpcGxlIHBhZ2VzIHJvdXRpbmUuCglBZGQgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBoYXJkd2FyZSBpbmZvcm1hdGlvbiBxdWVyeSByb3V0aW5lLgoJUmVwbGFjZSBpbmNvcnJlY3QgdXNlIG9mIE1hcFNMIHdpdGggUFRSX1JFQUxfVE9fTElOLgoKMjAwMi0wNi0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci90aHJlYWQuYzoKCVVubG9jayB0aGUgbWFzdGVyIHNvY2tldCBpZiB0aGUgYm9vdCB0aHJlYWQgdGVybWluYXRlcyBlYXJseS4KCUF2b2lkIGNyYXNoIGlmIHRocmVhZCBkaWVkIGR1cmluZyB0aW1lb3V0IHdha2V1cC4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGluY2x1ZGUvZm9udC5oLAoJICBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CgktIEltcGxlbWVudCBBZGRGb250UmVzb3VyY2UqLCBhZGQgc3R1YnMgZm9yIFJlbW92ZUZvbnRSZXNvdXJjZSouCgktIEFkZCBzdXBwb3J0IGZvciBHR09fQkVaSUVSIGFuZCBhIGZldyBidWcgZml4ZXMgZm9yIEdHT19OQVRJVkUuCgktIE11Y2ggYmV0dGVyIHN1cHBvcnQgZm9yIG5vbiBhbnNpIGNoYXJzZXRzIGluIGZvbnQgbWF0Y2hpbmcuCgktIFByb3BlciBpbXBsZW1lbnRhdGlvbiBvZiBHZXRUZXh0RmFjZSBmb3IgZ2RpIGZvbnQuCgktIExvYWQgZm9udHMgdGhhdCBhcmUgbGlzdGVkIGluIHRoZSByZWdpc3RyeSBidXQgYXJlbid0IGluCgkgICVXSU5ET1dTRElSJVxmb250cy4KCS0gUmV2ZXJ0IFRyYW5zbGF0ZUNoYXJzZXRJbmZvIHRvIHVzZSBjb2RlcGFnZSAxMjUyIHdpdGggQU5TSV9DSEFSU0VULgoJLSBBZGQgc3VwcG9ydCBmb3IgVklFVE5BTUVTRV9DSEFSU0VUIGFuZCBTWU1CT0xfQ0hBUlNFVC4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQnVsZ2FyaWFuIGtleWJvYXJkcy4KCgkqIGRsbHMveDExZHJ2L3hyZW5kZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0b3JlIHRoZSBjYWNoZSBlbnRyeSBpbmRpY2VzIGFuZCBub3QgdGhlIHB0cnMuCglQcm90ZWN0IGNhY2hlIHdpdGggYSBjcml0aWNhbCBzZWN0aW9uLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jLCBkbGxzL2tlcm5lbC90ZXN0cy9wYXRoLmMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3Byb2Nlc3MuYywgZGxscy9rZXJuZWwvdGVzdHMvdGhyZWFkLmMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jLCBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywKCSAgZGxscy93aW5zb2NrL3Rlc3RzL3NvY2suYywgaW5jbHVkZS93aW5lL3Rlc3QuaCwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd3RtYWluLmM6CglBZGRlZCBwcmludGYgZm9ybWF0IGNoZWNraW5nIHRvIHRoZSBvaygpIGFuZCB0cmFjZSgpIG1hY3JvcywgYW5kIGZpeGVkCgl0aGUgcmVzdWx0aW5nIHdhcm5pbmdzLgoKMjAwMi0wNi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3dpbmluZXQvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmgsCgkgIGRsbHMvd2luaW5ldC90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3dpbmluZXQvdGVzdHMvaHR0cC5jLAoJICBkbGxzL3dpbmluZXQvdXJsY2FjaGUuYywgZGxscy93aW5pbmV0L3V0aWxpdHkuYywKCSAgZGxscy93aW5pbmV0L3ZlcnNpb24ucmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JraW5nIG9mIGh0dHAgYW5kIGFzeW5jcm9ub3VzIGNhbGxzIHRvIGdldCBJRTYgdG8gaW5zdGFsbC4KCUFkZGVkIGEgdmVyc2lvbiByZXNvdXJjZS4KCUFkZGVkIHVuaXQgdGVzdCBmb3IgaHR0cC4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLAoJICBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGNvbnRyb2xzL2J1dHRvbi5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJRml4ZWQgc29tZSB2YXJpb3VzIGNvbXBhcmlzb25zIHdydCBzaWduZWRuZXNzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglGaXhlZCBDTFNJREZyb21TdHJpbmcgZW5kaWFubmVzcyBhc3N1bXB0aW9ucyAocmVwb3J0ZWQgYnkgR3JlZ2cgTWF0dGluc29uKS4KCgkqIGRsbHMvbXN2Y3J0MjAvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0MjAvZHVtbXkuYywKCSAgZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5jLCBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWM6CglnZXRtYWluYXJnczogbmV3X21vZGUgYXJndW1lbnQgaXMgbm90IGEgcG9pbnRlciBpbiBtc3ZjcnQyMCAoc3BvdHRlZAoJYnkgQmlsbCBNZWRsYW5kKS4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6CglSb2sgTWFuZGVsamMgPHJva21hbmRlbGpjQGhvdG1haWwuY29tPgoJQWRkZWQgU2xvdmVuaWFuIGtleWJvYXJkLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglJbXBsZW1lbnRlZCBTaXplT2ZWYXJpYW50RGF0YSBjYXNlcyBmb3IgVlRfRElTUEFUQ0gsIFZUX1VOS05PV04sIFZUX0NZLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC90ZXN0cy9vcmlnLnJlZzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJVGVzdCB0aGUgYWJpbGl0eSB0byBoYW5kbGUgaGV4IHZhbHVlcyBpbiBleGNlc3Mgb2YgMTAyNCBieXRlcyBhbmQKCWlucHV0IGxpbmVzIGluIGV4Y2VzcyBvZiA0MDk2IGJ5dGVzLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCS0gUmV3b3JrIHRoZSBsaW5lIHJlYWRpbmcuICBUaGlzIHZlcnNpb24gdXNlcyBhIHNpbmdsZSBleHBhbmRpbmcKCSAgYnVmZmVyIHJhdGhlciB0aGFuIGEgbWFpbiBidWZmZXIgYW5kIGEgIm5leHQgbGluZSIgYnVmZmVyLiAgVGhpcwoJICB2ZXJzaW9uIGRvZXMgbm90IG92ZXJmbG93IHRoZSBhbGxvY2F0ZWQgbWVtb3J5IChob3BlZnVsbHkpLiAgVGhlCgkgIHByZXZpb3VzIHZlcnNpb24gZGlkIHdoZW4gY29uY2F0ZW5hdGluZyB0aGUgY29udGludWF0aW9uIGxpbmVzLgoJLSBBZGQgcHJvdGVjdGlvbiB0byB0aGUgSGV4Q1NWVG9IZXggdG8gcHJldmVudCBvdmVyZmxvdy4KCS0gQWxsb3cgZm9yIGNvbnZlcnNpb24gb2YgbGFyZ2VyIGhleCB2YWx1ZXMuICBUZXN0ZWQgb24gYSByZWFsIDIuNktCCgkgIHZhbHVlLgoKCSogcHJvZ3JhbXMvcmVnZWRpdC90ZXN0cy9yZWdlZGl0LnBsOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDb3JyZWN0IHRoZSBjb21wYXJpc29uIG9mIHR3byBmaWxlcy4gIEp1c3QgYmVjYXVzZSB0aGV5IGFyZSB0aGUgc2FtZQoJc2l6ZSBkb2Vzbid0IG1lYW4gdGhleSBoYXZlIHRoZSBzYW1lIGNvbnRlbnQuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJSW1wbGVtZW50ZWQgRGJnQnJlYWtQb2ludCBhbmQgRGJnVXNlckJyZWFrUG9pbnQgZm9yIFNwYXJjLiAgRGVidWdnZXIKCW11c3QgYWxyZWFkeSBiZSBhdHRhY2hlZCBmb3IgdGhpcyBpbXBsZW1lbnRhdGlvbiB0byB3b3JrLgoKCSogaW5jbHVkZS9ycGNwcm94eS5oOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJTW92ZWQgYWxsICNpbmNsdWRlcyB0byB0aGUgdG9wIHNvIHRoYXQgX19zdGRjYWxsIGlzIGRlZmluZWQgZm9yIHRoZQoJZGVjbGFyYXRpb24gb2YgSUlETG9va3VwUnRuLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCU1vdmVkIGEgZmV3IHdpbjMyIGZ1bmN0aW9ucyB0byBhIGJldHRlciBsb2NhdGlvbiBmb3IgYnVpbGRpbmcgYSBXaW4zMgoJb25seSBkbGwuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3Mvd2luZW9zcy5kcnYuc3BlYywgZGxscy93aW5ubHMvd2lubmxzLnNwZWMsCgkgIGRsbHMvd2lubmxzL3dpbm5sczMyLnNwZWMsIGRsbHMvd2luc29jay93aW5zb2NrLnNwZWMsCgkgIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywKCSAgZGxscy93aW50cnVzdC93aW50cnVzdC5zcGVjLCBkbGxzL3dvdzMyL3dvdzMyLnNwZWMsCgkgIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBtaXNjZW11L01ha2VmaWxlLmluLCBtaXNjZW11L3dpbmUuc3BlYywgdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwKCSAgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBkbGxzL3VzZXIvZGRlbWwuc3BlYywKCSAgZGxscy91c2VyL2Rpc3BsYXkuc3BlYywgZGxscy91c2VyL2tleWJvYXJkLnNwZWMsCgkgIGRsbHMvdXNlci9tb3VzZS5zcGVjLCBkbGxzL3VzZXIvdXNlci5leGUuc3BlYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3ZlcnNpb24vdmVyLnNwZWMsCgkgIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWMsCgkgIGRsbHMvd2luMzJzL3czMnN5cy5zcGVjLCBkbGxzL3dpbjMycy93aW4zMnMxNi5zcGVjLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaS5zcGVjLCBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYywKCSAgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRsbHMvd2luZXBzL3dpbmVwczE2LnNwZWMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsCgkgIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2lzZXEvbWNpc2VxLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuZHJ2LnNwZWMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYywKCSAgZGxscy93aW5tbS9zb3VuZC5zcGVjLCBkbGxzL3dpbm1tL3dhdmVtYXAvbXNhY20uZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvd2luZWFydHMuZHJ2LnNwZWMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsCgkgIGRsbHMvcWNhcC9xY2FwLnNwZWMsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLAoJICBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTE2LnNwZWMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywKCSAgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywKCSAgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3LnNwZWMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbC5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLAoJICBkbGxzL3NoZm9sZGVyL3NoZm9sZGVyLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc25tcGFwaS9zbm1wYXBpLnNwZWMsIGRsbHMvc3RpL3N0aS5zcGVjLAoJICBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMvdHdhaW4vdHdhaW5fMzIuc3BlYywgZGxscy91cmwvdXJsLnNwZWMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL21zaW1nMzIvbXNpbWczMi5zcGVjLAoJICBkbGxzL21zaXN5cy9tc2lzeXMub2N4LnNwZWMsIGRsbHMvbXNuZXQzMi9tc25ldDMyLnNwZWMsCgkgIGRsbHMvbXNybGUzMi9tc3JsZTMyLnNwZWMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLAoJICBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvLnNwZWMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywKCSAgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYywKCSAgZGxscy9vbGUzMi9jb21wb2JqLnNwZWMsIGRsbHMvb2xlMzIvb2xlMi5zcGVjLAoJICBkbGxzL29sZTMyL29sZTJjb252LnNwZWMsIGRsbHMvb2xlMzIvb2xlMm5scy5zcGVjLAoJICBkbGxzL29sZTMyL29sZTJwcm94LnNwZWMsIGRsbHMvb2xlMzIvb2xlMnRoay5zcGVjLAoJICBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZS5zcGVjLAoJICBkbGxzL29sZWF1dDMyL29sZTJkaXNwLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaS5zcGVjLAoJICBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL29sZWRsZy9vbGVkbGcuc3BlYywKCSAgZGxscy9vbGVwcm8zMi9vbGVwcm8zMi5zcGVjLCBkbGxzL29sZXN2ci9vbGVzdnIuc3BlYywKCSAgZGxscy9vbGVzdnIvb2xlc3ZyMzIuc3BlYywgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLAoJICBkbGxzL2ltbTMyL2ltbS5zcGVjLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsCgkgIGRsbHMva2VybmVsL2NvbW0uc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9rZXJuZWwva3JubDM4Ni5leGUuc3BlYywgZGxscy9rZXJuZWwvc3RyZXNzLnNwZWMsCgkgIGRsbHMva2VybmVsL3N5c3RlbS5zcGVjLCBkbGxzL2tlcm5lbC90b29saGVscC5zcGVjLAoJICBkbGxzL2tlcm5lbC93aW44N2VtLnNwZWMsIGRsbHMva2VybmVsL3dpbmRlYnVnLnNwZWMsCgkgIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLCBkbGxzL2x6ZXhwYW5kL2x6MzIuc3BlYywKCSAgZGxscy9semV4cGFuZC9semV4cGFuZC5zcGVjLCBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywKCSAgZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYWNtLnNwZWMsCgkgIGRsbHMvbXNhY20vbXNhY20uc3BlYywgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsCgkgIGRsbHMvbXNhY20vbXNhZHAzMi9tc2FkcDMyLmFjbS5zcGVjLAoJICBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYWNtLnNwZWMsCgkgIGRsbHMvbXNhY20vd2luZW1wMy93aW5lbXAzLmFjbS5zcGVjLCBkbGxzL21zZG1vL21zZG1vLnNwZWMsCgkgIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hdmljYXAzMi9hdmljYXAzMi5zcGVjLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5zcGVjLAoJICBkbGxzL2NvbWNhdC9jb21jYXQuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLAoJICBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9jb21tZGxnL2NvbW1kbGcuc3BlYywKCSAgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsCgkgIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLAoJICBkbGxzL2RldmVudW0vZGV2ZW51bS5zcGVjLCBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywKCSAgZGxscy9kaW5wdXQ4L2RpbnB1dDguc3BlYywgZGxscy9kcGxheS9kcGxheS5zcGVjLAoJICBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsCgkgIGRsbHMvZ2RpL2Rpc3BkaWIuc3BlYywgZGxscy9nZGkvZ2RpLmV4ZS5zcGVjLAoJICBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dkaS93aW5nLnNwZWMsIGRsbHMvZ2x1MzIvZ2x1MzIuc3BlYywKCSAgZGxscy9pY21wL2ljbXAuc3BlYywgTWFrZS5ydWxlcy5pbjoKCU1hZGUgc29tZSBtb3JlIHNwZWMgZmlsZSBlbnRyaWVzIG9wdGlvbmFsIG9yIHVubmVjZXNzYXJ5LgoJRml4ZWQgYSBmZXcgRExMTmFtZS9ETExGaWxlTmFtZSBtaXNtYXRjaGVzLgoKCSogc2VydmVyL3NvY2suYzoKCUF0dGVtcHQgYXQgZml4aW5nIFBPTExIVVAgaGFuZGxpbmcgZm9yIExpbnV4IDIuMi54LgoKCSogZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmM6CglNb3ZlZCBzdWNjZWVkaW5nIHRlc3Qgb3V0IG9mIHRvZG8gYmxvY2suCgoJKiBmaWxlcy9kb3NfZnMuYzoKCUZpeGVkIHJlZ3Jlc3Npb24gY2F1c2VkIGJ5IHByZXZpb3VzIGNoYW5nZS4KCjIwMDItMDYtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VtQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIG9yZGluYWxzIHRvIG1hdGNoIHRoZSBXaW5kb3dzIHZhbHVlcy4KCUFkZGVkIGEgY291cGxlIG9mIHN0dWJzLgoKCSogc2VydmVyL21haW4uYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywKCSAgc2VydmVyL3JlcXVlc3QuaCwgZmlsZXMvZHJpdmUuYywgZmlsZXMvcHJvZmlsZS5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlci5oLCBsaWJyYXJ5L01ha2VmaWxlLmluLCBsaWJyYXJ5L2NvbmZpZy5jLAoJICBtaXNjL3JlZ2lzdHJ5LmMsIHNjaGVkdWxlci9jbGllbnQuYzoKCUNyZWF0ZSB0aGUgc2VydmVyIGRpcmVjdG9yeSBhbmQgc29ja2V0IGZpbGUgaW4gL3RtcC4KCVVzZSBmY250bCBmaWxlIGxvY2tpbmcgdG8gZW5zdXJlIGV4Y2x1c2lvbiBvbiB0aGUgc2VydmVyIHNvY2tldCBhbmQgdG8KCWJldHRlciByZWNvdmVyIGZyb20gY3Jhc2hlcy4KCUZsdXNoIHRoZSByZWdpc3RyeSBiZWZvcmUgY2xvc2luZyB0aGUgc29ja2V0IHRvIGF2b2lkIHRpbWVvdXRzIG9uIHRoZQoJY2xpZW50IHNpZGUuCglNb3ZlZCBnZXRfY29uZmlnX2RpciBmdW5jdGlvbmFsaXR5IHRvIGxpYndpbmUuCgoJKiBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvc2VsZWN0LmM6CglTdG9yZSBkaXJ0eSBmbGFnIGluIGVhY2ggcmVnaXN0cnkga2V5IGFuZCB1c2UgaXQgdG8gc2F2ZSBvbmx5IG1vZGlmaWVkCglicmFuY2hlcy4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jOgoJTWFrZSBzdXJlIHRoYXQgRFJJVkVfRmluZERyaXZlUm9vdCBhbHdheXMgcmV0dXJucyBhbiBhYnNvbHV0ZSBwYXRoLgoKCSogcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW46CglBZGRlZCBkZXBlbmRlbmN5IG9uIHByb2dyYW0gc3ltbGluayBmb3IgdW5pdCB0ZXN0cy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JlZ2VkaXQuYywgcHJvZ3JhbXMvcmVnZWRpdC90ZXN0cy8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9yZWdlZGl0L3Rlc3RzL29yaWcucmVnLAoJICBwcm9ncmFtcy9yZWdlZGl0L3Rlc3RzL3JlZ2VkaXQucGw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIHJlZ2VkaXQgdW5pdCB0ZXN0LCBhIGNvdXBsZSBtaW5vciBjaGFuZ2VzIHRvIHJlZ2VkaXQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvcGFyc2VkdC5jLAoJICBkbGxzL29sZWF1dDMyL3BhcnNlZHQuaCwgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgaW5jbHVkZS93dHlwZXMuaDoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIFZhckFuZCwgVmFyQ21wIChTdHJpbmdzIG9ubHkpLCBWYXJOb3QgaW1wbGVtZW50ZWQuCgktIFZhclBhcnNlTnVtRnJvbVN0ci9WYXJOdW1Gcm9tUGFyc2VOdW0gaGFuZGxlIG5lZ2F0aXZlIGN1cnJlbmN5CgkgIG51bWJlcnMuCgktIE1vcmUgVmFyQ21wIHN1cHBvcnQgKERlY2ltYWxzIGFuZCBEYXRlcykuCgktIERhdGUgc3VwcG9ydCBmb3IgVkIgdGltZSBvbmx5ICgwLjAtPjEuMCksIGNvcnJlY3RlZCBzb21lIGRhdGUKCSAgcm91bmRpbmcgYW5kIGNhbGN1bGF0aW9uIGVycm9ycyBhcm91bmQgdmFyaWFudCBkYXRlcyBhbmQgdGhlIHN5c3RlbQoJICB0aW1lLgoJLSBWYXJpYW50IGRhdGUgc3VwcG9ydCBub3cgcm91bmQgdHJpcHMhIChEYXRlLT5WYXJpYW50LT5EYXRlKSBkdWUgdG8KCSAgbWlzdXNlIG9mIHRtX21vbiAoMC4uMTEgbm90IDEuLjEyKS4KCS0gQmV0dGVyIHByZS0xODk5IHN1cHBvcnQgZm9yIGRhdGVzIGluIHRoZSBTWVNURU1USU1FIGZvcm1hdC4KCS0gVmFyQnN0ckZyb21DeSwgVmFyQ3lGcm9tU3RyIGltcGxlbWVudGVkLgoJLSBWYXJGb3JtYXQgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiAoY3VycmVuY3kgYW5kIGRhdGUgc3VwcG9ydCkuCgktIFZhckZvcm1hdEZyb21Ub2tlbnMsIFZhclRva2VuaXplRm9ybWF0U3RyaW5nIHBhcnRpYWwgaW1wbGVtZW50YXRpb24KCSAgYXMgcGVyIHcyayAoZGF0ZXMgb25seSBzbyBmYXIpLgoJLSBCZXR0ZXIgZGVidWdnaW5nIHdoZW4gZHVtcGluZyB2YXJpYW50cywgYW5kIHNvbWUgYWRkaXRpb25hbCB0cmFjZQoJIHBvaW50cyB0byBoZWxwIGRlYnVnZ2luZy4KCS0gRml4IHRvIFZhckJzdHJDbXAgdG8gaGFuZGxlIG51bGwgYW5kIGVtcHR5IHN0cmluZyB0aGUgc2FtZSAoYXMgcGVyCgkgIHcyaywgZGlmZmVyZW50IHRvIG1zZG4pLgoJLSBGaXggcmV0dXJuIGZyb20gVmFyRGF0ZUZyb21VZGF0ZS4KCS0gQ29ycmVjdCBkZWZpbml0aW9uIG9mIENZIHN0cnVjdHVyZS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvdmlydHVhbC5jOgoJQXZvaWQgbG9hZGluZyBwcm9ncmFtcyBpbnRvIHRoZSBET1MgbWVtb3J5IGFyZWEuCgoJKiBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvcmVnYXBpLnBsOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglSZW1vdmVkIHRyYWNlcyBvZiB0aGUgcmVnZWRpdCB1bml0IHRlc3RzLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZCByb3V0aW5lcyB0byBkdW1wIG91dCB0YWIgaXRlbXMgaW50ZXJuYWxseSBhbmQgZXh0ZXJuYWxseQoJLSBBZGp1c3QgVEFCX1NldEl0ZW1Cb3VuZHMgdG8gc3BsaXQgdmVydGljYWwgdGFicyBtb3JlIGxpa2UgdGhlIG5hdGl2ZS4KCS0gRG9jdW1lbnQgbWFqb3IgZGlmZmVyZW5jZSBpbiBsYXlpbmcgb3V0IHRoZSB2ZXJ0aWNhbCB0YWJzLgoJLSBGaXggZHJhd2luZyBvZiBpY29ucy4gV3JvbmcgaXRlbSBwYWRkaW5nIHVzZWQgaW4gdmVydGljYWwgY2FzZS4KCS0gRml4ZWQgc2l6ZSBvZiBob3Jpem9udGFsIHBhZGRpbmcuCgoJKiBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJVHlwZWxpYjo6SW52b2tlOiBIYW5kbGUgZGlmZmVyZW50IGxlbmd0aCBhcmd1bWVudHMgYmV0dGVyLCB3ZSBhbHNvCglyZXR1cm4gMSBWQVJJQU5UIG9ubHkuCgoJKiB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW46CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglQb3J0YWJpbGl0eSBmaXguCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW46CglTdGV2ZW4gRWR3YXJkcyA8c3RldmVuX2VkNDE1M0B5YWhvby5jb20+CglHaXZlIHRoZSBpbXBvcnQgbGlicyBhIHByb3BlciBuYW1lLgoKCSogaW5jbHVkZS9zZXR1cGFwaS5oOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CgknY2xhc3MnIGlzIGEgcmVzZXJ2ZWQgd29yZCAoQysrKS4KCjIwMDItMDYtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3dpbmVtYWtlci5tYW4sCgkgIGxpYnJhcnkvTWFrZWZpbGUuaW4sIG9sZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLAoJICBwcm9ncmFtcy93aW5lbGF1bmNoZXIuaW4sIHRvb2xzLy5jdnNpZ25vcmUsIHRvb2xzL01ha2VmaWxlLmluLAoJICB0b29scy93aW5hcGkvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWxhdW5jaGVyLmluLCB0b29scy93aW5lbWFrZXIubWFuLAoJICB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdHN4MTEvTWFrZWZpbGUuaW4sCgkgIHVuaWNvZGUvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLAoJICBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxscywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluOgoJRml4ZWQgbWFrZSBpbnN0YWxsIHRhcmdldCB0byB3b3JrIGV2ZW4gd2hlbiBub3RoaW5nIGhhcyBiZWVuIGNvbXBpbGVkCgl5ZXQuCglBZGRlZCBpbnN0YWxsLWxpYiBhbmQgaW5zdGFsbC1kZXYgdGFyZ2V0cyB0byBhbGxvdyBwYXJ0aWFsCglpbnN0YWxsYXRpb25zOyBtb3ZlZCB3aW5lbWFrZXIubWFuIGFuZCB3aW5lbGF1bmNoZXIuaW4gdG8gYmV0dGVyIGZpdAoJaW4gdGhlIG5ldyBpbnN0YWxsIGNhdGVnb3JpZXMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpZjE2MzIvYnVpbHRpbi5jLAoJICB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglVbnJlZ2lzdGVyIDE2LWJpdCBkbGxzIG9uIG1vZHVsZSB1bmxvYWQuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgcmVjdXJzaXZlIFJlZ0RlbGV0ZUtleSBpbiBXaW45NSBlbXVsYXRpb24uCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGluY2x1ZGUvd2luYmFzZS5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEdldEN1cnJlbnRId1Byb2ZpbGVBLgoKCSogb2JqZWN0cy90ZXh0LmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJRXh0VGV4dE91dFc6IGlmIEdldEZvbnRMYW5ndWFnZUluZm8gc2F5cyB0aGF0IHRoZSBmb250IG1heSByZXF1aXJlCglyZW9yZGVyaW5nLCBjYWxsIEdldENoYXJhY3RlclBsYWNlbWVudFcgYW5kIHByaW50IHRoZSByZXN1bHQuCgoJKiBvYmplY3RzL2ZvbnQuYzoKCVNoYWNoYXIgU2hlbWVzaCA8d2luZS1wYXRjaGVzQHN1bi5jb25zdW1lci5vcmcuaWw+CgktIEltcGxlbWVudGVkIGEgc2tlbGV0b24gZm9yIEdldEZvbnRMYW5ndWFnZUluZm8uIFVzaW5nIGNvbnN0IG1hc2tzIHRvCgkgIG1hdGNoIGFnYWluc3QgdGhlIHJlc3VsdCBvZiBHZXRUZXh0Q2hhcnNldEluZm8uIE5vdCBhbGwgYXR0cmlidXRlcyBhcmUKCSAgaW1wbGVtZW50ZWQgeWV0LgoJLSBFbmhhbmNlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgR2V0Q2hhcmFjdGVyUGxhY2VtZW50VyB0byBzdXBwb3J0CgkgIGJhc2ljIHJlb3JkZXJpbmcuIE5vdCBpbXBsZW1lbnRpbmcgdGhlIGZ1bGwgQmlEaSBhbGdvcml0aG0geWV0LgoKCSogZGxscy9rZXJuZWwvbmxzL2hlYi5ubHM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtcGF0Y2hlc0BzdW4uY29uc3VtZXIub3JnLmlsPgoJQ2hhbmdlZCB0aGUgY291bnRyeSdzIG5hbWUgdG8gIklMIiB0byBjb25mb3JtIHRvIGNvbW1vbmx5IGhlbGQKCXByYWN0aWNlcy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBEdW1wIG91dCB0aGUgVENJVEVNIHN0cnVjdHVyZSBmb3IgYXBwcm9wcmlhdGUgbWVzc2FnZXMuCgktIER1bXAgb3V0IHRoZSByZWN0YW5nbGUgZm9yIHRoZSBUQ01fQURKVVNUUkVDVCBtZXNzYWdlLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglTdXBwb3J0IGltYWdlcyBvbiB0aGUgdGFicyBvZiBwYWdlcyB0aGF0IGFyZSBhZGRlZCAobm90IGp1c3QgdGhlCglmaXJzdCkuCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW46CglSZW1vdmVkIGluc3RhbGxfbGliZGlyIHRhcmdldHMgYW5kIGNlbnRyYWxpemVkIHRoZSBzeW1saW5rcyBjcmVhdGlvbgoJaW4gdGhlIG1haW4gZGxsIG1ha2VmaWxlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGlucHV0L2RldmljZS5jLAoJICBkbGxzL2RpbnB1dC9kZXZpY2VfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLAoJICBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywKCSAgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLCBkbGxzL2RpbnB1dDgvLmN2c2lnbm9yZSwKCSAgZGxscy9kaW5wdXQ4L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dDgvZGlucHV0OC5zcGVjLAoJICBkbGxzL2RpbnB1dDgvZGlucHV0OF9tYWluLmMsIGluY2x1ZGUvZDNkdHlwZXMuaCwKCSAgaW5jbHVkZS9kaW5wdXQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJLSBzdXBwb3J0IERpcmVjdElucHV0IDggaW50ZXJmYWNlcy4KCS0gaW1wbGVtZW50ZWQgbW91c2Ugd2hlZWwgc3VwcG9ydC4KCgkqIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIGFyZ3NpemUgZm9yIFZUX0RBVEUuCgoJKiBkbGxzL250ZGxsL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglQYXJ0aWFsbHkgaW1wbGVtZW50IE50T3BlbkZpbGUgYW5kIE50UmVhZEZpbGUuCgoJKiBkbGxzL3gxMWRydi9ldmVudC5jLCBkbGxzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS94MTFkcnYuaDoKCVVwZGF0ZSB0aGUgY3Vyc29yIGZvciBlYWNoIHdpbmRvdyBvbiByZWNlaXZpbmcgYW4gWDExIGV2ZW50LCBkb24ndAoJd2FpdCBmb3IgdGhlIFNldEN1cnNvciBjYWxsLgoJQWRkZWQgRW50ZXJOb3RpZnkgaGFuZGxlciB0byBzZXQgdGhlIGN1cnNvciBvbiB3aW5kb3cgbWFwL3VubWFwLgoKCSogaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCVN0b3JlIHRoZSBjdXJyZW50IGN1cnNvciBpbiB0aGUgdGhyZWFkIHF1ZXVlIGluc3RlYWQgb2YgZ2xvYmFsbHkuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29zbWV0aWMgZml4LgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2VuaG1mZHJ2L2JpdGJsdC5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBQYXRCbHQgc3VwcG9ydCBpbiBlbmhhbmNlZCBtZXRhZmlsZXMuCgoyMDAyLTA2LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0aGUgbmFtZXMgb2Ygc29tZSBzdG9jayBmb250cy4KCgkqIGRsbHMvc3RpL3N0aS5zcGVjLCBkbGxzL3N0aS9zdGlfbWFpbi5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgZm9yIFN0aUNyZWF0ZUluc3RhbmNlLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvc2V0dXBhcGkvcXVldWUuYywgZGxscy91c2VyL2xzdHIuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGdyYXBoaWNzL3BhdGguYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBtZW1vcnkgbGVha3MuCgoJKiBkbGxzL2RkcmF3L3ZlcnNpb24ucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdmVyc2lvbiBpbmZvLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGhhbmRsaW5nIG9mIHN0cmluZ3MgdGhhdCBkbyBub3QgZmluaXNoIHdpdGggInx8Ii4KCUZpeCB0aGUgaW5kZW50YXRpb24gb2YgdGhlIHdoaWxlIGxvb3AgaW4gVE9PTEJBUl9BZGRTdHJpbmdXLgoKCSogZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglBZGRlZCBhIGZldyBzdHVicy4KCgkqIGRsbHMva2VybmVsL25scy9iZ3IubmxzOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEJ1bGdhcmlhbiBOTFMgZGVmaW5pdGlvbnMgKHdpdGggdGhlIGhlbHAgb2YgQW50b24gWmlub3ZpZXYpLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVzZXQgc2lnbmFscyB0byBTSUdfREZMIGJlZm9yZSBzdGFydGluZyBhIGNoaWxkIHByb2Nlc3MuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgY3Jhc2hlcyBpZiB3aW5kb3cgYmVsb25ncyB0byBhbm90aGVyIHByb2Nlc3MuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJTWFrZSBidWlsdGlucyBwcmV0ZW5kIHRvIGJlIGxvYWRlZCBmcm9tIHRoZSBzeXN0ZW0gZGlyZWN0b3J5LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglEb24ndCBnbyB0aHJvdWdoIHRoZSBleHBvcnQgdGFibGUgaWYgd2UgYXJlIG5vdCB0cmFjaW5nIGFueXRoaW5nLgoKCSogZGxscy9zZXR1cGFwaS9wYXJzZXIuYzoKCUZvciBsaW5lcyB0aGF0IGNvbnRhaW4gYSBzaW5nbGUgZmllbGQsIHRoZSBmaWVsZCBpcyBhbHNvIHRoZSBsaW5lIGtleQoJKHRoYW5rcyB0byBBcmljIFN0ZXdhcnQpLgoKCSogZGxscy9zZXR1cGFwaS9pbnN0YWxsLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2hlbiBwcm9jZXNzaW5nIHRoZSByZWcgc2VjdGlvbiB3ZSBuZWVkIHRvIGRlbGV0ZSBiZWZvcmUgYWRkaW5nLgoJRmlyc3QgcGFzcyBpbXBsZW1lbnRhdGlvbiBvZiBVcGRhdGVJbmkuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQWRkZWQgYW4gZW1wdHkgaW1wbGVtZW50YXRpb24gZm9yIFV1aWRGcm9tU3RyaW5nQS9XLgoKCSogZGxscy9udGRsbC9oZWFwLmM6CglSZXN0b3JlZCBNYWtlQ3JpdGljYWxTZWN0aW9uR2xvYmFsIHRoYXQgZ290IGxvc3Qgc29tZXdoZXJlLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOgoJRG9uJ3QgdHJ5IHRvIG9wZW4gQ0RST00gZGV2aWNlIGlmIG5vbmUgd2FzIHNwZWNpZmllZC4KCgkqIGRsbHMva2VybmVsL3RpbWUuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBDQUxfSVRXT0RJR0lUWUVBUk1BWC4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJc3RydWN0IF9zdGF0IGxheW91dCBpcyBkaWZmZXJlbnQgYmV0d2VlbiBjcnRkbGwgYW5kIG1zdmNydC4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJU3RvcmUgcHJpbnQgZGxnIHN0cnVjdHVyZSBpbiBhIHByb3BlcnR5IGluc3RlYWQgb2YgRFdMX1VTRVIuCgoJKiBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyLnNwZWMsIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzJfbWFpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHN0dWJzIGZvciBjYXBHZXREcml2ZXJEZXNjcmlwdGlvbi4KCgkqIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJQWRkZWQgL2cgZGVidWcgZm9ybWF0IHRvIGR1bXAgR1VJRHMuCgoJKiBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRG9uJ3QgYXNrIGZvciBzb3VyY2UgZmlsZSBpbiBhdXRvIG1vZGUuCgoJKiBvbGUvb2xlMm5scy5jOgoJUGF1bCBNaWxsYXIgPHBhdWxtQGFzdHJvLmdsYS5hYy51az4KCUZpeCB1c2Ugb2YgTE9DQUxFX05PVVNFUk9WRVJSSURFIGZsYWcgaW4gR2V0TnVtYmVyRm9ybWF0QSBhbmQKCUdldEN1cnJlbmN5Rm9ybWF0QS4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbGlzdGJveC5jOgoJTWFrZSBzdXJlIGVkaXQgYW5kIGxpc3Rib3ggY29udHJvbHMgYXJlIG9mIHNhbWUgQVNDSUkvVW5pY29kZSBzdHlsZSBhcwoJdGhlIGNvbWJvIGJveC4gRml4ZWQgYSBmZXcgTUJDUyBpc3N1ZXMgd2l0aCBXTV9HRVRURVhUTEVOR1RIIGhhbmRsaW5nLgoKCSogZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL2J1ZmZlci5jLAoJICBkbGxzL2Rzb3VuZC9jYXB0dXJlLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2Rzb3VuZC9kc291bmRfcHJpdmF0ZS5oLAoJICBkbGxzL2Rzb3VuZC9taXhlci5jLCBkbGxzL2Rzb3VuZC9wcmltYXJ5LmMsCgkgIGRsbHMvZHNvdW5kL3Byb3BzZXQuYywgZGxscy9kc291bmQvc291bmQzZC5jLCBpbmNsdWRlL2Rzb3VuZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglTdXBwb3J0IERpcmVjdFNvdW5kIDggaW50ZXJmYWNlcy4gU3BsaXQgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9ucyBpbnRvCglzZXBhcmF0ZSBmaWxlcy4gU3BsaXQgcHJpbWFyeSBidWZmZXIgYW5kIHNlY29uZGFyeSBidWZmZXIgaW50ZXJmYWNlcwoJaW50byBzZXBhcmF0ZSBpbXBsZW1lbnRhdGlvbnMuIE1hZGUgdGhlIHByaW1hcnkgYnVmZmVyIHN0YXRlIHBhcnQgb2YKCXRoZSBkc291bmQgb2JqZWN0LCBzbyBwcmltYXJ5IGJ1ZmZlciBvYmplY3RzIGNhbiBiZSBjcmVhdGVkIGFuZAoJcmVmY291bnRlZCBpbmRlcGVuZGVudGx5LiBNYWRlIHRoZSBpbnRlcmZhY2VzIGZvbGxvdyBDT00gYWdncmVnYXRpb24KCXJ1bGVzIG1vcmUgY2xvc2VseS4gQ29udmVydGVkIHRoZSBkc291bmQgY3JpdGljYWwgc2VjdGlvbiB0byBhIFIvVwoJbG9jayB0byBpbXByb3ZlIHBvdGVudGlhbCByZW1peGluZyBjb25jdXJyZW5jeS4gRml4ZWQgdmFyaW91cyBidWdzIGFuZAoJcmVmY291bnRpbmcgaXNzdWVzLgoKCSogZGxscy9jb21jYXQvTWFrZWZpbGUuaW4sIGRsbHMvY29tY2F0L2NvbWNhdC5oLAoJICBkbGxzL2NvbWNhdC9jb21jYXQuc3BlYywgZGxscy9jb21jYXQvY29tY2F0X21haW4uYywKCSAgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywgZGxscy9jb21jYXQvcmVnaXN0ZXIuYywKCSAgZGxscy9jb21jYXQvcmVnc3ZyLmMsIGRsbHMvY29tY2F0L3JlZ3N2ci5oOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJQ29tcGxldGVkIGltcGxlbWVudGF0aW9uIG9mIGNvbWNhdC5kbGwsIGluY2wuIERsbFtVbl1SZWdpc3RlclNlcnZlci4KCgkqIHByb2dyYW1zL3JlZ3N2cjMyL01ha2VmaWxlLmluOiBEb24ndCB1c2UgbXN2Y3J0LgoKCSogcHJvZ3JhbXMvcmVnc3ZyMzIvcmVnc3ZyMzIuYzoKCUdyZWdnIE1hdHRpbnNvbiA8Z20xMzgyNDJAc2NvdC5jYW5hZGEuc3VuLmNvbT4KCVJlcGxhY2VkIHN0cmljbXAvc3RybmljbXAgd2l0aCBzdHJjYXNlY21wL3N0cm5jYXNlY21wLgoKCSogZGxscy94MTFkcnYvZGVza3RvcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRGlzcGxheSB0aGUgbmFtZSBvZiB0aGUgc3RhcnRlZCBwcm9jZXNzIGluIHRoZSBkZXNrdG9wIHRpdGxlLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCVdvbiBLeXUgUGFyayA8d2twYXJrQGNoZW0uc2trdS5hYy5rcj4KCUZpeGVkIGRlZmF1bHRHdWlGb250IGZvciBLb3JlYW4uCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQ29ycmVjdCBwYWdlIHJlY3RhbmdsZSBjYWxjdWxhdGlvbi4KCS0gSW1wcm92ZSB0cmFjZXMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCVBldGVyIEh1bm5pc2V0dCA8cGV0ZXJAdHJhbnNnYW1pbmcuY29tPgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CgktIGNoZWNrIGZvciBzb2NrYWRkciBiZWluZyBOVUxMLgoJLSBoYWNraXNoIGltcGxlbWVudGF0aW9uIG9mIFdTQUR1cGxpY2F0ZVNvY2tldC4KCjIwMDItMDYtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi9rZXlib2FyZC5jOgoJRGF2aWQgSGFtbWVydG9uIDxkYXZpZEB0cmFuc2dhbWluZy5jb20+CglNYXBWaXJ0dWFsS2V5IGFjdHVhbGx5IHJldHVybnMgdXBwZXJjYXNlIGtleXMgaW4gV2luZG93cy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJRGF2aWQgSGFtbWVydG9uIDxkYXZpZEB0cmFuc2dhbWluZy5jb20+CglQZXRlciBIdW5uaXNldHQgPHBldGVyQHRyYW5zZ2FtaW5nLmNvbT4KCS0gRml4IFRyYW5zbGF0ZU1lc3NhZ2UgcmV0dXJuIGNvZGUuCgktIE1ha2UgR2V0S2V5U3RhdGUgd29yayBwcm9wZXJseSBmb3IgYXBwcyB0aGF0IHRlc3QgMHg4MCBpbnN0ZWFkIG9mCgkgIDB4ODAwMC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBtb3JlIG1hZ2ljIHRvIGZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBuYW1ldGFibGUuCgoJKiBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L2luaXQuYywgZGxscy9nZGkvd2luMTZkcnYvd2luMTZkcnYuaCwKCSAgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy93aW5lcHMvaW5pdC5jLAoJICBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3gxMWRydi94cmVuZGVyLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGluY2x1ZGUvZ2RpLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLAoJICBvYmplY3RzL3JlZ2lvbi5jOgoJTW92ZWQgREMgb3JpZ2luIGludG8gZGV2aWNlLXNwZWNpZmljIHN0cnVjdHVyZS4KCUZpeGVkIGhhbmRsaW5nIG9mIERDIG9yaWdpbiBpbiBYMTEgZHJpdmVyLgoKCSogZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jOgoJRGF2aWQgRC4gSGFnb29kIDx3b3diYWdnZXJAc2t0Yy5uZXQ+CglBRFBDTSBueWJibGUgcHJvY2Vzc2luZyBvcmRlciB3YXMgaW5jb3JyZWN0LgoKCSogZGxscy91c2VyL3RleHQuYzoKCVBhdWwgUnVwZSA8cHJ1cGVAbXlyZWFsYm94LmNvbT4KCUZhc3RlciBwZXJmb3JtYW5jZSBpbiBURVhUX0VsbGlwc2lmeSBmb3IgbG9uZyBzdHJpbmdzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJUGF1bCBSdXBlIDxwcnVwZUBteXJlYWxib3guY29tPgoJU3VwcG9ydCBmb3IgTFZNX1NVQklURU1ISVRURVNUOyBjaGVjayBmb3Igb3V0LW9mLWJvdW5kcyBzdWJpdGVtIGluZGV4CglpbiBMSVNUVklFV19HZXRTdWJJdGVtUmVjdC4KCgkqIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NhLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Dcy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRGEucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RlLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fbi5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW8ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9GaS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRnIucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0h1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9JdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfSmEucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0tvLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9ObC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfTm8ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1BsLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfUnUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1NrLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tdi5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfV2EucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1poLnJjOgoJTml4IE4uIE5peCA8bml4QGdvLW5peC5jYT4KCUFkZGVkIFJ1bkZpbGVEbGcgd2l0aCBNUlUgbGlzdC4KCUFkZGVkIHRlbXBsYXRlIHRvIGFsbCAucmMgZmlsZXMuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3Muc2dtbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglTb21lIGdyYW1tYXIgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9Lby5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLAoJICBkbGxzL2NvbW1kbGcvY2RsZ19Lby5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfS28ucmMsCgkgIGRsbHMvd2luZXBzL3JzcmMucmMsIGRsbHMvd2luZXBzL3dwc19Lby5yYzoKCVdvbi1reXUgUGFyayA8d2twYXJrQGtsZHAub3JnPgoJQWRkZWQgS29yZWFuIHJlc291cmNlcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJLSBTYXZlIGFuZCByZXN0b3JlIGN1cnJlbnQgZGlyZWN0b3J5IGluIEdldEZpbGVEaWFsb2c5NVcgaWYKCSAgT0ZOX05PQ0hBTkdFRElSIGZsYWcgc2V0LgoJLSBHZXRGaWxlRGlhbG9nOTVXOiBvbmx5IGNvbnZlcnQgb2ZuLT5scFRlbXBsYXRlTmFtZSBpZiBpdCdzIGEgc3RyaW5nCgkgIHJlc291cmNlIGlkIChmaXhlcyBPcGVuT2ZmaWNlIDEuMCBmaWxlIG9wZW4gZGlhbG9nIGNyYXNoKS4KCS0gSWdub3JlIE9GTl9GSUxFTVVTVEVYSVNUIGZsYWcgZm9yIHNhdmUgZmlsZSBkaWFsb2cgKGZpeGVzIHNhdmUKCSAgZGlhbG9nIGluIEVsc3RhckZvcm11bGFyKS4KCS0gUmV3cm90ZSBjYXN0cyB0aGF0IHNvbWUgY29tcGlsZXJzIGRvbid0IGFjY2VwdC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZWQgRGxsT3ZlcnJpZGVzIHNvIHdlIHVzZSBidWlsdGluIHJwY3J0NCwgb2xlMzIsIG9sZWF1dDMyLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNZXJnZWQgdGhlIHR3byBzZXJpYWxpemVyIGFuZCB1bnNlcmlhbGl6ZXIgZnVuY3Rpb25zIGludG8gb25lLCBjbGVhbmVkCgl0aGVtIHVwLgoJVlRfUFRSOiBIYW5kbGUgTlVMTCBwb2ludGVycyBieSBzZW5kaW5nIGEgY29va2llLgoJQWRkZWQgc3VwcG9ydCBmb3I6IFZUX0NBUlJBWSwgVlRfRElTUEFUQ0gsIFRLSU5EX1JFQ09SRCwgVlRfVk9JRCwKCVZUX1VJMSwgVlRfVUkyLCBWVF9FUlJPUiwgVlRfVUk0LCBWVF9VSU5ULgoJQWRkZWQgYSBjdXN0b20gc2VyaWFsaXplciBmb3IgRElTUFBBUkFNUyBzdHJ1Y3QuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBkZWJ1Z291dHB1dCBmdW5jdGlvbnMgZm9yIFRZUEVBVFRSLCBJRExERVNDLCBWQVJERVNDLgoJU3VwcG9ydCBtb3JlIHBhcmFtZXRlcnMgaW4gX2ludm9rZSAobmVlZGVkIGZvciBJRGlzcGF0Y2g6Okludm9rZSBpbgoJdGhlIG1hcnNoYWxsZXIpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCUhhbmRsZSBhc2NpaSAmIHVuaWNvZGUgZHJhZyBhbmQgZHJvcCBzdHJ1Y3R1cmVzIGluIERyYWdRdWVyeUZpbGVBICYKCURyYWdRdWVyeUZpbGVXLgoKCSogZGxscy9vcGVuZ2wzMi93Z2wuYywgaW5jbHVkZS93aW5nZGkuaDoKCUplc3NlIEFsbGVuIDx1aF9qYUBnbXgubmV0PgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIHdnbFN3YXBMYXllckJ1ZmZlcnMuCgoJKiBkbGxzL250ZGxsL2xvYWRlci5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJLSBQYXJ0aWFsbHkgaW1wbGVtZW50IExkckdldERsbEhhbmRsZS4KCS0gSW1wbGVtZW50IExkckdldFByb2NlZHVyZUFkZHJlc3MuCgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5mcjoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVwZGF0ZWQgc28gaXQncyBpbiBsaW5lIHdpdGggUkVBRE1FLgoKMjAwMi0wNi0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIFZFUlNJT04sIGNvbmZpZ3VyZSwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMjA2MDUuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMDYtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL1JFQURNRS5mcjoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCVVwZGF0ZWQgUkVBRE1FLmZyIHNvIGl0J3MgaW4gbGluZSB3aXRoIFJFQURNRS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1hcmNlbG8gV2VsdGVyIDxwb3ViYWNrQHN5c21vLmNvbS5icj4KCUFkZGVkIFBDRl9UT1RBTFRJTUVPVVRTIHRvIGNvbW0gcHJvcGVydGllcy4KCgkqIFJFQURNRToKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJVXBkYXRlIEZyZWVCU0QtcmVsYXRlZCBub3Rlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywgZmlsZXMvZmlsZS5jOgoJQ2hlY2sgYWNjZXNzIHJpZ2h0cyBiZWZvcmUgcmVuYW1pbmcgb3IgZGVsZXRpbmcgZmlsZXMgKGJhc2VkIG9uCglwYXRjaGVzIGJ5IFV3ZSBCb25uZXMgYW5kIERtaXRyeSBUaW1vc2hrb3YpLgoKCSogZG9jdW1lbnRhdGlvbi9SRUFETUUuZnI6CglKZWFuLUJydW5vIEx1Z2luYvxobCA8amVhbl9icnVub19sdWdpbmJ1aGxAeWFob28uZnI+CglGcmVuY2ggdHJhbnNsYXRpb24gb2YgdGhlIFJFQURNRSBmaWxlLgoKMjAwMi0wNi0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NobHdhcGkvd3NwcmludGYuYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3VzZXIvd3NwcmludGYuYywgaW5jbHVkZS93aW51c2VyLmg6CglEdXBsaWNhdGVkIHdzcHJpbnRmIGltcGxlbWVudGF0aW9uIGluIHNobHdhcGkuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLCBSRUFETUU6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglEb2N1bWVudGF0aW9uIGltcHJvdmVtZW50cy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCU9ubHkgYWxsb3cgdGFicyBpbiBwb3B1cCBtZW51cywgYW5kIG1ha2Ugc3VyZSB0byBuZXZlciBkaXNwbGF5IHRoZW0uCgoJKiBkbGxzL29sZTMyL29sZXByb3h5LmMsIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuYywgd2luZWRlZmF1bHQucmVnOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIG1hcnNoYWxsaW5nIG9mIElVbmtub3duLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNnNzExLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NldHVwYXBpLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZW1wMy5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jLCBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywKCSAgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCB3aW4zMi9leGNlcHQuYywgd2luZWRlZmF1bHQucmVnOgoJQWRkZWQgLS1kZWJ1Z21zZyBvcHRpb24gdG8gdGhlIGRlYnVnZ2VyLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIHByb2dyYW1zL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lZmlsZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lZmlsZS9EZS5yYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvRW4ucmMsIHByb2dyYW1zL3dpbmVmaWxlL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lZmlsZS9saWNlbnNlLmMsIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLmgsCgkgIHByb2dyYW1zL3dpbmVmaWxlL3Jlc291cmNlLnJjLCBwcm9ncmFtcy93aW5lZmlsZS9yc3JjLnJjLAoJICBwcm9ncmFtcy93aW5lZmlsZS9zcGxpdHBhdGguYywgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuYywKCSAgcHJvZ3JhbXMvd2luZWZpbGUvd2luZWZpbGUuaDoKCU1lcmdlZCBNYXJ0aW4gRnVjaHMnIGZpbGUgbWFuYWdlciAod2l0aCB0aGUgaGVscCBvZiBTdGV2ZW4gRWR3YXJkcykuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmM6CglDaGVjayBpZiByZWxheSBkZWJ1Z2dpbmcgaXMgc3RpbGwgb24gYmVmb3JlIHByaW50aW5nIHNvbWV0aGluZy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgluaXRpYWxEaXIgaGFuZGxpbmcgYW5kIEluaXRpYWxGaWxlIGhhbmRsaW5nIG5vdyBhZ3JlZXMgd2l0aCBNU0ROCglkZXNjcmlwdGlvbiwgYW5kIHRlc3Rpbmcgb24gd2luMjAwMCBhcHBlYXJzIHRvIGFncmVlLgoJaWxlbmFtZSBmaWVsZCBub3QgY2xlYXJlZCB3aGVuIGRpcmVjdG9yeSBzZWxlY3RlZC9jbGlja2VkIG9uLgoJT0ZOX05PVkFMSURBVEUgZmllbGQgbm8gbG9uZ2VyIGNhdXNlcyB0cmFwcywgYW5kIGFwcGVhcnMgdG8gYmVoYXZlIGFzCglwZXIgdzJrLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJRG9uJ3QgZnJlZSB0aGUgc3RhY2sgc2VsZWN0b3IsIGl0J3MgZnJlZWQgaW4gRXhpdFRocmVhZCBhbnl3YXkgKHRoYW5rcwoJdG8gQ2hyaXN0aWFuIENvc3RhKS4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vd2luZW1wMy8uY3ZzaWdub3JlLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vd2luZW1wMy9jb21tb24uYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL2RjdDY0X2kzODYuYywgZGxscy9tc2FjbS93aW5lbXAzL2RlY29kZV9pMzg2LmMsCgkgIGRsbHMvbXNhY20vd2luZW1wMy9odWZmbWFuLmgsIGRsbHMvbXNhY20vd2luZW1wMy9pbnRlcmZhY2UuYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL2wydGFibGVzLmgsIGRsbHMvbXNhY20vd2luZW1wMy9sYXllcjEuYywKCSAgZGxscy9tc2FjbS93aW5lbXAzL2xheWVyMi5jLCBkbGxzL21zYWNtL3dpbmVtcDMvbGF5ZXIzLmMsCgkgIGRsbHMvbXNhY20vd2luZW1wMy9tcGVnbDMuYywgZGxscy9tc2FjbS93aW5lbXAzL21wZzEyMy5oLAoJICBkbGxzL21zYWNtL3dpbmVtcDMvbXBnbGliLmgsIGRsbHMvbXNhY20vd2luZW1wMy90YWJpbml0LmMsCgkgIGRsbHMvbXNhY20vd2luZW1wMy93aW5lbXAzLmFjbS5zcGVjLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgYSBNUDMgZGVjb2RlciAoYmFzZWQgb24gbXBnbGliKS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGlmMTYzMi9yZWxheS5jLAoJICBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L2RlYnVnLmMsIG1pc2Mvb3B0aW9ucy5jLAoJICByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgd2luZG93cy9zcHkuYzoKCU1vdmVkIHNwZWNpZmljYXRpb24gb2YgcmVsYXkgYW5kIHNub29wIGluY2x1ZGUvZXhjbHVkZSBmdW5jdGlvbnMgdG8KCXRoZSBjb25maWcgZmlsZS4KCUNoYW5nZWQgc3B5IGNvbmZpZyBhIGJpdCB0byBmb2xsb3cgdGhlIHNhbWUgc2NoZW1lLgoJTW92ZWQgZGVidWcgb3B0aW9uIHBhcnNpbmcgcm91dGluZSBpbnRvIGxpYndpbmUuCgoJKiBpbmNsdWRlL2ZvbnQuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9tZXRhZmlsZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywKCSAgb2JqZWN0cy9tZXRhZmlsZS5jLCBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9tZmRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJQmV0dGVyIGVuY2Fwc3VsYXRpb24gb2YgdGhlIGZvbnQgYW5kIG1ldGFmaWxlIG9iamVjdHMuCgoJKiBNYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2FybiB0aGUgdXNlciBpZiAnd2luZScgd2lsbCBub3QgZmluZCBpdHMgbGlicmFyaWVzIGFmdGVyIGluc3RhbGxhdGlvbgoJb24gJ21ha2UgaW5zdGFsbCcuCgoJKiBkbGxzL29sZTMyL3JwYy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglGaXhlZCBpbmNvcnJlY3QgcG9pbnRlci1jYXN0IGFyaXRobWV0aWMuCglFeHRlbmRlZCBvbGUgdHJhY2UgaW5mb3JtYXRpb24uCglEb24ndCBsb3NlIHRoZSBleGlzdGluZyBwaXBlcyBvbiBhbGxvYyBmYWlsdXJlLgoKCSogZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL3NoZWxsLnNwZWMsIGRsbHMvc2hlbGwzMi92ZXJzaW9uMTYucmM6CglKb2hhbiBHaWxsIDxqb2hhbmVAbHlzYXRvci5saXUuc2U+CglBZGRlZCB2ZXJzaW9uIGluZm8gdG8gMTYtYml0IHNoZWxsLmRsbC4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCVdhcm5pbmcgZml4LgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhbm90aGVyIHJlZ3Jlc3Npb24gaW4gUGxheVNvdW5kLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglXYXJyZW4gVHVya2FsIDx3dHVya2FsQGNidS5lZHU+CglNb3JlIHN0cmVhbSBkZWZpbml0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3dpbm1tL21jaS5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJUG9ydGluZyBmaXhlcy4KCjIwMDItMDYtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbG9yLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcGFsZXR0ZS5oLAoJICBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwKCSAgb2JqZWN0cy9jb2xvci5jLCBvYmplY3RzL3BhbGV0dGUuYywgZGxscy9nZGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jLCBkbGxzL3R0eWRydi9wYWxldHRlLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6CglCZXR0ZXIgc2VwYXJhdGlvbiBvZiB0aGUgcGFsZXR0ZSBmdW5jdGlvbnMuCglSZW1vdmVkIHRoZSBwYWxldHRlIGRyaXZlci4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgRGVidWdCcmVha1Byb2Nlc3MgKG5vdyBnZW5lcmF0ZXMgRVhDRVBUSU9OX0JSRUFLUE9JTlQgaW5zdGVhZCBvZgoJRVhDRVBUSU9OX1NJTkdMRV9TVEVQKS4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbmZvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGFiaWxpdHkgdG8gdHVybiBvbi9vZmYgZGVidWcgY2hhbm5lbHMuCglSZWltcGxlbWVudGVkIHRoZSBpbmZvIG1hcHMgY29tbWFuZC4KCgkqIGRsbHMveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLCBpbmNsdWRlL2N1cnNvcmljb24uaCwKCSAgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3Mvd2luLmM6CglSZW1vdmVkIENVUlNPUklDT05fSWNvblRvQ3Vyc29yIG5vdyB0aGF0IHdlIHN1cHBvcnQgY29sb3IgY3Vyc29ycy4KCgkqIGRsbHMvY29tY2F0L01ha2VmaWxlLmluLCBkbGxzL2NvbWNhdC9jb21jYXQuaCwKCSAgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUNvbXBsZXRlIElDYXRJbmZvcm1hdGlvbiBpbXBsZW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvbnRkZGsuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlbUBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIE50Q3JlYXRlRmlsZSgpLCBOdE9wZW5GaWxlKCkgYW5kIE50UmVhZEZpbGUoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglGaXhlZCB3cm9uZyBjYXN0OyBNU0ROIHNheXMgbHBEcm9wRmlsZVN0cnVjdC0+cEZpbGVzIGlzIG9mZnNldCBpbgoJYnl0ZXMgKHJlZ2FyZGxlc3Mgb2YgYXNjaWkvdW5pY29kZSkuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQ29ycmVjdGVkIGluc3RhbGxhdGlvbiBvZiB0aGUgd2luZSBhcHBsaWNhdGlvbnMsIGZpeGVkIGNhbGwgdG8KCXJlZ2VkaXQuCgoJKiB0b29scy9iaW4ycmVzLmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglQb3J0YWJpbGl0eSBmaXguCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2NvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50YXRpb24gZm9yIGNvbnNvbGUgY29udHJvbCBldmVudHMgKGluY2x1ZGVzIHByb2Nlc3MgZ3JvdXBzCglzdXBwb3J0KS4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBzZWxlY3Rpb24gYnVncy4KCgkqIGRlYnVnZ2VyL2JyZWFrLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlYWxseSBlbnRlciB0aGUgZGVidWdnZXIgd2hlbiBEZWJ1Z0JyZWFrKFByb2Nlc3MpIGlzIGludm9rZWQgb24KCWRlYnVnZ2VlLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBjdHJsLWMgc3VwcG9ydC4KCgkqIHdpbjMyL2VkaXRsaW5lLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUJldHRlciB0b28gbG9uZyBsaW5lcyBkZXRlY3Rpb24sIGFkZGVkIGRlbCBrZXkgc3VwcG9ydCBpbiBlbWFjcyBtb2RlLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywKCSAgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmMsCgkgIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgaW5jbHVkZS9kaW5wdXQuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCS0gTWFkZSBzdXJlIGNvbnN0IExQIHdlcmUgYWN0dWFsbHkgY29uc3QgaW4gZGlucHV0LmguCgktIFVuaWZvcm1pemVkIHRoZSB7QSxXfSBkZWNsYXJhdGlvbnMgb2Ygc29tZSBzdHJ1Y3R1cmVzLgoKCSogdG9vbHMvZmluZGZ1bmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglTaG93IGluIHdoaWNoIGZpbGUgdGhlIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkLCBhcyB3ZWxsIGFzCgl0aGUgaGVhZGVyIGluIHdoaWNoIGl0IGlzIGRlZmluZWQuCgoyMDAyLTA2LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogKi8qOgoJUmVtb3ZlZCBzb21lIG1vcmUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KCgkqIGxpYnJhcnkvUkVBRE1FLnJlc291cmNlczoKCVJlbW92ZWQgb2Jzb2xldGUgUkVBRE1FLgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYzoKCUFkZGVkIGZhbGxiYWNrIHJlYWQoKSBmb3IgbWlzc2luZy9mYWlsaW5nIG1tYXAoKS4KCjIwMDItMDUtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiAqLyo6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglSZW1vdmVkIHRyYWlsaW5nIHdoaXRlc3BhY2UuCgoJKiBkbGxzL3gxMWRydi9tb3VzZS5jOgoJQXZvaWQgZGl2aXNpb24gYnkgemVybyAodGhhbmtzIHRvIERhdmlkIFJvbmlzKS4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLAoJICB3aW5kb3dzL3BhaW50aW5nLmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jLAoJICBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLAoJICBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywKCSAgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLAoJICBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL2JydXNoLmgsCgkgIGluY2x1ZGUvZm9udC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3BhbGV0dGUuaCwgaW5jbHVkZS9wZW4uaCwKCSAgaW5jbHVkZS9yZWdpb24uaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUveDExZHJ2LmgsCgkgIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RpYi5jLAoJICBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLAoJICBvYmplY3RzL21ldGFmaWxlLmMsIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmM6CglBZGRlZCBmdW5jdGlvbiB0YWJsZSB0byBHREkgb2JqZWN0cyBmb3IgYmV0dGVyIGVuY2Fwc3VsYXRpb24uCglSZW1vdmVkIHNvbWUgZGlyZWN0IGFjY2Vzc2VzIHRvIHRoZSBiaXRtYXAgc3RydWN0dXJlLgoJRml4ZWQgaGFuZGxpbmcgb2Ygc3RvY2sgYml0bWFwIGlmIHNlbGVjdGVkIGluIG11bHRpcGxlIERDcy4KCVNvbWUgbWlub3IgZml4ZXMgdG8gdGhlIERDIGZ1bmN0aW9uIHRhYmxlLgoKCSogc2VydmVyL3VzZXIuYzoKCUZpeGVkIG5leHRfdXNlcl9oYW5kbGUgdG8gYWxzbyB3b3JrIG9uIGRlbGV0ZWQgaGFuZGxlcy4KCgkqIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW46CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVVzZSBuYXRpdmUgbGliYyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBtc3ZjcnQgb25lcy4KCgkqIGRsbHMveDExZHJ2L2tleWJvYXJkLmM6CglTaGFjaGFyIFNoZW1lc2ggPHdpbmUtZGV2ZWxAc3VuLmNvbnN1bWVyLm9yZy5pbD4KCUFkZGVkIElzcmFlbGkgSGVicmV3IGtleWJvYXJkLCBhbmQgZml4ZWQgYSBwcm9ibGVtIGluIHRoZSBtYXRjaGluZyBvZgoJY2hhcmFjdGVycyBhZ2FpbnN0IGRlYWQga2V5cy4KCjIwMDItMDUtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGZpbGVzL2ZpbGUuYywKCSAgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQWRkZWQgd2luZV9zZXJ2ZXJfZmRfdG9faGFuZGxlIHRvIHJlcGxhY2UgRklMRV9EdXBVbml4SGFuZGxlLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJTWF0Y2ggYmVoYXZpb3VyIG9mIEltYWdlTGlzdF9Mb2FkSW1hZ2VBIHdydCBjeCBwYXJhbWV0ZXIgKHdoZW4gc2V0IHRvCgl6ZXJvKS4KCgkqIHdpbjMyL2RldmljZS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCB3YXJuaW5ncy4KCgkqIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJRml4ZXMgZm9yIGJ1aWxkaW5nIG9uIG1pbmd3LgoKCSogdG9vbHMvbWFrZV9yZXF1ZXN0cywgaW5jbHVkZS93aW5lL3NlcnZlci5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsCgkgIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2NvbnNvbGUuaCwKCSAgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsCgkgIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL25hbWVkX3BpcGUuYywKCSAgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywKCSAgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbWIuYywKCSAgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLAoJICBzZXJ2ZXIvd2luZG93LmM6CglSZW5hbWVkIGhhbmRsZV90IHRvIG9ial9oYW5kbGVfdCB0byBhdm9pZCBjb25mbGljdCB3aXRoIHJwY2RjZS5oLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglSZW1vdmVkIC1tYW5hZ2VkIG9wdGlvbi4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzogUG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCS0gRml4ZWQgR2V0U3lzdGVtVGltZUFkanVzdG1lbnQgcHJvdG90eXBlIGFuZCBhZGRlZCBpdCB0byB3aW5iYXNlLmguCgktIEZpeGVkIERvc0RhdGVUaW1lVG9GaWxlVGltZSwgRmlsZVRpbWVUb0Rvc0RhdGVUaW1lLAoJICBMb2NhbEZpbGVUaW1lVG9GaWxlVGltZSwgRmlsZVRpbWVUb0xvY2FsRmlsZVRpbWUgYW5kCgkgIFN5c3RlbVRpbWVUb0ZpbGVUaW1lLgoKMjAwMi0wNS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY2F0L01ha2VmaWxlLmluLCBkbGxzL2NvbWNhdC9jb21jYXQuaCwKCSAgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywKCSAgZGxscy9jb21jdGwzMi91cGRvd24uYywgaW5jbHVkZS9udGRkay5oOgoJUmVwbGFjZWQgc3dwcmludGYgYnkgd3NwcmludGZXLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvcnBjLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUVuc3VyZSB0aGF0IGFuIG91dC1vZi1wcm9jZXNzIENPTSBvYmplY3QgaXMgc3RhcnRlZCBvbmx5IG9uY2UuCglBbGxvdyBvdXQtb2YtcHJvY2VzcyBDT00gb2JqZWN0cyBpZiByZXF1ZXN0IGlzIGZvcgoJaW4tb3Itb3V0LW9mLXByb2Nlc3MuCgoJKiBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIHRvb2xzL3dpbmVkdW1wL1JFQURNRToKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeGVkIHNvbWUgbW9yZSBtaXNzaW5nIFxuIGluIHRyYWNlcy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCS0gQ2hlY2sgZm9yIHZhbGlkIHBhcnQgbnIgaW4gU1RBVFVTQkFSX0dldFRleHRMZW5ndGguCgktIFRSQUNFIGZpeCBpbiBTVEFUVVNCQVJfU2V0VGV4dFQ7IFNCVF9PV05FUkRSQVcgcG9pbnRlciBpc24ndCBhbHdheXMKCSAgYSBzdHJpbmcgcG9pbnRlci4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcm9wcGVkIHN1cGVyZmxvdXMgUmVtb3RlX0NvR2V0Q2xhc3NPYmplY3QoKSAoZW50aXJlbHkgY29udGFpbmVkIGluCgljcmVhdGVfbWFyc2hhbGxlZF9wcm94eSgpKS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lbW0uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU29tZSBvdGhlciBzeW5jaHJvbmlzYXRpb24gaXNzdWVzLgoKCSogZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL250ZGxsL3RpbWUuYzoKCUZpeGVkIHNvbWUgYWxpZ25tZW50IGlzc3VlcyAoYmFzZWQgb24gYSBwYXRjaCBieSBHcmVnZyBNYXR0aW5zb24pLgoKCSogb2xlL29sZTJubHMuYzoKCUZpeGVkIGJ1ZmZlciBoYW5kbGluZyBvZiBzb21lIGxvY2FsZSBmdW5jdGlvbnMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCU1laG1ldCBZYXNhcikuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6CglKYWtvYiBFcmlrc3NvbiA8amFrb2JAdm1saW51eC5vcmc+CglSZW1vdmVkIHJlZHVuZGFudCBjaGVja3MgYW5kIHZhcmlhYmxlcywgZml4ZWQgc29tZSB0ZXN0cywgc29tZQoJY29zbWV0aWMgY2hhbmdlcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL2xvY2FsZS5jOgoJRml4ZWQgc29tZSB0ZXN0cyB0aGF0IHdlcmUgZmFpbGluZyB1bmRlciBXaW5lLgoKCSogaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbm50Lmg6CglNb3ZlZCBXT1JEU19CSUdFTkRJQU4gbWFjcm9zIHRvIGJhc2V0c2QuaC4KCUZpeGVkIEZJTEVUSU1FIGRlZmluaXRpb24gZm9yIGJpZy1lbmRpYW4uCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOgoJR3JlZ2cgTWF0dGluc29uIDxnbTEzODI0MkBzY290LmNhbmFkYS5zdW4uY29tPgoJUmVwbGFjZWQgMCBieSAtMSB0byBpbmRpY2F0ZSBmcmVlIGVudHJ5IGluCglYMTFEUlZfUEFMRVRURV9YUGl4ZWxUb1BhbGV0dGUuCgoJKiBpbmNsdWRlL3dpbm50Lmg6CglHcmVnZyBNYXR0aW5zb24gPGdtMTM4MjQyQHNjb3QuY2FuYWRhLnN1bi5jb20+CglGaXhlZCB0aGUgTEFSR0VfSU5URUdFUiBhbmQgVUxBUkdFX0lOVEVHRVIgdW5pb25zIGZvciBiaWcgZW5kaWFuLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEZpeGVkIGRyYXdpbmcgb2YgYm9yZGVycyB0byB0aGF0IG9mIG5hdGl2ZSAodXNlcyBEcmF3RWRnZSkuCgktIEZpeGVkIGRyYXdpbmcgb2Ygc2VwYXJhdG9ycyB0byBtYXRjaCB0aGUgbmF0aXZlLgoJLSBGaXhlZCBoZWlnaHQgb2YgdGFicyBhbmQgYnV0dG9ucyB0byBtYXRjaCBuYXRpdmUuCgktIEFkZC9pbXByb3ZlZCB0cmFjZXMuCgktIEhhbmRsZSBXTV9TWVNDT0xPUkNIQU5HRSBtZXNzYWdlLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglDaGVjayBmb3IgTlVMTCBwdHIgaW4gbWlkaVN0cmVhbU91dC4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC90ZXN0cy9sb2NhbGUuYzoKCU1laG1ldCBZYXNhciA8bXlhc2FyQGZyZWUuZnI+CglBZGRlZCB0ZXN0IGZvciBsb2NhbGUgZnVuY3Rpb25zLgoKMjAwMi0wNS0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmV3cmFwcGVyOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0aGUgYWJpbGl0eSB0byBhZGQgbG9jYWwgY29uZmlndXJhdGlvbiB0byB3aW5ld3JhcHBlci4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2RjLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2dyYXBoaWNzLmM6CglBIGZldyBmaXhlcyBpbiBFeHRTZWxlY3RDbGlwUmduIG1ldGFmaWxlIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXhlZCBhIG1lbW9yeSBsZWFrIGluIGZpbmRfY2hpbGRfZnJvbV9wb2ludCgpLgoKCSogaW5jbHVkZS9zZXR1cGFwaS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVN0dWIgaW1wbGVtZW50YXRpb25zIG9mIHNvbWUgZnVuY3Rpb25zLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUpvaGFuIEdpbGwgPGpvaGFuZUBseXNhdG9yLmxpdS5zZT4KCU9ubHkgZW51bWVyYXRlIERpcmVjdFNvdW5kIGRldmljZXMgaWYgdGhlIGZpcnN0IHNvdW5kIGRldmljZSBpbiB0aGUKCXN5c3RlbSBzdXBwb3J0cyB0aGUgV2luZSBpbXBsZW1lbnRhdGlvbiBvZiBEaXJlY3RTb3VuZC4gQWxzbyBhZGRlZAoJc29tZSBlbnRyaWVzIHRvIHRoZSBzYW1wbGUgY29uZmlnIGZpbGUgYW5kIGNoYW5nZWQgdGhlIHZhbHVlcyBvZiB0aGUKCSJFbXVsRHJpdmVyIiBrZXkgdG8gIlkiLyJOIi4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglUaGUgU1ZHQSBibG9jayBjb2RlIHdhcyBub3QgYWNjZXNzaWJsZSAoQUggYW5kIEFMIGludmVydGVkKS4gRml4ZWQuCglSZW1vdmVkIGR1cGxpY2F0ZSBWRVNBIEdldCBTdXBlclZHQSBJTkZPUk1BVElPTiBmdW5jdGlvbi4KCUZpeCBhbmQgZmluaXNoIGl0cyBpbXBsZW1lbnRhdGlvbi4KCUFkZCAyIGZ1bmN0aW9ucyB0byBtYW5hZ2VkIHN0cnVjdHVyZXMgaW4gdGhlIEJpb3NTeXMgc2VnbWVudC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsCgkgIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYzoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUZpeGVkIHdhcm5pbmdzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCU1hY2llayBLYWxpc3pld3NraSA8a2Vub25AZ28yLnBsPgoJRml4ZWQgbWVtb3J5IGFsbG9jYXRpb24gYnVnIGluIFBST1BTSEVFVF9Db2xsZWN0UGFnZUluZm8uCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCW1peGVyR2V0Q29udHJvbERldGFpbHNXOiB0cmFuc2xhdGUgc3RyaW5ncyBmb3IKCU1JWEVSX0dFVENPTlRST0xERVRBSUxTRl9MSVNUVEVYVCBvcHRpb24uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCVdhcnJlbiBUdXJrYWwgPHd0dXJrYWxAY2J1LmVkdT4KCUFkZGVkIHN0cnVjdHVyZXMgYW5kIHNvbWUgY29uc3RhbnRzIGZvciBzdHJlYW0gaGFuZGxpbmcuCgoJKiBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVN0dWIgaW1wbGVtZW50YXRpb25zIG9mIHNvbWUgZnVuY3Rpb25zLgoKCSogZmlsZXMvZmlsZS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCVNpbGVuY2UgZml4bWUgaW4gdW5uZWNlc3Nhcnkgc2l0dWF0aW9uLCBhZGQgbWlzc2luZyBcbiB0byBhbm90aGVyIGZpeG1lLgoKMjAwMi0wNS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgZGxscy94MTFkcnYveHJlbmRlci5jLAoJICBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsCgkgIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcmVnaW9uLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9nZGlvYmouYywKCSAgb2JqZWN0cy9yZWdpb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy93aW5wb3MuYywKCSAgZGxscy9nZGkvbWZkcnYvZ3JhcGhpY3MuYzoKCVJlbW92ZWQgZGVwZW5kZW5jaWVzIG9uIHRoZSBpbnRlcm5hbHMgb2YgdGhlIHJlZ2lvbiBvYmplY3QuCglEbyBub3Qgc3RvcmUgdGhlIHJlZ2lvbiB0eXBlIGluIHRoZSBvYmplY3QsIGl0J3MgdHJpdmlhbCB0byBkZXRlcm1pbmUKCWZyb20gdGhlIHJlY3RhbmdsZSBjb3VudC4KCVJld3JvdGUgYSBmZXcgcm91dGluZXMgdG8gbm90IGRlcGVuZCBvbiBpbnRlcm5hbCBjbGlwcGluZyBvciByZWdpb24KCWZ1bmN0aW9ucy4KCgkqIHdpbjMyL2RldmljZS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBBZGQgc29tZSB1bmRvY3VtZW50ZWQgaW9jdGwgbWFwcGluZ3MuCgktIENvcnJlY3QgT3BlblZ4REhhbmRsZSBwcm90b3R5cGUsIGRvY3VtZW50IGl0LCBoYXZlIGEgdHJ5IGF0CgkgIHJldHVybmluZyBhIFJpbmcgMyBoYW5kbGUgYW5kIG1ha2UgRklYTUUgbW9yZSB2ZXJib3NlLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjb250L3Bhc3MgbWlzbWF0Y2guCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvZXhwci5jLAoJICBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci90eXBlcy5jLAoJICBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUhhY2tlZCB1bmljb2RlIHByaW50aW5nIGZlYXR1cmUgKHggL3UpLgoJTWFkZSB0aGUgdHlwZSBjYXN0cyBhIGJpdCBtb3JlIHJvYnVzdC4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmg6CglGaXhlZCBwcm9jZXNzIHN0YXJ0dXAgc3luY2hyb25pemF0aW9uIGJyb2tlbiBieSBwcmV2aW91cyBjaGFuZ2UuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUZpeGVkIHR5cG8gaW4gaXN3YWxwaGEgZm9yd2FyZC4KCgkqIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYzoKCU9ubHkgYWRkIGV4dHJhIHN5bWJvbHMgaWYgdGhleSBhcmUgbm90IGFscmVhZHkgZXhwb3J0ZWQgYnkgdGhpcyBkbGwuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHdpbmUgZXhlYyBmaWxlIGxvY2F0aW9uIGFmdGVyIHN0YXJ0dXAgbW9kaWZpY2F0aW9ucy4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBVc2UgV2luOTggU0UgdmFsdWVzIGZvciBXSU45OCBzZXR0aW5nLgoJLSBXaW4gTUUgaXMgRE9TIDguMDAuCgktIFJlbmFtZSB2YXJpYWJsZSBkZWZhdWx0V2luVmVyc2lvbiB0byBmb3JjZWRXaW5WZXJzaW9uLgoJLSBWRVJTSU9OX0dldFN5c3RlbURMTFZlcnNpb24oKTogYWRkIFcySy9YUCBzdXBwb3J0LCBhZGQgInVua25vd24iCgkgIHdhcm5pbmcuCgoyMDAyLTA1LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmFjLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmU6CglObyBsb25nZXIgbmVlZCBhIHNwZWNpYWwgTERDT01CSU5FIGZvciBjeWd3aW4vbWluZ3cuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIG1lbW9yeS9lbnZpcm9uLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcHRyYWNlLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJQSBmZXcgb3B0aW1pemF0aW9ucyBpbiB0aGUgcHJvY2VzcyBzdGFydHVwIHJlcXVlc3RzIG5vdyB0aGF0IFdpbmVsaWIKCWFwcHMgYXJlIHN0YXJ0ZWQgZGlmZmVyZW50bHkgZnJvbSBVbml4IG9uZXMuCgoJKiBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgbXNkb3MvcHBkZXYuYywgb2JqZWN0cy9yZWdpb24uYywKCSAgd2luZG93cy9zeXNwYXJhbXMuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jLAoJICBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywKCSAgZGxscy9nZGkvZnJlZXR5cGUuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJQWRkIG1pc3NpbmcgXG4gdG8gb3V0cHV0IG1lc3NhZ2VzLgoKCSogZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHBvcnQgcXVlcnlpbmcgb2YgbnVtYmVyIG9mIHZpc3VhbHMgd2l0aG91dCByZXBvcnRpbmcgYW4gZXJyb3Igb3IKCWNyYXNoaW5nLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmgsIG1pc2MvdmVyc2lvbi5jOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBWZXJpZnlWZXJzaW9uSW5mb3tBLFd9LgoKMjAwMi0wNS0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvbWFpbi5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1zZG9zL2Rvc2NvbmYuYywgbXNkb3MvaW50MTEuYywKCSAgbXNkb3MvaW50MWEuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW9wb3J0cy5jLCBvYmplY3RzL2ZvbnQuYywKCSAgb2xlL29sZTJubHMuYywgcHJvZ3JhbXMvcHJvZ21hbi9zdHJpbmcuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgd2luMzIvY29uc29sZS5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmMsIGRsbHMveDExZHJ2L2V2ZW50LmMsCgkgIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvcHJvZmlsZS5jLAoJICBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9vcHRpb25zLmgsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCVJlbW92ZWQgbW9zdCBpbmNsdXNpb25zIG9mIG9wdGlvbnMuaC4KCVJlbW92ZWQgYSBmZXcgbm8gbG9uZ2VyIHVzZWQgUFJPRklMRV8qIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW4sCgkgIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBtaXNjL29wdGlvbnMuYywgbWlzYy92ZXJzaW9uLmMsCgkgIHdpbjMyL2RldmljZS5jOgoJUmVwbGFjZWQgLWRvc3ZlciBhbmQgLXdpbnZlciBvcHRpb25zIGJ5IGNvbmZpZyBmaWxlIHBhcmFtZXRlcnMuCgoJKiBkbGxzL21ha2VfZGxscywgZGxscy9NYWtlZmlsZS5pbjoKCVJlc3RvcmVkIHRoZSBsaWJyYXJ5IGZpbGUgaW50ZXJtZWRpYXRlIHN0ZXAgZm9yIHN5bWxpbmsgZGVwZW5kZW5jaWVzLgoKCSogZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglSZXN0b3JlZCBtYW5hZ2VkIG1vZGUgY29uZmlnIGZpbGUgb3B0aW9uLgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCUR1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglTdXBwb3J0IGZvciBLREUzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJQWRkZWQgY3JlYXRpb24gb2YgYzovd2luZG93cy9mb250cyBhbmQKCWM6L3dpbmRvd3MvU3RhcnQgTWVudS9Qcm9ncmFtcy9TdGFydHVwLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbXByb3ZlIHRoZSBmYWlsdXJlIG1lc3NhZ2VzLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywKCSAgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2Vudmlyb24uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLAoJICB3aW5kb3dzL2NsYXNzLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsCgkgIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBpbmNsdWRlL3VzZXIuaDoKCVJlcGxhY2VkIHRoZSBHRVQvUFVUX1VBIG1hY3JvcyBieSBtZW1jcHkuIEZpeGVkIGEgZmV3IGJpZy1lbmRpYW4KCWlzc3Vlcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJUnVuIG1ha2UgY2xlYW4gaW4gYWxsIGRpcmVjdG9yaWVzLCBldmVuIHRoZSBvbmVzIHdlIGRvbid0IGNvbXBpbGUgaW4uCglTaW1wbGlmaWVkIHN1Yi1kaXJlY3RvcmllcyBydWxlcyBhIGJpdC4KCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2l3YXZlL01ha2VmaWxlLmluOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGltcG9ydHMuCgoJKiBNYWtlZmlsZS5pbjogRml4ZWQgZXRhZ3MgcnVsZS4KCgkqIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLAoJICBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2Mvb3B0aW9ucy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCVJlbW92ZSB0aGUgLS1tYW5hZ2VkIG9wdGlvbiwgYW5kIG1ha2Ugd2luZSB1c2UgdGhlIG1hbmFnZWQgbW9kZSBieQoJZGVmYXVsdC4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIG1pc2MvcmVnaXN0cnkuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVJlbW92ZWQgb2Jzb2xldGUgZW1haWwgYWRkcmVzcy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2FsbG9jLmMsIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYywKCSAgZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy92YXJ0ZXN0LmMsIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jLAoJICBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywgZGxscy91c2VyL3Rlc3RzL3dzcHJpbnRmLmMsCgkgIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2UgdGhlIHRlc3RzIGNvbXBpbGUgd2l0aCBWaXN1YWwgQysrLgoKCSogaW5jbHVkZS9tYXBpY29kZS5oLCBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbmNsdWRlIHdpbmVycm9yLmggaWYgaW4gV2luZWxpYiBtb2RlLgoKMjAwMi0wNS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hdmljYXAzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc2c3MTEuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNybGUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9xdWFydHouYXBpOgoJQXZvaWQgMC1ieXRlIGZpbGVzLgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC9ydW50ZXN0LCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHRvb2xzL3dpbmV3cmFwcGVyLCB3aW4zMi9jb25zb2xlLmMsIC5jdnNpZ25vcmUsIE1ha2UucnVsZXMuaW4sCgkgIE1ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMveDExZHJ2L2NsaXBib2FyZC5jLAoJICBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLAoJICBsaWJyYXJ5L2xvYWRlci5jLCBsb2FkZXIvbW9kdWxlLmMsIG1pc2NlbXUvLmN2c2lnbm9yZSwKCSAgbWlzY2VtdS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy93aW5lYXBwbG9hZGVyLmluLAoJICB3aW5lZGVmYXVsdC5yZWc6CglOZXcgbG9hZGluZyBzY2hlbWUgZm9yIFdpbmVsaWIgYXBwcywgbWFrZXMgdGhlbSBiZWhhdmUgbGlrZSBidWlsdGluCglkbGxzIGFuZCB0YWtlcyBsb2FkIG9yZGVyIGludG8gYWNjb3VudC4gSW5zdGFsbCB0aGVtIGluIGRsbGRpci4KCUltcHJvdmVkIE1PRFVMRV9HZXRCaW5hcnlUeXBlIHRvIHJlY29nbml6ZSBFTEYgYmluYXJpZXMuCglBZGRlZCBhIHdyYXBwZXIgc2NyaXB0IHRvIHNldHVwIHRoZSBlbnZpcm9ubWVudCB3aGVuIHJ1bm5pbmcgZGlyZWN0bHkKCWZyb20gaW5zaWRlIHRoZSBzb3VyY2UgdHJlZS4KCgkqIE1ha2UucnVsZXMuaW4sIGFjbG9jYWwubTQsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjOgoJQWRkZWQgY2hlY2sgZm9yIGxuLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FkcDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNhY20vbXNhZHAzMi9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FkcDMyL21zYWRwMzIuYWNtLnNwZWMsCgkgIGRsbHMvbXNhY20vbXNhZHAzMi9tc2FkcDMyLmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pLAoJICBjb25maWd1cmUuYWMsIGNvbmZpZ3VyZToKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQ3JlYXRlZCBhbiBBQ00gTVMgQURQQ00gY29kZWMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL21tYXV4LmMsIGRsbHMvd2luc29jay9hc3luYy5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywKCSAgZGxscy94MTFkcnYvd2luZWNsaXBzcnYuYywgbXNkb3MvcHBkZXYuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9hdmlmaWxlLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2F2aWNhcDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2F2aWZpbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NvbWNhdC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9pbWFhZHAzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9pbW0zMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc2c3MTEuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNybGUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9xdWFydHouYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hkb2N2dy5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91cmxtb24uYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmVwcy5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlcyB1cGRhdGUuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vd2luZW1tLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGhhbmcgaW4gUGxheVNvdW5kIGluIGVycm9yIGNhc2VzOyBhZGRlZCByZWdpc3RyeSBsb29rdXAgZm9yIHNvdW5kcy4KCgkqIGRsbHMvd2luc29jay90ZXN0cy9zb2NrLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXN3c29jay5oLAoJICBpbmNsdWRlL3dpbnNvY2suaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIG1zd3NvY2suaCwgbW92ZSByZWxldmFudCBkZWZpbml0aW9ucyB0byB0aGlzIGhlYWRlci4KCjIwMDItMDUtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lcGF0aC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2NvbnRyb2wvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvZXhwYW5kLy5jdnNpZ25vcmUsIHByb2dyYW1zL2V4cGFuZC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvbm90ZXBhZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdlZGl0Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3N2cjMyLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3JlZ3N2cjMyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lLy5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lcGF0aC8uY3ZzaWdub3JlLAoJICBNYWtlLnJ1bGVzLmluLCBkZWJ1Z2dlci8uY3ZzaWdub3JlLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9vbGVhdXQzMi90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3NobHdhcGkvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luc29jay90ZXN0cy8uY3ZzaWdub3JlLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluOgoJUmVuYW1lZCBXaW5lbGliIGFwcHMgdG8gLmV4ZS5zbyB0byBmb2xsb3cgdGhlIGRsbCBuYW1pbmcgY29udmVudGlvbi4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9zaGx3YXBpLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRlc3QgZm9yIElTdHJlYW1fSU1FVEhPRFMgYmVmb3JlIGRlZmluaW5nIEFQSXMgdGhhdCBuZWVkIHRoZSBJU3RyZWFtCglpbnRlcmZhY2UgKGxpa2Ugb24gV2luZG93cykuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJQ2hlY2sgZm9yIHN5cy9pb2N0bC5oLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2c3MTEvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2FjbS9tc2c3MTEvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5hY20uc3BlYywKCSAgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmMsIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5kcnYuc3BlYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgYSBHNzExIEFDTSBjb2RlYyAoc3VwcG9ydHMgYm90aCBBLUxhdyBhbmQgTVUtTGF3KS4KCgkqIGRsbHMvbWFrZV9kbGxzOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOb3cgcnVucyBpbiBQZXJsIHN0cmljdCBtb2RlLgoJQWRkZWQgYWJpbGl0eSB0byBza2lwIERMTCBmcm9tIHRoZSB0cmVlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN0dWIgZm9yIEV4dHJhY3RBc3NvY2lhdGVkSWNvbkV4QS4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS9yZWdpc3RyeS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fcHJpdmF0ZS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBbGxvdyBBTlNJIGNoYXJzZXQgaW4gZm9udCBlbnVtZXJhdGlvbi4KCUFkZGVkIGFiaWxpdHkgbm90IHRvIGNsb3NlIHRoZSB3aW5lY29uc29sZSBvbiBjb25zb2xlIG9iamVjdAoJZGVzdHJ1Y3Rpb24uCgoJKiBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYywgd2luZG93cy93aW5wcm9jLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIDE2LzMyIERERSBtZXNzYWdlIGNvbnZlcnNpb24uCglGaW5pc2hlZCB0aGUgMTYgYml0IGltcGxlbWVudGF0aW9uIG9mIERERU1MLgoKMjAwMi0wNS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2V4cGFuZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9leHBhbmQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2V4cGFuZC9leHBhbmQuYzoKCU1vdmVkIGV4cGFuZC5jIGZyb20gbGlidGVzdCB0byBwcm9ncmFtcy9leHBhbmQuCglSZW1vdmVkIHRoZSByZXN0IG9mIHRoZSBsaWJ0ZXN0IGRpcmVjdG9yeS4KCgkqIGNvbmZpZ3VyZS5hYywgZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywKCSAgZGxscy94MTFkcnYveHJlbmRlci5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBhY2xvY2FsLm00LCBjb25maWd1cmU6CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHRoZSBzb25hbWUgb2YgbGlicmFyaWVzIHRoYXQgd2UgbG9hZAoJZHluYW1pY2FsbHkuICBBZGRlZCBhIGZldyBvdGhlciBjb25maWd1cmUgbWFjcm9zLCBhbmQgbW92ZWQgYWxsIG1hY3JvcwoJaW50byBhY2xvY2FsLm00LgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ2xlYXIgYW4gb2xkIGJ1dHRvbiB0ZXh0IGluIFdNX1NFVFRFWFQgYXMgV2luZG93cyBkb2VzLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3lzY29sb3IuYywKCSAgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL21lbnUuYywKCSAgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3VpdG9vbHMuYzoKCUdvdCByaWQgb2YgR2V0U3lzQ29sb3JQZW4uCgoJKiBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy93aW5zcG9vbC9pbmZvLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglCZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL21zdmNydC93Y3MuYzogSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJRml4IG1zdmNydC5fdnNud3ByaW50ZiBmb3JtYXQgcmVhZGluZyBidWcgbGlrZSBOVERMTF92c253cHJpbnRmLgoKCSogd2luZWRlZmF1bHQucmVnOgoJRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCUFkZGVkIFNlcmlhbENvbW0ga2V5LgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3dpbmVwcy9wcGQuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVNwZWxsaW5nIHN0dWZmLgoKCSogZGxscy9udGRsbC9jcml0c2VjdGlvbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglEdW1wIHRocmVhZCBpZCBpbnN0ZWFkIG9mICVmcy4KCjIwMDItMDUtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEbyBub3Qgb3V0cHV0IHN0dWJzIGluIHRoZSAuZGVmIGZpbGUuCgoJKiB1bmljb2RlL3dpbmVfdW5pY29kZS5kZWYsIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLAoJICBpbmNsdWRlL3dpbmUvZGVidWcuaCwgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9NYWtlZmlsZS5pbiwKCSAgbGlicmFyeS9kZWJ1Zy5jOgoJRXhwb3J0IHRoZSBkZWJ1ZyBBUEkgYXMgZnVuY3Rpb25zIGluc3RlYWQgb2YgcG9pbnRlcnMuCglBIGZldyBvdGhlciBpbXBvcnQgZml4ZXMgZm9yIE1pbmd3LgoKCSogZGxscy9udGRsbC93Y3N0cmluZy5jLCBpbmNsdWRlL3dpbmVycm9yLmgsIGRsbHMvY29tY2F0L2NvbWNhdC5oLAoJICBkbGxzL2NvbWNhdC9mYWN0b3J5LmMsIGRsbHMvY29tY2F0L2luZm9ybWF0aW9uLmMsCgkgIGRsbHMvY29tY2F0L21hbmFnZXIuYywgZGxscy9jb21jYXQvcmVnaXN0ZXIuYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCU1vcmUgY29tY2F0LmRsbCBpbXBsZW1lbnRhdGlvbiwgc3dwcmludGYgZml4LCB3aW5lcnJvci5oIGFkZGl0aW9ucy4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLAoJICBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmM6CglBcmplbiBOaWVuaHVpcyA8YXJqZW5AQmxlSFEub3JnPgoJRml4ZWQga2V5Ym9hcmQgaGFuZGxpbmcuCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZmlsZXMvZG9zX2ZzLmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglBZGQgY2hlY2sgZm9yIDxzeXMvaW9jdGwuaD4uCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIEltcHJvdmUgZXJyb3IgbWVzc2FnZXMuCgktIEFkZCBlcnJvciBjb2RlIG1hcHBpbmcgRVBFUk0gLT4gU1RBVFVTX0FDQ0VTU19ERU5JRUQuCgoJKiBkbGxzL2tlcm5lbC9ubHMvYXJrLm5scywgZGxscy9rZXJuZWwvbmxzL2hlYi5ubHMsCgkgIGRsbHMva2VybmVsL25scy9ocnYubmxzLCBkbGxzL2tlcm5lbC9ubHMva29yLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL3RoYS5ubHMsIGRsbHMva2VybmVsL25scy91a3IubmxzOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJQWRkZWQgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgdmFsdWVzIGZvciBzb21lIGxhbmd1YWdlcy4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglBZGRlZCBzdHViIGZvciBEbGxSZWdpc3RlclNlcnZlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX3h4LnJjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglBZGRlZCB2ZXJzaW9uIGluZm8gcmVzb3VyY2UuCgoJKiBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2UgdGhlICdlcnJvcicgc3RyaW5nIG9mIGEgY291cGxlIG9mIGNoZWNrcyBjb25zaXN0ZW50IHdpdGggdGhlCglvdGhlcnMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIHRoZSBXaW5FeGVjIHByb3RvdHlwZS4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUltcGxlbWVudGVkIF9nZXR3cy4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIG1pc3NpbmcgV0lOX1JlbGVhc2VXbmRQdHIgaW4gV0lOX0NyZWF0ZURlc2t0b3BXaW5kb3cuCgoJKiBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJVmluY2VudCBC6XJvbiA8dmJlcm9uQG1lY2Fuby5nbWUudXNoZXJiLmNhPgoJQ29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBWZXJTZXRDb25kaXRpb25NYXNrLgoKMjAwMi0wNS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbWFrZV9kbGxzOgoJR2VuZXJhdGUgYSBrZXJuZWwzMiBkZXBlbmRlbmN5IGZvciBkbGxzIHRoYXQgaGF2ZSBubyBpbXBvcnRzIHRvIGhhbmRsZQoJdGhlIHdpbmVidWlsZC1nZW5lcmF0ZWQgaW1wbGljaXQgaW1wb3J0LgoKCSogbGlicmFyeS9kZWJ1Zy5jOgoJQWRkZWQgY2hlY2sgZm9yIG51bWVyaWMgaWRzIGFuZCBudWxsIHBvaW50ZXJzICh0aGFua3MgdG8gRGltaXRyaWUpLgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3N2cjMyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVwYXRoL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWFuaW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vbWNpYXZpL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWNkYS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9tY2lzZXEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpd2F2ZS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9taWRpbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWFydHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5ubHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2ludHJ1c3QvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9xY2FwL01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwKCSAgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwKCSAgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc25tcGFwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zdGkvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy90d2Fpbi9NYWtlZmlsZS5pbiwKCSAgZGxscy91cmwvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLAoJICBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL01ha2VmaWxlLmluLAoJICBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL21hcGkzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNnNzExL01ha2VmaWxlLmluLAoJICBkbGxzL21zZG1vL01ha2VmaWxlLmluLCBkbGxzL21zaW1nMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNpc3lzL01ha2VmaWxlLmluLCBkbGxzL21zbmV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNybGUzMi9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQyMC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlZGxnL01ha2VmaWxlLmluLAoJICBkbGxzL29sZXBybzMyL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9NYWtlZmlsZS5pbiwKCSAgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdmljYXAzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jYXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwKCSAgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9kY2ltYW4zMi9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kZXZlbnVtL01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwKCSAgZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9pY21wL01ha2VmaWxlLmluLAoJICBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluOgoJUmVtb3ZlZCBtb3N0IGltcG9ydHMgb2YgbnRkbGwgc2luY2Ugd2Ugbm8gbG9uZ2VyIGltcG9ydCBXaW5lIGludGVybmFsCglmdW5jdGlvbnMgZnJvbSB0aGVyZS4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmMsIHdpbjMyL2RldmljZS5jLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9rZXJuZWwvc3RyZXNzLmMsIGRsbHMvbXByL3duZXQuYywKCSAgZGxscy91c2VyL25ldHdvcmsuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGxpYnJhcnkvcG9ydC5jLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvaGVhcC5jOgoJQSBmZXcgZml4ZXMgZm9yIG1pbmd3IGNyb3NzLWNvbXBpbGF0aW9uLgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLAoJICBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBpZjE2MzIvcmVsYXkuYywKCSAgaW5jbHVkZS93aW5lL2RlYnVnLmgsIGxpYnJhcnkvZGVidWcuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsCgkgIG1lbW9yeS9hdG9tLmMsIG9iamVjdHMvZm9udC5jLCByZWxheTMyL3Nub29wLmMsIHdpbmRvd3MvY2xhc3MuYywKCSAgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy93aW4uYzoKCUV4cG9ydCB0aGUgZGVidWdnaW5nIEFQSSBmcm9tIGxpYndpbmUgaW5zdGVhZCBvZiBudGRsbC4KCVJlbW92ZWQgZGVidWdyZXNfW2F3XS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglSZW1vdmUgbGVhZGluZyB3aGl0ZXNwYWNlIGZyb20gcHJpbnRjYXAgZW50cmllcy4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCURvIG5vdCBjcmVhdGUgYSB3aW5kb3cgZWFjaCB0aW1lIFZHQV9Eb1NldE1vZGUgaXMgY2FsbGVkLiBUaGUgd2luZG93CglpcyBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGFuZCB0aGVuIGp1c3QgcmVzaXplZC4KCjIwMDItMDUtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUFkYXB0ZWQgdG8gdXNlIHRoZSBhcmdjL2FyZ3YgdmFyaWFibGVzIGZyb20gbGlid2luZS4KCUF1dG9tYXRpY2FsbHkgaW1wb3J0IGxpYnJhcmllcyB0aGF0IGNvbnRhaW4gdGhlIHN5bWJvbHMgdGhhdCB0aGUKCS5zcGVjLmMgZmlsZSBpcyB1c2luZy4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L2xvYWRlci5jLCBtZW1vcnkvZW52aXJvbi5jOgoJRXhwb3J0IGdsb2JhbCBhcmdjL2FyZ3YgdmFyaWFibGVzIGZyb20gbGlid2luZSBhbmQgcmVtb3ZlIHRoZQoJX193aW5lX2dldF9tYWluX2FyZ3MgZnVuY3Rpb25zIGZyb20gbnRkbGwuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglGaXhlZCBzdHJ1Y3QgbXNnaGRyIGFjY2VzcyBmb3IgcGxhdGZvcm1zIHRoYXQgaGF2ZSBtc2dfYWNjcmlnaHRzCgkocmVwb3J0ZWQgYnkgV2FycmVuIEJhaXJkKS4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDoKCVBoaWxpcCBCcm93biA8cGhpbEBib2x0aG9sZS5jb20+CglOZWVkIHRvIHVuZGVmIE5PRVJST1IgZm9yIFNvbGFyaXMuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvbWF0aC5jLCByZWxheTMyL3Nub29wLmM6CglXYXJyZW4gQmFpcmQgPFdhcnJlbl9CYWlyZEBjaW1tZXRyeS5jb20+CglTb21lIGZpeGVzIGZvciBjb21waWxpbmcgb24gU3BhcmMuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC93dG1haW4uYzoKCUJldHRlciB1c2FnZSBtZXNzYWdlLiBGbHVzaCBzdGRlcnIgYmVmb3JlIGV4aXRpbmcuCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBpbmNsdWRlL3dpbm50LmgsIGxpYnJhcnkvbGR0LmMsCgkgIG1lbW9yeS9zZWxlY3Rvci5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB3aW4zMi9leGNlcHQuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywKCSAgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLAoJICBpZjE2MzIvc25vb3AuYzoKCU1vdmVkIHRoZSBzZWxlY3RvciBhY2Nlc3MgZnVuY3Rpb25zIG91dCBvZiB3aW5udC5oIGludG8gbGlid2luZS4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaGFuZ3Mgd2hlbiBwbGF5aW5nIGFuIEFTQ0lJIHJlc291cmNlLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglIYW5kbGUgcHJvcGVybHkgdGhlIHJlcXVlc3RlZCB2aWRlbyBtb2RlIGluIEludDEwaCBTRVQgVklERU8gTU9ERQoJZnVuY3Rpb24gYnkgbWFuYWdpbmcgdGhlIGJpdCA3IG9mIEFMLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVBsYWNlICJDb21tb24gRmlsZXMiIHVuZGVyICJQcm9ncmFtIEZpbGVzIiBpbnN0ZWFkIG9mIHJvb3QgZGlyZWN0b3J5LgoKCSogZGxscy9vbGUzMi9tYXJzaGFsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRlbGwgdGhlIHVzZXIgaWYgd2luZWRlZmF1bHQucmVnIGlzIG5vdCBsb2FkZWQuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9zZXR1cGFwaS9pbnN0YWxsLmMsIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsIGluY2x1ZGUvbnRkZGsuaCwKCSAgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgdW5pY29kZS9zdHJpbmcuYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsCgkgIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zdHJpbmcuYywKCSAgZGxscy9udGRsbC93Y3N0cmluZy5jOgoJSW1wbGVtZW50ZWQgc3RydG9sVy9zdHJ0b3VsVyBpbiBsaWJ3aW5lX3VuaWNvZGUgYW5kIHVzZWQgaXQgdG8gcmVwbGFjZQoJd2NzdG9sIGFuZCBmcmllbmRzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJRml4ZWQgbWlzc2luZyBjYWxsIHRvIG1ha2VfY19pZGVudGlmaWVyLgoKCSogZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZG1hLmMsIGRsbHMvd2luZWRvcy9kb3NleGUuaCwKCSAgZGxscy93aW5lZG9zL2lvcG9ydHMuYywgZGxscy93aW5lZG9zL3NvdW5kYmxhc3Rlci5jOgoJQ2hyaXN0aWFuIENvc3RhIDx0aXRhbi5jb3N0YUB3YW5hZG9vLmZyPgoJQWRkZWQgRE1BIGFuZCBTb3VuZEJsYXN0ZXIgZW11bGF0aW9uLgoKCSogZG9jdW1lbnRhdGlvbi9nZXR0aW5nLnNnbWw6CglXaWxsaWFtIFN0aW5zb24gPHdzdGluc29uQGluZm9uaWUuZnI+CglFeHBsYWluIHBhdGNoIC1wMCBvcHRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywKCSAgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9zZXJpYWx1aS9jb25mZGxnLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCUZpeGVkIHNucHJpbnRmIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luZWR1bXAvZGVidWcuYywgdG9vbHMvd2luZWR1bXAvcGUuYzoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCUFkZGVkIGNoZWNrIGZvciBzeXMvbW1hbi5oLgoKCSogd2luZWRlZmF1bHQucmVnOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglGaXhlZCBpbmNvcnJlY3QgZm9ybWF0IHdoZXJlIHNpbmdsZSBiYWNrc2xhc2hlcyB3ZXJlIHVzZWQgaW5zdGVhZCBvZgoJZG91YmxlIG9uZXMgaW4gYXR0cmlidXRlIHZhbHVlcy4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJSm9oYW4gR2lsbCA8am9oYW5lQGx5c2F0b3IubGl1LnNlPgoJbHBtbWlvaW5mbyBjYW4gc29tZXRpbWVzLCBwcm92ZW4gaW4gdGhlIHJlYWQgY2FzZSwgYmUgTlVMTC4KCjIwMDItMDUtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCUZpeGVzIGZvciBrZGUzIGFuZCBEZXNrdG9wIGRpcmVjdG9yeS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCUZpeCBmb3IgJGxpYmRpciBjaGVjay4KCgkqIGNvbmZpZ3VyZS5hYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsCgkgIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgbGlicmFyeS9sb2FkZXIuYywgbGlicmFyeS9wb3J0LmMsIGNvbmZpZ3VyZToKCVBvcnRhYmlsaXR5IGZpeGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tY2F0Ly5jdnNpZ25vcmUsCgkgIGRsbHMvY29tY2F0L01ha2VmaWxlLmluLCBkbGxzL2NvbWNhdC9jb21jYXQuaCwKCSAgZGxscy9jb21jYXQvY29tY2F0LnNwZWMsIGRsbHMvY29tY2F0L2NvbWNhdF9tYWluLmMsCgkgIGRsbHMvY29tY2F0L2ZhY3RvcnkuYywgZGxscy9jb21jYXQvaW5mb3JtYXRpb24uYywKCSAgZGxscy9jb21jYXQvbWFuYWdlci5jLCBkbGxzL2NvbWNhdC9yZWdpc3Rlci5jLCB3aW5lZGVmYXVsdC5yZWc6CglKb2huIEsuIEhvaG0gPGpob2htQGFjbS5vcmc+CglBZGRlZCBjb21jYXQuZGxsIHdpdGggZmFjdG9yeSBhbmQgbWFuYWdlciBidXQgRV9OT1RJTVBMIHdvcmsgbWV0aG9kcy4KCgkqIHByb2dyYW1zL3dpbmVjb25zb2xlL2RpYWxvZy5jLCBwcm9ncmFtcy93aW5lY29uc29sZS9yZWdpc3RyeS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fcHJpdmF0ZS5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3VzZXIuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBUcmFjZSBtYWNybyBhbmQgcmVwbGFjZWQgaXQgYnkgV2luZSBkZWJ1ZyBjaGFubmVsIGZhY2lsaXR5LgoJTWFkZSB0aGUgZm9udCBsb29rdXAgYXQgc3RhcnR1cCBtb3JlIHJvYnVzdCBhbmQgbm93IHNhdmUgcmVnaXN0cnkgYXQKCXN0YXJ0dXAgdGltZSBpZiBhIG5ldyBmb250IGlzIGNob3NlbiAoYXMgc3BvdHRlZCBieSBTeWx2YWluIFBldHJlb2xsZSkuCglGaXhlZCBhbiB1cGRhdGUgYnVnIHNwb3R0ZWQgYnkgSmFzb24gRWRtZWFkZXMuCgoJKiBkbGxzL2tlcm5lbC90aW1lLmMsIGluY2x1ZGUvd2lubmxzLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgR2V0Q2FsZW5kYXJJbmZve0EsV30sIG5vdCBwZXJmZWN0LgoKCSogcHJvZ3JhbXMvd2ludmVyLy5jdnNpZ25vcmUsIHRvb2xzL3dpbmVidWlsZC9SRUFETUUsCgkgIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYywKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbWRsZ3RzdC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9jb250cm9sLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9yZWdhcGkvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnZWRpdC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy9yZWdzdnIzMi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9yZWd0ZXN0Ly5jdnNpZ25vcmUsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3ZpZXcvLmN2c2lnbm9yZSwKCSAgcHJvZ3JhbXMvd2NtZC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lY29uc29sZS8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5lbWluZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lcGF0aC8uY3ZzaWdub3JlLAoJICBwcm9ncmFtcy93aW5ldGVzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vbWNpc2VxLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpc2VxL21jaXNlcS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2l3YXZlLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21pZGltYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2F2ZW1hcC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dhdmVtYXAvbXNhY20uZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93aW5lYXJ0cy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5lYXJ0cy93aW5lYXJ0cy5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93aW5lb3NzLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2luZW9zcy93aW5lb3NzLmRydi5zcGVjLAoJICBkbGxzL3dpbm5scy8uY3ZzaWdub3JlLCBkbGxzL3dpbm5scy93aW5ubHMzMi5zcGVjLAoJICBkbGxzL3dpbnNvY2svLmN2c2lnbm9yZSwgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLAoJICBkbGxzL3dpbnNwb29sLy5jdnNpZ25vcmUsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsCgkgIGRsbHMvd2ludHJ1c3QvLmN2c2lnbm9yZSwgZGxscy93aW50cnVzdC93aW50cnVzdC5zcGVjLAoJICBkbGxzL3dvdzMyLy5jdnNpZ25vcmUsIGRsbHMvd293MzIvd293MzIuc3BlYywKCSAgZGxscy93c29jazMyLy5jdnNpZ25vcmUsIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsCgkgIGRsbHMveDExZHJ2Ly5jdnNpZ25vcmUsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBtaXNjZW11L3dpbmUuc3BlYywKCSAgZGxscy90d2Fpbi8uY3ZzaWdub3JlLCBkbGxzL3R3YWluL3R3YWluXzMyLnNwZWMsCgkgIGRsbHMvdXJsLy5jdnNpZ25vcmUsIGRsbHMvdXJsL3VybC5zcGVjLCBkbGxzL3VybG1vbi8uY3ZzaWdub3JlLAoJICBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91c2VyLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy92ZXJzaW9uLy5jdnNpZ25vcmUsCgkgIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsIGRsbHMvd2luMzJzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWMsIGRsbHMvd2luYXNwaS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYywgZGxscy93aW5lZG9zLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWMsIGRsbHMvd2luZXBzLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3dpbmluZXQvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZGxscy93aW5tbS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vbWNpYW5pbS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2lhdmkvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmRydi5zcGVjLAoJICBkbGxzL3dpbm1tL21jaWNkYS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2lubW0uc3BlYywgZGxscy9xY2FwLy5jdnNpZ25vcmUsIGRsbHMvcWNhcC9xY2FwLnNwZWMsCgkgIGRsbHMvcXVhcnR6Ly5jdnNpZ25vcmUsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLAoJICBkbGxzL3Jhc2FwaTMyLy5jdnNpZ25vcmUsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywKCSAgZGxscy9yaWNoZWRpdC8uY3ZzaWdub3JlLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLnNwZWMsCgkgIGRsbHMvcnBjcnQ0Ly5jdnNpZ25vcmUsIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLAoJICBkbGxzL3NlcmlhbHVpLy5jdnNpZ25vcmUsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywKCSAgZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsCgkgIGRsbHMvc2hkb2N2dy8uY3ZzaWdub3JlLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLAoJICBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGZvbGRlci8uY3ZzaWdub3JlLCBkbGxzL3NoZm9sZGVyL3NoZm9sZGVyLnNwZWMsCgkgIGRsbHMvc2hsd2FwaS8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3NubXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zbm1wYXBpL3NubXBhcGkuc3BlYywKCSAgZGxscy9zdGkvLmN2c2lnbm9yZSwgZGxscy9zdGkvc3RpLnNwZWMsIGRsbHMvdGFwaTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLCBkbGxzL3R0eWRydi8uY3ZzaWdub3JlLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy9uZXRhcGkzMi8uY3ZzaWdub3JlLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsIGRsbHMvbnRkbGwvLmN2c2lnbm9yZSwKCSAgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBkbGxzL29kYmMzMi8uY3ZzaWdub3JlLCBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYywKCSAgZGxscy9vbGUzMi8uY3ZzaWdub3JlLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvLmN2c2lnbm9yZSwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWNsaS8uY3ZzaWdub3JlLCBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLAoJICBkbGxzL29sZWRsZy8uY3ZzaWdub3JlLCBkbGxzL29sZWRsZy9vbGVkbGcuc3BlYywKCSAgZGxscy9vbGVwcm8zMi8uY3ZzaWdub3JlLCBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsCgkgIGRsbHMvb2xlc3ZyLy5jdnNpZ25vcmUsIGRsbHMvb2xlc3ZyL29sZXN2cjMyLnNwZWMsCgkgIGRsbHMvb3BlbmdsMzIvLmN2c2lnbm9yZSwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLAoJICBkbGxzL3BzYXBpLy5jdnNpZ25vcmUsIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywKCSAgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9semV4cGFuZC8uY3ZzaWdub3JlLCBkbGxzL2x6ZXhwYW5kL2x6MzIuc3BlYywKCSAgZGxscy9tYXBpMzIvLmN2c2lnbm9yZSwgZGxscy9tYXBpMzIvbWFwaTMyLnNwZWMsCgkgIGRsbHMvbXByLy5jdnNpZ25vcmUsIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL21zYWNtLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5hY20uc3BlYywgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsCgkgIGRsbHMvbXNhY20vbXNnNzExLy5jdnNpZ25vcmUsIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5kcnYuc3BlYywKCSAgZGxscy9tc2Rtby8uY3ZzaWdub3JlLCBkbGxzL21zZG1vL21zZG1vLnNwZWMsCgkgIGRsbHMvbXNpbWczMi8uY3ZzaWdub3JlLCBkbGxzL21zaW1nMzIvbXNpbWczMi5zcGVjLAoJICBkbGxzL21zaXN5cy8uY3ZzaWdub3JlLCBkbGxzL21zaXN5cy9tc2lzeXMub2N4LnNwZWMsCgkgIGRsbHMvbXNuZXQzMi8uY3ZzaWdub3JlLCBkbGxzL21zbmV0MzIvbXNuZXQzMi5zcGVjLAoJICBkbGxzL21zcmxlMzIvLmN2c2lnbm9yZSwgZGxscy9tc3JsZTMyL21zcmxlMzIuc3BlYywKCSAgZGxscy9tc3ZjcnQvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2Y3J0MjAvLmN2c2lnbm9yZSwgZGxscy9tc3ZjcnQyMC9tc3ZjcnQyMC5zcGVjLAoJICBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywKCSAgZGxscy9jb21tZGxnLy5jdnNpZ25vcmUsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLAoJICBkbGxzL2NydGRsbC8uY3ZzaWdub3JlLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywKCSAgZGxscy9jcnlwdDMyLy5jdnNpZ25vcmUsIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsCgkgIGRsbHMvZGNpbWFuMzIvLmN2c2lnbm9yZSwgZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjLAoJICBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywKCSAgZGxscy9kZXZlbnVtLy5jdnNpZ25vcmUsIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnNwZWMsCgkgIGRsbHMvZGlucHV0Ly5jdnNpZ25vcmUsIGRsbHMvZGlucHV0L2RpbnB1dC5zcGVjLAoJICBkbGxzL2RwbGF5Ly5jdnNpZ25vcmUsIGRsbHMvZHBsYXkvZHBsYXkuc3BlYywKCSAgZGxscy9kcGxheXgvLmN2c2lnbm9yZSwgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsCgkgIGRsbHMvZHNvdW5kLy5jdnNpZ25vcmUsIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLAoJICBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dsdTMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2x1MzIvZ2x1MzIuc3BlYywgZGxscy9pY21wLy5jdnNpZ25vcmUsIGRsbHMvaWNtcC9pY21wLnNwZWMsCgkgIGRsbHMvaW1hZ2VobHAvLmN2c2lnbm9yZSwgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLAoJICBkbGxzL2ltbTMyLy5jdnNpZ25vcmUsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywgTWFrZS5ydWxlcy5pbiwKCSAgZGVidWdnZXIvLmN2c2lnbm9yZSwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL2FkdmFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywKCSAgZGxscy9hdmljYXAzMi8uY3ZzaWdub3JlLCBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyLnNwZWMsCgkgIGRsbHMvYXZpZmlsMzIvLmN2c2lnbm9yZSwgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLAoJICBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYzoKCUFkZGVkIHdpbmVidWlsZCBzdXBwb3J0IGZvciBnZW5lcmF0aW5nIGEgLmRiZy5jIGZpbGUgY29udGFpbmluZyB0aGUKCWRlYnVnIGNoYW5uZWxzIGRlZmluaXRpb25zLgoJTWFkZSB3aW4zMiB0aGUgZGVmYXVsdCB0eXBlIGZvciBzcGVjIGZpbGVzLgoJSWdub3JlIEMgY29tcGlsZXIgaW4gd2luZWJ1aWxkIHNvIHdlIGNhbiBzaW1wbHkgcGFzcyBpdCAkKERFRlMpLgoJUmVtb3ZlZCB0eXBlIHdpbjMyIGFuZCBkZWJ1Z19jaGFubmVscyBmcm9tIHNwZWMgZmlsZXMuCglGaXhlZCB3aW5lYnVpbGQgdG8gYWx3YXlzIGdlbmVyYXRlIGNvcnJlY3QgQyBpZGVudGlmaWVycyAocmVwb3J0ZWQgYnkKCVZpbmNlbnQgQulyb24pLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHM6CglVcGRhdGVkIG1ha2VfZGxscyBzY3JpcHQgZm9yIG5ldyBpbXBvcnQgc2NoZW1lLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJLSBDZW50ZXIgcHJvcGVydHkgc2hlZXQgcGFnZSBkdXJpbmcgY3JlYXRpb24gKHBhZGRpbmcpCgkgIChzb21lIGFwcGxpY2F0aW9ucyByZWx5IG9uIHRoaXMgYmVoYXZpb3VyIHdoZW4gcmVzaXppbmcgdGhlIHBhZ2UpCgktIE1hc2sgYXdheSBXU19USElDS0ZSQU1FIHBhZ2Ugc3R5bGUKCS0gUGFnZSBuYXZpZ2F0aW9uIGJ5IHJlc291cmNlIGlkIChieSB1bmtub3duIGF1dGhvcikKCgkqIG1pc2MvLmN2c2lnbm9yZSwgbWlzYy9NYWtlZmlsZS5pbiwgbXNkb3MvLmN2c2lnbm9yZSwKCSAgbXNkb3MvTWFrZWZpbGUuaW4sIG9iamVjdHMvTWFrZWZpbGUuaW4sIG9sZS9NYWtlZmlsZS5pbiwKCSAgcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvLmN2c2lnbm9yZSwKCSAgc2NoZWR1bGVyL01ha2VmaWxlLmluLCB0b29scy9tYWtlZGVwLmMsIHdpbjMyLy5jdnNpZ25vcmUsCgkgIHdpbjMyL01ha2VmaWxlLmluLCB3aW5kb3dzLy5jdnNpZ25vcmUsIHdpbmRvd3MvTWFrZWZpbGUuaW4sCgkgIGNvbmZpZ3VyZS5hYywgY29udHJvbHMvLmN2c2lnbm9yZSwgY29udHJvbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL250ZGxsLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGZpbGVzLy5jdnNpZ25vcmUsCgkgIGZpbGVzL01ha2VmaWxlLmluLCBncmFwaGljcy8uY3ZzaWdub3JlLCBncmFwaGljcy9NYWtlZmlsZS5pbiwKCSAgZ3JhcGhpY3MveDExZHJ2Ly5jdnNpZ25vcmUsIGdyYXBoaWNzL3gxMWRydi9NYWtlZmlsZS5pbiwKCSAgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgbG9hZGVyLy5jdnNpZ25vcmUsCgkgIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL25lLy5jdnNpZ25vcmUsIGxvYWRlci9uZS9NYWtlZmlsZS5pbiwKCSAgbWVtb3J5Ly5jdnNpZ25vcmUsIG1lbW9yeS9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlOgoJU3BlY2lmeSB0aGUgY29tcGxldGUgc291cmNlIGZpbGUgbGlzdCBmb3IgYSBkbGwgaW5zaWRlIHRoZSBtYWluCgltYWtlZmlsZSBhbmQgZ2V0IHJpZCBvZiB0aGUgc3ViZGlyZWN0b3JpZXMgbWFrZWZpbGVzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9YeC5yYzogTm8gbG9uZ2VyIHVzZWQuCgoJKiBkbGxzL2tlcm5lbC9ubHMvanBuLm5sczoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlZCBOTFMgZmlsZSBmb3IgY29kZXBhZ2UgOTMyIChTSklTKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglEbyBub3QgaW52YWxpZGF0ZSB0aGUgcmVjdCB3aGlsZSBkcmF3aW5nLgoJSW1wbGVtZW50ZWQgR2V0U3ViSXRlbVJlY3QgYW5kIGEgcXVpY2sgY2hhbmdlIHRvIG5vdGlmaWNhdGlvbnMgc2VudAoJZm9yIE93bmVyRGF0YSBpdGVtcy4KCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaDoKCVJvYmVydCBDb2V5bWFuIDxhZG1pcmFsQGNvcm5lci5uZXQ+CglBZGRlZCB0aGUgcmVzdCBvZiB0aGUgcmVnaXN0ZXIgbWFuaXB1bGF0aW9uIGNvZGUgdG8gaW50IDEwLiAgSXQgb25seQoJaGFuZGxlcyB0aGUgc2V0dGluZyBvZiB0aGUgMTYtY29sb3IgcGFsZXR0ZSByZWdpc3RlcnMgYW5kIG92ZXJzY2FuLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQ2hhbmdlIHRyYWNlcyB0byB0cmFjZSBmdWxsIHdpbmRvdyBoYW5kbGUgYW5kIGltcHJvdmUgc29tZSB0cmFjZXMuCgktIFNlbmQgV01fTk9USUZZIHRvIHBhcmVudCBub3QgdG8gc2VsZi4KCS0gSW1wbGVtZW50IFBHU19BVVRPU0NST0xMIHZpYSBNT1VTRU1PVkUgYW5kIFRpbWVyIHJvdXRpbmVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJU3VwcG9ydCBQR05fU0NST0xMIG5vdGlmeSBhbmQgcmV0dXJuIGVpdGhlciB0aGUgYnV0dG9uIGhlaWd0aCBvciB3aWR0aC4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IG1lbW9yeSBkdW1wIHdoZXJlIGxlbmd0aCBpcyBub3QgYSBtdWx0aXBsZSBvZiA0LgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXhlZCBpc3N1ZXMgd2l0aCBVbmljb2RlIGNvbnZlcnNpb24uIENlcnRhaW4gc3RyaW5ncyB3ZXJlIG5vdAoJY29udmVydGVkLCBidXQgdGhlbiBwcm9jZXNzZWQgYXMgY29udmVydGVkLgoKCSogcHJvZ3JhbXMvd2luaGVscC9EYS5yYywgcHJvZ3JhbXMvd2luaGVscC9EZS5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9Fbi5yYywgcHJvZ3JhbXMvd2luaGVscC9Fcy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9GaS5yYywgcHJvZ3JhbXMvd2luaGVscC9Gci5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9IdS5yYywgcHJvZ3JhbXMvd2luaGVscC9JdC5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9Lby5yYywgcHJvZ3JhbXMvd2luaGVscC9QdC5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9Tay5yYywgcHJvZ3JhbXMvd2luaGVscC9Tdy5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9WYS5yYywgcHJvZ3JhbXMvd2luaGVscC9XYS5yYywKCSAgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmMsCgkgIHByb2dyYW1zL3dpbmhlbHAvc3RyaW5nLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLAoJICBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuaCwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwX3Jlcy5oOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CgktIENvbnZlcnRlZCBXaW5oZWxwIGZvciB1c2Ugb2YgTkxTCgktIE1pbm9yIGJ1Z2ZpeAoJLSBEaXNhYmxlIHN1cHBvcnQgb2YgVmEucmMgZm9yIG5vdyAocnVtYW50c2NoIHN3aXNzKQoKMjAwMi0wNS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3QsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL2tlcm5lbC90ZXN0cy9wcm9jZXNzLmMsCgkgIGxpYnJhcnkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluOgoJQWRkZWQgc29tZSBzdXBwb3J0IGZvciBjcm9zcy1jb21waWxhdGlvbiB1c2luZyBtaW5ndzMyLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglCZXR0ZXIgYmVoYXZpb3Igb2YgUGxheVNvdW5kIChlcnJvciBoYW5kbGluZywgc3luY2hyb25pemF0aW9uKS4KCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSB0ZXN0cyBhYm91dCB3aW5kb3dzIGhhbmRsZXMuCgoyMDAyLTA1LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLnNwZWMsCgkgIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS93aW5lbWluZS5zcGVjLAoJICBwcm9ncmFtcy93aW5lcGF0aC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXBhdGgvd2luZXBhdGguc3BlYywKCSAgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmV0ZXN0LnNwZWMsCgkgIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5zcGVjLAoJICBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci93aW52ZXIuc3BlYywKCSAgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLAoJICB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jLAoJICBkbGxzL3dvdzMyL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBtaXNjZW11L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5zcGVjLAoJICBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uc3BlYywgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2Nsb2NrL2Nsb2NrLnNwZWMsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5zcGVjLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuc3BlYywgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnNwZWMsIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5zcGVjLAoJICBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uc3BlYywKCSAgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLnNwZWMsCgkgIHByb2dyYW1zL3JlZ2VkaXQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5zcGVjLAoJICBwcm9ncmFtcy9yZWdzdnIzMi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnc3ZyMzIvcmVnc3ZyMzIuc3BlYywKCSAgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LnNwZWMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci91bmluc3RhbGxlci5zcGVjLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy92aWV3L3ZpZXcuc3BlYywgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWMsIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9qb3lzdGljay9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9tY2lhbmltL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWF2aS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaWNkYS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9tY2lzZXEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpd2F2ZS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9taWRpbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWFydHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS93aW5tbS5zcGVjLCBkbGxzL3dpbm5scy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svdGVzdHMvd3MyXzMyX3Rlc3Quc3BlYywKCSAgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW50cnVzdC9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLAoJICBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsCgkgIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZm9sZGVyL01ha2VmaWxlLmluLAoJICBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS90ZXN0cy9zaGx3YXBpX3Rlc3Quc3BlYywKCSAgZGxscy9zbm1wYXBpL01ha2VmaWxlLmluLCBkbGxzL3N0aS9NYWtlZmlsZS5pbiwKCSAgZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLAoJICBkbGxzL3R3YWluL01ha2VmaWxlLmluLCBkbGxzL3VybC9NYWtlZmlsZS5pbiwKCSAgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL3Rlc3RzL3VzZXIzMl90ZXN0LnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywKCSAgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy9tc25ldDMyL01ha2VmaWxlLmluLCBkbGxzL21zcmxlMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydDIwL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbmV0YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2RiYzMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVhdXQzMl90ZXN0LnNwZWMsCgkgIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZWRsZy9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVwcm8zMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVzdnIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sIGRsbHMvcHNhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcWNhcC9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sCgkgIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLAoJICBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGV2ZW51bS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywKCSAgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkzMi5zcGVjLAoJICBkbGxzL2ljbXAvTWFrZWZpbGUuaW4sIGRsbHMvaW1hZ2VobHAvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90ZXN0cy9rZXJuZWwzMl90ZXN0LnNwZWMsCgkgIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbWFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbXNhY20vbXNnNzExL01ha2VmaWxlLmluLAoJICBkbGxzL21zZG1vL01ha2VmaWxlLmluLCBkbGxzL21zaW1nMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNpc3lzL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwKCSAgZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWMsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwKCSAgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmljYXAzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9jcnlwdDMyL01ha2VmaWxlLmluLCBkbGxzL2RjaW1hbjMyL01ha2VmaWxlLmluOgoJQWRkZWQgLXJlcyBvcHRpb24gdG8gc3BlY2lmeSByZXNvdXJjZXMgb24gd2luZWJ1aWxkIGNvbW1hbmQtbGluZS4KCUFkZGVkIC1leGUgbW9kZSB0byBnZW5lcmF0ZSBhIC5zcGVjLmMgZm9yIGFuIGV4ZSB3aXRob3V0IGhhdmluZyB0bwoJcHJvdmlkZSBhIC5zcGVjLgoJUmVtb3ZlZCBzb21lIG5vIGxvbmdlciBuZWVkZWQgc3BlYyBmaWxlcy4KCVJlbW92ZWQgLmRsbCBleHRlbnNpb24gaW4gbWFrZWZpbGVzIGltcG9ydCBzcGVjaWZpY2F0aW9ucy4KCgkqIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLAoJICBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglMZXQgTUNJIGRyaXZlcnMgc3VwcG9ydCB0aGUgc2Vzc2lvbiBpbnN0YW5jZSBsb2FkaW5nIG1lY2hhbmlzbSAoTlVMTAoJbFBhcmFtMiBpbiBNQ0lfT1BFTikuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NvbWNhdC5oOgoJSm9obiBLLiBIb2htIDxqaG9obUBhY20ub3JnPgoJRml4ZWQgdHlwb3M7IGFkZGVkIHN0YW5kYXJkIENBVElEXydzLgoKCSogbWVtb3J5L2luc3RyLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdoZW4gdXNpbmcgTWFwU0wsIDMyLWJpdCBhZGRyZXNzZXMgYXJlIG5vIGxvbmdlciB0cnVuY2F0ZWQgaW50byAxNi1iaXQKCWFkZHJlc3Nlcy4KCgkqIG1zZG9zL2RwbWkuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJUmF3TW9kZVN3aXRjaCBjYW4gbm93IGJlIHVzZWQgdG8gcmV0dXJuIERQTUkgYXBwbGljYXRpb24gYmFjayB0bwoJcHJvdGVjdGVkIG1vZGUuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglBdm9pZCBkZWFkbG9jayBpbiBWR0FfRG9TZXRNb2RlLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJTWFrZSBQUk9GSUxFX0dldFN0cmluZyBhY2NvdW50IGZvciBkZWZhdWx0IHZhbHVlIGluIGFsbCBjYXNlcy4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWxsb3dlZCBvcHRpb25zIHRvIGJlIHB1dCBiZXR3ZWVuIG1vZGUga2V5d29yZCBhbmQgbWFpbiBhcmd1bWVudC4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIHNlc3Npb24gaW5zdGFuY2UgbG9hZGluZyB0byB3aW5tbS4KCgkqIGRsbHMvbXNhY20vaW1hYWRwMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYWNtLnNwZWMsCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmk6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUNyZWF0ZWQgYW4gQUNNIElNQSBBRFBDTSBjb2RlYy4KCgkqIGRsbHMvbXNhY20vZm9ybWF0LmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1ZyBpbiBhY21Gb3JtYXRUYWdFbnVtVy4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUNyZWF0ZWQgc2Vzc2lvbiBpbnN0YW5jZSBmb3IgaW5zdGFsbGFibGUgZHJpdmVycy4KCU5vdyBwcm9wZXJseSBmcmVlaW5nIGxpYnJhcnkgdXBvbiBkcml2ZXIgZXhpdC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCB3aW4zMi9uZXdmbnMuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgRmx1c2hJbnN0cnVjdGlvbkNhY2hlIHByb3RvdHlwZS4KCgkqIHNlcnZlci9jb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1pc3Npbmcgd2luZWNvbnNvbGUgbm90aWZpY2F0aW9uIG9mIHRpdGxlIG1vZGlmaWNhdGlvbi4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglKb3JpcyBCZXVnbmllcyA8am9yaXMuYmV1Z25pZXNAcGFuZG9yYS5iZT4KCU1ha2UgZGVmaW5lcyBjb25maWd1cmFibGUgYXQgcnVuLXRpbWUuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglEYXZpZCBIYW1tZXJ0b24gPGRhdmlkQHRyYW5zZ2FtaW5nLmNvbT4KCUxvY2svdW5sb2NrIChhbmQgaGVuY2UgbWF5YmUgY29lcmNlKSBESUJTZWN0aW9ucyBpbnRvIEdkaU1vZCBkdXJpbmcKCXRoZSBTZXRESUJpdHMgYW5kIEdldERJQml0cyBmdW5jdGlvbnMsIGJlZm9yZSBhY3R1YWxseSBhY2Nlc3NpbmcgdGhlIFgKCVBpeG1hcC4KCjIwMDItMDUtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBWRVJTSU9OLCBjb25maWd1cmUsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDIwNTA5LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTA1LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUJ1aWxkIGFuIGV4cGxpY2l0IGFyZ3VtZW50IHN0cnVjdHVyZSBmb3IgbW1hcCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24KCXRoZSBzdGFjayBsYXlvdXQuCgoJKiBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIHRvb2xzL3dyYy9wcHkueSwgY29uZmlndXJlOgoJU3RldmVuIEVkd2FyZHMgPFN0ZXZlbl9FZDQxNTNAeWFob28uY29tPgoJRGV0ZWN0IHNucHJpbnRmICYmIF9zbnByaW50ZiwgdXNlIF9zbnByaW50ZiBvbiBzdHVwaWQgcGxhdGZvcm1zCgkod2luZG93cykuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6CglSZW1vdmVkIGV4dHJhIHJldHVybiBzdGF0ZW1lbnQuCgoJKiBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS90c194cmVzb3VyY2UuaCwgaW5jbHVkZS90c194dXRpbC5oLAoJICB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywKCSAgdHN4MTEvdHNfeHJlc291cmNlLmMsIHRzeDExL3RzX3h1dGlsLmM6CglBZGRlZCBzb21lICNpZmRlZnMgSEFWRV9YMTFfWExJQl9IIHdoZXJlIGFwcHJvcHJpYXRlLgoKCSogQU5OT1VOQ0UsIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2dldHRpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsYXRpb24tdW5kLWtvbmZpZ3VyYXRpb24uZ2VybWFuLAoJICBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJRml4ZWQgc29tZSB3aW5laHEuY29tIFVSTHMuCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zZWMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglDb3JyZWN0ZWQgUnRsQ29udmVydFNpZFRvVW5pY29kZVN0cmluZywgc3R1YiBmb3IgVmVyU2V0Q29uZGl0aW9uTWFzay4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2ZpbGUuYzoKCUpha29iIEVyaWtzc29uIDxqYWtvYkB2bWxpbnV4Lm9yZz4KCUFkZGVkIHNvbWUgbW9yZSB0ZXN0cy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvY29tY2F0LmgsIGluY2x1ZGUvd2luZS9vYmpfY29tY2F0LmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfZW51bWd1aWQuaCwgb2xlL3V1aWQuYzoKCUpvaG4gSy4gSG9obSA8amhvaG1AYWNtLm9yZz4KCUFkZGVkIGRlZmluaXRpb25zIGZvciB0aGUgQ29tcG9uZW50IENhdGVnb3JpZXMgTWFuYWdlci4KCgkqIGRsbHMvc2hsd2FwaS90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvdGVzdHMvc2hsd2FwaV90ZXN0LnNwZWMsCgkgIGRsbHMvc2hsd2FwaS90ZXN0cy9zaHJlZy5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCUFkZGVkIHNvbWUgdGVzdHMuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJUmVpbXBsZW1lbnRlZCBTSFJlZ0dldFBhdGhBL1csIFNIR2V0VmFsdWVBL1csIFNIUmVnR2V0UGF0aEEvVy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2RlYnVnaGxwLmMsCgkgIGRsbHMvc2hlbGwzMi9kZWJ1Z2hscC5oLCBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCU1vdmluZyB0aGUgcGlkbCBkZWJ1ZyBmdW5jdGlvbnMgdG8gYSBzZXBhcmF0ZSBmaWxlIGFuZCBtYWRlIHRoZW0gc2VsZgoJY29udGFpbmVkLiBUaGlzIHByZXZlbnRzIHVzZWxlc3MgdHJhY2UgbWVzc2FnZXMgZ2VuZXJhdGVkIGZyb20gdGhlCglkZWJ1ZyBmdW5jdGlvbnMgdGhlbXNlbHZlcy4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jLCBpbmNsdWRlL3dpbmlvY3RsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJVHlwZXMgYW5kIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gZm9yIE50UXVlcnlWb2x1bWVJbmZvcm1hdGlvbkZpbGUuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW5zY2htaWVkQGx5Y29zLmRlPgoJTWFrZSB1c2Ugb2YgYWNjZXNzIG1hc2sgTUFYSU1VTV9BTExPV0VEIHBvc3NpYmxlLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2Vuc2NobWllZEBseWNvcy5kZT4KCVVzZSBvbmx5IHdpbmFwaSBmdW5jdGlvbnMgaW4gX2NvbnZlcnRfd2lubnRfcmVnaXN0cnlfdG9fd2luZV9mb3JtYXQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBtaXNjL3ZlcnNpb24uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglTdHViIGZvciBWZXJpZnlWZXJzaW9uSW5mb1cuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbnNjaG1pZWRAbHljb3MuZGU+CglVc2UgbG9uZyBuYW1lcywgbm90IDguMyBuYW1lcyBpbiBlbnZpcm9ubWVudC4KCgkqIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBpbmNsdWRlL01ha2VmaWxlLmluLCBsaWJyYXJ5L01ha2VmaWxlLmluLAoJICBvbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLAoJICBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHNlcnZlci9NYWtlZmlsZS5pbiwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL2luc3RhbGwtc2gsCgkgIHRvb2xzL21raW5zdGFsbGRpcnMsIHRvb2xzL3dpbmFwaS9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLCB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIHRzeDExL01ha2VmaWxlLmluLAoJICB1bmljb2RlL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwKCSAgZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJQWRkZWQgbWtpbnN0YWxsZGlycyB0byBjcmVhdGUgZGlyZWN0b3JpZXMgbW9yZSBwb3J0YWJseS4KCgkqIGRsbHMvZ2RpL2VuaG1mZHJ2L2RjLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywgZGxscy9nZGkvbWZkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy9nZGkvbWZkcnYvaW5pdC5jLCBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvY2xpcHBpbmcuYywKCSAgZGxscy9nZGkvZHJpdmVyLmM6CglBZGRlZCBFeHRTZWxlY3RDbGlwUmduIHRvIHRoZSBEQyBpbnRlcmZhY2UgYW5kIGltcGxlbWVudGVkIGl0IGZvcgoJc3RhbmRhcmQgYW5kIGVuaGFuY2VkIG1ldGFmaWxlcy4KCgkqIHRvb2xzL2NvbmZpZy5ndWVzcywgdG9vbHMvY29uZmlnLnN1YjoKCVVwZGF0ZWQgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglUaGVyZSdzIG5vIG5lZWQgdG8gY2hlY2sgZm9yIGRsb3BlbiBvbiBjeWd3aW4uCgoJKiBjb250cm9scy9tZW51LmM6CglSaXpzYW55aSBac29sdCA8cml6c2FueWlAbXlyZWFsYm94LmNvbT4KCURpc2FibGVkIGNhdGNoaW5nIG9mIG1vdXNlIG1vdmUgZXZlbnRzIHdoZW4gbm90IG92ZXIgbWVudS4KCUNoYW5nZWQgTUVOVV9TZWxlY3RJdGVtIGFsbG93IEVuZE1lbnUgdG8gZGVzZWxlY3QgdGhlIHNlbGVjdGVkIG1lbnUuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5zcGVjLAoJICBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suc3BlYywKCSAgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLnNwZWMsCgkgIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5zcGVjLAoJICBwcm9ncmFtcy9yZWdlZGl0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdlZGl0L3JlZ2VkaXQuc3BlYywKCSAgcHJvZ3JhbXMvcmVnc3ZyMzIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3N2cjMyL3JlZ3N2cjMyLnNwZWMsCgkgIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5zcGVjLAoJICBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvdW5pbnN0YWxsZXIuc3BlYywgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvdmlldy92aWV3LnNwZWMsIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjLCBwcm9ncmFtcy93aW5lY29uc29sZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuc3BlYywgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVtaW5lL3dpbmVtaW5lLnNwZWMsIHByb2dyYW1zL3dpbmVwYXRoL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lcGF0aC93aW5lcGF0aC5zcGVjLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3Quc3BlYywgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLnNwZWMsIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5zcGVjLCBkbGxzL3dpbm5scy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5ubHMvd2lubmxzMzIuc3BlYywgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvd3MyXzMyX3Rlc3Quc3BlYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLAoJICBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLAoJICBkbGxzL3dpbnRydXN0L01ha2VmaWxlLmluLCBkbGxzL3dpbnRydXN0L3dpbnRydXN0LnNwZWMsCgkgIGRsbHMvd293MzIvTWFrZWZpbGUuaW4sIGRsbHMvd293MzIvd293MzIuc3BlYywKCSAgZGxscy93c29jazMyL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvZXhwYW5kLnNwZWMsIGxpYnRlc3QvaGVsbG8uc3BlYywKCSAgbGlidGVzdC9oZWxsbzIuc3BlYywgbGlidGVzdC9oZWxsbzMuc3BlYywgbGlidGVzdC9oZWxsbzQuc3BlYywKCSAgbGlidGVzdC9oZWxsbzUuc3BlYywgbGlidGVzdC9uZXcuc3BlYywgbGlidGVzdC9yb2xleC5zcGVjLAoJICBsaWJ0ZXN0L3ZvbGluZm8uc3BlYywgbWlzY2VtdS9NYWtlZmlsZS5pbiwgbWlzY2VtdS93aW5lLnNwZWMsCgkgIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5zcGVjLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LnNwZWMsCgkgIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5zcGVjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY2xvY2svY2xvY2suc3BlYywgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LnNwZWMsIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5zcGVjLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYywgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9qb3lzdGljay9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2lhbmltL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2lhdmkvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2ljZGEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2lzZXEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpc2VxL21jaXNlcS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5kcnYuc3BlYywKCSAgZGxscy93aW5tbS9taWRpbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5kcnYuc3BlYywKCSAgZGxscy93aW5tbS93YXZlbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dhdmVtYXAvbXNhY20uZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZWFydHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubW0vd2luZWFydHMvd2luZWFydHMuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL3dpbmVvc3MuZHJ2LnNwZWMsCgkgIGRsbHMvd2lubW0vd2lubW0uc3BlYywgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZm9sZGVyL01ha2VmaWxlLmluLAoJICBkbGxzL3NoZm9sZGVyL3NoZm9sZGVyLnNwZWMsIGRsbHMvc2hsd2FwaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zbm1wYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3NubXBhcGkvc25tcGFwaS5zcGVjLCBkbGxzL3N0aS9NYWtlZmlsZS5pbiwgZGxscy9zdGkvc3RpLnNwZWMsCgkgIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi90YXBpMzIuc3BlYywKCSAgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLAoJICBkbGxzL3R3YWluL01ha2VmaWxlLmluLCBkbGxzL3R3YWluL3R3YWluXzMyLnNwZWMsCgkgIGRsbHMvdXJsL01ha2VmaWxlLmluLCBkbGxzL3VybC91cmwuc3BlYywgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci90ZXN0cy91c2VyMzJfdGVzdC5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywKCSAgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLAoJICBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL25ldGFwaTMyL25ldGFwaTMyLnNwZWMsCgkgIGRsbHMvb2RiYzMyL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYywKCSAgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9vbGUzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvb2xlYXV0MzJfdGVzdC5zcGVjLCBkbGxzL29sZWNsaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9vbGVkbGcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlZGxnL29sZWRsZy5zcGVjLCBkbGxzL29sZXBybzMyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLAoJICBkbGxzL29sZXN2ci9vbGVzdnIzMi5zcGVjLCBkbGxzL29wZW5nbDMyL01ha2VmaWxlLmluLAoJICBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvcHNhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywgZGxscy9xY2FwL01ha2VmaWxlLmluLCBkbGxzL3FjYXAvcWNhcC5zcGVjLAoJICBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsCgkgIGRsbHMvcmFzYXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYywKCSAgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLAoJICBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsCgkgIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywKCSAgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGRsbHMva2VybmVsL3Rlc3RzL2tlcm5lbDMyX3Rlc3Quc3BlYywgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9semV4cGFuZC9sejMyLnNwZWMsIGRsbHMvbWFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXByL21wci5zcGVjLAoJICBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL2ltYWFkcDMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zYWNtL2ltYWFkcDMyL2ltYWFkcDMyLmFjbS5zcGVjLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywKCSAgZGxscy9tc2FjbS9tc2c3MTEvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5kcnYuc3BlYywKCSAgZGxscy9tc2Rtby9NYWtlZmlsZS5pbiwgZGxscy9tc2Rtby9tc2Rtby5zcGVjLAoJICBkbGxzL21zaW1nMzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWMsCgkgIGRsbHMvbXNpc3lzL01ha2VmaWxlLmluLCBkbGxzL21zaXN5cy9tc2lzeXMub2N4LnNwZWMsCgkgIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwgZGxscy9tc25ldDMyL21zbmV0MzIuc3BlYywKCSAgZGxscy9tc3JsZTMyL01ha2VmaWxlLmluLCBkbGxzL21zcmxlMzIvbXNybGUzMi5zcGVjLAoJICBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2Y3J0MjAvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0MjAvbXN2Y3J0MjAuc3BlYywKCSAgZGxscy9hdmljYXAzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmljYXAzMi9hdmljYXAzMi5zcGVjLAoJICBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsCgkgIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywKCSAgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywKCSAgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLAoJICBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsCgkgIGRsbHMvZGNpbWFuMzIvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywKCSAgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kZHJhdy5zcGVjLAoJICBkbGxzL2RldmVudW0vTWFrZWZpbGUuaW4sIGRsbHMvZGV2ZW51bS9kZXZlbnVtLnNwZWMsCgkgIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywKCSAgZGxscy9kcGxheS9NYWtlZmlsZS5pbiwgZGxscy9kcGxheS9kcGxheS5zcGVjLAoJICBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsCgkgIGRsbHMvZHNvdW5kL01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9kc291bmQuc3BlYywKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvaWNtcC9NYWtlZmlsZS5pbiwKCSAgZGxscy9pY21wL2ljbXAuc3BlYywgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwKCSAgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwKCSAgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluLAoJICBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6CglNb3ZlZCBpbXBvcnRzIHNwZWNpZmljYXRpb24gZnJvbSB0aGUgLnNwZWMgaW50byB0aGUgTWFrZWZpbGUgc28gdGhhdAoJaXQgY2FuIGJlIHVzZWQgb24gcGxhdGZvcm1zIHRoYXQgZG9uJ3QgYnVpbGQgYSAuc3BlYy5jIGZpbGUuCgoyMDAyLTA1LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRml4IHRoZSBXaW4zMSBzdHlsZSBmaWxlIGRpYWxvZyBib3guCgktIElmIHRoZXJlIGlzIG5vIGZpbHRlciBkb24ndCBwdXQgYSBibGFuayBvbmUgaW47IGl0IGRvZXNuJ3QKCSAgd29yayAobGVhdmUgaXQgTlVMTCkuCgktIENvcnJlY3RseSBmaWd1cmUgb3V0IHdoaWNoIGlzIHRoZSBjdXJyZW50IGRyaXZlIGluIHRoZSBjb21ibyBib3guCgktIEFkZCBGSVhNRSBmb3IgdGhlIHZhcmlhYmxlICJpbml0aWFsIGRpciIgaGFuZGxpbmcuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sCgkgIHRvb2xzL2J1Z19yZXBvcnQucGw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCURpcmVjdCBidWcgcmVwb3J0cyB0byBXaW5lIGJ1Z3ppbGxhLiBTb21lIG90aGVyIG1pbm9yIGRvY3VtZW50YXRpb24KCWNoYW5nZXMuCgoJKiBsaWJyYXJ5L2Vycm5vLmM6CglEb24ndCBuZWVkIHRvIHJlZmVyZW5jZSBleHRlcm5hbCBlcnJubyBzaW5jZSBub24tcmVlbnRyYW50IFhsaWIgaXMgbm8KCWxvbmdlciBzdXBwb3J0ZWQuCgoJKiBNYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW46CglSdW4gbWFrZSB0ZXN0IGZvciBhbGwgcHJvZ3JhbXMgYnkgZGVmYXVsdC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jOgoJTWljaGFlbCBXZXRoZXJlbGwgPG1pa2Uud2V0aGVyZWxsQG50bHdvcmxkLmNvbT4KCUZpeCBoYW5kbGluZyBvZiB1bml4IGFic29sdXRlIHBhdGhzIGluIERPU0ZTX0dldEZ1bGxOYW1lIGFuZAoJR2V0U2hvcnRQYXRoTmFtZUEuCglIYW5kbGUgJy4uJyBpbiBwYXRocyBpbiBEUklWRV9GaW5kRHJpdmVSb290LgoKCSogbWVtb3J5L3NlbGVjdG9yLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGliLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglSZXBsYWNlIFNFTEVDVE9SX0FsbG9jQmxvY2sgYW5kIFNFTEVDVE9SX0ZyZWVCbG9jayB3aXRoIHN0YW5kYXJkIFdpbjE2CglzZWxlY3RvciBjYWxscy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdGaXhlci5wbCwgcHJvZ3JhbXMvcmVnYXBpL3JlZ1Jlc3RvcmVyLnBsLAoJICBwcm9ncmFtcy9yZWdhcGkvcmVnU2V0LnNoOgoJUmF1bCBEaWFzIDxjaGFvc0Bzd2kuY29tLmJyPgoJLSBNYWtlIHBvc3NpYmxlIHRvIGRpZmYgcmVnaXN0cnkgaW5mb3JtYXRpb24gdGhhdCBjb250YWlucwoJICB0aW1lc3RhbXBzLgoJLSBDcmVhdGUgc2FmZSB0ZW1wIGZpbGVzIGluIC90bXAuCgoyMDAyLTA1LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglGaXhlZCBkbGwgY2hlY2sgZm9yIGN5Z3dpbi4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglBZGRlZCBOVUxMIHBvaW50ZXIgY2hlY2sgaW4gQ2FsbFdpbmRvd1Byb2MxNi4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglGaXhlZCB2aXMgcmVnaW9uIGhhbmRsaW5nIGJyb2tlbiBieSBsYXN0IGNoYW5nZS4KCgkqIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MmYuYywgaW5jbHVkZS9jYWxsYmFjay5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkZWQgc3VwcG9ydCBmb3IgRFBNSSBSYXdNb2RlU3dpdGNoLgoKCSogZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3duZC5jLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywKCSAgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCBkbGxzL2dkaS93aW4xNmRydi9pbml0LmM6CglNb3ZlZCBwYXJ0cyBvZiB0aGUgREMgaW5pdGlhbGlzYXRpb24gYW5kIGJpdG1hcCBzZWxlY3Rpb24gb3V0IG9mIHRoZQoJZHJpdmVycyBpbnRvIHRoZSBjb21tb24gY29kZS4KCgkqIGRsbHMvZ2RpL3ByaW50ZHJ2LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglSZXBsYWNlIERPU0ZTX0dldEZ1bGxOYW1lIHdpdGggd2luZV9nZXRfdW5peF9maWxlX25hbWUuCgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCU1pY2hhZWwgQ2FyZGVuYXMgPG1pY2hhZWwuY2FyZGVuYXNAbGluZG93cy5jb20+CglDYXAgd2luZG93IHNpemVzIGF0IDY1NTM1LgoKCSogY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmU6CglBZGRlZCBjaGVjayBmb3Igc3lzL3N5c2N0bC5oLgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJT2xpdmllciBIb3VjaGFyZCA8ZG9naW5vdUBjaU8ucmc+CglTdXBwb3J0IGZvciBnZXR0aW5nIG1lbW9yeSBzaXplIG9uIEZyZWVCU0QuCgoJKiBkbGxzL2RpbnB1dC9rZXlib2FyZC9tYWluLmM6CglPbGl2aWVyIEhvdWNoYXJkIDxkb2dpbm91QGNpTy5yZz4KCUhhY2sgdG8gbWFrZSBTZXRFdmVudE5vdGlmaWNhdGlvbiB3b3JrLgoKMjAwMi0wNS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzoKCUZpeGVkIGhhbmRsaW5nIG9mIEdldExvbmdQYXRoTmFtZUEuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy9maWxlLmM6CglKYWtvYiBFcmlrc3NvbiA8amFrb2JAdm1saW51eC5vcmc+CglUZXN0cyBmb3IgX2xjcmVhdCxfbGxzZWVrIGFuZCBfbGxvcGVuIGFkZGVkLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIGhhY2sgdG8gbWFrZSBJbnN0YWxsU2hpZWxkIHY2IHdvcmsgYmV0dGVyLgoKCSogZGxscy9vbGVhdXQzMi90bWFyc2hhbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglCU1RScyBjYW4gYmUgTlVMTCwgaGFuZGxlIHRoZW0gc2VwZXJhdGVseS4KCgkqIHdpbmRvd3Mvd2luLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmg6CglEYXZpZCBIYW1tZXJ0b24gPGRhdmlkQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIEdldFdpbmRvd0luZm8uCgoJKiBERVZFTE9QRVJTLUhJTlRTOgoJU3lsdmFpbiBQZXRyZW9sbGUgPHNwZXRyZW9sbGVAeWFob28uZnI+CglVcGRhdGUgb2YgREVWRUxPUEVSUy1ISU5UUyB0byByZWZsZWN0IHRoZSBjdXJyZW50IHN0YXRlIG9mIFdpbmUuCgoyMDAyLTA1LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lZG9zL2ludDMxLmMsIGRsbHMvd2luZWRvcy93aW5lZG9zLnNwZWM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglET1NWTSBub3cgZXhwb3J0cyBEUE1JIFJhdyBNb2RlIFN3aXRjaCByb3V0aW5lLgoKCSogY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBjb25maWd1cmU6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglDaGVjayBmb3IgYW5kIHVzZSBjaHNpemUgaW5zdGVhZCBvZiBmdHJ1bmNhdGUgaWYgcHJlc2VudC4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUVuc3VyZSBjb3JyZWN0IGZ1bGwgcGF0aCByZXR1cm5lZCB3aGVuIEdldEZ1bGxQYXRoTmFtZSBzdXBwbGllZCBhIHBhdGgKCXJlbGF0aXZlIGZyb20gdGhlIHJvb3Qgb2YgdGhlIGRyaXZlICdlZyAnXHdpbmRvd3Ncc3lzdGVtJy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXBhdGgvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZXBhdGgvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmVwYXRoL3dpbmVwYXRoLmMsIHByb2dyYW1zL3dpbmVwYXRoL3dpbmVwYXRoLnNwZWM6CglNaWtlIFdldGhlcmVsbCA8bWlrZS53ZXRoZXJlbGxAbnRsd29ybGQuY29tPgoJVXRpbGl0eSB0byBjb252ZXJ0IGJldHdlZW4gVW5peCBhbmQgV2luZG93cyBwYXRocyBhdCB0aGUgY29tbWFuZAoJbGluZS4KCgkqIGZpbGVzL3NtYi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudCBOZXRCSU9TIHJlc29sdXRpb24gZm9yIFVOQyBwYXRobmFtZXMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglUZXJtaW5hdGluZyBET1MgcHJvZ3JhbSBpbiByZWFsIG1vZGUgbm93IGNhbGxzIEV4aXRUaHJlYWQgd2hpY2ggaXMKCWV4YWN0bHkgd2hhdCB0ZXJtaW5hdGluZyBpbiBwcm90ZWN0ZWQgbW9kZSBkb2VzLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZWFsIG1vZGUgaW50ZXJydXB0IGhhbmRsZXIgbm93IGhhbmRsZXMgaW50ZXJydXB0IDIxIGZ1bmN0aW9uIDBDLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfSmEucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9rZXJuZWwvbmxzL2pwbi5ubHMsIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYWNtLnNwZWMsCgkgIGRsbHMvbXNhY20vaW1hYWRwMzIvaW1hYWRwMzIuYywgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmMsCgkgIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5kcnYuc3BlYywgZGxscy9tc3JsZTMyL21zcmxlMzIuYywKCSAgZGxscy9tc3JsZTMyL21zcmxlMzIuc3BlYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi9kaXNwc3RkLmMsIGRsbHMvb2xlYXV0MzIvZGlzcHR5cGUuYywKCSAgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL3Byb3BlcnR5ZnJhbWUuYywKCSAgZGxscy9vbGVhdXQzMi9zdHVicy5jLCBkbGxzL3NoZG9jdncvTWFrZWZpbGUuaW4sIGRsbHMvc2hkb2N2dy9hcGkuYywKCSAgZGxscy9zaGRvY3Z3L2Jyb3dzZXIuYywgZGxscy9zaGRvY3Z3L2NsYXNzaW5mby5jLAoJICBkbGxzL3NoZG9jdncvY29taW1wbC5jLCBkbGxzL3NoZG9jdncvY29taW1wbC5oLAoJICBkbGxzL3NoZG9jdncvY29ubmVjdC5jLCBkbGxzL3NoZG9jdncvZXZlbnRzLmMsCgkgIGRsbHMvc2hkb2N2dy9mYWN0b3J5LmMsIGRsbHMvc2hkb2N2dy9taXNjLmMsCgkgIGRsbHMvc2hkb2N2dy9vbGVvYmplY3QuYywgZGxscy9zaGRvY3Z3L3BlcnNpc3QuYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncuYywgZGxscy9zaGRvY3Z3L3NoZG9jdncuaCwKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLAoJICBkbGxzL3NoZG9jdncvd2ViYnJvd3Nlci5jLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwKCSAgZGxscy91cmxtb24vY29taW1wbC5jLCBkbGxzL3VybG1vbi9jb21pbXBsLmgsIGRsbHMvdXJsbW9uL21vbmlrZXIuYywKCSAgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywKCSAgZGxscy91cmxtb24vdXJsbW9uX21haW4uYywgZGxscy93aW5tbS93aW5tbV9KYS5yYywKCSAgZGxscy93aW5tbS93aW5tbV9yZXMucmMsIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL2R2ZG1lZGlhLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfa3Nwcm9wZXJ0eS5oLCBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyLnNwZWMsCgkgIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzJfbWFpbi5jOgoJUmVtb3ZlZCBtb3JlIGNvZGUgYXQgSGlkZW5vcmkncyByZXF1ZXN0LgoKMjAwMi0wNS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBCVUdTLCBSRUFETUU6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCVVwZGF0ZWQgZG9jdW1lbnRhdGlvbiwgbW9zdGx5IGltcHJvdmluZyBidWdzIGhhbmRsaW5nLiBEaXJlY3QgdXNlcnMgdG8KCUJ1Z3ppbGxhLgoKCSogaW5jbHVkZS9hc3luYy5oLCBpbmNsdWRlL3dpbm50LmgsIG1lbW9yeS9zZWxlY3Rvci5jLAoJICBzY2hlZHVsZXIvc3lzZGVwcy5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1TIEMgcmVsYXRlZCBjaGFuZ2VzLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRGF2aWQgSGFtbWVydG9uIDxkYXZpZEB0cmFuc2dhbWluZy5jb20+CglJbiBpbml0aWFsIGRpYnNlY3Rpb24gY3JlYXRpb24sIHRoZSBkaWJzZWN0aW9uIHNob3VsZCBhbHdheXMgYmUgaW4KCWFwcG1vZCBiZWNhdXNlIHRoZSBhcHAgbWVtb3J5IGlzIGluaXRpYWxpemVkIHRvIHplcm8gaWYgbm8KCW9mZnNldC9zZWN0aW9uIGlzIHNwZWNpZmllZCwgd2hpbGUgdGhlIERJQml0bWFwIGlzIG5vdC4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglNYWRlIHdpbmVpbnN0YWxsIHRvIGNyZWF0ZSBzeW1ib2xpYyBsaW5rcyB0byBXaW5lIGFwcGxpY2F0aW9ucyBpbiBmYWtlCglXaW5kb3dzIGZvbGRlcnMuIFJlcGxhY2VkIHVzYWdlIG9mIG9ic29sZXRlIHJlZ2FwaSB3aXRoIHJlZ2VkaXQuCgoJKiBwcm9ncmFtcy9yZWdlZGl0L3JlZ2VkaXQuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJRml4ZWQgYSBwcm9ibGVtIHdoZW4gcmVnZWRpdCBpbnRlcnByZXRlZCBmaWxlIG5hbWVzLCBzdGFydGluZyBmcm9tICcvJwoJYXMgc3dpdGNoZXMuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvd2NtZC5oLAoJICBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCUFkZCBzdXBwb3J0IGZvciB0aGUgJ3RpdGxlJyBjb21tYW5kLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpbmRDbG9zZTogcHJvdGVjdCB0aGUgR2xvYmFsTG9jayBmb3IgcGFnZWZhdWx0cyB0b28uCgoJKiB0b29scy93cmMvbmV3c3RydWMuYzoKCVdhcnJlbiBCYWlyZCA8V2FycmVuX0JhaXJkQGNpbW1ldHJ5LmNvbT4KCVNvbHZlIGFsaWdubWVudCBwcm9ibGVtcyBieSBjb252ZXJ0aW5nIGJpdG1hcCBoZWFkZXJzICphZnRlciogdGhleQoJaGF2ZSBiZWVuIGNvcGllZCBpbnRvIGFuIGFsaWduZWQgbG9jYXRpb24sIGFuZCB0aGVuIGNvcHlpbmcgdGhlCgljb252ZXJ0ZWQgaGVhZGVyIGJhY2sgb3ZlciB0aGUgb3JpZ2luYWwgaGVhZGVyLgoKCSogZGxscy94MTFkcnYveHJlbmRlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRGV0ZWN0IGFuZCB3YXJuIGFib3V0IGJ1Z2d5IHZlcnNpb25zIG9mIGxpYlhyZW5kZXIuCgoyMDAyLTA1LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb2xvci5oLCBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvcGFsZXR0ZS5jLAoJICB3aW5kb3dzL2N1cnNvcmljb24uYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvcGFsZXR0ZS5jLAoJICBkbGxzL3R0eWRydi90dHlkcnYuaCwgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6CglDbGVhbmVkIHVwIHNvbWUgaW50ZXItZGxsIGRlcGVuZGVuY2llcyBpbiBwYWxldHRlIG1hbmFnZW1lbnQuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUR1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglDaGFuZ2VkIGJ1ZyByZXBvcnQgYWRkcmVzcy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCU1vdmVkIGRyYXdpbmcgb2Ygb3duZXItZHJhd24gcGFydHMgdG8gYWZ0ZXIgdGhlIGJhY2tncm91bmQgYW5kIGVkZ2UuCglBbHNvIGFkZGVkIHNvbWUgaW5kZW50YXRpb24gdG8gdGhlIGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglUT09MVElQU19HZXRUaXBUZXh0OiBBY2NlcHQgbnVsbCBtb2R1bGUgaW5zdGFuY2UsIExvYWRzdHJpbmcgY2FuCgloYW5kbGUgaXQuCgoJKiBNYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW46CglJbnN0YWxsIG1vcmUgb2YgdGhlIFdpbmVsaWIgcHJvZ3JhbXMgYnkgZGVmYXVsdCAoYmFzZWQgb24gYSBwYXRjaCBieQoJQW5kcml5IFBhbGFtYXJjaHVrKS4KCgkqIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW46CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCURvIG5vdCBpbnN0YWxsIGhscDJzZ21sLgoKCSogZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLAoJICBkbGxzL3dpbmVwcy9iaXRibHQuYywgZGxscy93aW5lcHMvYml0bWFwLmMsIGRsbHMvd2luZXBzL2NsaXBwaW5nLmMsCgkgIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5lcHMvcGVuLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3RleHQuYywgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgaW5jbHVkZS9nZGkuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9jbGlwcGluZy5jOgoJUmVtb3ZlZCBzb21lIGRpcmVjdCBhY2Nlc3NlcyB0byB0aGUgREMgc3RydWN0dXJlLgoKCSogaW5jbHVkZS9kc2hvdy5oOiBDb21tZW50ZWQgb3V0IHJlbW92ZWQgaGVhZGVycy4KCgkqIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXBpLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZV9wcml2YXRlLmgsIGRsbHMvYXZpZmlsMzIvY29tZW50cnkuYywKCSAgZGxscy9hdmlmaWwzMi9pYWZpbGUuYywgZGxscy9hdmlmaWwzMi9pYXN0cmVhbS5jLAoJICBkbGxzL2F2aWZpbDMyL2lnZnJhbWUuYywgZGxscy9hdmlmaWwzMi9tYWluLmMsCgkgIGRsbHMvYXZpZmlsMzIvc3RyaW5nLmMsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywKCSAgZGxscy9pbW0zMi9pbW1kZGsuaCwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L1JFQURNRSwKCSAgZGxscy9xdWFydHovYWNtd3JhcC5jLCBkbGxzL3F1YXJ0ei9hbXVuZG9jLmMsIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmMsCgkgIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmgsIGRsbHMvcXVhcnR6L2F1ZGlvdXRsLmMsCgkgIGRsbHMvcXVhcnR6L2F1ZGlvdXRsLmgsIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL3F1YXJ0ei9hdWRyZW4uaCwKCSAgZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2F2aXBhcnNlLmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsCgkgIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmgsIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywKCSAgZGxscy9xdWFydHovY2FwZ3JhcGguYywgZGxscy9xdWFydHovY2FwZ3JhcGguaCwKCSAgZGxscy9xdWFydHovY29tcGxpc3QuYywgZGxscy9xdWFydHovY29tcGxpc3QuaCwgZGxscy9xdWFydHovY3Njb252LmMsCgkgIGRsbHMvcXVhcnR6L2RldmVudW0uYywgZGxscy9xdWFydHovZGV2ZW51bS5oLCBkbGxzL3F1YXJ0ei9lbnVtdW5rLmMsCgkgIGRsbHMvcXVhcnR6L2VudW11bmsuaCwgZGxscy9xdWFydHovZmdldmVudC5jLCBkbGxzL3F1YXJ0ei9mZ3Bhc3MuYywKCSAgZGxscy9xdWFydHovZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5oLCBkbGxzL3F1YXJ0ei9maWxlc2luay5jLAoJICBkbGxzL3F1YXJ0ei9maWxlc2luay5oLCBkbGxzL3F1YXJ0ei9mbWFwLmMsIGRsbHMvcXVhcnR6L2ZtYXAuaCwKCSAgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9pamdkZWMuYywgZGxscy9xdWFydHovaWpnZGVjLmgsCgkgIGRsbHMvcXVhcnR6L2ltY250bC5jLCBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9pbXBvcy5jLAoJICBkbGxzL3F1YXJ0ei9pbXNlZWsuYywgZGxscy9xdWFydHovaXVuay5jLCBkbGxzL3F1YXJ0ei9pdW5rLmgsCgkgIGRsbHMvcXVhcnR6L21haW4uYywgZGxscy9xdWFydHovbWVtYWxsb2MuYywgZGxscy9xdWFydHovbWVtYWxsb2MuaCwKCSAgZGxscy9xdWFydHovbWlkcGFyc2UuYywgZGxscy9xdWFydHovbWpwZ2RlYy5jLCBkbGxzL3F1YXJ0ei9tcGFkZWMuYywKCSAgZGxscy9xdWFydHovbXBncGFyc2UuYywgZGxscy9xdWFydHovbXB2ZGVjLmMsIGRsbHMvcXVhcnR6L210eXBlLmMsCgkgIGRsbHMvcXVhcnR6L210eXBlLmgsIGRsbHMvcXVhcnR6L3BhcnNlci5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuaCwKCSAgZGxscy9xdWFydHovcXRkZWMuYywgZGxscy9xdWFydHovcXRwYXJzZS5jLCBkbGxzL3F1YXJ0ei9xdWFydHouc3BlYywKCSAgZGxscy9xdWFydHovcXVhcnR6X3ByaXZhdGUuaCwgZGxscy9xdWFydHovcmVnc3ZyLmMsCgkgIGRsbHMvcXVhcnR6L3JlZ3N2ci5oLCBkbGxzL3F1YXJ0ei9zYW1wbGUuYywgZGxscy9xdWFydHovc2FtcGxlLmgsCgkgIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmgsCgkgIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmMsIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmgsCgkgIGRsbHMvcXVhcnR6L3ZpZGVvYmx0LmMsIGRsbHMvcXVhcnR6L3ZpZGVvYmx0LmgsIGRsbHMvcXVhcnR6L3ZpZHJlbi5jLAoJICBkbGxzL3F1YXJ0ei92aWRyZW4uaCwgZGxscy9xdWFydHovd2F2cGFyc2UuYywgZGxscy9xdWFydHoveGZvcm0uYywKCSAgZGxscy9xdWFydHoveGZvcm0uaCwgaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9hbWF1ZGlvLmgsCgkgIGluY2x1ZGUvYW12aWRlby5oLCBpbmNsdWRlL2NvbnRyb2wuaCwgaW5jbHVkZS9lcnJvcnMuaCwKCSAgaW5jbHVkZS9ldmNvZGUuaCwgaW5jbHVkZS9zdHJtaWYuaCwgb2xlL3V1aWQuYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgd2luZWRlZmF1bHQucmVnOgoJUmVtb3ZlZCBhIGJ1bmNoIG9mIG11bHRpbWVkaWEgY29kZSBhdCBIaWRlbm9yaSdzIHJlcXVlc3QuCgoJKiBpbmNsdWRlL3V1aWRzLmgsIGluY2x1ZGUvdmZ3bXNncy5oLCBpbmNsdWRlL3dpbnJlc3JjLmg6CglSZXdyb3RlIHNvbWUgaGVhZGVycyBmcm9tIHNjcmF0Y2ggdG8gYXZvaWQgRVVMQS9wYXRlbnQgY29uY2VybnMuCgoyMDAyLTA1LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9jZHJvbS5jLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5hYzoKCVJpenNhbnlpIFpzb2x0IDxyaXpzYW55aUBteXJlYWxib3guY29tPgoJSW1wbGVtZW50ZWQgSU9DVExfU0NTSV9HRVRfQUREUkVTUyBmb3Igbm9uIHRydWUgc2NzaSBjZHJvbSBkcml2ZXMKCShvbmx5IG9uIGxpbnV4KS4KCUluaXRpYWxpemUgcmVnaXN0cnkgdW5kZXIgSEtFWV9MT0NBTF9NQUNISU5FL0hBUkRXQVJFL0RFVklDRU1BUC9TY3NpLgoJQWRkZWQgSU9DVExfQ0RST01fTUVESUFfUkVNT1ZBTCBzdXBwb3J0LgoKCSogZGxscy9udGRsbC9udC5jOgoJTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBza3luZXQuYmU+CglGaXhlZCBOdFF1ZXJ5SW5mb3JtYXRpb25Qcm9jZXNzIHRvIHJldHVybiBjb3JyZWN0IGluZm9ybWF0aW9uIGFuZAoJZXJyb3IgY29kZSBmb3IgUHJvY2Vzc0RlYnVnUG9ydCB3aGVuIG5vIGRlYnVnZ2VyIGlzIGF0dGFjaGVkLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvbnRkbGwvY2Ryb20uYywgaW5jbHVkZS9jb25maWcuaC5pbiwKCSAgaW5jbHVkZS9udGRkc2NzaS5oOgoJTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBza3luZXQuYmU+CglJbXBsZW1lbnRhdGlvbiBvZiBJT0NUTF9TQ1NJX1BBU1NfVEhST1VHSCBhbmQKCUlPQ1RMX1NDU0lfUEFTU19USFJPVUdIX0RJUkVDVC4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLAoJICBkZWJ1Z2dlci9zdGFicy5jLCBkbGxzL21zdmNydC9kaXIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglBdHRlbXB0IGF0IGZpeGluZyBNQVhfUEFUSCBpc3N1ZXMgZm9yIG1pbmd3LgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCU1pY2hhZWwgQ2FyZGVuYXMgPG1pY2hhZWwuY2FyZGVuYXNAbGluZG93cy5jb20+CglGaXhlZCBxdW90aW5nIG9mIEtERSBkZXNrdG9wIGVudHJ5LgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgaW5jbHVkZS9kc291bmQuaDoKCUpvaGFuIEdpbGwgPGpvaGFuZUBseXNhdG9yLmxpdS5zZT4KCURpcmVjdFNvdW5kRW51bWVyYXRlQSgpIG5vdyBwYXNzZXMgYSBHVUlEIHRvIHRoZSBjYWxsYmFjayBpZiB0aGUgZmlyc3QKCWNhbGwgcmV0dXJuZWQgVFJVRS4KCgkqIHdpbjMyL2VkaXRsaW5lLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJQ29ycmVjdCBiZWhhdmlvdXIgb2YgREVMIGtleSBiYWNrIHRvIGRlbGV0aW5nIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVdoZW4gRE9TIHByb2dyYW0gZXhlY3V0ZXMgYW5vdGhlciBET1MgcHJvZ3JhbSwgY29tbWFuZCBsaW5lIGlzIG5vdwoJcGFzc2VkIGNvcnJlY3RseS4gSWYgRE9TIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZywgY29tbWFuZCBsaW5lIGlzIG5vdwoJdHJ1bmNhdGVkIGluc3RlYWQgb2YgbGV0dGluZyBpdCB0cmFzaCBtZW1vcnkuCgoyMDAyLTA0LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvZWRpdGxpbmUuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIEFkZGVkIGY4IChoaXN0b3J5IHJldHJpZXZhbCBmcm9tIHBhcnRpYWwgY29tbWFuZCkgc3VwcG9ydAoJLSBEZWxldGUga2V5IGRlbGV0ZXMgY3VycmVudCBjaGFyYWN0ZXIKCS0gQ3RybCArIGVuZCBkZWxldGVzIHRvIGVuZCBvZiBsaW5lCgktIEN0cmwgKyByaWdodCBzdG9wcGVkIGJlZm9yZSB0aGUgd29yZCBpdHNlbGYKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL3gxMWRydi8uY3ZzaWdub3JlLAoJICBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIGRsbHMveDExZHJ2L2V2ZW50LmMsIGRsbHMveDExZHJ2L2tleWJvYXJkLmMsCgkgIGRsbHMveDExZHJ2L3dpbmVjbGlwc3J2LmMsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbDoKCU1vdmVkIHJlbWFpbmluZyBmaWxlcyBpbiB3aW5kb3dzL3gxMWRydiB0byBkbGxzL3gxMWRydi4KCjIwMDItMDQtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3JlZ3N2cjMyLy5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ3N2cjMyL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5jLCBwcm9ncmFtcy9yZWdzdnIzMi9yZWdzdnIzMi5zcGVjOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCByZWdzdnIzMiB0b29sLiBCYXNlZCBvbiBSZWFjdE9TIGltcGxlbWVudGF0aW9uLgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jOgoJSmFzb24gRWRtZWFkZXMgPHVzQHRoZS1lZG1lYWRlcy5kZW1vbi5jby51az4KCS0gU3VwcG9ydCBmb3IgZGlyIC93IGFuZCAvYiBmbGFncwoJLSBGaXhlZCBhIGNvdXBsZSBvZiB1bmNsb3NlZCBGaW5kRmlyc3QvRmluZE5leHQgcGFpcnMKCgkqIGRsbHMvaW1tMzIvaW1tX3ByaXZhdGUuaCwgZGxscy9pbW0zMi9pbW1kZGsuaCwgZGxscy9pbW0zMi9tYWluLmMsCgkgIGRsbHMvaW1tMzIvbWVtb3J5LmMsIGRsbHMvaW1tMzIvc3RyaW5nLmMsIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvaW1tMzIvaW1jLmMsIGRsbHMvaW1tMzIvaW1la2wuYywgZGxscy9pbW0zMi9pbWV3bmQuYywKCSAgZGxscy9pbW0zMi9pbW0uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglSZW1vdmVkIHNvbWUgY29kZSBiZWNhdXNlIG9mIE1TIEVVTEEgY29uY2VybnMuCglSZXdyb3RlIHN0dWJzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNYXJjbyBCaXp6YXJyaSA8bS5iaXp6YXJyaUBpY3ViZS5pdD4KCUltcGxlbWVudGVkIHRoZSBUQl9SRVBMQUNFQklUTUFQIG1lc3NhZ2UuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRG9uJ3QgcHJlcGVuZCAnLS0nIHRvIHRoZSBjb21tYW5kIGxpbmUgd2hlbiBzdGFydGluZyBhIFdpbmRvd3MgYmluYXJ5LgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCUR1c3RpbiBOYXZlYSA8c3BlZWRkeW1vbkB5YWhvby5jb20+CglXcml0ZSBtZW51IGluZm9ybWF0aW9uIHRvIC91c3IvbGliL21lbnUvd2luZS4KCVRyeSB0byBhdXRvZGV0ZWN0IEtERSB2ZXJzaW9uIHVzaW5nIGtkZS1jb25maWcuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywKCSAgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLCBkbGxzL3dpbmluZXQvaHR0cC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NvbWN0bDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NyeXB0MzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZ2RpMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNpc3lzLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybG1vbi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEFQSSBmaWxlcyB1cGRhdGUuCgktIEZpeGVkIHBhcnNlciB0byBoYW5kbGUgQy9DKysgY29tbWVudHMgaW4gc3RyaW5ncy4KCS0gUmVwb3J0IGlmIEMrKyBjb21tZW50cyBhcmUgdXNlZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NubXBhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9zbm1wYXBpL01ha2VmaWxlLmluLCBkbGxzL3NubXBhcGkvbWFpbi5jLAoJICBkbGxzL3NubXBhcGkvc25tcGFwaS5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdHViIGltcGxlbWVudGF0aW9uIG9mIFNOTVBBUEkuRExMLgoKCSogaW5jbHVkZS93aW5udC5oLCBzY2hlZHVsZXIvc3lzZGVwcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaWNyb3NvZnQgQyByZWxhdGVkIGNoYW5nZXMuCgoJKiBkbGxzL3F1YXJ0ei9SRUFETUUsIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmMsIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJUmVpbXBsZW1lbnRlZCB0aGUgYXN5bmNocm9ub3VzIHNvdXJjZSBmaWx0ZXIuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvdGVzdHMvZmlsZS5jOgoJSmFrb2IgRXJpa3Nzb24gPGpha29iQHZtbGludXgub3JnPgoJQWRkZWQgdW5pdCB0ZXN0cyBmb3IgZmlsZSBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmM6CglKYXNvbiBFZG1lYWRlcyA8dXNAdGhlLWVkbWVhZGVzLmRlbW9uLmNvLnVrPgoJRW11bGF0ZSB0aGUgZG9zIGNtZCAnY2xzJy4KCgkqIGRsbHMvd2luZWRvcy94bXMuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV2hlbiBmcmVlaW5nIFhNUyBtZW1vcnkgYmxvY2ssIHJldHVybiBhbiBlcnJvciBpZiBibG9jayBoYXMgbm90IGJlZW4KCXByZXZpb3VzbHkgYWxsb2NhdGVkLgoKCSogZGxscy90d2Fpbi9kc21fY3RybC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWtlIHR3YWluIGNvbXBpbGUgYWdhaW4uCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBTdGF0dXNCYXIgU2V0VGV4dCBhZ2FpbiwgYWRkZWQgc29tZSBjb21tZW50cy4KCjIwMDItMDQtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL01ha2VmaWxlLmluLAoJICB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvd21jL01ha2VmaWxlLmluLAoJICB0b29scy93cmMvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywKCSAgc2VydmVyL01ha2VmaWxlLmluOgoJTGluayB0aGUgdG9vbHMgYW5kIHRoZSBzZXJ2ZXIgYWdhaW5zdCBsaWJ3aW5lIHNvIHdlIGNhbiB1c2UgdGhlCglwb3J0YWJpbGl0eSBmdW5jdGlvbnMgaW4gdGhlcmUuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9xdWFydHovaWpnZGVjLmMsCgkgIGRsbHMvdHdhaW4vZHNfY3RybC5jLCBkbGxzL3R3YWluL3R3YWluLmg6CglGaXhlZCB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvbXN2Y3J0L3N5cy9zdGF0Lmg6IEZyZWVCU0QgY29tcGlsZSBmaXguCgoJKiBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbnNvY2svdGVzdHMvc29jay5jLCBkbGxzL3dpbnNvY2svdGVzdHMvd3MyXzMyX3Rlc3Quc3BlYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglBZGRlZCB1bml0IHRlc3QgZm9yIHdpbnNvY2suCgoJKiBzZXJ2ZXIvc29jay5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUZpeGVzIHRvIEZEX0NMT1NFIGhhbmRsaW5nLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCVNPX09QRU5UWVBFIGhhcyB0byBiZSBhIHBlci10aHJlYWQgc2V0dGluZy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvYWR2YXBpMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvYXZpY2FwMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvZ2RpMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvaW1tMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUva2VybmVsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbXNpbWczMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tc2lzeXNfb2N4LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29sZTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29sZWF1dDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3JwY3J0NC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zZXR1cGFwaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zZXR1cGFwaV9oLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NoZG9jdncucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2hlbGwzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zaGx3YXBpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3VybG1vbi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lYXJ0c19kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZ2RpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmluZXQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2lubnQucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luc3Bvb2xfZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbnVzZXIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd3MyXzMyLnBtOgoJVXBkYXRlZCBtb2R1bGUgZGVmaW5pdGlvbnMgZm9yIFBlcmwgdW5pdCB0ZXN0cy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L21ha2Vfc3ltYm9sczoKCUFkZGVkIHBvc3NpYmlsaXR5IG9mIHNwZWNpZnlpbmcgYSBuYW1lIGZvciB0aGUgLnBtIGZpbGUgdGhhdCBjYW4gYmUKCWRpZmZlcmVudCBmcm9tIHRoZSBoZWFkZXIgbmFtZS4KCgkqIGRsbHMvb2xlYXV0MzIvZGlzcHN0ZC5jLCBkbGxzL29sZWF1dDMyL2Rpc3B0eXBlLmMsCgkgIGRsbHMvc2hkb2N2dy9hcGkuYywgZGxscy9zaGRvY3Z3L2NvbWltcGwuYywKCSAgZGxscy9zaGRvY3Z3L3NoZG9jdncuc3BlYywgZGxscy91cmxtb24vY29taW1wbC5jLAoJICBkbGxzL3VybG1vbi91cmxtb24uc3BlYzoKCUFkZGVkIHNvbWUgc2hkb2N2dyBvcmRpbmFscyBhbmQgc3R1YnMuCglGaXhlZCBhIGZldyB3aW5hcGlfY2hlY2sgaXNzdWVzLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJQWx3YXlzIHJ1biBsZGNvbmZpZyBldmVuIGlmIHdlIGRvbid0IGNoYW5nZSBsZC5zby5jb25mLgoKCSogZGxscy91c2VyL3RleHQuYzoKCVJvYmVydCBPJ0NhbGxhaGFuIDxyb2JlcnRAb2NhbGxhaGFuLm9yZz4KCUZpeGVkIGJ1ZyBpbiBURVhUX1dvcmRCcmVhayB0aGF0IHdhcyB2YXJpb3VzbHkgdGhyb3dpbmcgTG90dXMgTm90ZXMKCWludG8gYW4gaW5maW5pdGUgbG9vcCBvciBjYXVzaW5nIGl0IHRvIGNyYXNoLgoKMjAwMi0wNC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLAoJICBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL29iamVjdC5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlZ2lzdHJ5LmMsCgkgIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci90aHJlYWQuYywKCSAgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdW5pY29kZS5jLCBzZXJ2ZXIvd2luZG93LmMsCgkgIHRvb2xzL21ha2VkZXAuYywgdG9vbHMvd2luZWR1bXAvbWlzYy5jLCB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jLAoJICB0b29scy93aW5lZHVtcC9vdXRwdXQuYywgdG9vbHMvd2luZWR1bXAvcGUuYywKCSAgdG9vbHMvd2luZWR1bXAvc2VhcmNoLmMsIHRvb2xzL3dpbmVkdW1wL3N5bWJvbC5jLCB0b29scy93bWMvdXRpbHMuYywKCSAgdG9vbHMvd3JjL3JlYWRyZXMuYywgdG9vbHMvd3JjL3V0aWxzLmMsIHdpbjMyL2NvbnNvbGUuYywKCSAgd2luMzIvZWRpdGxpbmUuYywgd2luZG93cy93aW4uYywgZGxscy91cmxtb24vY29taW1wbC5jLAoJICBkbGxzL3VzZXIvZGRlL21pc2MuYywgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3RleHQuYywKCSAgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLAoJICBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBsaWJyYXJ5L3BvcnQuYywgbWlzYy9yZWdpc3RyeS5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsCgkgIG9sZS9vbGUybmxzLmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVncHJvYy5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLAoJICBzY2hlZHVsZXIvcHRocmVhZC5jLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBjb25maWd1cmUuYWMsCgkgIGRlYnVnZ2VyL2V4dF9kZWJ1Z2dlci5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywKCSAgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsCgkgIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZGlyLmMsCgkgIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbG9jYWxlLmMsIGRsbHMvbnRkbGwvcmVnLmMsCgkgIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL3F1YXJ0ei9pdW5rLmMsIGRsbHMvc2V0dXBhcGkvcGFyc2VyLmMsCgkgIGRsbHMvc2hkb2N2dy9jb21pbXBsLmMsIGNvbmZpZ3VyZToKCUJldHRlciBzdXBwb3J0IGZvciBjb25maWd1cmUgZGV0ZWN0aW9uIG9mIG1pc3NpbmcgdHlwZXMsIGFkZGVkIGNoZWNrCglmb3Igc3NpemVfdC4KCVJlbW92ZWQgYSBjb3VwbGUgb2Ygbm8gbG9uZ2VyIHVzZWQgcG9ydGFiaWxpdHkgZnVuY3Rpb25zLgoJVmFyaW91cyBwb3J0YWJpbGl0eSBmaXhlcyBpbiBwb3J0LmguCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVVwZGF0ZSB0aGUgcXVldWUga2V5IHN0YXRlIGV2ZW4gaWYgbm8gd2luZG93IGhhcyB0aGUgZm9jdXMgKHNwb3R0ZWQgYnkKCVJpenNhbnlpIFpzb2x0KS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZmlsZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsCgkgIHNlcnZlci9zb2NrLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJRml4ZWQgc29tZSBidWdzIGluIG15IHJlY2VudGx5IHN1Ym1pdHRlZCBwYXRjaCBzZXJpZXMuCgoyMDAyLTA0LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGVzdHMvcGF0aC5jOgoJUGF1bCBNaWxsYXIgPHBhdWxtQGFzdHJvLmdsYS5hYy51az4KCUZpeGVkIG1pbm9yIHR5cG8uCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglGaXggZm9yIG1pbmd3MzIuCgoJKiBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJVXBkYXRlZCBsaXN0cyBvZiBkZWJ1Z2dpbmcgY2hhbm5lbHMuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgVHJhbnNtaXRDb21tQ2hhci4KCgkqIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvc29jay5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUZpeGVkIFJlYWRGaWxlKCkgc2VtYW50aWNzIHdoZW4gcmVhZGluZyBhc3luY2hyb25vdXNseSBvbiBzb2NrZXRzLgoJUHJvdmlkZSBtb3JlIGFjY3VyYXRlIHN0YXR1cyBjb2RlcyB0aGFuIFNUQVRVU19VTlNVQ0NFU1NGVUwuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYywgd2luZG93cy93aW5wcm9jLmMsCgkgIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmMsCgkgIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLCBpbmNsdWRlL3dpbmUvcG9ydC5oLAoJICBpbmNsdWRlL3dpbm50LmgsIGxpYnJhcnkvcG9ydC5jLCBtZW1vcnkvc2VsZWN0b3IuYywKCSAgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJTW92ZWQgX19BU01fR0xPQkFMX0ZVTkMgbWFjcm9zIGFuZCBpbnRlcmxvY2tlZCBmdW5jdGlvbnMgdG8gcG9ydC5bY2hdCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL3dpbmJhc2UuaDoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglJbXBsZW1lbnRlZCBvdmVybGFwcGVkIFdTQVJlY3ZGcm9tKCksIFdTQVNlbmRUbygpLCBhbmQKCVdTQUdldE92ZXJsYXBwZWRSZXN1bHQoKS4KCUZpeGVkIHNodXRkb3duKCkgdG8gd29yayBjb3JyZWN0bHkgZm9yIG92ZXJsYXBwZWQgc29ja2V0cyAoZG8gbm90CglhY3R1YWxseSBkbyBhIHNodXRkb3duKCkgc3lzdGVtIGNhbGwgYXMgbG9uZyBhcyB0aGVyZSBhcmUgcGVuZGluZwoJb3ZlcmxhcHBlZCByZXF1ZXN0cykuCglBbHNvIGFkZGVkIGNvcnJlY3QgZXJyb3IgcmVwb3J0aW5nIHdoZW4gdHJ5aW5nIHRvIHJlYWQgb3Igd3JpdGUgb24gYQoJc2h1dCBkb3duIGNvbm5lY3Rpb24sIGFsc28gZm9yIFJlYWRGaWxlKCkvV3JpdGVGaWxlKCkgY2FsbHMuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zb2NrLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJSW1wbGVtZW50ZWQgc2VydmVyIGZyYW1ld29yayBmb3IgYXN5bmNocm9ub3VzIElPIG9uIHNvY2tldHMuCgoyMDAyLTA0LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglOZXZlciBhY3RpdmF0ZSB0aGUgd2luZG93IG9uIFNXX1NIT1dOT0FDVElWQVRFLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglObyBsb25nZXIgdHJ5IHRvIHN1cHBvcnQgbm9uLXJlZW50cmFudCBYbGliLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBjaGVjayBod25kSW5zZXJ0QWZ0ZXIgaWYgU1dQX05PWk9SREVSIGlzIHNldC4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaW5jbHVkZS94MTFkcnYuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIGluc3RhbGxpbmcgYW4gZXJyb3IgY2FsbGJhY2sgd2hlbiBleHBlY3RpbmcgYW4gWDExCgllcnJvci4KCgkqIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9zZXJpYWwuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglBZGQgbW9yZSBmbGV4aWJpbGl0eSB0byB0aGUgcXVldWVfYXN5bmMgc2VydmVyIGNhbGwgYnkgbW92aW5nIG1vc3QKCWZ1bmN0aW9uYWxpdHkgaW50byB0aGUgb2JqZWN0J3MgcXVldWVfYXN5bmMgbWV0aG9kLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXByb3ZlIElfSU1BR0VDQUxMQkFDSyBoYW5kbGluZyBhbmQgc3VwcG9ydCBJX0lNQUdFTk9ORS4KCS0gSW1wbGVtZW50IFRCTl9IT1RJVEVNQ0hBTkdFIGluIHRoZSBtb3VzZSBtb3ZlIHJvdXRpbmUuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNYXJjZWxvIFdlbHRlciA8bWFyY2Vsb0BzeXNtby5jb20uYnI+CglGaXggdG8gb2xkIERDQiBmb3JtYXQgcGFyc2luZy4KCgkqIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvdGVzdHMvd3NwcmludGYuYywKCSAgZGxscy91c2VyL01ha2VmaWxlLmluOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglGaXJzdCByZWdyZXNzaW9uIHRlc3QgZm9yIHdzcHJpbnRmLgoKMjAwMi0wNC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYywgZGxscy94MTFkcnYveHJlbmRlci5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBpbmNsdWRlL3RzX3hyZW5kZXIuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvTWFrZWZpbGUuaW4sCgkgIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHJlbmRlci5jLCBjb25maWd1cmU6CglMb2FkIGxpYlhyZW5kZXIgYXQgcnVuLXRpbWUgd2l0aCBkbG9wZW4gKGJhc2VkIG9uIGEgcGF0Y2ggYnkgSHV3CglEYXZpZXMpLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJRml4ZWQgaGFuZGxpbmcgb2YgZGVmZXJyZWQgY29ubmVjdGlvbnMgaW4gV1NBQWNjZXB0KCkuCgoJKiB1bmljb2RlL2NfOTUwLmMsIHVuaWNvZGUvY2FzZW1hcC5jLCB1bmljb2RlL2NvbXBvc2UuYywKCSAgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9jcHRhYmxlLmMsIHVuaWNvZGUvd2N0eXBlLmMsCgkgIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY18wMzcuYywgdW5pY29kZS9jXzA0Mi5jLAoJICB1bmljb2RlL2NfMTAwMDAuYywgdW5pY29kZS9jXzEwMDA2LmMsIHVuaWNvZGUvY18xMDAwNy5jLAoJICB1bmljb2RlL2NfMTAwMjkuYywgdW5pY29kZS9jXzEwMDYuYywgdW5pY29kZS9jXzEwMDc5LmMsCgkgIHVuaWNvZGUvY18xMDA4MS5jLCB1bmljb2RlL2NfMTAyNi5jLCB1bmljb2RlL2NfMTI1MC5jLAoJICB1bmljb2RlL2NfMTI1MS5jLCB1bmljb2RlL2NfMTI1Mi5jLCB1bmljb2RlL2NfMTI1My5jLAoJICB1bmljb2RlL2NfMTI1NC5jLCB1bmljb2RlL2NfMTI1NS5jLCB1bmljb2RlL2NfMTI1Ni5jLAoJICB1bmljb2RlL2NfMTI1Ny5jLCB1bmljb2RlL2NfMTI1OC5jLCB1bmljb2RlL2NfMjA4NjYuYywKCSAgdW5pY29kZS9jXzI4NTkxLmMsIHVuaWNvZGUvY18yODU5Mi5jLCB1bmljb2RlL2NfMjg1OTMuYywKCSAgdW5pY29kZS9jXzI4NTk0LmMsIHVuaWNvZGUvY18yODU5NS5jLCB1bmljb2RlL2NfMjg1OTYuYywKCSAgdW5pY29kZS9jXzI4NTk3LmMsIHVuaWNvZGUvY18yODU5OC5jLCB1bmljb2RlL2NfMjg1OTkuYywKCSAgdW5pY29kZS9jXzI4NjAwLmMsIHVuaWNvZGUvY18yODYwMy5jLCB1bmljb2RlL2NfMjg2MDQuYywKCSAgdW5pY29kZS9jXzI4NjA1LmMsIHVuaWNvZGUvY18yODYwNi5jLCB1bmljb2RlL2NfNDI0LmMsCgkgIHVuaWNvZGUvY180MzcuYywgdW5pY29kZS9jXzUwMC5jLCB1bmljb2RlL2NfNzM3LmMsIHVuaWNvZGUvY183NzUuYywKCSAgdW5pY29kZS9jXzg1MC5jLCB1bmljb2RlL2NfODUyLmMsIHVuaWNvZGUvY184NTUuYywgdW5pY29kZS9jXzg1Ni5jLAoJICB1bmljb2RlL2NfODU3LmMsIHVuaWNvZGUvY184NjAuYywgdW5pY29kZS9jXzg2MS5jLCB1bmljb2RlL2NfODYyLmMsCgkgIHVuaWNvZGUvY184NjMuYywgdW5pY29kZS9jXzg2NC5jLCB1bmljb2RlL2NfODY1LmMsIHVuaWNvZGUvY184NjYuYywKCSAgdW5pY29kZS9jXzg2OS5jLCB1bmljb2RlL2NfODc0LmMsIHVuaWNvZGUvY184NzUuYywgdW5pY29kZS9jXzg3OC5jLAoJICB1bmljb2RlL2NfOTMyLmMsIHVuaWNvZGUvY185MzYuYywgdW5pY29kZS9jXzk0OS5jOgoJVXBkYXRlZCBmb3IgVW5pY29kZSAzLjIuCglBZGRlZCBJU084ODU5LTE2IGNvZGVwYWdlLgoKCSogdG9vbHMvd2luZWNvbmY6CglEdXN0aW4gTmF2ZWEgPHNwZWVkZHltb25AeWFob28uY29tPgoJRmluZCBudGZzIGRyaXZlcyBhbmQgc3VwZXJtb3VudCBjZC1yb21zLgoJRml4IGZpbmRpbmcgbm9uLXN1cGVybW91bnQgY2Qtcm9tcyBtb3VudGVkIGF0IC9jZHJvbS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJRHVzdGluIE5hdmVhIDxzcGVlZGR5bW9uQHlhaG9vLmNvbT4KCVNlYXJjaCBmb3IgcmVhbC13aW5kb3dzIHJlZ2lzdHJ5IG5vdyBhY3R1YWxseSBhY2Nlc3NlcyBhIGZpbGUuCglGaW5kIGNsZWFuLWluc3RhbGwgd2luMmsgcmVnaXN0cnkuCglGaW5kIGNvcnJlY3QgcGFydGl0aW9uIG9mIHJlYWwgRHJpdmUgQyAobW9zdCBvZiB0aGUgdGltZSkuCgoJKiBmaWxlcy9maWxlLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJQXZvaWQgc2VnZmF1bHQgd2l0aCBvdmVybGFwcGVkIFdyaXRlRmlsZSgpIGNhbGxzLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IFdNX05PVElGWUZPUk1BVCBoYW5kbGluZy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBpbXBsZW1lbnQgV01fTk9USUZZRk9STUFUCgktIGZpeCBncmlwIHBhaW50aW5nCgktIG1ha2UgdXNlIG9mIERyYXdTdGF0dXNUZXh0IHRvIHBhaW50IGNvbnRyb2wKCjIwMDItMDQtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9lZGl0LmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgaW5jbHVkZS9yaWNoZWRpdC5oOgoJQ2h1Y2sgQ3JheW5lIDxjY3JheW5lQGNyYXluZS5vcmc+CgktIFJlY29nbml6ZSAiXG4iIGFzIGFuIGFsdGVybmF0aXZlIHNvZnQgbGluZSBicmVhayBpbiBmdW5jdGlvbgoJICBFRElUX0J1aWxkTGluZURlZnNfTUwgb2YgZWRpdC5jLgoJLSBNYWpvciByZXN0cnVjdHVyaW5nIG9mIHJpY2hlZGl0LmMgdG8gcHJvdmlkZSBidWcgZml4ZXMsIGVuaGFuY2VkCgkgIGZ1bmN0aW9uLCBhbmQgaW1wcm92ZWQgZGVidWcgc3VwcG9ydC4KCgkqIHdpbmRvd3MvZGNlLmM6CglDbGVhciB0aGUgREMgZGlydHkgZmxhZyBiZWZvcmUgY2FsbGluZyBTZXREQ1N0YXRlIHRvIGF2b2lkIHNwdXJpb3VzCgl2aXMgcmVnaW9uIHVwZGF0ZXMuCgoJKiB0b29scy93aW5laW5zdGFsbDogRml4ZWQgdHlwbyBpbiBzdSBjb21tYW5kLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQSBiaXQgbW9yZSByb2J1c3QgYWdhaW5zdCB3YXZlPz8/T3BlbiBmYWlsdXJlcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG11bHRpLXRocmVhZCBhY2Nlc3MgdG8gbG9jYWwgdmFyaWFibGVzIChtYWlubHkgZmQgZm9yCgkvZGV2L2RzcCkuCglHb2QgcmlkIG9mIG9ic29sZXRlIG1hY3JvLgoJRml4ZWQgc29tZSBzbGlnaHQgaW5pdCBpc3N1ZXMuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgbWlzbWF0Y2ggaW4gd2F2ZWluIDE2LzMyIG1hcHBpbmcuCglSZWxheGVkIHNvbWUgdGVzdHMgYWJvdXQgYnVmZmVyIGxlbmd0aHMuCgoJKiBmaWxlcy9kcml2ZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBbHdheXMgY2xvc2UgZmQgd2hlbiByZWFkaW5nIHN1cGVyIGJsb2NrLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJRml4ZWQgY3V0JnBhc3RlIGJ1Zy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCVJlbW92ZWQgY29uc3RhbnRzIHRoYXQgYXJlbid0IGRlZmluZWQgaW4gV2luZG93cy4KCjIwMDItMDQtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2RjLmM6CglGaXhlZCBoYW5kbGluZyBvZiB2aXNpYmxlIHJlZ2lvbiBpbiBTYXZlL1Jlc3RvcmVEQy4KCgkqIG1zZG9zL2ludDEzLmMsIHdpbjMyL2RldmljZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCU1vdmVkIGludDEzIHN1cHBvcnQgdG8gdGhlIFZXSU4zMl9ESU9DX0RPU19JTlQxMyBpb2N0bC4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBmbG9wcHkgcGFyYW1ldGVyIHRhYmxlLgoKCSogZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvdGVzdHMvcHJvY2Vzcy5jLAoJICBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBmcmFtZXdvcmsgZm9yIHRlc3RpbmcgQ3JlYXRlUHJvY2VzcyBhbmQgYSBmZXcgdGVzdHMuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCVRvbnkgTGFtYnJlZ3RzIDx0b255X2xhbWJyZWd0c0B0ZWx1c3BsYW5ldC5uZXQ+CglDb3JyZWN0bHkgZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiBhIHdpbmUgYmluYXJ5LgoKCSogZGxscy9rZXJuZWwvY29tbS5jOiA8d2luZUBnYzIua2xvZXBmZXIub3JnPgoJRmFzdGVyIHNlcmlhbCBzcGVlZCBjYXNlcyBmb3Igbm9uIExpbnV4IHN5c3RlbXMuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3VzZXIvdGVzdHMvY2xhc3MuYywgZGxscy91c2VyL3Rlc3RzL3VzZXIzMl90ZXN0LnNwZWM6CglNaWtlIE1jQ29ybWFjayA8bWlrZW1AY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBzaW1wbGUgdGVzdCBzZXQgZm9yIHdpbmRvdyBjbGFzc2VzLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglUaGUgZXh0ZW5zaW9uIHNob3VsZCBub3QgYmUgcmVtb3ZlZCBmcm9tIHRoZSBkaXNwbGF5IG9mIGZvbGRlciBuYW1lcy4KCjIwMDItMDQtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvbWFwcGluZy5jOgoJQ2xlYXIgbWFwcGluZy0+c2hhcmVkX2ZpbGUgb24gZXJyb3IuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUJpbGwgTWVkbGFuZCA8QmlsbC5NZWRsYW5kQGFjY3BhYy5jb20+CglHZXQgdGhlIGxkY29uZmlnIGNoZWNrIHRvIHdvcmsgZm9yIGJhc2ggc2hlbGxzLgoKCSogZGxscy9vbGVhdXQzMi9zdHVicy5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIE9sZUljb25Ub0N1cnNvci4KCgkqIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYzoKCUphc29uIEVkbWVhZGVzIDx1c0B0aGUtZWRtZWFkZXMuZGVtb24uY28udWs+CgktIEZpeGVkIG1vdmUgYW5kIGNvcHkgd2hlbiBubyBkZXN0aW5hdGlvbiBzdXBwbGllZCAoYXNzdW1lcyAnLicgbm93IGFzCgkgIHBlciB3aW5kb3dzKQoJLSBGaXhlZCBtb3ZlIHNvIHVzZXMgZnVsbCBwYXRoIG5hbWUgZm9yIGRlc3RpbmF0aW9uIGZpbGUsIGFuZCBpZgoJICBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeSwgdXNlcyBvcmlnaW5hbCBmaWxlbmFtZS4KCgkqIGRsbHMvdXNlci93c3ByaW50Zi5jOgoJQmlsbCBNZWRsYW5kIDxCaWxsLk1lZGxhbmRAYWNjcGFjLmNvbT4KCUNvcnJlY3QgaGFuZGxpbmcgb2YgemVyby1wYWRkZWQgbmVnYXRpdmUgbnVtYmVyczsgdHJhbnNmZXIgdGhlIHNpZ24KCUJFRk9SRSBhZGRpbmcgdGhlIHplcm9lcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQmlsbCBNZWRsYW5kIDxCaWxsLk1lZGxhbmRAYWNjcGFjLmNvbT4KCUhhbmRsZSB3aGVuIGxkY29uZmlnIGlzIG5vdCBvbiB0aGUgcGF0aCwgYW5kIGRvIG5vdCBydW4gaXQgdW50aWwgYWZ0ZXIKCXRoZSBsaWJkaXIgaGFzIGJlZW4gcG9wdWxhdGVkLgoKCSogdG9vbHMvd2luZWNoZWNrOgoJQmlsbCBNZWRsYW5kIDxCaWxsLk1lZGxhbmRAYWNjcGFjLmNvbT4KCVByZXZlbnQgZXJyb3IgbWVzc2FnZSBpZiBMRF9MSUJSQVJZX1BBVEggaXMgbm90IGJlaW5nIHVzZWQuCglDb21tZW50IG91dCB0aGUgREVCVUcgbWVzc2FnZS4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCUJpbGwgTWVkbGFuZCA8QmlsbC5NZWRsYW5kQGFjY3BhYy5jb20+CglHZXQgdGhlIGZvbGRlciBicm93c2VyIHRvIHdvcmsgYXMgd2VsbCB3aXRoIFcgbm90aWZpY2F0aW9uIGFzIEEgKGl0CglzZWVtcyB0byB3b3JrIHJlYXNvbmFibHkpLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmM6CglDaHJpc3RpYW4gQ29zdGEgPHRpdGFuLmNvc3RhQHdhbmFkb28uZnI+CglHRVQgRlVOQ1RJT05BTElUWS9TVEFURSBJTkZPUk1BVElPTjogVGhlIGlucHV0IHBhcmFtZXRlciBFUzpESSBpcyBhCglidWZmZXIgd2hlcmUgYmlvcyBpbmZvcm1hdGlvbiAoYWxsIHRoZSBWSURFT1NUQVRFIHN0cnVjdCkgbXVzdCBiZQoJY29waWVkIHRvLgoKCSogaW5jbHVkZS93aW5lL3Rlc3QuaCwgcHJvZ3JhbXMvd2luZXRlc3Qvd3RtYWluLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vdyBDIHRlc3RzIGFyZSBhYmxlIHRvIGFjY2VzcyBhcmdjL2FyZ3YgYXMgcGFzc2VkIHRvIHRoZSBwcm9ncmFtLgoKMjAwMi0wNC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZWRvcy92Z2EuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCVZHQV9pb3BvcnRfaW46IEZha2UgdGhlIG9jY3VycmVuY2Ugb2YgdGhlIHZlcnRpY2FsIHJlZnJlc2ggd2hlbiBubwoJZ3JhcGhpYyBtb2RlIGhhcyBiZWVuIHNldC4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9hdmlwYXJzZS5jLAoJICBkbGxzL3F1YXJ0ei9pamdkZWMuYywgZGxscy9xdWFydHovaWpnZGVjLmgsIGRsbHMvcXVhcnR6L21qcGdkZWMuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBNSlBHIGhhbmRsZXIuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsCgkgIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUxlbyB2YW4gZGVuIEJlcmcgPGxlb0Bjb25uZWN0dXguY29tPgoJQWRkZWQgc3R1YnMgZm9yIEFib3J0U3lzdGVtU2h1dGRvd25bQVddIGFuZCBQcml2aWxlZ2VDaGVjay4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCU1laG1ldCBZYXNhciA8bXlhc2FyQGZyZWUuZnI+CglOb3csIHdlIGFyZSByZWFsbHkgZXJhc2luZyBXU19DQVBUSU9OIHN0eWxlLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lLnBtLCBwcm9ncmFtcy93aW5ldGVzdC9ydW50ZXN0LAoJICBwcm9ncmFtcy93aW5ldGVzdC93dG1haW4uYzoKCVBhdWwgTWlsbGFyIDxwYXVsbUBhc3Ryby5nbGEuYWMudWs+CglBZGRlZCBvcHRpb24gZm9yIGFubm91bmNlbWVudCBvZiBzdWNjZXNzZnVsIHRlc3QgcmVzdWx0cy4KCjIwMDItMDQtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwKCSAgTWFrZWZpbGUuaW46CglFeHBvcnQgYSBmZXcgbW9yZSAxNi1iaXQgR0RJIGZ1bmN0aW9ucy4gRmluaXNoZWQgd2luZXBzIHNlcGFyYXRpb24uCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYzoKCUNocmlzdGlhbiBDb3N0YSA8dGl0YW4uY29zdGFAd2FuYWRvby5mcj4KCUltcGxlbWVudCBTRVQgSU5ESVZJRFVBTCBEQUMgUkVHSVNURVIgYW5kIFNFVCBCTE9DSyBPRiBEQUMgUkVHSVNURVJTLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglQdXQgdGhlIE1DTl8gYW5kIERUTl8gaW4gY29ycmVjdCBvcmRlci4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglNZWhtZXQgWWFzYXIgPG15YXNhckBmcmVlLmZyPgoJQWRkIG1vcmUgY2hlY2sgaW5zaWRlIFNCX1NFVFRFWFQgYW5kIFNCX0dFVFRFWFQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJQ29tcGxldGUgaW1wbGVtZW50YXRpb24gZm9yIERyYXdTdGF0dXNUZXh0e0EsV30uCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJX2dldF9zb2NrX2ZkX3R5cGU6IE5ldyBmdW5jdGlvbiwgcmV0cmlldmUgZmQgdHlwZSBhbmQgZmxhZ3MgbGlrZQoJRklMRV9HZXRVbml4SGFuZGxlVHlwZSgpLgoJV1NBU2VuZFRvL1dTQVJlY3ZGcm9tOiBVc2UgIF9nZXRfc29ja19mZF90eXBlKCkuCgoJKiBmaWxlcy9maWxlLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BGdWppdHN1LVNpZW1lbnMuY29tPgoJR2V0T3ZlcmxhcHBlZFJlc3VsdDogUmV0dXJuIEVSUk9SX0lPX0lOQ09NUExFVEUgaWYgSU8gc3RpbGwgcGVuZGluZy4KCVJlYWRGaWxlIC8gV3JpdGVGaWxlOiBVc2UgR2V0T3ZlcmxhcHBlZFJlc3VsdCgpIHRvIGNoZWNrIGZvciBpbW1lZGlhdGUKCWNvbXBsZXRpb24uCgoyMDAyLTA0LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUZpeGVkIHN0dXBpZCB0eXBvIGluIHByZXZpb3VzIHBhdGNoLgoKMjAwMi0wNC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZm9udC5jLCBkbGxzL2dkaS93aW4xNmRydi9mb250LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L3dpbjE2ZHJ2LmgsIGRsbHMvd2luZXBzL2ZvbnQuYzoKCVBhc3MgYSBQSFlTREVWIHRvIEVudW1EZXZpY2VGb250IGFuZCByZWxlYXNlIHRoZSBHREkgbG9jayBpbgoJRk9OVF9FbnVtSW5zdGFuY2UgaW5zdGVhZC4KCgkqIG1pc2Mvb3B0aW9ucy5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRml4ZWQgaW5oZXJpdGluZyBjb21tYW5kLWxpbmUgb3B0aW9ucyBmcm9tIHBhcmVudCBwcm9jZXNzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvYXN5bmMuaDoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CgktIE5lZWQgYSAiY2xlYW51cCIgbWV0aG9kLgoJLSBjYWxsaW5nIHRoZSAiY2FsbF9jb21wbGV0aW9uIiBtZXRob2QgdW5jb25kaXRpb25hbGx5IGluIGZpbmlzaF9hc3luYwoJICAoaW50cm9kdWNlZCBieSBtZSkgd2FzIHdyb25nLCBiZWNhdXNlIHRoZSB0aHJlYWQgbWF5IG5ldmVyIGJlIGluIGFuCgkgIGFsZXJ0YWJsZSB3YWl0IHN0YXRlIC0+IGNhbGwgaXQgb25seSBpZiB1c2VyIGNvbXBsZXRpb24gZnVuY3Rpb24gaXMgcHJlc2VudC4KCS0gV2UgbmVlZCB0d28gY29uc3RhbnQgIm9wcyIgb2JqZWN0cywgb25lIHdpdGggYW5kIG9uZSB3aXRob3V0IGNhbGxfY29tcGxldGlvbgoJICBtZXRob2QgKHRoZSBldmVudCBmaWVsZCBtYXkgTk9UIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNvbXBsZXRpb24KCSAgbXVzdCBiZSBjYWxsZWQgb3Igbm90KS4KCgkqIHNlcnZlci9hc3luYy5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCVNUQVRVU19DQU5DRUxMRUQgaXMgY29ycmVjdCBmb3IgY2FuY2VsbGVkIHJlcXVlc3RzIChjb3JyZXNwb25kcyB0bwoJRVJST1JfT1BFUkFUSU9OX0FCT1JURUQpLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJTWVobWV0IFlhc2FyIDxteWFzYXJAZnJlZS5mcj4KCS0gQ2xlYXIgV1NfQ0FQVElPTiBzdHlsZS4KCS0gU2VuZCBub3cgQ0ROX0ZJTEVPSyBiZWZvcmUgRklMRU9LU1RSSU5HLgoJLSBGaXggYnVnIHJlbGF0ZWQgdG8gRFdMX01TR1JFU1VMICh3ZSB3ZXJlIHJlYWRpbmcgZnJvbSB3cm9uZyBod25kKS4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9SRUFETUUsIGRsbHMvcXVhcnR6L2FjbXdyYXAuYywKCSAgZGxscy9xdWFydHovYXN5bmNzcmMuYywgZGxscy9xdWFydHovYXVkcmVuLmMsIGRsbHMvcXVhcnR6L2ZtYXAuYywKCSAgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9pdW5rLmMsIGRsbHMvcXVhcnR6L21haW4uYywKCSAgZGxscy9xdWFydHovbWVtYWxsb2MuYywgZGxscy9xdWFydHovbWlkcGFyc2UuYywKCSAgZGxscy9xdWFydHovbWpwZ2RlYy5jLCBkbGxzL3F1YXJ0ei9tcGFkZWMuYywgZGxscy9xdWFydHovbXBncGFyc2UuYywKCSAgZGxscy9xdWFydHovbXB2ZGVjLmMsIGRsbHMvcXVhcnR6L3BhcnNlci5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuaCwKCSAgZGxscy9xdWFydHovcXRkZWMuYywgZGxscy9xdWFydHovcXRwYXJzZS5jLCBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5jLAoJICBkbGxzL3F1YXJ0ei92aWRyZW4uYywgZGxscy9xdWFydHoveGZvcm0uYywgZGxscy9xdWFydHoveGZvcm0uaCwKCSAgd2luZWRlZmF1bHQucmVnOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIHNvbWUgYnVncy4KCUFkZGVkIHN0dWJzLgoJUmVtb3ZlIGhhcm1sZXNzIEZJWE1Fcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CglGaXggd2luZW1ha2VyLWdlbmVyYXRlZCByZWZlcmVuY2VzIHRvIGRsbHMgdGhhdCBoYXZlIGNoYW5nZWQgdGhlaXIgbmFtZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbXBsZW1lbnQgTk1fQ1VTVE9NRFJBVyBub3RpZmljYXRpb24uCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gV2hlbiBkdW1waW5nIE5NQ1VTVE9NRFJBVywgdXNlIGNvcnJlY3Qgc2l6ZSBmb3IgYSBUb29sYmFyLgoJLSBBZGQgbm90aWZ5IG5hbWVzIGZvciBjb250cm9sczogdG9vbHRpcHMsIHVwZG93biwgY2FsZW5kYXIsIGRhdGV0aW1lLAoJICBpcCwgYW5kIHN0YXR1cy4KCjIwMDItMDQtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBWRVJTSU9OLCBjb25maWd1cmU6CglSZWxlYXNlIDIwMDIwNDExLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTA0LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogLmN2c2lnbm9yZSwgTWFrZWZpbGUuaW46CglDbGVhbiBhdXRvbTR0ZS5jYWNoZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnYXBpL3JlZ0ZpeGVyLnBsLCBwcm9ncmFtcy9yZWdhcGkvcmVnUmVzdG9yZXIucGwsCgkgIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9SRUFETUUsIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9hZnRlci5yZWcsCgkgIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9iZWZvcmUucmVnLCBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvb3JpZy5yZWcsCgkgIHByb2dyYW1zL3JlZ2VkaXQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnZWRpdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvcmVnZWRpdC9yZWdlZGl0LmMsIHByb2dyYW1zL3JlZ2VkaXQvcmVnZWRpdC5zcGVjLAoJICBwcm9ncmFtcy9yZWdlZGl0L3JlZ3Byb2MuYywgcHJvZ3JhbXMvcmVnZWRpdC9yZWdwcm9jLmg6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUNyZWF0ZWQgcmVnZWRpdCByZXBsYWNlbWVudC4gRml4ZWQgc29tZSBidWdzLgoKCSogcHJvZ3JhbXMvY2xvY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9ub3RlcGFkL0NoYW5nZUxvZywKCSAgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9wcm9nbWFuL0NoYW5nZUxvZywKCSAgcHJvZ3JhbXMvcmVndGVzdC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvQ2hhbmdlTG9nLAoJICBwcm9ncmFtcy93aW5oZWxwL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2ludmVyL0NoYW5nZUxvZzoKCVJlbW92ZWQgY2hhbmdlbG9nIGVudHJpZXMgdGhhdCBhcmUgaW4gdGhlIG1haW4gY2hhbmdlbG9nLCBhbmQgYWRkZWQKCW5vdGljZSB0byBub3QgZWRpdCB0aGUgc2Vjb25kYXJ5IGNoYW5nZWxvZ3MgYW55bW9yZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYzoKCUNocmlzdG9waCBGcmljayA8ZnJpY2tAU0MtTmV0d29ya3MuZGU+CglSZXVzZSB2aXN1YWxzIHRvIGF2b2lkIE1BWF9QSVhFTEZPUk1BVFMgbGltaXQuCglBY3RpdmF0ZWQgdGhlIGNvZGUgdG8gc3VwcG9ydCB0aGUgc3RlbmNpbCBidWZmZXIuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglVc2UgaGFyZC1jb2RlZCBmb250IG5hbWUgYmluZGluZ3Mgb25seSB3aXRoIHRoZSBBTlNJX0NIQVJTRVQgKG5vbi1VUwoJY2hhcnNldHMgd2l0aCBubyBmb250IG5hbWUgc2hvdWxkbid0IGJlIGJvdW5kIHRvIFVTIGNoYXJzZXQpLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVJldHVybiBlcnJvciBjb2RlcyBpbiBzb21lIDE2Yml0IG9sZSBzdHVicywgcmV0dXJuaW5nIHN1Y2Nlc3MgY2F1c2VzCgljcmFzaGVzLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgbWlzYy9vcHRpb25zLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uYywKCSAgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCBNYWtlZmlsZS5pbiwKCSAgY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglVcGRhdGVkIGNvbmZpZ3VyZSB0byB0YWtlIGFkdmFudGFnZSBvZiBuZXcgYXV0b2NvbmYgMi41MyBmZWF0dXJlcy4KCgkqIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2ludDEwLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQyMS5jLCBkbGxzL3dpbmVkb3MvaW50MjkuYywgaW5jbHVkZS9jb25zb2xlLmg6CglSZW1vdmVkIG9ic29sZXRlIGNvbnNvbGUgZHJpdmVyLgoKCSogZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsCgkgIGRsbHMva2VybmVsL3Rlc3RzL3BhdGguYzoKCUdlb2ZmcmV5IEhhdXNoZWVyIDxpMTM0cnRoOGQ5c0BwaHJhY3R1cmVkYmx1ZS5jb20+CglBZGRlZCB0ZXN0IGZvciBHZXRGdWxsUGF0aE5hbWVzQSwgR2V0TG9uZ1BhdGhOYW1lc0EsCglHZXRTaG9ydFBhdGhOYW1lc0EsIEdldEN1cnJlbnREaXJlY3RvcnlBLCBTZXRDdXJyZW50RGlyZWN0b3J5QS4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNJQ19HZXRJY29uSW5kZXg6IHN0YXJ0IERQQV9TZWFyY2ggZnJvbSBpbmRleCAwLgoKCSogdW5pY29kZS93Y3RvbWIuYzoKCSd1c2VkJyBzaG91bGQgYmUgc2V0IGV2ZW4gaWYgd2UgYXJlIG9ubHkgY29tcHV0aW5nIHRoZSBuZWNlc3NhcnkKCWJ1ZmZlciBzaXplLgoKCSogZGxscy9jcnlwdDMyL21haW4uYywgZGxscy93aW5zb2NrL3NvY2tldC5jLCBmaWxlcy9maWxlLmM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUNvbXBpbGUgZml4ZXMgZm9yIGdjYyAyLjcuMi4zLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBpbXBsZW1lbnQgTFBTVFJfVEVYVENBTExCQUNLCgktIGZpeCBtYW55IG1lbW9yeS1tYW5hZ2VtZW50IGJ1Z3MKCS0gbWFueSBVbmljb2RlIGZpeGVzCgktIGZpeCBpbmRlbnRhdGlvbiBpbiBhIGZldyBwbGFjZXMKCS0gYml0cyBvZiBjb2RlIGNsZWFudXAKCgkqIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbW92ZWQgb2Jzb2xldGUgdGV4dCBtb2RlIGNvbG9yIGFuZCBhdHRyaWJ1dGUgY29kZS4KCU1hZGUgcm91dGluZXMgZm9yIHRleHQgbW9kZSBzY29sbGluZywgY2xlYXJpbmcgYW5kIGdldHRpbmcgY2hhcmFjdGVyCglhdCBjdXJzb3IgdXNlIFdpbmRvd3MgY29uc29sZSBhbmQgVkdBIGJ1ZmZlci4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUltcGxlbWVudGVkIFByaW50RGxnVyBhbmQgUGFnZVNldHVwRGxnVy4KCgkqIHNlcnZlci93aW5kb3cuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCWdldF93aW5kb3dfY2hpbGRyZW46IG9ubHkgZGVjcmVtZW50IGF2YWlsYWJsZSBzaXplIGlmIGVsZW1lbnQgd2FzCgl3cml0dGVuLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTElTVFZJRVdfR2V0Q29sdW1uVDogY2FyZSBmb3IgdGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nLgoJTElTVFZJRVdfQ3JlYXRlOiBzZW5kIEhETV9TRVRVTklDT0RFRk9STUFUIG1lc3NhZ2UuCgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNQ0lXbmRDcmVhdGVBOiBjaGVjayBmb3IgTlVMTCBmaWxlbmFtZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCVJpenNhbnlpIFpzb2x0IDxyaXpzYW55aUBteXJlYWxib3guY29tPgoJU2VuZGluZyBFTl9VUERBVEUgbm90aWZpY2F0aW9uIGluIHRoZSBFRElUX1dNX1NldFRleHQgLSB0aGUgY29tbWVudAoJYWxyZWFkeSBzYXlzLCB0aGF0IHRoZSBtZXNzYWdlIGlzIHNlbnQsIGJ1dCBpdCBpcyBub3QuLi4KCjIwMDItMDQtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBuZXcgY29uc29sZSBvbmx5IGlmIHRoZSBwcm9jZXNzIGlzIGEgY29uc29sZSBhcHBsaWNhdGlvbi4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgcHJvYmxlbSB3aXRoIG1vdXNlIGN1cnNvcnMgaW4gV29yZC4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBlcmFzZSBiYWNrZ3JvdW5kLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJV2UgZG9uJ3QgaGFuZGxlIFNUUkVUQ0hfSEFMRlRPTkUgbW9kZSB5ZXQ7IG1ha2UgdGhpcyBkbyB0aGUgc2FtZSBhcwoJU1RSRVRDSF9ERUxFVEVTQ0FOUyBmb3Igbm93LgoKMjAwMi0wNC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmM6CglOZWVkIHRvIGNoZWNrIGZvciBmb2N1cyBhbmQgY2FwdHVyZSBhbHNvIG9uIHRoZSBjaGlsZHJlbiBvZiB0aGUgd2luZG93CgliZWluZyBkaXNhYmxlZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zaXN5cy8uY3ZzaWdub3JlLAoJICBkbGxzL21zaXN5cy9NYWtlZmlsZS5pbiwgZGxscy9tc2lzeXMvbXNpc3lzLmMsCgkgIGRsbHMvbXNpc3lzL21zaXN5cy5vY3guc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglDcmVhdGVkIGEgc3R1YmJlZCB2ZXJzaW9uIG9mIE1TSVNZUy5PQ1guCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVNvbWUgYWRkaXRpb25hbCB0cmFjZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglEdXNhbiBMYWNrbyA8ZGxhY2tvQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIHdlIGNhbid0IGV4dHJhY3QgdGhlIGljb24sIGRlZmVyIGxpbmsgY3JlYXRpb24gdG8gcnVub25jZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYzoKCUZpeGVkIGNvbXBpbGUgd2hlbiBIQVZFX09QRU5HTCBpcyBub3QgZGVmaW5lZC4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBDU19QQVJFTlREQyBzdHlsZS4KCgkqIGluY2x1ZGUvdXJsbW9uLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBlcnJvciBjb2Rlcy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi9jb21pbXBsLmMsCgkgIGRsbHMvdXJsbW9uL2NvbWltcGwuaCwgZGxscy91cmxtb24vbW9uaWtlci5jLCBkbGxzL3VybG1vbi91bW9uLmMsCgkgIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gZ2V0IHJpZCBvZiBwYXJlbnQgaGFuZGxlIGZyb20gaW5mbyBzdHJ1Y3QKCS0gc3RvcmUgaHduZCBpbiBpbmZvIHN0cnVjdCwgZG8gbm90IHBhc3MgaXQgYXJvdW5kCgktIHVzZSB1bmljb2RlIGZ1bmN0aW9ucyB3aGVyZXZlciBwb3NzaWJsZQoJLSBjb25zaXN0ZW50IGluZGVudGF0aW9uCgktIGJ1Z3MgaW4gVW5pY29kZSBoYW5kbGluZyBmaXhlZAoJLSBmaXggaGFuZGxpbmcgb2YgZXJyb3IgY29uZGl0aW9ucwoJLSBmaXggaW5pdGlhbGl6YXRpb24gYnVncywgZXRjLgoJLSBjb21wbGV0ZSB0b29sdGlwIHN1cHBvcnQKCS0gdHlwZXNhZmV0eQoJLSB1cGRhdGUgdGhlIEZJWE1FIGxpc3QgdG8gdGhlIGxhdGVzdCBzcGVjcwoKCSogaW5jbHVkZS94MTFkcnYuaCwgZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jOgoJTWljaGFlbCBLYXJjaGVyIDxtaWNoYWVsLmthcmNoZXJAZHBrLmJlcmxpbi5maWRvLmRlPgoJRml4ZWQgT3BlbkdMIHJvdXRpbmVzIGJyb2tlbiBieSB0aGUgREMgLT4gUEhZU0RFViBjaGFuZ2UuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9tYWtlX2N5Z3dpbl9tYWtlZmlsZXM6CglHZW9mZnJleSBIYXVzaGVlciA8aTEzNHJ0aDhkOXNAcGhyYWN0dXJlZGJsdWUuY29tPgoJQWRkZWQgY29tbWVudHMgZXhwbGFpbmcgaG93IHRvIHVzZSBjeWd3aW4vbWluZ3cvd2luZSBoZWFkZXJzLgoJQWRkZWQgJ2NsZWFuJyBhbmQgJ2Rpc3RjbGVhbicKCUFkZGVkIG5ldyBvcHRpb25zIC1zIGFuZCAtaS4KCUFyY2hpdmVzIHdpbGwgbm93IGluY2x1ZGUgdGhlIGVudGlyZSAnLi9pbmNsdWRlJyBkaXJlY3RvcnkgaW5zdGVhZCBvZgoJanVzdCAnLi9pbmNsdWRlL3dpbmUnLgoJUmVuYW1lZCBtYWtlZmlsZSBmcm9tIE1ha2VmaWxlLmN5ZyB0byBNYWtlZmlsZS53aW4uCglUaGUgbWFrZWZpbGUgaXMgbm93IG1pbmd3IGNvbXBhdGlibGUgYXMgd2VsbCAoYWx0aG91Z2ggaXQncyBiZSBiZXR0ZXIKCWlmIHdlIGNvdWxkIGRldGVjdCB0aGUgY29ycmVjdCBsb2NhdGlvbiBvZiB0aGUgd2luZG93cy5oIGhlYWRlcnMpLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBmaXggaW5kZW50YXRpb24KCS0gaGFuZGxlIGFsbCBvdXQtb2YtbWVtb3J5IGNhc2VzCgktIGJldHRlciBkcmF3aW5nIGNvZGUKCS0gZml4IENCRVNfRVhfTk9FRElUSU1BR0UgaGFuZGxpbmcKCS0gaW1wbGVtZW50IENCRVNfRVhfTk9FRElUSU1BR0VJTkRFTlQKCS0gaW1wbGVtZW50IElfe0lOREVOVCxJTUFHRX1DQUxMQkFDSwoJLSBmaXggbm90aWZpY2F0aW9uIGNvZGUgZm9yIEFOU0kvVW5pY29kZQoJLSBtYWtlIHVzZSBvZiBpT3ZlcmxheSBpbWFnZQoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCVBhdWwgUnVwZSA8cHJ1cGVAbmMucnIuY29tPgoJQWRkZWQga2V5bWFwIHRhYmxlcyBmb3IgVVMgZHZvcmFrIGxheW91dC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWxzbyAjaW5jbHVkZSA8c3lzL3Vpby5oPi4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy93aW4uaW5pOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGEgc2FtcGxlIHdpbi5pbmkuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tcGFkZWMuYywKCSAgZGxscy9xdWFydHovbXB2ZGVjLmMsIGRsbHMvcXVhcnR6L3hmb3JtLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvd2lubW0vd2lubW1fSmEucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHJlc291cmNlcyBmb3IgSmFwYW5lc2UuCgoJKiBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcGFyc2VyLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgY3Jhc2hpbmcgaW4gc3RvcHBpbmcgcGFyc2VyLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglVc2UgZGVmYXVsdCBHVUkgZm9udCBpbnN0ZWFkIG9mIGhhcmQtY29kZWQgJ01TIFNhbnMgU2VyaWYnLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglDb252ZXJ0ZWQgInJlYWQgc3RhbmRhcmQgaW5wdXQgd2l0aCBlY2hvIiBpbnRlcnJ1cHQgc2VydmljZSB0byB1c2UKCWNvbW1vbiBET1NWTSBjb25zb2xlIGlucHV0IHJvdXRpbmUgYW5kIG1hZGUgdGhlIHNlcnZpY2UgcmVhbGx5IGVjaG8uCgoJKiBkbGxzL3dpbmVkb3MvaW50MTAuYywgZGxscy93aW5lZG9zL3ZnYS5jLCBkbGxzL3dpbmVkb3MvdmdhLmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglXcml0ZXMgdG8gc3Rkb3V0IGFuZCBWR0FfV3JpdGVDaGFycyByb3V0aW5lIG5vdyB1cGRhdGUgYm90aCBWR0EKCWJ1ZmZlcnMgYW5kIFdpbmRvd3MgY29uc29sZS4KCUFkZGVkIHJvdXRpbmUgZm9yIGNoYW5naW5nIGN1cnJlbnQgY29uc29sZSBhdHRyaWJ1dGVzLgoJTW92ZWQgdGV4dCBtb2RlIGhhbmRsaW5nIGZyb20gVkdBX1BvbGwgaW50byBuZXcgcm91dGluZSBhbmQgY2hhbmdlZAoJbG9ja2luZyBwcmltaXRpdmUgaW50byBjcml0aWNhbCBzZWN0aW9uLgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBhbiBvdmVyZmxvdyBpbiBjYWxjdWxhdGluZyB0aW1lcy4KCjIwMDItMDQtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5lZGVmYXVsdC5yZWc6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgcmVnaXN0cnkgZW50cmllcyByZXF1aXJlZCBmb3IgSUUgaW5zdGFsbGVyLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEb24ndCBoYW5nIGFyb3VuZCBmb3IgYSBtaW51dGUgaWYgd2UgY2FuJ3QgZXhlYyB0aGUgY2xpcGJvYXJkIHNlcnZlci4KCgkqIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy93aW5wb3MuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIHNvbWUgU2VuZE1lc3NhZ2Ugd2l0aCBTZW5kTm90aWZ5TWVzc2FnZSBpbiBjYXNlIHRoZSB0YXJnZXQKCXdpbmRvdyBiZWxvbmdzIHRvIGFub3RoZXIgdGhyZWFkLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgZXhpdCBzdGF0dXMgaW4gc29tZSBjYXNlcy4KCgkqIG9iamVjdHMvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU3BvdXQgYSBGSVhNRSBpZiB3ZSB0cnkgdG8gY2FsbCBFeHRUZXh0T3V0IG9uIGFuIG9wZW4gcGF0aC4KCgkqIGRsbHMvd2luZXBzL2RyaXZlci5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFJlc2V0REMgYW5kIFBIWVNJQ0FMT0ZGU0VUW1h8WV0gZGV2Y2Fwcy4KCUZpeGVzIHRvIE1lcmdlRGV2bW9kZXMuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIGRlZmF1bHQgcGFwZXIgc2l6ZSB0byBsZXR0ZXIuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOgoJQXZvaWQgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gYXR0YWNoIHRvIGEgdGVybWluYXRpbmcgcHJvY2Vzcy4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jLCBkbGxzL2dkaS9lbmhtZmRydi9pbml0LmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBSZXNldERDLgoKMjAwMi0wNC0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZXBzL2RyaXZlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBFeHREZXZpY2VNb2RlIGRpYWxvZyB1c2UgdW5pY29kZSBwcm9wZXJ0eSBzaGVldCBmdW5jdGlvbnMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJSEtFWV9MT0NBTF9VU0VSIHNob3VsZCBiZSBIS0VZX0NVUlJFTlRfVVNFUi4KCgkqIHNlcnZlci9hc3luYy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdGhyZWFkLmMsCgkgIHNlcnZlci90cmFjZS5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9hc3luYy5oLAoJICBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzY2hlZHVsZXIvc3luY2hyby5jLAoJICBzZXJ2ZXIvYXN5bmMuYzoKCU1hcnRpbiBXaWxjayA8TWFydGluLldpbGNrQGZ1aml0c3Utc2llbWVucy5jb20+CgktIHNlcGFyYXRlIGNsZWFubHkgYmV0d2VlbiBhc3luYyBzY2hlZHVsaW5nIGFuZCBmaWxlIElPIHJlbGF0ZWQgaXNzdWVzLgoJLSBtYWtlIHRoZSBBUEkgY29tcGF0aWJsZSB3aXRoIG90aGVyIHR5cGVzIG9mIGFzeW5jIHJlcXVlc3RzIChlLmcuIGZvcgoJICBzb2NrZXRzKS4KCS0gcmVtb3ZlIGV4cG9ydHMgb2YgYXN5bmMgSU8gcmVsYXRlZCBmdW5jdGlvbnMgZm9yIERMTCBzZXBhcmF0aW9uLgoKCSogb2JqZWN0cy9mb250LmM6CglGaXhlZCBHZXRUZXh0RXh0ZW50UG9pbnRJIGRyaXZlciB1c2FnZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCU1ha2UgdGhlIHJlY3YoKSBhbmQgc2VuZCgpIGZhbWlseSBvZiBmdW5jdGlvbnMgdXNlIFdTQVJlY3ZGcm9tKCkgYW5kCglXU0FTZW5kVG8oKS4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCVN0ZXZlbiBFZHdhcmRzIDxTdGV2ZW5fRWQ0MTUzQHlhaG9vLmNvbT4KCUZpeGVkIG1pbmd3MzIgd2FybmluZyBhYm91dCBzdGRjYWxsIGFuZCBmYXN0Y2FsbCBiZWluZyByZWRlZmluZWQuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglDaGVjayBmb3IgTlVMTCBwb2ludGVyIGluIERyYXdUZXh0RXhBLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSBmaXggZWRpdCBib3ggcGxhY2VtZW50CgktIHJlb3JnYW5pemUgZHJhd2luZyBmb3IgcHJvcGVyIGhhbmRsaW5nIG9mIGVkaXQgYm94CgktIHR5cGVzYWZldHkgd2hlbiBwcm9jZXNzaW5nIG1lc3NhZ2VzCgktIHN1YmNsYXNzIGVkaXQgdG8gaGFuZGxlIHVwL2Rvd24gYXJyb3dzCgktIG1vcmUgcm9idXN0IGhhbmRsaW5nIG9mIGZhaWx1cmUgY2FzZXMKCS0gbnVtZXJvdXMgYnVncyBmaXhlZAoJLSBjb21wbGV0ZSB1bmljb2RpZmljYXRpb24KCS0gbW9yZSBzcGVjaWZpYyBkZWJ1ZyBtZXNzYWdlcwoJLSByZW1vdmUgY3ZzIGxvZyBpbmZvIGZyb20gZmlsZQoJLSBjb25zaXN0ZW50IGluZGVudGF0aW9uCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgZGVmaW5lcyBmb3IgdGhlIE5NVEJIT1RJVEVNIGZsYWcgd29yZC4KCS0gQWRkIGRlZmluZXMgZm9yIHRoZSBOTV9DVVNUT01EUkFXIHJldHVybiBmbGFncyBmb3IgdG9vbGJhci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gVXNlIHRoZSBuZXcgY29tY3RsMzIgY29sb3IgYXJyYXkgZm9yIHRoZSBjb2xvcnMuIFByb3ZpZGVzIGJldHRlcgoJICBzdXBwb3J0IGZvciB0aGUgVEJfU0VUQ09MT1JTQ0hFTUUuCgktIERvIHNvbWUgb3B0aW1pemF0aW9ucy4KCS0gQ29ycmVjdCBjb21wdXRhdGlvbiBvZiBuSGVpZ2h0IGFuZCBQR05fQ0FMQ1NJWkUuCgktIEltcGxlbWVudCB0aGUgdW5kb2N1bWVudGVkIDA0NUUgbWVzc2FnZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gS2VlcCB0cmFjayBvZiBhbGwgc3lzdGVtIGNvbG9ycyB1c2VkIGJ5IGNvbWN0bDMyLmRsbC4KCS0gUHJvdmlkZSByb3V0aW5lIHRvIHN1cHBvcnQgdGhlIFdNX1NZU0NPTE9SQ0hBTkdFIG1lc3NhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRqdXN0IHRoZSBjaGlsZCBvZmZzZXQgeCB2YWx1ZSBiYXNlZCBvbiBiYW5kIHN0eWxlIFJCQlNfQ0hJTERFREdFLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gVHJ5IHRvIG1hdGNoIHRoZSBuYXRpdmUgY29udHJvbCBmb3IgdGhlIFNldEJrQ29sb3IgbWVzc2FnZS4KCS0gQ29ycmVjdCBwcm9jZXNzaW5nIGluIE5DQ2FsY1NpemUgbWVzc2FnZSBwcm9jZXNzaW5nLgoKMjAwMi0wNC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmM6CglGaXhlZCBjb21waWxlIHdpdGhvdXQgZnJlZXR5cGUuCgoyMDAyLTA0LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJQ2hhcmxlcyBMb2VwIDxjaGFybGVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVN1cHBvcnQgZm9yIGhpZGluZyBmaWxlIGV4dGVuc2lvbnMgaW4gSVNoZWxsRm9sZGVyX0dldERpc3BsYXlOYW1lT2YuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgZm9yIGZhaWx1cmUgb2YgSVNoZWxsRm9sZGVyX0dldERpc3BsYXlOYW1lT2YuCgoJKiBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsCgkgIHNlcnZlci9zZWxlY3QuYzoKCUFkZGVkIHRpbWVyIG9uIHNlcnZlciBleGl0IHRvIHdhaXQgYSBiaXQgZm9yIG5ldyBjbGllbnRzLgoJRG9uJ3QgcmVtb3ZlIHRoZSBzb2NrZXQgdW50aWwgdGhlIHJlZ2lzdHJ5IGlzIGNsb3NlZCB0byBhdm9pZCBhIHJhY2UuCgoJKiBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZvcndhcmQgQysrIGZ1bmN0aW9ucyB0byB0aGUgbXN2Y3J0IGxpYnJhcnkuCgoJKiBkbGxzL2dkaS9tZmRydi90ZXh0LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVXNlIHJlY3Qgb25seSBpZiB0aGVyZSBhcmUgZmxhZ3MuCgoJKiBkbGxzL2dkaS9tZmRydi9pbml0LmMsIGRsbHMvZ2RpL21mZHJ2L21ldGFmaWxlZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCB3cml0aW5nIE1FVEFfRVNDQVBFIHJlY29yZHMuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglEbyBub3QgZW51bWVyYXRlIHRoZSBNRVRBX0VPRiByZWNvcmQuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBvbGQgRkZfIGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IG9mZiBieSBvbmUgZXJyb3IgaW4gSEVBREVSX0luc2VydEl0ZW1XLgoKCSogbGlicmFyeS9sb2FkZXIuYzoKCU1ha2UgZGxvcGVuX2RsbCByZXR1cm4gYW4gZXJyb3IgaW1tZWRpYXRlbHkgaWYgdGhlIGxpYnJhcnkgZXhpc3RzIGJ1dAoJZGxvcGVuKCkgZmFpbHMuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUlmIGxmRmFjZU5hbWUgPT0gIiIsIHRoZW4gd2UgcGF0Y2ggdXAgdGhlIG5hbWVzIGFjY29yZGluZyB0bwoJbGZQaXRjaEFuZEZhbWlseS4gIFRoaXMgaXMgbm90IHZlcnkgcHJldHR5IEknbSBhZnJhaWQuLi4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywKCSAgaW5jbHVkZS9mb250LmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEdldFRleHRFeHRlbnRQb2ludEkgYW5kIGFkZCBzdXBwb3J0IGZvciBFVE9fR0xZUEhfSU5ERVguCgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGNhbGN1bGF0ZSBjYWNoZWQgbWV0cmljcyBvciBlbnVtZXJhdGUgWDExIGZvbnRzIGlmIHdlJ3JlIHVzaW5nCgljbGllbnQgc2lkZSBmb250cy4KCgkqIG9iamVjdHMvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgZm9udCBlbnVtZXJhdGlvbi4KCgkqIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGRsbHMveDExZHJ2L3hyZW5kZXIuYywgaW5jbHVkZS9mb250LmgsCgkgIG9iamVjdHMvZ2Rpb2JqLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggYSBmZXcgZm9udCBwcm9ibGVtcyB3aXRoIHJvdGF0ZWQgdGV4dCBhbmQgbm9uIE1NX1RFWFQgbWFwcGluZwoJbW9kZXMuIERvIHNsaWdodGx5IGJldHRlciB3aXRoIHRoZSBGRl8gZmxhZ3MgaW4gV2luZUVuZ0dldFRleHRNZXRyaWNzLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYywgd2luZWRlZmF1bHQucmVnOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGZvbnQgc3Vic3RpdHV0aW9uIGxvb2t1cCBpbiB0aGUgcmVnaXN0cnkuICBXZSBsb29rIHVuZGVyIHRoZSBrZXkKCUhLTE1cU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgTlRcQ3VycmVudFZlcnNpb25cRm9udFN1YnN0aXR1dGVzIGZvcgoJImZyb21OYW1lWyxjcF0iPSJ0b05hbWVbLGNwXSIgd2hlcmUgY3AgY2FuIGJlIGFuIG9wdGlvbmFsIGNvZGVwYWdlLgoJU3Vic3RpdHV0aW9uIG9jY3VycyBiZWZvcmUgc2Nhbm5pbmcgdGhlIGF2YWlsYWJsZSBmb250IGxpc3QsIGFzIGlzIHRoZQoJY2FzZSB3aXRoIFdpbmRvd3MuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBpbmNsdWRlL2ZvbnQuaCwKCSAgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9mb250LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEdldEdseXBoSW5kaWNlcy4gVHdlYWsgR2V0Q2hhcmFjdGVyUGxhY2VtZW50IHRvIHVzZSBpdC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJQmV0dGVyIGNoZWNrIGZvciAtbHJlc29sdi4gUmVtb3ZlZCBGUkVFVFlQRUxJQlMuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZnJlZXR5cGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUxvYWQgbGliZnJlZXR5cGUuc28gb24gdGhlIGZseSB3aXRoIGRsb3BlbiBhbmQgZnJpZW5kcy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglUaGUgaG9yaXpvbnRhbCBkaWFsb2cgYmFzZSB1bml0IGlzIGNhbGN1bGF0ZWQgYXMgdGhlIHN0cmFpZ2h0IGF2ZXJhZ2UKCW9mIGEteixBLVogKHRtQXZlQ2hhcldpZHRoIGlzIHN1cHBvc2VkIHRvIGJlIGEgd2VpZ2h0ZWQgYXZlcmFnZQoJYWNjb3JkaW5nIHRvIGNoYXJhY3RlciB1c2FnZSwgc28gd2Ugc2hvdWxkbid0IHVzZSB0aGlzKS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZCBzdHViIGZvciBXU0FFbnVtUHJvdG9jb2xzKEEvVykgZnVuY3Rpb25zLgoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL3RydWV0eXBlLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglMb2FkIGxpYmZyZWV0eXBlLnNvIG9uIHRoZSBmbHkgd2l0aCBkbG9wZW4gYW5kIGZyaWVuZHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglFbmFibGUgU2hlbGxFeGVjdXRlRXggdG8gYWN0dWFsbHkgb3BlbiB0aGluZ3Mgd2l0aCB0aGVpciBoZWxwZXIKCWFwcGxpY2F0aW9ucy4KCgkqIGRsbHMvY3J5cHQzMi9jcnlwdDMyLnNwZWMsIGRsbHMvY3J5cHQzMi9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLAoJICBpbmNsdWRlL3dpbmJhc2UuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIEltcGVyc29uYXRlTG9nZ2VkT25Vc2VyIHN0dWIuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5oLCBkbGxzL3NobHdhcGkvcGF0aC5jOgoJQXZvaWQgbG9jYWwgV0lOQVBJIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIHdvcmsgYXJvdW5kIGdjYyBidWcuCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGRsbHMvc2V0dXBhcGkvZGlyaWQuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsCgkgIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvd2luZXBzL2JydXNoLmMsCgkgIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvb2JqZWN0cy5jLCBkbGxzL3dpbmVwcy9wZW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3NldHVweC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9pbWFhZHAzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zZXR1cGFwaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZXBzLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGUgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9pbnQxMC5jLCBkbGxzL3dpbmVkb3MvaW50MjEuYywKCSAgZGxscy93aW5lZG9zL2ludDI5LmM6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglSZWRpcmVjdCBET1Mgd3JpdGVzIHRvIHN0ZG91dC9jb25zb2xlIHRvIERPU1ZNX1B1dENoYXIuCgoJKiBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYzoKCUdlb2ZmcmV5IEhhdXNoZWVyIDxpMTM0cnRoOGQ5c0BwaHJhY3R1cmVkYmx1ZS5jb20+CglDbGVhbmVkIHVwIGEgYml0LCByZW1vdmVkIHRvZG9zIGZvciBPcGVuVGhyZWFkLCBhdm9pZCBUZXJtaW5hdGVUaHJlYWQKCXJhY2UuCgoyMDAyLTA0LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kaW5wdXQvZGV2aWNlLmMsIGRsbHMvaWNtcC9pY21wX21haW4uYywKCSAgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJU3BlbGxpbmcvZXJyb3IgbWVzc2FnZXMgZml4ZXMuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBNb3JlIHBvcnRhYmxlIHNpZ25hdHVyZSBjaGVjay4KCgkqIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9jcHUuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUFkZCByZXR1cm4gdHJhY2VzIHRvIEdsb2JhbE1lbW9yeVN0YXR1cywgR2V0U3lzdGVtSW5mbyBhbmQgZml4bWUgaW4KCUdldFN5c3RlbUluZm8uCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLAoJICBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC90ZXN0cy90aHJlYWQuYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCUdlb2ZmcmV5IEhhdXNoZWVyIDxpMTM0cnRoOGQ5c0BwaHJhY3R1cmVkYmx1ZS5jb20+CglBZGRlZCB0ZXN0IGZvciB0aHJlYWQgZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFrZV9jeWd3aW5fbWFrZWZpbGVzOgoJR2VvZmZyZXkgSGF1c2hlZXIgPGkxMzRydGg4ZDlzQHBocmFjdHVyZWRibHVlLmNvbT4KCUFkZGVkIHBlcmwgc2NyaXB0IHdoaWNoIHdpbGwgYnVpbGQgYSBNYWtlZmlsZSBmb3IgcnVubmluZyBDIHRlc3RzIG9uCglXaW5kb3dzIHRocm91Z2ggQ3lnd2luL2djYy4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQ29tcGlsZXMgbm93IGV2ZW4gb24gcGxhdGZvcm1zIHRoYXQgZG8gbm90IHN1cHBvcnQgRE9TIFZNLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglVc2UgRU5PTUVESVVNIGVycm5vIGNvZGUgb25seSB3aGVuIGRlZmluZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gY29ycmVjdCBub3RpZmljYXRpb25zCgktIGJlaGF2aW91ciBjbG9zZXIgdG8gbmF0aXZlCgktIGJldHRlciBkcmF3aW5nCgktIG11bHRpcGxlIGJ1Z3MgZml4ZWQKCS0gZmFzdGVyICYgY2xlYW5lciBjb2RlCgktIGNvbnNpc3RlbnQgaW5kZW50YXRpb24KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY3J5cHQzMi9tYWluLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJRml4IHR3byBjb21waWxhdGlvbiB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvbnRkZGsuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglEZWNsYXJlIHN3cHJpbnRmLgoKCSogZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzoKCUZpeGVkIGNyYXNoIGluIEJpdEJsdCB3aGVuIHNvdXJjZSBEQyBpcyBOVUxMLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLAoJICBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxscywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbjoKCVZhcmlvdXMgbWFrZWZpbGUgZml4ZXMgZm9yIHRoZSB0ZXN0IGVudmlyb25tZW50LgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9kaXJpZC5jLAoJICBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2V0dXBhcGkvaW5zdGFsbC5jLAoJICBkbGxzL3NldHVwYXBpL3BhcnNlci5jLCBkbGxzL3NldHVwYXBpL3F1ZXVlLmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaV9wcml2YXRlLmgsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywKCSAgZGxscy9zZXR1cGFwaS9zdHVicy5jLCBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGluY2x1ZGUvc2V0dXBhcGkuaCwKCSAgaW5jbHVkZS93aW5udC5oOgoJSW1wbGVtZW50ZWQgYSBsYXJnZSBudW1iZXIgb2YgdGhlIDMyLWJpdCBzZXR1cGFwaSBmdW5jdGlvbnMuCglGaXhlZCBhIG51bWJlciBvZiBzZXR1cHggZnVuY3Rpb25zIGJ5IG1ha2luZyB0aGVtIGNhbGwgdGhlIHNldHVwYXBpCgllcXVpdmFsZW50cy4KCgkqIHNlcnZlci90aHJlYWQuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb24ndCBzdXNwZW5kIGEgdGVybWluYXRlZCB0aHJlYWQuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggc2lnbiBleHRlbnNpb24gaW4gbWVzc2FnZSBtYXBwaW5nIHJvdXRpbmVzLgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6CglBdm9pZCBjcmFzaCB3aGVuIHRyeWluZyB0byBhdHRhY2ggdG8gYSB0ZXJtaW5hdGluZyBwcm9jZXNzLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGhhbmRsaW5nIG9mIGEgZGxsIGJlaW5nIGxvYWRlZCBhdCB0aGUgc2FtZSBhZGRyZXNzIGFzIGEgcHJldmlvdXMKCW9uZS4KCgkqIG9iamVjdHMvZGMuYzogQXZvaWQgcmVjdXJzaXZlIERlbGV0ZURDIGNhbGxzLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglNYWtlIEdldEZ1bGxQYXRoTmFtZSBmYWlsIGlmIGlucHV0IHBhdGggbmFtZSBpcyBlbXB0eS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIGNhbGwgTG9hZExpYnJhcnkuCglXb3JrYXJvdW5kIGEgYnJva2VuIGJlaGF2aW91ciBvZiB0aGUgMTYtYml0IGxvYWRlci4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6CglGaXhlZCBsZW5ndGggaGFuZGxpbmcgaW4gUnRsVW5pY29kZVN0cmluZ1RvQW5zaS9PZW1TdHJpbmcuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIF9tYnNuYmljbXAuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoZSBzZWN1cml0eSBkZXNjcmlwdG9yIGlzIGluaXRpYWxpemVkIGluIFJlZ0dldEtleVNlY3VyaXR5LgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCUNoZWNrIEVMRiBzaWduYXR1cmUgYmVmb3JlIHByb2Nlc3NpbmcgZmlsZS4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IE5VTEwgbWVudSBpdGVtcyB0byBzZXBhcmF0b3JzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2NoZWR1bGVyL3B0aHJlYWQuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCUltcGxlbWVudCBPcGVuVGhyZWFkKCkgd2luYXBpIGNhbGwuCglJbXBsZW1lbnQgYSBmZXcgcHRocmVhZHMgZnVuY3Rpb25zLgoKCSogZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jLCBkbGxzL21zYWNtL21zZzcxMS9tc2c3MTEuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSB1c2Ugb2YgTVNBQ00gZHJpdmVyIGRlZmluaXRpb25zLgoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUluY2x1ZGUgd2luZS90ZXN0LmggYmVmb3JlIHdpbmRvd3MgaGVhZGVycy4KCUFkZCBkZWZpbml0aW9ucyBmb3IgSURJX0FQUExJQ0FUSU9OQSBhbmQgSURDX0FSUk9XQSBmb3IgV2luZG93cy4KCUZpeCBhIGNoZWNrIGluIHRoZSBTUElfe0dFVCxTRVR9Qk9SREVSIHRlc3QuCglGaXggYmFkIGNvcHkvcGFzdGUgaW4gdGhlIFNQSV97R0VULFNFVH1CT1JERVIgdGVzdC4KCVVzZSBlcSBtYWNybyB0byBwcmludCB2YWx1ZXMgd2hlbiBzb21ldGhpbmcgZ29lcyB3cm9uZy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3d0bWFpbi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgdGhlIHRlc3RpbmcgZnJhbWV3b3JrIHRocmVhZCBzYWZlLgoKMjAwMi0wNC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYywgZGxscy94MTFkcnYveHJlbmRlci5jLCBsaWJyYXJ5L3BvcnQuYywKCSAgc2VydmVyL3JlcXVlc3QuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggd2FybmluZ3MgZm9yIExpbnV4LCBGcmVlQlNEIGFuZCBTb2xhcmlzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJR290IHJpZCBvZiAjaWZkZWYgVVNFX1NUQUJTLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJT24gU29sYXJpcyBpbmV0X2F0b24gaXMgZXhwb3J0ZWQgYnkgbGlicmVzb2x2LnNvLgoKCSogZGxscy9tc3ZjcnQvbWF0aC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgRlBfUE5PUk0gY2FzZS4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBhIGNvdXBsZSBvZiBub3cgb2Jzb2xldGUgRklYTUVzLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBidWdzIGluIGZpcnN0IGNoYW5jZSBleGNlcHRpb24gaGFuZGxpbmcuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW9yZSByb2J1c3QgYW5kIGxlc3MgdGltZSBjb25zdW1pbmcgcGxheWJhY2suCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzaXplIG9mIGJ1ZmZlcnMgaW4gY29udmVyc2lvbi4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgd3JpdGluZyBtdWx0aWxpbmUgYmxvY2sgd2hpbGUgd3JhcHBpbmcgZW5hYmxlZC4KCUZpeGVkIHN0YXJ0dXAgaW5mb3JtYXRpb24gcmVhZGluZyAoY29uc29sZSBzaXplKS4KCgkqIGRlYnVnZ2VyL21zYy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBtb2R1bGUgbWFwcGluZyBmb3IgZGVidWcgaW5mbyB3aGVuIFBFIHNlY3Rpb24gaXMgY29tcHJlc3NlZC4KCgkqIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywKCSAgaW5jbHVkZS93aW5zb2NrLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGZvciB0aGUgdW5pc3RkLmggdnMuIHdpbnNvY2suaCBwcm9ibGVtIGluIFdpbmVsaWIgYXBwbGljYXRpb25zLgoJUmVmaW5lIHRoZSBXU19ERUZJTkVfSFRPTkwgZGVmaW5pdGlvbi4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2F0b20ucGw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgYm90aGVyIHdpdGggZGVjbGFyZSwganVzdCAndXNlIGtlcm5lbDMyJy4KCgkqIGRsbHMva2VybmVsL3Rlc3RzL2RpcmVjdG9yeS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmRvd3MgaGVhZGVycyBtdXN0IGJlIGluY2x1ZGVkIGFmdGVyIHdpbmUvdGVzdC5oLgoKCSogZGxscy9xdWFydHovUkVBRE1FLCBkbGxzL3F1YXJ0ei9hY213cmFwLmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsCgkgIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tcGdwYXJzZS5jLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHoveGZvcm0uaCwgd2luZWRlZmF1bHQucmVnOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIHNvbWUgYnVncy4KCUltcGxlbWVudGVkIHNvbWUgbWV0aG9kcyBvZiBDTFNJRF9BQ01XcmFwcGVyLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9kaXNwc3RkLmMsCgkgIGRsbHMvb2xlYXV0MzIvZGlzcHR5cGUuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIENyZWF0ZVN0ZERpc3BhdGNoIGFuZCBDcmVhdGVEaXNwVHlwZUluZm8uCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZHBhdW5Acm9nZXJzLmNvbT4KCS0gaW1wbGVtZW50IFVEU19IT1RUUkFDSwoJLSBpbXBsZW1lbnQgTk1fUkVMRUFTRURDQVBUVVJFCgktIGltcGxlbWVudCBVRE1fW0dTXUVUVU5JQ09ERUZPUk1BVAoJLSBnZXQgcmlkIG9mIFdNX05DQ1JFQVRFIHByb2Nlc3NpbmcKCS0gdXNlIEludmFsaWRhdGVSZWN0IGluc3RlYWQgb2YgYSBzeW5jaCByZWZyZXNoCgktIGltcGxlbWVudCBhdXRvIGF1dG8gYXJyb3cgcHJlc3Mgb24ga2V5IHByZXNzZXMKCS0gbW9yZSBjb2RlIGNsZWFudXBzCgktIGJldHRlciBkcmF3aW5nLCBjbG9zZXIgdG8gbmF0aXZlCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRwYXVuQHJvZ2Vycy5jb20+CglBZGRlZCB0aGUgREZDU197SE9ULFRSQU5TUEFSRU5UfSBkZWZpbml0aW9ucy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCVByZXZlbnQgdGhlIHVzZXIgZnJvbSBydW5uaW5nIHdpbmVpbnN0YWxsIGFzIHJvb3QsIGFkZCBzY3JpcHQgY29tbWFuZHMKCXNvIHdlICdzdSByb290JyBmb3IgaW5zdGFsbGluZyBhbmQgb3RoZXIgY29tbWFuZHMgdGhhdCByZXF1aXJlIHJvb3QKCWFjY2Vzcy4gIEZpeCBtb2RpZmljYXRpb24gdGltZSBjb21wYXJpc29uIG9mIHdyb25nIGZpbGUuICBBZGRlZAoJbWlzc2luZyBzZWQgbGluZS4gQWx3YXlzICdtYWtlJyBiZWZvcmUgd2UgcnVuIG1ha2UgaW5zdGFsbCBzbyBubyBidWlsZAoJZmlsZXMgYmVjb21lIG93bmVkIGJ5IHJvb3QuCgoJKiBkbGxzL3dpbmVkb3MvZG9zdm0uYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJvdXRpbmUgRE9TVk1fV2FpdCBub3cgd2FrZXMgdXAgaWYgbmV3IGV2ZW50cyBhcmUgcXVldWVkIGFuZCBpdAoJcmV0dXJucyBpZiBpdCBwcm9jZXNzZWQgYW55IHF1ZXVlZCBldmVudHMuCgoyMDAyLTAzLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CglNb3JlIHJvYnVzdCBsaWJzYW5lIGNoZWNrLgoKCSogd2luMzIvY29uc29sZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJSGFjayB0byBtYWtlIHdpbmVjb25zb2xlIHdvcmsgYWdhaW4uCgoyMDAyLTAzLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2Lmg6CglGaXhlZCBjb21waWxlIHdpdGhvdXQgY3Vyc2VzLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlci5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIG1lbW9yeS9lbnZpcm9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmMsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJVHJhbnNmZXIgdGhlIGZ1bGwgcHJvY2VzcyBzdGFydHVwIGluZm8gYXMgd2VsbCBhcyB0aGUgY29tbWFuZC1saW5lCgl0aHJvdWdoIHRoZSBzZXJ2ZXIuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IExvYWQgY2xhc3Nlcy5kYXQgdG9vLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCU1ha2Ugc3VyZSB0aGUgaW1wb3J0IGRpcmVjdG9yeSBpcyBub3QgaW4gc2hhcmVkIG1lbW9yeS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsCgkgIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9maWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IFNldEZpbGVBdHRyaWJ1dGVzIHRvIGhvbm9yIHRoZSB1bWFzayAocmF0aGVyIHRoYW4gbWFraW5nIGZpbGVzCgl3b3JsZC13cml0YWJsZSkuCgoJKiB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJRml4ZWQgd2luZWxhdW5jaGVyIGZvciBuZXcgZGxsIGZpbGVzIGxheW91dC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3d0bWFpbi5jOgoJVXNlIEV4aXRQcm9jZXNzIHRvIHRlcm1pbmF0ZSB0aGUgYXBwbGljYXRpb24uCgoJKiBsaWJyYXJ5L3BvcnQuYywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGluY2x1ZGUvY29uZmlnLmguaW46CglNaWNoYWwgUGFzdGVybmFrIDxtcGFzdGVybmFrQGx1Ymxpbi50MS5wbD4KCUZpeGVkIHBhY2svdW5wYWNrIHJvdXRpbmVzIGZvciBXTV9EREVfRVhFQ1VURS4KCgkqIGRsbHMvdXNlci9kZGUvbWlzYy5jOgoJRml4ZWQgcGFjay91bnBhY2sgcm91dGluZXMgZm9yIFdNX0RERV9FWEVDVVRFLgoKCSogZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbDoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVVwZGF0ZWQgZm9yIG5ldyBkbGwgbmFtZXMuCgoJKiBkbGxzL250ZGxsL2Nkcm9tLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBtYXBwaW5nIGZvciBlcnJubyBFTk9NRURJVU0gdG8gU1RBVFVTX05PX01FRElBX0lOX0RFVklDRS4KCjIwMDItMDMtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYzoKCVJlbW92ZWQgY2FsbCB0byBESUJfR2V0RElCV2lkdGhCeXRlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLAoJICBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywKCSAgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvYml0bWFwLmgsCgkgIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvYml0bWFwLmMsCgkgIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZGliLmMsCgkgIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL3RleHQuYywKCSAgZGxscy9nZGkvbWZkcnYvYml0Ymx0LmMsIGRsbHMvZ2RpL21mZHJ2L2RjLmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2dyYXBoaWNzLmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvbWZkcnYvbWFwcGluZy5jLCBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL21mZHJ2L3RleHQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvYnJ1c2guYywgZGxscy9nZGkvd2luMTZkcnYvZm9udC5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9ncmFwaGljcy5jLCBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L29iamVjdHMuYywgZGxscy9nZGkvd2luMTZkcnYvcGVuLmMsCgkgIGRsbHMvZ2RpL3dpbjE2ZHJ2L3RleHQuYywgZGxscy9nZGkvd2luMTZkcnYvd2luMTZkcnYuaCwKCSAgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvd2luZXBzL2JpdGJsdC5jLAoJICBkbGxzL3dpbmVwcy9iaXRtYXAuYywgZGxscy93aW5lcHMvYnJ1c2guYywgZGxscy93aW5lcHMvY2xpcHBpbmcuYywKCSAgZGxscy93aW5lcHMvY29sb3IuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywKCSAgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9vYmplY3RzLmMsCgkgIGRsbHMvd2luZXBzL3Blbi5jLCBkbGxzL3dpbmVwcy9wcy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90ZXh0LmMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveHJlbmRlci5jLAoJICBkbGxzL3gxMWRydi94dmlkbW9kZS5jLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvZXNjYXBlLmMsCgkgIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLAoJICBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L2RjLmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2VuaG1ldGFmaWxlZHJ2LmgsIGRsbHMvZ2RpL2VuaG1mZHJ2L2dyYXBoaWNzLmMsCgkgIGRsbHMvZ2RpL2VuaG1mZHJ2L2luaXQuYywgZGxscy9nZGkvZW5obWZkcnYvbWFwcGluZy5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmM6CglDaGFuZ2VkIHRoZSBHREkgZHJpdmVyIGludGVyZmFjZSB0byBwYXNzIGFuIG9wYXF1ZSBQSFlTREVWIHBvaW50ZXIKCWluc3RlYWQgb2YgYSBEQyBzdHJ1Y3R1cmUuCglSZW1vdmVkIHNvbWUgZGlyZWN0IGFjY2Vzc2VzIHRvIHRoZSBEQyBzdHJ1Y3R1cmUgZnJvbSB0aGUgZHJpdmVycy4KCUdvdCByaWQgdGhlIGJpdG1hcCBkcml2ZXIuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6CglEb24ndCBzdHJpcCBvdXQgLmV4ZSBleHRlbnNpb24uCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgZGVjbGFyYXRpb24gb2YgdGhlIERpc2Nvbm5lY3ROYW1lZFBpcGUgY2FsbC4KCgkqIGRsbHMveDExZHJ2L21vdXNlLmM6CglNYXJjbyBQaWV0cm9ib25vIDxwaWV0cm9ib0BwaWV0cm9iby5jb20+CglBZGRlZCBzdXBwb3J0IGZvciAxNmJpdCBtb3VzZSBjdXJzb3IgYml0bWFwcyBpbiBSR0IgNTY1IGZvcm1hdC4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkcGF1bkByb2dlcnMuY29tPgoJLSB1cGRvd24gdW5pY29kaWZpY2F0aW9uCgktIGJldHRlci9jbGVhbmVyIGJ1ZGR5IGhhbmRsaW5nCgktIGZldyBidWdzIGZpeGVkCgktIG1vcmUgdGVzdGluZwoJLSBjb25zaXN0ZW50IGluZGVudGF0aW9uCgoJKiBjb250cm9scy9tZW51LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNZW51SXRlbUZyb21Qb2ludDogcm91Z2ggaW1wbGVtZW50YXRpb24uCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ydW50ZXN0OgoJTmVlZCB0byBzZXQgV0lORURMTFBBVEggdG9vLgoKMjAwMi0wMy0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmU6IEFkZGVkIGFsbG9jLm9rLgoKCSogcHJvZ3JhbXMvY2xvY2svQ2hhbmdlTG9nLCBwcm9ncmFtcy9jbG9jay9EYS5yYywKCSAgcHJvZ3JhbXMvY2xvY2svRGUucmMsIHByb2dyYW1zL2Nsb2NrL0VuLnJjLCBwcm9ncmFtcy9jbG9jay9Fcy5yYywKCSAgcHJvZ3JhbXMvY2xvY2svRmkucmMsIHByb2dyYW1zL2Nsb2NrL0ZyLnJjLCBwcm9ncmFtcy9jbG9jay9QdC5yYywKCSAgcHJvZ3JhbXMvY2xvY2svU2sucmMsIHByb2dyYW1zL2Nsb2NrL1N3LnJjLCBwcm9ncmFtcy9jbG9jay9UT0RPLAoJICBwcm9ncmFtcy9jbG9jay9XYS5yYywgcHJvZ3JhbXMvY2xvY2svY2xvY2sucmMsCgkgIHByb2dyYW1zL2Nsb2NrL2Nsb2NrX3Jlcy5oLCBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLAoJICBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5oLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsCgkgIHByb2dyYW1zL2Nsb2NrL21haW4uaCwgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJQ29udmVydGVkIHRvIHVzZSBvZiBOTFMuCgoJKiBpbmNsdWRlL2VuaG1ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgY29uZmlndXJlLAoJICBjb25maWd1cmUuYWMsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9kcml2ZXIuYywKCSAgZGxscy9nZGkvZW5obWZkcnYvZGMuYywgZGxscy9nZGkvZW5obWZkcnYvZW5obWV0YWZpbGVkcnYuaCwKCSAgZGxscy9nZGkvZW5obWZkcnYvZ3JhcGhpY3MuYywgZGxscy9nZGkvZW5obWZkcnYvaW5pdC5jLAoJICBkbGxzL2dkaS9lbmhtZmRydi9tYXBwaW5nLmMsIGRsbHMvZ2RpL2VuaG1mZHJ2L29iamVjdHMuYywKCSAgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy9nZGkvbWZkcnYvYml0Ymx0LmMsIGRsbHMvZ2RpL21mZHJ2L2RjLmMsCgkgIGRsbHMvZ2RpL21mZHJ2L2dyYXBoaWNzLmMsIGRsbHMvZ2RpL21mZHJ2L2luaXQuYywKCSAgZGxscy9nZGkvbWZkcnYvbWFwcGluZy5jLCBkbGxzL2dkaS9tZmRydi9tZXRhZmlsZWRydi5oLAoJICBkbGxzL2dkaS9tZmRydi9vYmplY3RzLmMsIGRsbHMvZ2RpL21mZHJ2L3RleHQuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvLmN2c2lnbm9yZSwgZGxscy9nZGkvd2luMTZkcnYvYnJ1c2guYywKCSAgZGxscy9nZGkvd2luMTZkcnYvZm9udC5jLCBkbGxzL2dkaS93aW4xNmRydi9ncmFwaGljcy5jLAoJICBkbGxzL2dkaS93aW4xNmRydi9pbml0LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L29iamVjdHMuYywKCSAgZGxscy9nZGkvd2luMTZkcnYvcGVuLmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L3BydGRydi5jLAoJICBkbGxzL2dkaS93aW4xNmRydi90ZXh0LmMsIGRsbHMvZ2RpL3dpbjE2ZHJ2L3dpbjE2ZHJ2Lmg6CglNb3ZlZCBtZXRhZmlsZXMgYW5kIHdpbjE2IGRyaXZlcnMgdG8gZGxscy9nZGkuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGVzdHMvYWxsb2MuYzoKCUdlb2ZmcmV5IEhhdXNoZWVyIDxpMTM0cnRoOGQ5c0BwaHJhY3R1cmVkYmx1ZS5jb20+CglBZGRlZCBtZW1vcnkgYWxsb2NhdGlvbiB0ZXN0LgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+Cglmd3JpdGU6IGZpeGVkIGhhbmRsaW5nIG9mIGFscmVhZHkgYnVmZmVyZWQgZGF0YS4KCjIwMDItMDMtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpLy5jdnNpZ25vcmUsCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9nZGkuZXhlLnNwZWMsIGRsbHMvZ2RpL2dkaS5zcGVjLAoJICBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tybmwzODYuZXhlLnNwZWMsCgkgIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci91c2VyLmV4ZS5zcGVjLCBkbGxzL3VzZXIvdXNlci5zcGVjOgoJUmVuYW1lZCBzb21lIDE2LWJpdCBzcGVjIGZpbGVzIHRvIG1hdGNoIHRoZSBkbGwgbmFtZS4KCgkqIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLAoJICBpbmNsdWRlL21zYWNtLmg6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CgktIENvbnZlcnRlZCBIQUNNT0JKIHRvIHZvaWQqCgktIGFjbU1ldHJpY3MxNiBjYWxscyBhY21NZXRyaWNzIG9ubHkgaWYgaGFvIGlzIE5VTEwKCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCU1laG1ldCBZYXNhciA8bXlhc2FyQGZyZWUuZnI+CglGaXggZGVmYXVsdCBleHRlbnNpb24gYmVoYXZpb3Igd2l0aCBHZXRPcGVuRmlsZU5hbWUuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJSWdub3JlIGltcG9ydHMgYW5kIHJlc291cmNlcyB3aGVuIGJ1aWxkaW5nIGEgLmRlZiBmaWxlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhdXQzMi90ZXN0cy9vbGVhdXQzMl90ZXN0LnNwZWMsCgkgIGRsbHMvb2xlYXV0MzIvdGVzdHMvdmFydGVzdC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC92YXJ0ZXN0LVdpbjMyLmxvZywgbGlidGVzdC92YXJ0ZXN0LmMsCgkgIGxpYnRlc3QvdmFydGVzdC5yZWFkbWUsIGxpYnRlc3QvdmFydGVzdC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQb3J0ZWQgdmFyaWFudCB0ZXN0cyB0byB0aGUgbmV3IHRlc3RpbmcgZnJhbWV3b3JrLgoKCSogZGxscy9tc3ZjcnQvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0L2xjb252LmMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIHN0dWIgZm9yIF9fbGNvbnZfaW5pdCgpLgoKMjAwMi0wMy0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCV9fW3h8XWdldG1haW5hcmdzOiBBY2NlcHQgTlVMTCBuZXdfbW9kZSBhcmd1bWVudC4KCgkqIGluY2x1ZGUvbXNhY20uaDoKCVZpbmNlbnQgQulyb24gPHZiZXJvbkBtZWNhbm8uZ21lLnVzaGVyYi5jYT4KCUNvbnZlcnRlZCBIQUNNU1RSRUFNLCBIQUNNRFJJVkVSSUQgYW5kIEhBQ01EUklWRVIgdG8gdm9pZCouCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglWaW5jZW50IELpcm9uIDx2YmVyb25AbWVjYW5vLmdtZS51c2hlcmIuY2E+CglDaGFuZ2VzIHNvbWUgaGFuZGxlIGRlZmluaXRpb25zIHRvIHRoZSBwcm9wZXIgdHlwZS4KCgkqIGRsbHMvd2lubW0vd2luZWFydHMvYXJ0cy5jLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2FydHMuaCwKCSAgZGxscy93aW5tbS93aW5lYXJ0cy9hdWRpby5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGFsdW0ud3BpLmVkdT4KCXdvZE9wZW4oKSBzaG91bGQgcmV0dXJuIE1NU1lTRVJSX0FMTE9DQVRFRCBpZiB0aGUgZGV2aWNlIGlzIGFscmVhZHkKCWFsbG9jYXRlZC4gIEFsbG93IGZvciBtdWx0aXBsZSBhdWRpbyBkZXZpY2VzLiBGaXggd29kUGxheWVyX3Jlc2V0IGFzCgl3aXRoIGFSdHMgd2UgY2Fubm90IGNhbmNlbCBhdWRpbyBkYXRhIGFscmVhZHkgd3JpdHRlbiB0byB0aGUgc2VydmVyLgoJUmVuYW1lIHNvbWUgZnVuY3Rpb25zLiBDbGVhbnVwIHVudXNlZCBjb2RlLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglEc291bmQgd2lsbCBub3cgdHJ5IGFzIG1hbnkgZGV2aWNlcyBhcyBhcmUgYXZhaWxhYmxlIHdoZW4gdHJ5aW5nIHRvCglvcGVuIGEgd2F2ZU91dCBkZXZpY2UgaW4gRGlyZWN0U291bmRDcmVhdGUoKS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBoZWFkZXIuCgoyMDAyLTAzLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9vcGVuZ2wzMi93Z2wuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS94MTFkcnYuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIGRyaXZlci1zcGVjaWZpYyBlc2NhcGVzIGluIHRoZSB4MTFkcnYgdG8gcmV0cmlldmUKCVgxMSBpbmZvcm1hdGlvbi4gRmluaXNoZWQgZGxsIHNlcGFyYXRpb24gb2Ygb3BlbmdsMzIuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hdmljYXAzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc2c3MTEuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNpbWczMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGRvY3Z3LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHdhaW5fMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsbW9uLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmVhcnRzLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZSB1cGRhdGUuCgktIE1pc3NpbmcgQVBJIGZpbGUgZW50cmllcyBub3cgb25seSByZXBvcnRlZCBvbmNlLgoKCSogZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBmaWxlcy9zbWIuYywgZmlsZXMvc21iLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGluY2x1ZGUvc2VydmljZXMuaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvc2VydmljZXMuYzoKCVJlbW92ZWQgc2VydmljZSB0aHJlYWQgc3VwcG9ydC4KCgkqIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGluY2x1ZGUvd2luc29jay5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmMsCgkgIHNlcnZlci91c2VyLmgsIHNlcnZlci93aW5kb3cuYzoKCVNlbmQgbWVzc2FnZSBmb3IgV1NBQXN5bmNTZWxlY3Qgc29ja2V0cyBkaXJlY3RseSBmcm9tIHRoZSBzZXJ2ZXIsCglpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzZXJ2aWNlIHRocmVhZC4gRmluaXNoZWQgc2VwYXJhdGlvbiBvZiB3czJfMzIuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsCgkgIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vaW1hYWRwMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5hY20uc3BlYywKCSAgZGxscy9tc2FjbS9pbWFhZHAzMi9pbWFhZHAzMi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIGFuIElNQSBkcml2ZXIuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3VzZXIuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJV2luZWNvbnNvbGUgaXMgbm93IGFibGUgdG8gaGFuZGxlIG5vbiByYXN0ZXIgZm9udHMgKHZlY3RvciwgdHJ1ZQoJdHlwZSkuCgoJKiBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jOgoJRml4ZWQgaGFuZGxpbmcgb2YgdGltZXIgY2FsbGJhY2sgcm91dGluZXMgd2hlbiB0aGUgdGhyZWFkIG93bmluZyB0aGUKCWNhbGxiYWNrIHRlcm1pbmF0ZXMuCgoJKiBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaCwgbWlzYy9zeXN0ZW0uYzoKCUNyZWF0ZSB0aHJlYWRzIHRvIG1hbmFnZSB0aW1lcnMgaW5zdGVhZCBvZiB1c2luZyB0aGUgc2VydmljZSB0aHJlYWQuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLAoJICBmaWxlcy9maWxlLmM6CglFeHBvcnQgdGhlIEZJTEVfR2V0VW5peEhhbmRsZSBmdW5jdGlvbmFsaXR5IGZyb20gbnRkbGwuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGVkIGltcGxlbWVudGluZyBldmVudCByZWR1Y3Rpb24uCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRnIucmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgaXNzdWVzIGluIHJlc291cmNlcyBkZWZpbml0aW9uLgoKCSogZGxscy9nZGkvZnJlZXR5cGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBmaXhlZCBmb250cyBmYW1pbHkgbmFtZS4KCgkqIHRvb2xzL2V4YW1pbmUtcmVsYXk6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFZ4RCBjYWxsIHRyYWNpbmcuCgoJKiBkZWJ1Z2dlci9kYmcueToKCVRpanMgdmFuIEJha2VsIDx0aWpzQGNvbm5lY3R1eC5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBDKysgaWRlbnRpZmllciBzeW50YXguCgoyMDAyLTAzLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9hdWRldmNvZC5oLCBpbmNsdWRlL2Rtby5oLCBpbmNsdWRlL2Rtb3JlZy5oLAoJICBpbmNsdWRlL2Rtb3J0LmgsIGluY2x1ZGUvZHNob3cuaCwgaW5jbHVkZS9tZWRpYWVyci5oLAoJICBpbmNsdWRlL21lZGlhb2JqLmg6CglSZXdyb3RlIHNvbWUgaGVhZGVycyBmcm9tIHNjcmF0Y2ggYmFzZWQgb24gcHVibGljbHkgYXZhaWxhYmxlCglpbmZvcm1hdGlvbiB0byBhdm9pZCBFVUxBIGNvbmNlcm5zLgoKCSogZGxscy9tc2Rtby9kbW9yZWcuYywgZGxscy9tc2Rtby9kbW9ydC5jLCBkbGxzL21zZG1vL21zZG1vLnNwZWMsCgkgIGRsbHMvcXVhcnR6L1JFQURNRSwgZGxscy9xdWFydHovY2FwZ3JhcGguYywgZGxscy9xdWFydHovY2FwZ3JhcGguaCwKCSAgZGxscy9xdWFydHovZmdldmVudC5jLCBkbGxzL3F1YXJ0ei9mZ3Bhc3MuYywgZGxscy9xdWFydHovZmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ZncmFwaC5oLCBkbGxzL3F1YXJ0ei9mbWFwLmMsIGRsbHMvcXVhcnR6L2ZtYXAuaCwKCSAgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21wZ3BhcnNlLmMsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5oLCBkbGxzL3F1YXJ0ei92aWRyZW4uYywgZGxscy9xdWFydHovdmlkcmVuLmgsCgkgIGluY2x1ZGUvY29udHJvbC5oLCBpbmNsdWRlL2V2Y29kZS5oLCBpbmNsdWRlL3N0cm1pZi5oLAoJICBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJUmVtb3ZlZCBzb21lIGNvZGUgYmVjYXVzZSBvZiBjb25jZXJucyBvdmVyIHRoZSBNaWNyb3NvZnQgRGlyZWN0WCBTREsKCWxpY2Vuc2UgYWdyZWVtZW50LgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL3N5c3RlbS5pbmksIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLAoJICBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zZzcxMS8uY3ZzaWdub3JlLAoJICBkbGxzL21zYWNtL21zZzcxMS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2c3MTEvbXNnNzExLmMsCgkgIGRsbHMvbXNhY20vbXNnNzExL21zZzcxMS5kcnYuc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBHNzExIGNvZGVjIGRyaXZlci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IENDTV97R0VUfFNFVH1DT0xPUlNDSEVNRS4KCS0gSW1wbGVtZW50IFdNX05PVElGWUZPUk1BVCBhbmQgY29ycmVjdCBwYXNzaW5nIFdNX05PVElGWSB3aXRoIGNvcnJlY3QKCSAgbWVzc2FnZSBjYWxsLgoJLSBJZ25vcmUgUEdNX0ZPUldBUkRNT1VTRSBsaWtlIG5hdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglSZWFuYWx5emUgYnV0dG9uIHN0YXR1cyBkdXJpbmcgTkNDYWxjU2l6ZSBwcm9jZXNzaW5nIGJlY2F1c2Ugc2l6ZSBvZgoJd2luZG93IG1heSBoYXZlIGNoYW5nZWQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJV2UgY2Fubm90IGlnbm9yZSBOb3RpZnlOb25saW5lYXIgZm9jdXMgZXZlbnRzLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOgoJUHJvcGVybHkgaGFuZGxlIGxvYWRvcmRlciBzcGVjaWZpY2F0aW9ucyBjb250YWluaW5nIGEgLmRsbCBleHRlbnNpb24uCgoJKiBNYWtlLnJ1bGVzLmluOiBGaXhlZCBydWxlIGZvciB0ZXN0IHByb2dyYW0uCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGVzdHMvLmN2c2lnbm9yZSwKCSAgZGxscy9rZXJuZWwvdGVzdHMvZGlyZWN0b3J5LmMsIGRsbHMva2VybmVsL3Rlc3RzL2tlcm5lbDMyX3Rlc3Quc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0ZXN0cyBmb3IgR2V0U3lzdGVtRGlyZWN0b3J5QS9XIGFuZCBHZXRXaW5kb3dzRGlyZWN0b3J5QS9XLgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvd3RtYWluLmMsIGluY2x1ZGUvd2luZS90ZXN0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIHRyYWNlIGZ1bmN0aW9uIChzYW1lIGFzIGluIHRoZSBwZXJsIGZyYW1ld29yaykuCglBZGQgc3VwcG9ydCBmb3IgdG9kbyB0ZXN0cy4KCU1ha2UgaXQgcG9zc2libGUgdG8gc3BlY2lmeSBhIHByaW50Zi1zdHlsZSBtZXNzYWdlIGluIG9rLgoJSW5jbHVkZSB3aW5kZWYuaCBpbiB0ZXN0LmggZm9yIGNvbXBpbGluZyB0ZXN0cyBvbiBXaW5kb3dzLgoKCSogZGxscy9wc2FwaS9wc2FwaV9tYWluLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgRW51bVByb2Nlc3NlcyBhbmQgRW51bVByb2Nlc3NNb2R1bGVzLgoKCSogZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBsb2FkZXIvcGVfaW1hZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NuYXBzaG90LmMsCgkgIHNlcnZlci90cmFjZS5jOgoJQ29ycmVjdGx5IGZpbGwgcGFyZW50IHBpZCwgbW9kdWxlIHNpemUgYW5kIG1vZHVsZSBuYW1lIGluIHByb2Nlc3MgYW5kCgltb2R1bGUgc25hcHNob3RzLiBCYXNlZCBvbiBwYXRjaGVzIGJ5IEVyaWMgUG91ZWNoIGFuZCBBbmRyZWFzIE1vaHIuCgoJKiBkbGxzL3dpbm1tL3dpbmVhcnRzL2F1ZGlvLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AYWx1bS53cGkuZWR1PgoJRml4IHJhbmdlIGluIGFSdHMgOGJpdCB2b2x1bWUgY29kZS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUluaXRpYWxpc2UgYSBzdGFjayB2YXJpYWJsZS4KCjIwMDItMDMtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbjogRml4ZWQgbGlua2luZyBvZiB3aW5lIHRhcmdldC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3R3YWluLy5jdnNpZ25vcmUsCgkgIGRsbHMvdHdhaW4vTWFrZWZpbGUuaW4sIGRsbHMvdHdhaW4vUkVBRE1FLCBkbGxzL3R3YWluL1RXQUlOLAoJICBkbGxzL3R3YWluL2NhcGFiaWxpdHkuYywgZGxscy90d2Fpbi9kc19hdWRpby5jLAoJICBkbGxzL3R3YWluL2RzX2N0cmwuYywgZGxscy90d2Fpbi9kc19pbWFnZS5jLCBkbGxzL3R3YWluL2RzbV9jdHJsLmMsCgkgIGRsbHMvdHdhaW4vdHdhaW4uaCwgZGxscy90d2Fpbi90d2FpbjMyX21haW4uYywKCSAgZGxscy90d2Fpbi90d2Fpbl8zMi5zcGVjLCBkbGxzL3R3YWluL3R3YWluX2kuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCVNoaSBRdWFuIEhlIDxzaGlxdWFuQGN5YmVyZHVkZS5jb20+IChmb3IgQ29yZWwpCglTdGFydGVkIFRXQUlOIGltcGxlbWVudGF0aW9uLgoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWVyZ2VkIGludG8gV2luZUhRLCBtYWRlIHN1cmUgaXQgd29ya3Mgd2l0aG91dCBTQU5FLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJTWFrZSB3YXJuaW5ncyBxdWlldCBieSBkZWZhdWx0IGFuZCBhZGRlZCAtdyBvcHRpb24uCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBERVZFTE9QRVJTLUhJTlRTLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy93aW5tbS93aW5lYXJ0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL3dpbmVhcnRzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVhcnRzL2FydHMuYywKCSAgZGxscy93aW5tbS93aW5lYXJ0cy9hcnRzLmgsIGRsbHMvd2lubW0vd2luZWFydHMvYXVkaW8uYywKCSAgZGxscy93aW5tbS93aW5lYXJ0cy93aW5lYXJ0cy5kcnYuc3BlYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBhbHVtLndwaS5lZHU+CglBZGRlZCBhUnRzIGRyaXZlci4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jOgoJTWljaGFlbCBDYXJkZW5hcyA8bWljaGFlbC5jYXJkZW5hc0BsaW5kb3dzLmNvbT4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglNaWNoYWVsIENhcmRlbmFzIDxtaWNoYWVsLmNhcmRlbmFzQGxpbmRvd3MuY29tPgoJQ2hhbmdlZCByZWdpc3RyeSBoYW5kbGluZyBpbiBSZWdPcGVuS2V5RXhBIHRvIGJlaGF2ZSBsaWtlIHdpbmRvd3M5NQoJd2hlbiB3aW52ZXI9PXdpbjk1LgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBjaGVjayB0byBmd3JpdGUgZm9yIHNpemUgPT0gMC4KCUZpeGVkIG9yZGVyIGFuZCBmb3JtYXQgb2YgInNpemUiIGFuZCAibm1lbWIiIHBhcmFtZXRlcnMgaW4gY2FsbHMgdG8KCWZ3cml0ZS4KCjIwMDItMDMtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW46CglGaXhlZCBydWxlcyBmb3IgbWFpbiBtb2R1bGUgc3BlYyBmaWxlLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2FjbXdyYXAuYywKCSAgZGxscy9xdWFydHovYXZpcGFyc2UuYywgZGxscy9xdWFydHovYmFzZWZpbHQuYywKCSAgZGxscy9xdWFydHovYmFzZWZpbHQuaCwgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tcGdwYXJzZS5jLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcGFyc2VyLmgsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMuCglTdGFydGVkIGltcGxlbWVudGluZyBNUEVHIHBhcnNlci4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZHZkbWVkaWEuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBhIG1pc3NpbmcgaGVhZGVyLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9DaGFuZ2VMb2csIHByb2dyYW1zL25vdGVwYWQvRGEucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRGUucmMsIHByb2dyYW1zL25vdGVwYWQvRW4ucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRXMucmMsIHByb2dyYW1zL25vdGVwYWQvRmkucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvRnIucmMsIHByb2dyYW1zL25vdGVwYWQvUHQucmMsCgkgIHByb2dyYW1zL25vdGVwYWQvUkVBRE1FLCBwcm9ncmFtcy9ub3RlcGFkL1NrLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL1N3LnJjLCBwcm9ncmFtcy9ub3RlcGFkL1dhLnJjLAoJICBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbGFuZ3VhZ2UuaCwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWRfcmVzLmgsCgkgIHByb2dyYW1zL25vdGVwYWQvcnNyYy5yYzoKCVN5bHZhaW4gUGV0cmVvbGxlIDxzcGV0cmVvbGxlQHlhaG9vLmZyPgoJTWFkZSBub3RlcGFkIHVzZXMgTkxTIHByb3Blcmx5LgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgaW5jbHVkZS9NYWtlZmlsZS5pbiwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL2xvY2tpbmcuaDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29ubmVjdCB0aGUgbXN2Y3J0IGZpbGUgYnl0ZSBsb2NraW5nIHVwIHRvIG50ZGxsLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCU5vIG5lZWQgZm9yIHRoZSBmaXhtZSBvbiBhIHNpbXBsZSBUQlNUWUxFX1NFUC4KCgkqIGluY2x1ZGUvdXVpZHMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgR1VJRHMuCgoJKiBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2lubmxzL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2ludHJ1c3QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd293MzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9NYWtlZmlsZS5pbiwKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGxpYnJhcnkvTWFrZWZpbGUuaW4sCgkgIGxpYnJhcnkvbG9hZGVyLmMsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBkbGxzL3BzYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLAoJICBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLAoJICBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9zZXJpYWx1aS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLAoJICBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hmb2xkZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2hmb2xkZXIvc2hmb2xkZXIuc3BlYywgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3N0aS9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3VybC9NYWtlZmlsZS5pbiwKCSAgZGxscy91cmxtb24vTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwKCSAgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy9NYWtlZmlsZS5pbiwKCSAgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9semV4cGFuZC9NYWtlZmlsZS5pbiwgZGxscy9tYXBpMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLAoJICBkbGxzL21zZG1vL01ha2VmaWxlLmluLCBkbGxzL21zaW1nMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwgZGxscy9tc3JsZTMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQyMC9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL29kYmMzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlZGxnL01ha2VmaWxlLmluLAoJICBkbGxzL29sZXBybzMyL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9NYWtlZmlsZS5pbiwKCSAgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWNhcDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLAoJICBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLAoJICBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGV2ZW51bS9NYWtlZmlsZS5pbiwKCSAgZGxscy9kaW5wdXQvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2x1MzIvTWFrZWZpbGUuaW4sIGRsbHMvaWNtcC9NYWtlZmlsZS5pbiwKCSAgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9tYWtlX2RsbHMsCgkgIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKCUNoYW5nZWQgYnVpbHRpbiBkbGxzIGZpbGUgbmFtZXMgdG8gbWFrZSBpdCBjbGVhciB0aGV5IGFyZSBub3Qgbm9ybWFsCglVbml4IGxpYnJhcmllcywgYW5kIGluc3RhbGwgdGhlbSBpbiAkbGliZGlyL3dpbmUgaW5zdGVhZCBvZiAkbGliZGlyIHRvCglhdm9pZCBuYW1lIGNvbmZsaWN0cyBpbiAvdXNyL2xpYi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVcGRhdGUgc2hlbGwgeHh4QVcgd3JhcHBlciBwcm90b3R5cGVzIGZvciBmaXhlZCBTSExXQVBJIGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmgsIGRsbHMvc2hsd2FwaS9wYXRoLmMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCURvY3VtZW50LCBpbXBsZW1lbnQvZml4IGFuZCB0ZXN0IDExMCsgUGF0aCBmdW5jdGlvbnMuCglTaGFyZSB0aGUgR0VUX0ZVTkMgbWFjcm8sIG90aGVyIHBsYWNlcyB0aGFuIG9yZGluYWwuYyBuZWVkIGl0LgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglPbiBXTV9HRVRURVhULCB0ZXJtaW5hdGUgdGhlIGxwYXJhbSBidWZmZXIgZXZlbiBpZiBzdHJpbmcgaXMgZW1wdHkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBQcmVsaW1pbmFyeSBpbXBsZW1lbnRhdGlvbiBvZiBUVlNfTk9TQ1JPTEwgYW5kIFRWU19OT0hTQ1JPTEwKCS0gSW1wbGVtZW50IEEgYW5kIFcgdmVyc2lvbnMgb2YgV01fTk9USUZZIGJhc2VkIG9uIHJlc3BvbnNlIHRvCgkgIFdNX05PVElGWUZPUk1BVC4gTm90ZSB0aGF0IHRoZSBFRElUTEFCRUwgbm90aWZpZXMgYXJlIG5vdCBkb25lLgoJLSBJbXBsZW1lbnQgV01fTk9USUZZRk9STUFULgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCU1hdHRoaWFzIEZlY2huZXIgPGlkZWZpeEBmZWNobmVyLm5ldD4KCUFkZGVkIEdlcm1hbiAxMDUga2V5cyBrZXlib2FyZC4KCgkqIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwgZGxscy9zaGRvY3Z3L2FwaS5jLAoJICBkbGxzL3NoZG9jdncvYnJvd3Nlci5jLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsCgkgIGRsbHMvc2hkb2N2dy9jb21pbXBsLmMsIGRsbHMvc2hkb2N2dy9jb21pbXBsLmgsCgkgIGRsbHMvc2hkb2N2dy9jb25uZWN0LmMsIGRsbHMvc2hkb2N2dy9ldmVudHMuYywKCSAgZGxscy9zaGRvY3Z3L2ZhY3RvcnkuYywgZGxscy9zaGRvY3Z3L21pc2MuYywKCSAgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvcGVyc2lzdC5jLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLAoJICBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsCgkgIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmMsIG9sZS91dWlkLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgdGhlIGJhc2ljIENPTSBmcmFtZXdvcmsuCglGaXhlZCBhbGwgSVVua25vd24gb2Ygc2hkb2N2dy5kbGwuCgoJKiBSRUFETUU6CglNYXJ0aW4gR2FydG9uIDxtYXJ0aW5Ad3Jhc3NlLmRlbW9uLmNvLnVrPgoJRml4ZWQgbGljZW5zZSB0ZXh0LgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmM6CglDaGFybGVzIFZhdWdobiA8Y2hhcmxlc3ZAbWZvcy5vcmc+CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBzdXBwb3J0IGZvciBnbE1UZXhDb29yZDJmU0dJUwoJLSB1cGRhdGVkIHRvIGxhdGVzdCBPcGVuR0wgZXh0ZW5zaW9ucwoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglCZXJuaGFyZCBSb3NlbmtyYWVuemVyIDxiZXJvQHJlZGhhdC5kZT4KCUFkZGVkIEludGVybmV0T3BlblVSTEEgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJSG9vayBiYWNrIGludG8gdGhlIGNvcnJlY3QgTVNWQ1JUX190b2xvd2VyL3VwcGVyLgoKCSogZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy92Z2EuYywgZGxscy93aW5lZG9zL3ZnYS5oOgoJQWRtaXJhbCBDb2V5bWFuIDxhZG1pcmFsQGNvcm5lci5uZXQ+CglCZWdpbm5pbmdzIG9mIHRoZSBjb2RlIHRoYXQgc2hvdWxkIGFsbG93IERPUyBwcm9ncmFtcyB0byBzZXQgdGhlaXIKCWNvbG9yIHBhbGV0dGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkIExWU19OT1NPUlRIRUFERVIgc3VwcG9ydC4KCVNvcnQgY29sdW1uIG9uIEhETl9JVEVNQ0xJQ0tBIHRvby4KCURvIG5vdCBlZGl0IGxhYmVscyBpZiBpY29uIHdhcyBjbGlja2VkLgoJRml4IHRoZSBpbmNvcnJlY3QgaWNvbiB3aWR0aCBpbiBteSBlYXJsaWVyIHBhdGNoLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBkZWZhdWx0IHN0b2NrIG9iamVjdHMgZm9yIGtub3duIG5vbi1VUyBjaGFyc2V0cy4KCgkqIGRsbHMvbXNkbW8vTWFrZWZpbGUuaW4sIGRsbHMvbXNkbW8vZG1vcmVnLmMsIGRsbHMvbXNkbW8vZG1vcnQuYywKCSAgZGxscy9tc2Rtby9tc2Rtby5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIHNvbWUgQVBJcy4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgRmlsdGVyRGF0YSBvZiBEaXJlY3RTaG93IGZpbHRlcnMgKEZpbHRlckRhdGEgc2hvdWxkIGJlCglyZWdpc3RlcmVkIGZvciByZW5kZXJpbmcgbWVkaWEgZmlsZXMpLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFJlaW1wbGVtZW50IGZ1bmN0aW9ucyAzNTAsIDM1MSwgMzUyIHRvIHVzZSBhcHByb3ByaWF0ZSBXIGZ1bmN0aW9ucwoJICAodGhhbmtzIEr8cmdlbiEpCgktIEFkZCBhZGRpdGlvbmFsIGNvbW1lbnRzIHRvIGZ1bmN0aW9ucyAyNjYsIDI2NywgMjc2IGFuZCBhZGp1c3QgdGhlCgkgIHN0dWJiZWQgcmV0dXJuIHZhbHVlcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvcnJlY3QgUkJOX0NISUxEU0laRSByZWN0IHZhbHVlIGZvciBDQ1NfVkVSVCByZWJhci4KCS0gRG8gVXBkYXRlV2luZG93IG9ubHkgaWYgZG9pbmcgcmVkcmF3cyB3aGVuIGRvaW5nIGxheW91dC4KCjIwMDItMDMtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3F1YXJ0ei9hbXVuZG9jLmMsIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL3F1YXJ0ei9hdWRyZW4uaCwKCSAgZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2F2aXBhcnNlLmMsIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywKCSAgZGxscy9xdWFydHovY2FwZ3JhcGguYywgZGxscy9xdWFydHovY2FwZ3JhcGguaCwKCSAgZGxscy9xdWFydHovY3Njb252LmMsIGRsbHMvcXVhcnR6L2ZncGFzcy5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywKCSAgZGxscy9xdWFydHovZmdyYXBoLmgsIGRsbHMvcXVhcnR6L2ZpbGVzaW5rLmMsCgkgIGRsbHMvcXVhcnR6L2ZpbGVzaW5rLmgsIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovaWZncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9pbXBvcy5jLCBkbGxzL3F1YXJ0ei9pbXNlZWsuYywKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuYywKCSAgZGxscy9xdWFydHovcGFyc2VyLmgsIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsCgkgIGRsbHMvcXVhcnR6L3ZpZHJlbi5jLCBkbGxzL3F1YXJ0ei93YXZwYXJzZS5jLCBkbGxzL3F1YXJ0ei94Zm9ybS5jLAoJICBkbGxzL3F1YXJ0ei94Zm9ybS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIHNvbWUgYnVncy4KCUZpeGVkIGF1ZGlvIHJlbmRlcmVyLgoJSW1wbGVtZW50ZWQgc2Vla2luZy4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBkbGxzL21zaW1nMzIvbXNpbWczMi5zcGVjLCBkbGxzL21zaW1nMzIvbXNpbWczMl9tYWluLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglMZW8gdmFuIGRlbiBCZXJnIDxsZW9AY29ubmVjdHV4LmNvbT4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgYSBtaXNzaW5nIENMU0lELgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVNlcmdlaSBUdXJjaGFub3YgPHBsdW1iZXJAcHJpbnQudmxhZC5ydT4KCU9yZGluYWwgMzQyIGlzIHJlYWxseSBuYW1lZCBTSEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJVE9PTEJBUl9MQnV0dG9uVXAgc2hvdWxkIHdvcmsgZXZlbiBpZiBSZWxlYXNlQ2FwdHVyZSB3YXMgYWxyZWFkeQoJY2FsbGVkLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLnRleGluZm86CglKZXJlbXkgTmV3bWFuIDxqbmV3bWFuQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIFdBUlJBTlRZIGluY2x1c2lvbi4KCgkqIGluY2x1ZGUvc3RybWlmLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBtaXNzaW5nIGVudW1zLgoKCSogZGxscy9hdmljYXAzMi9hdmljYXAzMi5zcGVjLCBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyX21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdHVicy4KCgkqIGZpbGVzL3NtYi5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGQgbWlzc2luZyAjaW5jbHVkZXMgZm9yIEZyZWVCU0QgYW5kIFNvbGFyaXMuCgoJKiBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvaW50MzMuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUNvbnNvbGUgbW9kZSBET1MgcHJvZ3JhbXMgbm93IHJlY2VpdmUgbW91c2UgZXZlbnRzLgoJUmVwbGFjZWQgR2V0TWVzc2FnZSB3aXRoIFBlZWtNZXNzYWdlLCBzaW5jZSBNc2dXYWl0Rm9yTXVsdGlwbGVPYmplY3RzCglpcyBhbGxvd2VkIHRvIHJldHVybiBzcG9udGFuZW91c2x5LgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJLSBmaXggY29tcGxldGUgbGlzdGJveCBtZXNzdXAgYnkgb25seSB1cGRhdGluZyBpbiBjYXNlIGl0IG5lZWRzCgkgIHVwZGF0aW5nCgktIGZpeCBsaXN0Ym94IHNlbGVjdGlvbiBicmVha2FnZSBjYXVzaW5nIG11bHRpcGxlIHByb2dyYW1zIHRvIGdldAoJICB1bmluc3RhbGxlZAoJLSBpbXBsZW1lbnRlZCBzb3J0aW5nIG9mIGVudHJpZXMKCS0gbXVjaCBiZXR0ZXIgZGVidWcgc3RyaW5ncwoKCSogZGxscy91c2VyL3Rlc3RzL3N5c3BhcmFtcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHNob3cgdGhlIHdpbmRvdy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU21hbGwgZml4ZXMuCgoyMDAyLTAzLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvTWFrZWZpbGUuaW4sIGZpbGVzL2ZpbGUuYywgZmlsZXMvc21iLmMsIGZpbGVzL3NtYi5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9NYWtlZmlsZS5pbiwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NtYi5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglCZWdpbiB0byBtYWtlIHdpbmUgYW4gU01CIGNsaWVudC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZG1vLmgsIGluY2x1ZGUvZG1vcmVnLmgsCgkgIGluY2x1ZGUvZG1vcnQuaCwgaW5jbHVkZS9tZWRpYWVyci5oLCBpbmNsdWRlL21lZGlhb2JqLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBtaXNzaW5nIGhlYWRlcnMuCgoJKiBzZXJ2ZXIvc2VyaWFsLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRmluaXNoIGFueSBwZW5kaW5nIFdhaXRDb21tRXZlbnRzIGlmIHRoZSBldmVudCBtYXNrIGlzIHNldCB0byAwLgoKCSogZGxscy9tc3JsZTMyL21zcmxlMzIuYzoKCU1pY2hhZWwgS2FyY2hlciA8bWljaGFlbC5rYXJjaGVyQGRway5iZXJsaW4uZmlkby5kZT4KCXBEc3Qgd2FzIGFkdmFuY2VkIHRvbyBtdWNoIHdoZW4gZGVjb2RpbmcgREVMVEEgYmxvY2tzLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJQWRkZWQgb3B0aW9uIFNXX0ZPUkNFTUlOSU1JWkUgdG8gU2hvd1dpbmRvdy4KCjIwMDItMDMtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWFkZSB3aW5lYnVpbGQgKGFsbW9zdCkgY29tcGlsZSBhbmQgd29yayBvbiBXaW5kb3dzLgoKCSogZGxscy9rZXJuZWwvdGltZS5jLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L3BvcnQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBCZXR0ZXIgaGFuZGxpbmcgd2hlbiBzZXR0aW1lb2ZkYXkgaXMgbm90IGF2YWlsYWJsZS4KCS0gQWRkaW5nIG5hbWUgdHJhbnNsYXRpb25zIGZvciBwe2Nsb3NlLG9wZW59IGFuZCBzdHJ7LG59Y2FzZWNtcCBpZgoJICB0aGV5IGV4aXN0cyB1bmRlciBvdGhlciBuYW1lcy4KCgkqIGNvbmZpZ3VyZS5hYywgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzb21lIG9wdGlvbmFsIGhlYWRlcnMgYW5kIGZ1bmN0aW9ucyBmb3IgY29tcGlsaW5nIG9uIFdpbmRvd3MKCXdpdGggTVNWQy4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmM6CglGaXhlZCBpbnRlci1wcm9jZXNzIHBhY2tpbmcgb2YgQ0IvTEJfRklORFNUUklORywgQ0IvTEJfRklORFNUUklOR0VYQUNUCglhbmQgQ0IvTEJfU0VMRUNUU1RSSU5HLgoKCSogd2luZG93cy93aW5wcm9jLmM6IE1laG1ldCBZYXNhciA8bXlhc2FyQGZyZWUuZnI+CglGaXhlZCBVbmljb2RlIGNvbnZlcnNpb24gZm9yIENCL0xCX0ZJTkRTVFJJTkcsIENCL0xCX0ZJTkRTVFJJTkdFWEFDVAoJYW5kIENCL0xCX1NFTEVDVFNUUklORy4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmg6CglXYWxkZWsgSGViaXNjaCA8aGViaXNjaEBtYXRoLnVuaS53cm9jLnBsPgoJSW1wbGVtZW50ZWQgc3RkaW8gYnVmZmVyaW5nIGFuZCB1bmdldGMuIE1pc2Mgc3RkaW8gZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkIHN1cHBvcnQgZm9yIHJlcG9ydCBtb2RlIHRleHQganVzdGlmaWNhdGlvbi4KCgkqIHNjaGVkdWxlci9zeW5jaHJvLmMsIGRsbHMva2VybmVsL2NvbW0uYywgZmlsZXMvZmlsZS5jLAoJICBpbmNsdWRlL2ZpbGUuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglTZXQgYW4gb3ZlcmxhcHBlZCBoRXZlbnQgYmVmb3JlIGNhbGxpbmcgYW55IEFQQ3MuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovY2FwZ3JhcGguYywKCSAgZGxscy9xdWFydHovY2FwZ3JhcGguaCwgZGxscy9xdWFydHovZmlsZXNpbmsuYywKCSAgZGxscy9xdWFydHovZmlsZXNpbmsuaCwgZGxscy9xdWFydHovbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBDTFNJRHMuCgoJKiBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hZHZhcGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9ycGNydDQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIHVwZGF0ZS4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGxfSmEucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYywKCSAgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0phLnJjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGFuZCBmaXhlZCBzb21lIEphcGFuZXNlIHJlc291cmNlcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgc3VwcG9ydCBmb3IgV01fV0lORE9XUE9TQ0hBTkdFRCB0byBzYXZlIG5ldyBvcmlnaW4gb2Ygd2luZG93LgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJUGFzcyBpbmZvcm1hdGlvbiB0aHJvdWdoIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIHN0YXRpYyB2YXJpYWJsZXMuCglBZGQgcHJvdGVjdGlvbiB0byBwcmV2ZW50IHJlYWRpbmcgb3V0c2lkZSB0aGUgYnVmZmVyLgoJQmV0dGVyIGhhbmRsaW5nIG9mIGRlZ2VuZXJhdGUgY2FzZXMuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglNZWhtZXQgWWFzYXIgPG15YXNhckBmcmVlLmZyPgoJUHJldmVudCBzZXR1cCBmcm9tIGNyYXNoaW5nIGlmIGEgc2VjdGlvbiBpbiB0aGUgSU5GIGlzIGVtcHR5IChubwoJZW50cmllcykgKHRoaXMgaGFwcGVucyB3aGVuIGluc3RhbGxpbmcgSUU1KS4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglUdXJjaGFub3YgU2VyZ2VpIDxwbHVtYmVyQHByaW50LnZsYWQucnU+CglJbXBsZW1lbnQgb3JkaW5hbCAzNDIuCgoJKiB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jOgoJSmFzb24gUGhpbGxpcHMgPGphc29ucDFAY294Lm5ldD4KCU1ha2Ugd2luZWNsaXBzcnYgcnVuIGFzIGEgZGFlbW9uIChjbG9zZSBzdGRvdXQvc3RkZXJyLCBubyBjb250cm9sbGluZwoJdGVybWluYWwsIHNlc3Npb24gZ3JvdXAgbGVhZGVyKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBeGVsIFNjaG1pZHQgPGJhYmVAYXhlbC1zY2htaWR0LW5ldC5kZT4KCUFkZGVkIGtleWJvYXJkIGxheW91dCBmb3IgTG9naXRlY2ggQ29yZGxlc3MgRGVza3RvcCBQcm8uCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBGSVhNRXMgZm9yIGFjdGlvbnMgd2l0aCBpZD49MTE1LiBUaGVzZSBhY3Rpb25zIHdlcmUgbm90Cglwcm9jZXNzZWQgYmVmb3JlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgc2NhZmZvbGRpbmcgZm9yIFRCX3tHRVR8U0VUfVBBRERJTkcuCgktIFJlcGxhY2Ugd3JvbmcgdGVzdCBmb3IgQ0NTX1ZFUlQgd2l0aCBjb3JyZWN0IHRlc3QgZm9yIHVuZG9jdW1lbnRlZAoJICBUQlNUWUxFX0VYXyBzdHlsZSAweDA0LgoJLSBBZGQgc3VwcG9ydCBmb3IgdW5kb2N1bWVudGVkIFRCX1NFVEJVVFRPTlNJWkUgd2hlcmUgdGhlIHNpemUgaXMKCSAgemVybywgc2V0cyB0byBkZWZhdWx0IHZhbHVlLgoJLSBJc3N1ZSBGSVhNRXMgZm9yIHVuc3VwcG9ydGVkIGV4dGVuZGVkIHN0eWxlcy4KCS0gSW1wbGVtZW50IGZpcnN0IHRyeSBhdCB1bmRvY3VtZW50ZWQgdG9vbGJhciBtZXNzYWdlIDB4MDQ2My4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJVHJhY2UgdW5kb2N1bWVudGVkIHRvb2xiYXIgbWVzc2FnZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgQlROXy4uLiBkZWZpbml0aW9ucyAocmVwbGFjZW1lbnQgZm9yIFRCU1RZTEVfLi4uKS4KCS0gQWRkIGRlZmluaXRpb25zIG9mIGFkZGl0aW9uYWwgVEJTVFlMRV9FWF8gc3R5bGVzLiBJbmNsdWRpbmcKCSAgdW5kb2N1bWVudGVkIG9uZSB1c2VkIGJ5IElFNS4KCS0gQWRkIGFkZGl0aW9uYWwgdG9vbGJhciBtZXNzYWdlIGRlZmluaXRpb25zIGluY2x1ZGluZwoJICB1bmRvY3VtZW50ZWQgb25lcyB1c2VkIGJ5IGF0IGxlYXN0IElFNS4KCgkqIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVNvbWUgc21hbGwgY2xlYW51cHMgdG8gZGlucHV0IG1vdXNlIGNvZGUuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQ3JlYXRlZCBkdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBJbnRlcm5ldFNldE9wdGlvbiBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJVGVzdCBiVW5pY29kZSBhbmQgY2FsbCBhcHByb3ByaWF0ZSBEcmF3VGV4dCByb3V0aW5lLgoKMjAwMi0wMy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIFZFUlNJT04sIGNvbmZpZ3VyZToKCVJlbGVhc2UgMjAwMjAzMTAuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDItMDMtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBMSUNFTlNFLk9MRDogS2VlcCBvbGQgbGljZW5zZSBhcm91bmQuCgoJKiBpbmNsdWRlL2RlYnVndG9vbHMuaCwgdG9vbHMvYXBpdy5pbmRleCwgdG9vbHMvaXBjbCwKCSAgdG9vbHMvbWFrZV9vczIuY21kLCB0b29scy9tYWtlaHRtbC5wbCwgdG9vbHMvdW5pbWFwLnBsLAoJICB0b29scy93bWMvbGFuZ3VhZ2UuYzoKCVJlbW92ZWQgc29tZSBvYnNvbGV0ZSBmaWxlcy4KCgkqICovKjoKCUFkZGVkIExHUEwgc3RhbmRhcmQgY29tbWVudCwgYW5kIGNvcHlyaWdodCBub3RpY2VzIHdoZXJlIG5lY2Vzc2FyeS4KCUdsb2JhbCByZXBsYWNlbWVudCBvZiBkZWJ1Z3Rvb2xzLmggYnkgd2luZS9kZWJ1Zy5oLgoKCSogQ09QWUlORy5MSUIsIExJQ0VOU0UsIFdBUlJBTlRZOgoJQ2hhbmdlZCBsaWNlbnNlIHRvIExHUEwuCgoyMDAyLTAyLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogVkVSU0lPTiwgY29uZmlndXJlLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAyMDIyOC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMi0wMi0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9hdXRob3JzLmgsIEFVVEhPUlM6CglVcGRhdGVkIGF1dGhvcnMgbGlzdCBmcm9tIHRoZSBDaGFuZ2Vsb2cuIFBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3UKCWhhdmUgYmVlbiBsZWZ0IG91dC4KCgkqIGNvbmZpZ3VyZS5hYywgY29uZmlndXJlOgoJQWRkZWQgdGVzdHMgZXh0cmEgZGlyZWN0b3JpZXMuCgoJKiBwcm9ncmFtcy9yZWdhcGkvdGVzdHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL1JFQURNRSwKCSAgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL2FmdGVyLnJlZywgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL2JlZm9yZS5yZWcsCgkgIHByb2dyYW1zL3JlZ2FwaS90ZXN0cy9vcmlnLnJlZywgcHJvZ3JhbXMvcmVnYXBpL3Rlc3RzL3JlZ2FwaS5wbCwKCSAgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvUkVBRE1FLAoJICBwcm9ncmFtcy9yZWdhcGkvcmVnRml4ZXIucGwsIHByb2dyYW1zL3JlZ2FwaS9yZWdSZXN0b3Jlci5wbCwKCSAgcHJvZ3JhbXMvcmVnYXBpL3JlZ1NldC5zaCwgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglNYWRlIHJlZ2FwaSBzY3JpcHRzIGFibGUgdG8gcHJvY2VzcyAucmVnIGZpbGVzIGluIHJlZ2VkaXQKCWZvcm1hdC4gSW1wbGVtZW50ZWQgdW5pdCB0ZXN0cyBmb3IgcmVnIGRpZmYgZnVuY3Rpb25hbGl0eS4KCgkqIGRsbHMvbWFrZV9kbGxzLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCUFkZGVkIG1ha2UgY2hlY2sgdGFyZ2V0IHRvIHJ1biB1bml0IHRlc3RzIHRvbyBzaW5jZSB0aGlzIHNlZW1zIHRvIGJlCglzdGFuZGFyZC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglGaXhlZCB3aW5wcm9jIG1lbW9yeSBsZWFrLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFzayBmb3IgY29ycmVjdCBudW1iZXIgb2YgY2hhcnMgaW4gRWRpdExibFduZFByb2NULgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYzoKCU1pY2hhZWwgQ2FyZGVuYXMgPG1pY2hhZWxjQGxpbmRvd3MuY29tPgoJTW9yZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBTSExXQVBJXzM1Ni4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRml4ZWQgbWVyZ2UgZXJyb3IuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJTElTVFZJRVdfSW5zZXJ0Q29sdW1uVCBjYW4gYmUgY2FsbGVkIHdpdGggYSB3aWR0aCBvZgoJTFZTQ1dfQVVUT1NJWkVfVVNFSEVBREVSLgoJVXNlIHRoZSBjb3JyZWN0IHN0cmluZ3Mgd2hlbiBjb2x1bW4gYXV0b3NpemluZyBvbiBjb2x1bW5zIG90aGVyIHRoYW4KCWNvbHVtbiAwLgoJTFZTQ1dfQVVUT1NJWkVfVVNFSEVBREVSIHVzZXMgYm90aCBpdGVtIGFuZCBoZWFkZXIgc3RyaW5ncy4KCjIwMDItMDItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbm50Lmg6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBZGRlZCBzb21lIGRlZmluZXMgYW5kIG9mZnNldHMuCgoJKiBvYmplY3RzL2dkaW9iai5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBtaXNjL3JlZ2lzdHJ5LmMsCgkgIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvc3RyaW5nLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglWYXJpb3VzIGNvc21ldGljIGNoYW5nZXMuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci90ZXN0cy8uY3ZzaWdub3JlLAoJICBkbGxzL3VzZXIvdGVzdHMvc3lzcGFyYW1zLmMsIGRsbHMvdXNlci90ZXN0cy91c2VyMzJfdGVzdC5zcGVjOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglBZGRlZCBTeXN0ZW1QYXJhbWV0ZXJzSW5mbyB1bml0IHRlc3QuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCB0b29scy9NYWtlZmlsZS5pbjoKCUNvc21ldGljIGZpeGVzLgoKCSogcHJvZ3JhbXMvY29udHJvbC9sY2NtYWtlLmJhdCwgcHJvZ3JhbXMvbm90ZXBhZC9sY2NtYWtlLAoJICBwcm9ncmFtcy92aWV3L2xjY21ha2VmaWxlLCBwcm9ncmFtcy93Y21kL21ha2VmaWxlLmJjYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJUmVtb3ZlZCBhbHRlcm5hdGl2ZSBtYWtlIHNjcmlwdHMuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUltcGxlbWVudGVkICJBcHAgUGF0aHMiIHJlZ2lzdHJ5IGtleSBzdXBwb3J0IGZvciBTZWFyY2hQYXRoKCkuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXhlZCBvdmVyZmxvdyBhbmQgc2lnbmVkL3Vuc2lnbmVkIGJlaGF2aW91ci4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oOgoJUmVpbXBsZW1lbnRlZCBEZWJ1Z0JyZWFrUHJvY2Vzcy4KCgkqIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dpbmVkdW1wL21pc2MuYywKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLCBtc2Rvcy92eGQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLAoJICBncmFwaGljcy9wYWludGluZy5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5lZG9zL2RldmljZXMuYywKCSAgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5jLAoJICBkbGxzL2tlcm5lbC9jb25zb2xlLmMsIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLAoJICBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVNwZWxsaW5nL2FsaWdubWVudCBmaXhlcy4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIHRvb2xzL3dpbmVjaGVjaywKCSAgZG9jdW1lbnRhdGlvbi9pbnN0YWxsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLCBSRUFETUU6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIHN0cmVzcyB0aGUgZmFjdCB0aGF0IHdpbmVpbnN0YWxsIGlzIGluIFdpbmUgc291cmNlCgktIGFkZCBtaXNzaW5nIHR0eWRydi94MTFkcnYgc2VjdGlvbiB0byB3aW5lLmNvbmYubWFuCgktIG1ha2Ugc3VyZSB0aGF0IHdlIGFsc28gbG9hZCBzaGRvY3Z3IGFzIGJ1aWx0aW4gaW4gc2FtcGxlIGNvbmZpZyBmaWxlCgktIGFkZCBzYW1wbGUgQXBwRGVmYXVsdHMgc2VjdGlvbiB0byBzYW1wbGUgY29uZmlnIGZpbGUKCS0gd2luZWNoZWNrIHVwZGF0ZQoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwKCSAgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0aGUgZGV0YWNoIGNvbW1hbmQgdG8gdGhlIGRlYnVnZ2VyLgoKCSogaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsCgkgIGluY2x1ZGUvd2luYmFzZS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOZXcgWFAgZGVidWdnaW5nIEFQSXM6IGltcGxlbWVudGVkIERlYnVnQWN0aXZlUHJvY2Vzc1N0b3AsCglEZWJ1Z1NldFByb2Nlc3NLaWxsT25FeGl0LCBEZWJ1Z0JyZWFrUHJvY2Vzcy4KCgkqIEJVR1M6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglSZXdyb3RlIEJVR1MgZmlsZS4gTGlzdGVkIGRpcmVjdGlvbnMgZm9yIHRob3NlIHdobyB3YW50IHRvIGNvbnRyaWJ1dGUKCXRvIHRoZSBwcm9qZWN0LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDZW50cmUgdGV4dCBjb3JyZWN0bHkgZm9yIHRoZSBzZWxlY3RlZCBpdGVtLgoJRHJhdyBjb21wbGV0ZSBiYWNrZ3JvdW5kIGZvciB0aGUgc2VsZWN0ZWQgaXRlbS4KCUNhbGN1bGF0ZSB0aGUgc2l6ZSBvZiBhIGxhcmdlIGljb24gbW9yZSBjb3JyZWN0bHkgKGluY2x1ZGluZyBtdWx0aWxpbmUKCWxhYmVscykuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFN1cHBvcnQgQ0NTX1ZFUlQgYXMgYWx0ZXJuYXRpdmUgZm9yIFRCU1RZTEVfV1JBUEFCTEUuCgktIFRCX0lOU0VSVEJVVFRPTlcgd2FzIG5vdCBhcyBmdW5jdGlvbmFsIGFzIHRoZSAnQScgdmVyc2lvbi4gVGhleSBub3cKCSAgbWF0Y2guCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGxleGVjLmMsCgkgIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgU2hlbGxFeGVjdXRlIGZ1bmN0aW9ucyB3aGVuIGRkZWV4ZWMgd2FzIHByZXNlbnQgaW4gcmVnaXN0cnkuCgoJKiB3aW5kb3dzL3dpbi5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCB0aGUgc3RyYW5nZSBjYXNlIGluIFdJTl9GaXhDb29yZGluYXRlcyB3aGVyZSB4IGFuZCBjeCBhcmUgbm90CglkZWZhdWx0IGJ1dCBjeSBpcyBDV19VU0VERUZBVUxULgoKMjAwMi0wMi0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IEZpeGVkIG1ha2UgdW5pbnN0YWxsLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBjdXQmcGFzdGUgcHJvYmxlbSBpbiBTRVRSVFMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglDb3JyZWN0IFdvcmQgYnJlYWtpbmcgaW4gY2VudHJlZC9yaWdodCBqdXN0aWZpZWQgbW9kZTsgaXQgd2FzIGxlYXZpbmcgYQoJdHJhaWxpbmcgc3BhY2Ugd2hpY2ggaXQgc2hvdWxkIG9ubHkgZG8gZm9yIGxlZnQtanVzdGlmaWVkIHRleHQuCglBbHNvIHRpZ2h0ZW4gdXAgc29tZSBjb21tZW50cy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIGFkZGl0aW9uYWwgQ0NNXyBtZXNzYWdlIG5hbWVzLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUltcGxlbWVudCBFTV9GTVRMSU5FUyBtZXNzYWdlIGJhc2VkIG9uIHJlbGF5IHRyYWNlIG9mIG5hdGl2ZS4KCgkqIGluY2x1ZGUvbW1yZWcuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbG90cyBvZiBtaXNzaW5nIGRlZmluZXMuCgoJKiBkbGxzL3VzZXIvZGRlL21pc2MuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgRGRlR2V0RGF0YSB3aGVuIGNhbGxlZCBmb3IgZ2V0dGluZyBzaXplLgoKCSogY29udHJvbHMvc3RhdGljLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFdNX1NFVEZPTlQgaGFuZGxpbmcgKG5vIHJlZHJhdyBtYWRlIGluIHNvbWUgY2FzZXMpLgoKCSogZGVidWdnZXIvaW5mby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglDb3NtZXRpYyBmaXhlcyB0byAnd2FsayBwcm9jJyBjb21tYW5kLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuYywgZGxscy94MTFkcnYveDExZGRyYXcuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggY3Jhc2ggaW4gdGhlIFgxMSBIQUwgd2hlbiBzZXR0aW5nIGEgTlVMTCBwYWxldHRlIHRvIGEgc3VyZmFjZS4KCgkqIGRvY3VtZW50YXRpb24vZGIyaHRtbC13aW5laHE6CglQaGlsaXBwIFdvbGxlcm1hbm4gPHBoaWxfd29AZ214Lm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBDcnV4IExpbnV4IGRpc3RyaWJ1dGlvbiAod2l0aCBvcGVuamFkZSkuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IGFub3RoZXIgYmFkIHRlc3QuIENhdXNlZCByZWdyZXNzaW9uIGluIElFIDQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNoYXJsZXMgRHVmZnkgPGNkdWZmeUBiaWdmb290LmNvbT4KCVN0b3AgVE9PTEJBUl9NZWFzdXJlU3RyaW5nIGZyb20gZHlpbmcgb24gZW1wdHkgc3RyaW5ncy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCVBhcnRpYWxseSByZXBhaXIgaG90c3BvdCBoYW5kbGluZy4KCjIwMDItMDItMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYywgcmVsYXkzMi9zbm9vcC5jLCB3aW4zMi9jb25zb2xlLmMsCgkgIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi9pbml0LmMsIGluY2x1ZGUvbXN2Y3J0L2V4Y3B0LmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL3Jlc291cmNlLmMsIG1lbW9yeS9nbG9iYWwuYywKCSAgbWVtb3J5L3N0cmluZy5jLCBtZW1vcnkvdmlydHVhbC5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywKCSAgZmlsZXMvZG9zX2ZzLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2luZG93cy5oLAoJICBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9zZWMuYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy91c2VyL2xzdHIuYywgZGVidWdnZXIvZGJnLnksCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9tc3ZjcnQvZXhjZXB0LmM6CglQZXRlciBIdW5uaXNldHQgPHBldGVyQHRyYW5zZ2FtaW5nLmNvbT4KCU5ldyBmaWxlIG1zdmNydC9leGNwdC5oLiBNb3ZlIHNvbWUgc3R1ZmYgb3V0IG9mIHdpbm50LmggaW50byBpdC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCVByZXZlbnQgbG9jay11cCB3aXRoIGEgZm9jdXMgbG9vcCBiZXR3ZWVuIHR3byB0b3AgbGV2ZWwgdW5tYW5hZ2VkCgl3aW5kb3dzLgoKCSogaW5jbHVkZS90c194bGliLmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIFhWaXN1YWxJREZyb21WaXN1YWwgdG8gdHN4MTEgbGlzdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUxWTV9HZXRJdGVtUmVjdCBzaG91bGQgbm90IHRha2UgdGV4dCBzaXplIGluIGFjY291bnQgZm9yIExWSVJfTEFCRUwgaW4KCXJlcG9ydCBtb2RlLgoKMjAwMi0wMi0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2ZpbGUuYzoKCUdlcmhhcmQgVy4gR3J1YmVyIDxzcGFyaGF3a0BnbXguYXQ+CglNb3ZlRmlsZUV4IG5vdyBlbnRlcnMgdGhlIGZpbGVzIGluIHRoZSByZWdpc3RyeSB3aGVuIHRoZSBib290IGRlbGF5CglmbGFnIGlzIHNldC4KCgkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgd2luZG93cy9pbnB1dC5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVBldGVyIEh1bm5pc2V0dCA8cGV0ZXJAdHJhbnNnYW1pbmcuY29tPgoJRml4IHJldHVybiB0eXBlIG9mIEdldEFzeW5jS2V5U3RhdGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUltcGxlbWVudCBtdWx0aWxpbmUgbGFiZWxzIGluIHRoZSBMYXJnZSBJdGVtIHZpZXcgYnkgdXNpbmcgRHJhd1RleHQKCU5vdGUgdGhhdCB0aGlzIG5vdyBoaWdobGlnaHRzIHdlYWtuZXNzZXMgaW4gdGhlIGxhYmVsIG1lYXN1cmluZyBjb2RlCglldGMuIHdoaWNoIGNhbm5vdCBjb3JyZWN0bHkgaGFuZGxlIG11bHRpbGluZSBsYWJlbHMuCgoJKiBkbGxzL29sZTMyL21hcnNoYWwuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQ29tcGlsZSBmaXggZm9yIEdDQyAyLjcueC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCVBldGVyIEh1bm5pc2V0dCA8cGV0ZXJAdHJhbnNnYW1pbmcuY29tPgoJQWRkIHNwZWMgc3R1YiBmb3IgUnRsR2V0TnRWZXJzaW9uTnVtYmVycy4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJQ2hhbmdlIHVzZWxlc3Mgd2FybmluZyBpbnRvIGEgVFJBQ0UuCgoJKiBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwgZGxscy9tc3ZjcnQvZXhpdC5jOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglhdGV4aXQgZG9lc24ndCB0YWtlIGEgX29uZXhpdF90IHBhcmFtZXRlci4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVJlbWVtYmVyIHRoZSBjdXJyZW50bHkgYWN0aXZlIGluZGV4IGJlZm9yZSByZWZyZXNoaW5nLgoKMjAwMi0wMi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L01ha2VmaWxlLmluLCBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2Y3J0L2V4aXQuYywKCSAgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLAoJICBkbGxzL21zdmNydC9sb2NrLmMsIGRsbHMvbXN2Y3J0L21haW4uYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9tdGRsbC5oOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglBZGQgX2xvY2ssX3VubG9jayBhbmQgaGVhZGVyIGZpbGUgZm9yIHRoZW0uCglDb252ZXJ0IGFsbCBtc3ZjcnQgbG9ja3Mgb3ZlciB0byB1c2UgX2xvY2sgYW5kIF91bmxvY2suCglFeHBsaWNpdGx5IG1ha2UgbXN2Y3J0IGNvbXBpbGUgd2l0aCBtdWx0aXRocmVhZGVkIG9wdGlvbi4KCUZpeCBmbGFnIGhhbmRsaW5nIGluIF9zb3Blbi4gQWRkIFctPkEgY2FsbCBmb3IgbmV3IF9zd29wZW4uCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglBdm9pZCBhc3NlcnQgZm9yIHZlcnkgbGFyZ2UgQysrIC5zbyBmaWxlcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJUGV0ZXIgSHVubmlzZXR0IDxwZXRlckB0cmFuc2dhbWluZy5jb20+CglGaXggSUNPTV9ERUZJTkUgZm9yIEMrKy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsCgkgIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEZvcndhcmQgb3JkaW5hbHMgNDAsIDQxLCAxNDMsIDM2MiB0byBhcHByb3ByaWF0ZSByb3V0aW5lcy4KCS0gSW1wbGVtZW50IG9yZGluYWxzIDE1NSwgMzUwLCAzNTEsIDM1MiwgNDE4LCA0MzYuCgktIEZha2UgaW1wbGVtZW50YXRpb24gb2YgU0hHZXRJbnZlcnNlQ01BUC4KCS0gU3R1YiBvcmRpbmFsIDIwOS4KCS0gRml4IGRlZmluaXRpb24gb2Ygb3JkaW5hbCA3LgoJLSBJbXBsZW1lbnQgU0hHZXRUaHJlYWRSZWYgYW5kIFNIU2V0VGhyZWFkUmVmLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggcHJvYmxlbXMgaW4gRFBBX01lcmdlIGV4cG9zZWQgYnkgcHJldmlvdXMgY29kZSBjbGVhbnVwLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IEFkYW0gRC4gTW9zcyA8YWRhbUBnaW1wLm9yZz4KCVBhcnRpYWxseSByZXZlcnQgcHJldmlvdXMgY2hhbmdlcywgZm9yY2UgY29uZmlndXJlIHRvIHdyaXRlIGFuCglvbGQtc3R5bGUgY29uZmlnLmNhY2hlLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRHJhd1RleHQgZWxsaXBzaWZpY2F0aW9uIG9uIGFsbCBsaW5lcywgbm90IGp1c3Qgc2luZ2xlLWxpbmUuCgoyMDAyLTAyLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvbWFrZV9jdGVzdHMsIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3QsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3d0bWFpbi5jLCBpbmNsdWRlL3dpbmUvdGVzdC5oLAoJICBkbGxzL01ha2VkbGwucnVsZXMuaW4sIE1ha2UucnVsZXMuaW46CglQcmVsaW1pbmFyeSB2ZXJzaW9uIG9mIHRoZSBDIHVuaXQgdGVzdHMgcnVuLXRpbWUgZW52aXJvbm1lbnQuCglBZGRlZCBtYWtlIHJ1bGVzIGZvciBidWlsZGluZyBhbmQgcnVubmluZyBDIHVuaXQgdGVzdHMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL2xjYy5oLAoJICBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmg6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCS0gbWFkZSBub3RlcGFkIGNvbXBpbGUgd2l0aCBDeWd3aW4KCS0gbWFkZSBjaGFuZ2VzIHRvIHRoZSBwcmVjb21waWxlciBkaXJlY3RpdmVzIHRvIGNoZWNrIGZvciBzcGVjaWZpYwoJICBmZWF0dXJlcyBpbnN0ZWFkIG9mIGNoZWNraW5nIGZvciB0aGUgZW52aXJvbm1lbnQgdmVyc2lvbi4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCURyYXd0ZXh0IHRpZHlpbmcgdXAgcmVhZHkgZm9yIHRoZSBuZXh0IGJpZyBjaGFuZ2U6CgktIEZpeCBicmFpbmZhZGUgaW4gcHJldmlvdXMgZGVsdGEKCS0gTW92ZSBlbGxpcHNpZmljYXRpb24gcmVzdWx0cyB0byBzdGF0aWMgbWVtb3J5OyB0aGV5IGFyZSBnb2luZyB0bwoJICBoYXZlIHRvIGJlIHJlZmVyZW5jZWQgaW5zaWRlIE5leHRMaW5lVyBhbmQgdGhlIGFyZyBsaXN0IGlzIHRvbyBiaWcKCSAgYWxyZWFkeS4KCS0gQWRkIHRoZSBtaXNzaW5nIGVsbGlwc2lmaWNhdGlvbiByZXN1bHQgKGxlbl91bmRlcikgdG8gc2ltcGxpZnkgY29kaW5nLgoJLSBTbGlnaHQgY29ycmVjdGlvbiB0byBwcmVmaXggdHJhY2tpbmcgZm9yIHdoZW4gdGhlcmUgYXJlIHNldmVyYWwKCSAgdW5kZXJsaW5lZCBjaGFyYWN0ZXJzIG9uIGEgc2luZ2xlIGxpbmUgKERUX0VYUEFORFRBQlMgb25seSkuCgktIEFsbG9jYXRlIGFuZCBmcmVlIHRoZSB0ZW1wb3JhcnkgY29weSByZXF1aXJlZCBmb3IgRFRfTU9ESUZZU1RSSU5HCgkgIHJhdGhlciB0aGFuIHVzaW5nIGEgZml4ZWQgc2l6ZSBzdGFjayBhcnJheS4KCS0gSW50cm9kdWNlIGxhc3RsaW5lIGludG8gdGhlIG1haW4gbG9vcDsgaXQgc2ltcGxpZmllcyB0aGUgY29kZSBhbmQgd2UKCSAgYXJlIGdvaW5nIHRvIG5lZWQgaXQuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUHJvdGVjdCBQYXRoSXNVTkNTZXJ2ZXJTaGFyZSBmcm9tIG51bGwgbHBzelBhdGguCgoyMDAyLTAyLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgZGxscy9rZXJuZWwvY29tbS5jLCBjb25maWd1cmUuYWMsIGNvbmZpZ3VyZToKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLi5jb20+CglTdXBwb3J0IGZvciBub25zdGFuZGFyZCBiYXVkIHJhdGUgaW4gU2V0Q29tbVN0YXRlLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC9EYS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9EZS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Fbi5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Fcy5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9GaS5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Gci5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9Tay5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9Tdy5yYywgcHJvZ3JhbXMvbm90ZXBhZC9XYS5yYywKCSAgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsCgkgIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQucmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHBhcnNpbmcgb2YgZmlsZSBuYW1lLCBwYXNzZWQgaW4gY29tbWFuZCBsaW5lLCBsb2FkaW5nIG5ldwoJZmlsZSBvbiBzdGFydHVwLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWM6CglTdGVmYW4gTGVpY2h0ZXIgPFN0ZWZhbi5MZWljaHRlckBjYW1MaW5lLmNvbT4KCUFkZGVkIHR3byBtaXNzaW5nIGV4cG9ydHMuCgoJKiBjb250cm9scy9zY3JvbGwuYzoKCVBoaWxsaXAgRXpvbHQgPGV6b2x0QHBlcmYuemtvLmRlYy5jb20+CglGaXhlZCB0aGUgc2Nyb2xsYmFyIHBvc2l0aW9uIG92ZXJmbG93cyB1c2luZyBNdWxEaXYuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglPbmRyZWogTWFjZWsgPHhtYWNla0BpbmZvcm1hdGljcy5tdW5pLmN6PgoJRml4IG9mIExpc3RWaWV3IGludmFsaWRhdGlvbiBpbiBMSVNUVklFV19TZXRCa0NvbG9yLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUhDUl9HZXREZWZhdWx0SWNvbiBzaG91bGQgc2V0IGljb24gbnVtYmVyIHRvIDAgaWYgaXQncyBtaXNzaW5nIGZyb20KCXRoZSByZWcgZW50cnkuCgoJKiB0b29scy93aW5laW5zdGFsbDogQWRhbSBELiBNb3NzIDxhZGFtQGdpbXAub3JnPgoJTWFrZSB3aW5laW5zdGFsbCB3b3JrIGluIHRoZSBuZXctYXV0b2NvbmYtdmVyc2lvbiB3b3JsZC4KCgkqIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL3F1YXJ0ei9hdWRyZW4uaCwgZGxscy9xdWFydHovYmFzZWZpbHQuaCwKCSAgZGxscy9xdWFydHovYmFzZXBpbi5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5jLCBkbGxzL3F1YXJ0ei9wYXJzZXIuYywKCSAgZGxscy9xdWFydHovdmlkcmVuLmMsIGRsbHMvcXVhcnR6L3ZpZHJlbi5oLCBkbGxzL3F1YXJ0ei94Zm9ybS5jLAoJICBkbGxzL3F1YXJ0ei94Zm9ybS5oLCBkbGxzL3F1YXJ0ei9hc3luY3NyYy5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIHNvbWUgZGVhZGxvY2tzLgoKCSogZGxscy9hdmlmaWwzMi9pYXN0cmVhbS5jLCBkbGxzL2F2aWZpbDMyL2lnZnJhbWUuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlcyBmb3IgY29tcGF0aWJpbGl0eS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9zeXN0ZW0uaW5pOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIG1zcmxlMzIuZGxsIChkZWNvbXByZXNzb3Igb2YgTVJMRSkuCgoJKiBkbGxzL21zcmxlMzIvbXNybGUzMi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIGJ1Z3MgaW4gcHJvY2Vzc2luZyBERUxUQS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNoYW5nZSB0aGUgd2F5IHRoYXQgRHJhd1RleHQgcGFyc2VzIHRoZSBuZXh0IGxpbmUgdG8gZGlzcGxheSwgcmVhZHkgdG8KCXN1cHBvcnQgbXVsdGlsaW5lIGVsbGlwc2lmaWNhdGlvbiBldGMuICBSYXRoZXIgdGhhbiBtZWFzdXJpbmcgdGhlIHRleHQKCWVhY2ggdGltZSB3ZSBhZGQgYSBjaGFyYWN0ZXIgYW5kIGJyZWFraW5nIG9uY2UgaXQgaXMgdG9vIGxvbmcgYW5kCglXT1JEQlJFQUsgaXMgZW5hYmxlZCwgd2UgY29weSBhIHdob2xlIHRleHQgc2VnbWVudCBhbmQgdGhlbiBtZWFzdXJlCglpdDsgR2V0VGV4dEV4dGVudFBvaW50RXggaXMgZGVzaWduZWQgdG8gdGVsbCB1cyBob3cgbXVjaCBmaXR0ZWQuICBUaGlzCgltYXkgcmVzdWx0IGluIGEgbGl0dGxlIHJlc2Nhbm5pbmcgaWYgd29yZGJyZWFrIGlzIGVuYWJsZWQgYnV0IHdpbGwgYmUKCXdlbGwgd29ydGggd2hpbGUgd2hlbiBtdWx0aWxpbmUgcGF0aCBlbGxpcHNpZmljYXRpb24gaXMgYnJvdWdodCBkb3duCglpbnRvIHRoZSBOZXh0TGluZSBmdW5jdGlvbi4gIE5vdGUgYWxzbyB0aGF0IHRoZSB3b3JkYnJlYWsgY2FsY3VsYXRpb24KCWlzIGEgbGl0dGxlIG1vcmUgY29tcGxldGUgKGUuZy4gIGluY2x1ZGluZyBicmVhay13aXRoaW4td29yZCBmb3IKCURUX0VESVRDT05UUk9MKS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJUGF0cmljayBIYWxsZXIgPHBhdHJpY2suaGFsbGVyQGlubm90ZWsuZGU+CglGaXggY3Jhc2ggaW4gVmFyaWFudFRpbWVUb0Rvc0RhdGVUaW1lLgoKCSogZGxscy9vbGUzMi9jbGlwYm9hcmQuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJTXVzdCBtYWtlIGEgY29weSBvZiBnbG9iYWwgaGFuZGxlIHJldHVybmVkIGJ5IEdldENsaXBib2FyZERhdGE7IGl0IGlzCglub3QgdmFsaWQgYWZ0ZXIgd2UgY2FsbCBDbG9zZUNsaXBib2FyZC4gQXBwbGljYXRpb24gaXMgcmVzcG9uc2libGUgZm9yCglmcmVlaW5nIHRoZSBtZW1vcnkgKGZpeGVzIGNvcHkvcGFzdGUgaW4gbWFpbCBib2R5IGluIEZvcnRlIEFnZW50KS4KCjIwMDItMDItMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9tYWtlZGVwLmM6CglNb2RpZmllZCBtYWtlZGVwIHRvIGhhbmRsZSAjaW5jbHVkZSA8PiBjb3JyZWN0bHkgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCVBhdHJpayBTdHJpZHZhbGwpLgoKCSogZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hkb2N2dy9NYWtlZmlsZS5pbiwKCSAgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbmV0YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLAoJICBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NyeXB0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLAoJICBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzb21lIGRlZmluZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5kb3dzIGhlYWRlcnMuCgoJKiB3aW5kb3dzL3dpbi5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglDb252ZXJ0IHNvbWUgaW52YWxpZCBvZmZzZXRzIGluIEdldFdpbmRvd0xvbmcxNiBpbnRvIHZhbGlkIG9mZnNldHMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglNZWFzdXJlIHRoZSB0ZXh0IG1vcmUgcmVhc29uYWJseS4gVGhpcyBoYW5kbGVzIGludGVyY2hhcmFjdGVyIHNwYWNpbmcKCWFuZCBzaG91bGQgaGFuZGxlIGFueSBrZXJuaW5nIGV0Yy4gdGhhdCBtaWdodCBoYXBwZW4uIEFsc28gZW5zdXJlIG5vCgl3b3JkYnJlYWtpbmcgb24gc2luZ2xlbGluZSB0ZXh0LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJQWRkZWQgYSBrZXlib2FyZCBtYXRjaGVkIHRvIFZOQy4KCgkqIGluY2x1ZGUvbnRkZGsuaDogUm9uIEdhZ2UgPHJvbkByb25nYWdlLm9yZz4KCUFkZGVkIHNldmVyYWwgc3RydWN0dXJlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUluIFNIRmlsZU9wZXJhdGlvbigpIHdoZW4gcmVxdWVzdGVkIHRvIGNvcHkgZmlsZXMsIGZpZ3VyZSBvdXQgd2hlbiB0aGUKCWRlc3RpbmF0aW9uIGlzIHRvIGJlIHRyZWF0ZWQgYXMgYSBkaXJlY3RvcnkgYW5kIGhhbmRsZSB0aG9zZSBjYXNlcy4KCgkqIGNvbmZpZ3VyZS5hYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUZpeGVkIGluc3RhbGxhdGlvbiBpc3N1ZXMgY2F1c2VkIGJ5IG5ldyBjb25maWd1cmUgc2NyaXB0LgoKMjAwMi0wMi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCBtaXNjL29wdGlvbnMuYzoKCXZlcnNpb24uaCBpcyBub3cgaW4gaW5jbHVkZS93aW5lIGRpcmVjdG9yeS4KCgkqIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL21ha2VkZXAuYywgdG9vbHMvd2luZWxhdW5jaGVyLmluLAoJICBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLAoJICBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4sCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS92ZXJzaW9uLmgsIGluY2x1ZGUvd2luZS8uY3ZzaWdub3JlLAoJICBjb25maWd1cmUuYWMsIGNvbmZpZ3VyZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIFZFUlNJT04sCgkgIGNvbmZpZ3VyZToKCVVwZ3JhZGVkIGNvbmZpZ3VyZSBzY3JpcHQgdG8gdXNlIGF1dG9jb25mIDIuNTAgZmVhdHVyZXMsIGFuZCByZW5hbWVkCgl0byBjb25maWd1cmUuYWMuCglDaGFuZ2VkIGEgZmV3IHRoaW5ncyB0byBiZXR0ZXIgZm9sbG93IHRoZSBhdXRvY29uZiBndWlkZWxpbmVzLgoKCSogdG9vbHMvY29uZmlnLmd1ZXNzLCB0b29scy9jb25maWcuc3ViOgoJVXBkYXRlZCB0byBuZXdlciB2ZXJzaW9uLgoKCSogZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJTWFydGluIERhbGVja2kgPGRhbGVja2lAZXZpc2lvbi12ZW50dXJlcy5jb20+CglTb21lIGFydHdvcmsgb24gdGhlIGRlZmF1bHQgaWNvbnMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglEcmF3VGV4dCBzaG91bGQgbm90IHNwbGl0IHdvcmRzIGp1c3QgYmVjYXVzZSBvZiBjbGlwcGluZy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gU2hlbGxFeGVjdXRlMTYsIG1ha2Ugc3VyZSB0aGVyZSBpcyBhIHNwYWNlIGJldHdlZW4gY29tbWFuZCBhbmQKCXBhcmFtZXRlcnMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglQcm90ZWN0IGFnYWluc3QgTlVMTCB3c2FkZHJsZW4gaW4gd3Nfc29ja2FkZHJfYWxsb2MuCgoyMDAyLTAyLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJU29tZSBvbGRlciB2ZXJzaW9ucyBvZiBHREIgbmVlZCB0byBoYXZlIHRoZSBmaWxlbmFtZSBkYXRhIGF2YWlsYWJsZQoJZm9yIGVhY2ggc2VjdGlvbiwgc28gd2UgbmVlZCB0byBvdXRwdXQgaXQgYWdhaW4gZm9yIHRoZSBkYXRhIHNlY3Rpb24uCgoJKiB3aW4zMi9lZGl0bGluZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgSG9tZSwgRW5kIGFuZCBFbnRlciBvbiB0aGUga2V5cGFkIHdvcmsgaW4gdGhlIGRlYnVnZ2VyLgoKCSogd2luMzIvZmlsZS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglTZXRGaWxlQXR0cmlidXRlcyByZXR1cm5zIG5vdyBhbiBlcnJvciBpZiB0YXJnZXQgZmlsZSBpcyBvbiBDRFJPTS4KCgkqIGZpbGVzL2RyaXZlLmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZGVkIG1pc3NpbmcgYnJlYWsgc3RhdGVtZW50LgoKCSogZGxscy9zaGx3YXBpL3JlZy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVBhcnRpYWxseSBpbXBsZW1lbnQgU0hSZWdXcml0ZVVTVmFsdWV7QXxXfS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVdoZW4gdGhlIGNvbW1hbmRJRCB3YXMgYmVpbmcgdHJlYXRlZCBhcyB0aGUgaW5kZXgsIG5vIGNoZWNrIGZvciBpbmRleAoJZ3JlYXRlciB0aGFuIG51bWJlciBvZiBidXR0b25zIHdhcyBkb25lLiBOb3cgZml4ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IHJlZ3Jlc3Npb24gaW4gc29tZSBwcm9ncmFtcyBkdWUgdG8gQ0xSX0RFRkFVTFQgZml4LiBOb3RpY2VkIGluCgljb250cm9sLXNweSByZWJhci5leGUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IFRvQXNjaWkvVG9Vbmljb2RlIHRvIHdvcmsgd2l0aCBzY2FuQ29kZSA9IDAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ29ycmVjdCB0ZXN0cyBpbnZvbHZlZCB3aXRoIHByb2Nlc3NpbmcgdGhlIExWSUZfRElfU0VUSVRFTSBmbGFnLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW5pdGlhbGl6ZSBwc3pUZXh0IHRvIDAgZm9yIGludGVybmFsIC0+Y2VJdGVtIHRvIGVsaW1pbmF0ZSBtb3ZlcyB0bwoJZ2FyYmFnZSBsb2NhdGlvbnMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGRlZmF1bHQgZnVuY3Rpb24gbWFyc2hhbGxlciByZWdpc3RyeSBlbnRyeS4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVB1dCBpbiBwbGFjZSBhIHByb3BlciB0YWIgbW9kZWwgd2l0aGluIERyYXdUZXh0IChhbHNvIGluY2x1ZGVzCglzaW1wbGlmeWluZyBURVhUX05leHRMaW5lVyB0byByZW1vdmUgZHVwbGljYXRlIGNvZGUpLgoKMjAwMi0wMi0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZjcnQvZmlsZS5jOgoJQy4gU2NvdHQgQW5hbmlhbiA8Y2FuYW5pYW5AbGVzc2VyLW1hZ29vLmxjcy5taXQuZWR1PgoJRmlsbGVkIG91dCB0aGUgaW1wbGVtZW50YXRpb24gb2YgZnNjYW5mIGFuZCBfY3NjYW5mLgoKCSogZGxscy9tc2FjbS9pbnRlcm5hbC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWcgaW4gY2FjaGUgaW5pdC4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSB0aGUgc3VwcGxpZWQgYnVmZmVyIHdoZW4gY29weWluZyBpdGVtIHRleHQuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IFBBTl9GQU1JTFlTVFlMRV9JTkRFWCBuYW1lLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglXZSBuZWVkIGZ0dHJpZ29uLmgsIHNvIGRvbid0IGRlZmluZSBIQVZFX0ZSRUVUWVBFIGlmIHdlIGRvbid0IGhhdmUgaXQuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJRml4IG9mZi1ieS1vbmUgZXJyb3IgaW4gcGxhY2luZyB0cmFpbGluZyBcMC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzoKCU9yaSBQZXNzYWNoIDxvcmlfcGVzc2FjaF9ibGFoQHlhaG9vLmNvbT4KCVNldCBXU19FWF9UT09MV0lORE9XIGluIGEgdG9vbHRpcCdzIGR3RXhTdHlsZS4KCjIwMDItMDItMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgcmV0dXJuIG92ZXJmbG93IGlmIG5vIGNsYXNzIGJ1ZmZlciB3YXMgc3BlY2lmaWVkLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJR2VyaGFyZCBHcnViZXIgPHNwYXJoYXdrQGdteC5hdD4KCVdyaXRlUHJpdmF0ZVByb2ZpbGVTZWN0aW9uIHNob3VsZCBhbGxvdyB0byBjcmVhdGUgZHVwbGljYXRlIGtleXMKCWJlY2F1c2UgaXQgdGFrZXMgdGhlIGJ1ZmZlciBhcyBpdCBpcyB3aXRob3V0IGFueSBtb2RpZmljYXRpb25zLgoKCSogZGxscy94MTFkcnYvc2Nyb2xsLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglJbiBYMTFEUlZfU2Nyb2xsREMgb25seSBtb3ZlIHBpeGVscyB0aGF0IGFyZSB3aXRoaW4gdGhlIGNsaXAKCXJlY3RhbmdsZSwgYmVmb3JlIGFuZCBhZnRlciB0aGV5IGFyZSBzY3JvbGxlZC4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglGaXggZm9yIEdldE5lYXJlc3RDb2xvciBzbyBpdCByZXR1cm5zIHRoZSB0cnVlIGNvbG9yIHJhdGhlciB0aGFuIHRoZQoJc3lzdGVtIHBhbGV0dGUgaWYgdGhlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IGEgcGFsZXR0ZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1pc2MgZml4ZXM6CgktIGNhY2hlIHRleHQgbWV0cmljcyBmb3IgdGhlIGZvbnQgd2UncmUgdXNpbmcKCS0gaW1wcm92ZWQgaXRlbSBoaXQgZGV0ZWN0aW9uCgktIG1vcmUgZGVidWdnaW5nIG91dHB1dAoJLSBpbXBsZW1lbnQgTFZNX1NFVElDT05TUEFDSU5HCgktIGxvdHMgb2YgYnVncyBzcXVhc2hlZAoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3RtYXJzaGFsLmMsCgkgIGRsbHMvb2xlYXV0MzIvdG1hcnNoYWwuaCwgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9tYXJzaGFsLmMsCgkgIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9vbGVwcm94eS5jLCBkbGxzL29sZTMyL3JwYy5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9NYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgTG9jYWwgU2VydmVyIENPTS4KCUltcGxlbWVudGVkIHRoZSBUeXBlbGliIGJhc2VkIE1hcnNoYWxlci4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGluY2x1ZGUvYmFzZXRzZC5oLCBpbmNsdWRlL250ZGRrLmgsCgkgIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3BvcHBhY2suaCwgaW5jbHVkZS9wc2hwYWNrMS5oLAoJICBpbmNsdWRlL3BzaHBhY2syLmgsIGluY2x1ZGUvcHNocGFjazQuaCwgaW5jbHVkZS9wc2hwYWNrOC5oLAoJICBpbmNsdWRlL3JwY2RjZS5oLCBpbmNsdWRlL3JwY25kci5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNU1ZDIGNvbXBpbGUgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIFBST0dSRVNTX1JlZnJlc2gsIGFsd2F5cyBkbyBJbnZhbGlkYXRlUmVjdCgpIHRvIHJlcGFpbnQuCglBZGQgV01fRVJBU0VCS0dORCBoYW5kbGVyIGFzIGluIFdpbmRvd3MuCglCZSBzbGlnaHRseSBzbWFydGVyIHdoZXRoZXIgaW52YWxpZGF0ZSBiYWNrZ3JvdW5kIG9yIG5vdC4KCUFsd2F5cyB0cmVhdCB3UGFyYW0gYXMgSU5UIHRvIG5vdCBsb3NlIHNpZ25lZCB2YWx1ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVZhcmlvdXMgY2xlYW51cHM6CgktIGdldCByaWQgb2YgdGhlIHN0YXRpYyBkYXRhIG1lbWJlcgoJLSBwYXNzIHRoZSBpbmZvUHRyIGFyb3VuZCBpbnN0ZWFkIG9mIHRoZSBod25kCgktIGZpeCBpbmRlbnRhdGluL3N0eWxlIGEgYml0IHRvIG1ha2UgaXQgY29uc2lzdGVudCB3aXRoIHRoZSByZXN0IG9mCgkgIHRoZSBmaWxlLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJU3BsaXQgdGhlIHBhdGggYW5kIHdvcmQvZW5kIGVsbGlwc2lmaWNhdGlvbiBvdXQgb2YgdGhlIG1haW4gZnVuY3Rpb24KCWFuZCBkbyB0aGVtIHRob3JvdWdobHkuIFRoZSBleGlzdGluZyBtZXRob2Qgd291bGQgYmUgaW5jb3JyZWN0IHdoZXJlCgl0YWJzIHdlcmUgaW52b2x2ZWQgYW5kIGluIHNvbWUga2VybmluZyBzaXR1YXRpb25zLgoKMjAwMi0wMi0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJU3VwcG9ydCBmb3IgZ2VuZXJhdGlvbiBvZiAuZGVmIGZpbGVzIGZyb20gLnNwZWMgZmlsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJQ29tcGxldGUgTGlzdHZpZXcgVW5pY29kaWZpY2F0aW9uLgoJU2ltcGxpZnkgdGhlIHNldHRpbmcgb2YgKHN1YilpdGVtIHRleHQgYnkgdXNpbmcgY29tbW9uIGNvZGUuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLCBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uX3ByaXZhdGUuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl91c2VyLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0VuLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Gci5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gd2luZWNvbnNvbGUgbm93IGV4aXRzIGlmIHRoZSBzdGFydGVkIHByb2dyYW0gaW5zaWRlIGl0IHRlcm1pbmF0ZXMKCSAgYmVmb3JlIHRoZSBjb25zb2xlIGFjdHVhbGx5IHN0YXJ0cyB1cC4KCS0gUmVtb3ZlZCB0aGUgbGFzdCBBbnNpIGltcG9ydGVkIEFQSXMgc2luY2Ugbm93IFByb3BzaGVldCBoYXMgYSBkZWNlbnQKCSAgVW5pY29kZSBpbnRlcmZhY2UuCgktIEZpeGVkIGEgY291cGxlIG9mIG1lbnUgcmVsYXRlZCBidWdzIChzdGF0ZXMgd2VyZSB3cm9uZykuCgktIEZpbmlzaGVkIGlucHV0IHNlbGVjdGlvbiBjb2RlIChtYXJrIGFuZCBrZXkgZm9yIHNlbGVjdGlvbiBtb3ZpbmcgYXJlCgkgIG9wZXJhdGlvbmFsLCBnZW5lcmF0aW5nIG1vdXNlIGV2ZW50cyB0byBwcm9ncmFtcyBhdHRhY2hlZCB0byB0aGUKCSAgY29uc29sZSkuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwKCSAgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9zb3VyY2UuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBiYWQgYmVoYXZpb3Igd2hlbiBtYW55IHN5bWJvbHMgd2l0aCBzYW1lIG5hbWVzIHdoZXJlIGZvdW5kLgoJUmVtb3ZlZCBleHRlcm5hbCByZWFkbGluZSBzdXBwb3J0LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGltcGxlbWVudGF0aW9uIG9mIFNldEl0ZW1XLgoKCSogZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTdG9yaW5nIGFuIElQIGFkZHJlc3MgaW4gYSBzaWduZWQgaW50IHJlc3VsdHMgaW4gYnVncyBpZiBpdCBzdGFydHMKCXdpdGggPj0xMjguCgoJKiBtZW1vcnkvY29kZXBhZ2UuYywgb2xlL29sZTJubHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZWltcGxlbWVudCBHZXRTdHJpbmdUeXBlQSBhbmQgR2V0U3RyaW5nVHlwZUV4QS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFsdGUgU3Rhcm9zdGlrIDxtYWx0ZUBrZGUub3JnPgoJRG8gbm90IGRlc3Ryb3kgSVR5cGVMaWIgaGVsZCBieSBJVHlwZUluZm8gYmVmb3JlIHRoZSBsYXR0ZXIgaXMgZnJlZWQuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVlRfRU1QVFkgY2FuIGJlIGNvZXJjZWQgdG8gVlRfSTQsIHZhbHVlIDAuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgc3R5bGUgY29ycmVjdGluZyBjb2RlIHRvIHRoZSBXTV9DUkVBVEUgaGFuZGxlciBhbmQgYWRkZWQKCWNsZWFyaW5nIG9mIFdTX0VYX0NMSUVOVEVER0UgYW5kIFdTX0VYX1dJTkRPV0VER0UgYXMgaW4gV2luZG93cy4KCUFkZGVkIFNldFdpbmRvd1BvcyhTV1BfRlJBTUVDSEFOR0VEKSB0byBtYWtlIGNoYW5nZXMgdGFrZSBlZmZlY3QuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUd1eSBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJVXNlIEdldFN5c3RlbU1ldHJpY3MoKSB0byBmb3IgY2FwdGlvbiBtZXRyaWNzIGluIE5PTkNMSUVOVE1FVFJJQ1MKCXN0cnVjdC4gSW5pdGlhbGl6ZSBpU2Nyb2xsV2lkdGggYW5kIGlTY3JvbGxIZWlnaHQgZW50cmllcyBmb3IKCVNQSV9HRVROT05DTElFTlRNRVRSSUNTLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeCBwcm9ibGVtIGV4cG9zZWQgYnkgdGhlIGltcHJvdmVtZW50cyBpbiB2ZXJzaW9uIDhiLiBEZW1vbnN0cmF0ZWQgYnkKCU9FIDQuCgoyMDAyLTAyLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kZWZ3bmQuYywgb2JqZWN0cy9wYWxldHRlLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uYywKCSAgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIGxpYnRlc3QvaGVsbG81LmMsCgkgIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywKCSAgZGxscy93aW5zcG9vbC9pbmZvLmMsIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwKCSAgZGxscy93aW5lcHMvZHJpdmVyLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYywgZGxscy93aW5lZG9zL3ZnYS5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3VuZG9jc2hlbGwuaCwKCSAgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbXNhY20vd2luZWFjbS5oLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLCBkbGxzL2dkaS9wcmludGRydi5jLAoJICBkbGxzL2ltbTMyL2ltbV9wcml2YXRlLmgsIGRsbHMva2VybmVsL3N0cmluZy5jLAoJICBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywKCSAgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLAoJICBkbGxzL2NvbWN0bDMyL3Ntb290aHNjcm9sbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlIF9fc3RkY2FsbC9fX2NkZWNsIHRvIHRoZSByaWdodCBwbGFjZS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3QsIE1ha2UucnVsZXMuaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWFkZSBydW50ZXN0ICJ1c2Ugc3RyaWN0Ii4KCS0gQWRkZWQgbmV3IG9wdGlvbiAtTSB0byBzcGVjaWZ5IHdoaWNoIG1vZHVsZXMgc2hvdWxkIGJlIHRlc3RlZCBhcwoJICBidWlsdGluLgoKCSogbGlidGVzdC92YXJ0ZXN0LmMsIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5jLCBkbGxzL3dpbmVwcy9ta2FnbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CgltYWxsb2MuaCBpcyBvYnNvbGV0ZSBhbmQgc3RkbGliLmggc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KCgkqIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5jOgoJV2UgY2FuIHVzZSBub3JtYWwgaW1wb3J0cyBmb3Igc2hlbGwzMiBub3cuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglFbnN1cmUgdGhhdCB0aGUgd2hvbGUgbW9kaWZpZWQgdGV4dCBpcyByZXR1cm5lZCBmcm9tIERyYXdUZXh0RXhBLgoKCSogbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsCgkgIGRsbHMvZ2RpL2RyaXZlci5jOgoJRG8gbm90IHVzZSB0aGUgUEVCIGxvY2sgYXMgbG9hZGVyIGxvY2ssIHVzZSBhIHNlcGFyYXRlIGNyaXRpY2FsCglzZWN0aW9uIGZvciB0aGF0IChhbmQgZm9yIHRoZSBncmFwaGljcyBkcml2ZXJzKS4KCgkqIHRvb2xzL3dpbmVkdW1wL21zbWFuZ2xlLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsCgkgIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy91c2VyL2RkZS9jbGllbnQuYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsCgkgIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeGVkIHNvbWUgbW9yZSBtaXNzaW5nIHBhcmVudGhlc2lzIGlzc3Vlcy4KCgkqIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gYWRkIGRvY3VtZW50YXRpb24gc2VjdGlvbiB0byBSRUFETUUKCS0gdXBkYXRlZCBIT1dUTy13aW5lbGliCgktIGFkZGVkIG5hdGl2ZSBETEwgY29uZmlnIGluZm8gdG8gY29uZmlndXJpbmcuc2dtbAoJLSBncmVhdGx5IGltcHJvdmUgZGlyZWN0b3J5IGRlc2NyaXB0aW9uIG9mIHdpbmUuY29uZiBtYW4gcGFnZQoJLSBhZGQgLS1kZWJ1Z21zZyArYWxsIHdhcm5pbmcgdG8gd2luZSBtYW4gcGFnZQoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRmxpcCBBPC0+VyBjb252ZXJzaW9uIGluIGRpc3BpbmZvX25vdGlmeVQuCgoyMDAyLTAyLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0byBHZXRJdGVtVyB0byBzdG9wIHdoaXBpbmcgb3V0IHRoZSBpdGVtcyB0ZXh0LgoKCSogcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS54czoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJY29uZmlnLmggc2hvdWxkIGJlIGluY2x1ZGVkIGZpcnN0IChpZiBhdCBhbGwpLgoJRml4IHJldHVybiBvZiBjb252ZXJ0X3ZhbHVlLgoKCSogZGxscy90YXBpMzIvbGluZS5jLCBpbmNsdWRlL3RhcGkuaDoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglEb24ndCB0cnkgdG8gc2V0IGZpZWxkcyBpbiBub25leGlzdGFudCBscExpbmVDb3VudHJ5TGlzdC4KCVN1cHBseSB2YWxpZCB0YXBpIGNvZGVzLgoKMjAwMi0wMS0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9hdG9tLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCUFsbG93IGludGVnZXIgYXRvbXMgaW4gc2V0X3Byb3BlcnR5IGFuZCByZW1vdmVfcHJvcGVydHkuIE5lZWRlZCBieQoJRmluZFRleHQgY29tbW9uIGRpYWxvZy4KCgkqIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJTE9BRF9MSUJSQVJZX0FTX0RBVEFGSUxFIG1vZHVsZXMgbXVzdCBiZSBtYXBwZWQgbGlrZSBub3JtYWwgZmlsZXMsIG5vdAoJbGlrZSBQRSBpbWFnZXMuIEZpeGVkIHJlc291cmNlIGxvYWRpbmcgdG8gaGFuZGxlIHRoYXQuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwKCSAgaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLAoJICBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsCgkgIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS9uZXRzcGkuaCwgaW5jbHVkZS9vbGUuaCwKCSAgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlZGxnLmgsIGluY2x1ZGUvcHJzaHQuaCwKCSAgaW5jbHVkZS9yaWNoZWRpdC5oLCBpbmNsdWRlL3NldHVwYXBpLmgsIGluY2x1ZGUvc2hsb2JqLmgsCgkgIGluY2x1ZGUvc2hsd2FwaS5oLCBpbmNsdWRlL3RhcGkuaCwgaW5jbHVkZS90YXNrLmgsIGluY2x1ZGUvdmZ3LmgsCgkgIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmdkaS5oLAoJICBpbmNsdWRlL3dpbmluZXQuaCwgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3dpbm5scy5oLAoJICBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2luc29jazIuaCwgaW5jbHVkZS93aW5zdmMuaCwKCSAgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd3Myc3BpLmgsIGluY2x1ZGUvY2FsbGJhY2suaCwKCSAgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9kM2RjYXBzLmgsCgkgIGluY2x1ZGUvZDNkaGFsLmgsIGluY2x1ZGUvZDNkdHlwZXMuaCwgaW5jbHVkZS9kZGVtbC5oLAoJICBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGRyYXdpLmgsIGluY2x1ZGUvZGlucHV0LmgsCgkgIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvZHNvdW5kLmgsCgkgIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS9pbW0uaCwgaW5jbHVkZS9taXNjZW11LmgsCgkgIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlIF9fc3RkY2FsbC9fX2NkZWNsIHRvIHRoZSByaWdodCBwbGFjZS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHaXZlIHVzZXJzIGEgaGludCB0byBjbGVhbiB0aGVpciBjb25maWcgZnJvbSBjb21tZW50cyBhbmQgZW1wdHkgbGluZXMKCWZvciBhIGJ1ZyByZXBvcnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglBZGRlZCBtaXNzaW5nIHBhcmVudGhlc2lzIGluIFNoR2V0RmlsZUluZm9BLgoKCSogZGxscy93aW5lZG9zL2ludDIxLmM6IE5vZyA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglGaXhlZCBmdW5jdGlvbiAweGIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgaW5jbHVkZS9ycGNkY2UuaCwgd2luMzIvaW5pdC5jLAoJICBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbWFwaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zaW1nMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcnBjcnQ0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmluZXQuYXBpLCB0b29scy93aW5hcGkvbWFrZV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSB1cGRhdGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvc2Nyb2xsLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJQ29kZVdlYXZlcnMKCU1pbm9yIGZpeGVzLgoKCSogY29udHJvbHMvc3RhdGljLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCVBhaW50IGNvbnRyb2wgaW1tZWRpYXRlbHkgb24gV01fU0VUVEVYVC4KCgkqIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oOgoJQ29kZVdlYXZlcnMKCVNtYWxsIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gYmV0dGVyIHRyYWNlIG91dHB1dAoJLSBzdXBwb3J0IHN0cmluZyBzZW50IGluIGJ5IGFkZHJlc3MsIHJhdGhlciB0aGVuIGluZGV4CgktIGFkZCBGSVhNRXMgZm9yIG11bHRpcGxlIGltYWdlIGxpc3RzCgktIHByb3RlY3QgYWdhaW5zIGluZXhpc3RlbnQgYnV0dG9ucwoJLSBjYWxsIHVwIHRvIHRoZSBEZWZXaW5kb3dQcm9jIHdoZW4gZXJhc2luZyBia2duZCB3aGVuIGFwcHJvcHJpYXRlCgoJKiBkbGxzL3dpbmVkb3MvaW50MzMuYzogTm9nIDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUltcGxlbWVudCBmdW5jdGlvbiAweGIgKFJlYWQgbW91c2UgbW90aW9uIGNvdW50ZXJzKSBhbmQgMHhmIChTZXQKCW1pY2tleS9waXhlbCByYXRpbykuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CgktIEludHJvZHVjZSBhIHNpZ25pZmljYW50IGRlc2lnbiBkZWNpc2lvbi4KCS0gUmVjYWxjdWxhdGUgdGhlIHByZWZpeCBsb2NhdGlvbiBpZiBlbGxpcHNpZmljYXRpb24gYWx0ZXJzIGl0LiAgVGhpcwoJICBjYXJlZnVsbHkgZG9lcyBOT1QgZW11bGF0ZSBhIE1pY3Jvc29mdCBidWcgaW4gd2hpY2ggcmVwcmVmaXhpbmcgaXMKCSAgd3Jvbmcgd2hlbiB0aGUgZmlyc3QgY2hhcmFjdGVyIHJlbW92ZWQgYnkgZWxsaXBzaWZpY2F0aW9uIGlzIHRoZSBvbmUKCSAgdGhhdCB3b3VsZCBoYXZlIGJlZW4gdW5kZXJsaW5lZCAodW5kZXIgV2luOTggYXQgbGVhc3QpLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBDaGVja1Rva2VuTWVtYmVyc2hpcCBhbmQgR2V0QWNlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRG9uJ3QgcmVwYWludCBoZWFkZXIgd2hlbiBzY3JvbGxpbmcgYSBsaXN0dmlldyB2ZXJ0aWNhbGx5LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBmaXggb3JkZXIgb2YgcGFyYW1ldGVycyBpcyBTZW5kTm90aWZ5CgktIGFsd2F5cyB1c2UgdGhlIGRsZyBjbnRybCBJRCBvZiB0aGUgc2VuZGVyCgoJKiB3aW5kb3dzL3JlY3QuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCBOVUxMIGNoZWNrcyBvbiBhbGwgcmVjdGFuZ2xlIHBvaW50ZXJzLgoKMjAwMi0wMS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbG9hZGVyLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBMZHJEaXNhYmxlVGhyZWFkQ2FsbG91dHNGb3JEbGwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YnMgZm9yIENoZWNrRXNjYXBlc1tBV10gYW5kIEV4dHJhY3RBc3NvY2lhdGVkSWNvbkV4Vy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbG9jYXRpb24gb2YgbG9jYWwgYXBwbGljYXRpb24gZGF0YS4KCgkqIGRsbHMvbnRkbGwvc2VjLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgUnRsQWRkQWNjZXNzQWxsb3dlZEFjZSByZXR1cm4gdmFsdWUuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglBZGRlZCBzdHVicyBmb3IgTmRyRGxsQ2FuVW5sb2FkTm93IGFuZCBOZHJEbGxHZXRDbGFzc09iamVjdC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCB3aW4zMi9pbml0LmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgR2V0Q29tcHV0ZXJOYW1lRXhbQVddIHNlbWktc3R1Yi4KCgkqIGluY2x1ZGUvd2luaW5ldC5oLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2luaW5ldC91cmxjYWNoZS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBGaW5kRmlyc3RVcmxDYWNoZUVudHJ5W0FXXSBzdHVicy4KCgkqIGRsbHMvbWFwaTMyL21hcGkzMi5zcGVjLCBkbGxzL21hcGkzMi9tYXBpMzJfbWFpbi5jLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21hcGkuaCwgaW5jbHVkZS9tYXBpY29kZS5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNvbWUgTUFQSSBzdHVicy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbXN2Y3J0MjAvLmN2c2lnbm9yZSwKCSAgZGxscy9tc3ZjcnQyMC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQyMC9kdW1teS5jLAoJICBkbGxzL21zdmNydDIwL21zdmNydDIwLnNwZWMsIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgcGFzcy10aHJvdWdoIG1zdmNydDIwLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgRXh0cmFjdCBzdHViLgoKCSogaW5jbHVkZS9pbW0uaCwgZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBJbW1EaXNhYmxlSU1FIHN0dWIuCgoJKiBkbGxzL21zdmNydC9kaXIuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgX3dtYWtlcGF0aC4KCgkqIGRsbHMvd2luZWRvcy9kb3NleGUuaCwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9pbnQyMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50NjcuYywgZmlsZXMvZG9zX2ZzLmMsIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbjoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUFkZGVkIHN1cHBvcnQgZm9yIERPUyBFTVMgbWVtb3J5LgoKCSogdG9vbHMvd2luZW1ha2VyLCBkb2N1bWVudGF0aW9uL2RiMmh0bWwtd2luZWhxLAoJICBkb2N1bWVudGF0aW9uL21ha2Vfd2luZWhxLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItdG9vbGtpdC5zZ21sLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJJ3Rlc3QgLWUnIGlzIG5vdCBzdXBwb3J0ZWQgb24gU29sYXJpcywgcmVwbGFjZSB3aXRoICctZicgb3IgJy1kJy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeCBwcm9ibGVtcyB3aXRoIGxpc3R2aWV3IG5vdGlmaWNhdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3Qgd3JpdGUgYmV5b25kIGVuZCBvZiBjb2xvciB0YWJsZSBpbiBYMTFEUlZfRElCX1NldERJQkNvbG9yVGFibGUuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJLSBhZGQgbmV3IFNldFJhbmdlIGZ1bmN0aW9ucyAoaW5zdGVhZCBvZiBkdXBsaWNhdGluZyB0aGUgY29kZSkKCS0gcGFzcyB0aGUgaW5mb1B0ciBhcm91bmQgaW5zdGVhZCBvZiB0aGUgaHduZAoJLSB1c2UgVy1mdW5jdGlvbnMgaW5zdGVhZCBvZiBBLWZ1bmN0aW9ucwoJLSBtb3JlIGNoZWNrcyBpbiBjYXNlIG9mIGZhaWx1cmVzCgktIG1ha2UgaW5kZW50YXRpb24gYW5kIHN0eWxlIGNvbnNpc3RlbnQgdGhyb3VnaG91dCB0aGUgZmlsZQoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgaW5jbHVkZS9wcnNodC5oOgoJR3V5IEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUHJvcGVydHkgc2hlZXQgVW5pY29kaWZpY2F0aW9uLgoJU3VwcG9ydCBhZGRpdGlvbmFsIHdpemFyZCBmbGFncy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglDaGFybGVzIExvZXAgPGNoYXJsZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgSW1hZ2VMaXN0X1dyaXRlLgoKCSogZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCUVsaW1pbmF0ZSBzb21lIHVzZWxlc3MgZXJyb3IgbWVzc2FnZXMuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGRlZmluZSBIQVZFX0ZSRUVUWVBFIHVubGVzcyB3ZSBoYXZlIGZyZWV0eXBlLmguCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglDb3JyZWN0IG9wdGxlbiB3aGVuIFdTX3NldHNvY2tvcHQgaXMgY2FsbGVkIHdpdGggU09fTElOR0VSLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglXZWlyZCB0aGluZyB3aXRoIGxjaWQgb2YgbGlicmFyeSBpcyB0aGF0IGlmIHN1YmxhbmcgaXMgbmV1dHJhbCB0aGVuIHdlCglyZXR1cm4gdGhlIHByaW1hcnkgbGFuZyBlbHNlIHdlIHJldHVybiAwLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJR3V5IEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBmaWxsIGNvbG9ybWFwIGJleW9uZCBlbmQgb2Ygc2NyZWVuIGRlcHRoLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJQ2hhcmxlcyBMb2VwIDxjaGFybGVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGZpbGUgZXh0ZW5zaW9uIHByb2JsZW0gaW4gdGhlIGZpbGUgZGlhbG9nLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIElzQmFkU3RyaW5nUHRyQSBjYWxsIHRoYXQgY2F1c2VkIHRyb3VibGUuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQ2hhcmxlcyBMb2VwIDxjaGFybGVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBlcnJvcnMgcmVzdWx0aW5nIGZyb20gbWlzc2luZyBwYXJlbnRoZXNpcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJVGV4dC9Ca2duZCBjb2xvciBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglTaW1wbGlmeSBhbmQgZml4IGxpc3R2aWV3IGVsbGlwc2lmaWNhdGlvbiBvZiBsYXJnZSB0ZXh0IGxhYmVscy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJWEZPTlRfR2V0QXZnQ2hhcldpZHRoOiBBbHdheXMgcm91bmQgdXAuCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9ydW50ZXN0OiBGaXhlZCBjb3B5L3Bhc3RlIGJ1Zy4KCgkqIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgbXNkb3MvZG9zbWVtLmMsCgkgIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwKCSAgZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLAoJICBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsCgkgIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9tc3ZjcnQvZmlsZS5jLAoJICBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLAoJICBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvZWRpdC5jLAoJICBjb250cm9scy9tZW51LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTWFrZSBGSVhNRXMgbW9yZSBncmVwLWFibGUuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglBdm9pZCBjb252ZXJ0aW5nIG5vbmV4aXN0ZW50IHRleHQgZnJvbSBBLT5XLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZHJ2LmgsCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZGxscy94MTFkcnYveHJlbmRlci5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZXMgWHJlbmRlciBleHRlbnNpb24gdG8gYWxsb3cgY2xpZW50IHNpZGUgZm9udCByZW5kZXJpbmcuCglBZGRzIG5pY2UgdGhpbmdzIGxpa2UgYW50aS1hbGlhc2VkIHRleHQuCgoJKiBkbGxzL3gxMWRydi8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lY29uc29sZS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbnNvY2svLmN2c2lnbm9yZSwgZGxscy93aW5zcG9vbC8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93YXZlbWFwLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vbWNpc2VxLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpd2F2ZS8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL21pZGltYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2lhdmkvLmN2c2lnbm9yZSwKCSAgZGxscy93aW5tbS9tY2ljZGEvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9qb3lzdGljay8uY3ZzaWdub3JlLAoJICBkbGxzL3dpbm1tL21jaWFuaW0vLmN2c2lnbm9yZSwgZGxscy93aW5hc3BpLy5jdnNpZ25vcmUsCgkgIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW4zMnMvLmN2c2lnbm9yZSwKCSAgZGxscy90dHlkcnYvLmN2c2lnbm9yZSwgZGxscy92ZXJzaW9uLy5jdnNpZ25vcmUsCgkgIGRsbHMvc2hlbGwzMi8uY3ZzaWdub3JlLCBkbGxzL3RhcGkzMi8uY3ZzaWdub3JlLAoJICBkbGxzL29wZW5nbDMyLy5jdnNpZ25vcmUsIGRsbHMvcHNhcGkvLmN2c2lnbm9yZSwKCSAgZGxscy9yYXNhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL29sZXBybzMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlc3ZyLy5jdnNpZ25vcmUsIGRsbHMvb2xlY2xpLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlZGxnLy5jdnNpZ25vcmUsIGRsbHMvb2xlMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9vbGVhdXQzMi8uY3ZzaWdub3JlLCBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwKCSAgZGxscy9vZGJjMzIvLmN2c2lnbm9yZSwgZGxscy9tc2FjbS8uY3ZzaWdub3JlLAoJICBkbGxzL21zbmV0MzIvLmN2c2lnbm9yZSwgZGxscy9semV4cGFuZC8uY3ZzaWdub3JlLAoJICBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9tZXNzYWdlcy8uY3ZzaWdub3JlLAoJICBkbGxzL2ltYWdlaGxwLy5jdnNpZ25vcmUsIGRsbHMvaW1tMzIvLmN2c2lnbm9yZSwKCSAgZGxscy9pY21wLy5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvLmN2c2lnbm9yZSwgZGxscy9kcGxheXgvLmN2c2lnbm9yZSwKCSAgZGxscy9kc291bmQvLmN2c2lnbm9yZSwgZGxscy9kY2ltYW4zMi8uY3ZzaWdub3JlLAoJICBkbGxzL2NydGRsbC8uY3ZzaWdub3JlLCBkbGxzL2F2aWZpbDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnLy5jdnNpZ25vcmUsCgkgIGRsbHMvYWR2YXBpMzIvLmN2c2lnbm9yZToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQXZvaWQgd2lsZGNhcmRzIGluIC5jdnNpZ25vcmUuCgoJKiBvYmplY3RzL2RjLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBpbmNsdWRlL2ZvbnQuaCwgaW5jbHVkZS9nZGkuaCwgZGxscy9nZGkvZnJlZXR5cGUuYywgY29uZmlndXJlLAoJICBjb25maWd1cmUuaW46CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDaGFybGVzIExvZXAgPGNoYXJsZXNAY29kZXdlYXZlcnMuY29tPgoJVmFyaW91cyBmaXhlcyBmb3IgZ2RpIGZvbnQgaGFuZGxpbmcgY29kZSBpbmNsdWRpbmc6CgktIFVzaW5nIFRUcyBWRE1YIHRhYmxlIHRvIGVuc3VyZSB0aGF0IHdlIGdldCBleGFjdGx5IHRoYXQgc2FtZSBzaXplCgkgIGZvbnQgdGhhdCBXaW5kb3dzIHVzZXMuCgktIEZpeGVzIHRvIG1hbnkgbWVtYmVycyBvZiB0aGUgbWV0cmljcyBzdHJ1Y3R1cmVzLgoJLSBGb250IGNhY2hlLgoJLSBSb3RhdGVkIHRleHQgc3VwcG9ydC4KCS0gU3VwcG9ydCBmb3IgR0dPX0dSQVk/X0JJVE1BUCAocmVhZHkgZm9yIGFudGktYWxpYXNlZCB0ZXh0KS4KCS0gU3VwcG9ydCBmb3IgR0dPX05BVElWRS4KCgkqIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLmMsCgkgIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLnNwZWMsCgkgIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglTdGV2ZW4gRWR3YXJkcyA8U3RldmVuX0VkNDE1M0B5YWhvby5jb20+CglDaGFuZ2VzIHdpbmVfbWFpbiB0byBtYWluIHRvIHByb3Blcmx5IGJ1aWxkIG9uIGFsbCBwbGF0Zm9ybXMuCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmM6CglDbGVtZW5zIDx0aGVyYXB5QGVuZG9ycGhpbi5vcmc+CglTaG91bGQgcHJvY2VzcyB0aGUgLmR5bnN5bSBvZiBzaGFyZWQgbGlicmFyaWVzIGluc3RlYWQgb2YgdGhlIC5zdGFiLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglGaXhlZCA9PS8hPSBtaXNtYXRjaC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRG8gbm90IGJlIHRvbyBzbWFydCBhbmQgYWRkIFdTX0NBUFRJT04gaW4gQWRqdXN0V2luZG93UmVjdEV4LgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUF2b2lkIGNvbmZsaWN0IHdpdGggaHRvbmwgJiBmcmllbmRzIGluIFdpbmVsaWIgb24gRnJlZUJTRC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVuYW1lIHNfYWRkciB0byBzcmNfYWRkciB0byBhdm9pZCBhIGNvbmZsaWN0IG9uIFNvbGFyaXMuCglSZW5hbWUgZF9hZGRyIHRvIGRzdF9hZGRyIGZvciBzeW1tZXRyeS4KCgkqIGluY2x1ZGUvbXN2Y3J0L3NldGptcC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglQcmVmaXggX0pCTEVOIHRvIGF2b2lkIGNvbmZsaWN0IG9uIEZyZWVCU0QuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRmxlc2hlZCBvdXQgc29tZSBtZXRhZmlsZSBjb252ZXJzaW9ucy4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSBjb3JyZWN0IGhhbGZ0b25lIHBhbGV0dGUuCgoJKiBkbGxzL3dpbmVkb3MvaW50MzMuYzogTm9nIDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCUltcGxlbWVudCBmdW5jdGlvbiBudW1iZXIgMHg1IChSZXR1cm4gbW91c2UgYnV0dG9uIHByZXNzIGluZm9ybWF0aW9uKS4KCgkqIHNlcnZlci9maWxlLmM6CglXb3JrIGFyb3VuZCBmdHJ1bmNhdGUgaW1wbGVtZW50YXRpb25zIHRoYXQgZG9uJ3Qgc3VwcG9ydCBleHRlbmRpbmcKCWZpbGVzLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggUGF0aENyZWF0ZUZyb21Vcmx7QXxXfSB0byByZXR1cm4gdGhlIGNvcnJyZWN0IGVycm9yIGNvZGUgaW4gYWxsCgljYXNlcy4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggU0hSZWdPcGVuVVNLZXl7QXxXfSBhbmQgU0hSZWdRdWVyeVVTVmFsdWV7QXxXfSB0byBhY3R1YWxseSB1c2UKCXByZXZpb3VzbHkgb3BlbiBrZXlzLgoKCSogZGxscy93aW5lZG9zL3ZnYS5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglMb3ctcmVzb2x1dGlvbiBhbmQgbG93LWNvbG9yIFZHQSBtb2RlcyBhcmUgbm93IG1hcHBlZCBpbnRvIG1vZGUKCTY0MHg0ODB4OC4gQWRkZWQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgZm91ciBiaXQgbW9kZXMuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglQdXQgdGhlIHByZWZpeC11bmRlcmxpbmUtZHJhd2luZyBhd2F5IGludG8gaXQncyBvd24gZnVuY3Rpb24gc28gd2UgY2FuCglzZWUgd2hhdCBpcyBoYXBwZW5pbmcuCgoJKiBmaWxlcy9kcml2ZS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUdldERpc2tGcmVlU3BhY2UgbmVlZHMgdG8gc2V0IHRoZSBsYXN0IGVycm9yIG9uIGZhaWx1cmUuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBIGNvdXBsZSBvZiBhZGRpdGlvbnMuCgoyMDAyLTAxLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDIwMTIyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAyLTAxLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYzoKCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgYXZlcmFnZSB3aWR0aCBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUaGUgXFw8bnI+IG1hZ2ljIGluIExvYWRUeXBlTGliRXggZm91bmQgZGlyZWN0b3JpZXMsIHdoaWNoIHdhcyBub3QKCWludGVuZGVkLiBSZXR1cm4gZXJyb3IgaW4gdGhhdCBjYXNlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFib3J0IGlmIHdlIGRvIG5vdCBmaW5kIHlhY2Mgb3IgYmlzb24uCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmgsCgkgIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIG9sZS91dWlkLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vdmVkIGd1aWRzIG5lZWRlZCBmb3IgUHJveHkvU3R1YiBmYWN0b3JpZXMgdG8gcmVzcGVjdGl2ZSAuaCBmaWxlcywKCWFkZCB0byBsaWJ3aW5lX3V1aWQuCgoJKiBkbGxzL21zdmNydC9jb25zb2xlLmMsIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9jdHlwZS5jLAoJICBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9lbnZpcm9uLmMsCgkgIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9leGl0LmMsCgkgIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywKCSAgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywKCSAgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLAoJICBkbGxzL21zdmNydC9zdHJpbmcuYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsIGRsbHMvbXN2Y3J0L3RpbWUuYywKCSAgZGxscy9tc3ZjcnQvd2NzLmM6CglEb24ndCBpbmNsdWRlIGRlYnVndG9vbHMuaCBpbiB0aGUgaGVhZGVyIGZpbGUsIG1vdmVkIGl0IHRvIHRoZSBDIGZpbGVzCgl0aGF0IG5lZWQgaXQgKGFuZCB1c2VkIHRoZSBuZXcgd2luZS9kZWJ1Zy5oIHdoaWxlIHdlIGFyZSBhdCBpdCkuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgaW5jbHVkZS93aW5lL2RlYnVnLmgsCgkgIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jOgoJTW92ZWQgZGVidWcgZGVmaW5pdGlvbnMgdG8gaW5jbHVkZS93aW5lL2RlYnVnLmguCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCVJlbW92ZWQgdXNlIG9mIFNFVF9ERUJVR0dJTkcsIGl0J3MgYnJva2VuIGFueXdheS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ29uc2lzdGVudCB1c2FnZSBvZiBpc3RyaW5nLCB1c2UgU1RSX1tHZXR8U2V0XVB0ciB3aGVyZSBhcHByb3ByaWF0ZS4KCgkqIHdpbmRvd3Mvd2luLmM6CglUb21teSBTY2h1bHR6IExhc3NlbiA8dGxhc3NlbkB0bGFzc2VuLmRrPgoJTWFrZSBFbnVtV2luZG93cyByZXR1cm4gVFJVRSBpZiBubyB3aW5kb3dzIGV4aXN0cy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLAoJICBpbmNsdWRlL3dpbnNwb29sLmg6CglNYXJrIEcuIEFkYW1zIDxtZ2FkYW1zQHN5bXBhdGljby5jYT4KCUFkZCBHZXREZWZhdWx0UHJpbnRlcigpIGZ1bmN0aW9ucy4KCjIwMDItMDEtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL29wdGlvbnMuYywgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL2RlYnVndG9vbHMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTWFrZSB0aGUgV2luZSB0cmFjZSBmYWNpbGl0aWVzIGFjY2Vzc2libGUgZnJvbSBXaW5lbGliIGFwcGxpY2F0aW9ucy4KCgkqIHRvb2xzL3dpbmVkdW1wL3BlLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywKCSAgZGxscy9xdWFydHovYXVkcmVuLmMsIGRsbHMvcXVhcnR6L3NhbXBsZS5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNvbW1lbnQgb3V0L2lmZGVmIG91dCB1bnVzZWQgY29kZSBhbmQgdmFyaWFibGVzLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgc2VjdGlvbj09TlVMTCAoZXJyb3IpIGluIFdyaXRlUHJpdmF0ZVByb2ZpbGVTdHJpbmdBLgoKCSogZGxscy94MTFkcnYvbXdtLmgsIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBNV00gaGludHMuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglDaGVjayBmb3IgY29tbW9uIGJyb2tlbiBuVmlkaWErTWVzYSBPcGVuR0wgbGlicmFyeSBzZXR1cHMuCglBZGQgc29tZSBxdW90aW5nLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVByaW50IHRoZSBzdHJlcnJvciBpbnN0ZWFkIG9mIGp1c3QgdGhlIGVycm5vLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBtaXNzaW5nIGNhc3QuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGludmFsaWQgQyBjb2RlICh1bmRlZmluZWQgYmVoYXZpb3IpLgoKCSogaW5jbHVkZS9jb25zb2xlLmgsIHdpbmRvd3MvZGVmZGxnLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGEgY291cGxlIG9mIHdhcm5pbmdzIGFuZCBhIHR5cG8uCgoJKiBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmUucG0sIHByb2dyYW1zL3dpbmV0ZXN0L3Rlc3RzL3dpbmUucGwsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L3dpbmUueHM6CglEb24ndCBjb252ZXJ0ICJwdHIiIHJldHVybiB0eXBlIHRvIGEgUGVybCBzdHJpbmcuCglDYWxsIEdldFByb2NBZGRyZXNzIG9ubHkgd2hlbiBhIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZCwgbm90IGF0CglkZWNsYXJhdGlvbiB0aW1lLgoKCSogZmlsZXMvZmlsZS5jOgoJRml4ZWQgZnVuY3Rpb24gcHJvdG90eXBlIHRoYXQgY29uZnVzZWQgd2luYXBpX2V4dHJhY3QuCgoJKiB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdF9vcHRpb25zLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2FkdmFwaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2F2aWZpbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2NvbWN0bDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2NvbWRsZzMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2RjaW1hbjMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2RkcmF3LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2RpbnB1dC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9kcGxheXgucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvZHNvdW5kLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2dkaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2dsdTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2ljbXAucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvaW1hZ2VobHAucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvaW1tMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvam95c3RpY2tfZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2tlcm5lbDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL2x6MzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbWNpYW5pbV9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbWNpYXZpX2Rydi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tY2ljZGFfZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21jaXNlcV9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbWNpd2F2ZV9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbWlkaW1hcF9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbXByLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21zYWNtMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvbXNhY21fZHJ2LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL21zdmNydC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9tc3ZmdzMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL250ZGxsLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL29kYmMzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGUzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGVhdXQzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGVjbGkzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9vbGVkbGcucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlcHJvMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb2xlc3ZyMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvb3BlbmdsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvcHNhcGkucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvcXVhcnR6LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3Jhc2FwaTMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3JpY2hlZDMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3JwY3J0NC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zZXJpYWx1aS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zZXR1cGFwaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS9zaGRvY3Z3LnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3NoZWxsMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvc2hsd2FwaS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS90YXBpMzIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvdXJsbW9uLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3VzZXIzMi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS92ZXJzaW9uLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3czMnNrcm5sLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmVkb3MucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZW9zc19kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luaW5ldC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5tbS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5zcG9vbF9kcnYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2ludHJ1c3QucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd3MyXzMyLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dzb2NrMzIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUdlbmVyYXRlIFBlcmwgbW9kdWxlcyBkZWZpbmluZyBwcm90b3R5cGVzIGZvciBleHBvcnRlZCBmdW5jdGlvbnMuCgoyMDAyLTAxLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oLCBkbGxzL3VzZXIvZGRlL21pc2MuYywKCSAgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywgZGxscy91c2VyL2RkZS9jbGllbnQuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaW5pdGlhbGlzYXRpb24gbWVzc2FnZXMgZm9yIHJhdyBEREUuCglGaXhlZCBEZGVDcmVhdGVEYXRhSGFuZGxlIGZvciBub24gTlVMTCBvciBDRl9URVhUIGZvcm1hdHMuCglWYXJpb3VzIGZpeGVzIChjb3NtZXRpY3MsIGJldHRlciBlcnJvciBjaGVja2luZykuCgoJKiBzZXJ2ZXIvcXVldWUuYywgZGxscy91c2VyL21lc3NhZ2UuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgaW50ZXJwcm9jZXNzIERERSBtZXNzYWdlIHBvc3RpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgd2luZG93cy9zcHkuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CgktIE1ha2UgdGhlIExpc3RWaWV3IGNvbnRyb2wgVW5pY29kZSByZWFkeS4KCS0gU3VwcG9ydCBib3RoIEFOU0kgJiBVbmljb2RlIExpc3RWaWV3IG5vdGlmaWNhdGlvbnMuCgktIEZpeGVkIGEgZmV3IGJ1Z3MuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIHN0cmVhbURhdGEgYW5kIGNoZWNrIG9uIGZhaWx1cmUgdG8gcmVhZCBkZXNpcmVkIGRhdGEgZnJvbQoJc3RyZWFtLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglQcmV2ZW50IHRyeWluZyB0byBoYW5kbGUgdW5pbml0aWFsaXNlZCBtZW1vcnkgYXMgYSBzdHJpbmcuCgoJKiB3aW4zMi9jb25zb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY29tY3RsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggcmV0dXJuIHZhbHVlIG9mIEdldFdpbmRvd3NEaXJlY3RvcnlBL1cgYW5kIEdldFN5c3RlbURpcmVjdG9yeUEvVy4KCgkqIGRsbHMvbnRkbGwvY2Ryb20uYzoKCUJhbmcgSnVuLVlvdW5nIDxqdW55b3VuZ0Btb2d1YS5jb20+CglGaXggTmV0QlNEIGNvbXBpbGUgZXJyb3JzOyBDRElPQ1JFQURBVURJTyBpcyBub3QgYXZhaWxhYmxlIG9uIE5ldEJTRC4KCgkqIGRsbHMvbXNpbWczMi9tc2ltZzMyLnNwZWMsIGRsbHMvbXNpbWczMi9tc2ltZzMyX21haW4uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIEdyYWRpZW50RmlsbCBzdHViLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJU3lzdGVtUGFyYW1ldGVyc0luZm86IGZpeGVkIHJldHVybiB2YWx1ZSBmb3IgU1BJX1NFVEZBU1RUQVNLU1dJVENILgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglCaWxsIE1lZGxhbmQgKG1lZGJpMDFAYWNjcGFjLmNvbSkKCUNvR2V0Q2xhc3NPYmplY3Q6IGZvciBDTFNDVFhfTE9DQUxfU0VSVkVSIGF0IGxlYXN0IGxvb2sgdXAgdGhlIHNlcnZlcgoJaW4gdGhlIHJlZ2lzdHJ5LCBldmVuIHRob3VnaCB3ZSBkb24ndCB5ZXQgZXhlY3V0ZSBpdC4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCS0gRG9uJ3Qgc3RyaW5nIGNvcHkgZnJvbSB1bmluaXRpYWxpc2VkIHN0YWNrIG1lbW9yeS4gIEluIGZhY3QgZG9uJ3QKCSAgbW9kaWZ5IHRoZSBpbnB1dCBzdHJpbmcgaWYgaXQgZGlkbid0IGNoYW5nZS4KCS0gQ29ycmVjdCBhcnJheSBzaXplLgoJLSBMb2dpY2FsbHkgc2VwYXJhdGUgdGhlIGNlbnRyaW5nIGZyb20gdGhlIGVsbGlwc2lmaWNhdGlvbi4KCS0gQ29tbWVudCBvbiBwcmVmaXggZXJyb3IuCgoJKiBkZWJ1Z2dlci90eXBlcy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlcyBjaGFyIGFycmF5IGluIHN0cnVjdHVyZSBkdW1waW5nLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgZm9yIGNvbWN0bDMyLjQxOQoKMjAwMi0wMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3Rlc3RzLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL3Rlc3RzL2F0b20ucGwsIGRsbHMva2VybmVsL01ha2VmaWxlLmluOgoJQWRkZWQgYXRvbSB0ZXN0IHNjcmlwdC4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3Rlc3RzL3dpbmUucGw6CglBZGRlZCBzb21lIHByb3RvdHlwZXMgdG8gZnVuY3Rpb24gZGVjbGFyYXRpb25zLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5iYXNlLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmNvbi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5kZWYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZXJyb3IucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZ2RpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbm5scy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5udC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5yZWcucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luc29jazIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luc3Bvb2wucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2ludXNlci5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW52ZXIucG0sIHByb2dyYW1zL3dpbmV0ZXN0L21ha2Vfc3ltYm9sczoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNYWRlIHRoZSBQZXJsIG1vZHVsZSBnZW5lcmF0ZWQgYnkgbWFrZV9zeW1ib2xzIGEgcmVhbCBleHBvcnRpbmcKCSAgbW9kdWxlLgoJLSBVc2UgY29uc3RhbnRzIGluc3RlYWQgb2YgdmFyaWFibGVzLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCB0aGUgcG9zc2liaWxpdHkgKGl0IGlzIG9wdGlvbmFsIGZvciBiYWNrd2FyZCBjb21wYWJpbGl0eSkgdG8KCXNwZWNpZnkgYXJndW1lbnQgdHlwZXMgaW4gb3JkZXIgdG8gZml4IGEgImJ1ZyIgY29uY2VybmluZwoJaW50ZWdlci9zdHJpbmcgc2NhbGFycy4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHByb2Nlc3Npbmcgb2YgYWN0aW9ucyBTUElfU0VUS0VZQk9BUkRQUkVGLAoJU1BJX1NFVFNDUkVFTlJFQURFUi4KCVNhdmUgdG8gcmVnaXN0cnkgdmFsdWUgb2YgU1BJX1NFVFNDUkVFTlNBVkVBQ1RJVkUgYWN0aW9uLgoJQ2hhbmdlZCBwcm9jZXNzaW5nIG9mIGFjdGlvbiBTUElfU0VURkFTVFRBU0tTV0lUQ0ggdG8gY29uZm9ybSB0bwoJV2luZG93cyBiZWhhdmlvdXIgb24gYW5kIGFmdGVyIFdpbk5UIDQuMCwgV2luZG93cyA5NS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNhdGNoIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIGFuZCByZXR1cm4gb3V0IG9mIG1lbW9yeSBlcnJvci4KCgkqIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jLCBpbmNsdWRlL2NvbnNvbGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU21hbGwgdHlwbyBmaXguCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2lucHV0LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCU1vdmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGNvbWN0bDMyLl9UcmFja01vdXNlRXZlbnQgdG8KCXVzZXIzMi5UcmFja01vdXNlRXZlbnQgYW5kIGNhbGwgdGhpcyBmdW5jdGlvbiBpbiBhY2NvcmRhbmNlIHdpdGggdGhlCglzcGVjcy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUZpcnN0IHN0YWdlIG9mIERyYXdUZXh0IHVwZ3JhZGUuCgktIFJlYXJyYW5nZSBjb2RlIGludG8gdGhyZWUgZGlzdGluY3QgYXJlYXM7IERyYXdUZXh0LCBHcmF5U3RyaW5nLAoJICBUYWJiZWRUZXh0LgoJLSBSZW1vdmUgdW51c2VkIG1hY3Jvcy4KCS0gTW9kaWZ5IHRyZWF0bWVudCBvZiBUYWIgYXJndW1lbnRzIHRvIGZpdCB3aXRoIG9ic2VydmVkIGJlaGF2aW91ci4KCSAgZS5nLiBEcmF3VGV4dEV4IHdpdGggRFRfVEFCU1RPUCBidXQgbnVsbCBkdHAgd2lsbCBub3QgdGFrZSB0aGUKCSAgc2V0dGluZyBmcm9tIHRoZSBmbGFncy4gIEFsc28gb25seSB1c2VzIGJpdHMgMTUgdG8gOCwgbm90IHRoZQoJICBoaWdoZXIgYml0cy4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCURvbid0IGNoZWNrIHRoZSBjaGVja3N1bSBvZiB0aGUgb3JpZ2luYWwgZWNobyByZXF1ZXN0IHBhY2tldCBpbiB0aGUKCXJlY2VpdmVkIHJlcGx5IHBhY2tldC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWJzIGZvciBJbWFnZUxpc3RfW1N8R11ldEZsYWdzLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglEb24ndCBjaGFuZ2UgYnV0dG9uIHN0YXRlIG9uIFdNX01PVVNFTU9WRSBtZXNzYWdlcyB1bmxlc3MgbGVmdCBtb3VzZQoJYnV0dG9uIGlzIHByZXNzZWQuCgoJKiBjb250cm9scy9jb21iby5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAeHM0YWxsLm5sPgoJSW4gQ0JQYWludFRleHQgdXNlIHRoZSB0ZXh0IHNpemUgYXMgcmV0dXJuZWQgYnkgTEJfR0VUVEVYVC4gVGhlIHNpemUKCXJldHVybmVkIGJ5IExCX0dFVFRFWFRMRU4gbWF5IGJlIHRvbyBsYXJnZS4KCgkqIHdpbmRvd3MvZGVmZGxnLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglNYWtlIERNX1NFVERFRklEIG1lc3NhZ2Ugd29yayBmb3Igb3duZXIgZHJhd24gYnV0dG9ucyBhcyB3ZWxsLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWljaGFlbCBDLiBNYWdnaW8gPHZveWFnZXJAdm95ZC5uZXQ+CglDb2RlIHVzZWQgQUZfSVBYIGluIHNvbWUgcGxhY2VzIHdoZXJlIGl0IHNob3VsZCBoYXZlIHVzZWQgV1NfQUZfSVBYLgoKCSogZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGb3JjZSBvcmRpbmFsIGFsbG9jYXRpb24gc3RhcnQgZnJvbSAxMDAgYXMgaW4gV2luZG93cy4KCgkqIGRvY3VtZW50YXRpb24vZGIyaHRtbC13aW5laHE6CglGcmFuZ29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgaW5jb3JyZWN0IHVzZSBvZiAndGVzdCAtYScgKGZvciBGcmVlQlNEKS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglMZWF2ZSBJSUQgY2hlY2sgdG8gdGhlIE9sZUNyZWF0ZUZvbnRJbmRpcmVjdCwgc28gdGhhdCBTRkNGIHdpbGwgaGFuZGxlCglhbGwgdGhlIGludGVyZmFjZXMgdGhhdCBPbGVDcmVhdGUuLiB3aWxsLgoKMjAwMi0wMS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3Rlc3RzLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmV0ZXN0L3Rlc3RzL3dpbmUucGwsCgkgIHByb2dyYW1zL3dpbmV0ZXN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5ldGVzdC90ZXN0LnBsOgoJSW50ZWdyYXRlZCB0ZXN0IHNjcmlwdCBmb3Igd2luZXRlc3QgaW50byB0aGUgbWFrZSB0ZXN0CglpbmZyYXN0cnVjdHVyZS4KCUFkZGVkIGEgZmV3IHRlc3RzIGZvciB0aGUgbmV3IHdpbmUucG0gZnVuY3Rpb25zLgoKCSogZGxscy9tYWtlX2RsbHMsIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3QsIE1ha2UucnVsZXMuaW46CglSZXdyb3RlIHJ1bnRlc3QgaW4gUGVybCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIG9uIHRoZSBXaW5kb3dzIHNpZGUuCglBZGRlZCBvcHRpb25zIGZvciBpbmNsdWRlIGRpcmVjdG9yaWVzLCBkZWJ1ZyBsZXZlbCBhbmQgdGFyZ2V0IHBsYXRmb3JtLgoJc2VsZWN0aW9uLgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5lLnBtLCBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5jOgoJQWRkZWQgb2soKSBmdW5jdGlvbiB0aGF0IGRvZXNuJ3Qgc3RvcCB0aGUgdGVzdCBvbiB0aGUgZmlyc3QgZXJyb3IuCglBZGRlZCB0cmFjZSgpIGZ1bmN0aW9uIGZvciBkZWJ1Z2dpbmcgdGVzdHMuCglBZGRlZCBzdXBwb3J0IGZvciB0b2RvIGZ1bmN0aW9uYWxpdHkuCglNb3ZlZCB3aW5lLnBtIHRvIGluY2x1ZGUgZGlyZWN0b3J5LgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5iYXNlLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbmNvbi5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5kZWYucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZXJyb3IucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luZ2RpLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC9pbmNsdWRlL3dpbm5scy5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5udC5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW5yZWcucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luc29jazIucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2luc3Bvb2wucG0sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L2luY2x1ZGUvd2ludXNlci5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvaW5jbHVkZS93aW52ZXIucG0sIHByb2dyYW1zL3dpbmV0ZXN0L21ha2Vfc3ltYm9sczoKCUFkZGVkIFBlcmwgbW9kdWxlcyBjb250YWluaW5nIHRoZSAjZGVmaW5lcyB2YWx1ZXMgZm9yIHRoZQoJY29ycmVzcG9uZGluZyBXaW5kb3dzIGhlYWRlcnMuCgoJKiBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbjoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbUxpbmUuY29tPgoJQWRkZWQsIHVwZGF0ZSBpbmZvcm1hdGlvbiBhYm91dCBBcHBEZWZhdWx0LgoKCSogaW5jbHVkZS9yaWNoZWRpdC5oLCBkbGxzL3JpY2hlZGl0L2NoYXJsaXN0LmMsCgkgIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywKCSAgZGxscy9yaWNoZWRpdC90ZXh0LXdyaXRlci5jOgoJRGFuaWVsIFdhbGtlciA8ZGl3YWxrZXJAZWFydGhsaW5rLm5ldD4KCS0gQWRkZWQgZGVidWdnaW5nLgoJLSBUcmFuc2ZlciBhbGwgcmVsZXZhbnQgbWVzc2FnZXMgdG8gdGhlIHVuZGVybHlpbmcgZWRpdCBjb250cm9sLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJubHMuYywKCSAgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgc29tZSB1c2VsZXNzIHdpbmdkaS5oIGluY2x1ZGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgTVJVTGlzdHMgdG8gVW5pY29kZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUlTaGVsbEZvbGRlcl9CaW5kVG9PYmplY3Qgc2hvdWxkIHJlc3BlY3QgcmlpZC4KCgkqIGRsbHMvbXN2Y3J0L2ZpbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCV9zdGF0OiBCZXR0ZXIgdGVzdCBmb3IgZHJpdmUgbGV0dGVyLgoKCSogZGxscy9udGRsbC9jZHJvbS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggY29tcGlsYXRpb24gZXJyb3JzIG9uIEZyZWVCU0QuCgoJKiBsaWJ0ZXN0L2hlbGxvNS5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglMb2FkTGlicmFyeSByZXR1cm5zIDAgb24gZmFpbHVyZSwgbm90IDwgMzIuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglVc2UgLUROT05BTUVMRVNTVU5JT04gLUROT05BTUVMRVNTU1RSVUNUIHdoZW4gY29tcGlsaW5nLgoKCSogaW5jbHVkZS93aW5zb2NrMi5oLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCURhbmllbCBXYWxrZXIgPGRpd2Fsa2VyQGVhcnRobGluay5uZXQ+CglJbXBsZW1lbnRlZCBXU0FBY2NlcHQoKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIGFkZGl0aW9uYWwgVE9PTEJBUl9DYWxjVG9vbGJhciBpbiBhIGRpZmZlcmVudCBwYXRoIG9mIEF1dG9zaXplLgoJLSBSZW1lbWJlciBhbmQgcHJvY2VzcyBXTV9TRVRSRURSQVcgbWVzc2FnZXMuCgktIFByb2Nlc3Mgc3RyaW5ncyBzcGVjaWZpY2llZCBpbiBJbnNlcnRCdXR0b257QXxXfS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggYSBncmlwcGVyIGlzc3VlIGFuZCB0aGUgYWRqdXN0bWVudCBvZiBiYW5kcyB3aGVuIFJCQlNfRklYRURTSVpFCglzcGVjaWZpZWQuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglQcmVwZW5kICItLSIgdG8gYXJndW1lbnRzLgoKMjAwMi0wMS0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywKCSAgbXNkb3MvaW50MmYuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHVzaW5nIHRoZSBOVCBDRCBpbnRlcmZhY2UuCgoJKiBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2Nkcm9tLmMsIHdpbjMyL2RldmljZS5jLAoJICBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2Nkcm9tLmMsIGZpbGVzL2RyaXZlLmMsCgkgIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9jZHJvbS5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9udGRkY2RybS5oLAoJICBpbmNsdWRlL250ZGRzdG9yLmgsIGluY2x1ZGUvd2luaW9jdGwuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCB0aGUgV2luZSBpbnRlcm5hbCBjZHJvbSBpbnRlcmZhY2UgdG8gdGhlIE5UIG1vZGVsLgoKMjAwMi0wMS0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2lucmVnLmgsIGluY2x1ZGUvd2ludmVyLmg6CglSZW1vdmVkIG9ic29sZXRlIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS93aW5zb2NrMi5oLCBpbmNsdWRlL3dpbm50Lmg6CglGaXhlZCB0eXBvcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJVXBkYXRlZCBkZWJ1ZyBjaGFubmVscy4KCgkqIHNlcnZlci9wdHJhY2UuYzoKCUNoZWNrIHVuaXhfcGlkIGFnYWluIGFmdGVyIGF0dGFjaC4KCgkqIHNlcnZlci9uYW1lZF9waXBlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCByZWZjb3VudGluZyB0byB0aGUgdGhyZWFkIG1lbWJlciBvZiB0aGUgcGlwZSB1c2VyLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglIb3cgdG8gc3BlY2lmeSBhIERMTCBpbiBhIGRlYnVnZ2VyIGJyZWFrIGNvbW1hbmQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdGhlIHdvZFJlc2V0IGltcGxlbWVudGF0aW9uLCBpbnRlcm5hbCBtZXNzYWdlcyBwcmlvcml0eSwgZnVsbAoJZHVwbGV4IGNvZGUsIHdhaXQgYWxnb3JpdGhtIGZvciBmZWVkaW5nIHRoZSBPU1MgYnVmZmVyLgoKCSogZGVidWdnZXIvaGFzaC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglFbmhhbmNlIGRpc3BsYXkgZm9yIHN5bWJvbCBwaWNraW5nLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggb2ZmIGJ5IG9uZSBlcnJvciBpbiBUT09MQkFSX0FkZFN0cmluZ1cuCgoyMDAyLTAxLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jcnlwdDMyLy5jdnNpZ25vcmUsIGRsbHMvY3J5cHQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9jcnlwdDMyL2NyeXB0MzIuc3BlYywgZGxscy9jcnlwdDMyL21haW4uYywgY29uZmlndXJlLAoJICBjb25maWd1cmUuaW46CglUcmF2aXMgTWljaGllbHNlbiA8dGptaWNoaWVsc2VuQHlhaG9vLmNvbT4KCUFkZGVkIGNyeXB0MzIuZGxsIHN0dWIuCgoJKiBpbmNsdWRlL3dpbmNyeXB0LmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLAoJICBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuaDoKCVRyYXZpcyBNaWNoaWVsc2VuIDx0am1pY2hpZWxzZW5AeWFob28uY29tPgoJSW1wbGVtZW50IGFkdmFwaTMyIHBvcnRpb24gb2YgdGhlIENyeXB0b0FQSS4KCgkqIGRsbHMvd2lubW0vZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeCBwb3RlbnRpYWwgbWVtb3J5IGlzc3VlLgoKCSogd2luMzIvZWRpdGxpbmUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4IHNvbWUgYmFkIGJlaGF2aW9yIHdoZW4gc29tZSBsb2NrIHN0YXRlcyAoY2Fwc2xvY2ssIG51bWxvY2suLi4pCgl3ZXJlIHR1cm5lZCBvbi4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29tbWVudCBvbmx5OyBlcnJvciBpbiBNaWNyb3NvZnQgZG9jdW1lbnRhdGlvbi4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJd2hpY2ggaXMgbW9yZSBwb3J0YWJsZSB0aGFuIHR5cGUgKEZyZWVCU0QpLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggcHJldmlvdXMgcGF0Y2g6IHRoZSB3c19zb2NrYWRkcl91MndzIHJldHVybiB2YWx1ZSB3YXMgd3JvbmcuCglNYWtlIHdzX3NvY2thZGRyX3t3czJ1LHUyd3N9IHN0YXRpYy4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L3J1bnRlc3QsIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJQWRkZWQgcnVsZXMgZm9yIHJ1bm5pbmcgdGVzdHMuCgoyMDAyLTAxLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCU1vdmVkIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFdTX3NvY2tldCgpIHRvIFdTQVNvY2tldEEoKS4KCU1hZGUgV1NBU29ja2V0QSgpIGFjY291bnQgZm9yIFdTQV9GTEFHX09WRVJMQVBQRUQuCgoJKiBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zb2NrLmMsCgkgIHNlcnZlci90cmFjZS5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHNvY2tldCBmbGFncy4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RldmljZS5jLAoJICBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLAoJICBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdHJhY2UuYywKCSAgZmlsZXMvZmlsZS5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCU1vcmUgZ2VuZXJhbCBhcHByb2FjaCB0byBmaWxlIGRlc2NyaXB0b3IgdHlwZXMgYW5kIGZsYWdzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJUGF1bCBSdXBlIDxwcnVwZUBuYy5yci5jb20+CglSZXR1cm4gbGVuZ3RoIG9mIFdTX3NvY2thZGRyIHN0cnVjdHVyZSBpbiB3c19zb2NrYWRkcl91MndzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUZpeGVkIEdldERvY3VtZW50YXRpb24gYSBsaXR0bGUuICBXaGVuIGNhbGxlZCBmcm9tIFJlZ2lzdGVyVHlwZUxpYiBpdAoJd2FzIGxlYXZpbmcgdGhlIERvYyBlbnRyeSB1bmluaXRpYWxpc2VkLCBsZWFkaW5nIHRvIHBhZ2UgZmF1bHQgd2hlbgoJbWVhc3VyaW5nIGl0LiBBbHNvIGVuc3VyZSBjb3JyZWN0IGZyZWVpbmcgb2YgcmVzb3VyY2VzIG9uIGZhaWx1cmUuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6CglNYXJ0aW4gV2lsY2sgPE1hcnRpbi5XaWxja0BmdWppdHN1LXNpZW1lbnMuY29tPgoJRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgQVBDcyB0byBiZSAiZm9yZ290dGVuIi4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgd2luZG93cy93aW4uYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCU1vdmUgY2FsbGluZyBvZiBDQlQgaG9va3MgZnJvbSBXSU5fQ3JlYXRlV2luZG93RXgoKSB0byB0aGUgZHJpdmVyLgoKMjAwMi0wMS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCBkbGxzL3NoZWxsMzIvY29udHJvbC5jLCBkbGxzL3VzZXIvdGV4dC5jLAoJICBkbGxzL3dpbmVkb3MvZG9zYXNwaS5jLCBkbGxzL3dpbmVkb3MvaW50MzEuYywKCSAgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgZGxscy9nZGkvZ2RpLnNwZWMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvZ2RpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3VzZXIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZ2RpMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2Y3J0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsbW9uLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lZG9zLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbmluZXQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBUEkgZmlsZXMgdXBkYXRlCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogc2VydmVyL2ZpbGUuYywgZmlsZXMvZmlsZS5jOgoJTWFydGluIFdpbGNrIDxNYXJ0aW4uV2lsY2tAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCUFkZCBzZXJ2ZXIgc2lkZSBzdXBwb3J0IGZvciBhc3luYyBJTyBvbiBmaWxlcy4KCVVzZSBwcmVhZC9wd3JpdGUgdG8gcmVhZC93cml0ZSBmcm9tIHRoZSBvZmZzZXQgc3BlY2lmaWVkIGluIHRoZQoJb3ZlcmxhcHBlZCBzdHJ1Y3R1cmUuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwKCSAgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9wb3J0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBwcmVhZC9wd3JpdGUuCgoJKiBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJLSBBdHRlbXB0IHdyaXRlIGJlZm9yZSBnb2luZyBvdmVybGFwcGVkIGluIFdyaXRlZmlsZS4KCS0gRml4IHJldHVybiBjb2RlcyBpbiBXcml0ZUZpbGVFeC4KCgkqIGluY2x1ZGUvZmlsZS5oLCBzY2hlZHVsZXIvc3luY2hyby5jLCBmaWxlcy9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50IENhbmNlbElvIHByb3Blcmx5LgoKCSogZGxscy91c2VyL2NvbW0xNi5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCS0gRG9uJ3QgdXNlIGV2ZW50IGZsYWdzIHdpdGggUmVhZEZpbGVFeCBhbmQgV3JpdGVGaWxlRXguCgktIFVzZSBvdmVybGFwcGVkIHN0cnVjdHVyZSB3aXRoIFdyaXRlRmlsZSwgc2luY2UgRklMRV9GTEFHX09WRVJMQVBQRUQKCSAgaXMgc3BlY2lmaWVkLgoJLSBDYW5jZWwgb3ZlcmxhcHBlZCBvcGVyYXRpb25zIGluIENsb3NlQ29tbS4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvdmlydHVhbC5jLCBzY2hlZHVsZXIvY2xpZW50LmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsCgkgIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaDoKCUFkZGVkIHN1cHBvcnQgZm9yIGNsZWFuaW5nIHVwIHRoZSBURUIgZnJvbSBpbnNpZGUgdGhlIGV4aXRpbmcgdGhyZWFkLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUFsbG9jYXRlIGRlYnVnX2luZm8gc3RydWN0dXJlIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIFRFQi4KCVJlbW92ZWQgdGhlIFRFQiBjbGVhbnVwIHNlcnZpY2UuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmM6CglBZGRlZCBTSUdOQUxfUmVzZXQgZnVuY3Rpb24uCgoyMDAyLTAxLTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWR1bXAvcGUuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGR1bXBpbmcgcmVzb3VyY2VzLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglNYXJrIEcuIEFkYW1zIDxtZ2FkYW1zQHN5bXBhdGljby5jYT4KCUZpeCBVdWlkQ3JlYXRlKCkgdG8gbm90IGZvcmdldCBNQUMgYWRkcmVzcy4KCVJlbW92ZSB7fSdzIGZyb20gVXVpZFRvU3RyaW5nQSgpIG91dHB1dC4KCUFkZCBVdWlkQ3JlYXRlU2VxdWVudGlhbCgpIGZ1bmN0aW9uIGZyb20gV2luZG93cyAyMDAwLgoKCSogY29uZmlndXJlLmluOgoJQmVybmhhcmQgUm9zZW5rcmFlbnplciA8YmVyb0ByZWRoYXQuZGU+CglBZGRlZCBtaXNzaW5nIGJyYWNrZXRzIGluIG5jdXJzZXMgY2hlY2suCgoJKiBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglSZW1vdmVkIG9ic29sZXRlIGRvc21vZC4KCgkqIGRsbHMva2VybmVsL25scy9kZWEubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGVsLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2RldS5ubHMsIGRsbHMva2VybmVsL25scy9lbmkubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZXNuLm5scywgZGxscy9rZXJuZWwvbmxzL2VzcC5ubHMsCgkgIGRsbHMva2VybmVsL25scy9maW4ubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJhLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL2ZyYi5ubHMsIGRsbHMva2VybmVsL25scy9mcmwubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvZ2FlLm5scywgZGxscy9rZXJuZWwvbmxzL2dyYy5ubHMsCgkgIGRsbHMva2VybmVsL25scy9pdGEubmxzLCBkbGxzL2tlcm5lbC9ubHMvbmxiLm5scywKCSAgZGxscy9rZXJuZWwvbmxzL25sZC5ubHMsIGRsbHMva2VybmVsL25scy9wdGcubmxzLAoJICBkbGxzL2tlcm5lbC9ubHMvd2FsLm5sczoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlIGN1cnJlbmN5IG9mIHRoZSBldXJvcGVhbiBFdXJvIHVzaW5nIGNvdW50cmllcyB0byBFdXJvLgoKCSogTElDRU5TRTogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBjb3B5cmlnaHQgZGF0ZS4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uaCwgZGxscy93aW5lZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglET1Mgc3VwcG9ydCByZXN0cnVjdHVyZS4gVGhlIERPUyB2aXJ0dWFsIG1hY2hpbmUgaXMgbm93IGEgc2V0IG9mCgl0aHJlYWRzIHJ1bm5pbmcgd2l0aGluIFdpbmUncyBvd24gYWRkcmVzcyBzcGFjZSwgb2Jzb2xldGluZyB0aGUgb2xkCglkb3Ntb2QgbW9kdWxlLgoKMjAwMi0wMS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS90aHJlYWQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgdm04Nl9lbnRlciByYWNlIGNvbmRpdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9yZWJhci5jLAoJICBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVNhbmRlciB2YW4gTGVldXdlbiA8c2FuZGVydmxAeHM0YWxsLm5sPgoJTmV2ZXIgZGVsZXRlIHRoZSBmb250IG9iamVjdCByZWNlaXZlZCBieSBXTV9TRVRGT05ULgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglGaXhlZCBjYWxscyB3aXRoIHdyb25nIHBvaW50ZXI6IENPTUNUTDMyX0ZyZWUoJmxwdHRzaSkgc2hvdWxkIGJlCglDT01DVEwzMl9GcmVlKGxwdHRzaSkuCgoJKiBkbGxzL3VzZXIvdGV4dC5jOgoJU2FuZGVyIHZhbiBMZWV1d2VuIDxzYW5kZXJ2bEB4czRhbGwubmw+CglGaXhlZCBEQyBsZWFrLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglTYW5kZXIgdmFuIExlZXV3ZW4gPHNhbmRlcnZsQHhzNGFsbC5ubD4KCUNoZWNrLCBSYWRpbyAmIDNTdGF0ZSBidXR0b25zIHNlbmQgV01fQ1RMQ09MT1JTVEFUSUMgaW5zdGVhZCBvZgoJV01fQ1RMQ09MT1JCVE4uCgoJKiBkb2N1bWVudGF0aW9uL2NvbXBpbGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW4sCgkgIGRvY3VtZW50YXRpb24vcG9ydGluZy5zZ21sLCBSRUFETUU6CglSZW1vdmVkIHJlZmVyZW5jZXMgdG8geHBtIHBhY2thZ2VzLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgdG9vbHMvd2luZWluc3RhbGwsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJV2Ugbm8gbG9uZ2VyIG5lZWQgbGliWHBtLgoKCSogdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHBtLmMsCgkgIGluY2x1ZGUvdHNfeHBtLmgsIHRvb2xzL21ha2VfWDExd3JhcHBlcnM6CglXZSBubyBsb25nZXIgbmVlZCB0aGUgeHBtIHdyYXBwZXJzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZCBkZWZpbmUgZm9yIHVuZG9jdW1lbnRlZCBzdGF0dXMgYmFyIG1lc3NhZ2UgU0JfU0VUQk9SREVSUy4KCgkqIGluY2x1ZGUvaW1hZ2VobHAuaDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRGVmaW5lIExQU1RBQ0tGUkFNRSB0b28uCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9zcHkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgc29tZSBuZXcgbWVzc2FnZXMgdG8gdGhlIHNweSBhbmQgd2ludXNlci5oLgoKCSogaW5jbHVkZS9iaXRtYXBzL29ibV9jbG9zZSwgaW5jbHVkZS9iaXRtYXBzL29ibV9jbG9zZV85NSwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9jbG9zZWRfOTUsIGluY2x1ZGUvYml0bWFwcy9vYm1fcmVkdWNlLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3JlZHVjZV85NSwgaW5jbHVkZS9iaXRtYXBzL29ibV9yZWR1Y2VkLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3JlZHVjZWRfOTUsIGluY2x1ZGUvYml0bWFwcy9vYm1fcmVzdG9yZSwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9yZXN0b3JlXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2JtX3Jlc3RvcmVkLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3Jlc3RvcmVkXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2JtX3pvb20sCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fem9vbV85NSwgaW5jbHVkZS9iaXRtYXBzL29ibV96b29tZCwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV96b29tZF85NSwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdXNlci5jOgoJUmVtb3ZlZCBMb2FkT0VNUmVzb3VyY2UgZnJvbSBVU0VSIGRyaXZlci4KCgkqIGRsbHMvbnRkbGwvZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByaW50IEZJWE1FKCkgZm9yIG5vdCBpbXBsZW1lbnRlZCBOdFF1ZXJ5Vm9sdW1lSW5mb3JtYXRpb25GaWxlLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBNZWhtZXQgWWFzYXIgPG15YXNhckBmcmVlLmZyPgoJRG8gbm90IHNhdmUgZW1wdHkgc2VjdGlvbnMgbmFtZXMuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZW1vdmUgYSBjYWxsIHRvIEhFQVBfc3RyZHVwQXRvVyBpbiB0aGUgQ29sb3IgZGlhbG9nLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCVNwZWVkIHVwIHRoZSBHZXRJbWFnZUJpdHMgY2FzZSB3aGVyZSB3ZSBoYXZlIGFuIFhTaG0gaW1hZ2UuCgoyMDAyLTAxLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsCgkgIGNvbnRyb2xzL21lbnUuYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfYml0bWFwcy5yYzoKCVVzZSBEcmF3RnJhbWVDb250cm9sIGluc3RlYWQgb2YgYml0bWFwcyBpbiBjZXJ0YWluIGNhc2VzLgoJTW92ZWQgcmVtYWluaW5nIE9FTSBiaXRtYXBzIHRvIHVzZXIzMiByZXNvdXJjZXMuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL2NvbXBvYmouYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgQ29UcmVhdEFzQ2xhc3MsIHNpbXBsaWZpZWQgT2xlU2V0QXV0b0NvbnZlcnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSGFuZGxlIHRoZSBscERpcmVjdG9yeSBmaWVsZCBvZiB0aGUgTFBTSEVMTEVYRUNVVEVJTkZPLgoKMjAwMi0wMS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZmlsZS5oLCBzY2hlZHVsZXIvc3luY2hyby5jOgoJRml4ZWQgY2hlY2tfYXN5bmNfbGlzdCBjYWxsaW5nIGNvbnZlbnRpb24uCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwcy9vYm1fYnRuY29ybmVycywKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9idHNpemUsIGluY2x1ZGUvYml0bWFwcy9vYm1fY2hlY2ssCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fY2hlY2tib3hlcywgaW5jbHVkZS9iaXRtYXBzL29ibV9jb21ibywKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9kbmFycm93LCBpbmNsdWRlL2JpdG1hcHMvb2JtX2RuYXJyb3dkLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX2RuYXJyb3dpLCBpbmNsdWRlL2JpdG1hcHMvb2JtX2xmYXJyb3csCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fbGZhcnJvd2QsIGluY2x1ZGUvYml0bWFwcy9vYm1fbGZhcnJvd2ksCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fbW5hcnJvdywgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfY2xvc2UsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fb2xkX2RuYXJyb3csIGluY2x1ZGUvYml0bWFwcy9vYm1fb2xkX2xmYXJyb3csCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fb2xkX3JlZHVjZSwgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfcmVzdG9yZSwKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfcmdhcnJvdywgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfdXBhcnJvdywKCSAgaW5jbHVkZS9iaXRtYXBzL29ibV9vbGRfem9vbSwgaW5jbHVkZS9iaXRtYXBzL29ibV9yZ2Fycm93LAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3JnYXJyb3dkLCBpbmNsdWRlL2JpdG1hcHMvb2JtX3JnYXJyb3dpLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3NpemUsIGluY2x1ZGUvYml0bWFwcy9vYm1fdHJ0eXBlLAoJICBpbmNsdWRlL2JpdG1hcHMvb2JtX3VwYXJyb3csIGluY2x1ZGUvYml0bWFwcy9vYm1fdXBhcnJvd2QsCgkgIGluY2x1ZGUvYml0bWFwcy9vYm1fdXBhcnJvd2ksIHdpbmRvd3MvY3Vyc29yaWNvbi5jLAoJICBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMi5yYywKCSAgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfYml0bWFwcy5yYzoKCU1vdmVkIHRoZSBPRU0gYml0bWFwcyB0aGF0IGRvbid0IGRlcGVuZCBvbiB0aGUgV2luZSBsb29rIGludG8gdGhlCgl1c2VyMzIgcmVzb3VyY2VzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRnVydGhlciB1bmlmaWVkIEhBTCBhbmQgSEVMIG1peGluZywgYW5kIGFkZGVkIHNvbWUgbW9yZSBpbnRlbGxpZ2VuY2UKCXRvIHByZWJ1ZmZlcmluZywgd2l0aCBzb21lIGJhc2ljIHByZWJ1ZmZlciBjYW5jZWxpbmcgc3VwcG9ydCwgdG8gZ2V0CglyaWQgb2YgbWl4aW5nIGRlbGF5cyBpbiBIYWxmLUxpZmUuIFVzZWQgYSB2ZXJ5IHNtYWxsIHdhdmVvdXQgYnVmZmVyCglxdWV1ZSBpbiBIRUwgbW9kZSwgdXNpbmcgYSBjYWxsYmFjayB0byBxdWV1ZSBhZGRpdGlvbmFsIGJ1ZmZlcnMsIHRvCglnZXQgcmlkIG9mIHBsYXliYWNrIGRlbGF5cyBpbiBIYWxmLUxpZmUuIEZpeGVkIGEgY291cGxlIG9mIGJ1Z3MuCgoJKiBzZXJ2ZXIvY29uc29sZS5jLCBwcm9ncmFtcy93aW5lY29uc29sZS9kaWFsb2cuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvcmVnaXN0cnkuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvdXNlci5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjb2xvciBkZWZpbml0aW9uIChiZyBhbmQgZmcgd2VyZSBzd2FwcGVkKS4KCUZpeGVkIHNvbWUgaW5pdGlhbGlzYXRpb24gaXNzdWVzLgoJRml4ZWQgZXhpdCBjb25kaXRpb24gd2hlbiBub3RoaW5nIHdhcyBhbGxvY2F0ZWQuCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJZiBTYWZlQXJyYXlHZXRFbGVtZW50IGlzIGNhbGxlZCBvbiBhIHZhcmlhbnQgYXJyYXksIGluaXRpYWxpemUKCWRlc3RpbmF0aW9uIHZhcmlhbnQgYmVmb3JlIGNvcHlpbmcgdGhlIGFycmF5IGVsZW1lbnQgdG8gaXQsIHNvbWUgYmFkbHkKCWJlaGF2ZWQgYXBwcyBkb24ndCBzZWVtIHRvIGRvIGl0IHRoZW1zZWx2ZXMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgYSBsb29rcy1saWtlLW5vYm9keS1ldmVyLXRlc3RlZC10aGlzLWZ1bmN0aW9uIGtpbmQgb2YgYnVnIGluCglWYXJpYW50Q29weUluZC4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1hZGUgdGhlIG91dHB1dCBvZiAtLWRlYnVnbXNnICtzZWggYSBiaXQgbW9yZSB2ZXJib3NlLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1ha2UgRHJhd1N0YXR1c1RleHQgVW5pY29kZSByZWFkeS4gR2V0IHJpZCBvZiBhIEhFQVBfc3RyZHVwIGNhbGwuCgoJKiBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYywKCSAgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmgsIGRsbHMvb3BlbmdsMzIvd2dsLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBiZXR0ZXIgc3VwcG9ydCBmb3IgZXh0ZW5zaW9ucyBmdW5jdGlvbnMgdGhhdCBkbyBub3QgaGF2ZSB0aGUgc2FtZQoJICBuYW1lIGluIHdpbmRvd3MgYW5kIGluIFVuaXguCgktIHN1cHBvcnQgdGhlIE5WX3ZlcnRleF9hcnJheV9yYW5nZSBleHRlbnNpb24uCgoyMDAyLTAxLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uc29sZS94dGVybS5jLCBkbGxzL3dpbmVkb3MvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsCgkgIGxpYnJhcnkvcG9ydC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUxpbmsgd2l0aCBsaWJ1dGlsIG9ubHkgd2hlcmUgbmVlZGVkLgoKCSogc2NoZWR1bGVyL3N5bmNocm8uYywgZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT5SCglTZXQgYW4gb3ZlcmxhcHBlZCdzIGhFdmVudCBmb3IgUmVhZEZpbGUvV3JpdGVGaWxlIGluIGFuIG92ZXJsYXBwZWQKCWNvbXBsZXRpb24gZnVuY3Rpb24sIG5vdCBpbiBSZWFkRmlsZUV4IG9yIFdyaXRlRmlsZUV4LgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsCgkgIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbmhlbHAuYywKCSAgb2JqZWN0cy9tZXRhZmlsZS5jLCBvbGUvb2xlMm5scy5jLCB3aW4zMi9maWxlLmMsIHdpbjMyL25ld2Zucy5jLAoJICBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBtaXNjL3JlZ2lzdHJ5LmMsCgkgIGZpbGVzL2NoYW5nZS5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZWF1dDMyL2hhc2guYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsCgkgIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL2RkcmF3L21haW4uYywKCSAgZGxscy9tcHIvd25ldC5jOgoJUmVtb3ZlZCBzb21lIG9mIHRoZSBjYWxscyB0byBIRUFQX3N0cmR1cCogZnVuY3Rpb25zLgoKCSogcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJSW5jbHVkZSA8c3RkbGliLmg+IHRvIGdldCBwcm90b3R5cGUgZm9yIGFicygpIGZ1bmN0aW9uLgoKCSogZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmg6CglKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglOYW1lIG9mIHRoZSBzdHJ1Y3R1cmVkIHN0b3JhZ2UgZmlsZSByb290IG5vZGUgaXMgcGF0aCBvZiB0aGUgZmlsZSwgbm90Cgl0aGUgbmFtZSBvZiB0aGUgcm9vdCBub2RlIHN0b3JlZCBpbiB0aGUgZmlsZS4KCVdoZW4gcmVhZGluZyBzdHJlYW1zIHN0b3JlZCBpbnRvIHN0cnVjdHVyZWQgc3RvcmFnZSBmaWxlcywgRU9GIGlzIG5vdAoJc3VwcG9zZWQgdG8gY2F1c2UgYW4gZXJyb3IgaWYgYXQgbGVhc3Qgb25lIGJ5dGUgY2FuIGJlIHJldHVybmVkLgoKMjAwMS0xMi0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgbGlicmFyeS9NYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJTGluayB3aXRoIGxpYmRsIG9ubHkgd2hlcmUgbmVlZGVkLgoKCSogc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaDoKCUZpeGVkIHN0cmluZyB0eXBlIGluIG5hbWVkIHBpcGUgcmVxdWVzdHMuCgoJKiBtaXNjL2Nkcm9tLmM6CglDaHJpcyBHcmVlbiA8Y2hyaXNfZV9ncmVlbkB5YWhvby5jb20+CglHZXQgdGhlIGNvcnJlY3QgbGFiZWwgb24gaXNvOTY2MCBtaXhlZC1tb2RlIGNkcy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJRml4ZWQgbWVtb3J5IGxlYWsuCglSZW1vdmVkIHJlZHVuZGFudCBJbWFnZUxpc3RfRHJhZ1Nob3dOb2xvY2soRkFMU0UpIGNhbGwuCgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS91c2VyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN3YXAgZmcvYmcgY29sb3IgdG8gYmUgY29ycmVjdC4KCjIwMDEtMTItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTEyMjYuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMTItMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgYmFzaWMgaGFuZGxpbmcgb2YgYXNzZXNzaWJpbGl0eSBhY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJSWYgdGhlIGZjY0hhbmRsZXIgaXMgbW1pb0ZPVVJDQygwLCAwLCAwLCAwKSB0aGUgQVZJIGlzIGFsc28KCXVuY29tcHJlc3NlZC4KCWluZm9QdHItPmhXbmQgd2Fzbid0IHVwZGF0ZWQgaW4gQU5JTUFURV9PcGVuQS4KCgkqIHNlcnZlci9zZWxlY3QuYzoKCVNhdmUgdGhlIHJlZ2lzdHJ5IGJlZm9yZSBleGl0aW5nIG9uIGEgU0lHVEVSTS4KCgkqIG9iamVjdHMvY2xpcHBpbmcuYzoKCU1ha2Ugc3VyZSB0aGUgREMgdmlzaWJsZSByZWdpb24gaXMgdXBkYXRlZCBpbiBHZXRDbGlwQm94LgoKCSogZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBtc2Rvcy9pbnQyMS5jLAoJICBjb25maWd1cmUuaW4sIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBjb25maWd1cmU6CglMaW5rIHRvIHRoZSBjdXJzZXMgbGlicmFyeSBvbmx5IGZvciB0aGUgZGxscyB0aGF0IG5lZWQgaXQuCgoJKiBpbmNsdWRlL2hlYXAuaCwgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5oOgoJUmVtb3ZlZCB0aGUgU0VHUFRSXyogbWFjcm9zLgoKCSogdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZG9jdW1lbnRhdGlvbi9yZWdpc3RyeS5zZ21sLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQW5kcmVhcyBNb2hyIDxhbmRpQHJobHgwMS5maHQtZXNzbGluZ2VuLmRlPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGUuCgoJKiBtZW1vcnkvaGVhcC5jOgoJRml4ZWQgYnVnIGluIHN5c3RlbSBoZWFwIGNyZWF0aW9uIHdoZW4gaXQgYWxyZWFkeSBleGlzdHMuCgoJKiBwcm9ncmFtcy9jb250cm9sL2NvbnRyb2wuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVVwZGF0ZWQgdG8gbm90IHJlbHkgb24gcnVuZGxsMzIuZXhlIGFueSBtb3JlLgoKCSogd2luZG93cy9zeXNjb2xvci5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCUZpeGVkLCBhZGRlZCBvciBpbXBsZW1lbnRlZCBzdHViczoKCS0gRHJhd01lbnVCYXJUZW1wKCk6IGNvcnJlY3RlZCBwYXJhbWV0ZXIgY291bnQuCgktIENhbGxDUExFbnRyeTE2KCk6IHN0dWIuCgktIFNldFN5c0NvbG9yc1RlbXAoKTogZnVsbHkgaW1wbGVtZW50ZWQgKGhvcGVmdWxseSkgdGhpcyB1bmRvY3VtZW50ZWQKCSAgZnVuY3Rpb24uCgoJKiBkbGxzL3gxMWRydi9tb3VzZS5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCUFkZGVkIGNvbG9yIGN1cnNvciBzdXBwb3J0LgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJRGVzdHJveWluZyBjdXJzb3IgaXMgbm90IG5lY2Vzc2FyaWx5IGFuIGVycm9yLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglVc2UgTWFwTFMvVW5NYXBMUyBpbnN0ZWFkIG9mIFNFR1BUUl8qIG1hY3Jvcy4KCgkqIGluY2x1ZGUvd2lucHJvYy5oLCB3aW5kb3dzL2hvb2suYzoKCVJlc3RydWN0dXJlZCBob29rIG1hcHBpbmcgZnVuY3Rpb25zIHRvIGF2b2lkIG1vc3QgbWVtb3J5CglhbGxvY2F0aW9ucy4gR290IHJpZCBvZiBTRUdQVFJfKiBtYWNyb3MuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBkbGxzL21zdmNydC9maWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IGRlZmluaXRpb24gb2YgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gc3RydWN0dXJlLgoKCSogZGxscy9jb21tZGxnL2NkbGdfU3YucmM6CglKb2hhbiBEYWhsaW4gPGpkYWhsaW5AdGVsaWEuY29tPgoJVXBkYXRlZCBTd2VkaXNoIHRyYW5zbGF0aW9uLgoKCSogZGxscy91c2VyL2xzdHIuYywgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuYywKCSAgd2luMzIvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiAqc25wcmludGYgZm9yIEM5OSBzdHlsZSBvdmVyZmxvdyByZXBvcnRpbmcuCgoJKiBpbmNsdWRlL3VzZXIuaCwgZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3VzZXIvbXNnMTYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglVc2UgYWxlcnRhYmxlIHdhaXRzIGluIFBlZWtNZXNzYWdlMTYgYW5kIEdldE1lc3NhZ2UxNiBzbyB3ZSBjYW4KCXByb2Nlc3MgQVBDcyBmb3IgMTZiaXQgY29tbXMuCgoJKiBpbmNsdWRlL21zZG9zLmg6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglHb3QgcmlkIG9mIFdJTkVfUEFDS0VELgoKMjAwMS0xMi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50L2RvY3VtZW50IG9yZGluYWxzIDctMTEuCgoJKiBkbGxzL2dkaS9mcmVldHlwZS5jLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbmNsdWRlIGZ0c25hbWVzLmggb3IgZnRuYW1lcy5oLCBub3QgYm90aC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3dpbm1tL2RyaXZlci5jLAoJICBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1pby5jLAoJICBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jOgoJVXNlIE1hcExTL1VuTWFwTFMgaW5zdGVhZCBvZiBTRUdQVFJfKiBtYWNyb3MuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRm9yd2FyZCB0YWIgbm90aWZpY2F0aW9ucyB0byB0aGUgcGFyZW50LgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCVRyaXZpYWwgZml4ZXMgZm9yIHNobHdhcGkgYW5kIEludGVybmV0IHJvdXRpbmVzLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglGaXhlZCB2c25wcmludGYgcmV0dXJuIHZhbHVlIGNoZWNrLgoKMjAwMS0xMi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvc3lzbWV0cmljcy5oLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJSW1wbGVtZW50ZWQgcHJvY2Vzc2luZyBmb3IgYWN0aW9ucyBTUElfU0VUTU9VU0VCVVRUT05TV0FQLAoJU1BJX1NFVEZBU1RUQVNLU1dJVENILCBTUElfU0VURFJBR0ZVTExXSU5ET1dTLCBTUElfU0VUV09SS0FSRUEuCgoJKiBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsCgkgIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLAoJICBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvaW50dmFyLmgsCgkgIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9tc2MuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc3RhYnMgcGFyc2luZyBmb3IgR0NDIDMuMCAoZGVmYXVsdCB0eXBlcykuCglBZGRlZCBib29sZWFuIHR5cGUgc3VwcG9ydC4KCVNpbXBsaWZpZWQgaW50ZXJuYWwgdHlwZXMgaGFuZGxpbmcuCgoJKiB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2VkaXRsaW5lLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1ZmZlciBsZW5ndGggaW4gaGlzdG9yeSBtYW5pcHVsYXRpb24uCglXcml0aW5nIG5ldyBjaGFycyBtdXN0IGJlIGRvbmUgd2l0aCBkZWZhdWx0IGF0dHJpYnV0ZSAobm90IGNlbGwKCWN1cnJlbnQgYXR0cmlidXRlKS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBmdWxsLWR1cGxleCBjYXBhYmlsaXR5LgoJQWRkZWQgbWlzc2luZyBpbml0IGZvciB3YXZlLWluLgoJRml4ZWQgcGF1c2UgYmVoYXZpb3IgaW4gd2F2ZS1vdXQuCglBZGRlZCBtZXNzYWdlLXJpbmcgZGVsZXRpb24uCglBZGRlZCBleHBlcmltZW50YWwgZnVsbC1kdXBsZXggY2FwYWJpbGl0eS4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhbm90aGVyIGJ1bmNoIG9mIGJ1Z3MgKG1haW5seSBsaW5rZWQgdG8gb3BlcmF0aW9ucyB3aGVyZSBmaWxlCglwb2ludGVyIHdhcyBwYXN0IHRoZSBlbmQgb2YgZmlsZSkuCgoJKiBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywKCSAgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIFJUVEkgc3VwcG9ydC4KCUZpeCB3aGF0X2V4Y2VwdGlvbiBwcm90b3R5cGUuCglGaXggbmV3X2hhbmRsZXJfZnVuYyBwcm90b3R5cGUuCglBZGQgc2V0X25ld19oYW5kbGVyLCBfY2FsbG5ld2gsIF9oZWFwYWRkLgoJQWRkIHN0dWJzIGZvciBfX3VuRE5hbWUgYW5kIF9fdW5ETmFtZUV4LgoJQWRkZWQgYSBzZW1pLXN0dWIgZm9yIF9fQ3h4RnJhbWVIYW5kbGVyLgoKCSogaW5jbHVkZS9tc3ZjcnQvc2V0am1wLmgsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9leGNlcHQuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQgc2V0am1wL3NldGptcDMgYW5kIGxvbmdqbXAuCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSBtb3JlIHRoYW4gOCBiaXRzIHBlciBjb2xvciBjb21wb25lbnQuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWVyZ2VkIHRoZSBoYW5kbGluZyBvZiAxNSBhbmQgMTYgYml0cyBYIHNlcnZlciBkZXB0aHMuCglVc2UgdGhlIG1hc2tzIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gMTUgYW5kIDE2IGJpdHMuCglDaGVjayB0aGUgbWFza3MgYmV0dGVyIGFuZCBjYWxsIGdlbmVyaWMgY29kZSBpZiB0aGV5IGFyZSBub3QKCXN1cHBvcnRlZCBkaXJlY3RseS4KCUNoYW5nZWQgdGhlICdub3RzdXBwb3J0ZWQnIHRyYWNlcyBmcm9tIEZJWE1FcyB0byBXQVJOcy4KCgkqIHNlcnZlci9zZXJpYWwuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglIYW5kbGUgUmVhZEludGVydmFsVGltZW91dD1NQVhEV09SRCBzcGVjaWFsIGNhc2UgYSBiaXQgYmV0dGVyLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCURvbid0IHJldHVybiBmcm9tIG92ZXJsYXBwZWQgUmVhZEZpbGUgb24gRUFHQUlOIGFuZCBvdGhlciBub24tZmF0YWwKCWVycm9ycy4KCgkqIGluY2x1ZGUvbXN2Y3J0L3NoYXJlLmg6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFuZCBpbiBhZGRpdGlvbiB0byBNaW5ndzMyIHdlIHdpbGwgd2FudCB0aGUgXyB2ZXJzaW9ucy4KCjIwMDEtMTItMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIGxvYWRlci9tb2R1bGUuYywKCSAgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLAoJICBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3Byb3BlcnR5LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2JydXNoLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLAoJICBncmFwaGljcy93aW4xNmRydi9wZW4uYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsCgkgIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJVXNlIE1hcExTL1VuTWFwTFMgaW5zdGVhZCBvZiBTRUdQVFJfKiBtYWNyb3MuCgoJKiBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLAoJICBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsCgkgIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbmFwc2hvdC5jLAoJICBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywKCSAgc2NoZWR1bGVyL3N5bmNocm8uYywgc2VydmVyL2FzeW5jLmMsIHNlcnZlci9hc3luYy5oLCBzZXJ2ZXIvYXRvbS5jLAoJICBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLAoJICBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBmaWxlcy9maWxlLmMsIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CgktIG1vdmUgYXN5bmMgYWN0aXZhdGlvbiBpbnRvIHRoZSBzZXJ2ZXIKCS0gaW1wbGVtZW50IGFzeW5jIHF1ZXVlcwoKCSogbWVtb3J5L2dsb2JhbC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2xvYmFsUmVBbGxvYzE2OiBJZiBoZWFwIGhhcyBHbG9iYWxQYWdlTG9jayBzZXQsIHRyeSBvbmx5IHdpdGgKCUhFQVBfUkVBTExPQ19JTl9QTEFDRV9PTkxZIGZsYWcgc2V0LgoKMjAwMS0xMi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgR2xvYmFsUGFnZUxvY2sgZm9yIEdldFZETVBvaW50ZXIzMlcxNiBwb2ludGVycy4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzoKCUZpeGVkIHN0YWNrIG9mZnNldCBpbiByZWxheSBkZWJ1Z2dpbmcgb2YgY2RlY2wgcmVnaXN0ZXIgZnVuY3Rpb25zLgoKCSogbWVtb3J5L2hlYXAuYywgbWVtb3J5L3NlbGVjdG9yLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywKCSAgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgZGxscy9vbGUzMi9pZnMuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwKCSAgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvaGVhcC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvbnRkbGwvcnRsLmM6CglNb3ZlZCBoZWFwIGZ1bmN0aW9ucyB0byBudGRsbC4KCUdvdCByaWQgb2YgaW50ZXJuYWwgaGVhcCBmbGFncy4KCVJlaW1wbGVtZW50ZWQgTWFwTFMgdG8gbm90IGRlcGVuZCBvbiB0aGUgc2VncHRyIGhlYXAuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zdmNydC9zaGFyZS5oOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBZGRlZCBzaGFyZS5oIGZyb20gTWluZ3czMi4KCgkqIFJFQURNRTogQmFuZyBKdW4tWW91bmcgPGp1bnlvdW5nQG1vZ3VhLmNvbT4KCVdpbmUgaXMgbm93IHdvcmtpbmcgb24gTmV0QlNELCBzbyBhZGQgTmV0QlNEIHRvIHRoZSBzdXBwb3J0ZWQgT1MnZXMKCWxpc3QgKGFuZCBhZGQgc29tZSBub3RlcyBhcyB3ZWxsKS4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnRlZCB0aW1lZC1vdXQgbm9uLW92ZXJsYXBwZWQgUmVhZEZpbGUuCgoJKiB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy93cmMuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJUmVwbGFjZWQgTUFYIHdpdGggbWF4IGFuZCBkZWxldGVkIGRlZmluaXRpb24gb2YgTUFYLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJRml4ZWQvaW1wbGVtZW50ZWQgdGhlIEltYWdlTGlzdF8qRHJhZyogZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUlmIHRoZXJlIGlzIG5vIHBzSW5mbywgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNsZWFuZWQgdXAuCgoyMDAxLTEyLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL3RodW5rLmMsCgkgIGluY2x1ZGUvY2FsbGJhY2suaDoKCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgdGh1bmtpbmcgYW5kIGNhbGxvdXQgZnVuY3Rpb25zLgoKCSogbWlzYy9zeXN0ZW0uYzoKCVN0b3JlIHRoZSAxNi1iaXQgY2FsbGJhY2sgaW4gdGhlIHRpbWVyIHN0cnVjdHVyZSBpbnN0ZWFkIG9mIHVzaW5nIGEKCXRodW5rLgoKCSogd2luZG93cy91c2VyLmMsIG1zZG9zL2RwbWkuYywgb2JqZWN0cy9kaWIuYywgc2NoZWR1bGVyL3RocmVhZC5jLAoJICBpZjE2MzIvcmVsYXkuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1lbW9yeS9sb2NhbC5jLAoJICBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGRsbHMvd2luZWRvcy9kb3Nhc3BpLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsCgkgIGRsbHMva2VybmVsL3dvd3RodW5rLmM6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGluY2x1ZGVzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUNhbGwgdGhlIDMyLWJpdCBVU0VSIHNpZ25hbCBwcm9jIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNpbmcgYSBjYWxsb3V0LgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglQYXVsIFJ1cGUgPHBydXBlQG5jLnJyLmNvbT4KCVByZXZlbnQgIndpbmRvdyBiZWxvbmdzIHRvIGFub3RoZXIgcHJvY2VzcyIgZXJyb3JzIHdoZW4gcnVubmluZwoJbXVsdGlwbGUgcHJvZ3JhbXMgc2ltdWx0YW5lb3VzbHkuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC90aHVuay5jOgoJRG8gbm90IGNhbGwgVEhVTktfSW5pdCBhdCBzdGFydHVwLCBvbmx5IGRvIGl0IHdoZW4gdGhlIGFwcCBhY3R1YWxseQoJcmVxdWlyZXMgdGh1bmtzLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIGxvYWRlci9yZXNvdXJjZS5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRXhwb3J0IERlc3Ryb3lJY29uMzIgZnJvbSB1c2VyMzIgYW5kIHVzZSBHZXRQcm9jQWRkcmVzcyB0byBjYWxsIGl0Cglmcm9tIEZyZWVSZXNvdXJjZTE2LgoKCSogd2luZG93cy8uY3ZzaWdub3JlLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL3BhaW50aW5nLmMsCgkgIHdpbmRvd3Mvd2luLmMsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvdXNlci9wcm9wZXJ0eS5jLCBkbGxzL3VzZXIvdGV4dC5jLCBkbGxzL3VzZXIvdGh1bmsuYywKCSAgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy91c2VyL3duZDE2LmM6CglDaGFuZ2VkIDE2LWJpdCBVU0VSIEVudW0qIGZ1bmN0aW9ucyB0byBub3QgdXNlIHRodW5rcywgbm93IHRoYXQgMTYtYml0CglXaW5lbGliIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuCgoJKiB3aW5kb3dzL2hvb2suYywgd2luZG93cy9rZXlib2FyZC5jLCBkbGxzL3VzZXIvbW91c2UuYzoKCUdvdCByaWQgb2YgZHluYW1pYyB0aHVuayBhbGxvY2F0aW9uIGluIG1vdXNlL2tleWJvYXJkIGV2ZW50IHByb2NzIGFuZAoJd2luZG93IGhvb2tzLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBpbmNsdWRlL3NobHdhcGkuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglJbXBsZW1lbnRlZCwgZG9jdW1lbnRlZCBvciBmaXhlZCBTSERlbGV0ZU9ycGhhbktleUEvVywgU0hFbnVtS2V5RXhBL1csCglTSEVudW1WYWx1ZUEvVywgU0hRdWVyeUluZm9LZXlBL1cuIFNIUmVnR2V0UGF0aEEvVywgU0hSZWdTZXRQYXRoQS9XLAoJU0hHZXRWYWx1ZUEvVywgU0hTZXRWYWx1ZUEvVywgU0hRdWVyeVZhbHVlRXhBL1csIFNIRGVsZXRlS2V5QS9XLAoJU0hEZWxldGVFbXB0eUtleUEvVywgU0hEZWxldGVWYWx1ZUEvVywgb3JkaW5hbHMgMzIwLTMyMy4KCgkqIG1lbW9yeS9sb2NhbC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGRlZCBlcnJvciBtZXNzYWdlIGluIExPQ0FMX0dldEJsb2NrKCkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglBbHRlcmVkIHRoZSBhbGdvcml0aG0gZm9yIHNlbGVjdGluZyBhIG5ldyBmb2N1cyBhZnRlciBhIHdpbmRvdyBpcwoJZGVzdHJveWVkIHRoYXQgY3VycmVudGx5IGhhcyB0aGUgZm9jdXMuCgoJKiBkbGxzL2dkaS8uY3ZzaWdub3JlLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpLnNwZWMsCgkgIGRsbHMvZ2RpL3RodW5rLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLAoJICBvYmplY3RzL2xpbmVkZGEuYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJQ2hhbmdlZCAxNi1iaXQgR0RJIEVudW0qIGZ1bmN0aW9ucyB0byBub3QgdXNlIHRodW5rcywgbm93IHRoYXQgMTYtYml0CglXaW5lbGliIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuCgoJKiBvYmplY3RzLy5jdnNpZ25vcmUsIG9iamVjdHMvTWFrZWZpbGUuaW4sIG9iamVjdHMvZGMuYywKCSAgd2luZG93cy9kY2UuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGluY2x1ZGUvZ2RpLmgsCgkgIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dkaS9wcmludGRydi5jOgoJQ2hhbmdlZCBEQyBob29rIGFuZCBhYm9ydCBwcm9jIGhhbmRsaW5nIHRvIGF2b2lkIGhhdmluZyB0byBhbGxvY2F0ZQoJdGh1bmtzIGR5bmFtaWNhbGx5LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogTm9nIDxub2dAc2RmLmxvbmVzdGFyLm9yZz4KCVBhc3Mgb24gYWxsIHVuaGFuZGVsZWQgbWVzc2FnZXMgdG8gdGhlIG93bmVyLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVBhdGhJc1VSTChBfFcpOiBDaGVjayBmb3IgTlVMTCBzdHJpbmdzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCUpvaGFuIERhaGxpbiA8amRhaGxpbkB0ZWxpYS5jb20+CglBZGQgYSBmZXcgZXh0cmEgZmllbGRzIHRvIEhUVFBfR2V0U3RkSGVhZGVySW5kZXguCgoyMDAxLTEyLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL3VzZXIuc3BlYywgd2luZG93cy93aW5wcm9jLmM6CglDaGFuZ2VkIDE2LT4zMiB3aW5kb3cgcHJvY2VkdXJlIHRodW5rcyB0byB1c2Ugd2luZWJ1aWxkLWdlbmVyYXRlZAoJZW50cnkgY29kZSBkaXJlY3RseS4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsCgkgIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywKCSAgaW5jbHVkZS9idWlsdGluMTYuaCwgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpZjE2MzIvYnVpbHRpbi5jLAoJICBpZjE2MzIvcmVsYXkuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9rZXJuZWwvd2luODdlbS5zcGVjLCBkbGxzL2tlcm5lbC93aW5kZWJ1Zy5zcGVjLAoJICBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywgTWFrZS5ydWxlcy5pbiwgZGxscy9rZXJuZWwva2VybmVsLnNwZWM6CglNYWRlIHJlZ2lzdGVyIGFuZCBpbnRlcnJ1cHQgZmxhZ3MgaW5zdGVhZCBvZiBlbnRyeSBwb2ludCB0eXBlcywgc28KCXRoYXQgd2UgY2FuIGhhdmUgYm90aCBzdGRjYWxsIGFuZCBjZGVjbCByZWdpc3RlciBmdW5jdGlvbnMuCglDaGFuZ2VkIDE2LWJpdCAuc3BlYy5jIGZpbGUgZ2VuZXJhdGlvbiB0byBhdm9pZCBpbmNsdWRpbmcgYnVpbHRpbjE2LmguCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luc29jay5oOgoJUGF1bCBSdXBlIDxwcnVwZUBuYy5yci5jb20+CglWZXJ5IHNpbXBsZSBzdXBwb3J0IGZvciBTT19PUEVOVFlQRSBpbiBnZXRzb2Nrb3B0IGFuZCBzZXRzb2Nrb3B0LgoKCSogbGlicmFyeS9wb3J0LmM6CglCYW5nIEp1bi1Zb3VuZyA8anVueW91bmdAbW9ndWEuY29tPgoJTWFrZSB1c2Ugb2Ygc29sYXJpc190cnlfbW1hcCgpIGZvciBOZXRCU0QuIFJlbmFtZSBpdCB0bwoJdHJ5X21tYXBfZml4ZWQoKSBzaW5jZSBpdCdzIG5vIGxvbmdlciBTb2xhcmlzLXNwZWNpZmljLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglCYW5nIEp1bi1Zb3VuZyA8anVueW91bmdAbW9ndWEuY29tPgoJQWRkZWQgY2hlY2sgZm9yIHN0ZGludC5oIChuZWVkZWQgb24gTmV0QlNEKS4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzY29udHJvbC5oOgoJQmFuZyBKdW4tWW91bmcgPGp1bnlvdW5nQG1vZ3VhLmNvbT4KCUZpeCBOZXRCU0QgY29tcGlsYXRpb24gZXJyb3JzLgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCVNpbW9uIFdhbHRvbiA8c2ltb253MkBwYWNiZWxsLm5ldD4KCUZpeGVkIGEgYmFzaGlzbS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglUaGF3ZWQgc29tZSBmcmVlemVzLgoJQ2xlYW5lZCB1cCB0aW1lIGFuZCBub3RpZmljYXRpb24gaGFuZGxpbmcuCglUeXBvcyBmaXhlcyAoR2VyYXJkKS4KCUFkZGVkIGJyZWFrbG9vcCBzdXBwb3J0LgoKMjAwMS0xMi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3BhaW50aW5nLmMsIGRsbHMvdXNlci93bmQxNi5jLAoJICB3aW5kb3dzL3BhaW50aW5nLmM6CglTdGFydGVkIHJld3JpdGUgb2YgcGFpbnRpbmcgZnVuY3Rpb25zIGZvciBtdWx0aXBsZSBwcm9jZXNzZXMuIE1vdmVkCglCZWdpblBhaW50IHRvIGRsbHMvdXNlci4gRml4ZWQgYnVnIGluIHBhaW50IGNvdW50IGhhbmRsaW5nLgoKCSogdG9vbHMvd2luZXNoZWxsbGluazoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSBwbGFjZXMgd2hlcmUgd2hpdGVzcGFjZSB3YXMgbm90IGhhbmRsZWQgY29ycmVjdGx5LgoJRG8gbm90IHVzZSBgY21kYHMgd2l0aGluIGNhdCA8PEVPRiBzaW5jZSBiYXNoMSBzb21ldGltZXMgZ2V0cyBjb25mdXNlZAoJYnkgaXQuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMvdXNlci9jb21tMTYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglPbmx5IFJUU19DT05UUk9MX0hBTkRTSEFLRSBzaG91bGQgc2V0IENSVFNDVFMuCgoJKiBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvd25kLmM6CglFcmljIExhZm9yZXN0IDxlY2xAcGV0LmRocy5vcmc+CglBZGQgdGhlIG1pc3NpbmcgZnVuY3Rpb25hbGl0eSBpbiB0aGUgdHR5IGRyaXZlci4KCjIwMDEtMTItMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLAoJICB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBpbmNsdWRlL3dpbm50LmgsIHJlbGF5MzIvcmVsYXkzODYuYywKCSAgcmVsYXkzMi9zbm9vcC5jLCBkbGxzL250ZGxsLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbjoKCUV4cG9ydGVkIENBTEwzMl9SZWdzIGZyb20gbnRkbGwsIHJlbmFtZWQgdG8gX193aW5lX2NhbGxfZnJvbV8zMl9yZWdzCgl0byBmb2xsb3cgdGhlIG5hbWluZyBjb252ZW50aW9uIGZvciB0aGlzIHR5cGUgb2YgZnVuY3Rpb25zLgoJU3BsaXQgMTYgYW5kIDMyLWJpdCByZWxheSBmdW5jdGlvbnMgaW50byBzZXBhcmF0ZSBmaWxlcywgYW5kIG1vdmVkIHRoZQoJMzItYml0IG9uZXMgdG8gZGxscy9udGRsbC4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIG5ldyBzdHViIE1MTG9hZExpYnJhcnkuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgaW5jbHVkZS9zaGx3YXBpLmgsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmgsIGRsbHMvc2hsd2FwaS9wYXRoLmMsCgkgIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvc2hsd2FwaS91cmwuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkIGV4Y2x1c2lvbiBkZWZzICYgcmVtYWluaW5nIGZ1bmNzLCByZW1vdmUgaW50ZXJuYWwgdHlwZXMgJgoJb2JqX2Jhc2UuaCAoc3luYyB3aXRoIHdpbiB2ZXJzaW9uKSwgZml4ZWQgYSBudW1iZXIgb2YgZnVuY3Rpb24KCXByb3RvdHlwZXMuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJSW1wbGVtZW50ZWQgcHRocmVhZF9yd2xvY2sgc3R1YnMuCgoJKiBjb250cm9scy9idXR0b24uYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJRm9yIGEgcmFkaW8gYnV0dG9uIGV2ZW4gaWYgdGhlIGluaXRpYWwgc3R5bGUgaW5jbHVkZXMgV1NfVEFCU1RPUCB0aGUKCWZpcnN0IEJNX1NFVENIRUNLIDAgd2lsbCBjbGVhciBpdCAoZXZlbiBpZiB0aGUgc3RhdGUgd2FzIGNsZWFyKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQSB0cmVldmlldyBpdGVtIG1heSBiZSBUVklfUk9PVC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoQGNhZGxpbmsuY29tPgoJRml4IGZvciB0b29sYmFyIHBvdGVudGlhbGx5IHVzaW5nIGEgTlVMTCBwb2ludGVyLgoKMjAwMS0xMi0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglBZGRlZCBXSU5fR2V0UmVjdGFuZ2xlcyBmdW5jdGlvbi4KCUZpeGVkIFdpbmRvd0Zyb21Qb2ludCB0byB3b3JrIGFjY3Jvc3MgcHJvY2Vzc2VzLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIGluY2x1ZGUvc3lzbWV0cmljcy5oLCB3aW5kb3dzL3N5c21ldHJpY3MuYywKCSAgd2luZG93cy9zeXNwYXJhbXMuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBwcm9jZXNzaW5nIGZvciBhY3Rpb25zOiBTUElfR0VUL1NFVEdSSURHUkFOVUxBUklUWSwKCVNQSV9HRVQvU0VUSUNPTlRJVExFV1JBUCwgU1BJX0dFVC9TRVRNRU5VRFJPUEFMSUdOTUVOVCwKCVNQSV9HRVQvU0VURE9VQkxFQ0xLV0lEVEgsIFNQSV9HRVQvU0VURE9VQkxFQ0xLSEVJR0hULAoJU1BJX0dFVC9TRVRET1VCTEVDTElDS1RJTUUuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUNoYW5nZSB0aGUgbWVzc2FnZSB0cmFjZSBpbmRlbnRhdGlvbiB0byBiZSBjb25zaXN0ZW50IGJ5IHRocmVhZC4KCgkqIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglGaXggZm9yIHNvbWUgdHlwZXMgb2YgQysrIGRlYnVnIGluZm8gdGhhdCBjYW4gY2F1c2Ugd2luZWRiZyB0byBjcmFzaC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCURJQUxPR19DcmVhdGVJbmRpcmVjdCBjYW4gaW5jb3JyZWN0bHkga2lsbCB0aGUgY3VycmVudCBpbnB1dCBmb2N1cy4KCjIwMDEtMTItMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbnByb2MuYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jOgoJUmVtb3ZlZCBjYWxscyB0byBIRUFQX0dldFNlZ3B0ci4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCUZpeGVkIGNvbXBpbGUgZm9yICFNWl9TVVBQT1JURUQuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIG1lbW9yeS9yZWdpc3RyeS5jOgoJVXNlIG50ZGxsIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIE11bHRpQnl0ZVRvV2lkZUNoYXIvV2lkZUNoYXJUb011bHRpQnl0ZQoJdG8gYXZvaWQgY29ycnVwdGluZyB0aGUgbGFzdCBlcnJvciBjb2RlLgoKCSogaW5jbHVkZS9udGRkay5oLCBtZW1vcnkvY29kZXBhZ2UuYywgZGxscy9udGRsbC9taXNjLmMsCgkgIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcnRsLmMsCgkgIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCVJlbW92ZWQgbnRkbGwgZGVwZW5kZW5jeSBvbiBNdWx0aUJ5dGVUb1dpZGVDaGFyL1dpZGVDaGFyVG9NdWx0aUJ5dGUKCWtlcm5lbDMyIGZ1bmN0aW9ucywgcGx1cyBhIGZldyBzbWFsbCBjbGVhbnVwcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbXN2Y3J0L21iY3R5cGUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvbWJzdHJpbmcuaCwgaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmgsCgkgIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW51cCBhbmQgaW1wcm92ZSB0aGUgbWJjcyBzdXBwb3J0LgoJQWRkIG1iY3R5cGUuaCBhbmQgbWJzdHJpbmcuaC4KCUltcGxlbWVudCBwdXR3YyBhbmQgcHV0d2NoYXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJVGhlIHRvb2xiYXIgY29tbWFuZHMgd2VyZSBub3Qgc2VudCB0byB0aGUgY29ycmVjdCBub3RpZmljYXRpb24KCXdpbmRvdy4KCgkqIGluY2x1ZGUvd2luZS9tbXN5c3RlbTE2LmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLAoJICBpbmNsdWRlL3dpbmUvd2lubmV0MTYuaDoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUZpeGVkIGluY29ycmVjdCBwYWNraW5nLgoKCSogZGxscy9tc3ZjcnQvZW52aXJvbi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCWdldGVudiBpcyBjYXNlIGluc2Vuc2l0aXZlLgoKCSogZGxscy9tc3ZjcnQvdGltZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCW1rdGltZSBtdXN0IG5vcm1hbGl6ZSB0aGUgc3RydWN0IHRtIGZpZWxkcy4KCjIwMDEtMTItMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5lY29uc29sZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3JlZ2lzdHJ5LmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl9wcml2YXRlLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25fdXNlci5oLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5zcGVjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9Fbi5yYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRnIucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX3Jlcy5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CgktIGFsbG93IHRvIHNhdmUvcmVzdG9yZSBzb21lIHByb3BlcnRpZXMgaW50byB0aGUgcmVnaXN0cnkgKGxpa2UgZm9udCwKCSAgY3Vyc29yIHNpemUuLi4pCgktIGltcGxlbWVudCB0aGUgdHdvIHNldHMgb2YgcHJvcGVydGllcyAoZGVmYXVsdCAmIGN1cnJlbnQpCgktIGZpeGVkIHNvbWUgYnVncyBtYWlubHkgaW4gZGlhbG9nCgktIGVuaGFuY2VkIGZvbnQgc2VsZWN0aW9uIG1lY2hhbmlzbXMsCgktIGFkZGVkIGFuZCBwcm90ZWN0ZWQgc3ViLW1lbnUgZm9yIGFsbCBvcGVyYXRpb25zIChzeXNtZW51IGlzIG5vdAoJICBhdmFpbCBpbiBtYW5hZ2VkIG1vZGUpCgktIGJldHRlciBkYXRhIHNlcGFyYXRpb24gZm9yIHRoZSBiYWNrZW5kKHMpCgoJKiBzZXJ2ZXIvY29uc29sZS5oLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvY29uc29sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglMZXQgdGhlIGNvbnNvbGUgcmVuZGVyZXIgYmUgZGVmaW5lZCBhcyBhIHRocmVhZC4KCgkqIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uaDoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJT25seSBpbmNsdWRlIHRoZSBuZWNlc3NhcnkgZmlsZXMgdG8gYXZvaWQgY29uZmxpY3RzIGluIGdldGhvc3RuYW1lCglwcm90b3R5cGVzIGJldHdlZW4gd2luc29jay5oIGFuZCB1bmlzdGQuaAoKCSogb2JqZWN0cy9iaXRtYXAuYzoKCUVyaWsgSW5nZSBCb2xz+CA8a25hbkBtby5oaW1vbGRlLm5vPgoJQ3JlYXRlQml0bWFwIGNhbiB0YWtlIG5IZWlnaHQgb3IgbldpZHRoID0gemVybywgYW5kIHRoZW4gcmV0dXJucyBhCglwb2ludGVyIHRvIGEgMXgxIG1vbm9jaHJvbWUgYml0bWFwLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgXzE2OSAoY2FsbCBvZiBSZWxlYXNlKS4gVGhpcyBmaXhlcyBjcmFzaGVzCgkgIHdoZW4gYWN0dWFsbHkgYXR0ZW1wdGluZyB0byBjYWxsIFJlbGVhc2UuCgktIENvcnJlY3Qgc29tZSB0cmFjZXMuCgoJKiBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kb3Nhc3BpLmMsIG1zZG9zL2Rvc21lbS5jLAoJICBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDE3LmMsCgkgIG1zZG9zL2ludDE5LmMsIG1zZG9zL2ludDIwLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI5LmMsCgkgIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDMzLmMsIG1zZG9zL2ludGVycnVwdHMuYywgbXNkb3MvaW9wb3J0cy5jLAoJICBtc2Rvcy92Z2EuYywgbXNkb3MveG1zLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9kb3NleGUuaCwKCSAgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvdmdhLmgsIG1pc2NlbXUvbWFpbi5jLAoJICBncmFwaGljcy9kaXNwZGliLmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywKCSAgZGxscy93aW5lZG9zL01ha2VmaWxlLmluLCBkbGxzL3dpbmVkb3MvZGV2aWNlcy5jLAoJICBkbGxzL3dpbmVkb3MvZG9zYXNwaS5jLCBkbGxzL3dpbmVkb3MvZG9zZXhlLmgsIGRsbHMvd2luZWRvcy9kb3N2bS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MDkuYywgZGxscy93aW5lZG9zL2ludDEwLmMsIGRsbHMvd2luZWRvcy9pbnQxNi5jLAoJICBkbGxzL3dpbmVkb3MvaW50MTcuYywgZGxscy93aW5lZG9zL2ludDE5LmMsIGRsbHMvd2luZWRvcy9pbnQyMC5jLAoJICBkbGxzL3dpbmVkb3MvaW50MjEuYywgZGxscy93aW5lZG9zL2ludDI5LmMsIGRsbHMvd2luZWRvcy9pbnQzMS5jLAoJICBkbGxzL3dpbmVkb3MvaW50MzMuYywgZGxscy93aW5lZG9zL2lvcG9ydHMuYywgZGxscy93aW5lZG9zL21vZHVsZS5jLAoJICBkbGxzL3dpbmVkb3MvdmdhLmMsIGRsbHMvd2luZWRvcy92Z2EuaCwgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywKCSAgZGxscy93aW5lZG9zL3htcy5jLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLAoJICBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYzoKCU1vdmVkIG1vc3Qgb2YgdGhlIHJlYWwtbW9kZSBzdHVmZiB0byBkbGxzL3dpbmVkb3MuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQWRkZWQgU1lOQ0hST05JWkUgYWNjZXNzIHRvIHN0ZGlvIGhhbmRsZXMuCgoJKiBkbGxzL2tlcm5lbC9jb25zb2xlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvcHkgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGJ5dGVzIGluIFdyaXRlQ29uc29sZUlucHV0QS4KCgkqIGRsbHMvd2lubW0vbW1pby5jLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1Z3MgaW4gb3V0cHV0IGZ1bmN0aW9ucyAod3JpdGUpLgoJUmV3cm90ZSBzb21lIHBhcnRzIGZvciBiZXR0ZXIgRExMIHNlcGFyYXRpb24uCglGaXhlZCBzb21lIHByb3RvdHlwZXMuCglGaXhlZCBtbWlvQWR2YW5jZSBpbiB3cml0ZSBtb2RlLgoKCSogZGxscy9tc2FjbS9mb3JtYXQuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYWNtRm9ybWF0Q2hvb3NlIHJldHVybmVkIGZpZWxkcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUluaXRpYWxpemUgZGlhbG9nIGRhdGEgY29ycmVjdGx5IGluIENyZWF0ZVRlbXBsYXRlRGlhbG9nLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJTWlzYyBmaXhlcyB0byBEQ0IgYnVpbGRpbmcgZnJvbSBjb21tYW5kIGxpbmUuCgoJKiB0b29scy93aW5lY29uZjoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUJldHRlciBoYW5kbGluZyBvZiBjb25maWd1cmF0aW9uIHdpdGggc2V2ZXJhbCBXaW5kb3dzIGluc3RhbGxhdGlvbnMuCgoyMDAxLTEyLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJVW5kb2N1bWVudGVkIGZlYXR1cmUgb2YgVEJfe0dFVHxTRVR9QlVUVE9OSU5GT3tBfFd9OiBpZiBtYXNrIGhhcwoJMHg4MDAwMDAwMCBzZXQgdGhlbiB0aGUgY29tbWFuZCBpZCBpcyByZWFsbHkgdGhlIGluZGV4LgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLAoJICBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBGaXhlZCBQYXRoSXNVUkx7QXxXfS4KCS0gSW1wbGVtZW50ZWQgUGF0aFJlbmFtZUV4dGVuc2lvbntBfFd9LCBTSFJlZ0R1cGxpY2F0ZUhLZXksCgkgIENockNtcEl7QXxXfS4KCS0gQWRkZWQgZm9yd2FyZHMgdG8gRHJhd1RleHRXLCBDcmVhdGVEaWFsb2dQYXJhbUEsIENyZWF0ZUZvbnRXLAoJICBUcmFjZVBvcHVwTWVudUV4LgoKCSogaW5jbHVkZS9zaGx3YXBpLmgsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS91cmwuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFN0dWIgcm91dGluZXMgZm9yIF8xNjQsIF8yMDgsIF8yMTAsIF8yMTEsIF8yMzksIF8zNTYsIF80MTMsIF80MzcsCgkgIENvbG9yUkdCVG9ITFMKCS0gSW1wbGVtZW50IHJvdXRpbmVzIGZvciBfMTcyLCBfMTc0LCBfMTc2LCBfMTk5LCBfMjE1LCBfMjE5LCBfMjM2LCBfMzc3LAoJICBfMzc4LCBVcmxDb21wYXJle0F8V30sIFVybEFwcGx5U2NoZW1le0F8V30uCgktIEZpeCByb3V0aW5lcyBfMjE3LCBfMTY5LCBfMjQwLCBfMjc2LCBfMzQyLCBfMzc2LgoKMjAwMS0xMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdXNlci5oLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdXNlci5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglSZW1vdmVkIEdldC9TZXRTY3JlZW5TYXZlVGltZW91dCB1c2VyIGRyaXZlciBmdW5jdGlvbnMgYmVjYXVzZSB0aGV5CglhcmUgbm90IHVzZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUltcGxlbWVudGVkIEltYWdlTGlzdF9HZXREcmFnSW1hZ2UuCglGaXhlZCBJbWFnZUxpc3RfU2V0RHJhZ0N1cnNvckltYWdlIGFuZCBJbWFnZUxpc3RfTWVyZ2UuCglObyBuZWVkIGZvciBTdHJldGNoQmx0IGluIEltYWdlTGlzdF9CZWdpbkRyYWcuCglBZGRlZCBzb21lIHRyYWNlcy4KCgkqIGRsbHMveDExZHJ2L2RnYTIuYzoKCUdsZW5uIFNjaHJhZGVyIDxnZXNjaHJhZGVyQG1lZGlhb25lLm5ldD4KCVVzZSBnZGlfZGlzcGxheSBldmVyeXdoZXJlIHRvIGF2b2lkIEJhZENvbG9yIGVycm9ycy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCVJlbW92ZSBzb21lIHBvc3NpYmxlIGludGVybG9ja2luZyBwcm9ibGVtcyB3aXRoIHBlYiBsb2NrLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJUGF1bCBSdXBlIDxwcnVwZUBuYy5yci5jb20+CglGaXhlZCBXU19nZXRwZWVybmFtZSBwYXJhbWV0ZXIgaW4gV1NfYWNjZXB0LgoJQ2hhbmdlZCBvcmRlciBvZiBldmVudCBwcm9jZXNzaW5nIGluIFdJTlNPQ0tfRG9Bc3luY0V2ZW50LgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJbWFwX2ltYWdlOiBtYXAgdGhlIFBFIGhlYWRlciByZWFkb25seS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJQW5kcmV3IExld3lja3kgPGFuZHJld0B0cmFuc2dhbWluZy5jb20+Cglkb19yZWxvY2F0aW9uczogcHJvY2VzcyByZWxvY2F0aW9uIGJsb2NrcyB3aXRoIGEgVmlydHVhbEFkZHJlc3Mgb2YgMCwKCXN0b3Agb25jZSBTaXplT2ZCbG9jayA9PSAwLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuY29tPgoJUmVuYW1lIGRlYnVnLmggdG8gZGVidWd0b29scy5oLgoKCSogd2luZG93cy93aW5wb3MuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9pbnB1dC5jLAoJICB3aW5kb3dzL21lc3NhZ2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLAoJICB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RpbWVyLmMsCgkgIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvd2luZG93LmMsIHNlcnZlci9hc3luYy5jLCBzZXJ2ZXIvYXRvbS5jLAoJICBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9jb25zb2xlLmgsCgkgIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2NvbnRleHRfc3BhcmMuYywgc2VydmVyL2RlYnVnZ2VyLmMsCgkgIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywKCSAgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9uYW1lZF9waXBlLmMsCgkgIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlZ2lzdHJ5LmMsCgkgIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZWxlY3QuYywKCSAgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbmFwc2hvdC5jLAoJICBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIG1zZG9zL3ZnYS5jLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsCgkgIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzY2hlZHVsZXIvdGltZXIuYywKCSAgbWVtb3J5L2F0b20uYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1lbW9yeS9zZWxlY3Rvci5jLAoJICBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL29wdGlvbnMuYywgbWlzYy9yZWdpc3RyeS5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyLmgsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwKCSAgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgaW5jbHVkZS90aHJlYWQuaCwKCSAgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luY29uLmgsIGRsbHMvdXNlci9tZXNzYWdlLmMsCgkgIGRsbHMvdXNlci9wcm9wZXJ0eS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2NoYW5nZS5jLAoJICBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLAoJICBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9vbS5jLAoJICBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sCgkgIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvY29uc29sZS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLAoJICBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsCgkgIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCVJlZGVzaWduIG9mIHRoZSBzZXJ2ZXIgY29tbXVuaWNhdGlvbiBwcm90b2NvbCB0byBhbGxvdyBhcmJpdHJhcnkgc2l6ZWQKCWRhdGEgdG8gYmUgZXhjaGFuZ2VkLgoJU3BsaXQgcmVxdWVzdCBhbmQgcmVwbHkgc3RydWN0dXJlcyB0byBtYWtlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CgllYXNpZXIuCglNb3ZlZCBtYW55IGNvbnNvbGUgZnVuY3Rpb25zIHRvIGRsbHMva2VybmVsLCBhZGRlZCBjb2RlIHBhZ2Ugc3VwcG9ydCwKCWNoYW5nZWQgYSBmZXcgcmVxdWVzdHMgdG8gYmVoYXZlIHByb3Blcmx5IHdpdGggdGhlIG5ldyBwcm90b2NvbC4KCjIwMDEtMTEtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9mb250X2NvbnZlcnQuc2gsIGRvY3VtZW50YXRpb24vZGIyaHRtbC13aW5laHEsCgkgIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHE6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglBdm9pZCBwb3RlbnRpYWwgcHJvYmxlbXMgd2l0aCBmaWxlbmFtZXMgY29udGFpbmluZyBzcGFjZXMuCgoJKiB3aW4zMi9jb25zb2xlLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU5vdyBwYXNzaW5nIGV2ZW50IHdpdGggLS11c2UtZXZlbnQgdG8gbGV0IHByb2dyYW1zIHN0YXJ0aW5nIHdpdGgKCWRpZ2l0cyBiZWluZyBydW4uCgoJKiBtaXNjZW11L21haW4uYzoKCUpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHByaW5jZS5uZXQ+CgltbXN5c3RlbS5kbGwgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkIGZvciAxNi1iaXQgYXBwcy4KCgkqIGRlYnVnZ2VyL2RlYnVnLmw6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIElPIHdoZW4gbm90IHJ1biB3aXRoIHdpbmVjb25zb2xlLgoKMjAwMS0xMS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVjb25zb2xlL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLAoJICBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluOgoJQ29tcGlsZSBhbGwgcHJvZ3JhbXMgd2l0aCAtRFNUUklDVCAtRE5PTkFNRUxFU1NVTklPTiAtRE5PTkFNRUxFU1NTVFJVQ1QuCgoJKiBzZXJ2ZXIvd2luZG93LmM6CglTa2lwIHF1ZXVlIGNsZWFudXBzIGlmIHF1ZXVlIGhhcyBiZWVuIGRlc3Ryb3llZCBhbHJlYWR5LgoKCSogZGxscy9udGRsbC9yZWcuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUZpeGVkIHJlZ2lzdHJ5IHJvdXRpbmVzIGJyb2tlbiBieSB0aGUgc3RydWN0dXJlIHNpemVzIGZpeC4KCjIwMDEtMTEtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGVidWdnZXIuaCwKCSAgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9zb3VyY2UuYywKCSAgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglSZXZpc2l0ZWQgY29uc29sZSBzdXBwb3J0IChnb3QgcmlkIG9mIG9sZCBoYWNrcyBhbmQgcHJpdmF0ZSBlZGl0bGluZQoJc2luY2Ugd2Ugbm93IGhhdmUgYSBicmFuZCBuZXcgY29uc29sZSksIHJlbW92ZWQgcHJpdmF0ZSBkZWJ1ZyBoZWFwLgoKCSogd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZWRpdGxpbmUuYywKCSAgdG9vbHMvbWFrZV9yZXF1ZXN0cywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2NvbnNvbGUuaCwKCSAgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL29iamVjdC5oLAoJICBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGUuc3BlYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfRW4ucmMsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlX0ZyLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS93aW5lY29uc29sZV9yZXMuaCwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbnNvbGVfcmVzLnJjLAoJICBwcm9ncmFtcy93aW5lY29uc29sZS8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5lY29uc29sZS9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVjb25zb2xlL3VzZXIuYywKCSAgcHJvZ3JhbXMvd2luZWNvbnNvbGUvd2luZWNvbl9wcml2YXRlLmgsCgkgIHByb2dyYW1zL3dpbmVjb25zb2xlL3dpbmVjb25zb2xlLmMsIGxvYWRlci9tb2R1bGUuYywKCSAgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbmNvbi5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBmaWxlcy9maWxlLmMsCgkgIGNvbmZpZ3VyZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTmV3IGNvbnNvbGUgY29kZSBiYXNlZCBvbiBXaW4zMiB3aW5kb3dzLgoKCSogbXNkb3MvdnhkLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvcmVnaXN0cnkuYywgZGxscy9udGRsbC9yZWcuYywKCSAgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLAoJICBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbmIzMC5oLCBpbmNsdWRlL250ZGRrLmgsCgkgIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZ2RpLmgsCgkgIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW51c2VyLmgsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBwYWNraW5nIGFuZCBsYXlvdXQgb2YgbWFueSBzeXN0ZW0gc3RydWN0dXJlcy4KCgkqIGRsbHMvbXN2Y3J0L2Vudmlyb24uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1TVkNSVF9nZXRlbnY6IGNvbXBhcmUgZm9yIHRoZSBsZW5ndGggb2YgdGhlIGtleSBhbmQgcmV0dXJuIE5VTEwgaW4KCWNhc2Ugb2YgZmFpbHVyZS4KCgkqIGRvY3VtZW50YXRpb24vcGFja2FnaW5nLnNnbWw6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmNvbT4KCUFkZCBtaXNzaW5nIDwvcGFyYT4uCgoJKiBkbGxzL3VzZXIvY29tbTE2LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJQ2hlY2sgZm9yIGNvbXBsZXRlZCBvdmVybGFwcGVkcyBpbiBSZWFkQ29tbTE2IHRvIHNvbHZlIHByb2JsZW1zIHdpdGgKCXByb2dyYW1zIHRoYXQgbG9vcCBvbiBpdCBidXQgZG9uJ3QgZ2V0IGRhdGEuCgoJKiBpbmNsdWRlL21zdmNydC9zeXMvdHlwZXMuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCV9kZXZfdCBpcyBhbiB1bnNpZ25lZCBpbnRlZ2VyLgoKMjAwMS0xMS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIHByb2Nlc3NpbmcgZm9yIGFjdGlvbnMgU1BJX0dFVC9TRVRTQ1JFRU5TQVZFVElNRU9VVCwKCVNQSV9HRVQvU0VUU0NSRUVOU0FWRUFDVElWRSwgU1BJX0dFVC9TRVRTQ1JFRU5TQVZFUlJVTk5JTkcuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglHZXRVc2VyTmFtZSBzaG91bGQgaW5jbHVkZSB0aGUgdGVybWluYXRpbmcgbnVsbCBjaGFyYWN0ZXIgd2hlbgoJcmV0dXJuaW5nIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcmV0dXJuZWQuIENvcnJlY3RseSBoYW5kbGUgdGhlCglFUlJPUl9NT1JFX0RBVEEgY2FzZS4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCVVzZSBleGNlcHRpb24gaGFuZGxlciBmb3IgR2xvYmFsVW5sb2NrLCBHbG9iYWxGcmVlLgoKCSogZGxscy93aW5lZG9zL2ludDA5LmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgd2luZG93cy9jdXJzb3JpY29uLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMvbXNybGUzMi9tc3JsZTMyLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dpbnNvY2suYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYXZpY2FwMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbWFwaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zaW1nMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNybGUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2ZnczMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9uZXRhcGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3N0aS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybG1vbi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5lZG9zLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCVRPT0xCQVJfR2V0UmVjdCBkaWQgbm90IGNvcnJlY3RseSB0cmFuc2xhdGUgdGhlIGNvbW1hbmQgSUQgdG8gdGhlCglidXR0b24gaW5kZXguCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJRHVzYW4gTGFja28gPGRsYWNrb0Bjb2Rld2VhdmVycy5jb20+CglBZGQgRGViaWFuL01hbmRyYWtlIG1lbnUgc3lzdGVtIHN1cHBvcnQuCgoJKiB3aW5kb3dzL2NsYXNzLmM6CglCaWxsIE1lZGxhbmQgPEJpbGwuTWVkbGFuZEBhY2NwYWMuY29tPgoJSXQgaXMgbGVnYWwgdG8gY2FsbCBVbnJlZ2lzdGVyQ2xhc3Mgd2l0aCBhbiBoSW5zdGFuY2Ugb2YgemVyby4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYywgc2VydmVyL2NvbnRleHRfc3BhcmMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJT25seSBpbmNsdWRlICdzeXMvdXNlci5oJyBmb3IgTGludXguIEZpeGVzIGEgY29tcGlsYXRpb24gZXJyb3Igb24KCUZyZWVCU0QgNS4wLgoKCSogaW5jbHVkZS93aW5udC5oLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9udGRsbC9udC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggTFVJRCBkZWZpbml0aW9uLgoKCSogd2luZG93cy9zcHkuYywgaW5jbHVkZS93aW51c2VyLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydCBtZXNzYWdlIHNweSB0byB1bmljb2RlLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJRml4IGxvY2sgdXAgaW4gR2V0S2V5TmFtZVRleHQgZHVlIHRvIGFuIGluY3JlbWVudCB3cmFwIHdoZW4gS2V5Q29kZSBpcwoJYSBjaGFyIHR5cGUgYW5kIG1heF9rZXljb2RlIGlzIDI1NS4KCjIwMDEtMTEtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9leGNlcHQuYywgd2luMzIvdGltZS5jLCBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmMsCgkgIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmMsIHNjaGVkdWxlci9wdGhyZWFkLmMsCgkgIHRvb2xzL3dpbmVpbnN0YWxsLCBtc2Rvcy9pbnQyMS5jLCBtaXNjL2Nkcm9tLmMsIGZpbGVzL2RpcmVjdG9yeS5jLAoJICBmaWxlcy9kb3NfZnMuYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbCwgZGxscy94MTFkcnYvZGdhMi5jLAoJICBkbGxzL3dpbmVwcy93cHNfRGUucmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLAoJICBkbGxzL29sZTMyL2NvbXBvYmouYywgY29udHJvbHMvRURJVC5UT0RPLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CgktIGZpeCB3cm9uZyBoZXhhZGVjaW1hbCBHZXRMYXN0RXJyb3IoKSBvdXRwdXQKCS0gbWlzYyBmaXhlcwoJLSBjaGFuZ2VkIG15IGVtYWlsIGFkZHJlc3MKCgkqIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIHNlcnZlci9wcm9jZXNzLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJUHJldmVudCB3YXJuaW5ncyBhYm91dCBsYWJlbHMgYXQgZW5kIG9mIHN3aXRjaCBzdGF0ZW1lbnRzIHdoZW4KCWNvbXBpbGluZyB3aXRoIGdjYy0zLnguCgoJKiBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywgZGxscy93c29jazMyL3NvY2tldC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIFNvbGFyaXMgYW5kIEZyZWVCU0QgY29tcGlsYXRpb24gZXJyb3JzIGludHJvZHVjZWQgYnkgdGhlCglyZWNlbnQgd2luc29jayB1cGRhdGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVNpbW9uIEJyaXRuZWxsIDx1Z2hiYXNoQHlhaG9vLmNvbT4KCUZpeCBhIGxvb3AgcGxheWluZyBmYWlsdXJlIGFuZCBhIHByb2JsZW0gd2l0aCBjaG9wcHkgc291bmQuCgoJKiBpbmNsdWRlL21zdmNydC9wcm9jZXNzLmgsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsCgkgIGRsbHMvc2hsd2FwaS91cmwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQSBmZXcgdHlwb3MuCgoJKiBpbmNsdWRlL3JwY25kci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNSURMX1NUVUJfTUVTU0FHRSBuZWVkcyBhIHBhY2s0IGZvciB0aGUgTWF4Q291bnQgZmllbGQuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglCZXR0ZXIgcmVsYXlpbmcgZm9yIF9sY3JlYXQuCgoJKiBkbGxzL2F2aWNhcDMyL2F2aWNhcDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIHR5cG8gaW4gYXZpY2FwMzIuc3BlYyBmaXhlZC4KCgkqIHdpbmRvd3Mvd2luLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGaXggZXhjaGFuZ2VkIGxpbmVzIGluIFdJTl9HZXRXaW5kb3dMb25nLgoKMjAwMS0xMS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglUcnVuY2F0ZSB0aGUgd2luZG93IHRleHQgaWYgaXQgaXMgdG9vIGxhcmdlIGZvciB0aGUgcmVxdWVzdCBidWZmZXIuCgoJKiB3aW5kb3dzL2NsYXNzLmM6CglKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwcmluY2UubmV0PgoJTG9jYWwgY2xhc3NlcyByZWdpc3RlcmVkIHdpdGggVVNFUiBpbnN0YW5jZSBoYW5kbGUgbm93IGFyZSBub3cgZm91bmQKCWluIENMQVNTX0ZpbmRDbGFzc0J5QXRvbS4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaCwgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jOgoJSnVzc2kgSnVtcHBhbmVuIDxqdXNzaWpAemV1c2VkaXQuY29tPgoJQWRkZWQgbWlzc2luZyBSaWNoRWRpdCBkZWZpbmVzLgoKMjAwMS0xMS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2luLmgsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvdXNlci5oLCBzZXJ2ZXIvd2luZG93LmM6CglNb3ZlZCBXSU5fRmluZFdpblRvUmVwYWludCBmdW5jdGlvbmFsaXR5IHRvIHRoZSBzZXJ2ZXIuCgoJKiBzZXJ2ZXIvc29jay5jLCBpbmNsdWRlL3dpbmUvd2luc29jazE2LmgsIGluY2x1ZGUvTWFrZWZpbGUuaW4sCgkgIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93aW5zb2NrMi5oLAoJICBpbmNsdWRlL3dzMnRjcGlwLmgsIGluY2x1ZGUvd3NpcHguaCwgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBkbGxzL3dpbnNvY2svd2luc29jay5zcGVjLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsCgkgIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsCgkgIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2Ugd2luc29jay5oIGFuZCB3aW5zb2NrMi5oIGluZGVwZW5kZW50IGZyb20gdGhlIFVuaXggaGVhZGVycy4KCU1ha2UgdGhlbSBjb21wYXRpYmxlIHdpdGggYm90aCB0aGUgVW5peCBDIGhlYWRlcnMgYW5kIHRoZSBNU1ZDUlQKCWhlYWRlcnMuCglFbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBVbml4IGhlYWRlcnMgdmlhIHRoZSBVU0VfV1NfUFJFRklYCgltYWNyby4KCUFkZCBXSU5FX05PV0lOU09DSzogcHJldmVudHMgd2luc29jay5oIGZyb20gYmVpbmcgaW5jbHVkZWQgZnJvbQoJd2luZG93cy5oIHdoZW4gZGVmaW5lZC4KCUFkZCB3czJ0Y3BpcC5oLCBtb3ZlIGRlZmluaXRpb25zIHRvIHRoZSByaWdodCBoZWFkZXIuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVN0cnVjdHVyZSBORVdURVhUTUVUUklDIHVzZXMgcGFja2luZyA0LgoKCSogaW5jbHVkZS9tYXBpZGVmcy5oOgoJSnVzc2kgSnVtcHBhbmVuIDxqdXNzaWpAemV1c2VkaXQuY29tPgoJQWRkZWQgbWlzc2luZyBNQVBJIGRlZmluZXMuCgoyMDAxLTExLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbi5jLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VuaWNvZGUuaCwgc2VydmVyL3VzZXIuaCwKCSAgc2VydmVyL3dpbmRvdy5jOgoJU3RvcmUgdGhlIHdpbmRvdyBjYXB0aW9uIHRleHQgaW4gdGhlIHNlcnZlci4KCU1haW50YWluIGEgcGFpbnQgY291bnQgc2VwYXJhdGVseSBmb3IgZWFjaCB3aW5kb3cuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeCB0aGUgc2VydmVyIHBhaW50IGNvdW50IGluIFNldFdpbmRvd1Bvcy4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgd2F2ZShJbnxPdXQpT3BlbiB3aGVuIGNhbGxlZCB3aXRoIFdBVkVfTUFQUEVEIGZsYWc7IHNvbWUgbWlub3IKCTE2LzMyIEFQSSBjYWxsIG9yZGVyaW5nLgoKCSogd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBwcm9jZXNzaW5nIGZvciBTUElfR0VUL1NFVE1PVVNFLCBTUElfR0VUL1NFVEtFWUJPQVJEREVMQVksCglTUElfR0VUL1NFVEtFWUJPQVJEU1BFRUQgYWN0aW9ucy4gSW1wbGVtZW50ZWQgdXNlIG9mIG1vdXNlCglhY2NlbGVyYXRpb24vdGhyZXNob2xkIGZvciByZWxhdGl2ZSBtb3VzZSBtb3ZlbWVudHMuCgoJKiBjb250cm9scy9lZGl0LmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglFRElUX0VNX0xpbmVMZW5ndGggY2FsbGVkIGZyb20gd2l0aGluIEVESVRfRU1fTGluZUxlbmd0aCBuZWVkcwoJc3RhcnRpbmcgbGluZSBjaGFyIGluZGV4LCBub3QgbGluZSBpbmRleCAoPT0gbGluZSBudW1iZXIpLgoKCSogaW5jbHVkZS9zaGx3YXBpLmgsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3VybC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IG9yZGluYWxzIDcsIDgsIDksIDEzLCAxNCwgMTksIDM2LgoJLSBJbXBsZW1lbnQgU0hSZWdXcml0ZVVTVmFsdWV7QXxXfSwgVXJsR2V0UGFydHtBfFd9LCBVcmxJcy4uLntBfFd9CgoyMDAxLTExLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgcmFjZSBjb25kaXRpb25zIGluIG5vdGlmaWNhdGlvbiB2cy4gb3BlcmF0aW9uCglzeW5jaHJvbml6YXRpb24gdXNpbmcgdGhlIHNhbWUgaW4gcHJvY2VzcyBtZXNzYWdlIHJpbmcgaW4gd2F2ZUluIGFzIGluCgl3YXZlT3V0LgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXhlcyBzdHVwaWQgYnVnIHdpdGggdHlwZWxpYiBmaWxlbmFtZXMuCgoJKiBkbGxzL3VzZXIvd25kMTYuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUNhc3QgaWQgdG8gdW5zaWduZWQgaW4gR2V0RGxnSXRlbTE2LgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJR2Vyc29uIEt1cnogPEdlcnNvbi5LdXJ6QHBlcmdhbW9uLXNvZnR3YXJlLmRlPgoJUGFyaXR5IHNldHRpbmdzIHdlcmUgbm90IHNldCBwcm9wZXJseSBpbiBCdWlsZENvbW1EQ0JBbmRUaW1lb3V0cygpCgliZWNhdXNlIG9mIGFuIG9mZi1ieS1vbmUgZXJyb3IuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4ZWQgaGFuZGxpbmcgb2YgLTEgaXRlbWlkIGluIFdNX0RSQVdJVEVNLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvdGltZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJLSBpbXBsZW1lbnQgbWJzY3NwbiBtb3N0bHkgYXMgYSBzdHViCgktIHJlaW1wbGVtZW50IG1rdGltZQoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYzoKCUFuZHJlYXMgTW9ociA8YW5kaUByaGx4MDEuZmh0LWVzc2xpbmdlbi5kZT4KCS0gZG9uJ3QgZm9yZ2V0IHRvIGluaXRpYWxpemUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRvIDAKCS0gYWRkICJSQVMgZG9lc24ndCB3b3JrIiB3YXJuaW5nCgoyMDAxLTExLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglTaW1vbiBCcml0bmVsbCA8dWdoYmFzaEB5YWhvby5jb20+CglDbGVhbmVkIHVwIHRoZSB3b2RQbGF5ZXIgZnVuY3Rpb25hbGl0eSB0byBtYWtlIGl0IGVhc2llciB0byBmb2xsb3cuCglDaGFuZ2VkIG5vdGlmaWNhdGlvbiB0byBiZSBjYWxjdWxhdGVkIGZyb20gYnl0ZXMgcGxheWVkIHJhdGhlciB0aGFuCgl0aW1lIGVsYXBzZWQuCgoJKiBkbGxzL21zYWNtL2RyaXZlci5jOgoJVHJhdmlzIE1pY2hpZWxzZW4gPHRqbWljaGllbHNlbkB5YWhvby5jb20+CglUZXN0IGJpdHMgd2l0aCAnJicgaW5zdGVhZCBvZiAnJiYnLgoKCSogd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIFNQSV9JQ09OSE9SSVpPTlRBTFNQQUNJTkcsIFNQSV9JQ09OVkVSVElDQUxTUEFDSU5HIHN5c3RlbQoJcGFyYW1ldGVycyBwcm9jZXNzaW5nLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgaGFuZGxpbmcgb2Ygc3RyaW5ncyBpbiBzZXRWYWx1ZS4KCUJldHRlciBoYW5kbGluZyBvZiBzdHIoeCkgYW5kIGhleCh4KSBpbiBzZXRWYWx1ZS4KCU1pc2MgdHlwb3MuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+bwoJRG9jdW1lbnQgdGhlIG5ldyAtd2ludmVyIHZlcnNpb25zLgoKCSogZGxscy91c2VyL3duZDE2LmM6CglKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwcmluY2UubmV0PgoJQ2hhbmdlZCBCTV8gbWVzc2FnZXMgU0VUQ0hFQ0sgYW5kIEdFVENIRUNLIHRvIFNFVENIRUNLMTYgYW5kCglHRVRDSEVDSzE2IGluIENoZWNrRGxnSXRlbTE2IGFuZCBJc0RsZ0l0ZW1DaGVja2VkMTYuCglDYXN0IFVJTlQxNiB2YWx1ZSB0byBVSU5UIG9yIElOVCBkZXBlbmRpbmcgb24gc2lnbiBpbiBTZXREbGdJdGVtSW50MTYuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlY29nbml6ZSB0aGUgRnJlZUJTRCBkbG9wZW4gZXF1aXZhbGVudCBvZiAiY2Fubm90IG9wZW4iLgoKCSogZGxscy9zaGx3YXBpL3N0cmluZy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVVzZSBwcm9wZXIgdW5pY29kZSByb3V0aW5lLgoKCSogTWFrZS5ydWxlcy5pbjoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIG91dC1vZi1zb3VyY2UtdHJlZSBidWlsZHMgd29yayB3aXRoIFNvbGFyaXMgbWFrZS4KCjIwMDEtMTEtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTExMDguCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMTEtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC93Y3MuYywgZGxscy9zaGx3YXBpL3VybC5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJSW1wbGVtZW50ZWQgaW5saW5lIHZlcnNpb24gb2YgdGhlIGlzd3h4eCBmdW5jdGlvbnMuCgoJKiBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmMsIG1zZG9zL2lvcG9ydHMuYywKCSAgbXNkb3MvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsCgkgIGRsbHMvd2luZWRvcy9pbnQwOS5jLCBkbGxzL3dpbmVkb3Mvd2luZWRvcy5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCB0aGUgaW50IDkgKGtleWJvYXJkKSBoYW5kbGVyIHRvIGRsbHMvd2luZWRvcy4KCgkqIGRsbHMvdXNlci9jb21tMTYuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglGaW5kIG91dCBob3cgbXVjaCBkYXRhIGlzIGF2YWlsYWJsZSB3aGVuIGNhbGxpbmcgUmVhZEZpbGVFeC4KCjIwMDEtMTEtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCVJlcGFpcmVkIGNoaWxkIHdpbmRvdyBhY3RpdmF0aW9uIGJyb2tlbiBieSBwcmV2aW91cyBjaGFuZ2UuCgoJKiB3aW5kb3dzL3dpbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBkdW1waW5nIG9mIHdpbmRvdyBzdHlsZXMgYXQgdGhlIHdpbmRvdyBjcmVhdGlvbiB0aW1lLgoKCSogbXNkb3MvdmdhLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBmZXcgZGVmYXVsdCBwYWxldHRlIGVudHJpZXMgZm9yIHRoZSBWR0EvTUNHQSAyNTYtY29sb3IgbW9kZS4KCU1hZGUgdGhlIFZHQSBtb2RlIHNldCBnbyB0aHJvdWdoIFJ1bkluVGhyZWFkLCBzbyB0aGF0IHRoZSBWR0EgZ3JhcGhpY3MKCXdpbmRvdyBnZXRzIG93bmVkIGJ5IHRoZSByaWdodCB0aHJlYWQuCgoJKiBzZXJ2ZXIvdGhyZWFkLmM6CglBdm9pZCBmdHJ1bmNhdGUgdG8gd29yayBhcm91bmQgYnJva2VuIFVNU0RPUyBmaWxlIHN5c3RlbS4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglDcmVhdGVkIG5ldyBpbmZyYXN0cnVjdHVyZSBmb3IgU3lzdGVtUGFyYW1ldGVyc0luZm8gZnVuY3Rpb24uIFVzZWQgaXQKCXRvIGltcGxlbWVudCBwcm9jZXNzaW5nIGZvciBTUElfR0VUL1NFVEJFRVAsIFNQSV9HRVQvU0VUQk9SREVSLAoJU1BJX0dFVC9TRVRTSE9XU09VTkRTIHN5c3RlbSBwYXJhbWV0ZXJzLgoKCSogZG9jdW1lbnRhdGlvbi9hcmNoaXRlY3R1cmUuc2dtbDoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJTWlub3IgZ3JhbW1hdGljYWwgY29ycmVjdGlvbnMuCgoJKiBtc2Rvcy9kcG1pLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywKCSAgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2Rvc2V4ZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBSdW5JblRocmVhZCBjYWxsb3V0IHRvIHdpbmVkb3MuCgoJKiBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzY2hlZHVsZXIvc3luY2hyby5jLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBkbGxzL2tlcm5lbC9zeW5jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJTWFrZSBDb25uZWN0TmFtZWRQaXBlIHdvcmsgaW4gb3ZlcmxhcHBlZCBtb2RlLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUlnbm9yZSBEU1IvRFRSIGZsb3cgY29udHJvbCBpbiBEQ0IuIHRlcm1pb3MgZG9lc24ndCBzdXBwb3J0IGl0LgoKMjAwMS0xMS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvc2hsd2FwaS5oLCBkbGxzL3NobHdhcGkvcGF0aC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLAoJICBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywKCSAgZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRGVmaW5lIHJlc3Qgb2YgVVJMX0VTQ0FQRS4uLiBhbmQgb3RoZXIgZmxhZ3MuCgktIERlZmluZSBpbXBsZW1lbnRlZCBpbnRlcmZhY2VzIGZvciByZWcuYyBhbmQgdXJsLmMuCgoJKiBkbGxzL3NobHdhcGkvdXJsLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnQgVVJMX0VTQ0FQRV9TRUdFTUVOVF9PTkxZLCBVUkxfRVNDQVBFX1BFUkNFTlQsCgkgIGFuZCBVUkxfRE9OVF9FU0NBUEVfRVhUUkFfSU5GTyBpbiB0aGUgVXJsRXNjYXBle0F8V30gcm91dGluZXMuCgktIE1ha2UgVXJsQ2Fub25pY2FsaXplQSB1c2UgVXJsQ2Fub25pY2FsaXplVy4KCS0gSW1wbGVtZW50IGZ1bGwgZnVuY3Rpb25hbGl0eSBpbiBVcmxDYW5vbmljYWxpemVXLgoJLSBJbXBsZW1lbnQgVXJsQ29tYmluZXtBfFd9LgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL29yZGluYWwuaDoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBTSExXQVBJXzEgKEFTQ0lJIHZlcnNpb24gb2YgU0hMV0FQSV8yKS4KCS0gRml4IGVycm9yIGluIFNITFdBUElfMTgKCS0gTmV3IGZpbGUgKG9yZGluYWwuaCkgd2l0aCBkb2N1bWVudGF0aW9uIGZvciBfMSwgJl8yLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBpbmNsdWRlL3dpbnBvcy5oLCBkbGxzL3R0eWRydi93bmQuYzoKCVdpbmRvdyBhY3RpdmF0aW9uIGNsZWFudXBzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVJldHVybiBzdWNjZXNzIGluIENyZWF0ZVByb2Nlc3Mgd2hlbiB3ZSBzdGFydGVkIGEgbm9uLVdpbmVsaWIgVW5peAoJcHJvY2Vzcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCAkWF9MSUJTIHBhdGggd2hpbGUgc2VhcmNoaW5nIGZvciBsaWJmcmVldHlwZS4KCgkqIGRsbHMvZGlucHV0L2RldmljZS5jOgoJPGxhcnN0aXFAbGFyc3RpcS5keW5kbnMub3JnPgoJRGV2aWNlcyBuZXZlciBuZWVkIHRvIGJlIHBvbGxlZCwgc28gcmV0dXJuIERJX05PRUZGRUNUIGluIFBvbGwuCgoJKiBzZXJ2ZXIvc2VsZWN0LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCVByZXZlbnQgZGFuZ2VyIG9mIGFjY2Vzc2luZyBmcmVlZCBtZW1vcnkgKHRoZW9yZXRpY2FsIGJ1dCB1bmxpa2VseQoJYnVnKS4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglzdHJzZXAgaXMgbm90IGltcGxlbWVudGVkIG9uIFNvbGFyaXMsIHJlcGxhY2UgaXQgd2l0aCBvdXIgb3duIHBvcnRhYmxlCglpbXBsZW1lbnRhdGlvbi4KCgkqIGxpYnJhcnkvZGVidWcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVuYW1lZCBzdHJ1Y3Qgb3B0aW9uIHRvIHN0cnVjdCBkZWJ1Z19vcHRpb24gdG8gYXZvaWQgY29tcGlsZSBwcm9ibGVtcwoJd2hlcmUgc3RydWN0IG9wdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQuCgoJKiB0b29scy93cmMvd3JpdGVyZXMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGEgYnVmZmVyIG92ZXJmbG93IGluIHdyaXRlX25hbWVfc3RyLCBidWcgZm91bmQgYnkKCWpvbmF0aGFuQGNvcnZ1LmNvbS5hdS4KCgkqIHRvb2xzL3dpbmVjaGVjazogPGdodXRjaGlzQGNpc2NvLmNvbT4KCUF2b2lkIHBhcnNpbmcgdGhlIHdob2xlIHRyZWUgdG8gZmluZCBsaWJ3aW5lLnNvLgoKCSogbG9hZGVyL21vZHVsZS5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLAoJICBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywKCSAgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsCgkgIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGNvbnRyb2xzL2NvbWJvLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvbid0IHByZWZpeCAlcCB3aXRoIDB4LgoJVmFyaW91cyBFbmdsaXNoIGZpeGVzLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kaWFsb2cuYywKCSAgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcHBsLmwsIHdpbjMyL2RldmljZS5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5jLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwKCSAgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYywgbXNkb3MvZG9zbWVtLmMsCgkgIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MTAuYywgc2NoZWR1bGVyL2NsaWVudC5jLAoJICBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIG1lbW9yeS9nbG9iYWwuYywKCSAgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jcHUuYywgbGlicmFyeS9wb3J0LmMsIGxvYWRlci9lbGYuYywKCSAgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgaW5jbHVkZS9jZHJvbS5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2NvbnNvbGUuaCwKCSAgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvdHNfc2hhcGUuaCwKCSAgaW5jbHVkZS90c194Zjg2ZGdhLmgsIGluY2x1ZGUvdHNfeGY4NmRnYTIuaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwKCSAgaW5jbHVkZS90c194bGliLmgsIGluY2x1ZGUvdHNfeHBtLmgsIGluY2x1ZGUvdHNfeHJlbmRlci5oLAoJICBpbmNsdWRlL3RzX3hyZXNvdXJjZS5oLCBpbmNsdWRlL3RzX3hzaG0uaCwgaW5jbHVkZS90c194dXRpbC5oLAoJICBpbmNsdWRlL3RzX3h2aWRlby5oLCBpbmNsdWRlL3dpbmVfZ2wuaCwgaW5jbHVkZS94MTFkcnYuaCwKCSAgZGxscy94MTFkcnYvZGdhMi5oLCBkbGxzL3gxMWRydi94MTFkZHJhdy5oLCBkbGxzL3gxMWRydi94dmlkbW9kZS5oLAoJICBmaWxlcy9kcml2ZS5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmgsIGRsbHMvd2luc29jay9hc3luYy5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsCgkgIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3VzZXIuYywKCSAgZGxscy9udGRsbC9taXNjLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL2tlcm5lbC9jb21tLmMsCgkgIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBjb250cm9scy9tZW51LmMsIGRsbHMvZGRyYXcvbWVzYS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheS5jLCBjb25maWd1cmUuaW4sIGNvbnNvbGUveHRlcm0uYywgY29uZmlndXJlOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgI2luY2x1ZGUgb3JkZXIgZm9yIGNvbmZpZy5oLgoJQWRkICNpbmNsdWRlICJjb25maWcuaCIgZGlyZWN0aXZlcyB3aGVyZSBuZWVkZWQuCgoJKiBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZGVidWd0b29scy5oLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIGRlYnVndG9vbHMuaCBpbmRlcGVuZGVudCBmcm9tIGNvbmZpZy5oLgoKCSogc2VydmVyL3dpbmRvdy5jOgoJQWxsb3cgb3duZXIgdG8gYmUgdGhlIGRlc2t0b3Agd2luZG93LgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVRoZSAnZHdvcmQnIHZhbHVlcyBzaG91bGQgYmUgc3RvcmVkIGFzIGJpZyBlbmRpYW4gdmFsdWVzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9uYjMwLmgsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwKCSAgZGxscy9uZXRhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL25ldGFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL25ldGFwaTMyL25ldGFwaTMyLmMsIGRsbHMvbmV0YXBpMzIvbmV0YXBpMzIuc3BlYywgY29uZmlndXJlOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZGVkIG5ldGFwaTMyLmRsbCBhbmQgdGhlIE5ldGJpb3MoKSBjYWxsLgoKCSogd2luZG93cy9jYXJldC5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGb3IgZHJhd2luZyBhIGNhcmV0LCBpbnRlcm5hbGx5IHJlcGxhY2VkIHRoZSBicnVzaCBieSBhIGJpdG1hcCAodGhpcwoJYWxsb3dzIGNhcmV0IG9mIHNpemUgPiA4eDgpLAoKCSogbWlzYy9vcHRpb25zLmMsIG1pc2MvdmVyc2lvbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgdmVyc2lvbnMgZm9yIFdpbk1FIGFuZCBXaW5YUC4KCUZpeCB0aGUgMTZiaXQgdmVyc2lvbiByZXR1cm4gZm9yIFdpbjIwMDAuCglNb3JlIGNsb3NlbHkgbWF0Y2ggdGhlIFdpbjk1Lzk4IENTRFZlcnNpb24gZmllbGRzLgoJRW5oYW5jZSBkb2N1bWVudGF0aW9uIG9mIFdpbjk1IHZlcnNpb24gbnVtYmVycy4KCUNvbmZpcm0gdGhlIGV4aXN0aW5nIGRhdGEgZm9yIFdpbjIwMDAuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCBpbmNvcnJlY3QgdXNlIG9mIGEgVW5pY29kZSBzdHJpbmcgbGl0ZXJhbC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBvYmplY3RzL2ZvbnQuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgdHJhY2VzIHRvIGhlbHAgZGlhZ25vc2Ugc3lzdGVtYXRpYyBjYWNoZWQtbWV0cmljcyByZWdlbmVyYXRpb24KCXByb2JsZW1zLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW5hbWUgU0lDX0NvbXBhcmVFbnRyeXMgdG8gU0lDX0NvbXBhcmVFbnRyaWVzLCBhbmQgbWFrZSBpdCBzdGF0aWMuCgoJKiBkbGxzL21zcmxlMzIvLmN2c2lnbm9yZSwgZGxscy9tc3JsZTMyL01ha2VmaWxlLmluLAoJICBkbGxzL21zcmxlMzIvbXNybGUzMi5jLCBkbGxzL21zcmxlMzIvbXNybGUzMi5zcGVjLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL2F2aWNhcDMyLy5jdnNpZ25vcmUsIGRsbHMvYXZpY2FwMzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvYXZpY2FwMzIvYXZpY2FwMzIuc3BlYywgZGxscy9hdmljYXAzMi9hdmljYXAzMl9tYWluLmMsCgkgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN0dWJzIGZvciBtc3JsZTMyLmRsbCBhbmQgaW1wbGVtZW50ZWQgUkxFOCBkZWNvZGVyLgoJQWRkZWQgc3R1YiBmb3IgYXZpY2FwMzIuCgoyMDAxLTExLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9mb250LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgR2V0Q2hhcldpZHRoIHRvIFVuaWNvZGUuCgoJKiBkbGxzL3VzZXIvbWVzc2FnZS5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCU1vdmUgU1BZX0VudGVyTWVzc2FnZSBjYWxsIGFmdGVyIGFsbCBwb3NzaWJsZSBleGl0cyBzbyB0aGF0IHRoZXJlIHdpbGwKCWJlIGEgbWF0Y2hpbmcgU1BZX0V4aXRNZXNzYWdlLgoKCSogZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEluZGljYXRlIHRoYXQgU3RyUmV0VG9TdHJOe0F8V30gYW5kIFN0clJldFRvQnVme0F8V30gYXJlIGlkZW50aWNhbAoJICBjb2RlIGJ1dCBkdXBsaWNhdGVkIGRlbGliZXJhdGVseS4KCS0gSW1wbGVtZW50IFN0clJDaHJJe0F8V30uCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBXaW5lIGludGVybmFsIG1lc3NhZ2VzLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jLCB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jLAoJICB0b29scy93aW5lZHVtcC9vdXRwdXQuYywgdG9vbHMvd2luZWR1bXAvcGUuYywKCSAgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYW5kIGdsb2JhbGl6ZWQgc29tZSBwYXRoIGFuZCBtb2R1bGUgbmFtZSBoYW5kbGluZy4KCVR3ZWFrZWQgdGhlIGRlbWFuZ2xpbmcgb2YgZnVuY3Rpb24gcG9pbnRlcnMgYXMgZnVuY3Rpb24gcGFyYW1ldGVycy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBkc3QgLyBzcmMgbGluZXMgaW1wbGVtZW50YXRpb24uCglBZGRlZCBtdXgvbWl4ZXIgY29udHJvbCBmb3IgbWFzdGVyIHJlYy4KCUFkZGVkIGZyYW1ld29yayBmb3IgbXVsdGlwbGUgbWl4ZXJzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJVGVzdCBmb3Igd3NfdGltZW91dD1OVUxMIGluIHdpbnNvY2sgc2VsZWN0KCkuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUZWxsIFNvbGFyaXMgdXNlcnMgd2hlcmUgdG8gZ2V0IFhQTS4KCgkqIGxpYnJhcnkvcG9ydC5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZBTFNFIGlzIG5vdCBkZWZpbmVkIG9uIFNvbGFyaXMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGxpbmUgbGVuZ3RoIGNhbGN1bGF0aW9uIGluIFgxMURSVl9ESUJfQ29udmVydF9hbnlfYXNpcy4KCUNvcnJlY3RseSBpbml0aWFsaXplIHRoZSBjb2xvciBtYXNrcyBvZiAyNGJwcCBESUJzLgoKCSogd2luZG93cy9jbGFzcy5jOgoJSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cHJpbmNlLm5ldD4KCUZvciBnbG9iYWwgY2xhc3NlcywgR2V0Q2xhc3NJbmZvIG5vdyByZXR1cm5zIGEgaGFuZGxlIHRvIFVTRVIuCgoJKiBtc2Rvcy9pbnRlcnJ1cHRzLmMsIGluY2x1ZGUvbWlzY2VtdS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBhIGR5bmFtaWMgdGFibGUgb2YgRE9TIGludGVycnVwdCBoYW5kbGVycy4KCjIwMDEtMTAtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeCBSZWdTZXRWYWx1ZUV4IGNhbGxzIGFuZCBjcmFzaCB3aGVuIERyaXZlck5hbWU9IiIgaW4gcmVnaXN0cnkuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVByb3RlY3QgYWdhaW5zdCBhbiBpbnRlcnJ1cHQtcGVuZGluZyBzaWduYWwgcmVjdXJzaW9uLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L1JFQURNRSwgZGxscy9xdWFydHovYXN5bmNzcmMuYywKCSAgZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywgZGxscy9xdWFydHovZGV2ZW51bS5jLAoJICBkbGxzL3F1YXJ0ei9kZXZlbnVtLmgsIGRsbHMvcXVhcnR6L2Rldm1vbi5jLCBkbGxzL3F1YXJ0ei9kZXZtb24uaCwKCSAgZGxscy9xdWFydHovZmdwYXNzLmMsIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovaWZncmFwaC5jLAoJICBkbGxzL3F1YXJ0ei9pdW5rLmMsIGRsbHMvcXVhcnR6L210eXBlLmMsIGRsbHMvcXVhcnR6L210eXBlLmgsCgkgIGRsbHMvcXVhcnR6L3BhcnNlci5jLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywgZGxscy9xdWFydHovcmVnc3ZyLmgsCgkgIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsIGRsbHMvcXVhcnR6L3ZpZHJlbi5jLAoJICBkbGxzL3F1YXJ0ei93YXZwYXJzZS5jLCB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgc29tZSBidWdzLgoJSW1wbGVtZW50ZWQgSVByb3BlcnR5QmFnLgoJSW1wbGVtZW50ZWQgc29tZSBGaWx0ZXJNYXBwZXIyIG1ldGhvZHMuCglJbXBsZW1lbnRlZCBBZGRTb3VyY2VGaWx0ZXIuCglJbXBsZW1lbnRlZCBSZW5kZXIgcGFydGlhbGx5LgoJSW1wbGVtZW50ZWQgQ29ubmVjdCBwYXJ0aWFsbHkuCgoJKiBpbmNsdWRlL3N0cm1pZi5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGRlZmluaXRpb25zIG9mIE1FUklUcy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdHViIGZvciBJQ0ltYWdlQ29tcHJlc3MuCglJbXBsZW1lbnRlZCBJQ0ltYWdlRGVjb21wcmVzcy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGRlZCBzdHVicyBmb3IgXzE4LF8yMSxfMjIgd2hpY2ggc2VlbSB0byBiZSB1c2VkIG9ubHkgYnkgbmF0aXZlCgkgIHNoZG9jdncuZGxsCgktIEltcGxlbWVudGVkIF8yNiwgXzI3LCBfMjgsIF8zMiwgYW5kIF8zNCAobW9yZSBpc3cuLi4gZnVuY3Rpb25zKS4KCgkqIGRsbHMvc2hsd2FwaS91cmwuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglTdHViIFVybENvbWJpbmVBIGFuZCBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIFVybENvbWJpbmVXLgoKCSogZGxscy9zaGx3YXBpL3JlZy5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUltcGxlbWVudCBTSFJlZ0dldEJvb2xVU1ZhbHVle0F8V30uCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9pY29ucy5yYzoKCUplcmVteSBOZXdtYW4gPGpuZXdtYW5AY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZWQgTWFydGluaSBnbGFzcy4KCjIwMDEtMTAtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcGVfaW1hZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYzoKCURvbid0IGtlZXAgbWFpbiBleGUgYW5kIGRsbHMgaGFuZGxlcyBvcGVuIHdoZW4gdGhlIGZpbGUgaXMgb24KCXJlbW92YWJsZSBtZWRpYS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGhhbmRsaW5nIGZvciBMVk5fR0VURElTUElORk9XLgoKMjAwMS0xMC0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hsd2FwaS9yZWcuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgSFVTS0VZIGludGVybmFscywgaW5jbHVkaW5nIGZ1bmN0aW9uczoKCSAgU0hSZWdPcGVuVVNLZXl7QXxXfSwgU0hSZWdDbG9zZVVTS2V5LCBTSFJlZ0dldFVTVmFsdWV7QXxXfSwKCSAgU0hSZWdRdWVyeUluZm9VU0tleXtBfFd9CgktIEltcGxlbWVudCBTSFJlZ1F1ZXJ5VVNWYWx1ZXtBfFd9CgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gIEltcGxlbWVudDoKCSAgICAgIFNITFdBUElfMiAgLSBJZGVudGlmeSBpbnRlcm5ldCBwcm90b2NvbHMuCgkgICAgICBTSExXQVBJXzI1ICAtICBpc3dhbHBoYQoJICAgICAgU0hMV0FQSV8zMyAgLSAgaXN3ZGlnaXQKCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwcmluY2UubmV0PgoJU3dpdGNoIGZvY3VzIHRvIGFjdGl2YXRlZCB3aW5kb3cgZXZlbiBpZiBubyB3aW5kb3cgcHJldmlvdXNseSBoYWQgdGhlCglmb2N1cy4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglUcnkgdG8gdXNlIHJlYWQgaW5zdGVhZCBvZiBtbWFwIGZvciBmaWxlcyBvbiByZW1vdmFibGUgbWVkaWEsIHNvIHRoYXQKCXdlIGRvbid0IG5lZWQgdG8ga2VlcCB0aGUgbWFwcGluZyBoYW5kbGUgb3Blbi4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9vYmplY3QuaCwKCSAgc2VydmVyL3Byb3RvY29sLmRlZiwgc2VydmVyL3RyYWNlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIG1pc2MvcmVnaXN0cnkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJU2F2ZSBhIGRpc2sgZmlsZSdzIGRyaXZlIHR5cGUgaW4gdGhlIHNlcnZlciBvYmplY3QuCgoyMDAxLTEwLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYzogQ29zbWV0aWMgZml4ZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kZXZlbnVtLy5jdnNpZ25vcmUsCgkgIGRsbHMvZGV2ZW51bS9NYWtlZmlsZS5pbiwgZGxscy9kZXZlbnVtL2RldmVudW0uc3BlYywKCSAgZGxscy9kZXZlbnVtL2RldmVudW1fbWFpbi5jLCBkbGxzL21zZG1vLy5jdnNpZ25vcmUsCgkgIGRsbHMvbXNkbW8vTWFrZWZpbGUuaW4sIGRsbHMvbXNkbW8vbXNkbW8uc3BlYywKCSAgZGxscy9tc2Rtby9tc2Rtb19tYWluLmMsIGRsbHMvcWNhcC8uY3ZzaWdub3JlLAoJICBkbGxzL3FjYXAvTWFrZWZpbGUuaW4sIGRsbHMvcWNhcC9xY2FwLnNwZWMsIGRsbHMvcWNhcC9xY2FwX21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdHVicyBmb3IgbXNkbW8uZGxsLCBxY2FwLmRsbCBhbmQgZGV2ZW51bS5kbGwuCgoJKiBjb25maWd1cmUuaW4sIGRsbHMvZ2RpL2ZyZWV0eXBlLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvZm9udC5oLCBvYmplY3RzL2ZvbnQuYywgY29uZmlndXJlOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IEdldEZvbnREYXRhLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3Byb3BlcnR5ZnJhbWUuYywKCSAgZGxscy9vbGVhdXQzMi9zdHVicy5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIE9sZUNyZWF0ZVByb3BlcnR5RnJhbWUgYW5kCglPbGVDcmVhdGVQcm9wZXJ0eUZyYW1lSW5kaXJlY3QuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5jb24uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQvYWRkZWQgc29tZSBjb25zb2xlIGRlZmluaXRpb25zLgoKCSogbWlzYy92ZXJzaW9uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldmVydCAxNmJpdCB3aW45NSB2ZXJzaW9uIGJhY2sgdG8gb3JpZ2luYWwgdmFsdWUuIEZpeGVzIEluc3RhbGxTaGllbGQKCWluc3RhbGxlciB2ZXJzaW9uIGNoZWNrLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLAoJICBpbmNsdWRlL3gxMWZvbnQuaCwgb2JqZWN0cy90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglFeHRUZXh0T3V0VyB3aXRoIHN5bWJvbCBmb250cyB3b3JrcyB3aXRoIGNoYXJzIGluIHRoZSByYW5nZXMKCTB4MDAwMCAtLSAweDAwZmYgYW5kIDB4ZjAwMCAtLSAweGYwZmYgYW5kIG5vdCwgZm9yIGV4YW1wbGUsIHdpdGgKCWNoYXJzIGluIHRoZSBVbmljb2RlIEdyZWVrIHJhbmdlLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgZmFpbHVyZSBtZXNzYWdlcyBmb3IgQ29DcmVhdGVJbnN0YW5jZS4KCgkqIHdpbmRvd3MvZGNlLmM6CglGaXhlZCB3aW5kb3cgaGFuZGxlIGNoZWNrIGluIEdldERDRXguCgoJKiB3aW5kb3dzL3dpbi5jOiBBIGNvdXBsZSBvZiBvcHRpbWl6YXRpb25zLgoKCSogd2luMzIvZXhjZXB0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRXhwYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiAiRGVidWdnZXIiIHNldHRpbmcuCglSZXBsYWNlIGZpeGVkLXNpemUgYnVmZmVycyB3aXRoIGR5bmFtaWMgb25lcy4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0aGUgYmVoYXZpb3IgZm9yIFNIR2V0RmlsZUluZm8gd2hlbiB0aGUgU0hHRklfVVNFRklMRUFUVFJJQlVURVMKCWZsYWcgaXMgc2V0LiBDb3JyZWN0cyB0aGUgZ2l2ZW4gdHlwZSBhbmQgaWNvbi4KCjIwMDEtMTAtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywKCSAgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICBjb250cm9scy9zY3JvbGwuYzoKCVN0b3JlIGluIHRoZSBzZXJ2ZXIgYWxsIHRoZSB3aW5kb3cgaW5mb3JtYXRpb24gYWNjZXNzaWJsZSB3aXRoCglHZXQvU2V0V2luZG93TG9uZy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGZpbGVzL2ZpbGUuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsCgkgIGRsbHMvbnRkbGwvb20uYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLAoJICBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTcGVsbGluZywgZ3JhbW1hciBhbmQgYSBiaXQgb2YgY29tbWVudCBmb3JtYXR0aW5nIGZpeGVzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmMsCgkgIGRsbHMvcXVhcnR6L2FzeW5jc3JjLmgsIGRsbHMvcXVhcnR6L2F1ZHJlbi5jLCBkbGxzL3F1YXJ0ei9hdWRyZW4uaCwKCSAgZGxscy9xdWFydHovYXZpZGVjLmMsIGRsbHMvcXVhcnR6L2F2aXBhcnNlLmMsCgkgIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmgsCgkgIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywgZGxscy9xdWFydHovY3Njb252LmMsIGRsbHMvcXVhcnR6L2ZncGFzcy5jLAoJICBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsCgkgIGRsbHMvcXVhcnR6L210eXBlLmMsIGRsbHMvcXVhcnR6L210eXBlLmgsIGRsbHMvcXVhcnR6L3BhcnNlci5jLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuaCwgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsIGRsbHMvcXVhcnR6L3NhbXBsZS5jLAoJICBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5jLCBkbGxzL3F1YXJ0ei9zZWVrcGFzcy5oLAoJICBkbGxzL3F1YXJ0ei92aWRlb2JsdC5jLCBkbGxzL3F1YXJ0ei92aWRlb2JsdC5oLAoJICBkbGxzL3F1YXJ0ei92aWRyZW4uYywgZGxscy9xdWFydHovdmlkcmVuLmgsIGRsbHMvcXVhcnR6L3dhdnBhcnNlLmMsCgkgIGRsbHMvcXVhcnR6L3hmb3JtLmMsIGRsbHMvcXVhcnR6L3hmb3JtLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgc29tZSBidWdzLgoJSW1wbGVtZW50ZWQgQVZJIERlY29tcHJlc3Nvci4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIENvbG9yIFNwYWNlIENvbnZlcnRlci4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIHNlZWtpbmcuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6IEFkZGVkICItLWF1dG8iIG9wdGlvbi4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgc3VwcG9ydCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIHRoZSBwcmludGVyIHNldHRpbmdzLgoJUmVtb3ZlIHRoZSBmaXhlZC1zaXplIGJ1ZmZlcnMuCgoJKiBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oLCBpbmNsdWRlL21zdmNydC9zeXMvdGltZWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3R5cGVzLmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy91dGltZS5oLAoJICBpbmNsdWRlL21zdmNydC9jb25pby5oLCBpbmNsdWRlL21zdmNydC9jcnRkYmcuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvY3R5cGUuaCwgaW5jbHVkZS9tc3ZjcnQvZGlyZWN0LmgsCgkgIGluY2x1ZGUvbXN2Y3J0L2Rvcy5oLCBpbmNsdWRlL21zdmNydC9laC5oLCBpbmNsdWRlL21zdmNydC9mY250bC5oLAoJICBpbmNsdWRlL21zdmNydC9pby5oLCBpbmNsdWRlL21zdmNydC9sb2NhbGUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvbWFsbG9jLmgsIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc2VhcmNoLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGRlZi5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRpby5oLCBpbmNsdWRlL21zdmNydC9zdGRsaWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmgsIGluY2x1ZGUvbXN2Y3J0L3RpbWUuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvd2NoYXIuaCwgaW5jbHVkZS9tc3ZjcnQvd2N0eXBlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZGVkIF9fV0lORV9VU0VfTVNWQ1JULgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3djc3RyaW5nLmM6CglEYXZpZCBFbGxpb3R0IDxkZmVAdGd3YmQub3JnPgoJSW1wbGVtZW50ZWQgdGhlIHdjc3RvdWwgZnVuY3Rpb24uCgoyMDAxLTEwLTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsCgkgIGRvY3VtZW50YXRpb24vcGF0Y2hlcy5zZ21sLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLAoJICBmaWxlcy9kb3NfZnMuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsCgkgIG1lbW9yeS9pbnN0ci5jLCB0b29scy93aW5lY2hlY2ssIHdpbjMyL2V4Y2VwdC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsCgkgIHdpbmRvd3Mvd2luLmM6CglBbmRyZWFzIE1vaHIgPGFuZGlAcmhseDAxLmZodC1lc3NsaW5nZW4uZGU+CglDb3NtZXRpY3MuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIHN0dWJzIGZvciBfMjUsIF8zMywgXzM1CgktIEFkZC9jb3JyZWN0IGNvZGUgZm9yOiBfMTUsIF8yOSwgXzMwLCBfMzEsIF8xNTEsIF8xNTIsIF8xNTMsIF8xNTQsCgkgIF8xNTguCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGluY2x1ZGUvc2hsd2FwaS5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IEhVU0tFWSBkZXNpZ24uCgktIEltcGxlbWVudCBmdW5jdGlvbnM6IFNIUmVnT3BlblVTS2V5e0F8V30sIFNIUmVnQ2xvc2VVU0tleSwKCSAgU0hSZWdHZXRVU1ZhbHVle0F8V30sIFNIUmVnUXVlcnlJbmZvVVNLZXl7QXxXfQoKCSogZGxscy9zaGx3YXBpL3VybC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IFVybENhbm9uaWNhbGl6ZVcsIFVybEVzY2FwZVcsIFVybFVuZXNjYXBlVy4KCS0gU3R1YiBVcmxHZXRMb2NhdGlvbntBfFd9LgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6CglBdm9pZCBjcmFzaGluZyBvbiBub24taW5pdGlhbGl6ZWQgZGVidWcgaW5mby4KCgkqIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBhIHR5cG8uCgoJKiBvYmplY3RzL2ZvbnQuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbXBsZW1lbnRlZCBHZXRDaGFyYWN0ZXJQbGFjZW1lbnRXLgoKCSogZGxscy94MTFkcnYveHZpZG1vZGUuYzoKCUFuZHJldyBMZXd5Y2t5IDxhbmRyZXdAdHJhbnNnYW1pbmcuY29tPgoJWEZyZWU4NiA0LjEgZ2FtbWEgcmFtcCBzdXBwb3J0LgoKCSogaW5jbHVkZS9kc291bmQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgYSB0eXBvLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL3VzZXIvY29tbTE2LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUmV0dXJuIFRSVUUgb24gc3VjY2VzcyBpbiBDT01NX0J1aWxkT2xkQ29tbURDQi4KCURDQjE2LkJhdWRSYXRlID4gNTc2MDAgbWVhbnMgMTE1MjAwLgoJT3BlbkNvbW0xNiBzaG91bGQgdXNlIG92ZXJsYXBwZWQgSS9PLgoKMjAwMS0xMC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdXNlci5jLAoJICBkbGxzL3VzZXIvbW91c2UuYywgZGxscy91c2VyL21vdXNlLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L21vdXNlLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3VzZXIuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwKCSAgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywKCSAgd2luZG93cy94MTFkcnYvbW91c2UuYzoKCUNoYW5nZWQgWDExIG1vdXNlIGRyaXZlciB0byB1c2UgU2VuZElucHV0LCBhbmQgcmVtb3ZlZCBXSU5FX01PVVNFRVZFTlQKCWhhY2suIE1vdmVkIG1vdXNlLmMgdG8gZGxscy94MTFkcnYuCglBZGRlZCBLZXltYXBOb3RpZnkgZXZlbnQgaGFuZGxlciwgYW5kIGZpeGVkIGhhbmRsaW5nIHdpdGggbXVsdGlwbGUKCWFsdC9zaGlmdC9jb250cm9sIGtleXMuCglSZW1vdmVkIGRpbnB1dCBmdW5jdGlvbnMgZnJvbSBVU0VSIGRyaXZlci4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBBZGRlZCBhIGZldyBYQlVUVE9OIGRlZmluZXMuCgoJKiB3aW5kb3dzL21kaS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVVzZSBXSU5fUmVsZWFzZVB0ciBub3QgV0lOX1JlbGVhc2VXbmRQdHIgd2l0aCBXSU5fR2V0UHRyLgoKCSogZGxscy9kaW5wdXQvTWFrZWZpbGUuaW46CglNYWtlIGRpbnB1dCBhIHByb3Blcmx5IHNlcGFyYXRlZCBkbGwuCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglVc2UgV0hfTU9VU0VfTEwgaG9vayBpbnN0ZWFkIG9mIHJlZGlyZWN0aW5nIHRoZSBtb3VzZSBldmVudCBoYW5kbGVyLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jOgoJRml4ZWQgR2V0RGV2aWNlU3RhdGUgYW5kIEdldERldmljZURhdGEgdG8gdXNlIG9ubHkgZXhwb3J0ZWQgQVBJcy4KCjIwMDEtMTAtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRvbnMgb2YgY29sb3IgY29udmVyc2lvbiBidWdzLgoJUmVvcmdhbml6ZSB0aGluZ3MgbW9yZSByYXRpb25hbGx5IGFuZCBzbyB0aGF0IG1vcmUgY29kZSBpcyBzaGFyZWQuCgoJKiB3aW5kb3dzL2lucHV0LmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUZpeGVkIG1vdXNlX2V2ZW50IGJ1ZyAtIGN1cnNvciB3YXMgbW92ZWQgYmVmb3JlIG5ldyBwb3NpdGlvbiB3YXMKCWNhbGN1bGF0ZWQuCgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzoKCUpvaGFuIEdpbGwgPGpvaGFuZUBseXNhdG9yLmxpdS5zZT4KCVJlbGF5IHRyYWNpbmcgd291bGQgY3Jhc2ggaWYgaXQgY2FtZSB1cG9uIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGFuCglpbnZhbGlkIHBvaW50ZXIgYXMgYSBwYXJhbWV0ZXIuCgoJKiB3aW5kb3dzL2lucHV0LmM6IEp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCVJlbGVhc2luZyBhIG1vdXNlIGJ1dHRvbiBub3cgY2xlYXJzIGFuIGVudHJ5IGluIHRhYmxlCglJbnB1dEtleVN0YXRlVGFibGUgaW5zdGVhZCBvZiBBc3luY0tleVN0YXRlVGFibGUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglPbmx5IG1vZGlmeSB0aGUgYW5jZXN0b3IgaWYgeW91IGZpbmQgaXQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLAoJICBpbmNsdWRlL3dpbmUva2V5Ym9hcmQxNi5oLCB3aW4zMi9jb25zb2xlLmMsIHdpbmRvd3MvaG9vay5jLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9zeXNwYXJhbXMuYywKCSAgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvdXNlci5oLAoJICBpbmNsdWRlL3dpbnVzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3VzZXIva2V5Ym9hcmQuc3BlYywgZGxscy91c2VyL2xzdHIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGxvdy1sZXZlbCBtb3VzZSBhbmQga2V5Ym9hcmQgaG9va3MuCglNaXNjIGtleWJvYXJkIGhhbmRsaW5nIGNsZWFudXBzLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvbWVzc2FnZS5oLAoJICBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaDoKCU1ha2Ugc3VyZSB0aGF0IEdldE1lc3NhZ2VQb3MgYW5kIEdldE1lc3NhZ2VUaW1lIHJldHVybiBzYW5lIHZhbHVlcwoJZm9yIGFsbCBtZXNzYWdlcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV2hlbiBhIHN1cmZhY2UgYmVjb21lcyBwcmltYXJ5IHN1cmZhY2UsIG1hcmsgdGhlIHdob2xlIHN1cmZhY2UgZGFtYWdlZC4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBzYW1lIGNvbG9yIGNvbnZlcnNpb24gYWxnb3JpdGhtIGFzIHRoZSBESUIgY29kZSAoYW5kIFdpbmRvd3MpLAoJaS5lLiBzaGlmdHMsIG5vdCBNdWxEaXZzLgoJRml4IHRoZSBncmF5c2NhbGUgZm9ybXVsYS4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglTZXBhcmF0ZSBjb2RlIHRvIG92ZXJsYXBwZWQgdGltZW91dHMgaW50byBGSUxFX0dldFRpbWVvdXQuCgoyMDAxLTEwLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2lucG9zLmgsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywKCSAgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBjb250cm9scy9pY29udGl0bGUuYywgZGxscy90dHlkcnYvd25kLmM6CglBZGRlZCBpbnRlcm5hbCBXaW5lIG1lc3NhZ2VzIHRvIHBlcmZvcm0gU2V0V2luZG93UG9zLCBTaG93V2luZG93IGFuZAoJU2V0UGFyZW50IGluIHRoZSBjb3JyZWN0IHRocmVhZC4KCVJlcGxhY2UgUVVFVUVfSXNFeGl0aW5nUXVldWUgYnkgVVNFUl9Jc0V4aXRpbmdUaHJlYWQuCglTdG9yZSB3aW5kb3cgcmVjdGFuZ2xlcyBpbiB0aGUgc2VydmVyLgoJUHJldmVudCBEZXN0cm95V2luZG93IG9uIHdpbmRvd3Mgbm90IGJlbG9uZ2luZyB0byB0aGUgY3VycmVudCB0aHJlYWQuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jLAoJICB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWY6CglBZGRlZCByZXF1ZXN0cyB0byBzdG9yZSB3aW5kb3cgcmVjdGFuZ2xlcyBpbiB0aGUgc2VydmVyLgoKCSogY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy91c2VyL2NvbnRyb2xzLmgsCgkgIGluY2x1ZGUvbm9uY2xpZW50LmgsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglNb3ZlZCBzY3JvbGxiYXIgdHJhY2tpbmcgY29kZSB0byBzY3JvbGwuYy4KCUF2b2lkIHVubmVjZXNzYXJ5IGNvb3JkaW5hdGVzIGNvbnZlcnNpb24gaW4gTkNfSGFuZGxlU3lzQ29tbWFuZC4KCgkqIFJFQURNRSwgZG9jdW1lbnRhdGlvbi9idWdzLnNnbWwsIGRvY3VtZW50YXRpb24vY3ZzLXJlZ3Jlc3Npb24uc2dtbDoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCU1pc2MgZG9jIHVwZGF0ZXMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlZ2lzdHJ5IGVudHJpZXMgZm9yIHN0ZG9sZTMyLnRsYi4KCgkqIHRvb2xzL3dpbmVkdW1wL21haW4uYywgdG9vbHMvd2luZWR1bXAvb3V0cHV0LmMsIHRvb2xzL3dpbmVkdW1wL3BlLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBlbGltaW5hdGUgZGlmZmVyZW50IHNlZ21lbnRhdGlvbiBmYXVsdHMuCgktIHdoZW4gYXR0ZW1wdGluZyB0byBvcGVuIGEgZGxsLCBhcHBlbmQgIi5kbGwiIHRvIGZpbmQgaXQgKHdhcwoJICBzdHJpcHBlZCBwcmV2aW91c2x5KS4KCS0gaWRlbnRpZnkgbmFtZWQgZXhwb3J0cyBzbyB0aGF0IHRoZSBvcmRpbmFsIG51bWJlciBpcyAiQCIgaW4gLnNwZWMKCSAgZmlsZS4KCS0gc2V0dXAgb3V0cHV0IGRsbCBuYW1lIHByaW9yIHRvIGNyZWF0aW5nIG9yZGluYWwgc3ltYm9scy4KCS0gZG9uJ3Qgb3ZlcmxheSB0aGUgbmFtZWQgZXhwb3J0cyB3aXRoIHRoZSBvcmRpbmFsIGV4cG9ydHMuCgktIGNvcnJlY3QgdGVzdCBmb3IgbGFzdCBzeW1ib2wuCgktIGZpeCBnZW5lcmF0ZWQgaW5zdGFsbCBzY3JpcHQgdG8gbWF0Y2ggY3VycmVudCBtYWtlIGZpbGVzLgoKMjAwMS0xMC0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbWRpLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglGaXggdGhlIGNhc2Ugd2hlcmUgY2hpbGQ9MCAobGFzdCBjaGlsZCkgaW4gTURJX0NoaWxkQWN0aXZhdGUuCgoJKiBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvdXNlci9tc2cxNi5jLAoJICBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kY2UuYywKCSAgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZGkuYywKCSAgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywKCSAgd2luZG93cy9zcHkuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3dpbi5jOgoJUmVuYW1lZCBXSU5fR2V0V25kUHRyIGludG8gV0lOX0dldFB0ciBhbmQgYWRkZWQgY29ycmVzcG9uZGluZwoJV0lOX1JlbGVhc2VQdHIuIFN0YXJ0ZWQgdXNpbmcgaXQgaW5zdGVhZCBvZiBXSU5fRmluZFduZFB0ciB3aGVyZSB3ZQoJZG9uJ3QgbmVlZCB0byBhY2Nlc3Mgd2luZG93cyBvZiBvdGhlciBwcm9jZXNzZXMuCgoJKiBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBtaXNzaW5nIEdVSURzLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jLCBpbmNsdWRlL21zdmNydC9zdGRpby5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBfSU9YWFggbWFjcm9zIGNvbmZsaWN0IHdpdGggc3lzdGVtIGhlYWRlcnMgb24gU29sYXJpcy4gUHJlZml4Cgl0aGVtLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmM6CglLYWkgTW9yaWNoIDxtYWlsQGthaS1tb3JpY2guZGU+CglJbnRlcm5hbEV4dHJhY3RJY29uMTYgZm9yZ290IHRvIGNsb3NlIGZpbGUgaGFuZGxlLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIG1lbW9yeS9hdG9tLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBJTlZBTElEX0FUT00gYW5kIE1BWElOVEFUT00gdG8gd2luYmFzZS5oLgoJUmVwbGFjZSBNSU5fU1RSX0FUT00gd2l0aCBNQVhJTlRBVE9NLgoKMjAwMS0xMC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kaWFsb2cuYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsCgkgIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY3B1LmMsCgkgIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmMsIHNjaGVkdWxlci9jbGllbnQuYywKCSAgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvcmVxdWVzdC5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHdpbjMyL2RldmljZS5jLCBjb250cm9scy9tZW51LmMsCgkgIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsCgkgIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2RyaXZlLmMsCgkgIGxpYnJhcnkvcG9ydC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gaW5jbHVkaW5nICd3aW5lL3BvcnQuaCcsIGluY2x1ZGUgaXQgZmlyc3QuCglSZW1vdmUgcmVkdW5kYW50ICdjb25maWcuaCcgaW5jbHVkZXMuCgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93bWMvbWNsLmMsCgkgIHRvb2xzL3dtYy9tY3kueSwgdG9vbHMvd21jL3dtYy5jLCB3aW5kb3dzL3dpbnByb2MuYywKCSAgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYywgZGxscy91c2VyL2V4dGljb24uYywKCSAgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW52LmMsIGdyYXBoaWNzL3BhdGguYywKCSAgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbWVtb3J5L2hlYXAuYywKCSAgbWVtb3J5L3NlbGVjdG9yLmMsIG1zZG9zL2ludDExLmMsIG1zZG9zL2ludDE2LmMsIHJlbGF5MzIvcmVsYXkzODYuYywKCSAgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci90cmFjZS5jLAoJICB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsCgkgIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgY29uc29sZS9nZW5lcmljLmMsIGNvbnNvbGUvaW50ZXJmYWNlLmMsCgkgIGNvbnNvbGUvbmN1cnNlcy5jLCBjb25zb2xlL3R0eS5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gaW5jbHVkaW5nIGNvbmZpZy5oLCBpbmNsdWRlIGl0IGZpcnN0LgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9ycGNkY2UuaCwgaW5jbHVkZS9ycGNuZHIuaCwKCSAgaW5jbHVkZS9ycGNwcm94eS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBzb21lIFJQQyBkZWZpbml0aW9ucy4KCgkqIG9iamVjdHMvZm9udC5jLCB3aW5kb3dzL2RyaXZlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywKCSAgZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgbG9hZGVyL21vZHVsZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHByaW50IE5VTEwgc3RyaW5ncyAoY3Jhc2hlcyBvbiBTb2xhcmlzKS4KCVNtYWxsIGNvZGUgbWFpbnRhaW5hYmlsaXR5IHR3ZWFrIGluIFNoZWxsRXhlY3V0ZUV4QS4KCVR3byB0eXBvIGZpeGVzIGluIHdpbm1tLgoKCSogaW5jbHVkZS9hbXZpZGVvLmgsIGluY2x1ZGUvY29udHJvbC5oLCBpbmNsdWRlL3N0cm1pZi5oLAoJICBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovYXN5bmNzcmMuYywKCSAgZGxscy9xdWFydHovYXN5bmNzcmMuaCwgZGxscy9xdWFydHovYXVkaW91dGwuYywKCSAgZGxscy9xdWFydHovYXVkaW91dGwuaCwgZGxscy9xdWFydHovYXVkcmVuLmMsCgkgIGRsbHMvcXVhcnR6L2F2aXBhcnNlLmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsCgkgIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywgZGxscy9xdWFydHovY29tcGxpc3QuYywKCSAgZGxscy9xdWFydHovY29tcGxpc3QuaCwgZGxscy9xdWFydHovZGV2ZW51bS5jLCBkbGxzL3F1YXJ0ei9kZXZtb24uYywKCSAgZGxscy9xdWFydHovZW51bXVuay5jLCBkbGxzL3F1YXJ0ei9mZ2V2ZW50LmMsIGRsbHMvcXVhcnR6L2ZnaWRpc3AuYywKCSAgZGxscy9xdWFydHovZmdwYXNzLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwKCSAgZGxscy9xdWFydHovZm1hcC5jLCBkbGxzL3F1YXJ0ei9mbWFwLmgsIGRsbHMvcXVhcnR6L2ZtYXAyLmMsCgkgIGRsbHMvcXVhcnR6L2ZtYXAyLmgsIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovaWdjb25maWcuYywKCSAgZGxscy9xdWFydHovaWdydmVyLmMsIGRsbHMvcXVhcnR6L2ltY250bC5jLCBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLAoJICBkbGxzL3F1YXJ0ei9pbXBvcy5jLCBkbGxzL3F1YXJ0ei9pbXNlZWsuYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5oLAoJICBkbGxzL3F1YXJ0ei9wYXJzZXIuYywgZGxscy9xdWFydHovcGFyc2VyLmgsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0el9wcml2YXRlLmgsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jLAoJICBkbGxzL3F1YXJ0ei9zYW1wbGUuYywgZGxscy9xdWFydHovc2Vla3Bhc3MuYywKCSAgZGxscy9xdWFydHovc3lzY2xvY2suYywgZGxscy9xdWFydHovdmlkcmVuLmMsCgkgIGRsbHMvcXVhcnR6L3dhdnBhcnNlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgQVZJIHNwbGl0dGVyLgoJSW1wbGVtZW50ZWQgQXN5bmNTb3VyY2UuCglNZXJnZWQgc29tZSBDIHNvdXJjZXMuCglGaXhlZCBzb21lIGJ1Z3MuCgoJKiBpbmNsdWRlL21tcmVnLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgTVBFRzFXQVZFRk9STUFUIGFuZCBNUEVHTEFZRVIzV0FWRUZPUk1BVC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglQYXNzIHNlY3VyaXR5IGF0dHJpYnV0ZXMgZm9yIERPU0ZTIGNyZWF0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpeGVkIGJ1Z3Mgd2l0aCBwcm9wZ2V0IG1ldGhvZHMgd2l0aCBpbnB1dCBhcmd1bWVudHMuCglJbXByb3ZlZCB2YXJpYW50IGRlYnVnIGR1bXBzLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgYnVncyBpbiBzYWZlIGFycmF5cy4KCS0gZW5sYXJnaW5nIGEgc2FmZSBhcnJheSBkaWRuJ3QgY2xlYXIgdGhlIG5ldyBlbnRyaWVzCgktIGVsZW1lbnQgYWNjZXNzIG9ubHkgdmFsaWRhdGVkIHRoZSBmaXJzdCBkaW1lbnNpb24KCS0gdGhlIHZhbGlkYXRpb24gYWx3YXlzIGZhaWxlZCB3aGVuIHRoZSBhcnJheSBjb250YWluZWQgMSBlbGVtZW50CgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4IGEgVUlOVDE2IHJlZGVmaW5pdGlvbiBwcm9ibGVtLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZWNvZ25pemUgdGhlIFNvbGFyaXMgZGxvcGVuIGVxdWl2YWxlbnQgb2YgImNhbm5vdCBvcGVuIi4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGhhbmRsaW5nIG9mIGVtcHR5IGxpc3RzIGluIGluc3RhbGwgYW5kIHVuaW5zdGFsbCB0YXJnZXRzLgoJSW5zdGFsbCB0aGUgZXhlY3V0YWJsZXMgLnNvIGxpYnJhcmllcyBpbiAkYmluZGlyIChub3QgJGxpYmRpciEpLgoKMjAwMS0xMC0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvcHJvcGVydHkuYywgd2luZG93cy93aW4uYywKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvcHJvcGVydHkuYywgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jOgoJU3RvcmUgd2luZG93IHByb3BlcnRpZXMgaW4gdGhlIHNlcnZlci4gTW92ZWQgcHJvcGVydHkuYyB0byBkbGxzL3VzZXIuCgoJKiBtZW1vcnkvYXRvbS5jLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm90b2NvbC5kZWYsCgkgIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmg6CglBZGRlZCBhdG9tX3QgdHlwZSBmb3IgYXRvbXMgdG8gbWFrZSBzdXJlIHdlIHVzZSB0aGUgc2FtZSB0eXBlCglldmVyeXdoZXJlLiBIYW5kbGUgTUlOX1NUUl9BVE9NIG9mZnNldCBpbiB0aGUgc2VydmVyLgoKCSogZGxscy91c2VyL2NvbnRyb2xzLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLAoJICBpbmNsdWRlL3dpbnVzZXIuaDoKCU1vdmVkIE1BS0VJTlRBVE9NIHRvIHdpbmJhc2UuaCBhbmQgYWRkZWQgVW5pY29kZSB2ZXJzaW9uLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBiYWQgcG9pbnRlciBhcmd1bWVudHMgdG8gTG9hZEltYWdlQSgpIChhbmQgZnVuY3Rpb25zCgljYWxsaW5nTG9hZEltYWdlQSkgd2l0aCBhbiBleGNlcHRpb24gaGFuZGxlci4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJRG9taW5payBTdHJhc3NlciA8ZG9taW5pay5zdHJhc3NlckB0LW9ubGluZS5kZT4KCVdvcmthcm91bmQgWDExIEJhZFdpbmRvdyBlcnJvciBpZiBubyBwYXJlbnQgd2luZG93IGlzIGZvdW5kLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIFdpbmUgdG9vbHMgc2VhcmNoIHBhdGguCglBZGQgL3Vzci9sb2NhbC9saWIgdG8gdGhlIGRlZmF1bHQgbnRkbGwgc2VhcmNoIHBhdGguCgoyMDAxLTEwLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYywgd2luZG93cy9xdWV1ZS5jOgoJUmVtb3ZlZCB0aGUgY2xlYW51cF93aW5kb3dfcXVldWUgcmVxdWVzdC4KCgkqIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3gxMWRydi9zY3JvbGwuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvcHJvcGVydHkuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCVJlbW92ZWQgbmV4dCBhbmQgY2hpbGQgZmllbGRzIGluIHRoZSB3aW5kb3cgc3RydWN0dXJlIGFuZCB1c2UKCVdJTl9MaXN0Q2hpbGRyZW4gaW5zdGVhZC4KCgkqIGluY2x1ZGUvdXVpZHMuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgR1VJRHMuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSAuc3BlYy5jIHJ1bGUuCgoyMDAxLTEwLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy90dHlkcnYvd25kLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCVN0b3JlIHdpbmRvdyBwYXJlbnQgYXMgYW4gSFdORCBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglEbyBvdmVybGFwcGVkIHJlYWRzIGlmIGFuZCBvbmx5IGlmIHRoZSBmaWxlIHdhcyBvcGVuZWQgd2l0aAoJRklMRV9GTEFHX09WRVJMQVBQRUQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFsbG9jYXRlIHRoZSBhcnJheSBhbmQgc3RyaW5ncyBpbiBvbmUgbHVtcCAoYnVnIGZvdW5kIGJ5IE1hbHRlCglTdGFyb3N0aWspLgoJU2FtZSB0aGluZyBmb3IgdGhlIGxwQ21kbGluZT0iIiBjYXNlLgoJVGhlcmUgaXMgbm8gTlVMTCBwb2ludGVyIGF0IHRoZSBlbmQgb2YgdGhlIGFyZ3YgbGlzdC4KCgkqIG9iamVjdHMvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJR2V0VGV4dENoYXJzZXRJbmZvIHNob3VsZCByZXR1cm4gdGhlIGNoYXJzZXQgdGhhdCB0aGUgZHJpdmVyIGlzCglhY3R1YWxseSB1c2luZywgcmF0aGVyIHRoYW4gdGhhdCBzcGVjaWZpZWQgaW4gdGhlIExPR0ZPTlQuCgoJKiBkb2N1bWVudGF0aW9uL2ludHJvZHVjdGlvbi5zZ21sOgoJQW5kcml5IFBhbGFtYXJjaHVrIDxhcGEzYUB5YWhvby5jb20+CglJbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IFhGcmVlODYgV2luZG93cyBzZXJ2ZXIuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLAoJICBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb3ZlIHRoZSBSVF9YWFggbWFjcm9zIHRvIHdpbnVzZXIuaC4KCXdpbnVzZXIuaDogQWRkIHN1cHBvcnQgZm9yIE5PR0RJLgoJd2ludXNlci5oOiBNb2RpZnkgdG8gYWxsb3cgY29tcGlsYXRpb24gd2l0aG91dCB3aW5nZGkuaC4KCgkqIGluY2x1ZGUvc2hsb2JqLmgsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUNocmlzIEdyZWVuIDxjaHJpc19lX2dyZWVuQHlhaG9vLmNvbT4KCUFkZGVkIG5hbWVzIG9mIHRoZSAibWlzc2luZyIgcGF0aHMgZm9yIFNIR2V0U3BlY2lhbEZvbGRlclBhdGhBLgoKMjAwMS0xMC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvY2xhc3MuYzogRml4ZWQgbG9ja2luZyBvZiBjbGFzcyBsaXN0LgoJUHJpbnQgRVJSIHdoZW4gYWNjZXNzaW5nIGNsYXNzZXMgb2Ygb3RoZXIgcHJvY2Vzc2VzLgoKCSogaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3dpbmRvdy5jLCB3aW5kb3dzL3dpbi5jOgoJU3RvcmUgd2luZG93IGNsYXNzIGF0b20gaW4gdGhlIHNlcnZlci4KCUtlZXAgdW5saW5rZWQgd2luZG93cyBvbiBhIHNlcGFyYXRlIGxpc3QuCglJbXBsZW1lbnRlZCBpbnRlci1wcm9jZXNzIEZpbmRXaW5kb3coKS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBub24gd2luZG93cyBtYWNyb3MuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJU2lsZW5jZSB0aGUgcHRocmVhZF9raWxsX290aGVyX3RocmVhZHNfbnAgRklYTUUuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJRml4IE1hcFZpZXdPZkZpbGUgdG8gYWx3YXlzIHJldHVybiBhIDY0Sy1hbGlnbmVkIGFkZHJlc3MuCglBdm9pZCBjb252ZXJ0aW5nIHBvaW50ZXJzIHRvIFVJTlQuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9rZXJuZWwuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd2luc29jay5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9hZHZhcGkzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tYXBpMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXNpbWczMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9xdWFydHouYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zdGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlcyB1cGRhdGUuCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3dzMnNwaS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBuZXcgaW5jbHVkZSBmaWxlIHdzMnNwaS5oIGZvciBhZGRpbmcgbmVlZGVkIHR5cGVzLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglGaXhlZCBwYXJhbWV0ZXJzIG9mIFNldHVwT3BlbkluZkZpbGVBLgoKMjAwMS0xMC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzoKCU1vdmVkIE1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdHMgY2FsbCBvbiBSRFdfVVBEQVRFTk9XIG91dCBvZiB0aGUKCVJEV19QYWludCByZWN1cnNpb24uCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHN1cHBvcnQgZm9yIE5PQ09MT1IuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBtaXNjL3ZlcnNpb24uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJTW92ZSBXSU5ERUJVR0lORk8gZnJvbSB3aW5iYXNlLmggdG8gd2luYmFzZTE2LmggYW5kIHJlbmFtZSB0bwoJV0lOREVCVUdJTkZPMTYuCglNb3ZlIHRoZSByZWxhdGVkIG1hY3JvcyB0byB2ZXJzaW9uLmMgYW5kIGlmZGVmIHRoZW0gb3V0IChrZXB0IGZvcgoJZG9jdW1lbnRhdGlvbiBvbmx5LCB0aGV5IGFyZSBub3QgdXNlZCkuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdJTkVMSUIgYXBwbGljYXRpb25zIChsaWtlIHJlYWt0aXZhdGUpIG1pZ2h0IGhhdmUgdmVyeSBsb25nIChDKyspCglzeW1ib2xzLiBVc2UgYSBsYXJnZXIgYnVmZmVyLgoKCSogZmlsZXMvZHJpdmUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUdldERpc2tGcmVlU3BhY2VFeCBzaG91bGQgYWNjZXB0IGFuIGlucHV0IGxpa2UgIkM6Ii4KCgkqIGZpbGVzL2ZpbGUuYywgc2VydmVyL2ZpbGUuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJLSBmaXhlZCBjb3B5JnBhc3RlIGJ1ZyAoR0VORVJJQ19XUklURSBpbnN0ZWFkIG9mIEdFTkVSSUNfUkVBRCkKCS0gd2hlbiBnZXR0aW5nIHRoZSB0eXBlIG9mIGEgaGFuZGxlLCBpdCBoYXMgdG8gYmUgZG9uZSBldmVuIGlmIG5vIGZkCgkgIGlzIGF0dGFjaGVkIHRvIGl0IChjb25zb2xlIGZvciBleGFtcGxlKQoKCSogZGxscy9xdWFydHovYXN5bmNzcmMuYywgZGxscy9xdWFydHovYXN5bmNzcmMuaCwKCSAgZGxscy9xdWFydHovYXVkcmVuLmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsCgkgIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmgsIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywKCSAgZGxscy9xdWFydHovaWdjb25maWcuYywgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLAoJICBkbGxzL3F1YXJ0ei9tdHlwZS5jLCBkbGxzL3F1YXJ0ei9tdHlwZS5oLCBkbGxzL3F1YXJ0ei9wYXJzZXIuYywKCSAgZGxscy9xdWFydHovcGFyc2VyLmgsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBkbGxzL3F1YXJ0ei9zYW1wbGUuYywKCSAgZGxscy9xdWFydHovc2FtcGxlLmgsIGRsbHMvcXVhcnR6L3ZpZHJlbi5jLCBkbGxzL3F1YXJ0ei92aWRyZW4uaCwKCSAgZGxscy9xdWFydHovd2F2cGFyc2UuYywgaW5jbHVkZS9hbXZpZGVvLmgsIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLAoJICB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJU3RhcnRlZCBJbXBsZW1lbnRpbmcgVmlkZW8gUmVuZGVyZXIuCglTdGFydGVkIEltcGxlbWVudGluZyBXQVZFL0FVL0FJRkYgUGFyc2VyLgoJU3RhcnRlZCBJbXBsZW1lbnRpbmcgZmlsZSBzb3VyY2UuCglGaXhlZCBzb21lIGJ1Z3MuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCVJlbmFtZWQgVVNFUl9Jbml0IGludG8gVXNlckNsaWVudERsbEluaXRpYWxpemUuCgoJKiBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLAoJICBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCU1ha2Ugc2VyaWFsIGZkIGJsb2NraW5nIG1vZGUgZGVwZW5kIG9uIEZJTEVfRkxBR19PVkVSTEFQUEVELgoKCSogb2JqZWN0cy90ZXh0LmMsIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsCgkgIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglTbWFsbCB0eXBvIGZpeGVzL3VwZGF0ZXMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgbWlzYy9lcnJvci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb3ZlIHRoZSBFUlJfWFhYIG1hY3JvcyBmcm9tIHdpbmJhc2UuaCB0byBlcnJvci5jLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93c2lweC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIFNPQ0tBRERSX0lQWCBkZWNsYXJhdGlvbi4KCUNlbnRyYWxpemUgYWxsIHNvY2thZGRyX3h4eCBjb252ZXJzaW9ucyBpbiB3c19zb2NrYWRkcl93czJ1IGFuZAoJd3Nfc29ja2FkZHJfdTJ3cy4KCVJlbW92ZSB1Z2x5IGNhc3RzIGluIFRSQUNFcy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEZWZlciBlZGl0IHN0eWxlIGNvcnJlY3Rpb24gdW50aWwgRURJVFNUQVRFIGlzIGZ1bGx5IGluaXRpYWxpemVkLgoKCSogZGxscy9tc3ZjcnQvdGhyZWFkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJX2JlZ2ludGhyZWFkOiBEb24ndCBzdG9yZSB0aGUgdHJhbXBvbGluZSBvbiB0aGUgc3RhY2suCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmdkaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNb3ZlIENPTE9SUkVGIGZyb20gd2luZ2RpLmggdG8gd2luZGVmLmguCglBZGQgYSBwcm90b3R5cGUgZm9yIEdkaUZsdXNoLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglXcmFwcGVycyBtdXN0IGFsd2F5cyBiZSBjb21waWxlZCBpbiBTVFJJQ1QgbW9kZS4KCgkqIGRlYnVnZ2VyL2RlYnVnLmw6CglQcm92aWRlIGhlbHAgZXZlbiB3aGVuIGluIHRoZSBOT1BST0NFU1Mgc3RhdGUuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggaW5maW5pdGUgbG9vcCBwcm9ibGVtIGluIHdpbmVjbGlwc3J2IHN0YXJ0dXAuCglMYXVuY2hTZXJ2ZXI6IERvbid0IGdpdmUgdXAgb24gdGhlIGZpcnN0IG1lc3NhZ2UuCglBZGRlZCBHZXRTZWxlY3Rpb25FdmVudDogTGltaXQgQ1BVIHVzZSBhbmQgaW50cm9kdWNlIHRpbWVvdXQuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglCZXR0ZXIgaGFuZGxpbmcgb2YgdGhlIHRpbWVvdXQgaW4gV2FpdEZvcklucHV0SWRsZS4KCVVzZSBXQUlUX0ZBSUxFRCByYXRoZXIgdGhhbiB0aGUgY29ycmVzcG9uZGluZyBsaXRlcmFsLgoKCSogZGxscy91cmxtb24vdW1vbi5jLCBpbmNsdWRlL3VybG1vbi5oOgoJTWFsdGUgU3Rhcm9zdGlrIDxtYWx0ZUBrZGUub3JnPgoJQ3JlYXRlVVJMTW9uaWtlciB0YWtlcyBhIExQQ1dTVFIsIG5vdCBhIExQV1NUUi4KCjIwMDEtMTAtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6CglQcm9jZXNzIHBlbmRpbmcgZXZlbnRzIGJlZm9yZSBzZW5kaW5nIFdNX1BBSU5UIG9uIFJEV19VUERBVEVOT1cuCgoJKiBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvc29jay5jOgoJQWRkZWQgZ2V0X2ZpbGVfaW5mbyBzdXBwb3J0IHRvIG5hbWVkIHBpcGVzIGFuZCBzb2NrZXRzIHRvIGF2b2lkCglicmVha2luZyB0aGUgZ2V0X2hhbmRsZV9mZCByZXF1ZXN0LgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJQWRkZWQgZGVmaW5lcyBmb3IgcmVzb3VyY2UgdHlwZXMgUlRfTUVTU0FHRVRBQkxFLCBSVF9WRVJTSU9OLgoKCSogZGxscy91c2VyL21lc3NhZ2UuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeCBzaWduIGV4dGVuc2lvbiBwcm9ibGVtIGluIG1hcF93cGFyYW1fV3RvQS4KCgkqIGluY2x1ZGUvdXJsbW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHkuaDoKCU1hbHRlIFN0YXJvc3RpayA8bWFsdGVAa2RlLm9yZz4KCUFkZGVkIElQZXJzaXN0UHJvcGVydHlCYWcyIGFuZCBJUHJvcGVydHlCYWcyIGRlZmluaXRpb25zLCBhZGRlZAoJbWlzc2luZyAgQklORElORk8gbWVtYmVyLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglKb2hhbiBHaWxsIDxqb2hhbmVAbHlzYXRvci5saXUuc2U+CglUaGUgTFJfIGRlZmluZXMgZG8gbm90IHJlc2lkZSBpbiB3aW5kb3dzLmggYW55bW9yZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgQWRkUmVmJ3MuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBYS19Nb2RlX3N3aXRjaCB0byB0aGUgbGlzdCBvZiBpZ25vcmVkIGtleXN5bXMuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglEYW5pZWwgU2FibyA8ZGFuaWVsc2Fib0Bob3RtYWlsLmNvbT4KCUEgJ2ZpJyB3YXMgbmVlZGVkIGluIHRoZSBsYXN0IGlmIHN0YXRlbWVudC4KCjIwMDEtMTAtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTEwMDQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMTAtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglJZ25vcmUgUkxFIGRhdGEgdGhhdCBnb2VzIHBhc3QgdGhlIGxpbmUgZW5kIChmb3VuZCBieSBVd2UgQm9ubmVzKS4KCUdlbmVyYWwgY2xlYW51cCBvZiB0aGUgUkxFIHJvdXRpbmVzLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCU5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgoJU2tpcCBwb3J0IG51bWJlciBiZWZvcmUgY2FsbGluZyBnZXRob3N0YnluYW1lLgoJRml4IG5vbi1hYnNvbHV0ZSB1cmxzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVRoZSBESVNQUEFSQU1TIHBhcmFtZXRlciBhcnJheSBpcyBhIHJldmVyc2Utb3JkZXIgYXJyYXkuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgc2VydmVyL2NvbnNvbGUuYywKCSAgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvb2JqZWN0LmMsCgkgIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRmV0Y2ggYSBoYW5kbGUgdHlwZSBpbiBGSUxFX0dldFVuaXhIYW5kbGUuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmM6CglEb24ndCBpZ25vcmUgZmlyc3QgY2hhbmNlIGRlYnVnIGV4Y2VwdGlvbnMgc2luY2UgaXQgbWF5IGJlIGEKCWJyZWFrcG9pbnQgdGhhdCB3ZSBzZXQgb3Vyc2VsdmVzLgoKCSogZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBIGNvdXBsZSBvZiBtaW5vciBwb2ludHMgYWJvdXQgY29udmVydGluZyBXaW5kb3dzIGZvbnRzLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudCBjb2VyY2lvbiB0byBWVF9VTktOT1dOIGZyb20gVlRfRElTUEFUQ0guCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSVR5cGVJbmZvOjpJbnZva2Ugc2hvdWxkIGFsc28gc2VhcmNoIGluaGVyaXRlZCBpbnRlcmZhY2VzIGZvciB0aGUKCW1ldGhvZCB0byBpbnZva2UuCglJVHlwZUluZm86OkdldElEc09mTmFtZXMgbmVlZHMgdG8gZG8gY2FzZS1pbnNlbnNpdGl2ZSBzdHJpbmcKCWNvbXBhcmVzLgoKMjAwMS0xMC0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzoKCVNraXAgQml0Qmx0IERJQiBvcHRpbWl6YXRpb24gaWYgc291cmNlIGFuZCBkZXN0IERDcyBoYXZlIGRpZmZlcmVudAoJZGVwdGhzLgoKCSogd2luZG93cy93aW4uYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvdXNlci5oLCB3aW5kb3dzL2RlZnduZC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJTWFwIGEgd2luZG93IGlmIGl0IGlzIHNob3duIGJ5IGEgZGlyZWN0IHN0eWxlIGNoYW5nZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEb24ndCBpZ25vcmUgRElTUEFUQ0hfTUVUSE9EIGluIElUeXBlSW5mbzo6SW52b2tlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggU0hBZGRUb1JlY2VudERvY3MgY29kZSB0byBwcm9wZXJseSBoYW5kbGUgbmF0aXZlIENvbWN0bDMyIGFuZAoJbWlzc2luZyBwb2xpY2llcyBsb2NhdGlvbi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTG9va3MgbGlrZSB0aGUgU0xUR19JbXBsSW5mbyBzdHJ1Y3QgaXNuJ3QgYSBmaXhlZCBzaXplLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQ29ycmVjdGVkIElOVk9LRUtJTkQgZW51bWVyYXRpb24gdmFsdWVzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgdGhhdCBuZXdseSBhbGxvY2F0ZWQgVExTIGluZGV4ZXMgYXJlIGNsZWFyZWQuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglCZXR0ZXIgZmFrZSBpbXBsZW1lbnRhdGlvbiBvZiBTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZS4KCjIwMDEtMTAtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2RjLmMsIHdpbmRvd3MvZGNlLmM6CglGcmVlIGNhY2hlIERDRXMgaWYgdGhlIERDIGdldHMgZGVsZXRlZC4KCgkqIHdpbmRvd3MvaW5wdXQuYzogRml4ZWQgdHlwbyBpbiBwcmV2aW91cyBjaGFuZ2UuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBdm9pZCBpbmNsdWRpbmcgd2luYmFzZS5oIGluIGdlbmVyYXRlZCAuc3BlYy5jIGZpbGVzLgoKCSogZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5oOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBbGxvdyB0d28gY29ubmVjdGlvbnMgYnkgbm90IHJlbGVhc2luZyB0aGUgd3JhcHBlZCBsaWJyYXJ5IHRvbyBlYXJseS4KCUFsc28gaGVhdmlseSBwcm90ZWN0ZWQgYW5kIGFkZGVkIGFkZGl0aW9uYWwgdHJhY2UgaW5mb3JtYXRpb24uCglNYWtlIHRoZSBMb2FkIGZ1bmN0aW9ucyBzdGF0aWMgdG8gcmVkdWNlIHZpc2libGl0eSAoZW5oYW5jZQoJc2ltcGxpY2l0eSkuCgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLAoJICBpbmNsdWRlL2lucHV0Lmg6CglNZXJnZWQgbW91c2UgYnV0dG9ucyBzdGF0ZXMgaW50byB0aGUga2V5IHN0YXRlIGFycmF5LgoJRml4ZWQgY29uZnVzaW9uIGJldHdlZW4gcXVldWUgc3RhdGUgYW5kIGFzeW5jIHN0YXRlLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglSZW1vdmVkIHVubmVjZXNzYXJ5IGluY2x1ZGVzL2RlZmluaXRpb25zLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglJbHlhIEtvbnN0YW50aW5vdiA8d2luZS1wYXRjaGVzQGZ1dHVyZS5zaGlueS5jby5pbD4KCUFkZGVkIGEgX05FVF9XTV9OQU1FKFVURjhfU1RSSU5HKSBwcm9wZXJ0eSB0byBldmVyeSB3aW5kb3cuCgoJKiBpbmNsdWRlL3N5c21ldHJpY3MuaCwgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUFkZGVkIFNZU01FVFJJQ1NfU2V0LgoJSW1wbGVtZW50ZWQgU1BJX1NFVFNIT1dTT1VORFMgYWN0aW9uLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNYWtlIE9hQnVpbGRWZXJzaW9uKCkgcmV0dXJuIHRoZSBoaWdoZXN0IHZlcnNpb24gdmFsdWUgcG9zc2libGUuCglTb21lIGNsZWFudXBzLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluLCB3aW4zMi9kZXZpY2UuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sCgkgIGZpbGVzL2RyaXZlLmMsIGZpbGVzL3Byb2ZpbGUuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywKCSAgbWVtb3J5L2Vudmlyb24uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVlldCBhbm90aGVyIGRvY3VtZW50YXRpb24vbWVzc2FnZSB0ZXh0IHBhdGNoLgoKCSogZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1iaW5kbGxzLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1pbnRyby5zZ21sOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglBZGRpdGlvbnMgdG8gaG93IHRvIHVzZSBEb2Nib29rIHVuZGVyIFJlZEhhdCAodG8gaGVscCBiZWdpbm5lcnMgbGlrZQoJbWUpLgoJQWRkZWQgY29udGVudCB0byB0aGUgYmluZGxscyBzZWN0aW9uIG9mIFdpbmVsaWIgKGJhc2VkIG9uCglleHBlcmllbmNlKS4KCgkqIGRvY3VtZW50YXRpb24vd2luZW1ha2VyLm1hbjoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJVXBncmFkZSB3aW5lbWFrZXIgbWFuIHBhZ2UgZm9yIHRoZSB0d28gb3B0aW9ucyBhZGRlZCBhdCB2ZXJzaW9uCgkwLjUuOC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBXU0MqSW5zdGFsbFByb3ZpZGVyIHN0dWJzLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLW1mYy5zZ21sOgoJR3JhY2phbiBQb2xhayA8Z3JhY2phbkBhY2Noc2guY29tPgoJQWRkZWQgc29tZSBNRkMgZG9jdW1lbnRhdGlvbiAod2l0aCB0aGUgaGVscCBvZiBGcmFuY29pcyBHb3VnZXQpLgoKCSogZmlsZXMvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2hlY2sgZm9yIE5VTEwgcGF0aCBhcmd1bWVudCBpbiBEZWxldGVGaWxlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglMb25nIG5hbWVsZXNzIGFyZ3MgaW4gU0xURyBhcHBhcmVudGx5IGdldCBkZW5vdGVkIGJ5IDB4ZmZmZS4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50ZWQgZHVtbXkgc3R1YiBmb3IgU0hDaGFuZ2VOb3RpZnlVcGRhdGVFbnRyeUxpc3QgYW5kCglmdW5jdGlvbmFsIENJRExEYXRhX0NyZWF0ZUZyb21JREFycmF5LgoKCSogbGlicmFyeS9wb3J0LmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeCBpbXBsaWNpdCB0eXBlIGRlY2xhcmF0aW9ucy4gQWRkIHJlcXVpcmVkIGNhc3QuCgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBhIGhhY2sgZm9yIGtleWJvYXJkIGdyb3VwIHN3aXRjaGluZy4KCUFsd2F5cyBzYXZlL3Jlc3RvcmUgY29ycmVjdCBrZXlib2FyZCBncm91cCBpbmRleC4KCUV4cGxpY2l0bHkgaWdub3JlIHRoZSBrZXlib2FyZCBncm91cCBzd2l0Y2hpbmcgZXZlbnRzLgoKMjAwMS0xMC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9hdWRyZW4uYywgZGxscy9xdWFydHovYXVkcmVuLmgsCgkgIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmMsIGRsbHMvcXVhcnR6L2Jhc2VmaWx0LmgsCgkgIGRsbHMvcXVhcnR6L2Jhc2VwaW4uYywgZGxscy9xdWFydHovZmdldmVudC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguaCwKCSAgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLAoJICBkbGxzL3F1YXJ0ei9zYW1wbGUuYywgaW5jbHVkZS9zdHJtaWYuaCwgd2luZWRlZmF1bHQucmVnOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIENMU0lEX0F1ZGlvUmVuZGVyLgoKCSogZGxscy9vbGVhdXQzMi9kaXNwYXRjaC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBEaXNwR2V0UGFyYW0uCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4L2RvY3VtZW50IFNITFdBUEkgb3JkaW5hbHMgMjE3IGFuZCAyMTguCgoJKiBtaXNjL3ZlcnNpb24uYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU3BlZWQgb3B0aW1pemF0aW9uLgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHN0dWIgZm9yIFdTQXBTZXRQb3N0Um91dGluZS4KCgkqIGZpbGVzL2ZpbGUuYzogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglNYWtlIE1vdmVGaWxlRXggZmFpbCB3aXRoIEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSIChiZXR0ZXIgdGhhbgoJY3Jhc2hpbmcpIHdoZW4gdGhlIHNvdXJjZSBmaWxlIG9wZXJhbmQgaXMgTlVMTC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTaG91bGQgaW5pdGlhbGl6ZSBDT00gYmVmb3JlIGNhbGxpbmcgaXQuCgoyMDAxLTA5LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2hlYXAuYzoKCUZpeGVkIHNpemUgY2hlY2sgaW4gSEVBUF9GaW5kRnJlZUJsb2NrIHRvIG1ha2Ugc3VyZSB3ZSBhbHNvIGZpbmQKCWJsb2NrcyB0aGF0IGhhdmUgdGhlIGV4YWN0IHNpemUgbmVlZGVkLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lbGliLWludHJvLnNnbWw6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCXdpbmVtYWtlciBkb2N1bWVudGF0aW9uIGZpeC4KCgkqIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGluY2x1ZGUvbnRkZGsuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBoYW5kbGluZyBvZiB0eXBlbGlicyBsb2FkZWQgd2l0aCBhIHRyYWlsaW5nIHJlc291cmNlIG51bWJlci4KCVRoZSBsb2dpYyBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciBhbiBTTFRHIHR5cGVsaWIgaGFzIGEgZnVuY3Rpb24gcGFyYW0KCWFzIGEgJ3Nob3J0JyBvciAnbG9uZycgdHlwZSBoYXMgYmVlbiAncmVmaW5lZCcuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglQcmV2ZW50IGNhbGxpbmcgbnVsbCBmdW5jdGlvbnMuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVuYW1lZCBXX09LIHRvIE1TVkNSVF9XX09LLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLAoJICBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9tYWtlX3dpbmVocSwgZG9jdW1lbnRhdGlvbi9wcmludC5kc2wsCgkgIGRvY3VtZW50YXRpb24vcnVubmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVocS5kc2w6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBmb3JtYXR0aW5nIGZvciBQREYgb3V0cHV0LgoKMjAwMS0wOS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY2hhbm5lbC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBhIGNvdXBsZSBvZiB0eXBvcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBJQ09NX1tDXVRISVNfTVVMVEkgbWFjcm9zIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGltcGxlbWVudCBvYmplY3RzCgl0aGF0IGV4cG9zZSBtdWx0aXBsZSBpbnRlcmZhY2VzLiBBZGRlZCBwcm90b3R5cGVzIGZvciBDb0dldFBTQ2xzaWQgYW5kCglJVW5rbm93bl8qX1Byb3h5LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIHNvbWUgbmFtZWQgcGlwZSBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvb2xlMi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBwcm90b3R5cGUgZm9yIEdldEhHbG9iYWxGcm9tU3RyZWFtLgoKCSogZmlsZXMvZmlsZS5jOiBPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUEgZmFpbHVyZSB0byBvcGVuIGEgcGlwZSBzaG91bGQgcmV0dXJuIElOVkFMSURfSEFORExFX1ZBTFVFLgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L1JFQURNRSwgZGxscy9xdWFydHovYW1lcnJvci5jLAoJICBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5jLCBkbGxzL3F1YXJ0ei9iYXNlZmlsdC5oLAoJICBkbGxzL3F1YXJ0ei9iYXNlcGluLmMsIGRsbHMvcXVhcnR6L2RldmVudW0uYywgZGxscy9xdWFydHovZGV2bW9uLmMsCgkgIGRsbHMvcXVhcnR6L2Rldm1vbi5oLCBkbGxzL3F1YXJ0ei9lbnVtdW5rLmMsIGRsbHMvcXVhcnR6L2ZnY2xzaWQuYywKCSAgZGxscy9xdWFydHovZmdldmVudC5jLCBkbGxzL3F1YXJ0ei9mZ3Bhc3MuYywgZGxscy9xdWFydHovZmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ZncmFwaC5oLCBkbGxzL3F1YXJ0ei9mbWFwLmMsIGRsbHMvcXVhcnR6L2ZtYXAyLmMsCgkgIGRsbHMvcXVhcnR6L2liYXNhdWQuYywgZGxscy9xdWFydHovaWJhc3ZpZC5jLAoJICBkbGxzL3F1YXJ0ei9pZGV2ZW51bS5jLCBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2lmbWFwLmMsCgkgIGRsbHMvcXVhcnR6L2lmbWFwMy5jLCBkbGxzL3F1YXJ0ei9pZ2NvbmZpZy5jLCBkbGxzL3F1YXJ0ei9pbWVtLmMsCgkgIGRsbHMvcXVhcnR6L2ltZXNpbmsuYywgZGxscy9xdWFydHovaW1ldmVudC5jLAoJICBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9pbXNlZWsuYywgZGxscy9xdWFydHovaXJjbG9jay5jLAoJICBkbGxzL3F1YXJ0ei9pdW5rLmMsIGRsbHMvcXVhcnR6L2l2aWR3aW4uYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9tb25wcm9wLmMsCgkgIGRsbHMvcXVhcnR6L21vbnByb3AuaCwgZGxscy9xdWFydHovbXR5cGUuYywgZGxscy9xdWFydHovbXR5cGUuaCwKCSAgZGxscy9xdWFydHovcHRpbXBsLmMsIGRsbHMvcXVhcnR6L3B0aW1wbC5oLCBkbGxzL3F1YXJ0ei9wdG1wb3MuYywKCSAgZGxscy9xdWFydHovcHRtc2Vlay5jLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLAoJICBkbGxzL3F1YXJ0ei9zYW1wbGUuYywgZGxscy9xdWFydHovc2Vla3Bhc3MuYywKCSAgZGxscy9xdWFydHovc2Vla3Bhc3MuaCwgZGxscy9xdWFydHovc3lzY2xvY2suYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglNZXJnZWQgc29tZSBDIHNvdXJjZXMuCglGaXhlZCBzb21lIGJ1Z3MuCglTdGFydGVkIGltcGxlbWVudGluZyBzb21lIHBhc3MtdGhyb3VnaCBpbnRlcmZhY2VzLgoKMjAwMS0wOS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci91c2VyLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmMsIGRsbHMvdXNlci9tc2cxNi5jLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci90cmFjZS5jOgoJQSBjb3VwbGUgb2Ygb3B0aW1pemF0aW9ucyB0byBhdm9pZCBzb21lIHNlcnZlciBjYWxscyBpbiBXSU5fRmluZFduZFB0cgoJYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLgoKCSogc2VydmVyL3dpbmRvdy5jOgoJQXZvaWQgbGlzdCBjb3JydXB0aW9uIHdoZW4gbGlua2luZyB3aW5kb3cgd2l0aCBIV05EX0JPVFRPTSAodGhhbmtzIHRvCglHZXJhcmQgUGF0ZWwpLgoKCSogb2JqZWN0cy9mb250LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJR2V0VGV4dEV4dGVudEV4UG9pbnRXOiBkdW1wIHRoZSBzdHJpbmcgYmVmb3JlIG1vZGlmeWluZyB0aGUgcG9pbnRlci4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIG1ha2luZyBhIGJ1aWxkIGVudmlyb25tZW50IHdpdGhvdXQgZWRpdGluZyB0aGUgc291cmNlCglhbmQgc3BlYyBmaWxlcy4KCjIwMDEtMDktMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9zY3JvbGwuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBtZXNzYWdlIGxvb3Agb24gdGhlIGNsaWVudCBzaWRlIG9mIHRoZSBzY3JvbGwgY29udHJvbC4KCS0gTW92ZSB0aGUgbW91c2UgY2FwdHVyZSB0byBhZnRlciB0aGUgU2V0Rm9jdXMgc28gdGhhdCBpdCBzdGF5cwoJICBjYXB0dXJlZC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCURhdmlkIEhhbW1lcnRvbiA8Y3Jhem5leUBjcmF6bmV5Lm5ldD4KCUZpeGVkIHR5cG9zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50IGluaXRpYWwgdmVyc2lvbiBvZiBTSEFkZFRvUmVjZW50RG9jcy4KCgkqIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgaW5jbHVkZS93aW51c2VyLmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VzZXIuYywgc2VydmVyL3VzZXIuaCwgc2VydmVyL3dpbmRvdy5jLAoJICB3aW5kb3dzL3dpbi5jOgoJQWRkZWQgcHJvcGVyIHN1cHBvcnQgZm9yIHN0b3Jpbmcgd2luZG93IHBhcmVudHMgaW4gdGhlIHNlcnZlci4KCUFkZGVkIGEgZmV3IHJlcXVlc3RzIHRvIHF1ZXJ5IHRoZSB3aW5kb3cgaGllcmFyY2h5LgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglJZ25vcmUgQ29uZmlndWVOb3RpZnkgc2l6ZSBjaGFuZ2VzIHdoaWxlIHRoZSB3aW5kb3cgaXMgaWNvbmljLgoKCSogdG9vbHMvd2luZWR1bXAvZGVidWcuYywgdG9vbHMvd2luZWR1bXAvbWFpbi5jLAoJICB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jLCB0b29scy93aW5lZHVtcC9wZS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTb21lIGR1bWIgZml4ZXMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglEZWNsYXJlIERldmljZUlvQ29udHJvbC4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglBbmRyaXkgUGFsYW1hcmNodWsgPGFwYTNhQHlhaG9vLmNvbT4KCUltcGxlbWVudGVkIFNQSV9HRVRTSE9XU09VTkRTLgoKCSogZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVZhcmlhbnRzIGFuZCBzYWZlIGFycmF5cyBpcyBub3cgYWJsZSB0byBjb3B5IEJTVFIgc3dpdGggZW1iZWRkZWQgbnVsbAoJY2hhcmFjdGVycy4gU2FmZSBhcnJheXMgbm93IGhhbmRsZSBCU1RScyBhbmQgdmFyaWFudHMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZWdpc3RlciB0eXBlbGliIG1hcnNoYWxpbmcgZm9yIE9MRSBBdXRvbWF0aW9uLWNvbXBhdGlibGUgaW50ZXJmYWNlcy4KCjIwMDEtMDktMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL21zdmNydC9leGNlcHQuYzoKCUZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gX2V4Y2VwdF9oYW5kbGVyMy4KCgkqIGRsbHMvZ2RpL2dkaS5zcGVjLCBvYmplY3RzL2dkaW9iai5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgc3R1YiBmb3IgR2RpSW5pdDIoKS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUdldCBtb3JlIGVudHJ5IHBvaW50cyBmcm9tIENvbWN0bDMyIGFuZCBzYXZlIHRoZSBhZGRyZXNzZXMuCgoJKiBpbmNsdWRlL3NobHdhcGkuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglEZWZpbmUgdGhlIFNIUXVlcnlWYWx1ZUV4e0F8V30gZW50cnkgcG9pbnRzLgoKCSogZGxscy91c2VyL3dzcHJpbnRmLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVGhlIGJlaGF2aW9yIGZvciB3c3ByaW50ZkEgaXMgZGlmZmVyZW50IHRoYXQgZm9yIHdzcHJpbnRmMTYgaW4gaG93IGl0CgloYW5kbGVzIE5VTExzIGJlaW5nIHBhc3NlZCBhcyBjaGFyYWN0ZXIgcGFyYW1ldGVycy4KCgkqIG1lbW9yeS9lbnZpcm9uLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBjb252ZXJzaW9ucyBvZiBhIGNvbW1hbmQgbGluZSB0by9mcm9tIGFuIGFyZ3YgYXJyYXkuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglJbXBsZW1lbnQgbW9zdCBvZiB0aGUgTVJVIHJlbGF0ZWQgZnVuY3Rpb25zLgoKCSogdG9vbHMvZXhhbWluZS1yZWxheToKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgc3VwcG9ydCBmb3IgdGhlICtzbm9vcCBzdHlsZSBvdXRwdXQuCgoJKiBvYmplY3RzL3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtYXBwaW5nIG9mIERFRkFVTFRfQ0hBUlNFVC4KCjIwMDEtMDktMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6CglCcmFkIENhbXBiZWxsIDxicmFkQHNlbWUuY29tLmF1PgoJRml4ZWQgbW91c2UgcG9zaXRpb24gcHJvY2Vzc2luZyBmb3IgdXNlIHdpdGggYSB0b3VjaHNjcmVlbi4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9wdGltcGwuYywgZGxscy9xdWFydHovcHRpbXBsLmgsCgkgIGRsbHMvcXVhcnR6L3B0bXBvcy5jLCBkbGxzL3F1YXJ0ei9wdG1zZWVrLmMsIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsCgkgIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW1wbGVtZW50ZWQgSVNlZWtpbmdQYXNzVGhydS4KCgkqIHRvb2xzL3dpbmVjaGVjaywgREVWRUxPUEVSUy1ISU5UUywgUkVBRE1FLAoJICBkb2N1bWVudGF0aW9uL2FyY2hpdGVjdHVyZS5zZ21sLCBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsCgkgIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbiwKCSAgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBmaWxlcy9kb3NfZnMuYywgbGlidGVzdC92b2xpbmZvLmMsCgkgIG1zZG9zL2ludDI1LmMsIG1zZG9zL2ludDI2LmMsIHdpbmVkZWZhdWx0LnJlZzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVVwZGF0ZXMgYW5kIGVycm9yIG1lc3NhZ2UgaW1wcm92ZW1lbnRzLgoKCSogd2luZG93cy9tZGkuYzoKCUpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHByaW5jZS5uZXQ+CglDaGFuZ2VkIE1ESUNyZWF0ZUNoaWxkIHRvIHN1cHBvcnQgQ1dfVVNFREVGQVVMVCBmb3IgMTYtYml0IE1ESQoJd2luZG93cy4KCgkqIHdpbmRvd3Mvd2luLmM6CglGaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIFdJTl9TZXRXaW5kb3dMb25nIGNhdXNlZCBieSBwcmV2aW91cwoJY2hhbmdlLgoKCSogZGxscy9pbW0zMi9pbWVrbC5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5ubHMuaCwKCSAgb2xlL29sZTJubHMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBkZWZpbml0aW9uIG9mIHN0cnVjdHMgTlVNQkVSRk1UKiBhbmQgQ1VSUkVOQ1lGTVQqLgoJQWRkLCBmaXggYW5kIG1vdmUgcHJvdG90eXBlcyBmcm9tIHdpbmJhc2UuaCB0byB3aW5ubHMuaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUd1eSBBbGJlcnRlbGxpIDxndXlAY29kZXdlYXZlcnMuY29tPgoJRml4IHByb2JsZW0gY29tcGFyaW5nIHBpZGxzIGFuZCByZXR1cm4gY29ycmVjdCBjb2RlLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJQWRkZWQgcnVzc2lhbiBsYXlvdXQgd2l0aCBwaGFudG9tIGtleS4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3NweS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmUgbWFjcm9zIHRoYXQgc2hvdWxkIG5vdCBiZSB0aGVyZSAoY2F1c2UgY29uZmxpY3RzIGluIFdpbmVMaWIpLgoJQWRkIGNvcnJlc3BvbmRpbmcgY29tbWVudHMgaW4gc3B5LmMuCgoJKiBpbmNsdWRlL3RjaGFyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbiBvZiBfdG1haW4uCglBZGQgZGVmaW5pdGlvbnMgZm9yIF9fdGFyZ3YgYW5kIF90ZW52aXJvbi4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9jb250cm9scy5oLAoJICBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy91c2VyL3RodW5rLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsCgkgIGRsbHMvdXNlci93bmQxNi5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgaW5jbHVkZS93aW4uaCwKCSAgaW5jbHVkZS93aW5wcm9jLmgsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2NhcmV0LmMsCgkgIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kY2UuYywKCSAgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywKCSAgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21kaS5jLAoJICB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsCgkgIHdpbmRvd3MvcHJvcGVydHkuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3Njcm9sbC5jLAoJICB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3N0cnVjdDMyLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy93aW4uYywKCSAgd2luZG93cy93aW5oZWxwLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3Mvd2lucHJvYy5jLAoJICBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvaWNvbnRpdGxlLmMsCgkgIGNvbnRyb2xzL21lbnUuYzoKCU1hZGUgYWxsIDE2PC0+MzIgSFdORCBjb252ZXJzaW9ucyB1c2UgZXhwbGljaXQgZnVuY3Rpb25zIGluc3RlYWQgb2YKCWltcGxpY2l0IHR5cGUgY2FzdHMuCglNb3ZlZCBhIGxvdCBvZiAxNi1iaXQgZnVuY3Rpb25zIHRvIHRoZSBuZXcgd25kMTYuYyBmaWxlLgoJQ2hhbmdlZCBESUFMT0dJTkZPIHN0cnVjdHVyZSBoYW5kbGluZyB0byBzdXBwb3J0IDMyLWJpdCBoYW5kbGVzLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NobHdhcGkvb3JkaW5hbC5jOgoJRml4ZWQgYSBjb3VwbGUgb2YgSFdORCB0eXBlIG1pc21hdGNoZXMuCgoJKiBpbmNsdWRlL2ZvbnQuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBmb250IGNoYXJzZXQgdG8gb2J0YWluIGEgY29kZXBhZ2UgZm9yIEEtPlcgY29udmVyc2lvbiBpbiB0aGUKCXRleHQgZnVuY3Rpb25zLgoKCSogZGxscy93aW5pbmV0L3V0aWxpdHkuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVJlbmFtZSAiU3lzdGVtVGltZSIgdG8gInQiICh0aGlzIGlzICpub3QqIFNZU1RFTVRJTUUgLSBhdm9pZAoJY29uZnVzaW9uKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQmVybmhhcmQgUm9zZW5rcmFlbnplciA8YmVyb0ByZWRoYXQuZGU+CglGaXhlcyBmb3IgYXV0b2NvbmYgMi41MiBvciBoaWdoZXIuCgoJKiBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbWFpbi5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL21zdmNydC9sb2NhbGUuaCwgaW5jbHVkZS9tc3ZjcnQvc3lzL3N0YXQuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvd2NoYXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIG1zdmNydC9sb2NhbGUuaC4KCUFkZCBtaXNzaW5nIGluY2x1ZGUgZGlyZWN0aXZlcyBpbiBtc3ZjcnQvd2NoYXIuaC4KCUZpeCBwcm90b3R5cGUgb2YgX3dzdGF0aTY0IGluIG1zdmNydC9zeXMvc3RhdC5oLgoKMjAwMS0wOS0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2RyaXZlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTWFrZSByZWxhdGl2ZSBwYXRocyBvZiBbRHJpdmVdIHNlY3Rpb25zIHJlbGF0aXZlIHRvIFdJTkVQUkVGSVguCgoJKiBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTG90cyBvZiBycGNydDQuZGxsIHN0dWJzLgoKCSogdG9vbHMvd2luZWR1bXAvbWFpbi5jLCB0b29scy93aW5lZHVtcC9tc21hbmdsZS5jLAoJICB0b29scy93aW5lZHVtcC9wZS5jLCB0b29scy93aW5lZHVtcC9zeW1ib2wuYywKCSAgdG9vbHMvd2luZWR1bXAvd2luZWR1bXAuaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZGVtYW5nbGluZyBpbnZvY2F0aW9uLgoJQmUgYSBiaXQgbW9yZSB2ZXJib3NlIG9uIGltcGxlbWVudGVkIGZlYXR1cmVzLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJZ25vcmUgbmVnYXRpdmUgd2lkdGhzIGluIEhFQURFUl9TZXRJdGVtQm91bmRzLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQ29zbWV0aWMgY2hhbmdlcy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKCSAgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21ha2VfZGxsczoKCUltcHJvdmVkIG1ha2VfZGxscyBzY3JpcHQuIE1vdmVkIGRsbCBsaXN0IG91dCBvZgoJTWFrZS5ydWxlcy5pbi4gUmVtb3ZlZCBhIGZldyBubyBsb25nZXIgdXNlZCBydWxlcy4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9jb21wbGlzdC5jLAoJICBkbGxzL3F1YXJ0ei9kZXZlbnVtLmMsIGRsbHMvcXVhcnR6L2VudW11bmsuYywgZGxscy9xdWFydHovZmdjbHNpZC5jLAoJICBkbGxzL3F1YXJ0ei9mZ2lkaXNwLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5jLCBkbGxzL3F1YXJ0ei9mbWFwLmMsCgkgIGRsbHMvcXVhcnR6L2ZtYXAyLmMsIGRsbHMvcXVhcnR6L2liYXNhdWQuYywgZGxscy9xdWFydHovaWJhc3ZpZC5jLAoJICBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2lmbWFwLmMsIGRsbHMvcXVhcnR6L2lmbWFwMy5jLAoJICBkbGxzL3F1YXJ0ei9pZ3J2ZXIuYywgZGxscy9xdWFydHovaW1jbnRsLmMsIGRsbHMvcXVhcnR6L2ltZW0uYywKCSAgZGxscy9xdWFydHovaW1lc2luay5jLCBkbGxzL3F1YXJ0ei9pbWV2ZW50LmMsCgkgIGRsbHMvcXVhcnR6L2ltZmlsdGVyLmMsIGRsbHMvcXVhcnR6L2ltcG9zLmMsIGRsbHMvcXVhcnR6L2ltc2Vlay5jLAoJICBkbGxzL3F1YXJ0ei9pcmNsb2NrLmMsIGRsbHMvcXVhcnR6L2l2aWR3aW4uYywgZGxscy9xdWFydHovbWFpbi5jLAoJICBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5oLAoJICBkbGxzL3F1YXJ0ei9zYW1wbGUuYywgZGxscy9xdWFydHovc2FtcGxlLmgsIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsCgkgIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZHNvdW5kLmgsCgkgIGluY2x1ZGUvc3RybWlmLmgsIGluY2x1ZGUvd2luZS9vYmpfa3Nwcm9wZXJ0eS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIElNZW1BbGxvY2F0b3IuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9pbnRlcm5hdGlvbmFsaXNhdGlvbiwKCSAgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFuZHJpeSBQYWxhbWFyY2h1ayA8YXBhM2FAeWFob28uY29tPgoJRml4ZWQgcmVmZXJlbmNlcyB0byBvbGQgZG9jdW1lbnRhdGlvbiBsb2NhdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgX21ic3Vwci4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJQm9iYnkgQmluZ2hhbSA8dWhtbW1tQGFtZXJpdGVjaC5uZXQ+CglXaGVuIHlvdSBob2xkIHRoZSBsZWZ0IG1vdXNlIGJ1dHRvbiBpbnNpZGUgdGhlIHNjcm9sbGJhciwgdGhlbiBtb3ZlCgl0aGUgbW91c2Ugb2ZmIHNvIGl0IHN0b3BzIHNjcm9sbGluZywgYW5kIHJldHVybiB0aGUgbW91c2UsIGl0IHNob3VsZAoJY29udGludWUgc2Nyb2xsaW5nLgoKMjAwMS0wOS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBkbGxzL3N0aS8uY3ZzaWdub3JlLCBkbGxzL3N0aS9NYWtlZmlsZS5pbiwKCSAgZGxscy9zdGkvc3RpLnNwZWMsIGRsbHMvc3RpL3N0aV9tYWluLmMsIGRsbHMvdXJsLy5jdnNpZ25vcmUsCgkgIGRsbHMvdXJsL01ha2VmaWxlLmluLCBkbGxzL3VybC91cmwuc3BlYywgZGxscy91cmwvdXJsX21haW4uYywKCSAgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvbWFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvbWFwaTMyL01ha2VmaWxlLmluLAoJICBkbGxzL21hcGkzMi9tYXBpMzIuc3BlYywgZGxscy9tYXBpMzIvbWFwaTMyX21haW4uYywKCSAgZGxscy9tc2ltZzMyLy5jdnNpZ25vcmUsIGRsbHMvbXNpbWczMi9NYWtlZmlsZS5pbiwKCSAgZGxscy9tc2ltZzMyL21zaW1nMzIuc3BlYywgZGxscy9tc2ltZzMyL21zaW1nMzJfbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN0dWJzIGZvciBtYXBpMzIsIG1zaW1nMzIsIHN0aSBhbmQgdXJsLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCUZpeGVkIEhXTkQgY29tcGFyZSBpbiBOQ19IYW5kbGVTZXRDdXJzb3IuCgoJKiBncmFwaGljcy9wYXRoLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBdm9pZCBjYWxsaW5nIFJlc3RvcmVEQyB3aXRoIGdkaSBsb2NrLgoKCSogdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHJlbmRlci5jLCBjb25maWd1cmUsCgkgIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS90c194cmVuZGVyLmgsCgkgIHRvb2xzL21ha2VfWDExd3JhcHBlcnM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGQgY29uZmlnIGNoZWNrIGFuZCB0aHJlYWQgc2FmZSB3cmFwcGVycyBmb3IgdGhlIFhSZW5kZXIgbGlicmFyeS4KCgkqIGRsbHMvZ2RpL2RyaXZlci5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBob2xkIHRoZSBHREkgbG9jayB3aGlsZSAxNi1iaXQgRXh0RGV2aWNlTW9kZSBpcyBjYWxsZWQuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIG1pc3NpbmcgQ0FMTEJBQ0sgbW9kaWZpZXIuCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCByZWN2IHByb3RvdHlwZSBmb3IgV1NBUmVjdkV4LgoKCSogZmlsZXMvZG9zX2ZzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSBlcnJvciByZXR1cm5lZCBieSBHZXRMb25nUGF0aE5hbWVBLgoKCSogZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3VzZXIvZGRlL2NsaWVudC5jLCBkbGxzL3VzZXIvZGRlL21pc2MuYywKCSAgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywgZGxscy91c2VyL21lc3NhZ2UuYywgZGxscy94MTFkcnYvc2Nyb2xsLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywgd2luZG93cy9jYXJldC5jLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmM6CglNYWtlIHN1cmUgdGhhdCBIV05EIGNvbXBhcmlzb25zIGFyZSBhbHdheXMgZG9uZSB3aXRoIGZ1bGwgMzItYml0CgloYW5kbGVzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBpbmNsdWRlL3dpbnNvY2suaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IHRoZSBXU0FTdGFydHVwIHByb3RvdHlwZS4KCUZpeCBoYW5kbGluZyBvZiB0aW1lb3V0IHBhcmFtZXRlciBpbiBzZWxlY3QuCgoJKiB0b29scy93aW5lZHVtcC9wZS5jOgoJRml4ZWQgZHVtcGluZyBvZiBkbGwgZXhwb3J0IHRhYmxlLgoKCSogZGxscy9kZHJhdy9kZHJhdy9oYWwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV0dXJuIHRoZSBGT1VSQ0MgY29kZXMgc2V0IGJ5IHRoZSBIQUwgZHJpdmVyLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJUmVsZWFzZSBnZGkgbG9jayBiZWZvcmUgY2FsbGluZyBEZWxldGVEQy4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUGxhY2UgdGhlIGxvZyBpbiAkVE1QIGlmIHNldCBhbmQgL3RtcCBvdGhlcndpc2UuCgoJKiBpbmNsdWRlL3dpbmNvbi5oLCB3aW4zMi9jb25zb2xlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUhBTkRMRVJfUk9VVElORSBpcyBpbiBmYWN0IFBIQU5ETEVSX1JPVVRJTkUuCgoJKiBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNoZWNrIGZvciBodG90YWw9dnRvdGFsPTAgKGZvciB4ZnJlZSA0IHZlc2EgZHJpdmVyKS4KCjIwMDEtMDktMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZnJlZXR5cGUuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLAoJICBkbGxzL3dpbmVwcy9mb250LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2ZvbnQuaCwKCSAgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywKCSAgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglMYXkgZG93biB0aGUgaW5mcmFzdHJ1Y3R1cmUgZm9yIGdkaSBmb250IHJlbmRlcmluZy4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgR2V0R3lscGhPdXRsaW5lIGFuZCBHZXRPdXRsaW5lVGV4dE1ldHJpY3MKCWZvciBnZGkgZm9udHMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbi5oLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RpYWxvZy5jLAoJICB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy93aW4uYzoKCU1ha2Ugc3VyZSB0aGF0IGZ1bmN0aW9ucyByZXR1cm5pbmcgYW4gSFdORCBhbHdheXMgcmV0dXJuIGEgZnVsbCAzMi1iaXQKCWhhbmRsZS4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJVHJhdmlzIE1pY2hpZWxzZW4gPHRqbWljaGllbHNlbkB5YWhvby5jb20+CglDcmVhdGVkIHN0dWJzIGZvciBhbGwgY3J5cHRvZ3JhcGhpYyBmdW5jdGlvbnMuCgoJKiBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3VzZXIuYywgc2VydmVyL3VzZXIuaDoKCUNvbnZlcnQgdXNlciBoYW5kbGVzIHJlY2VpdmVkIGZyb20gY2xpZW50IHRvIGZ1bGwgaGFuZGxlcy4KCjIwMDEtMDktMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3Byb2Nlc3MuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgbm90IHVzZWQgaW5jbHVkZS9wcm9jZXNzLmguCgoJKiBvYmplY3RzL2NsaXBwaW5nLmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywKCSAgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYveHZpZG1vZGUuYywKCSAgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLAoJICBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIG1zZG9zL2ludDEwLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsCgkgIGRsbHMvZGRyYXcvZGRyYXcvaGFsLmMsIGRsbHMvaW1hZ2VobHAvbW9kaWZ5LmMsCgkgIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsCgkgIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9xdWFydHovYW1lcnJvci5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNsZWFudXAgY29kZSB0aGF0IGlzIHN0cmFuZ2Ugb3IgZGlmZmljdWx0IHRvIHBhcnNlLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBzZXBhcmF0ZSBzb21lIHN5c3RlbSBzcGVjaWZpYyBjb2RlLgoKCSogaW5jbHVkZS9kc2hvdy5oLCBpbmNsdWRlL3N0cm1pZi5oLCBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwKCSAgZGxscy9xdWFydHovYW11bmRvYy5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywgZGxscy9xdWFydHovZmdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2lmbWFwLmMsIGRsbHMvcXVhcnR6L2lmbWFwMy5jLCBkbGxzL3F1YXJ0ei9pbWNudGwuYywKCSAgZGxscy9xdWFydHovaW1lbS5jLCBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9pcmNsb2NrLmMsCgkgIGRsbHMvcXVhcnR6L2l1bmsuYywgZGxscy9xdWFydHovaXVuay5oLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jLmgsIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmMsCgkgIGRsbHMvcXVhcnR6L3NlZWtwYXNzLmgsIGRsbHMvcXVhcnR6L3N5c2Nsb2NrLmgsIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlZCBzb21lIGJyb2tlbiBtYWNyb3MuCglBZGRlZCBzb21lIHN0dWJzLgoJSW1wbGVtZXRlZCB1bmRvY3VtZW50ZWQgQVBJcy4KCUltcGxlbWVudGVkIG1hbnkgbWV0aG9kcyBpbiBJTWVkaWFGaWx0ZXIsIElNZWRpYUNvbnRyb2wgYW5kCglJUmVmZXJlbmNlQ2xvY2suCglTdGFydGVkIEltcGxlbWVudGluZyBJTWVtb3J5QWxsb2NhdG9yLgoKCSogd2luMzIvbmV3Zm5zLmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAY29kZXdlYXZlcnMuY29tPgoJUXVpZXQgRmx1c2hJbnN0cnVjdGlvbkNhY2hlIGZvciBub24tTlQgc3lzdGVtcyB3aGVyZSBpdCBkb2VzIG5vdGhpbmcKCXBlciBNU0ROLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzJfbWFpbi5jLAoJICBkbGxzL29sZTMyL29sZTMyX21haW4uaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglTeW5jaHJvbml6ZSBhY2Nlc3MgdG8gdGhlIHNfQ09NTG9ja0NvdW50LCBmaXJzdFJlZ2lzdGVyZWRDbGFzcywKCW9wZW5EbGxMaXN0IGluIGNvbXBvYmouCgoyMDAxLTA5LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglJZ25vcmUgc2l6ZSBjaGFuZ2Ugb24gQ29uZmlndXJlTm90aWZ5IGlmIHdpbmRvdyByZWN0IGlzIGVtcHR5IGFuZCBuZXcKCXNpemUgaXMgMXgxLgoKCSogd2luZG93cy93aW4uYzoKCU1ha2Ugc3VyZSB0aGF0IHJldHVybmVkIHdpbmRvdyBiZWxvbmdzIHRvIGNvcnJlY3QgdGhyZWFkIHdoZW4gY2hlY2tpbmcKCXNpYmxpbmdzIG9mIHRyYW5zcGFyZW50IHdpbmRvd3MgaW4gV0lOX0ZpbmRXaW5Ub1JlcGFpbnQuCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWw6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglUaGUgW3dpbmRvd3NdIHNlY3Rpb24gaXMgaW4gd2luLmluaSBub3QgaW4gfi8ud2luZS9jb25maWcuCgoJKiBkbGxzL21zdmlkZW8vbWNpd25kLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL291dHB1dC5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cF9zdGF0ZW1lbnRzLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX21vZHVsZV91c2VyLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd2luc29jay5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9xdWFydHouYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcnBjcnQ0LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBGcmVlQlNEIG5vdyBzdXBwb3J0ZWQuCgktIE11Y2ggbW9yZSB3b3JrIG9uIHRoZSBuZXcgQyBwYXJzZXIuCgktIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQW5keSBSeXNpbiA8YXJ5c2luQHlhaG9vLmNvbT4KCUFkZGVkIFVrcmFpbmlhbiBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYzoKCUJpbGwgTWVkbGFuZCA8QmlsbC5NZWRsYW5kQGFjY3BhYy5jb20+CglCYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiBJU3RyZWFtOkNsb25lLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglCaWxsIE1lZGxhbmQgPEJpbGwuTWVkbGFuZEBhY2NwYWMuY29tPgoJTW9yZSBncmFjZWZ1bCBleGl0IG9uIGZhaWx1cmUuCgoJKiBsaWJ0ZXN0L3ZhcnRlc3QuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBWXyogbWFjcm9zLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0eXBvLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTG9hZCBzb21lIHVzZWZ1bCBUWVBFQVRUUiBlbGVtZW50cyBmcm9tIHYxIHR5cGVsaWJzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vcmUgZGVidWcgb3V0cHV0IGZvciBJbnRlcm5ldEdldENvb2tpZSwgYWRkZWQgc3R1YiBmb3IgSW50ZXJuZXRTZXRDb29raWUuCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9oYWwuaCwKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5oLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL3RodW5rcy5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmgsIGluY2x1ZGUvZGRyYXdpLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGR3RmxhZ3MgdG8gbG9ja191cGRhdGUgcHJpdmF0ZSBmdW5jdGlvbnMgc28gd2UgY2FuIHBhc3MKCVdSSVRFT05MWS9SRUFET05MWS4KCUFkZGVkIHRob3NlIGZsYWdzIHRvIHRoZSBpbnRlcm5hbCBMb2NrKCkgY2FsbHMuCglPbmx5IGNvcHkgdGhlIHN1cmZhY2UgZnJvbSBzY3JlZW4gdG8gc3VyZmFjZSBpZiBub3Qgd3JpdGVvbmx5LgoJUmVzdHJpY3QgYmxpdHRpbmcgYmV0d2VlbiBkaXNwbGF5IHdpbmRvdyBhbmQgc3VyZmFjZSB0byB0aGUKCWxvY2tlZC91bmxvY2tlZCByZWN0YW5nbGUgYW5kIHRoZSBjbGlwd2luZG93IHNlY3Rpb24uCglBZGRlZCBkZWZpbmVzIGZvciBEREhBTF9VTkxPQ0tEQVRBL0RESEFMX0xPQ0tEQVRBLCBhZGRlZCBjYWxscyB0byBIQUwKCWltcGxlbWVudGF0aW9uLgoKCSogd2luZG93cy93aW4uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglUaGUgbWVzc2FnZSBoYW5kbGVyIG9mIFdNX1NUWUxFQ0hBTkdJTkcgaXMgc3VwcG9zZWQgdG8gYmUgYWJsZSB0bwoJbW9kaWZ5IHRoZSBwcm9wb3NlZCBzdHlsZSBpZiBpdCB3aXNoZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglVc2UgdGhlIG1pbi9tYXggaW4gd2luZGVmLmggaW5zdGVhZC4KCgkqIGRsbHMva2VybmVsL3RpbWUuYywgaW5jbHVkZS93aW5ubHMuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQHdpbmUubHN0LmRlPgoJRW5oYW5jZWQgR2V0Q2FsZW5kYXJJbmZvIHN0dWIsIGFkZGVkIGtub3duIENBTF8qIGRlZmluZXMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBpbmNsdWRlL2Rzb3VuZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXggYnVmZmVyaW5nIHByb2JsZW1zIGluIEhFTCBtb2RlLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGNvbXBpbGF0aW9uIGVycm9ycyBvbiBGcmVlQlNELgoKCSogZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZXdyaXRlIG1zdmNydF97YXJndnRvcyx2YWxpc3R0b3N9IHRvIGJlIG1vcmUgZWZmaWNpZW50LgoJV2FybiBhYm91dCB0aGUgJyAnIGFuZCAnIicgaGFuZGxpbmcgb2YgdGhlIGV4ZWMgYW5kIHNwYXduIGZ1bmN0aW9ucy4KCUNvcHkgdGhlIGNvbW1hbmQgbGluZSBpbiBNU1ZDUlRfc3lzdGVtIHRvIG1ha2UgaXQgd3JpdGFibGUuCgoJKiB0c3gxMS9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglMaW5rIHRzeDExIHdpdGggdGhlIFgvR0wgbGlicmFyaWVzLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHZpZG1vZGUuYywKCSAgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbiBvcHRpb24gdG8gZGlzYWJsZSBYVmlkTW9kZSBzdXBwb3J0LgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJRXJpYyBMYW1tZXJ0cyA8ZXJpY0BsYW1tZXJ0cy5vcmc+CglQcmVzZXJ2ZSB3aW5lIHJldHVybiBzdGF0dXMuCgoyMDAxLTA5LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd21jL3dyaXRlLmM6CglKdXN0aW4gU2FudGEgQmFyYmFyYSA8anVzdGluc2JAaG90bWFpbC5jb20+CglGaXhlZCBwcm9ibGVtIHdpdGggY2hlY2sgZm9yIHNwZWNpYWwgY2hhcmFjdGVycy4KCgkqIGRsbHMvbnRkbGwvc3RyaW5nLmM6CglKb2hhbm4gTWVzc25lciA8am9oYW5uLm1lc3NuZXJAemlkLnVuaS1saW56LmFjLmF0PgoJRml4ZWQgYnVnIGluIF91bHRvYS4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW5pdGlhbGl6ZSBhcmdjL2FyZ3Yvd2FyZ3YgYnkgY2FsbGluZyBudGRsbC5fX3dpbmVfZ2V0X3t3fW1haW5fYXJncy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUp1a2thIEhlaW5vbmVuIDxqaGVpQGlraS5maT4KCUNoYW5naW5nIERJQiBjb2xvciB0YWJsZSBub3cgdXBkYXRlcyB0aGUgRElCIHZpc2libGUgc3RhdGUuCgoJKiBkbGxzL3F1YXJ0ei9NYWtlZmlsZS5pbiwgZGxscy9xdWFydHovY29tcGxpc3QuYywKCSAgZGxscy9xdWFydHovY29tcGxpc3QuaCwgZGxscy9xdWFydHovZGV2ZW51bS5jLAoJICBkbGxzL3F1YXJ0ei9kZXZlbnVtLmgsIGRsbHMvcXVhcnR6L2Rldm1vbi5jLCBkbGxzL3F1YXJ0ei9kZXZtb24uaCwKCSAgZGxscy9xdWFydHovZW51bXVuay5jLCBkbGxzL3F1YXJ0ei9lbnVtdW5rLmgsIGRsbHMvcXVhcnR6L2ZnY2xzaWQuYywKCSAgZGxscy9xdWFydHovZmdpZGlzcC5jLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywgZGxscy9xdWFydHovZmdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2ZtYXAuYywgZGxscy9xdWFydHovZm1hcC5oLCBkbGxzL3F1YXJ0ei9mbWFwMi5jLAoJICBkbGxzL3F1YXJ0ei9mbWFwMi5oLCBkbGxzL3F1YXJ0ei9pYmFzYXVkLmMsIGRsbHMvcXVhcnR6L2liYXN2aWQuYywKCSAgZGxscy9xdWFydHovaWRldmVudW0uYywgZGxscy9xdWFydHovaWZncmFwaC5jLCBkbGxzL3F1YXJ0ei9pZm1hcC5jLAoJICBkbGxzL3F1YXJ0ei9pZm1hcDMuYywgZGxscy9xdWFydHovaWdydmVyLmMsIGRsbHMvcXVhcnR6L2ltY250bC5jLAoJICBkbGxzL3F1YXJ0ei9pbWVtLmMsIGRsbHMvcXVhcnR6L2ltZXNpbmsuYywgZGxscy9xdWFydHovaW1ldmVudC5jLAoJICBkbGxzL3F1YXJ0ei9pbWZpbHRlci5jLCBkbGxzL3F1YXJ0ei9pbXBvcy5jLCBkbGxzL3F1YXJ0ei9pbXNlZWsuYywKCSAgZGxscy9xdWFydHovaXJjbG9jay5jLCBkbGxzL3F1YXJ0ei9pdW5rLmgsIGRsbHMvcXVhcnR6L2l2aWR3aW4uYywKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5oLAoJICBkbGxzL3F1YXJ0ei9tb25wcm9wLmMsIGRsbHMvcXVhcnR6L21vbnByb3AuaCwKCSAgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsIGRsbHMvcXVhcnR6L3JlZ3N2ci5jLCBkbGxzL3F1YXJ0ei9yZWdzdnIuaCwKCSAgZGxscy9xdWFydHovc3lzY2xvY2suYywgZGxscy9xdWFydHovc3lzY2xvY2suaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzLgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgc29tZSBpbnRlcmZhY2VzIGluIEZpbHRlckdyYXBoLgoKCSogbGlicmFyeS9wb3J0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUVtdWxhdGUgdGhlIGJlaGF2aW91ciBvZiBMaW51eCBtbWFwKCkgb24gU29sYXJpcy4gQmFzZWQgb24gaWRlYXMgYW5kCglzYW1wbGUgY29kZSBkdWUgdG8gRXJpayBCb2Fzc29uIDxlYm9hc3NvbkBzaWduYWFsLm5sPiBhbmQgSm9obiBXZWhsZQoJPGpvaG5AZmVpdGguY29tPi4KCgkqIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBjb250cm9scy9jb21iby5jLAoJICBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvc3B5LmgsCgkgIHdpbmRvd3MvbWVzc2FnZS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUVuaGFuY2UgU1BZX0dldE1zZ05hbWUgdG8gdHJhbnNsYXRlIGNvbW1vbiBjb250cm9sIG1lc3NhZ2VzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBTSEdldFNwZWNpYWxGb2xkZXJQYXRoVyB0byBzcGVjIGZpbGUuCgoJKiBkbGxzL3NobHdhcGkvcGF0aC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CgktIEZpbmlzaCBQYXRoUGFyc2VJY29uTG9jYXRpb257QXxXfS4KCS0gSW1wbGVtZW50IFBhdGhJc1VOQ1NlcnZlcntBfFd8U2hhcmVBfFNoYXJlV30uCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHN0dWJzIGZvciBTSFJlZ0VudW1VU0tleXtBfFd9IGFuZCByZXR1cm4gZW5kLW9mLWxpc3QgZXJyb3IKCWFzIHJlc3VsdC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVVzZSBhIGRlZmF1bHQgRGV2TW9kZSBpZiBubyBEZXZNb2RlIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBpbgoJcmVnaXN0cnkuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBtYnNuYmNudCwgYWRkZWQgc3R1YnMgZm9yIF9HZXR0bmFtZXMgYW5kIF9fbGNfY29sbGF0ZV9jcC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEhhbmRsZSBDQ1NfTk9ESVZJREVSIGJvdGggd2hlbiBwcmVzZW50IGFuZCB3aGVuIG5vdC4KCS0gSGFuZGxlIHNvbWUgY2FzZXMgb2YgQ0NTX1RPUCwgQ0NTX0JPVFRPTSwgYW5kIENDU19OT1BBUkVOVEFMSUdOLgoJLSBIYW5kbGUgdmFsdWVzIHJldHVybmVkIGZyb20gdGhlIFJCTl9DSElMRFNJWkUgbm90aWZpY2F0aW9uLgoJLSBJbXBsZW1lbnQgUkJCU19DSElMREVER0UuCgktIEZpeCBzb21lIGxvZ2ljIGVycm9ycyBpbiBSRUJBUl9BZGp1c3RCYW5kcywgYW5kIHByb2JsZW1zIHdpdGggQ0NTX1ZFUlQuCgoJKiBjb25maWd1cmUuaW4sIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lZHVtcC8uY3ZzaWdub3JlLAoJICB0b29scy93aW5lZHVtcC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWR1bXAvUkVBRE1FLAoJICB0b29scy93aW5lZHVtcC9jdmluY2x1ZGUuaCwgdG9vbHMvd2luZWR1bXAvZGVidWcuYywKCSAgdG9vbHMvd2luZWR1bXAvZnVuY3Rpb25fZ3JlcC5wbCwgdG9vbHMvd2luZWR1bXAvbWFpbi5jLAoJICB0b29scy93aW5lZHVtcC9taXNjLmMsIHRvb2xzL3dpbmVkdW1wL21zbWFuZ2xlLmMsCgkgIHRvb2xzL3dpbmVkdW1wL291dHB1dC5jLCB0b29scy93aW5lZHVtcC9wZS5jLCB0b29scy93aW5lZHVtcC9wZS5oLAoJICB0b29scy93aW5lZHVtcC9zZWFyY2guYywgdG9vbHMvd2luZWR1bXAvc3ltYm9sLmMsCgkgIHRvb2xzL3dpbmVkdW1wL3dpbmVkdW1wLmgsIGNvbmZpZ3VyZToKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgUEUgZHVtcCBjYXBhYmlsaXRpZXMgdG8gc3BlY21ha2VyIGFuZCByZW5hbWVkIHNwZWNtYWtlciBpbnRvCgl3aW5lZHVtcC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRml4IHBvc2l0aW9uaW5nIG9mIHRleHQgaW4gYnV0dG9ucy4KCS0gRml4IG5CdXR0b25IZWlnaHQgc28gdGhhdCBpdCBpcyBub3QgemVybyBpbiBzb21lIGNhc2VzCgktIFN1cHBvcnQgVEJTVFlMRV9UUkFOU1BBUkVOVC4KCS0gRml4IGhhbmRsaW5nIGluIFdNX0VSQVNFQktHTkQgc28gdGhhdCB0aGUgZGVmYXVsdCBlcmFzZSBvY2N1cnMKCSAgYmV0d2VlbiBub3RpZmllcy4KCS0gRml4IFdNX05DQ1JFQVRFIHByb2Nlc3NpbmcgdG8gaXNzdWUgcHJvcGVyIFdNX1NUWUxFQ0hBTkdJTkcgKHZpYQoJICBTZXRXaW5kb3dMb25nKSBhbmQgZG9jdW1lbnQgdGhlIGlzc3Vlcy4KCgkqIG9iamVjdHMvZm9udC5jOgoJVHJhdmlzIE1pY2hpZWxzZW4gPHRqbWljaGllbHNlbkB5YWhvby5jb20+CglGaXhlZCBiZWhhdmlvciBvZiBHZXRUZXh0RXh0ZW50RXhQb2ludFcuICBJdCBtdXN0IGFsd2F5cyByZXR1cm4gdGhlCglleHRlbnRzIG9mIHRoZSBlbnRpcmUgc3RyaW5nIGluIHNpemUuCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z3V5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXZlbnQgYm9tYiB3aGVuIEdESV9PYmpQdHIgcmV0dXJucyBudWxsIG9iamVjdC4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5nZGkuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgR0RJX0VSUk9SIGRlZmluaXRpb24gdG8gd2luZ2RpLmguCglBZGQgSEdESV9FUlJPUi4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCByZWFkZXIgZm9yIHYxIChTTFRHKSB0eXBlbGlicy4KCUZpeCBhIGZldyBwcm9ibGVtcyB3aXRoIHYyIChNU0ZUKSB0eXBlbGlicy4KCUxvYWRUeXBlTGliRXggc2hvdWxkIGRvIGEgU2VhcmNoUGF0aCB0byBsb2NhdGUgdHlwZWxpYi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJT3BlblByaW50ZXIgc2hvdWxkIGZhaWwgaWYgcFByaW50ZXJOYW1lIGlzICIiLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBGVU5DRkxBR1MgYW5kIGNoYW5nZSBUWVBFRkxBR1NfKiB0byBhbiBlbnVtLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDb252ZXJ0IHRoZSBzb2NrZXQgdHlwZSAobmVjZXNzYXJ5IG9uIFNvbGFyaXMpLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGluY2x1ZGUvcnBjZGNlLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTdHViIGltcGxlbWVudGF0aW9uIGZvciBVdWlkSGFzaCgpLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IC5zcGVjIGZpbGUgcGFyYW1ldGVycyBmb3IgbXN2Y3J0Ll9mdWxscGF0aCBhbmQgbnRkbGwuX3NwbGl0cGF0aC4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBEaXJlY3RTaG93IGZpbHRlciBjYXRlZ29yaWVzLgoKCSogaW5jbHVkZS91dWlkcy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgbWlzc2luZyBHVUlEcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jOgoJR3V5IEFsYmVydGVsbGkgPGd1eUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIGNhbGxzIHRvIFN0clJldFRvQnVme0F8V30gd2l0aCBkdXBsaWNhdGUgY29kZSB0byBlbGltaW5hdGUKCXByb2JsZW1zIGJldHdlZW4gbmF0aXZlIGFuZCBidWlsdC1pbiBETExzLgoKMjAwMS0wOC0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3dpbi5jOgoJTWFrZSB3aW5kb3cgaGFuZGxlcyAzMi1iaXQgYmVmb3JlIGNhbGxpbmcgd2luZG93IHByb2NlZHVyZS4KCURvbid0IGNsZWFyIHdpbmRvdyBwYXJlbnQgZmllbGQgd2hlbiB1bmxpbmtpbmcgaXQuCgoyMDAxLTA4LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdXNlci5jLCBzZXJ2ZXIvdXNlci5oLAoJICBzZXJ2ZXIvd2luZG93LmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbmRvd3MvcXVldWUuYywKCSAgd2luZG93cy93aW4uYywgZGxscy90dHlkcnYvd25kLmMsIGRsbHMveDExZHJ2L2Rlc2t0b3AuYywKCSAgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJQWRkZWQgZ2xvYmFsIG1hbmFnZW1lbnQgb2YgdXNlciBoYW5kbGVzIGluIHRoZSBzZXJ2ZXIuCglWZXJ5IHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIHNoYXJlZCB3aW5kb3cgaGFuZGxlcy4KCgkqIEFOTk9VTkNFOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglVc2UgdGhlIG5ldyBkZXZlbG9wbWVudCBwYWdlIFVSTCBpbiB0aGUgYW5ub3VuY2VtZW50LgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZWltcGxlbWVudCBQUk9GSUxFX0dldFNlY3Rpb25OYW1lcyB0byBtYXRjaCB0aGUgTlQgJiBNU0ROIGJlaGF2aW9yLgoJVGhlIDMyQSB2ZXJzaW9uIGlzIG5vdyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIChpbnN0ZWFkIG9mIHRoZQoJMTZiaXQgdmVyc2lvbikuCgoJKiBsb2FkZXIvdGFzay5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglPbmx5IHVzZSB3aW5zb2NrMi5oIGluIFdpbmUuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZGVkIFdNX01PVVNFSE9WRVIgYW5kIFdNX01PVVNFTEVBVkUgdG8gZm9ybWF0dGluZy4KCgkqIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jOgoJT3V0cHV0IGNvcnJlY3QgYXNzZW1ibHkgZnVuY3Rpb24gaGVhZGVycyBmb3IgYWxsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9kZXZlbnVtLmMsCgkgIGRsbHMvcXVhcnR6L2RldmVudW0uaCwgZGxscy9xdWFydHovZmdyYXBoLmMsIGRsbHMvcXVhcnR6L2ZncmFwaC5oLAoJICBkbGxzL3F1YXJ0ei9mbWFwLmMsIGRsbHMvcXVhcnR6L2ZtYXAuaCwgZGxscy9xdWFydHovZm1hcDIuYywKCSAgZGxscy9xdWFydHovZm1hcDIuaCwgZGxscy9xdWFydHovaWJhc2F1ZC5jLCBkbGxzL3F1YXJ0ei9pYmFzdmlkLmMsCgkgIGRsbHMvcXVhcnR6L2lkZXZlbnVtLmMsIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovaWZtYXAuYywKCSAgZGxscy9xdWFydHovaWZtYXAzLmMsIGRsbHMvcXVhcnR6L2ltY250bC5jLCBkbGxzL3F1YXJ0ei9pbWV2ZW50LmMsCgkgIGRsbHMvcXVhcnR6L2ltcG9zLmMsIGRsbHMvcXVhcnR6L2ltc2Vlay5jLCBkbGxzL3F1YXJ0ei9pdW5rLmMsCgkgIGRsbHMvcXVhcnR6L2l1bmsuaCwgZGxscy9xdWFydHovaXZpZHdpbi5jLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBkbGxzL3F1YXJ0ei9yZWdzdnIuYywgZGxscy9xdWFydHovcmVnc3ZyLmgsCgkgIHdpbmVkZWZhdWx0LnJlZzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIHN0dWJzLgoKMjAwMS0wOC0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglDaGVjayBmb3IgdmFsaWQgb2JqZWN0IGluIEdESV9HZXRPYmpQdHIgZXZlbiBmb3IgTUFHSUNfRE9OVENBUkUuCgoJKiBkbGxzL3gxMWRydi94MTFkZHJhdy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJR3JhYlBvaW50ZXIgdXNlcyBub3cgU2V0V2luZG93TG9uZyB0byBjaGFuZ2Ugd2luZG93IHByb2NlZHVyZSBpbnN0ZWFkCglvZiBhY2Nlc3NpbmcgZGlyZWN0bHkgV05EIHN0cnVjdHVyZS4KCgkqIGRsbHMva2VybmVsL3N5bmMuYywgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLAoJICBzZXJ2ZXIvbmFtZWRfcGlwZS5jLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5oLAoJICBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBHZXROYW1lZFBpcGVJbmZvLgoKCSogaW5jbHVkZS9zdHJtaWYuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgaW50ZXJmYWNlcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIElDT01fTUVUSE9EMTItMjYsIElDT01fVk1FVEhPRDEyLTI2LCBJQ09NX0NBTEwxMi0yNi4KCjIwMDEtMDgtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTA4MjQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDgtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luZS93aW5zb2NrMTYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgV1NBU1RBUlRVUDE2IGEgMSBieXRlIGFsaWdubWVudCB2ZXJzaW9uIG9mIFdTQVNUQVJUVVAgZm9yIHdpbjE2LgoKCSogaW5jbHVkZS91dWlkcy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgbWlzc2luZyBDTFNJRHMuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL3BlX2ltYWdlLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFkZGVkIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIIHN1cHBvcnQgdG8gTG9hZExpYnJhcnlFeC4KCgkqIGNvbnRyb2xzL2ljb250aXRsZS5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywKCSAgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglBZGRlZCBXSU5fTGlzdFBhcmVudHMgZnVuY3Rpb24gYW5kIHJlbmFtZWQgV0lOX0J1aWxkV2luQXJyYXkgaW50bwoJV0lOX0xpc3RDaGlsZHJlbi4gTWFkZSBvd25lciBmaWVsZCBpbiBXTkQgc3RydWN0dXJlIGFuIEhXTkQuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglSZW1vdmVkIGluY2x1c2lvbiBvZiB3aW4uaC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3N5bmMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglBZGQgc3R1YnMgZm9yIHNldmVyYWwgbmFtZWQgcGlwZSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luc29jay5oLCBzZXJ2ZXIvc29jay5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW5hbWUgdGhlIHJlZ3VsYXIgV1NfRkRfWFhYIG1hY3JvcyB0byBGRF9YWFguCglSZW5hbWUgdGhlIFdpbmUgc3BlY2lmaWMgV1NfRkRfWFhYIG1hY3JvcyB0byBGRF9XSU5FX1hYWC4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglNYWRlIGluZGVwZW5kZW50IGZyb20gd2luc29jay4KCUluY2x1ZGUgdGhlIG5lZWRlZCBoZWFkZXJzIGRpcmVjdGx5IGluIGludGVybmV0LmguCgoJKiBvYmplY3RzL2ZvbnQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJTWlub3IgZml4ZXMgaW52b2x2aW5nIGhhbmRsaW5nIE5VTEwgcG9pbnRlcnMuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywKCSAgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvZGNlLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLAoJICB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2ZvY3VzLmMsCgkgIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLAoJICB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglJbXBsZW1lbnRlZCBHZXRBbmNlc3RvciBhbmQgcmVtb3ZlZCBXSU5fR2V0VG9wUGFyZW50LgoJUmVtb3ZlZCBhIGZldyBtb3JlIGFjY2Vzc2VzIHRvIHRoZSBXTkQgc3RydWN0dXJlLgoKMjAwMS0wOC0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJRG9uJ3QgaG9sZCB0aGUgR0RJIGxvY2sgZHVyaW5nIGFjY2Vzc2VzIHRvIHRoZSBtZXRhZmlsZSBkYXRhLgoKCSogZGxscy9rZXJuZWwvc3luYy5jLCBpbmNsdWRlL3dpbmUvc2VydmVyX3Byb3RvY29sLmgsCgkgIHNlcnZlci9uYW1lZF9waXBlLmMsIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9yZXF1ZXN0LmgsCgkgIHNlcnZlci90cmFjZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudCBXYWl0TmFtZWRQaXBlIGFuZCBEaXNjb25uZWN0TmFtZWRQaXBlLgoJQWRkIGEgc3RhdGUgZm9yIGVhY2ggcGlwZSBoYW5kbGUgaW4gdGhlIHNlcnZlci4KCUNyZWF0ZSBhIHNvY2tldCBvbiB3aGVuIHRoZSBwaXBlIGlzIG9wZW5lZCwgbm90IGJlZm9yZS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgc2VydmVyL3NvY2suYzoKCURhbmllbCBXYWxrZXIgPGRpd2Fsa2VyQGVhcnRobGluay5uZXQ+CgktIEZpeCBmb3Igbm9uYmxvY2tpbmcgc29ja2V0cyB1c2luZyBXU0FFdmVudFNlbGVjdCgpIChwYXRjaCBmcm9tIE92ZQoJICBLYWF2ZW4pLgoJLSBDaGFuZ2VkIFdTQUVudW1OZXR3b3JrRXZlbnRzKCkgc28gaXQgb25seSByZXR1cm5zIGV2ZW50cyB0aGF0IHRoZQoJICBhcHBsaWNhdGlvbiBpcyBsb29raW5nIGZvci4KCS0gQ2hhbmdlZCBzb2NrX3BvbGxfZXZlbnQoKSB0byBpbnRlcnByZXQgYSBQT0xMSU4gZXZlbnQgd2l0aCB6ZXJvCgkgIGJ5dGVzIHdhaXRpbmcgdG8gYmUgcmVhZCBhcyBhIFBPTExIVVAuCgoyMDAxLTA4LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9xdWFydHovTWFrZWZpbGUuaW4sIGRsbHMvcXVhcnR6L2FtZXJyb3IuYywKCSAgZGxscy9xdWFydHovcXVhcnR6LnNwZWMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZXJyb3JzLmgsCgkgIGluY2x1ZGUvdmZ3bXNncy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHR3byBtaXNzaW5nIGhlYWRlcnMuCglJbXBsZW1lbnRlZCBBTUdldEVycm9yVGV4dC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9xdWFydHouYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hlbGwzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIveDExZHJ2LmFwaSwgdG9vbHMvd2luYXBpL2NfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaS9jX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGkvb3V0cHV0LnBtLCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfZWRpdG9yLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfc3RhdGVtZW50cy5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9tb2R1bGVfdXNlci5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQ29udGludWVkIG9uIHRoZSBuZXcgQyBwYXJzZXIuCgktIE1vcmUgcmVvcmdhbml6YXRpb25zIGFuZCBmaXhlcy4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9jb21wbGlzdC5jLAoJICBkbGxzL3F1YXJ0ei9jb21wbGlzdC5oLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywgZGxscy9xdWFydHovZmdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2liYXNhdWQuYywgZGxscy9xdWFydHovaWJhc3ZpZC5jLCBkbGxzL3F1YXJ0ei9pZmdyYXBoLmMsCgkgIGRsbHMvcXVhcnR6L2ltY250bC5jLCBkbGxzL3F1YXJ0ei9pbWVtLmMsIGRsbHMvcXVhcnR6L2ltZXZlbnQuYywKCSAgZGxscy9xdWFydHovaW1wb3MuYywgZGxscy9xdWFydHovaW1zZWVrLmMsIGRsbHMvcXVhcnR6L2lyY2xvY2suYywKCSAgZGxscy9xdWFydHovaXVuay5jLCBkbGxzL3F1YXJ0ei9pdW5rLmgsIGRsbHMvcXVhcnR6L2l2aWR3aW4uYywKCSAgZGxscy9xdWFydHovbWFpbi5jLCBkbGxzL3F1YXJ0ei9tZW1hbGxvYy5jLCBkbGxzL3F1YXJ0ei9zeXNjbG9jay5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMgZm9yIENMU0lEX0ZpbHRlckdyYXBoLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYW4gaW5jb3JyZWN0IChoYXJtbGVzcykgbWVtb3J5IGFsbG9jYXRpb24uCgoJKiBpbmNsdWRlL2NvbnRyb2wuaCwgb2xlL3V1aWQuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBtaXNzaW5nIElJRHMuCgoJKiBkbGxzL3VzZXIvY29tbTE2LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZWQgUFJPRklMRV8gZnVuY3Rpb25zIGJ5IFJlZ1F1ZXJ5VmFsdWVFeEEuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUFkZGVkIHN0dWIgZm9yIENhbmNlbElvLgoKCSogTWFrZS5ydWxlcy5pbjogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCBtYW4gYW5kIGRvYy1odG1sIHJ1bGVzLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUV1Z2VuZSBNYXlldnNraSA8bWF5ZXZza2lAZWxkb3Mub3JnPgoJRml4ZWQgRFRfUlRMUkVBRElORyBmbGFnIGludGVycHJldGF0aW9uLgoKMjAwMS0wOC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvd2luLmg6CglSZW1vdmVkIFdJTl9HZXREZXNrdG9wKCkuCgoJKiB3aW4zMi9jb25zb2xlLmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL21zYy5jLAoJICBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywKCSAgZGxscy91c2VyL2RkZS9zZXJ2ZXIuYywgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9tY2kuYywKCSAgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9tbWF1eC5jLAoJICBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWwsIG1zZG9zL2ludDJmLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCURvY3VtZW50YXRpb24gdXBkYXRlcyAobWFpbmx5IHRocnUgdnMuIHRocm91Z2gpLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJUmVjdCByZXR1cm5lZCBieSBMSVNUVklFV19HZXRJdGVtUmVjdCBzaG91bGQgYmUgdG90YWwgc2l6ZSBpbiByZXBvcnQKCW1vZGUuCgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglEZWZhdWx0IGJpdG1hcCBpcyBub3Qgc3ViamVjdCB0byByZWZlcmVuY2UgY291bnRpbmcuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkIHRoZSBkZWNWYWwgZmllbGQgdG8gVkFSSUFOVC4KCUZpeCB0aGUgVkFSSUFOVCBDIGxheW91dCwgaS5lLiB0aGUgdW5pb24vc3RydWN0IG5hbWVzL25lc3RpbmcuCglFbmNhcHN1bGF0ZSBhbGwgYWNjZXNzZXMgdG8gVkFSSUFOVCB0eXBlcyB3aXRoIHRoZSBWX1ZUIGFuZCBWX1VOSU9OCgltYWNyb3MuCgoJKiBzZXJ2ZXIvc2VyaWFsLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJVW5jb25kaXRpb25hbGx5IHNldCBPX05PTkJMT0NLIHdoZW4gb3BlbmluZy4KCjIwMDEtMDgtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmM6CglSZWZ1c2UgdG8gc2VsZWN0IGEgYml0bWFwIHRoYXQgaXMgYWxyZWFkeSBzZWxlY3RlZCBpbiBhbm90aGVyIERDLgoKCSogb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCBkZWxheWVkIGRlc3RydWN0aW9uIG9mIEdESSBvYmplY3RzLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUZpeGVkIEdldENsYXNzTG9uZyB0byByZXR1cm4gZnVsbCAzMiBiaXRzIGZvciBhbGwgaXRlbXMuCglSZW1vdmVkIEdDV18qIGRlZmluaXRpb25zIHRoYXQgZG9uJ3QgZXhpc3QgaW4gV2luMzIuCgoJKiBvYmplY3RzL2RpYi5jOgoJQ3JlYXRlIGEgY29sb3IgYml0bWFwIGluIENyZWF0ZURJQml0bWFwIGV2ZW4gd2l0aCBhIGJsYWNrJndoaXRlIERDLgoKCSogaW5jbHVkZS9vbGVhdXRvLmg6CglOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KCVJlbW92ZWQgc3RydWN0IFVEQVRFIGZvcndhcmQgZGVjbGFyYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJU3RvcmUgdGhlIGNvbW0gZXJyb3IgdmFsdWUgaW4gdGhlIHdpbmVzZXJ2ZXIsIG5vdCBhIGdsb2JhbC4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglSZWFkIGRhdGEgaW1tZWRpYXRlbHkgaW4gb3ZlcmxhcHBlZCBSZWFkRmlsZSBpZiBwb3NzaWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCURvIG5vdCBrZWVwIHRoZSBoYW5kbGUgb2YgYSBkZWxldGVkIGl0ZW0gYXMgdGhlIHNlbGVjdGVkSXRlbS4uCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIEdldERDKDApIGluc3RlYWQgb2YgQ3JlYXRlQ29tcGF0aWJsZURDKDApLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdlIG5lZWQgdG8gbWFrZSBhIGNvcHkgb2YgdGhlIGZvbnRuYW1lIGFuZCB0aGUgSEZPTlQgaGFuZGxlIGluCglJRm9udF9DbG9uZSwgb3RoZXJ3aXNlIHdlIGdldCBtZW1vcnkgY29ycnVwdGlvbiBhbmQgYmFkIEdESSBoYW5kbGVzLgoKMjAwMS0wOC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYywgd2luZG93cy93aW5wcm9jLmM6CglBZGRlZCBwcm9wZXIgc3VwcG9ydCBmb3IgMzItYml0IFdNX05FWFRNRU5VLgoKCSogZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3VzZXIvbXNnMTYuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLAoJICB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3VzZXIuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjOgoJUmVtb3ZlZCBhIG51bWJlciBvZiBkaXJlY3QgYWNjZXNzZXMgdG8gdGhlIHdpbmRvdyBzdHJ1Y3R1cmUuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9tY2l3bmQuYywKCSAgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGVkIGltcGxlbWVudGluZyB0aGUgTUNJV25kKiBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IHBhc3MgdGhlIGhpZ2ggbGV2ZWwgd0ZsYWdzIGZyb20gVmFyaWFudENoYW5nZVR5cGUqIGRvd24gdG8gbG93CglsZXZlbCBWYXJpYW50IGNvbnZlcnNpb24gZnVuY3Rpb25zLgoKCSogZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oOgoJRml4ZWQgaW50ZXJuYWwgaW5saW5lIGZ1bmN0aW9uIHRoYXQgd2FzIGRlY2xhcmVkIGV4dGVybi4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglFeHBsaWNpdGx5IGNoZWNrIGZvciBDU19QQVJFTlREQyBpbiBXTV9FUkFTRUJLR05EIGhhbmRsaW5nLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCVJlcGxhY2VkIG1lbXNldCBieSBoYW5kIG1hZGUgZXF1aXZhbGVudCB0byB3b3JrIGFyb3VuZCBzb21lIGJ1Z2d5CgltZW1zZXQgaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQmVjYXVzZSBvZiBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBjb21jdGwzMiBhbmQgbXN2ZnczMiwgcmVwbGFjZQoJaW4gY29tY3RsMzIgZGVsYXkgbG9hZGluZyBvZiBtc3ZmdzMyIGJ5IG1hbnVhbCBsb2FkaW5nLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCVRlc3QgZm9yIGludmFsaWQgbGFyZ2UgaGFuZGxlcyBpbiBHRElfR2V0T2JqUHRyIGFuZCBHRElfRnJlZU9iamVjdC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQG5lcmltLm5ldD4KCUZpeCBGaWxsUmVjdCBjYWxscyBpbiBGSUxFRExHOTVfTE9PS0lOX0RyYXdJdGVtLgoKCSogZGxscy9nZGkvcHJpbnRkcnYuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGhvbGQgdGhlIEdESSBsb2NrIHdoZW4gdGhlIEFCT1JURE9DIHByb2NlZHVyZSBpcyBjYWxsZWQuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIG9sZWF1dDMyLlZhckJzdHJDYXQuCgoyMDAxLTA4LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJTWFkZSB0aGUgSW50ZXJsb2NrZWQqUG9pbnRlciBmdW5jdGlvbnMgc3RhdGljIGlubGluZSBzaW5jZSB0aGV5IGFyZW4ndAoJZXhwb3J0ZWQgYnkgdGhlIFdpbmRvd3MgQVBJLgoKCSogb2JqZWN0cy9kaWIuYzoKCVVzZSB0aGUgcGFzc2VkIGhkYyBpbiBDcmVhdGVESUJpdG1hcCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS4KCgkqIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9zeXNjb2xvci5jLAoJICBkbGxzL3dpbmVwcy9mb250LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmg6CglDcmVhdGUgR0RJIHN0b2NrIG9iamVjdHMgYXMgbm9ybWFsIG9iamVjdHMgaW5zdGVhZCBvZiB1c2luZyBtYWdpYwoJaGFuZGxlIHZhbHVlcy4KCjIwMDEtMDgtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVwcy9mb250LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZ2Rpb2JqLmM6CglTcGVjaWZ5IHNpemVzIGZvciBzdG9jayBmb250cyBhZ2FpbjsgcmVtb3ZlZCB0aGUgRml4U3RvY2tGb250U2l6ZQoJaGFjay4gSWdub3JlIG1hcHBpbmcgbW9kZXMgd2hlbiBzZWxlY3Rpbmcgc3RvY2sgZm9udHMgaW50byBhIERDLgoJUmVtb3ZlZCBhIGZldyBkaXJlY3QgYWNjZXNzZXMgdG8gR0RJIHN0cnVjdHVyZXMgZnJvbSB4MTFkcnYuCgoJKiBvYmplY3RzL2RjLmM6CglSZWxlYXNlIEdESSBsb2NrIGJlZm9yZSBjYWxsaW5nIERlbGV0ZURDIGZyb20gUmVzdG9yZURDLgoKCSogZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLAoJICBkbGxzL3NoZWxsMzIvZGlhbG9ncy5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLAoJICBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3NocG9saWN5LmMsCgkgIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsCgkgIGRsbHMvc2hlbGwzMi91bmRvY3NoZWxsLmgsIGluY2x1ZGUvd2luZS9zaGVsbDE2LmgsCgkgIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jOgoJTW92ZWQgdW5kb2NzaGVsbC5oIHRvIGRsbHMvc2hlbGwzMi4gUmVtb3ZlZCBzaGVsbDE2LmguCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUvd2luLmg6CglNb3ZlZCB1c2VyIGxvY2sgdG8gdXNlci5jLiBBZGRlZCBVU0VSX0NoZWNrTm90TG9jayBmdW5jdGlvbi4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgbWVtb3J5L3ZpcnR1YWwuYywKCSAgb2JqZWN0cy9nZGlvYmouYywgc2NoZWR1bGVyL3B0aHJlYWQuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsCgkgIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3RpbWVyLmMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywKCSAgZGxscy9udGRsbC9ydGwuYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLAoJICBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvdXNlci9kZGUvbWlzYy5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmMsIGRsbHMvd2luc29jay9hc3luYy5jLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBmaWxlcy9wcm9maWxlLmM6CglBZGRlZCBuYW1lcyB0byBzdGFuZGFyZCBjcml0aWNhbCBzZWN0aW9ucyAoc3VnZ2VzdGVkIGJ5IEFuZHJlYXMKCU1vaHIpLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglQYXJ0aWFsbHkgaW1wbGVtZW50IG9sZWF1dDMyLlZhckJzdHJDbXAuCgoyMDAxLTA4LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2dkaW9iai5jOgoJTWFrZSBzdXJlIHdlIGRvbid0IGhvbGQgdGhlIEdESSBsb2NrIHdoZW4gbG9hZGluZyBkcml2ZXJzLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9zeXNsZXZlbC5jOgoJSW1wbGVtZW50ZWQgX0NoZWNrTm90U3lzTGV2ZWwuCgoJKiBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGRsbHMvZ2RpL2RyaXZlci5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmM6CglGaXhlZCB3aW4xNmRydiBpbml0aWFsaXNhdGlvbi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVBhdGhHZXRFeHRlbnNpb25BVyBoYXMgdGhyZWUgYXJndW1lbnRzLgoKCSogbXNkb3MvaW9wb3J0cy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRG9uJ3QgY2FsbCBEb3N2bSBmdW5jdGlvbnMgd2hlbiBEb3N2bSBpc24ndCBpbml0aWFsaXplZC4KCgkqIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLCBkbGxzL3F1YXJ0ei9mZ3JhcGguYywgZGxscy9xdWFydHovZmdyYXBoLmgsCgkgIGRsbHMvcXVhcnR6L2lmZ3JhcGguYywgZGxscy9xdWFydHovaW1lbS5jLCBkbGxzL3F1YXJ0ei9pcmNsb2NrLmMsCgkgIGRsbHMvcXVhcnR6L2l1bmsuYywgZGxscy9xdWFydHovaXVuay5oLCBkbGxzL3F1YXJ0ei9tYWluLmMsCgkgIGRsbHMvcXVhcnR6L21lbWFsbG9jLmMsIGRsbHMvcXVhcnR6L21lbWFsbG9jLmgsCgkgIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjLCBkbGxzL3F1YXJ0ei9xdWFydHpfcHJpdmF0ZS5oLAoJICBkbGxzL3F1YXJ0ei9zeXNjbG9jay5jLCBkbGxzL3F1YXJ0ei9zeXNjbG9jay5oLCB3aW5lZGVmYXVsdC5yZWc6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicyBmb3IgcXVhcnR6IGRsbC4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJTm9ybWFsaXplIHRoZSBkaXNwbGF5IG5hbWUgdXNlZCB0byBidWlsZCB0aGUgY2FjaGVkIG1ldHJpYyBmaWxlbmFtZSBzbwoJdGhhdCAnOjAnLCAnOjAuMCcsIGFuZCAndW5peDowLjAnIGFsbCByZXNvbHZlIHRvIHRoZSBzYW1lIGZpbGUuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBpbmNsdWRlL29sZWF1dG8uaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgVmFyUGFyc2VOdW1Gcm9tU3RyLCBWYXJOdW1Gcm9tUGFyc2VOdW0uCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvYWZtMmMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2suYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2tPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0SXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvQ09QWVJJR0hUUywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyLmMsIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfT2JsaXF1ZS5jLCBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvdy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fSXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9TeW1ib2wuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZEl0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkNoYW5jZXJ5X01lZGl1bUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZEaW5nYmF0cy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBkbGxzL3dpbmVwcy90eXBlMWFmbS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJRWxpbWluYXRlIGdseXBoIGJvdW5kaW5nIGJveGVzICYgb3RoZXIgdW51c2VkIGZvbnQgbWV0cmljcy4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLAoJICBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbW9kdWxlLmMsCgkgIGRlYnVnZ2VyL3dpbmVkYmcuYywgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dlci5zZ21sOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0aGUgcGFyc2luZyBvZiBpZDEuaWQyIHdoaWNoIGNvdWxkIGJlIGVpdGhlciBhY2Nlc3MgdG8gZmllbGQgaWQyCglvZiBzdHJ1Y3QgaWQxLCBvciB0aGUgaWRlbnRpZmllciBpZDIgaW4gZGxsIGlkMS4KCUVuaGFuY2VkIHNvbWUgZXJyb3IgcmVwb3J0aW5nIGFzIHdlbGwgYXMgJ2luZm8gbG9jYWwnIGRpc3BsYXkgbGF5b3V0LgoJTWlub3IgY29zbWV0aWMgY2hhbmdlcy4KCgkqIGRsbHMvd2lubW0vbWNpLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGVycm9yIG1lc3NhZ2UgYW5kIHJldHVybiB2YWx1ZSBpbiBjYXNlIG9mIGJvZ3VzICdvcGVuIGFsbCcgbWNpCglzdHJpbmcgY29tbWFuZC4gTWlub3IgMzIvMTYgb3B0aW1pemF0aW9ucyBhbmQgY29zbWV0aWMgZml4ZXMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGF0ZVRpbWVTdHJpbmdUb1RtIGFuZCBEYXRlVG9UbSBtdXN0IHVzZSBkd0ZsYWdzIGluc3RlYWQgb2YgbGNpZC4KCgkqIG9sZS91dWlkLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSW5jbHVkZSBHVUlEcyBpbiBzdHJtaWYuaCBhbmQgdXVpZHMuaC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvYXVkZXZjb2QuaCwgaW5jbHVkZS9kc2hvdy5oLAoJICBpbmNsdWRlL2V2Y29kZS5oLCBpbmNsdWRlL3V1aWRzLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBkc2hvdyBoZWFkZXJzLgoKCSogaW5jbHVkZS9zdHJtaWYuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBJR3JhcGhCdWlsZGVyLCBJRmlsdGVyR3JhcGgyLCBJTWVkaWFTZWVraW5nIGludGVyZmFjZXMuCgoJKiB3aW4zMi9leGNlcHQuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTW9kaWZpZWQgdGhlIGRlYnVnZ2VyIGxhdW5jaGluZyBjb2RlIHNvIHRoYXQgb25seSBvbmUgaW5zdGFuY2Ugb2YgdGhlCglkZWJ1Z2dlciBpcyBjcmVhdGVkIHBlciBwcm9jZXNzLgoKMjAwMS0wOC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9tZXNzYWdlLmMsIGluY2x1ZGUvd2lucHJvYy5oLCB3aW5kb3dzL3dpbnByb2MuYzoKCUFkZGVkIG1hcHBpbmdzIGZvciBhIGZldyBtZXNzYWdlcy4KCUFkZGVkIHVuaWNvZGUgbWVzc2FnZXMgYml0IHNldCB0byBzaG9ydGN1dCBtZXNzYWdlIG1hcHBpbmcgd2hlbgoJcG9zc2libGUuCgoJKiB3aW5kb3dzL3NweS5jOiBGaXhlZCBzb21lIG1lc3NhZ2UgbmFtZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBJbXBsZW1lbnRlZCBSQl9NQVhJTUlaRUJBTkQgZm9yIHRoZSAiaWRlYWw9VFJVRSIgY2FzZS4KCS0gSW1wbGVtZW50ZWQgTk1fQ1VTVE9NRFJBVyBub3RpZmljYXRpb25zIGZvciB0aGUgSVRFTVBSRVBBSU5UIGFuZAoJICBJVEVNUE9TVFBBSU5UIG9ubHkuIChVc2VkIGJ5IElFNCAtIGdvIGZpZ3VyZS4pCgktIEludmFsaWRhdGUgd2luZG93IHJlY3RhbmdsZXMgYWZ0ZXIgY2VydGFpbiBSQl8gbWVzc2FnZXMgbGlrZSB0aGUKCSAgbmF0aXZlLiBGaXhlZCBzb21lIHBhaW50aW5nIHByb2JsZW1zLgoJLSBBZGRlZCBVcGRhdGVXaW5kb3cgY2FsbCBpbiBfTW92ZUNoaWxkV2luZG93cyB0byBmaXggb3RoZXIgcGFpbnRpbmcKCSAgcHJvYmxlbXMuCgktIFNldCB0aGUgQ2FwdGlvbiBGb250IGFzIHRoZSBkZWZhdWx0IGZvbnQgZm9yIGFsbCBiYW5kcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IFRCU1RZTEVfRkxBVCBhcyAidHJhbnNwYXJlbnQiIHRvb2xiYXIgYW5kIGJ1dHRvbnMuIChTa2lwCgkgIEZpbGxSZWN0IGFuZCBCRl9NSURETEUgb24gX0ZMQVQgdG9vbGJhcnMuKQoJLSBJc3N1ZSBGSVhNRXMgZm9yIHVuc3VwcG9ydGVkIHN0eWxlcy4KCS0gSWYgdGhlICJoaWRkZW4iIHN0YXRlIGhhcyBjaGFuZ2VkIHRoZW4gcmVjYWxjIHRoZSBidXR0b25zLgoJLSBTdXBwb3J0IFRCU1RZTEVfQ1VTVE9NRVJBU0UgKHVzZWQgYnkgSUU0KSBhbnMgaXNzdWUgc29tZSBvZiB0aGUKCSAgbmVjZXNzYXJ5IE5NX0NVU1RPTURSQVcgbm90aWZpZXMuCgktIFBhc3MgdGhlIFdNX0VSQVNFQktHTkQgdG8gcGFyZW50IGlmIHRoZSB0b29sYmFyIGlzICJ0cmFuc3BhcmVudCIuCgktIEludmFsaWRhdGUgdGhlIGFyZWEgMSBiaWdnZXIgdGhhbiB0aGUgYnV0dG9uIHJlY3Qgb24gYSBXTV9NT1VTRUxFQVZFCgkgIHNvIHRoYXQgdGhlIGVkZ2UgaXMgImVyYXNlZCIgYnkgdGhlIHBhcmVudC4KCS0gU3VwcG9ydCB0aGUgUEdOX0NBTENTSVpFIG5vdGlmeSBzaW5jZSBhIHRvb2xiYXIgY2FuIGJlIGEgY2hpbGQgb2YgdGhlCgkgIFBhZ2VyIGNvbnRyb2wuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkIHN1cHBvcnQgdG8gcmVzcG9uZCB0byB0aGUgUEdOX0NBTENTSVpFIHZlcnNpb24gb2YgdGhlIFdNX05PVElGWQoJbWVzc2FnZS4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIE1ha2UgYWxsIFdNX05PVElGWSBtZXNzYWdlcyBnbyB0byB0aGUgcGFyZW50LgoJLSBBbGxvdyBXTV9XSU5ET1dQT1NDSEFOR0lORyB3aGVuIHRoZSBjb250cm9sIGlzIHNpemUgMCB0byBzZXQgaW5pdGlhbAoJICBzaXplLgoJLSBDb21iaW5lIG11bHRpcGxlIFNldFdpbmRvd1BvcyBjYWxscyBpbiBzYW1lIHByb2Nlc3NpbmcgbGluZSBhbmQgbWFrZQoJICB0aGUgZmxhZ3MgbGlrZSBuYXRpdmUuCgktIFJlZG8gV01fTkNDQUxDU0laRSB0byBtYXRjaCBuYXRpdmUuCgktIFNpbmNlIFBhZ2VyIGlzIGEgInRyYW5zcGFyZW50IiBjb250cm9sIChleGNlcHQgZm9yIGl0cyBvd24gYnV0dG9ucyksCgkgIHRoZSBXTV9FUkFTRUJLR05EIG5lZWRzIHRvIGJlIHBhc3NlZCB0byB0aGUgcGFyZW50LiBBbHNvIGRvIHRoZSB3aW5kb3cKCSAgb2Zmc2V0IGxpa2UgdGhlIG5hdGl2ZSBjb250cm9sIGRvZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBpbmNsdWRlL29sZWF1dG8uaDoKCURhbmllbCBXYWxrZXIgPGRpd2Fsa2VyQGVhcnRobGluay5uZXQ+CgktIGltcGxlbWVudGVkIFN5c3RlbVRpbWV0b1ZhcmlhbnRUaW1lL1ZhcmlhbnRUaW1ldG9TeXN0ZW1UaW1lCgkgICAgVGhlcmUgd2FzIGFub3RoZXIgaW1wbGVtZW50YXRpb24gb2YgU3lzdGVtVGltZXRvVmFyaWFudFRpbWUKCSAgICBzdWJtaXR0ZWQgdGhhdCBkaWRuJ3Qgd29yayBmb3IgZGF0ZXMgcHJpb3IgdG8gMTkwMC4KCS0gaW1wbGVtZW50ZWQgVmFyRGF0ZUZyb21VRGF0ZS9WYXJVZGF0ZUZyb21EYXRlCgktIGltcGxlbWVudGVkIFZhcmlhbnRUaW1lVG9Eb3NEYXRlVGltZQoKCSogZGxscy9tc3ZjcnQvbWF0aC5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglGaXhlZCBfY29udHJvbDg3IHJldHVybiB2YWx1ZSwgdXNlIG9mIHdyb25nIGFzc2VtYmxlciBjb21tYW5kIHRvIGdldAoJZnAgY29udHJvbCB3b3JkIGFuZCBhIGJ1ZyB0aGF0IGludmVydGVkIF9JQ19BRkZJTkUgZmxhZy4KCU1hZGUgX2NvbnRyb2xmcCB3b3JrIGFzIHNwZWNpZmllZCBpbiBNU0ROLgoKMjAwMS0wOC0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmM6CglKb3NoIFRoaWVsZW4gPHRoaWVsZW5AbmV0cHJpbmNlLm5ldD4KCVdyb25nIGhhbmRsZSB3YXMgYmVpbmcgY2xvc2VkLgoKCSogZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2suYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2tPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0SXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvQ291cmllci5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX09ibGlxdWUuYywgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2EuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3cuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0l0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvU3ltYm9sLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGRJdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZDaGFuY2VyeV9NZWRpdW1JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmRGluZ2JhdHMuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVJlbW92ZSB1bnVzZWQgY2hhcmFjdGVyIHdpZHRoIGFycmF5LgoKCSogZGxscy93aW5lcHMvZm9udC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTWFrZSBFbnVtRm9udHMgYW5kIFNlbGVjdE9iamVjdCB1c2UgY29tbW9uIGZvbnQgc2NhbGluZy4KCjIwMDEtMDgtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvY29udHJvbHMuaCwgZGxscy94MTFkcnYvd2lucG9zLmMsIGluY2x1ZGUvbm9uY2xpZW50LmgsCgkgIGluY2x1ZGUvd2lucG9zLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsCgkgIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsCgkgIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL2xpc3Rib3guYywKCSAgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvc3RhdGljLmM6CglSZW1vdmVkIGEgbnVtYmVyIG9mIGRpcmVjdCBhY2Nlc3NlcyB0byB0aGUgV05EIHN0cnVjdHVyZSwgcmVwbGFjaW5nCgl0aGVtIGJ5IEFQSSBjYWxscy4KCgkqIGdyYXBoaWNzL2Rpc3BkaWIuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLAoJICBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9udGRsbC9zeW5jLmM6CglK9nJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJRml4ZWQgYSBmZXcgc2lnbmVkL3Vuc2lnbmVkIGFuZCAidW5zaWduZWQgPCAwIGFsd2F5cyB0cnVlIiB3YXJuaW5ncy4KCgkqIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdGV4dC5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmVtb3ZlZCBBTlNJIGVuY29kaW5nIHN0dWZmLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJRHVzYW4gTGFja28gPGRsYWNrb0Bjb2Rld2VhdmVycy5jb20+CglGaXggRXh0cmFjdEZyb21FWEVETEwgZm9yIG5JbmRleCAhPSAwLgoJUHJlZmVyIDhiaXQgaWNvbnMuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLAoJICBkZWJ1Z2dlci9zdGFicy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlcyBmb3IgU29sYXJpcyBYODYuCgoJKiBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIG1zdmNydC5fbWJzcGJyay4KCjIwMDEtMDgtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kZGUvLmN2c2lnbm9yZSwKCSAgZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oLAoJICBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYywgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9kZGUvc2VydmVyLmMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBpbmNsdWRlL2RkZW1sLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCS0gaW1wbGVtZW50ZWQgY29ycmVjdGx5IHRoZSBIU1ogYXMgbG9jYWwgYXRvbXMgYW5kIGFkZGVkIHRoZSBuZWVkZWQKCSAgY29udmVyc2lvbnMgdG8gZ2xvYmFsIGF0b21zCgktIGVuaGFuY2VkIGludGVybmFsIGhhbmRsZSA8PT4gcG9pbnRlciBjb252ZXJzaW9ucywgYXMgd2VsbCBhcwoJICB2YWxpZGl0eSBvZiBzdWNoIG9iamVjdHMgKGxpZmUgdGltZSwgZGVzdHJ1Y3Rpb24sIG11dHVhbCBhY2Nlc3MuLi4pCgktIGZpeGVkIGEgZmV3IEFOU0kvVW5pY29kZSBpc3N1ZXMsIHN0b3JlcyBtb3N0IG9mIHRoZSBkYXRhIGFzIFVuaWNvZGUKCS0gc3RhcnRlZCBoYXZpbmcgYm90aCBBbnNpL1VuaWNvZGUgRERFIHdpbmRvdyBwcm9jcyBmb3IgbWVzc2FnZSBBL1cKCSAgdHJhbnNmb3JtYXRpb24KCS0gZml4ZWQgYSBmZXcgc2VnbWVudGVkIHBvaW50ZXIgaXNzdWVzIChtYWlubHkgaW4gRGRlSW5pdGlhbGl6ZSAmCgkgIERkZUdldERhdGEpCgktIGFkZGVkIG1vc3Qgb2YgdGhlIENCRl8gZmxhZ3MgaGFuZGxpbmcKCS0gaW1wbGVtZW50ZWQgdGhlIGNvbnZlcnNhdGlvbiBhbm5vdW5jZW1lbnQgKFhUWVBfQ09OTkVDVF9DT05GSVJNKSBvbgoJICBzZXJ2ZXIgc2lkZQoJLSBlbmhhbmNlZCBEZGVRdWVyeUNvbmZpZyBhbmQgaW1wbGVtZW50ZWQgRGRlUmVjb25uZWN0CgktIGltcGxlbWVudGVkIGNvbnZlcnNhdGlvbiB0ZXJtaW5hdGlvbiAoaW5jbHVkaW5nIFhUWVBfVU5SRUdJU1RFUikKCS0gc2V2ZXJhbCBvdGhlcnMgY29kZSBjbGVhbiB1cAoJLSBhZGRlZCB0cmFuc2FjdGlvbiBzdXBwb3J0IG9uIHNlcnZlciBzaWRlIHRvbwoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBtdWx0aWJ5dGUgc3RyaW5nIHJldmVyc2UuCgoJKiBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL3BzLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglSZW1vdmUgcHJldmlvdXNseSBkaXNhYmxlZCBjb2RlLgoKCSogZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZXBpY3R1cmUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWUgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL2NfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaS9tYWtlX2ZpbHRlciwgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfZWRpdG9yLnBtLAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfc3RhdGVtZW50cy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZXBzLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEJlZ3VuIGltcGxlbWVudGF0aW9uIG9mIGEgQyBzdGF0ZW1lbnRzIHBhcnNlci4KCS0gTW9yZSByZW9yZ2FuaXphdGlvbnMgYW5kIGZpeGVzLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJRG9uJ3QgY3JlYXRlIHRoZSBXSU5FUFJFRklYIGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGV4aXN0LgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYywKCSAgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3dpbmJhc2UuaCwKCSAgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci9wdGhyZWFkLmM6CglBZGRlZCBJbnRlcmxvY2tlZCpQb2ludGVyIGZ1bmN0aW9ucy4KCUZpeGVkIEludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlIHByb3RvdHlwZS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21taW8uYywKCSAgZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLAoJICBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy92ZXJzaW9uLmMsIG9sZS9vbGUybmxzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTcGVsbGluZyBmaXhlcy4KCgkqIHRvb2xzL3dpbmVjaGVjazogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU21hbGwgd2luZWNoZWNrIHVwZGF0ZSAoREdBIGNoZWNrIGlzIGJvZ3VzKS4KCgkqIGluY2x1ZGUvd2lubnQuaDogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgbW9yZSBTVEFUVVNfIGNvZGVzLgoKMjAwMS0wOC0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbm9uY2xpZW50LmgsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGVmZGxnLmMsCgkgIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvdXNlci5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJUmVwbGFjZSBTZW5kTWVzc2FnZTE2IGJ5IFNlbmRNZXNzYWdlVyB3aGVyZSBwb3NzaWJsZS4KCgkqIGRsbHMvdXNlci90aHVuay5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLCB3aW5kb3dzL3BhaW50aW5nLmM6CglGaXhlZCBEcmF3U3RhdGUxNiBjYWxsYmFjayBzdXBwb3J0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJRml4ZWQgbG9vcCB0ZXJtaW5hdGlvbiBjaGVjayBpbiBQYXRoSXNFeGVXLgoKCSogZ3JhcGhpY3MvZXNjYXBlLmM6CglGaXhlZCBpbl9kYXRhL291dF9kYXRhIG1peHVwIGluIEVzY2FwZTE2ICh0aGFua3MgdG8gTGFkaXNsYXYgU2xhZGVjZWspLgoKCSogZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLAoJICBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBkbGxzL3dpbmVwcy90eXBlMWFmbS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmV3cml0ZSBhbmQgc2VwYXJhdGUgQUZNIHBhcnNpbmcgY29kZSAobm8gbW9yZSBbYWZtZmlsZXNdKS4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2UgbGliR0xVIGNoZWNrIHRvIGxvb2sgZm9yIGdsdUxvb2tBdCBpbnN0ZWFkIG9mIGdsQmVnaW4uCgoyMDAxLTA4LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOb3cgdHJpZXMgdG8gcHJpbnQgdGhlIHN5bWJvbCBuYW1lIG9mIGEgY3JzdCB3aGVuIGl0IHRpbWVzIG91dC4KCgkqIHNlcnZlci90aHJlYWQuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRG9uJ3QgY3Jhc2ggaWYgc2VuZF90aHJlYWRfd2FrZXVwKCkgZmFpbHMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIHNvbWUgcmVnaXN0cnkgZW50cmllcyByZWxhdGVkIHRvIENPTSBpbnRlcmZhY2UgbWFyc2hhbGluZy4KCgkqIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywKCSAgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvbWVzc2FnZS5jLCBkbGxzL3VzZXIvbXNnMTYuYywKCSAgZGxscy91c2VyL3VzZXIuc3BlYywgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvcXVldWUuaCwKCSAgaW5jbHVkZS93aW5lL3NlcnZlcl9wcm90b2NvbC5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsCgkgIHNlcnZlci9wcm90b2NvbC5kZWYsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCVJld3JvdGUgbW9zdCBvZiBTZW5kTWVzc2FnZS9QZWVrTWVzc2FnZS4KCUltcGxlbWVudGVkIGludGVyLXByb2Nlc3MgbWVzc2FnaW5nLgoJTW92ZWQgbW9zdCBtZXNzYWdlIHJvdXRpbmVzIHRvIGRsbHMvdXNlciwgYW5kIHNwbGl0IG9mZiAxNi1iaXQKCXJvdXRpbmVzIHRvIGEgc2VwYXJhdGUgZmlsZS4KCjIwMDEtMDgtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwKCSAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sCgkgIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBPbGVMb2FkUGljdHVyZS4KCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgSlBFRywgQml0bWFwIGFuZCBJY29ucyBmcm9tIHBlcnNpc3RhbnQKCXN0cmVhbXMuCglJbXBsZW1lbnRlZCBKUEVHIHN1cHBvcnQgdXNpbmcgbGlianBlZywgYWRkZWQgbmVjZXNzYXJ5IGNvbmZpZ3VyZS5pbgoJb3B0aW9ucy4KCUFkZGVkIElDb25uZWN0aW9uUG9pbnQgc3R5bGUgbm90aWZpY2F0aW9ucyB0byB0aGUgSVBpY3R1cmUgaWZhY2UuCglJbXBsZW1lbnRlZCBzZXZlcmFsIG9mIHRoZSBzdHVicyBhbHJlYWR5IHRoZXJlLCBhZGRlZCBzb21lIG1vcmUuCgoJKiBkbGxzL3gxMWRydi94MTFkZHJhdy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJWEdyYWJQb2ludGVyIGlzIG5vdyBjYWxsZWQgZnJvbSB0aGUgY29ycmVjdCB0aHJlYWQgY29udGV4dCBhbmQgaXQgaXMKCW1hZGUgc3VyZSB0aGF0IHdlIGhhdmUga2V5Ym9hcmQgZm9jdXMgd2hlbiB1c2luZyBEaXJlY3RYLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsCgkgIGNvbnRyb2xzL21lbnUuYzoKCVJlcGxhY2VkIE1TR19JbnRlcm5hbEdldE1lc3NhZ2UgY2FsbHMgYnkgZXF1aXZhbGVudCBleHBvcnRlZCBBUElzLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglGaXhlZCByZXR1cm4gdmFsdWUgZm9yIFdNX05PVElGWSBhbmQgV01fQUNUSVZBVEVBUFAgbWFwcGluZ3MuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogQWRkZWQgU01UT18qIGRlZmluZXMuCgoJKiBkZWJ1Z2dlci93aW5lZGJnLmMsIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgZGVidWdnZXIvZGJnLnksCgkgIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvc3RhY2suYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRXh0ZW5kZWQgYnQgY29tbWFuZCB0byBkaXNwbGF5IGJhY2t0cmFjZSBvZiBhbm90aGVyIHRocmVhZC4KCUVuaGFuY2VkIHByb2Nlc3MgJiB0aHJlYWQgZGlzcGxheSB3aXRoIHByb2Nlc3MgbmFtZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCB0YWIgY29udHJvbCBpbmRleCBoYW5kbGluZy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmg6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJU2V0Q29tbUNvbmZpZyBoYXMgMyBhcmd1bWVudHMsIG5vdCAyLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUmVjb25jaWxlZCB0aGUgd2luZSBtYW4gcGFnZXMgdG8gdGhlIGFic2VuY2Ugb2Ygd2luZS5jb25mLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaW1hZ2UgbmFtZSB2YWx1ZSBzZW50IHRvIHNlcnZlciB1cG9uIHByb2Nlc3MgY3JlYXRpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRmlyc3QgKHBhcnRpYWwpIGltcGxlbWVudGF0aW9uIG9mIElUeXBlSW5mbzo6SW52b2tlLgoJRml4ZWQgYnVmZmVyIGxlbiBwYXNzaW5nIHRvIHNucHJpbnRmKCkuCgoyMDAxLTA4LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9wYWludGluZy5jOgoJTWFyY28gQml6emFycmkgPG0uYml6emFycmlAaWN1YmUuaXQ+CglHZXRDb250cm9sQnJ1c2gxNjogYXZvaWQgcG90ZW50aWFsbHkgcmVsZWFzaW5nIHRoZSBzYW1lIHBvaW50ZXIKCXR3aWNlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglNYWx0ZSBTdGFyb3N0aWsgPG1hbHRlQGtkZS5vcmc+CglJbXBsZW1lbnRlZCBSZWdpc3RlclR5cGVMaWIuCgoJKiBsaWJyYXJ5L2xkdC5jOgoJUGllcnJlIEJleXNzYWMgPHBiQGZhc3Rlcml4LmZyZWVuaXgub3JnPgoJRm9yY2UgRFBMIDMgd2hlbiBzZXR0aW5nIGVudHJpZXMgb24gQlNELgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJT25seSBhZGQgIi4iIHNlcGFyYXRvciBpbiBjYXNlIGEgZGVmYXVsdCBmaWxlIG5hbWUgZXh0ZW5zaW9uIGRvZXMKCWV4aXN0LgoKCSogb2JqZWN0cy9kaWIuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRElCX0dldEJpdG1hcEluZm8gZGlkbid0IHJlY29nbml6ZSBCSVRNQVBWNC81SEVBREVSLgoKCSogZGVidWdnZXIvbXNjLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciAtMSBhcyB0aGUgdW5kZWZpbmVkIHZhbHVlIGZvciBoYW5kbGVzIGJlZm9yZSBDbG9zZUhhbmRsZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIGRlYnVnZ2luZyBkdW1wcyBvZiBiYXIgYW5kIGJ1dHRvbnMsIGFuZCB0cmFjZSBlbnRyeSBmb3IgZWFjaAoJICBtZXNzYWdlLgoJLSBPcmdhbml6ZSBXTV9OT1RJRlkgcHJvY2Vzc2luZyBpbiBwcmVwYXJhdGlvbiBmb3IgVW5pY29kZQoJLSBJbXBsZW1lbnQgVEJOX0dFVERJU1BJTkZPIGFuZCBJX0lNQUdFQ0FMTEJBQ0sgZm9yIGJpdG1hcHMuCgktIEltcGxlbWVudCBkcmF3aW5nIG9mIHNlcGFyYXRvciBmb3IgVEJTVFlMRV9EUk9QRE9XTiBzaW1pbGFyIHRvIG5hdGl2ZS4KCS0gQ2hhbmdlIGRyYXdpbmcgb2YgYnV0dG9ucyB0byBzdXBwb3J0IFRCU1RZTEVfTElTVCBhbmQgbWFrZSBtYXRjaAoJICBuYXRpdmUgcGl4ZWwgbGF5b3V0ICh3aXRoIGFuZCB3aXRob3V0IGJpdG1hcHMpLgoJLSBDaGFuZ2UgVE9PTEJBUl9NZWFzdXJlU3RyaW5nIHRvIG1lYXN1cmUgd2l0aCBEcmF3VGV4dCBsaWtlIG5hdGl2ZS4KCSAgVGhpcyBlbGltaW5hdGVzIGV4dHJhIHNwYWNlIGR1ZSB0byBwcmVmaXggY2hhciAoIiYiKS4KCS0gU3BlZWQgdXAgVE9PTEJBUl9DYWxjU3RyaW5ncyBieSBkb2luZyB0aGUgSERDIGFuZCBGT05UIHNlbGVjdGlvbiBvbmNlLgoJLSBDaGFuZ2UgY2FsYyBvZiBidXR0b25zIHRvIG1hdGNoIGRyYXdpbmcgZm9yIFRCU1RZTEVfTElTVCBhbmQKCSAgc2VwYXJhdG9ycy4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBBZGQgc3VwcG9ydCB0byBkdW1wIG1lbW9yeSBhdCBsUGFyYW0gbG9jYXRpb24gb24gY29tbW9uIGNvbnRyb2wKCSAgbWVzc2FnZXMuCgktIEZpeGVkIHJlbWFpbmluZyBUb29sYmFyIGFuZCBQYWdlciBub3RpZnkgZHVtcCBhbW91bnRzLgoJLSBTZXBhcmF0ZSBtZW1vcnkgZHVtcCBjb2RlIGZvciBlYXN5IHVzZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgVEJORl8qIGZsYWdzIGZvciB0aGUgTk1UQkRJU1BJTkZPIHN0cnVjdHVyZS4KCjIwMDEtMDctMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0UsIENoYW5nZUxvZzoKCVJlbGVhc2UgMjAwMTA3MzEuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDEtMDctMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2dkaS9kcml2ZXIuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJSW5jbHVkZSBkZXZpY2UgbmFtZSBpbiBjYWxsIHRvIENyZWF0ZUlDLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglGaXhlZCBkZXNrdG9wIHdpbmRvdyBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb24uCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgd2luZG93cy9kY2UuYzoKCUZpeGVkIGEgZmV3IHByb2JsZW1zIHdpdGggRENYXyogZmxhZ3MgaGFuZGxpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU5vZyA8bm9nQHNkZi5sb25lc3Rhci5vcmc+CglEb24ndCBlbmFibGUgdGhlICdob3QnIHN0YXRlIG9mIGEgdG9vbGJhciBidXR0b24gd2hlbiBpdCdzIG5vdAoJZW5hYmxlZC4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2wsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIFNHSVMgbXVsdGl0ZXh0dXJlIGV4dGVuc2lvbi4KCS0gbWlzYy4gb3RoZXIgZml4ZXMKCgkqIHdpbmRvd3MvZGVmd25kLmM6CglFcmFzZSBvbmx5IGNsaWVudCBhcmVhIG9uIFdNX0VSQVNFQktHTkQuCgoyMDAxLTA3LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luYXBpLy5jdnNpZ25vcmUsIHRvb2xzL3dpbmFwaS9NYWtlZmlsZS5pbiwKCSAgdG9vbHMvd2luYXBpL3RyYW1wb2xpbmUsIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2ssIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIGl0IHBvc3NpYmxlIHRvIGluc3RhbGwgdGhlIHdpbmFwaSB0b29scy4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJRm9yY2UgU1RSSUNUIGNoZWNraW5nIG9mIGNhbGxiYWNrIGZ1bmN0aW9uIHR5cGVzIHdoZW4gY29tcGlsaW5nIFdpbmUuCgoJKiB3aW5kb3dzL3Byb3BlcnR5LmM6CglJbXBsZW1lbnQgRW51bVByb3BzIG9uIHRvcCBvZiBFbnVtUHJvcHNFeCB0byBhdm9pZCBmdW5jdGlvbiBwb2ludGVyCgl0eXBlIG1pc21hdGNoZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIGluY2x1ZGUvdGFzay5oOgoJRml4ZWQgSFRBU0svSFRBU0sxNiBoYW5kbGUgbWlzbWF0Y2guCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS93aW5kZWYuaDoKCU1vdmVkIHNvbWUgaGFuZGxlIGRlY2xhcmF0aW9ucyB0byB0aGUgcmlnaHQgaGVhZGVycy4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpL29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZXBzLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBIGZldyBidWcgZml4ZXMuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IGhhbmRsaW5nIG9mIHRoZSAnLS13aXRoLXdpbmUteHh4JyBvcHRpb25zOiBvbmx5IGxvb2sgaW4gdGhlCglzcGVjaWZpZWQgcGF0aC4KCUxpYnJhcmllcyBhbmQgd2luZSBkbGxzIGFyZSBzZXBhcmF0ZSBub3Rpb25zIHRoYXQgbmVlZCBzZXBhcmF0ZSBwYXRocwoJLT4gYWRkIFdJTkVfRExMX3tST09ULFBBVEh9LCAtLXdpdGgtd2luZS1kbGxzIGFuZCBhICctUCcgb3B0aW9uLgoJU21hbGwgZml4ZXMgdG8gdGhlIHNlYXJjaCBvcmRlci4KCjIwMDEtMDctMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lc2NhcGUuYywKCSAgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCBkbGxzL2dkaS9kcml2ZXIuYywgZGxscy9nZGkvZ2RpLnNwZWMsCgkgIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvd2luZXBzL2VzY2FwZS5jOgoJUmV3cm90ZSBFc2NhcGUgdG8gYXZvaWQgY2FsbGluZyBkb3duIHRvIEVzY2FwZTE2LgoJUmVwbGFjZWQgRXNjYXBlIGJ5IEV4dEVzY2FwZSBpbiB0aGUgREMgZnVuY3Rpb24gdGFibGUuCgoJKiBNYWtlLnJ1bGVzLmluOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGEgZmlsdGVyIHJ1bGUgZm9yIGZpbHRlcmluZyBtYWtlIG91dHB1dCB3aXRoCgl0b29scy93aW5hcGkvbWFrZV9maWx0ZXIuCgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL29sZTIuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS9tYWtlX2ZpbHRlciwKCSAgdG9vbHMvd2luYXBpL21ha2VfZmlsdGVyX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS9tYWtlX3BhcnNlci5wbSwKCSAgdG9vbHMvd2luYXBpL29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS9zZXR1cC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQSBmZXcgYnVnIGZpeGVzLgoKCSogaW5jbHVkZS9kcGxheS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDbGVhbnVwL3JlbW92YWwgb2YgdW5uZXNzYXJ5IHRoaW5ncyB0aGF0IHdvdWxkIGhhdmUgbWFkZSB3aW5hcGlfKgoJcGFyc2luZyBtb3JlIGNvbXBsaWNhdGVkLgoKMjAwMS0wNy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9wYWxldHRlLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvdGV4dC5jLAoJICBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9pbml0LmMsCgkgIGRsbHMvd2luZXBzL3BzLmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLAoJICBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZGxscy9nZGkvZHJpdmVyLmMsCgkgIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jOgoJQWRkZWQgR2V0RGV2aWNlQ2FwcyB0byB0aGUgREMgZHJpdmVyIGludGVyZmFjZS4gUmVtb3ZlZCBkZXZDYXBzCglwb2ludGVyIGluIHRoZSBnZW5lcmljIERDIHN0cnVjdHVyZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oOgoJUmVtb3ZlZCB1bnVzZWQgRENfRlVOQ1MgcG9pbnRlcnMuCgoyMDAxLTA3LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy92ZXJzaW9uLmM6CglCb2IgR29vZHdpbiA8Z29vZGllMUBwYWNiZWxsLm5ldD4KCUZpeCB0aGUgMTZiaXQgd2luOTUgdmVyc2lvbi4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglQdXQgdGhlIHBlciBwcm9qZWN0IHBhdGhzIGJlZm9yZSB0aGUgd2luZSBwYXRocy4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBsaWJyYXJpZXMgZnJvbSB0aGUgd2luZSBsaW5rIHRlc3QuCglNb3ZlIERMTF9MSU5LIGZyb20gY29uZmlndXJlLmluIHRvIHRoZSBNYWtlLnJ1bGVzIGZpbGUuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURvbid0IGNyYXNoIGlmIERldmljZUNhcGFiaWxpdGllcyhEQ19QQVBFUk5BTUVTKSBmYWlscy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywKCSAgZGxscy9vcGVuZ2wzMi9NYWtlZmlsZS5pbiwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjOgoJQWRkZWQgbWlzc2luZyBudGRsbCBpbXBvcnRzLgoKCSogZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9kcml2ZXIuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9nZGkuaCwKCSAgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kYy5jLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwKCSAgZGxscy9nZGkvZHJpdmVyLmMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLAoJICBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYzoKCUJ1aWxkIHRoZSBEQyBmdW5jdGlvbiB0YWJsZSBieSB1c2luZyBHZXRQcm9jQWRkcmVzcyBvbiB0aGUgZ3JhcGhpY3MKCWRyaXZlciBtb2R1bGUuIE1vdmVkIGRyaXZlciBzdXBwb3J0IHRvIGRsbHMvZ2RpLgoKMjAwMS0wNy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcuc3BlYzoKCVJlbW92ZWQgaW1wb3J0IG9mIHgxMWRydiBmcm9tIGRkcmF3LgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgbG9hZGVyL2Rvcy9kb3Ntb2QuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gZml4ZXMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNsZWFudXAvcmVtb3ZhbCBvZiB1bm5lc3NhcnkgdGhpbmdzIHRoYXQgd291bGQgaGF2ZSBtYWRlIHdpbmFwaV8qCglwYXJzaW5nIG1vcmUgY29tcGxpY2F0ZWQuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNb3ZlZCBjb21tIHJlbGF0ZWQgcHJvdG95cGVzIHRvIHRoZSBjb3JyZWN0IC5oIGZpbGUuCgktIENsZWFuZWQgdXAgdGhlIGluY2x1ZGUgc2VjdGlvbi4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVJlbW92ZWQgaW5jbHVzaW9uIG9mIHdpbm50LmggYmVjYXVzZSB0aGUgcG9ydGluZyBsYXllciBzaG91bGRuJ3QKCWluY2x1ZGUgV2luZG93cyBzcGVjaWZpYyBzdHVmZi4KCgkqIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3RydWV0eXBlLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglSZXdyaXRlIFRydWVUeXBlIGZvbnQgbWV0cmljIHBhcnNpbmcgY29kZS4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwKCSAgdG9vbHMvd2luYXBpL21ha2VfZmlsdGVyLCB0b29scy93aW5hcGkvbWFrZV9maWx0ZXJfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL21ha2VfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL291dHB1dC5wbSwgdG9vbHMvd2luYXBpL3R5cGUucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfY2hlY2tfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3Rfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBIGZldyBtb3JlIGJ1ZyBmaXhlcwoJLSBSZW9yZ2FuaXphdGlvbiBjb250aW51ZXMKCS0gTmV3IHRvb2wgKG1ha2VfZmlsdGVyKSBmb3IgZmlsdGVyaW5nIG1ha2Ugb3V0cHV0IGFkZGVkCgoJKiBkbGxzL250ZGxsL21pc2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggYSB0eXBvLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglEb24ndCBpbmxpbmUgcGVyZmVjdF9ncmFwaGljcygpLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2hvb2suaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGlmMTYzMi90aHVuay5jOgoJUmVtb3ZlZCBhIGZldyB1bm5lY2Vzc2FyeSBDYWxsb3V0cy4KCgkqIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCB3aW5kb3dzL2NsaXBib2FyZC5jLAoJICB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL2lucHV0LmMsCgkgIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdGltZXIuYywKCSAgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L2Rlc2t0b3AuYzoKCUF2b2lkIHVzaW5nIEdldEZhc3RRdWV1ZTE2IGZyb20gVVNFUi4KCgkqIGRsbHMvdXNlci90ZXh0LmMsIGluY2x1ZGUvd2ludXNlci5oOgoJVHJhdmlzIE1pY2hpZWxzZW4gPHRqbWljaGllbHNlbkB5YWhvby5jb20+CglGdWxseSBpbXBsZW1lbnQgRHJhd1RleHRFeCogZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQmUgYSBiaXQgbW9yZSBncmFjZWZ1bCBvbiBOVUxMIHByb3BlcnR5IHNoZWV0IHRpdGxlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gT24gVEJfU0VUSU1BR0VMSVNUIHJldHJpZXZlIG5ldyB2YWx1ZXMgb2YgdGhlIGJpdG1hcCB3aWR0aCBhbmQKCSAgaGVpZ2h0IChmaXhlcyBvdmVybGFwIG9mIGltYWdlIGFuZCB0ZXh0IGluIElFNCkuCgktIEhhbmRsZSByZXR1cm4gY29kZXMgZnJvbSBUQk5fRFJPUERPV04gKGFsbG93cyBhICJkcm9wZG93biIgdG8gYmUKCSAgdHJlYXRlZCBsaWtlIGEgcmVndWxhciBidXR0b24pLgoJLSBJbXBsZW1lbnQgVEJOX0JFR0lORFJBRyBhbmQgVEJOX0VORERSQUcgaW4gV01fTEJVVFRPTntET1dOfFVQfSAobm90CgkgIG5lY2Vzc2FyeSBidXQgZG9uZSBieSBuYXRpdmUpLgoJLSBJbXBsZW1lbnQgTk1fUkVMRUFTRURDQVBUVVJFIGFuZCBOTV9DTElDSy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgdmFsdWVzIHRvIGRlc2NyaWJlIHJldHVybiB2YWx1ZXMgZnJvbSBXTV9OT1RJRlkgb2YgVEJOX0RST1BET1dOLgoKCSogTWFrZS5ydWxlcy5pbjoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglDb3JyZWN0IG1hbiBwYWdlIHNwZWMgZGlyZWN0b3J5LgoKMjAwMS0wNy0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGxvYWRlci9uZS9tb2R1bGUuYywKCSAgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsCgkgIG1zZG9zL2Rvc2FzcGkuYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9yZWdpb24uYywKCSAgb2JqZWN0cy90ZXh0LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2RldmljZS5jLCB3aW5kb3dzL2RyaXZlci5jLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9wYWludGluZy5jLAoJICBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLAoJICBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLAoJICBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsCgkgIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaWYxNjMyL2J1aWx0aW4uYywgaWYxNjMyL3JlbGF5LmMsCgkgIGlmMTYzMi90aHVuay5jLCBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93c29jazMyL3Byb3RvY29sLmMsCgkgIGdyYXBoaWNzL3BhaW50aW5nLmMsIGRsbHMvdXNlci9uZXR3b3JrLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmluZXQvZnRwLmMsCgkgIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL250ZGxsL3J0bC5jLAoJICBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL29sZTMyL2JpbmRjdHguYywKCSAgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLAoJICBkbGxzL29sZWF1dDMyL2Rpc3BhdGNoLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsCgkgIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3NldHVwYXBpL2Rldmluc3QuYywgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLAoJICBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsCgkgIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywKCSAgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvc3RhdGljLmMsCgkgIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywKCSAgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywKCSAgZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsCgkgIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsCgkgIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywKCSAgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL21wci9tcHJfbWFpbi5jLCBjb250cm9scy9jb21iby5jOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbmNsdXNpb24gb2YgaGVhcC5oLgoKMjAwMS0wNy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgaW5jbHVkZS9lbmhtZXRhZmlsZS5oLAoJICBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglSZW1vdmVkIGVuaG1ldGFmaWxlLmguIFNpbXBsaWZpZWQgRU5ITUVUQUZJTEVPQkogc3RydWN0dXJlIGEgYml0LgoKCSogaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2xvYWRvcmRlci5jLAoJICBsb2FkZXIvbW9kdWxlLmMsIG1zZG9zL2ludDIxLmMsIHJlbGF5MzIvc25vb3AuYywKCSAgd2luZG93cy9jbGlwYm9hcmQuYywgZGxscy91c2VyL2xzdHIuYywgZGxscy93aW5lcHMvYWZtLmMsCgkgIGRsbHMvd2luZXBzL2VzY2FwZS5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BwZC5jLAoJICBkbGxzL3dpbmVwcy90cnVldHlwZS5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsCgkgIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL2RyaXZlci5jLAoJICBncmFwaGljcy9lbnYuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpZjE2MzIvc25vb3AuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywKCSAgZGxscy9nZGkvcHJpbnRkcnYuYywgZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jOgoJUmVtb3ZlZCBIRUFQX3N0cmR1cEEuCgoJKiBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Sb21hbi5jLCBkbGxzL3dpbmVwcy9kYXRhL1N5bWJvbC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGQuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfSXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmQ2hhbmNlcnlfTWVkaXVtSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkRpbmdiYXRzLmMsIGRsbHMvd2luZXBzL2RhdGEvYWdsLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvYWdsLmgsIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9Cb29rT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0F2YW50R2FyZGVfRGVtaU9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWkuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0RlbWlJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQm9va21hbl9MaWdodEl0YWxpYy5jLCBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXIuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllcl9PYmxpcXVlLmMsIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZC5jLCBkbGxzL3dpbmVwcy9ta2FnbC5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTWFrZSBidWlsdC1pbiBmb250IGRhdGEgcmVhZC1vbmx5LgoKCSogb2JqZWN0cy9kY3ZhbHVlcy5jOgoJR290IHJpZCBvZiBhbGwgdGhlIHVnbHkgbWFjcm9zLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvZ2x5cGhsaXN0LmMsCgkgIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU1vZGlmeSBpbml0IGNvZGUgdG8gaGFuZGxlIGNvbnN0IGRhdGEgdHlwZXMuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2NvbW0xNi5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJTW92ZSAxNi1iaXQgQ09NTSBjb2RlIHRvIFVTRVIgZGxsLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2VkaXQuYywKCSAgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvc2Nyb2xsLmMsCgkgIGNvbnRyb2xzL3N0YXRpYy5jOgoJSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJV05EUFJPQyBoYW5kbGVycyBub3cgY2hlY2sgd2hldGhlciBIV05EIGFyZ3VtZW50IGlzIHZhbGlkLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLAoJICBkbGxzL29sZWF1dDMyL29sZWZvbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT0xFQVVUMzIuRGxsR2V0Q2xhc3NPYmplY3QgYW5kIHN1cHBvcnQgZm9yIHRoZSBPbGUgU3RkRm9udCBhZGRlZCAoanVzdAoJZ2l2aW5nIGJhY2sgYSA4IHBvaW50IFN5c3RlbSBmb250IGZvciBub3cpLgoKCSogb2JqZWN0cy9kY3ZhbHVlcy5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywKCSAgc2NoZWR1bGVyL3RocmVhZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKMjAwMS0wNy0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsCgkgIGRsbHMvb2xlMzIvaWZzLmgsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuaCwgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsCgkgIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsIGRsbHMvb2xlc3ZyL29sZXN2cl9tYWluLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGluY2x1ZGUvb2xlLmgsCgkgIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL21zdmNydC9jcHAuYywKCSAgZGxscy9tc3ZjcnQvZXhpdC5jLCBkbGxzL21zdmNydC9tYmNzLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1hZGUgc3VyZSB0aGF0IHRoZSBmaWxlcyB0aGF0IGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMKCSAgb2YgdGhlIGltcGxlbWVudGF0ZWQgZnVuY3Rpb25zIGFyZSBpbmNsdWRlZC4KCS0gQ29ycmVjdGVkIG1pc21hdGNoaW5nIHByb3RvdHlwZXMuCgktIENsZWFuZWQgdXAgdGhlIGluY2x1ZGUgc2VjdGlvbi4KCgkqIGRsbHMvd2luZXBzL2ZvbnQuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVVzZSBXaW5kb3dzIG1ldHJpY3MgZm9yIGZvbnQgc2NhbGluZy4KCgkqIHRvb2xzL3dpbmFwaS9jb25maWcucG0sIHRvb2xzL3dpbmFwaS9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGkvb3V0cHV0LnBtLCB0b29scy93aW5hcGkvd2luYXBpX2NoZWNrX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0X29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXBfb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2dsb2JhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJWWV0IGFub3RoZXIgbWFqb3IgcmVvcmdhbml6YXRpb24gYW5kIGEgZmV3IG5ldyBmZWF0dXJlcy4KCgkqIGZpbGVzL2ZpbGUuYywgc2VydmVyL2ZpbGUuYzoKCUJlcm5oYXJkIFJvc2Vua3JhZW56ZXIgPGJlcm9AcmVkaGF0LmRlPgoJU2V0IGV4ZWN1dGFibGUgcGVybWlzc2lvbnMgd2hlbiBjcmVhdGluZyAuZXhlLy5jb20gZmlsZXMuCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBhc3MgaGFuZGxlIHRvIEdldEZpbGVUeXBlLCBub3QgTVNWQ1JUIGZkLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVJld3JpdGUgQnVpbGRDb21tRENCMTYgdG8gZGVwZW5kIG9uIEJ1aWxkQ29tbURDQiwgbm90IHZpY2UtdmVyc2EuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvZGF0YS9hZ2wuYywgZGxscy93aW5lcHMvZ2x5cGhsaXN0LmMsIGRsbHMvd2luZXBzL21rYWdsLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglPbmx5IGluZGV4IGdseXBoIG5hbWVzIHdoZW4gbmVjZXNzYXJ5LgoKCSogaW5jbHVkZS9sb2Fkb3JkZXIuaCwgaW5jbHVkZS9tZXRhZmlsZS5oLCBpbmNsdWRlL21vZHVsZS5oLAoJICBpbmNsdWRlL29wdGlvbnMuaCwgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbWFpbi5jLAoJICBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzYy9vcHRpb25zLmMsCgkgIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIHdpbmRvd3MvY2xhc3MuYywKCSAgd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywKCSAgZGxscy93aW5lcHMvYml0bWFwLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYywKCSAgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYywKCSAgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLAoJICBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL3NldHVwYXBpL3ZpcnRjb3B5LmM6CglSZW1vdmVkIHNvbWUgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCgoyMDAxLTA3LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2RhdGEvYWdsLmMsIGRsbHMvd2luZXBzL2RhdGEvYWdsLmgsCgkgIGRsbHMvd2luZXBzL21rYWdsLmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglFbGltaW5hdGUgVU5JQ09ERVZFQ1RPUiBkYXRhIHR5cGUuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvbWVzYV9wcml2YXRlLmgsCgkgIGluY2x1ZGUvd2luZV9nbC5oOgoJQ29tbWVudGVkIG91dCByZWZlcmVuY2VzIHRvIHgxMWRydiBpbnRlcm5hbHMgZnJvbSBNRVNBIGNvZGUuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvYnJ1c2guYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLAoJICBncmFwaGljcy93aW4xNmRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3Blbi5jLAoJICBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy93aW5lcHMvYnJ1c2guYywKCSAgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9vYmplY3RzLmMsIGRsbHMvd2luZXBzL3Blbi5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJUmVtb3ZlZCBzb21lIGRpcmVjdCBhY2Nlc3NlcyB0byBHREkgaW50ZXJuYWwgcGVuL2JydXNoL2ZvbnQKCXN0cnVjdHVyZXMuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSWYgdGhlIGNsYXNzIG9mIHRoZSB3aW5kb3cgaXMgYSBrbm93biBzdGFuZGFyZCwgdGhlbiBmb3JtYXQgdGhlIG5hbWUKCSAgb2YgdGhlIFdNX1VTRVIrbm5uIG1lc3NhZ2VzIGlmIHBvc3NpYmxlLgoJLSBGaXggY2FzZSB3aGVyZSB0aGUgY2xhc3NuYW1lIHJldHVybmVkIHdhcyB0cnVuY2F0ZWQgYW5kIG5vdCBwcmludGVkCgkgIGF0IGFsbC4KCS0gSXNzdWUgZXJyb3JzIGlmIGVpdGhlciB0aGUgTm90aWZ5IG9yIGNvbW1vbiBjb250cm9sIG1lc3Nhc2dlIGxpc3RzCgkgIGFyZSBvdXQgb2Ygb3JkZXIuCgktIFByZXBhcmUgdG8gZHVtcCBvdXQgY29udHJvbCBibG9jayBzdHJ1Y3R1cmVzIHBvaW50ZWQgdG8gYnkgbHBhcmFtCgkgIGZvciBtZXNzYWdlcy4KCgkqIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwKCSAgZGxscy93aW5lcHMvaW5pdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLAoJICBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvYml0bWFwLmgsCgkgIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGliLmMsCgkgIGRsbHMvZ2RpL3dpbmcuYzoKCU1vdmVkIHRoZSAxNi1iaXQgcG9pbnRlciB0byB0aGUgRElCIGJpdHMgb3V0IG9mIHRoZSBkcml2ZXItc3BlY2lmaWMKCXN0cnVjdHVyZSBhbmQgaW50byB0aGUgbWFpbiBiaXRtYXAgc3RydWN0dXJlLiBSZW1vdmVkCglDcmVhdGVESUJTZWN0aW9uMTYgZnJvbSB0aGUgZHJpdmVyIGludGVyZmFjZS4KCgkqIGNvbnRyb2xzL21lbnUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBpbmNsdWRlL2hlYXAuaCwgd2luZG93cy9tZGkuYzoKCUdvdCByaWQgb2YgSEVBUF9zdHJkdXBXLgoKCSogZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2suYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2tPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0SXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvQ291cmllci5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX09ibGlxdWUuYywgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2EuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3cuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X0JvbGRPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX1JvbWFuLmMsIGRsbHMvd2luZXBzL2RhdGEvU3ltYm9sLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZC5jLCBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19JdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZDaGFuY2VyeV9NZWRpdW1JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmRGluZ2JhdHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgZGxscy93aW5lcHMvYWZtLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglSZW1vdmUgcmVkdW5kYW50IGRhdGEgc3RydWN0dXJlIGZyb20gZm9udCBtZXRyaWNzLgoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9sZUZvbnQ6OklEaXNwYXRjaDo6SW52b2tlIHN0dWIgY2FuIGp1c3QgcmV0dXJuIFNfT0suCgoyMDAxLTA3LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglVc2UgQWRqdXN0V2luZG93UmVjdCB0byB0cmFuc2xhdGUgWCB0byB3aW5kb3cgcmVjdGFuZ2xlIGluc3RlYWQgb2YKCWR1cGxpY2F0aW5nIHdoYXQncyBkb25lIGluIG5vbmNsaWVudC5jLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29ycmVjdGlvbnMgdG8gdGhlIFdpbjk1IGFuZCBsYXRlciBmcmFtZSBkcmF3aW5nIGNvZGUuCgoJKiB3aW5kb3dzL3dpbi5jOiBCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFkZGl0aW9uYWwgbW9kaWZpY2F0aW9ucyB0byB0aGUgd2luZG93IHN0eWxlcyBkdXJpbmcgd2luZG93IGNyZWF0aW9uLgoKCSogaW5jbHVkZS93aW5lL3NoZWxsMTYuaCwgbWVtb3J5L2F0b20uYywgZGxscy93aW5tbS93aW5lbW0uaCwKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwKCSAgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZGxscy9vbGUzMi9tZW1sb2NrYnl0ZXMuYywKCSAgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLAoJICBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL21zdmlkZW8vdmZ3MTYuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNYWRlIHN1cmUgdGhhdCB0aGUgZmlsZXMgdGhhdCBjb250YWlucyB0aGUgZGVjbGFyYXRpb25zCgkgIG9mIHRoZSBpbXBsZW1lbnRhdGVkIGZ1bmN0aW9ucyBhcmUgaW5jbHVkZWQuCgktIENvcnJlY3RlZCBtaXNtYXRjaGluZyBwcm90b3R5cGVzLgoJLSBDbGVhbmVkIHVwIHRoZSBpbmNsdWRlIHNlY3Rpb24uCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOgoJQWRkZWQgYSBmZXcgbW9yZSBmaWxlcyB0byB0aGUgaW5zdGFsbCBsaXN0LgoKCSogd2luZG93cy93aW5wb3MuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglUcmFjZSByZWN0YW5nbGVzIHJldHVybmVkIGJ5IEdldENsaWVudFJlY3QgYW5kIEdldFdpbmRvd1JlY3QuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFJlY2FsYyB0aGUgdG9vbGJhciBzaXplIG9uIFRCX1NFVEJVVFRPTlNJWkUgaW4gY2VydGFpbiBjb25kaXRpb25zLgoJLSBBZGQgdHJhY2UgdG8gc2hvdyB0aGUgcGFpbnQgcmVjdGFuZ2xlIHByaW9yIHRvIHJlZnJlc2hpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBGaXggaGFuZGxpbmcgb2YgdGV4dCBjb2xvci4KCS0gQ29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBXTV9TRVRSRURSQVcgdG8gYmUgY2xvc2VyIHRvIG5hdGl2ZS4KCS0gRG8gbW9yZSBpbXBsZW1lbnRhdGlvbiBvZiBSQlNfQVVUT1NJWkUgaW4gdGhlIFdNX1NJWkUgcHJvY2Vzc29yLgoJLSBJbXBsZW1lbnQgUkJCU19WQVJJQUJMRUhFSUdIVC4gVXNlZCBieSBJRTQuCgktIERvIG1vcmUgdGVzdGluZyBpbiBXTV9TSVpFIHRvIGhhbmRsZSBzdHJhbmdlIGNhc2VzIGxpa2UgbmF0aXZlLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglEaXNwbGF5IHJlY3RhbmdsZSBmcm9tIFdNX05DQ0FMQ1NJWkUgb24gZW50cnkgYW5kIGV4aXQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggY29udmVyc2lvbiBvZiBXIHN0cnVjdHVyZSB0byBBIHN0cnVjdHVyZSBkdXJpbmcgbm90aWZ5LgoKCSogUkVBRE1FOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglVcGRhdGUgaW5mb3JtYXRpb24gY29uY2VybmluZyBGcmVlQlNELgoJUmVmZXIgdG8gV2luZSBpbnN0ZWFkIG9mIHdpbmUgYXMgdGhlIHBhY2thZ2UgbmFtZS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglSZXBsYWNlIHNlcnZpY2UgdGhyZWFkIHdpdGggUmVhZEZpbGVFeC9Xcml0ZUZpbGVFeC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggJ3VuZG9jdW1lbnRlZCcgYmVoYXZpb3VyIG9mIEdldFByaXZhdGVQcm9maWxlU3RyaW5nLgoKMjAwMS0wNy0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIHVudXNlZCBmaWxlLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0OgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciByZW9yZ2FuaXNhdGlvbiBhbmQgYSBmZXcgYnVnIGZpeGVzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS93bmRwcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IG91dCBvZiB0aGUgc291cmNlIHRyZWUgYnVpbGQgKGFnYWluKS4KCgkqIG1pc2MvcmVnaXN0cnkuYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL2NsaWVudC5jLAoJICBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgc2NoZWR1bGVyL3RpbWVyLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2V4Y2VwdC5jLAoJICB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsCgkgIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy90aW1lci5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsCgkgIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmUvc2VydmVyLmgsCgkgIGluY2x1ZGUvd2luZS9zZXJ2ZXJfcHJvdG9jb2wuaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLAoJICBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L3JlZ2lzdHJ5LmMsCgkgIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvdmlydHVhbC5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsCgkgIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvc3luYy5jLAoJICBkbGxzL2tlcm5lbC90b29saGVscC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250LmMsCgkgIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9zeW5jLmM6CglNb3ZlZCBzZXJ2ZXIuaCB0byBpbmNsdWRlL3dpbmUuCgoJKiBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL29iamVjdC5oLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHJvdG9jb2wuZGVmLCBzZXJ2ZXIvcmVxdWVzdC5jLAoJICBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci91bmljb2RlLmgsCgkgIHRvb2xzL21ha2VfcmVxdWVzdHM6CglVc2UgdGhlIG5ldyBwcm90b2NvbC5kZWYgZmlsZSB0byBidWlsZCB0aGUgcmVxdWVzdCBzdHJ1Y3R1cmVzLgoJRGVmaW5lIHByb3RvY29sIHN0cnVjdHVyZXMgaW4gYSBzZXBhcmF0ZSBzZXJ2ZXJfcHJvdG9jb2wuaCBmaWxlLgoJUmVtb3ZlZCBfX1dJTkVfU0VSVkVSX18gY2hlY2tzIG5vdyB0aGF0IGFsbCBpbmNsdWRlcyBhcmUgaW4gdGhlIHJpZ2h0CglkaXJlY3RvcnkuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9wcy5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oLCBkbGxzL3dpbmVwcy90cnVldHlwZS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmVhZC9jYWxjdWxhdGUgYXZlcmFnZSBjaGFyYWN0ZXIgd2lkdGggZm9yIGFsbCBmb250cy4KCVdvcmsgZGlyZWN0bHkgd2l0aCAxNi1iaXQgV0NIQVJzOyBkb24ndCBjb252ZXJ0IHRvIENQMTI1Mi4KCgkqIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvdy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93X09ibGlxdWUuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU1ha2UgSGVsdmV0aWNhIE5hcnJvdyBhIHNlcGFyYXRlIGZvbnQgZmFtaWx5LgoKMjAwMS0wNy0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9lbnZpcm9uLmMsIG1pc2MvcmVnaXN0cnkuYywgbXNkb3MvZG9zY29uZi5jLCBtc2Rvcy9pbnQyOS5jLAoJICBtc2Rvcy9wcGRldi5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wZW4uYywKCSAgd2luMzIvZmlsZS5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy93aW5tbS9qb3lzdGljay5jLAoJICBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBkbGxzL3dpbm1tL3RpbWUuYywgZmlsZXMvZG9zX2ZzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgaW5jbHVkZS9tc3ZjcnQvc3RyaW5nLmgsCgkgIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsIGxvYWRlci90YXNrLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywKCSAgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2Uvd25kcHJvYy5jLAoJICBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsCgkgIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci93c3ByaW50Zi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1hZGUgc3VyZSB0aGF0IHRoZSBmaWxlcyB0aGF0IGNvbnRhaW5zIHRoZSBkZWNsYXJhdGlvbnMKCSAgb2YgaW1wbGVtZW50YXRlZCBmdW5jdGlvbnMgYXJlIGluY2x1ZGVkLgoJLSBDb3JyZWN0ZWQgbWlzbWF0Y2hpbmcgcHJvdG90eXBlcy4KCS0gQ2xlYW5lZCB1cCB0aGUgaW5jbHVkZSBzZWN0aW9uLgoKCSogbWVtb3J5L2F0b20uYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9vdXRwdXQucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtLCB0b29scy93aW5hcGkvY29uZmlnLnBtLAoJICB0b29scy93aW5hcGkvb3V0cHV0LnBtLCB0b29scy93aW5hcGkvc2V0dXAucG0sCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU2V2ZXJhbCBhZGRpdGlvbnMgYW5kIGJ1ZyBmaXhlcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVJlamVjdCBwb2ludGVyIG1lc3NhZ2VzIGluIFNlbmROb3RpZnlNZXNzYWdlW0FXXSBhbmQKCVNlbmRNZXNzYWdlQ2FsbGJhY2tbQVddLiBGaXhlZCBwcm90b3R5cGVzLgoKCSogaW5jbHVkZS9jb21jYXQuaCwgaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS9vYWlkbC5oLAoJICBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlaWRsLmgsIGluY2x1ZGUvcnBjLmgsCgkgIGluY2x1ZGUvc2VydnByb3YuaCwgaW5jbHVkZS9zdHJtaWYuaCwgaW5jbHVkZS91bmtud24uaCwKCSAgaW5jbHVkZS91cmxtb24uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSW5jbHVkZSBycGMqLmgvd2luZG93cy5oL29sZTIuaCBqdXN0IGxpa2Ugd2luZG93cy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglVc2UgR2V0Q29tbVN0YXRlMTYgdG8gc2F2ZSBzdGF0ZSBpbiBPcGVuQ29tbTE2LgoJTWVyZ2UgY29tbTE2IGdsb2JhbHMgaW50byBvbmUgc3RydWN0dXJlLgoKCSogdG9vbHMvZm50MmJkZi5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglNYWtlIHRoZSBmb250IG5hbWUgYW5kIHNpemUgc2V0dGluZ3MgcmVmbGVjdCB0aGUgZGF0YSBpbiB0aGUgZm9udCBmaWxlCglyYXRoZXIgdGhhbiBhcmJpdHJhcnkgdmFsdWVzLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU05PT1BfRG9SZXR1cm46IHJlbW92ZSByZWR1bmRhbnQgcHJpbnRpbmcgb2YgdGlkLgoKMjAwMS0wNy0xNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IFVwZGF0ZWQgZGVwZW5kZW5jaWVzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVJld3JpdGUgU2V0Q29tbVN0YXRlMTYgdG8gdXNlIFNldENvbW1TdGF0ZS4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTW9yZSBkZXNjcmlwdGl2ZSBlcnJvciBvbiBidWZmZXIgb3ZlcmZsb3cuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUFzIGZvciB0aGUgZWRpdCBjb250cm9sLCB0aGUgc3R5bGUgb2YgdGhlIGJvcmRlcnMgb24gdGhlIGxpc3QgY29udHJvbAoJaXMgbW9kaWZpZWQgaW4gdGhlIGRpYWxvZyBsb2FkaW5nIGNvZGUsIG5vdCBpbiB0aGUgY29udHJvbCBpdHNlbGYuCgoJKiBvbGUvb2xlMm5scy5jLCBkbGxzL3VzZXIvdGV4dC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgc29tZSBtb3JlIG92ZXJmbG93aW5nIHN0cmluZyB0cmFjZXMuCgoJKiBjb250cm9scy9tZW51LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglEcmF3IE1lbnVCYXIgaW4gcHJvcGVyIHBsYWNlIChzb21lIGNhc2VzKS4KCgkqIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglNYWtlIHN1cmUgdXNlcjMyIGlzIGFsd2F5cyBsb2FkZWQgYmVmb3JlIHgxMWRydi4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJSGFuZGxlIHNwYWNlcyBwcm9wZXJseSB3aGVuIHJlc3RhcnRpbmcgd2luZWxhdW5jaGVyIGZvciBkZWJ1Zy4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU29tZSAnY2FsZW5kYXInIHR5cG9zLi4uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGluY2x1ZGUvc2hlbGxhcGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgbWlzc2luZyBDb21tYW5kTGluZVRvQXJndlcgcHJvdG90eXBlLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglSZWZyZXNoIGJpdG1hcCBjb3VudCB0byB0YWtlIGluIGFjY291bnQgaW1hZ2VsaXN0IGNoYW5nZXMgYWZ0ZXIKCVRCX1NFVElNQUdFTElTVC4KCgkqIGRsbHMvdXNlci9kZGUvbWlzYy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4ZWQgdW5pY29kZSB3YXJuaW5nLgoKCSogaW5jbHVkZS93aW5udC5oLCBzZXJ2ZXIvbmFtZWRfcGlwZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBTVEFUVVNfKiBjb25zdGFudCBmb3IgbmFtZWQgcGlwZXMuIFJldHVybiBTVEFUVVNfUElQRV9OT1RfQVZBSUxBQkxFCgl3aGVuIG9wZW5pbmcgYSBuYW1lZCBwaXBlIGlmIHRoZSBwaXBlIGV4aXN0cyBidXQgbm8gaW5zdGFuY2VzIG9mIGl0IGFyZQoJY3VycmVudGx5IHdhaXRpbmcgZm9yIGEgY29ubmVjdGlvbi4KCjIwMDEtMDctMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb2Nlc3MuYywKCSAgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3B0cmFjZS5jOgoJQmFja2VkIG91dCB0aGUgc3VzcGVuZF9wcm9jZXNzX2Zvcl9wdHJhY2UgY2hhbmdlLgoJRml4ZWQgYSBjb3VwbGUgb2YgcmFjZXMgaW4gcHRyYWNlIGNvZGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSB0aGUgLXJwYXRoIG9wdGlvbiBmcm9tIHRoZSBsaW5rIGNvbW1hbmQuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9vdXRwdXQucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbSwgdG9vbHMvd2luYXBpL291dHB1dC5wbSwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTZXZlcmFsIGFkZGl0aW9ucyBhbmQgYnVnIGZpeGVzLgoKCSogd2luZG93cy9kY2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQmV0dGVyIExvY2tXaW5kb3dVcGRhdGUgZGVidWcuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIHNvbWUgRklYTUUoKXMgcHJpbnQgdGhlIHJlc3BlY3RpdmUgc3RyaW5ncyBwYXNzZWQuCglDaGFuZ2VkIFN0Z1NldFRpbWVzKCkgdG8gY29ycmVjdCB0eXBlLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFF1YWxpdHkgQm94IChyZWFkb25seSBjdXJyZW50bHkpIGZvciAxNmJpdCB0ZW1wbGF0ZWQgZGlhbG9ncy4KCUFkZGVkIFtQcmludGVyXSBidXR0b24gc3VwcG9ydCBpbiAxNmJpdCB0ZW1wbGF0ZWQgZGlhbG9ncy4KCVRyeSBzZW5kaW5nIG9yaWVudGF0aW9uIGljb24gdG8gc3RjMTAgdG9vLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCBtb3N0IG9mIHRoZSBudW1iZXJzIHdpdGggdGhlIHN5bWJvbGljIGNvbnN0YW50cyBvZiB0aGUgZGlhbG9nCglpdGVtcy4KCgkqIG1zZG9zL3BwZGV2LmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEb24ndCBjbGFpbSB0aGUgcGFycG9ydCBmb3IgZXhjbHVzaXZlIGFjY2VzcyBhbmQgcmVsZWFzZSB0aGUgcG9ydAoJYWZ0ZXIgZXZlcnkgYWNjZXNzLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCVJld3JpdGUgR2V0Q29tbVN0YXRlMTYgdXNpbmcgR2V0Q29tbVN0YXRlLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU05PT1BfR2V0UHJvY0FkZHJlc3M6IGRvbid0IHRvdWNoIGFscmVhZHkgaW5pdGlhbGl6ZWQgZnVuLWVudHJpZXMuCgoyMDAxLTA3LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmg6CglSZW1vdmVkIHVudXNlZCBmdW5jdGlvbnMgc3VzcGVuZC9yZW1vdmVfYWxsX3RocmVhZHMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2Rvc19mcy5jLCBncmFwaGljcy9mb250ZW5naW5lLmMsCgkgIG1lbW9yeS9zdHJpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL3Blbi5jLAoJICBvYmplY3RzL3JlZ2lvbi5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWRpLmMsCgkgIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgc2NoZWR1bGVyL3N5bmNocm8uYywKCSAgZGxscy9rZXJuZWwvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudCBvdmVybGFwcGVkIGNvbXBsZXRpb24gcm91dGluZXMuCglEb24ndCB1c2UgbHBPdmVybGFwcGVkLT5PZmZzZXRIaWdoIHRvIHN0b3JlIGJ5dGVzIHRvIHRyYW5zZmVyLgoKCSogZGxscy94MTFkcnYvd2luZG93LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4IFggY3Jhc2ggd2hlbiBydW5uaW5nIGluIG1hbmFnZWQgbW9kZS4KCgkqIHVuaWNvZGUvY2FzZW1hcC5jLCB1bmljb2RlL3djdHlwZS5jLCB1bmljb2RlL2NfMDQyLmMsCgkgIHVuaWNvZGUvY18xMDAwNi5jLCB1bmljb2RlL2NfMTI1My5jLCB1bmljb2RlL2NfMjg1OTcuYywKCSAgdW5pY29kZS9jXzQzNy5jLCB1bmljb2RlL2NfNzM3LmMsIHVuaWNvZGUvY184NjAuYywgdW5pY29kZS9jXzg2MS5jLAoJICB1bmljb2RlL2NfODYyLmMsIHVuaWNvZGUvY184NjMuYywgdW5pY29kZS9jXzg2NS5jLCB1bmljb2RlL2NfODY5LmMsCgkgIHVuaWNvZGUvY184NzUuYywgdW5pY29kZS9jXzkzMi5jLCB1bmljb2RlL2NfOTM2LmMsIHVuaWNvZGUvY185NDkuYywKCSAgdW5pY29kZS9jXzk1MC5jOgoJUmVnZW5lcmF0ZWQgY29kZXBhZ2UgZmlsZXMgd2l0aCBVbmljb2RlIDMuMSBkYXRhLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3Jhc2FwaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3JwY3J0NC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLCB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwLAoJICB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTZXZlcmFsIGFkZGl0aW9ucyBhbmQgYnVnIGZpeGVzLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglHZXQgd2luZW1ha2VyIHRvIGRyb3AgdGhlIHRyYWlsaW5nIEN0cmxaIHRoYXQgaXMgc3RpbGwgdG8gYmUgZm91bmQgb24KCXF1aXRlIGEgbG90IG9mIERPUyBmaWxlcy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJRml4ZWQgYSBmZXcgaXNzdWVzIHdpdGggdHN4MTEgbG9ja2luZy4KCUFsd2F5cyBtYXAgdGhlIGNsaWVudCB3aW5kb3cgd2hlbiBtb3Zpbmcgb3V0IG9mIGljb25pYyBzdGF0ZS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJRG9uJ3QgY2FsbCBTTk9PUF9SZWdpc3RlckRMTCBvbiBidWlsdGlucy4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSByZW1vdmVkIHVudXNlZCBPU01lc2EgbGlua2luZwoJLSByZW1vdmVkIE9TTWVzYSBjb2RlCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJSW1wbGVtZW50IENPTU1fTVNSVXBkYXRlIHdpdGggR2V0Q29tbU1vZGVtU3RhdHVzLgoKMjAwMS0wNy0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3JwY2RjZS5oLAoJICBpbmNsdWRlL3JwY250ZXJyLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAeWFob28uY29tPgoJQWRkZWQgYSBidW5jaCBvZiBlbnRyeSBwb2ludHMuCglBZGRlZCBzb21lIHN0dWJzIGFuZCBoZWFkZXIgaW5mb3JtYXRpb24uCglGaXhlZCBzb21lIHJldHVybiBjb2Rlcy4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jOgoJQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglNb2RpZnkgc29tZSBzeXN0ZW0gbWV0cmljcyB0byBhZ3JlZSB3aXRoIFdpbjk1IGFuZCByZWZsZWN0IHRoZSBkZXNrdG9wCglyZWdpc3RyeSBlbnRyaWVzLgoKCSogZGxscy9tc3ZjcnQvbWJjcy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNlbWlzdHVicyBmb3IgX2lzbWJjZGlnaXQsX2lzbWJjc3BhY2UsX21ic2x3cixfbWJzbmJjbXAsX21ic3Nwbi4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvd2lucG9zLmMsCgkgIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDVjLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY2xpcHBpbmcuYywKCSAgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywKCSAgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLAoJICBvbGUvb2xlMm5scy5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvaW5wdXQuYywKCSAgd2luZG93cy9tZGkuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9uZS9jb252ZXJ0LmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywKCSAgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9jb2RlcGFnZS5jLAoJICBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsCgkgIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvc3RyaW5nLmMsIG1pc2MvbWFpbi5jLCBtaXNjL3JlZ2lzdHJ5LmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLAoJICBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZGxscy93aW5tbS93aW5lb3NzL21tYXV4LmMsCgkgIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYywgZGxscy93aW5zb2NrL3NvY2tldC5jLAoJICBkbGxzL3dzb2NrMzIvcHJvdG9jb2wuYywgZGxscy93c29jazMyL3NvY2tldC5jLCBmaWxlcy9kb3NfZnMuYywKCSAgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9iaXRibHQuYywgZGxscy93aW5tbS9kcml2ZXIuYywKCSAgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21jaS5jLAoJICBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywKCSAgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywKCSAgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywKCSAgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS90aW1lLmMsCgkgIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIGRsbHMvb2xlZGxnL29sZWRsZ19tYWluLmMsCgkgIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLAoJICBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywKCSAgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywKCSAgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL21vdXNlLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsCgkgIGRsbHMvd2luMzJzL3czMnN5cy5jLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywKCSAgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLAoJICBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zdmNydC9tYWluLmMsCgkgIGRsbHMvbXN2Y3J0L3N0cmluZy5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250LmMsCgkgIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGxzdHIuYywKCSAgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJpbXBsLmMsCgkgIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9kcGxheXgvZHBsYXkuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBmaXhlcy4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJQWRkZWQgZGlzYXNzZW1ibHkgZm9yIDB4MGYgMHg1eCBvcGNvZGVzLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUJldHRlciBlcnJvciByZXBvcnRpbmcgb24gRGVidWdBY3RpdmVQcm9jZXNzIGZhaWx1cmUuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLAoJICBzZXJ2ZXIvcHJvY2Vzcy5oOgoJU21hbGwgZml4ZXMgdG8gdGhlIGRlYnVnZ2VyIHN1cHBvcnQuCgoJKiBzZXJ2ZXIvcXVldWUuYzogTWVyZ2UgV01fTU9VU0VNT1ZFIG1lc3NhZ2VzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dvdzMyLmFwaSwgdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwKCSAgdG9vbHMvd2luYXBpL2Z1bmN0aW9uLnBtLCB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL3V0aWwucG0sIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwKCSAgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9kb2N1bWVudGF0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2Z1bmN0aW9uLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWpvciByZW9yZ2FuaXphdGlvbiBhbmQgY2xlYW51cC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglJbXBsZW1lbnQgRmx1c2hDb21tMTYgd2l0aCBQdXJnZUNvbW0uCgoJKiBjb250cm9scy9lZGl0LmMsIHdpbmRvd3MvZGlhbG9nLmM6CglCaWxsIE1lZGxhbmQgPG1lZGJpMDFAYWNjcGFjLmNvbT4KCUNvcnJlY3QgdGhlIGxvY2F0aW9uIG9mIHRoZSBzdHlsZSBwYXRjaGluZyBmb3IgdGhlIGVkaXQgY29udHJvbC4KCgkqIGRsbHMvcmFzYXBpMzIvcmFzYXBpLmMsIGRsbHMvcmFzYXBpMzIvcmFzYXBpMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglTdHViIHNvbWUgcmFzYXBpIGZ1bmN0aW9ucy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYXZlIEludGVybmV0R2V0Q29ubmVjdGVkU3RhdGUgYWx3YXlzIHJldHVybiAnTEFOIGNvbm5lY3Rpb24nLgoKMjAwMS0wNy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL25hbWVkX3BpcGUuYywgc2VydmVyL3JlcXVlc3QuaCwKCSAgc2VydmVyL3RyYWNlLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3N5bmMuYywKCSAgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglTdGFydCBpbXBsZW1lbnRpbmcgbmFtZWQgcGlwZXMuCgoJKiBpbmNsdWRlL3NobHdhcGkuaCwgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUB5YWhvby5jb20+CglBZGQgc2hsd2FwaS53dm5zcHJpbnRmW0FXXSwgaGVhZGVyIGluZm8gYW5kIGNvbW1lbnRzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsCgkgIGluY2x1ZGUvd2luc29jazIuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUB5YWhvby5jb20+CglJbXBsZW1lbnRlZCBhIHN0dWIgZm9yIFdTQVJlY3ZGcm9tLgoKCSogY29udHJvbHMvbWVudS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUdldE1lbnVJdGVtSUQ6IHJldHVybiAtMSBmb3IgaW52YWxpZCBtZW51IGl0ZW1zLCBub3QgemVyby4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglSZXdyaXRlIEVzY2FwZUNvbW1GdW5jdGlvbjE2IHRvIHVzZSBFc2NhcGVDb21tRnVuY3Rpb24uCgoJKiBkbGxzL21zdmNydC9maWxlLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAeWFob28uY29tPgoJQ3JlYXRlRmlsZSBzaG91bGQgYmUgY2FsbGVkIHdpdGggc2VjdXJpdHkgYXR0cmlidXRlcyBpbiBfb3Blbi4KCgkqIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWtlIChHfFMpZXRDbGlwTGlzdCBub3QgYWJvcnQsIGJ1dCByZXR1cm4gRERFUlJfTk9DTElQTElTVC4KCURvIG5vdCBzY3JvbGwgRklYTUUoKXMgdG9vIG11Y2guCgoyMDAxLTA3LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL29sZTMyL2NvbXBvYmouc3BlYywKCSAgZGxscy9vbGVkbGcvb2xlZGxnLnNwZWMsIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2w6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiBkbGxzL29sZWF1dDMyL3BhcnNlZHQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCBjb21tZW50IHRoYXQgY29kZSBpcyBicm9rZW4uCgktIFNpbGVuY2VkIGFubm95aW5nIGxvbmcgdGVybSB3aW5hcGlfY2hlY2sgbWVzc2FnZS4KCgkqIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGQgcHJvcGVyIGNoZWNrIGZvciBleGlzdGFuY2Ugb2Ygc3RydWN0IHNvY2thZGRyIG1lbWJlciBzYV9sZW4uCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWw6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglVcGRhdGVkIHByaW50aW5nIGRvY3VtZW50YXRpb24gYSBiaXQuCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvd2luYXBpX2V4dHJhY3QsCgkgIHRvb2xzL3dpbmFwaS93aW5hcGlfZml4dXAsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2dkaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVkbGcuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcXVhcnR6LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbm1tLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzb2NrMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU2V2ZXJhbCBidWcgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAeWFob28uY29tPgoJRml4IHNvbWUgb3JkaW5hbCBmb3J3YXJkaW5nLgoKCSogY29udHJvbHMvbWVudS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZCBzb21lIGFyZ3VtZW50IHZhbGlkYXRpb24gdG8gU2V0TWVudUl0ZW1JbmZvQSwgc28gUVQ1IGRvZXMgbm90Cgljb3JydXB0IGl0cyBtZW51cy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIE1vdmUgY3JlYXRpb24gcHJvY2VzcyB0byB0aGUgV01fTkNDUkVBVEUgbWVzc2FnZSBsaWtlIG5hdGl2ZSBhbmQgZm9yY2UKCSAgc3R5bGVzIFdTX1ZJU0lCTEUgYW5kIENDU19UT1AuCgktIEltcGxlbWVudCBtZXNzYWdlcyBXTV9OQ0hJVFRFU1QsIFdNX1NUWUxFQ0hBTkdFRCwgUkJfTU9WRUJBTkQsCgkgIFJCX01JTklNSVpFQkFORC4KCS0gSW1wcm92ZSBwcmVmb3JtYW5jZSBieSByZW1vdmluZyBjYWxscyB0byBHZXRXaW5kb3dMb25nIGZvciBHV0xfU1RZTEUKCSAgKGJ5IHNhdmluZyBzdGF0ZSBhbmQgaGFuZGxpbmcgV01fU1RZTEVDSEFOR0VEKS4KCS0gQ2xlYW51cCBhbmQgcmVtb3ZlIGRlYWQgYW5kIHRlc3QgY29kZS4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ29ycmVjdCBhbW91bnQgb2YgaW5mbyBkaXNwbGF5ZWQgZm9yIE5NX05DSElUVEVTVCBhbmQgYWxsIHRoZSBMVk5fKi4KCgkqIGNvbnRyb2xzL3VpdG9vbHMuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJQ29ycmVjdCBtb3JlIGNvbG91cnMgc28gdGhhdCBEcmF3RWRnZSB3b3JrcyBmb3IgbW9yZSBjYXNlcy4KCgkqIGluY2x1ZGUvc3RybWlmLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgbWlzc2luZyBJSURzLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCUltcGxlbWVudCBSZWFkRmlsZUV4IGFuZCBXcml0ZUZpbGVFeCAobHBPdmVybGFwcGVkQ29tcGxldGlvbiByb3V0aW5lCglpcyBub3Qgc3VwcG9ydGVkIHlldC4uLikKCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglVc2UgSEFORExFcyBpbnN0ZWFkIG9mIHVuaXggZmRzLgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkIC0tbGlzdCBmYWNpbGl0eSB0byBsaXN0IGluc3RhbGxlZCBwcm9ncmFtcy4KCUFkZCAtLXJlbW92ZSB4eHggZmFjaWxpdHkgdG8gcmVtb3ZlIGEgc3BlY2lmaWMgcHJvZ3JhbS4KCjIwMDEtMDctMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywKCSAgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L2dsb2JhbC5jLAoJICBtZW1vcnkvaGVhcC5jLCBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS9zdHJpbmcuYywKCSAgbWlzYy9lcnJvci5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2Mvc3lzdGVtLmMsIG1pc2MvdmVyc2lvbi5jLAoJICBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywKCSAgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvdGV4dC5jLCBzY2hlZHVsZXIvc3luY2hyby5jLAoJICBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLAoJICBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9mb250ZW5naW5lLmMsIGdyYXBoaWNzL21hcHBpbmcuYywKCSAgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywKCSAgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLAoJICBsb2FkZXIvdGFzay5jLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLAoJICBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmMsCgkgIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi93aW5wb3MuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsCgkgIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3ZlcnNpb24vdmVyMTYuYywKCSAgZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBkbGxzL3dpbjMycy93MzJzeXMuYywKCSAgZGxscy93aW4zMnMvd2luMzJzMTYuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLAoJICBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5lZG9zL21vZHVsZS5jLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywKCSAgZGxscy93aW5pbmV0L3dpbmluZXRfbWFpbi5jLCBkbGxzL3dpbm1tL2RyaXZlci5jLAoJICBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywKCSAgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tbWlvLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywKCSAgZGxscy93aW5tbS9zb3VuZDE2LmMsIGRsbHMvd2lubW0vdGltZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy90dHlkcnYvdXNlci5jLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBkbGxzL3VzZXIvYmlkaTE2LmMsCgkgIGRsbHMvdXNlci9kZGUvZGRlbWwxNi5jLCBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvbHN0ci5jLAoJICBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvbW91c2UuYywgZGxscy91c2VyL25ldHdvcmsuYywKCSAgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvdXNlci90ZXh0LmMsIGRsbHMvdXNlci90aHVuay5jLAoJICBkbGxzL3VzZXIvd3NwcmludGYuYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy9udGRsbC9ydGwuYywKCSAgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywKCSAgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsCgkgIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywKCSAgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvb2xlY2xpL29sZWNsaV9tYWluLmMsCgkgIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jLCBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jLAoJICBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jLAoJICBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZ2VuZXJpYy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywKCSAgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9nZGkvYmlkaTE2LmMsCgkgIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvZ2RpL3RodW5rLmMsIGRsbHMvZ2RpL3dpbmcuYywKCSAgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLAoJICBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC9zdHJpbmcuYywKCSAgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jLAoJICBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dpbjg3ZW0uYywKCSAgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsCgkgIGRsbHMvbXByL21wcl9tYWluLmMsIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXN2Y3J0L2NwcC5jLAoJICBkbGxzL21zdmNydC9oZWFwLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsCgkgIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sCgkgIGRsbHMvcXVhcnR6Ly5jdnNpZ25vcmUsIGRsbHMvcXVhcnR6L01ha2VmaWxlLmluLAoJICBkbGxzL3F1YXJ0ei9tYWluLmMsIGRsbHMvcXVhcnR6L3F1YXJ0ei5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHN0dWJzIGZvciBxdWFydHouZGxsLgoKCSogd2luMzIvZmlsZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBmaWxlcy9maWxlLmMsCgkgIGluY2x1ZGUvd2luYmFzZS5oOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQHN0YXJ0LmNvbS5hdT4KCURlY2xhcmUgc3R1YnMgZm9yIFJlYWRGaWxlRXgsIFdyaXRlRmlsZUV4LgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9hbWF1ZGlvLmgsIGluY2x1ZGUvYW12aWRlby5oLAoJICBpbmNsdWRlL2NvbnRyb2wuaCwgaW5jbHVkZS9zdHJtaWYuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIGRzaG93IGhlYWRlcnMuCgoJKiBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMvTWFrZWZpbGUuaW46CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgaW50ZXIgZGxsIGRlcGVuZGVuY2llcy4KCgkqIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLCBkbGxzL3dzb2NrMzIvd3NvY2szMi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdGRjYWxsLT5jZGVjbCB0aHVua3MgZm9yIGluZXRfbmV0d29yayBhbmQgZ2V0bmV0YnluYW1lLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIFBST0ZJTEVfKiBmdW5jdGlvbnMgYnkgUmVnKi4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglSQkJTX0ZJWEVEU0laRSBzaG91bGQgbm90IGFmZmVjdCBfQWRqdXN0QmFuZHMgKGZvdW5kIGJ5IE1pa2UgTWNDb3JtYWNrCglpbiBXaW5aaXApLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJRml4IGJ1dHRvbiB0ZXh0IHBsYWNlbWVudCBmb3IgZGlzYWJsZWQgYnV0dG9ucyAoc2VlIFdpbnppcCA4LjApLgoKCSogaW5jbHVkZS91cmxtb24uaDoKCU5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgoJQWRkZWQgSUJpbmRIb3N0LCBJV2luSW5ldEluZm8sIElXaW5JbmV0SHR0cEluZm8gY2xhc3MgZGVmaW5pdGlvbnMsCglCSU5ERiwgQklORFNUQVRVUyBzdHJ1Y3RzLgoKCSogZGxscy9nZGkvZGlzcGRpYi5zcGVjLCBkbGxzL2dkaS93aW5nLnNwZWMsIGRsbHMva2VybmVsL3N0cmVzcy5zcGVjLAoJICBkbGxzL21zdmlkZW8vbXN2aWRlby5zcGVjLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsCgkgIGRsbHMvb2xlMzIvY29tcG9iai5zcGVjLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaS93aW5hcGlfZXh0cmFjdCwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvY29tcG9iai5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTZXZlcmFsIGJ1ZyBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvcGFsZXR0ZS5jLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL21kaS5jLCBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZSBzb21lIDE2LWJpdCBjYWxscyBieSB0aGVpciAzMi1iaXQgZXF1aXZhbGVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUmVtZW1iZXIgcmVzcG9uc2UgZnJvbSBMVk5fR0VURElTUElORk8gaWYgdXNlciBzZXRzIExWSUZfRElfU0VUSVRFTS4KCgkqIGRsbHMvd2luMzJzL3dpbjMyczE2LmMsIGRsbHMvd2luMzJzL3dpbjMyczE2LnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRmluaXNoIHdpbjMycyBzZXBhcmF0aW9uLgoKMjAwMS0wNi0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAxMDYyOS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wNi0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgZGxscy91c2VyL2RkZS9jbGllbnQuYywgZGxscy91c2VyL2RkZS9taXNjLmMsCglkbGxzL3VzZXIvZGRlL3NlcnZlci5jLCBjb25maWd1cmU6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ICdtYWtlIGRlcGVuZCcgZm9yIG91dCBvZiB0aGUgc291cmNlIHRyZWUgYnVpbGQuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbWlzc2luZyBjb25maWcuaCBpbmNsdWRlLgoKCSogZGxscy94MTFkcnYvd2lucG9zLmM6CglSZW1vdmVkIHVubmVjZXNzYXJ5IFNldFdpbmRvd1BvcyBjYWxsIGluIFNldFdpbmRvd1Jnbi4KCgkqIFJFQURNRTogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGUuCgoJKiB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvd25kLmMsCglkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywKCWRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCglpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy93aW4uYywKCXdpbmRvd3Mvd2lucG9zLmM6CglNb3ZlZCBGb3JjZVdpbmRvd1JhaXNlIHRvIHRoZSBVU0VSIGRyaXZlciBhbmQgcmVtb3ZlZCB0aGUgV05EIGRyaXZlci4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJVHJhdmlzIE1pY2hpZWxzZW4gPHRqbWljaGllbHNlbkB5YWhvby5jb20+CglGaXhlZCBoYW5kbGluZyBvZiBXTV9NT1VTRVdIRUVMIG1lc3NhZ2VzIGluIG5vbi1jbGllbnQgc3BhY2UuCgoyMDAxLTA2LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luLmMsCgkgIGNvbnRyb2xzL21lbnUuYywgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvbnQuYywKCSAgZGxscy9udGRsbC9ydGwuYywgbXNkb3MvaW9wb3J0cy5jLCBvYmplY3RzL2JpdG1hcC5jLAoJICBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLAoJICBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZm9udC5jLAoJICBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcGFsZXR0ZS5jLAoJICBvYmplY3RzL3Blbi5jLCBvYmplY3RzL3JlZ2lvbi5jLCBvYmplY3RzL3RleHQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBuYW1lIGZpeGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW46CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHN1YnRsZSBjb25maWd1cmUgYnVnIGNvbmNlcm5pbmcgT3BlbkdMLgoJRm91bmQgb24gRnJlZUJTRCAod2hpY2ggaGFzIE9wZW5HTCBpbiAvdXNyL1gxMVI2L2xpYikuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU2V2ZXJhbCBidWcgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCUJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJSW1wcm92ZWQgaGFuZGxpbmcgb2Ygc3R5bGVzIGluIHRoZSBlZGl0IGNvbnRyb2wsIGluY2x1ZGluZyBkZXRlY3RpbmcKCWNoYW5nZXMgb2Ygc3R5bGUgYW5kIGNvcnJlY3RpbmcgaGFuZGxpbmcgb2YgaW5jb25zaXN0YW50IHN0eWxlcy4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2NvbXBvYmouc3BlYywKCSAgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpbmlzaCBvbGUzMiBzZXBhcmF0aW9uLgoKCSogaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvcXVldWUuYywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJLSBSZW1vdmUgY29va2VkIGhhcmR3YXJlIG1lc3NhZ2VzIHdoZW4gdGhleSBhcmUgZHJvcHBlZCAocmVwb3J0ZWQgYnkKCSAgR2VyYXJkIFBhdGVsKS4KCS0gQ29udmVydCBhbGwgcG9zdGVkIDMyLWJpdCBtZXNzYWdlcyB0byBVbmljb2RlIGJlZm9yZSBzdG9yaW5nIHRoZW0gaW4KCSAgdGhlIHF1ZXVlLgoJLSBGYXN0ZXIgaW1wbGVtZW50YXRpb24gb2YgTVNHX0lzUG9pbnRlck1lc3NhZ2UuCgktIE1vdmVkIGEgY291cGxlIG9mIGZ1bmN0aW9ucyBmcm9tIHF1ZXVlLmMgdG8gbWVzc2FnZS5jLgoKMjAwMS0wNi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicmFyeS9wb3J0LmMsIGxvYWRlci9lbGYuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmluOgoJUHV0IEFDX0RFRklORSBzeW1ib2xzIGRlZmluaXRpb25zIGRpcmVjdGx5IGluIHRoZSBjb25maWd1cmUgc2NyaXB0IHNvCgl0aGF0IHdlIG5vIGxvbmdlciBuZWVkIGFuIGFjY29uZmlnLmguIENsZWFuZWQgdXAgZGxvcGVuKCkgdGVzdHMgYSBiaXQuCgoJKiBtaXNjL2NwdS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXggbWlzbGVhZGluZyBQNCB3YXJuaW5nIG1lc3NhZ2UgYXBwZWFyaW5nIGV2ZW4gaW4gY2FzZSBvZiBtYXRjaC4KCjIwMDEtMDYtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgaW5jbHVkZS94MTFkcnYuaDoKCUFkZGVkIHdpbmRvdyBwcm9wZXJ0aWVzIHRvIG1ha2Ugc29tZSB4MTFkcnYtc3BlY2lmaWMgaW5mb3JtYXRpb24KCWF2YWlsYWJsZSB0byBoaWdoZXIgbGV2ZWwgY29kZS4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGluY2x1ZGUvY29uZmlnLmguaW4sCgkgIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW9wb3J0cy5jLAoJICBtc2Rvcy9wcGRldi5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIC9kZXYvcGFycG9ydCBzdXBwb3J0IGZvciBkaXJlY3QgcG9ydCBhY2Nlc3MuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCU1ha2UgdGhlIHZpc2libGUgcmVnaW9uIGVtcHR5IGZvciBub24tdmlzaWJsZSB3aW5kb3dzLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIG9uZSBtb3JlIFBST0ZJTEVfIGZ1bmN0aW9uIGJ5IFJlZ1F1ZXJ5VmFsdWVFeEEuCgoJKiBkbGxzL3dpbmVwcy9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvb2JqZWN0cy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2Ugc29tZSAxNi1iaXQgY2FsbHMgYnkgdGhlaXIgMzItYml0IGVxdWl2YWxlbnRzLgoKMjAwMS0wNi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCURvbid0IGNvbXBpbGUgdm04Ni1zcGVjaWZpYyBjb2RlIG9uIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19aaC5yYywgZGxscy9jb21tZGxnL3JzcmMucmMsCgkgIGRsbHMva2VybmVsL25scy9jaHQubmxzLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9aaC5yYywKCSAgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9aaC5yYywKCSAgZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSmF1LUhvcm5nIENoZW4gPGI2NTAyMDAyQGVlLm50dS5lZHUudHc+CglBZGRlZCBUcmFkaXRpb25hbCBDaGluZXNlIFN1cHBvcnQKCUZpeGVkIHN1YmxhbmcgZm9udCBzaXplIGVycm9yIHdoZW4gbm90IHVzaW5nIGZpeGVkLXNpemUgZm9udC4KCgkqIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLAoJICBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIHNvbWUgMTYtYml0IGNhbGxzIGJ5IHRoZWlyIDMyLWJpdCBlcXVpdmFsZW50cy4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2lucHV0LmMsCgkgIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsCgkgIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUltcGxlbWVudGVkIFNlbmRJbnB1dCgpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBzZXBhcmF0ZSB0aGUgWFNobSB1c2luZyBjb2RlLgoKMjAwMS0wNi0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueToKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJQWRkIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gYnlhY2MgKGFnYWluKS4KCgkqIHRvb2xzL2V4YW1pbmUtcmVsYXk6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZvciBuZXcgcmVsYXkgZm9ybWF0LiBhZGRlZCB0aHJlYWQga25vd2xlZGdlLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gQWRkIHN1cHBvcnQgZm9yIFdNX05PVElGWUZPUk1BVCBhbmQgc3VwcG9ydCBib3RoIEFOU0kgYW5kIFVOSUNPREUKCSAgbm90aWZ5IGZvcm1hdHMuCgktIE1vdmUgdGhlIGRyYXdpbmcgb2YgdGhlIGJhbmQgYmFja2dyb3VuZHMgYW5kIGJhbmQgc2VwYXJhdG9ycyB0byB0aGUKCSAgV01fRVJBU0VCS0dORCBwcm9jZXNzaW5nIGp1c3QgdGhlIHdheSB0aGUgbmF0aXZlIGNvbnRyb2xzIGRvLgoJLSBJbXBsZW1lbnQgV01fU0VUUkVEUkFXLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBGaXggbWVtb3J5IGxlYWtzLgoJLSBBZGQgc3VwcG9ydCBmb3IgV01fTk9USUZZRk9STUFUIGFuZCBzdXBwb3J0IGJvdGggQU5TSSBhbmQgVU5JQ09ERQoJICBub3RpZnkgZm9ybWF0cy4KCS0gRml4IHNvbWUgZHJhd2luZyBpc3N1ZXMgd2l0aCBDT01CT0VYX0RyYXdJdGVtLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4ZWQgdGVzdCBzbyAweGZmZmZmZmZmIGlzIHByb3Blcmx5IHJlY29nbml6ZWQuCgoyMDAxLTA2LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZWRlZmF1bHQucmVnOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIFJlZ2lzdGVyZWRPd25lciBhbmQgUmVnaXN0ZXJlZE9yZ2FuaXphdGlvbi4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0BzdGFydC5jb20uYXU+CglBZGRlZCBzb21lIGRlZmluZXMgZm9yIHByb2Nlc3Mgc2VjdXJpdHkgdG9rZW5zLgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBtaXNjL3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTcGVsbGluZyBmaXhlcy4KCgkqIG1pc2MvY3B1LmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUdldFN5c3RlbUluZm8oKSBQZW50aXVtIDQgc3VwcG9ydC4KCgkqIHNlcnZlci9maWxlLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAc3RhcnQuY29tLmF1PgoJUmVtb3ZlIHRydW5jYXRlIGRlYnVnIG1lc3NhZ2UgcHJpbnRlZCBvbiBzdWNjZXNzZnVsIHRydW5jYXRlcy4KCgkqIGluY2x1ZGUvZGRlLmgsIGluY2x1ZGUvZGRlbWwuaCwgZGxscy91c2VyL2RkZS9jbGllbnQuYywKCSAgZGxscy91c2VyL2RkZS9kZGVfcHJpdmF0ZS5oLCBkbGxzL3VzZXIvZGRlL2RkZW1sMTYuYywKCSAgZGxscy91c2VyL2RkZS9taXNjLmMsIGRsbHMvdXNlci9kZGUvc2VydmVyLmMsCgkgIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2RkZW1sLmMsIGRsbHMvdXNlci9kZGVtbDE2LmgsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJTWVyZ2UgZnJvbSBDb3JlbCB0cmVlLiBDb250cmlidXRvcnMgYXJlOgoJLSBDb3JlbCAoU2VhbiBMYW5nbGV5LCBNaWNoYWVsIEFiZC1FbC1NYWxlaywgUmljayBNdXR6a2UsIEJpbGwgWGluZykKCS0gTWFjYWRhbWlhbiBvbiBiZWhhbGYgb2YgQ29yZWwgKExvdWlzLVBoaWxpcHBlIEdhZ25vbiwgSmVhbi1DbGF1ZGUgQmF0aXN0YSkKCUFsc28gYWRkZWQgYSBmZXcgYml0czoKCS0gQ29tcGxldGUgd2luZG93IG1vZGVsIGZvciBzZXZlcmFsIGluc3RhbmNlcyBhbmQgY29udmVyc2F0aW9ucy4KCS0gU3VwcG9ydCBmb3IgYXN5bmNocm9ub3VzIHRyYW5zYWN0aW9ucy4KCS0gRml4ZWQgc29tZSBjb2RlIChXTV9EREVfUkVRVUVTVCwgV01fRERFX0FEVklTRSwgV01fRERFX1JFUVVFU1QpIGhhbmRsaW5nLgoJLSBTdXBwb3J0IGZvciB3aWxkIGNvbm5lY3Rpb25zLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgZGxscy94MTFkcnYvd2lucG9zLmM6CglEb24ndCByZWx5IG9uIFggdG8gZXhwb3NlIHdpbmRvd3MgY292ZXJlZCBieSBhIHNpYmxpbmcsIGRvIGl0CgltYW51YWxseS4KCjIwMDEtMDYtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3VzZXIuaCwgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvaW5wdXQuYywKCSAgd2luZG93cy94MTFkcnYvbW91c2UuYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy91c2VyL2Rpc3BsYXkuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTWFrZSBHZXRDdXJzb3JQb3MgY2FsbCBYUXVlcnlQb2ludGVyLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL3RocmVhZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglFeHRlbmRlZCBfX3dpbmVfZW50ZXJfdm04NiB0byBoYW5kbGUgcGVuZGluZyBpbnRlcnJ1cHRzLgoKMjAwMS0wNi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS93aW5wb3MuaCwgd2luZG93cy9kZWZ3bmQuYywKCSAgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLAoJICB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUF2b2lkIHJldHVybmluZyBhbiB1bmxvY2tlZCB3aW5kb3cgcG9pbnRlciBmcm9tIFdJTlBPU19XaW5kb3dGcm9tUG9pbnQuCglSZW1vdmVkIGEgZmV3IG5vIGxvbmdlciB1c2VkIHJvdXRpbmVzLgoKCSogbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxMS5jLCBtc2Rvcy9pbnQxMi5jLAoJICBtc2Rvcy9pbnQxMy5jLCBtc2Rvcy9pbnQxNS5jLCBtc2Rvcy9pbnQxYS5jLCBtc2Rvcy9pbnQyMC5jLAoJICBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBtc2Rvcy9pbnQyYS5jLCBtc2Rvcy9pbnQyZi5jLAoJICBtc2Rvcy9pbnQzZC5jLCBtc2Rvcy9pbnQ0MS5jLCBtc2Rvcy9pbnQ0Yi5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmMsCgkgIG1zZG9zL3Z4ZC5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9yZWdpb24uYywKCSAgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsCgkgIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsCgkgIGZpbGVzL2ZpbGUuYywgZmlsZXMvcHJvZmlsZS5jLCBsb2FkZXIvbW9kdWxlLmMsCgkgIG1lbW9yeS9jb2RlcGFnZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLAoJICBtaXNjL29wdGlvbnMuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyX21haW4uYywKCSAgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsCgkgIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywgZGxscy9zaGRvY3Z3L3NoZG9jdndfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsCgkgIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9zaGx3YXBpL3VybC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywKCSAgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250LmMsCgkgIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywKCSAgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLAoJICBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBkbGxzL250ZGxsL3N0cmluZy5jLAoJICBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBjb250cm9scy9tZW51LmMsCgkgIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsCgkgIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG9yZGluYWwgZml4ZXMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIHdpbmRvd3Mvd2luLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgaW5jbHVkZS9zZXJ2ZXIuaCwKCSAgaW5jbHVkZS93aW4uaCwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJTW92ZWQgcXVldWUgcGFpbnQgY291bnQgdG8gdGhlIHNlcnZlci4gUmVtb3ZlZCBhIGZldyBubyBsb25nZXIgdXNlZAoJcm91dGluZXMuCgoJKiBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywKCSAgZGxscy91c2VyL3VzZXIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9maXh1cCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9zZXR1cHguYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2lubW0uYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNldmVyYWwgYnVnIGZpeGVzIGFuZCBhZGRpdGlvbnMuCgoJKiBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CgktIEZpeCB1bmluaXRpYWxpc2VkIHZhcmlhYmxlIHByb2JsZW0gaW4gRElSIGNvbW1hbmQuCgktIENvcnJlY3Qgc29tZSBjb21tZW50cy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJQ2xpcCBwYXJlbnQgY2xpZW50IGFyZWEgd2hlbiB1c2luZyB0aGUgZHJhd2FibGUgZnJvbSBhIGhpZ2hlciBsZXZlbAoJcGFyZW50LgoKCSogZGxscy94MTFkcnYvc2Nyb2xsLmM6IEZpeGVkIHJlZ2lvbiBsZWFrLgoKCSogZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmM6CglTdWJ0cmFjdCBEQyBvcmlnaW4gZnJvbSBncmFwaGljcyBleHBvc3VyZSBldmVudCBjb29yZGluYXRlcy4KCjIwMDEtMDYtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsCgkgIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywKCSAgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi93aW5kb3cuYywgaW5jbHVkZS9xdWV1ZS5oLAoJICBpbmNsdWRlL3NlcnZlci5oOgoJTW92ZWQgaGFyZHdhcmUgbWVzc2FnZSBxdWV1ZSBoYW5kbGluZyB0byB0aGUgc2VydmVyLgoKCSogc2VydmVyL3JlcXVlc3QuYzoKCUlnbm9yZSBFQUdBSU4gZXJyb3JzIGluIHJlYWRfcmVxdWVzdC4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsCgkgIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYywgZGxscy93aW4zMnMvd2luMzJzMTYuYywKCSAgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmluZXQvZnRwLmMsCgkgIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLAoJICBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbWNpLmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9zb3VuZDE2LmMsIGRsbHMvd2lubW0vdGltZS5jLAoJICBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsCgkgIGRsbHMvc2hkb2N2dy9zaGRvY3Z3X21haW4uYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLAoJICBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9jb250cm9sLmMsCgkgIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLAoJICBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvdHR5ZHJ2L3VzZXIuYywKCSAgZGxscy91cmxtb24vdW1vbi5jLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsCgkgIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsCgkgIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2JpbmRjdHguYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlMzIvb2xlMm5scy5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLAoJICBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL2hhc2guYywKCSAgZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsCgkgIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywKCSAgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jLAoJICBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLAoJICBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWFpbi5jLAoJICBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsCgkgIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGh1bmsuYywKCSAgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbXByL2F1dGguYywKCSAgZGxscy9tcHIvbXVsdGluZXQuYywgZGxscy9tcHIvbnBzLmMsIGRsbHMvbXByL3B3Y2FjaGUuYywKCSAgZGxscy9tcHIvd25ldC5jLCBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZGxscy9tc3ZjcnQvbWJjcy5jLAoJICBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9maWxlLmMsCgkgIGRsbHMvbnRkbGwvbnQuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gb3JkaW5hbCBmaXhlcy4KCgkqIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZhaWxzIG1hcHBlciBvcGVuaW5nIHdoZW4gbm8gbWlkaSBvdXQgZGV2aWNlcyBhcmUgcHJlc2VudC4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWdzIGluIG91dHB1dCBmdW5jdGlvbnMgKGFzY2VuZCwgY3JlYXRlQ2h1bmspLgoJQ2xlYW5lZCB1cCB0cmFjZSBtZXNzYWdlcy4KCUZpeGVkIHNvbWUgbW1pb09wZW4gZmlsZSBuYW1lIHBhcnNpbmcuCgoJKiBpbmNsdWRlL3VybG1vbi5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglCU0NGIGVudW0gZGVmaW5lcyBmbGFncywgbm90IGFuIGVudW1lcmF0aW9uLgoKCSogbXNkb3MvdmdhLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hZGUgRE9TIFZHQSBkaXNwbGF5IGFnYWluIHdpdGggbGFzdCBtb250aHMgRERSQVcgdXBkYXRlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBTeXN0ZW0gZm9udCB0byB0aGUgc2V0IG9mIGRlZmF1bHQgc2FucyBzZXJpZiBmb250cy4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJRml4ZWQgb25lIG1vcmUgYnVnIGluIGNsaXBfY2hpbGRyZW4uCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsCgkgIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCwgY2xlYW5lZCB1cCBhbmQvb3IgZG9jdW1lbnRhdGVkIF97YmVnaW4sZW5kfXRocmVhZHssZXh9LgoJLSBfbGZpbmQgYW5kIF9sdG93IGFyZSBpbXBsZW1lbnRlZCAobm90IHN0dWJzKS4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIGltcGxlbWVudGF0aW9uIG9mIF91bHRvdyBzaW5jZSBpdCBpcyBmb3J3YXJkZWQgdG8gTlRETEwgaW4gdGhlCgkuc3BlYyBmaWxlLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgR2V0Q29tbUNvbmZpZyBudW1iZXIgb2YgYXJndW1lbnRzLgoKCSogTWFrZWZpbGUuaW46IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJd2luZSBuZWVkcyB0byBiZSBidWlsdCBiZWZvcmUgd2luZWRiZy4KCgkqIGlmMTYzMi9yZWxheS5jLCBkbGxzL2F2aWZpbDMyL2FwaS5jLAoJICBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsCgkgIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC90aW1lLmMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsCgkgIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LAoJICB0b29scy93aW5hcGlfY2hlY2svcHJlcHJvY2Vzc29yLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYXZpZmlsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3czMnNrcm5sLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dvdzMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzb2NrMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2RvY3VtZW50YXRpb24ucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFNsaWdodGx5IGJldHRlciBoYW5kbGluZyBvZiBleHRlcm5hbC9pbnRlcm5hbCBuYW1lcy4KCS0gTWlub3IgYnVnIGZpeGVzLgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogdG9vbHMvd2luYXBpL2NvbmZpZy5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTZXZlcmFsIGJ1ZyBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywKCSAgZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLAoJICBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLAoJICBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLAoJICBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmMsCgkgIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywKCSAgZGxscy9jb21tZGxnL2dlbmVyaWMuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gb3JkaW5hbCBmaXhlcy4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLAoJICB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIFBST0ZJTEVfIGZ1bmN0aW9ucyBieSBSZWdRdWVyeVZhbHVlRXhBIGluIHgxMWRydi4KCgkqIHNlcnZlci9maWxlLmM6IEJpbGwgTWVkbGFuZCA8bWVkYmkwMUBhY2NwYWMuY29tPgoJU2V0RmlsZVBvaW50ZXIgY29ycmVjdGlvbjsgcmV0dXJuIEVSUk9SX05FR0FUSVZFX1NFRUsgKGJyb2tlbiBieSB0aGUKCTY0IGJpdCBmaWxlIGFjY2VzcyBlbmhhbmNlbWVudCkuCgoJKiBjb25maWd1cmUuaW4sIHRvb2xzL2NvbmZpZy5ndWVzcywgdG9vbHMvY29uZmlnLnN1YiwgY29uZmlndXJlOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzdXBwb3J0IGZvciBhdXRvY29uZiAyLjUwLgoKMjAwMS0wNi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbnBvcy5jOgoJY2xpcF9jaGlsZHJlbjogZG9uJ3QgY3Jhc2ggaWYgY2hpbGQgaXMgbm90IGluIGxpc3QgKGNhbiBoYXBwZW4gb24KCVdNX05DQ1JFQVRFKS4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCVVzZSBjbG9uZSgpIGlmIEhBVkVfQ0xPTkUgaXMgZGVmaW5lZC4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywKCSAgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQmxvY2sgU0lHSU5UIGFuZCBTSUdBTFJNIGluIHNpZ25hbCBoYW5kbGVycy4KCjIwMDEtMDYtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJQWRkZWQgZGlyZWN0IHN5c3RlbSBjYWxsIGZvciB1bmFsaWduZWQgbW1hcCBzdXBwb3J0IG9uIExpbnV4LgoJU3VwcG9ydCA2NC1iaXQgZmlsZSBvZmZzZXRzIGluIE1hcFZpZXdPZkZpbGVFeC4KCgkqIG9sZS9vbGUybmxzLmMsIG1pc2MvbHN0ci5jLCBtaXNjL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvbHN0ci5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmUgSXNDaGFyQWxwaGFBIGFuZCBJc0NoYXJBbHBoYU51bWVyaWNBIHRvIHVzZXIzMi4KCUJldHRlciBpbXBsZW1lbnQgc29tZSBvZiB1c2VyMzIgKkNoYXIqIGZ1bmN0aW9ucyByZWdhcmRpbmcgbG9jYWxlLgoJUmVtb3ZlIGtlcm5lbDMyIGRlcGVuZGVuY3kgb24gdXNlcjMyLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglTdHViIGZvciBJbnRlcm5ldEdldENvb2tpZUEuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywKCSAgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXBsYWNlIG1vcmUgUFJPRklMRV8gZnVuY3Rpb25zIGJ5IFJlZ1F1ZXJ5VmFsdWVFeEEuCgoJKiBvYmplY3RzL2RpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNdWx0aXBsZSAqcHRyKysgY29uc3RydWN0cyBpbiBvbmUgZXhwcmVzc2lvbiBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvdXIsCgltb3ZlZCB0aGVtIG91dCBvZiB0aGUgZXhwcmVzc2lvbi4KCjIwMDEtMDYtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9kZXZpY2UuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvbmV3Zm5zLmMsCgkgIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9waXBlLmMsCgkgIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLAoJICBzY2hlZHVsZXIvdGhyZWFkLmMsIHNjaGVkdWxlci90aW1lci5jLCB3aW4zMi9jb25zb2xlLmMsCgkgIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1lbW9yeS9hdG9tLmMsCgkgIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywKCSAgbWVtb3J5L2xvY2FsLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBtZW1vcnkvc2VsZWN0b3IuYywKCSAgbWVtb3J5L3N0cmluZy5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NwdS5jLCBtaXNjL2xzdHIuYywKCSAgbWlzYy9tYWluLmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy92ZXJzaW9uLmMsIG9sZS9vbGUybmxzLmMsCgkgIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywKCSAgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywKCSAgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsIGZpbGVzL3RhcGUuYywKCSAgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Jlc291cmNlLmMsCgkgIGxvYWRlci90YXNrLmMsIGRsbHMvZ2RpL3dpbmcuYywgZGxscy9rZXJuZWwvY29tbS5jLAoJICBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsCgkgIGRsbHMva2VybmVsL3N0cmluZy5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywKCSAgZGxscy9rZXJuZWwvdXR0aHVuay5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG9yZGluYWwgZml4ZXMgKHVzaW5nIHdpbmFwaV9maXh1cCkuCgoJKiBkbGxzL3gxMWRydi93aW5wb3MuYzoKCVVzZSB0aGUgdG9wbW9zdCBwYXJlbnQgdGhhdCBpc24ndCBjbGlwcGluZyBjaGlsZHJlbiBhcyBkcmF3YWJsZSwKCXRvIG1ha2Ugc3VyZSBwYXJlbnQgc2libGluZ3MgYXJlIG5vdCBjbGlwcGVkLgoKCSogZGxscy9jb21tZGxnL2ZvbnRkbGcuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU1ha2UgQ2hvb3NlRm9udFcgdXNlIENob29zZUZvbnRBLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCUZvcmNlIGludmFsaWRhdGluZyBvZiBzaWJsaW5ncyBjaGlsZHJlbiBvbiBleHBvc2UgZXZlbnQuCgoJKiB0b29scy93aW5hcGkvY29uZmlnLnBtLCB0b29scy93aW5hcGkvb3B0aW9ucy5wbSwKCSAgdG9vbHMvd2luYXBpL291dHB1dC5wbSwgdG9vbHMvd2luYXBpL3NldHVwLnBtLAoJICB0b29scy93aW5hcGkvdXRpbC5wbSwgdG9vbHMvd2luYXBpL3dpbmFwaV9leHRyYWN0LAoJICB0b29scy93aW5hcGkvd2luYXBpX2ZpeHVwOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE5ldyBjb21tb24gY29kZSBmb3IgdGhlIHdpbmFwaSB0b29scy4KCS0gTmV3IHRvb2wgZm9yIGV4dHJhY3Rpbmcgc291cmNlIGNvZGUgaW5mb3JtYXRpb24uCgktIE5ldyB0b29sIGZvciBhdXRvbWF0aWNhbGx5IG1vZGlmeWluZyAoZml4aW5nKSB0aGUgc291cmNlIGNvZGUuCgoJKiBkbGxzL2dkaS9wcmludGRydi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgUFJPRklMRV9HZXRXaW5lSW5pU3RyaW5nIGJ5IFJlZ1F1ZXJ5VmFsdWVFeEEuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBpbmNsdWRlL2Rzb3VuZC5oLCBpbmNsdWRlL3dpbmVycm9yLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGRlZmluaXRpb25zIGZvciBJS3NQcm9wZXJ0eVNldCwgc21hbGwgc3R1YiBpbXBsZW1lbnRhdGlvbiBmb3IKCUlEaXJlY3RTb3VuZDNEQnVmZmVyLiBGaXhlZCBvbmUgcG9pbnRlciByZWZlcmVuY2UuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJX3R6c2V0IGp1c3QgZm9yd2FyZHMgdG8gbGliYyB0enNldCgpLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglQcm90ZWN0IGFnYWluc3QgYSBkcml2ZXIgbWlzY29uZmlndXJhdGlvbi4KCjIwMDEtMDYtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3gxMWRydi93aW5kb3cuYzoKCUZpeGVkIGhhbmRsaW5nIG9mIHplcm8tc2l6ZWQgY2xpZW50IHdpbmRvdy4KCUNyZWF0ZSB0aGUgWCB3aW5kb3dzIGJlZm9yZSBzZW5kaW5nIFdNX05DQ1JFQVRFLgoKMjAwMS0wNi0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglBZGRlZCBjb3VudGVyIGZvciBvcGVyYXRpb25zIGdlbmVyYXRpbmcgZ3JhcGhpY3MgZXhwb3N1cmVzIHRvIHRoZSBEQwoJc3RydWN0LCB0byBhdm9pZCB3YWl0aW5nIGZvciBleHBvc2UgZXZlbnRzIHdoZW4gbm9uZSB3ZXJlIGdlbmVyYXRlZC4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsCgkgIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsCgkgIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsCgkgIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLAoJICBncmFwaGljcy9kcml2ZXIuYywgbWlzYy9jcHUuYywgZGxscy9nZGkvcHJpbnRkcnYuYywKCSAgZGxscy9nbHUzMi9nbHUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywKCSAgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbS9zdHJlYW0uYywKCSAgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsIGRsbHMvZGRyYXcvbWFpbi5jLAoJICBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC90aHVuay5jLAoJICBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglEb2N1bWVudGF0aW9uIG9yZGluYWwgZml4ZXMgKHVzaW5nIHdpbmFwaV9maXh1cCkuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jOiBXYXJuaW5nIGZpeC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2F2aWZpbGUuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYXZpZmlsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZ2x1MzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbWlkaW1hcC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXJsbW9uLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3duYXNwaTMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvd2lubW0vbWNpLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsaWFzIGFuZCBEZXZpY2UgVHlwZSBhcmUgY2FzZSBpbnNlbnNpdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIGNvcnJlY3QgcmViYXIgd2luZG93IGJvcmRlcnMgYW5kIGhhbmRsaW5nIG9mIFJCU19CT1JERVJTLCBub3cKCSAgbWF0Y2hlcyBuYXRpdmUuCgktIG1ham9yIHJlZGVzaWduIG9mIGJhbmQgbGF5b3V0LCBub3cgY29tZXMgYSBsb3QgY2xvc2VyIHRvIG5hdGl2ZSBmb3IKCSAgdGhlIHRlc3QgcHJvZ3JhbXMuCgktIHN1cHBvcnQgUkJTX1ZBUkhFSUdIVCBmb3IgYm90aCBvbiBhbmQgb2ZmLgoJLSBiZXR0ZXIgZGVidWcgaW5mbywgYW5kIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50CgoyMDAxLTA2LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglCb2IgR29vZHdpbiA8Z29vZGllMUBwYWNiZWxsLm5ldD4KCU1hc2sgb3V0IGdhcmJhZ2UgaW4gdGhlIHVwcGVyIGhhbGYgb2Ygc3RhY2sgcG9pbnRlci4KCgkqIGRsbHMvbnRkbGwvZGVidWd0b29scy5jLCBkbGxzL3VzZXIvdGV4dC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJTGltaXQgb3V0cHV0IGZvciBjZXJ0YWluIHRleHQgZnVuY3Rpb25zLgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgY2hlY2sgZm9yIGJyb2tlbiBtbWFwNjQuCgoJKiBkbGxzL21ha2VfZGxsczoKCUFkZGVkIHNjcmlwdCB0byB1cGRhdGUgZGxscyBkZXBlbmRlbmNpZXMuCgoJKiBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZ2x1MzIvLmN2c2lnbm9yZSwKCSAgZGxscy9nbHUzMi9NYWtlZmlsZS5pbiwgZGxscy9nbHUzMi9nbHUuYywgZGxscy9nbHUzMi9nbHUzMi5zcGVjLAoJICB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBnbHUzMi5kbGwgYXMgbGliR0xVLnNvIGZvcndhcmRlci4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3MvZGNlLmMsIGRsbHMveDExZHJ2L3dpbmRvdy5jOgoJUmVtb3ZlZCBXSU5fTkFUSVZFIGZsYWcuCgoJKiBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVTEFSR0VfSU5URUdFUiBtYXkgaGF2ZSBhIGR1bW15IHN0cnVjdCBuYW1lLgoKCSogZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJVXBncmFkZSBPcGVuR0wgdGh1bmtzIHdpdGggbGF0ZXN0IGluZm9ybWF0aW9ucyBmcm9tIE9wZW5HTCBzcGVjIGZpbGUuCgoyMDAxLTA2LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3Rhc2suYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kaWFsb2cuYywKCSAgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3VzZXIuYzoKCVJlbW92ZWQgdW5uZWVkZWQgaW5jbHVzaW9uIG9mIHF1ZXVlLmguCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB0b29scy93aW5lYnVpbGQvUkVBRE1FLAoJICB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL21haW4uYywKCSAgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglTdXBwb3J0IGZvciBzcGVjaWZ5aW5nIHN0YWNrIHNpemUgb2YgV2luZWxpYiBhcHBzLgoKCSogZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hcGkuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywKCSAgZGxscy9hdmlmaWwzMi9hdmlmaWxlX3ByaXZhdGUuaCwgZGxscy9hdmlmaWwzMi9jb21lbnRyeS5jLAoJICBkbGxzL2F2aWZpbDMyL2lhZmlsZS5jLCBkbGxzL2F2aWZpbDMyL2lhc3RyZWFtLmMsCgkgIGRsbHMvYXZpZmlsMzIvaWdmcmFtZS5jLCBkbGxzL2F2aWZpbDMyL21haW4uYywKCSAgZGxscy9hdmlmaWwzMi9zdHJpbmcuYywgaW5jbHVkZS92ZncuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglJbXBsZW1lbnRlZCBzb21lIHBhcnQgb2YgQVZJRklMMzIuCgoJKiB0b29scy93aW5lY29uZjoKCURvbm4gTWlsbGVyIDxkbW1pbGxlckBjdnpvb20ubmV0PgoJQ2FzZSBpbnNlbnNpdGl2ZSBzZWFyY2ggZm9yIHdpbi5pbmkuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCB3aW4zMi9uZXdmbnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmb3IgR2V0UXVldWVkQ29tcGxldGlvblN0YXR1cy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAbmVyaW0ubmV0PgoJRml4ZXMgdG8gRnJlbmNoIHRyYW5zbGF0aW9uIG9mIGNvbW1vbiBkaWFsb2cgbWVzc2FnZXMuCgoyMDAxLTA2LTA2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvdWl0b29scy5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2VkIHRoZSBvdXRlciBjb2xvciBvZiBhIHB1c2ggYnV0dG9uIGZyYW1lIGZyb20gZ3JheSB0byB3aGl0ZSwKCW1hdGNoaW5nIHRoZSBXaW5kb3dzIGxvb2s7IG1vZGlmaWVkIHRoZSBwYWludCByb3V0aW5lIGZvciB0aGUKCWNsb3NlIGJ1dHRvbiBvZiBhIHRvb2wgd2luZG93IHRvIGltcHJvdmUgc2NhbGFiaWxpdHkuCgoJKiBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvd25kLmMsCgkgIGRsbHMveDExZHJ2L3dpbmRvdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgaW5jbHVkZS91c2VyLmgsCgkgIHdpbmRvd3Mvd2luLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBuZXJpbS5uZXQ+CglVc2UgYSBmbGFnIHRvIHRlc3QgaWYgY3JlYXRlIHN0cnVjdHVyZSBpcyB1bmljb2RlLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCVJlcGxhY2UgIkxpbnV4IGRsbCIgd2l0aCAiR05VIHN0eWxlIEVMRiBkbGwiLgoJUmVtb3ZlIHN1cHBvcnQgZm9yIE5ldEJTRCBhLm91dCBkbGwuCgoJKiBCVUdTLCBpbmNsdWRlL3dpbm50LmgsIG9iamVjdHMvcmVnaW9uLmMsCgkgIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgd2luMzIvZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVJlbW92ZSB1bm5lZWRlZCBXSU5BUEkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVVzZSBhdXRvY29uZiBjaGVja3MgdG8gY2hlY2sgZm9yIHZhcmlvdXMgRnJlZVR5cGUgaGVhZGVycy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3ByZXByb2MuYywgdG9vbHMvd3JjL3BhcnNlci5oLAoJICB0b29scy93cmMvcGFyc2VyLmw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVdyYyBubyBsb25nZXIgbmVlZHMgdG8gcGFyc2UgQyBjb2RlLiBSZW1vdmUgYy1qdW5rIGhhbmRsaW5nIGNvZGUuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBlbm91Z2ggYnVmZmVyIHNwYWNlIGluIFBST0ZJTEVfR2V0U2VjdGlvbigpLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgcGFnZSBza2lwcGluZyBvbiBQU05fU0VUQUNUSVZFIC0xIHJldHVybi4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywKCSAgbG9hZGVyL3BlX3Jlc291cmNlLmM6CglTZXQgbG93LW9yZGVyIGJpdCBvZiBtb2R1bGUgaGFuZGxlIGZvciBMT0FEX0xJQlJBUllfQVNfREFUQUZJTEUuCglDbGVhbmVkIHVwIGEgZmV3IEhNT0RVTEUvSE1PRFVMRTE2IG1pc21hdGNoZXMuCgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2suYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2tPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0SXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllci5jLCBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2EuYywgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Db25kZW5zZWQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkX0JvbGRPYmwuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9PYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvTmV3Q2VudHVyeVNjaGxia19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX1JvbWFuLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Sb21hbi5jLCBkbGxzL3dpbmVwcy9kYXRhL1N5bWJvbC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Cb2xkSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfSXRhbGljLmMsIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmQ2hhbmNlcnlfTWVkaXVtSXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvWmFwZkRpbmdiYXRzLmMsIGRsbHMvd2luZXBzL2RhdGEvYWdsLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglVcGRhdGVkIGJ1aWx0LWluIG1ldHJpY3MgZm9yIGNvcmUgUG9zdFNjcmlwdCBmb250cy4KCgkqIGluY2x1ZGUvZ2RpLmg6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglGaXhlZCB0eXBvIGluIElOVEVSTkFMX1lXU1RPRFMuCgoJKiBkbGxzL3dpbmVwcy90cnVldHlwZS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJUmVtb3ZlZCBpbmNvcnJlY3Qgc3RyaW5nIGxlbmd0aCBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3Mvd2lucG9zLmM6CglCb2JieSBCaW5naGFtIDx1aG1tbW1AYW1lcml0ZWNoLm5ldD4KCVN0dWIgaW1wbGVtZW50YXRpb24gb2YgQW5pbWF0ZVdpbmRvdygpLgoKCSogaW5jbHVkZS93bmFzcGkzMi5oLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgQVNQSSBmaXhlcywgU0NfR0VUX0RJU0tfSU5GTyBzdHViYmVkLCBidXQgcmV0dXJuaW5nIHN1Y2VzcywgQVNQSQoJYnVmZmVyIGFsbG9jYXRpb24vZnJlZSBpbXBsZW1lbnRlZC4KCjIwMDEtMDYtMDQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLAoJICB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLAoJICB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3duZC5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi9kZXNrdG9wLmMsIGRsbHMveDExZHJ2L3Njcm9sbC5jLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLAoJICBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbi5oLAoJICBpbmNsdWRlL3dpbnBvcy5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2RjZS5jLAoJICB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQ3JlYXRlIGFuIFggd2luZG93IGZvciBldmVyeSB3aW5kb3csIGluY2x1ZGluZyBjaGlsZHJlbi4KCUZpeGVkIG5vbi1jbGllbnQgcmVjdGFuZ2xlIGNhbGN1bGF0aW9ucyBpbiBtYW5hZ2VkIG1vZGUuCglBZGRlZCBzdXBwb3J0IGZvciBpY29uIHdpbmRvdyBpbiBtYW5hZ2VkIG1vZGUuCgoJKiB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy9wcHkueToKCU1hY2llayBLYWxpc3pld3NraSA8a2Vub25AZ28yLnBsPgoJQWRkZWQgc3VwcG9ydCBmb3IgUkNJTkNMVURFIGRpcmVjdGl2ZS4gTm93IHdyYyBpZ25vcmVzIGV2ZXJ5dGhpbmcKCWV4Y2VwdCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyBmcm9tIGluY2x1ZGVkICouaCAqLmMgZmlsZXMuCgoJKiB0b29scy93cmMvcHB5Lnk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeCB0aGUgY29udmVyc2lvbiBvZiBNUyBzdHlsZSAnI2xpbmUnIGRpcmVjdGl2ZXMgdG8gZ2NjIHN0eWxlLgoKCSogcHJvZ3JhbXMvd2NtZC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvUkVBRE1FLAoJICBwcm9ncmFtcy93Y21kL2J1aWx0aW5zLmMsIHByb2dyYW1zL3djbWQvZGlyZWN0b3J5LmMsCgkgIHByb2dyYW1zL3djbWQvd2NtZC5oLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCS0gUmVwb3J0IGZpbGUgYW5kIGRpcmVjdG9yeSBzaXplcyB1c2luZyA2NC1iaXQgYXJpdGhtZXRpYyAobGlrZSBOVCkuCgktIEhhbmRsZSBwaXBlcyBpbiBjb21tYW5kcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglJTlNUQUxMX0xJQlJBUlkgZG9lcyBub3QgZXhpc3QsIHVzZSBJTlNUQUxMX1BST0dSQU0uIEZpeCBoYW5kbGluZyBvZgoJdGhlIElOU1RBTEwqIHZhcmlhYmxlcy4KCVdpbmVsaWIgYXBwbGljYXRpb25zIGRvbid0IG5lZWQgdG8gbGluayB3aXRoIFgsIGkzODYsIG9zc2F1ZGlvLCB4cGc0LAoJbW1hcCwgdXRpbCwgZGwgb3IgY3Vyc2VzLiBPbmx5IHdpbmUgZG9lcyAobm9ybWFsbHkpLgoJUmVtb3ZlIFlBQ0MgJiBMRVggdmFyaWFibGVzIChNYWtlLnJ1bGVzLmluKS4KCVdpbmVtYWtlcidzIG1ha2VmaWxlcyBkb24ndCB1c2UgbGRjb25maWcuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZSBvcHRpbWl6YXRpb24gaW4gTkNfSGFuZGxlTkNBY3RpdmF0ZS4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRGlzcGxheSBleHRyYSBkYXRhIGZvciBXTV9OT1RJRlkgdGhhdCB1c2UgTk1DT01CT0VYe0F8V30uCgoyMDAxLTA1LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvY29tYm8uYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJRGlzYWJsZSB0aGUgZWRpdCBib3ggd2hlbiBjcmVhdGVkIHdpdGggV1NfRElTQUJMRUQuCgoJKiBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBpbmNsdWRlL3VybG1vbi5oOgoJTWFsdGUgU3Rhcm9zdGlrIDxNYWx0ZS5TdGFyb3N0aWtAdC1vbmxpbmUuZGU+CglJbXBsZW1lbnRlZCBzb21lIHZlcnkgYmFzaWMgZnVuY3Rpb25hbGl0eS4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwKCSAgZGxscy91c2VyL01ha2VmaWxlLmluOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUxpc3QgMTYtYml0IHJlc291cmNlcyBzZXBhcmF0ZWx5IGFzIFJDX1NSQ1MxNi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUlmIHlvdSBoYXZlIGZyZWV0eXBlMSBhbmQgZnJlZXR5cGUyIGNvZXhpc3RpbmcsIGZyZWV0eXBlLWNvbmZpZyBzaG91bGQKCWJlIGZyZWV0eXBlMi1jb25maWcuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUZpeGVkIGZvbnQgbWV0cmljIHJvdW5kaW5nIGVycm9yLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRPT0xCQVJfSW5zZXJ0QnV0dG9uQTogSWYgaVN0cmluZz09LTEgdGhlbiBkb24ndCB1c2UgaXQgYXMgYSBwb2ludGVyLgoKCSogZGxscy9tc3ZjcnQvZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglmY2xvc2Ugc2hvdWxkIHJldHVybiBFT0YgKC0xKSBpZiBhbiBlcnJvciBjb25kaXRpb24gZXhpc3RzLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDYWxsIEZyZWVFbnZpcm9ubWVudFN0cmluZ3Mgd2hlbiBtc3ZjcnQgaXMgdW5sb2FkZWQuCgoJKiBkbGxzL21zdmNydC9jcHAuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGluY2x1ZGUvbXN2Y3J0L2VoLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbXN2Y3J0L2VoLmguCglJbXBsZW1lbnRlZCB1bmV4cGVjdGVkLCB0ZXJtaW5hdGUgYW5kIHNldF91bmV4cGVjdGVkL3Rlcm1pbmF0ZS4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBpbmNsdWRlL29sZWF1dG8uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIFZhclh4eEZyb21DeSBjb252ZXJzaW9ucy4KCVJlbW92ZSAoY29tbWVudGVkLW91dCkgcmVmZXJlbmNlcyB0byBpbmV4aXN0ZW50IFZhclh4eEZyb20zMiBmdW5jdGlvbnMuCglSZW1vdmUgb2Jzb2xldGUgJzMyJyBzdWZmaXhlcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJSmFzb24gTWNNdWxsYW4gPGptY211bGxhbkBsaW51eGNhcmUuY29tPgoJTW9yZSBhY2N1cmF0ZSBzdHViIG9mIEREUkFXOkdldEZvdXJDQ0NvZGVzLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglCb2JieSBCaW5naGFtIDx1aG1tbW1AYW1lcml0ZWNoLm5ldD4KCUZpeGVkIHNjcm9sbGJhcnMgcmV0dXJuIHZhbHVlIHRvIHRoZSBTQk1fU0VUUkFOR0UgYW5kCglTQk1fU0VUUkFOR0VSRURSQVcgbWVzc2FnZXMuCgoyMDAxLTA1LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9OZXdDZW50dXJ5U2NobGJrX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL05ld0NlbnR1cnlTY2hsYmtfUm9tYW4uYywKCSAgZGxscy93aW5lcHMvZGF0YS9QYWxhdGlub19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvUGFsYXRpbm9fQm9sZEl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX0l0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1BhbGF0aW5vX1JvbWFuLmMsIGRsbHMvd2luZXBzL2RhdGEvU3ltYm9sLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvVGltZXNfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1RpbWVzX0JvbGRJdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9UaW1lc19JdGFsaWMuYywgZGxscy93aW5lcHMvZGF0YS9UaW1lc19Sb21hbi5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL1phcGZDaGFuY2VyeV9NZWRpdW1JdGFsaWMuYywKCSAgZGxscy93aW5lcHMvZGF0YS9aYXBmRGluZ2JhdHMuYywgZGxscy93aW5lcHMvZGF0YS9hZ2wuYywKCSAgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9hZm0yYy5jLAoJICBkbGxzL3dpbmVwcy9hZ2wuYywgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2suYywKCSAgZGxscy93aW5lcHMvZGF0YS9BdmFudEdhcmRlX0Jvb2tPYmxpcXVlLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQXZhbnRHYXJkZV9EZW1pT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fRGVtaUl0YWxpYy5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0Jvb2ttYW5fTGlnaHQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Cb29rbWFuX0xpZ2h0SXRhbGljLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvQ291cmllci5jLCBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0NvdXJpZXJfQm9sZE9ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9Db3VyaWVyX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2EuYywgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQm9sZC5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9Db25kZW5zZWQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkX0JvbGQuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkX0JvbGRPYmwuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfQ29uZGVuc2VkX09ibGlxdWUuYywKCSAgZGxscy93aW5lcHMvZGF0YS9IZWx2ZXRpY2FfTmFycm93LmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkLmMsCgkgIGRsbHMvd2luZXBzL2RhdGEvSGVsdmV0aWNhX05hcnJvd19Cb2xkT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9OYXJyb3dfT2JsaXF1ZS5jLAoJICBkbGxzL3dpbmVwcy9kYXRhL0hlbHZldGljYV9PYmxpcXVlLmMsIGRsbHMvd2luZXBzL21rYWdsLmMsCgkgIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJQnVpbGQgQUZNIGRhdGEgZm9yIGNvcmUgUG9zdFNjcmlwdCBmb250cyBpbnRvIFdJTkVQUy4KCgkqIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwKCSAgbGlicmFyeS9wb3J0LmMsIHNlcnZlci9maWxlLmMsIHdpbjMyL2ZpbGUuYywgY29uZmlndXJlLAoJICBjb25maWd1cmUuaW4sIGZpbGVzL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRHJvcCBhbnkgZmlsZTY0IGZ1bmN0aW9ucywgdHJ5IHRvIHVzZSBzeXN0ZW0gc3VwcGxpZWQgNjQtYml0IG1vZGUgYnkKCXVzaW5nIHByb3BlciBkZWZpbmVzLgoKCSogb2xlL29sZTJubHMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVdoZW4gcmVhZGluZyByZXNvdXJjZXMgaW4gTkxTX0xvYWRTdHJpbmdFeFcgd2Ugc2hvdWxkIG1hcAoJU1VCTEFOR19ORVVUUkFMIHRvIFNVQkxBTkdfREVGQVVMVC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQXR0ZW1wdCB0byB3cml0ZSBmcmFnbWVudHMgYW5kIGNoZWNrIHdoZXRoZXIgd2UgY2FuIG5vdGlmeSB0aGUgY2xpZW50CglhZnRlciBldmVyeSBtZXNzYWdlLgoKCSogZGxscy9zaGx3YXBpL3BhdGguYywgaW5jbHVkZS9zaGx3YXBpLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpcnN0IHRyeSBhdCBpbXBsZW1lbnRpbmcgUGF0aEdldENoYXJUeXBlKCkuCgoJKiB0b29scy93cmMvcHB5Lnk6CglNYWNpZWsgS2FsaXN6ZXdza2kgPGtlbm9uQGdvMi5wbD4KCUFkZGVkIGJldHRlciBHQ0Mtc3R5bGUgI2xpbmUgZGlyZWN0aXZlIGhhbmRsaW5nLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCWNvbmZpZ3VyZS5pbjogUmVtb3ZlIHVubmVjZXNzYXJ5IEFDX1BST0dfUkFOTElCIGNoZWNrCglNYWtlLnJ1bGVzLmluOiBBZGQgbWlzc2luZyBDWFggdmFyaWFibGUKCUNvc21ldGljIGNoYW5nZXMKCgkqIGxpYnJhcnkvTWFrZWZpbGUuaW46CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTGluayBsaWJ3aW5lLnNvIHdpdGggJChMSUJTKS4KCgkqIGRsbHMvd2luZXBzL3RydWV0eXBlLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglVc2UgbWFjcm9zIGZvciBGcmVlVHlwZSBpbmNsdWRlcy4KCjIwMDEtMDUtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kb3NfZnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG9uJ3QganVzdCBhc3N1bWUgZXZlcnl0aGluZyBpcyBhIERvcyBEZXZpY2UsIG9yIG1pcmMgd2lsbCBub3QgZ2V0IGFueQoJRENDIHNlbmRzLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJSW1wbGVtZW50ZWQgRFRNX0dFVC9TRVRSQU5HRS4KCjIwMDEtMDUtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywKCSAgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvc3RyaW5nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIGtlcm5lbDMyIGRlcGVuZGVuY3kgb24gdXNlcjMyIGJ5IGltcGxlbWVudGluZyBmYW1pbHkgb2YgazMyCglmdW5jdGlvbnMgYXMgY2FsbG91dHMgdG8gdXNlcjMyLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgYW4gdW5rbm93biBWeEQgZXJyb3IgY29kZS4KCgkqIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbjoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVVwZGF0ZWQgR2VybWFuIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsCgkgIGRsbHMvd2lubW0vdGltZS5jLCBsb2FkZXIvdGFzay5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBkbGxzL3VzZXIvdXNlci5zcGVjLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUdldCByaWQgb2YgR2V0Q3VycmVudFRpbWUxNigpLgoKCSogaW5jbHVkZS9zbm9vcC5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9wZV9pbWFnZS5jLCByZWxheTMyL3Nub29wLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNYWtlIHNub29wIGNvZGUgdGFrZSBvcmRpbmFsIGJhc2UgaW50byBhY2NvdW50LgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2Lmg6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIEJ1aWxkQ29tbURDQjE2KCkgdXNlcyBpbnQgaW5zdGVhZCBvZiBCT09MCgktIE9wZW5Db21tMTYoKSBzaG91bGQgcmV0dXJuIElFX0JBRElEIGZvciAqYWxsKiBpbnZhbGlkIHN0cmluZ3MKCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywKCSAgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLAoJICBkbGxzL3NobHdhcGkvdXJsLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIGFkZCBzdHVicyBTSExXQVBJXzI5NCwgVXJsQXBwbHlTY2hlbWVXCgktIGNvcnJlY3QgU0hMV0FQSV8xNTEgcGFyYW1ldGVycwoJLSBpbXBsZW1lbnRlZCBTdHJUcmltQQoKCSogZGxscy9zZXR1cGFwaS92aXJ0Y29weS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJVmNwUXVldWVEZWxldGUoKSBkb2VzIG5vdCBoYXZlIGEgTFBFWFBBTkRWVEJMIHBhcmFtZXRlci4KCgkqIHdpbjMyL2RldmljZS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIGFkZCBoYW5kbGVyIGZvciBWQ0QgVnhEICgidmlydHVhbCBjb21tIGRldmljZSIgPykKCS0gU2V0TGFzdEVycm9yKCBFUlJPUl9JTlZBTElEX0ZVTkNUSU9OICk7IGZvciB1bmltcGxlbWVudGVkIGZ1bmN0aW9ucwoJLSBzcGVsbGluZyBmaXhlcwoKCSogZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUFkZGVkIEF2Z0NoYXJXaWR0aCBtZW1iZXIgdG8gZm9udCBtZXRyaWNzLgoKCSogZGxscy93aW5lcHMvYWdsLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglVcGRhdGVkIFBvc3RTY3JpcHQgZ2x5cGggbmFtZSBkYXRhLgoKCSogbWlzYy92ZXJzaW9uLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCU9ubHkgZmFpbCB3aXRoIEVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIgaWYgdGhlIHN0cnVjdHVyZSBzaXplIGlzCglhY3R1YWxseSB0b28gc21hbGwuCgoyMDAxLTA1LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywKCSAgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLAoJICB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIGlzc3Vlcy4KCgkqIGluY2x1ZGUvd2lucG9zLmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJTWFrZSBXSU5fV2luZG93RnJvbVBvaW50IHRha2UgYSBQT0lOVCBpbnN0ZWFkIG9mIGEgUE9JTlQxNi4KCVNtYWxsIGJ1ZyBmaXggaW4gc2NvcGUgd2luZG93IGhhbmRsaW5nLgoJQWx3YXlzIGNoZWNrIGZvciBtZXNzYWdlIHdoZW4gUVNfU0VORE1FU1NBR0UgaXMgc2V0LgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sLCBkb2N1bWVudGF0aW9uL211bHRpbWVkaWEuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYSwgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIG11bHRpbWVkaWEgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZmlsdGVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsCgkgIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywKCSAgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc2FjbS9zdHJlYW0uYywKCSAgZGxscy9tc2FjbS93aW5lYWNtLmg6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1pbWljIG1vcmUgY2xvc2VseSBXaW5kb3dzJyBiZWhhdmlvciAoYSBNU0FDTSBkcml2ZXIgaXMgYWx3YXlzIG9wZW5lZAoJdHdpY2U6IGZpcnN0IHRpbWUgZm9yIGluZm8gZ2F0aGVyaW5nLCBzdWJzZXF1ZW50IG9wZW5pbmdzIGZvcgoJY29udmVyc2lvbnMpLgoJQWRkZWQgZm9ybWF0IHN1Z2dlc3Rpb24gZm9yIFBDTS4KCUNsZWFuZWQgdXAgaW50ZXJuYWwgc3RydWN0dXJlcy4KCgkqIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsCgkgIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmRydi5zcGVjLCB3aW5lZGVmYXVsdC5yZWc6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgbWlkaSBtYXBwZXIgbW9yZSByb2J1c3QuCglBZGRlZCBjaGFubmVsIHRvIGRldmljZS9jaGFubmVsIG1hcHBpbmcuCglSZW1vdmVkIG1pZGlJbiBtYXBwaW5nIChpdCBkb2Vzbid0IGV4aXN0IG9uIFdpbmRvd3MpLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglOb3cgbG9hZGluZyB0aGUgZGVmYXVsdCBzZXR0aW5nIGZvciBsb3cgbGV2ZWwgZHJpdmVycyBmcm9tIHJlZ2lzdHJ5LgoKCSogbWlzYy9jZHJvbS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBtZW1zZXQgcmF0aGVyIHRoYW4gYnplcm8uCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOgoJTWlrZSBCb25kIDxtYm9uZEBjb3gucnIuY29tPgoJRml4ZWQgc3Bhd25scCBhbmQgYWRkZWQgZXhlYyB2YXJpYW50cy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTbWFsbCBjbGVhbiB1cC4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHNvbWUgZGxsIHNlcGFyYXRpb24gaXNzdWVzLgoKCSogZGxscy9tc3ZjcnQvZGF0YS5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglDb3JyZWN0bHkgZ2VuZXJhdGUgdGhlIGVudmlyb25tZW50IGdsb2JhbCB2YXJpYWJsZXMuCgoyMDAxLTA1LTIxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3F1ZXVlLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglUYWtlIG1lc3NhZ2UgZmlsdGVycyBpbnRvIGFjY291bnQgZm9yIFdNX1BBSU5UIHRvby4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2luZm8uYywKCSAgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCB0aGUgbm90aW9uIG9mIGRlbGF5ZWQgYnJlYWtwb2ludCAod2hlbiBhIGZ1bmN0aW9uIGlzIG5vdCBsb2FkZWQKCXlldCwgdGhlIG5hbWUgd2lsbCBiZSB0cmllZCBhZ2FpbiBmb3IgZWFjaCBuZXcgbG9hZGVkIG1vZHVsZSkuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Gci5yYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU29tZSBGcmVuY2ggdHJhbnNsYXRpb25zLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgb3BlbiByZXF1ZXN0cyBpbiBjYXNlIG9mIGVycm9yIChpZiB0aGUgcGh5c2ljYWwgZGV2aWNlIGZhaWxlZCB0bwoJb3BlbiwgdGhlIEFDTSBzdHJlYW0gd2FzIGxlZnQgb3BlbmVkKS4KCUFkZGVkIG1hcHBpbmcgc2VhcmNoIGZvciB3YXZlSW4gZGV2aWNlcy4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGJhc2ljIHN1cHBvcnQgZm9yIFNQSV9HRVRTQ1JFRU5SRUFERVIuCgoyMDAxLTA1LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3F1ZXVlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlcGx5X21lc3NhZ2Ugd2hlbiB0aGVyZSBpcyBubyByZWNlaXZlZCBtZXNzYWdlLgoKCSogd2luZG93cy90aW1lci5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRml4ZWQgU2V0VGltZXIgZm9yIGh3bmQgPT0gMC4KCgkqIGRlYnVnZ2VyL2hhc2guYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJQWNjZXB0IHJlc3BvbnNlcyBmcm9tIDEuLm4gd2hlbiBjaG9vc2luZyBmcm9tIG11bHRpcGxlIHN5bWJvbHMgdG8KCW1hdGNoIHRoZSBpbnB1dCBsYWJlbHMuCgoyMDAxLTA1LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3F1ZXVlLmM6CglGaXhlZCB0eXBvIGluIG1lc3NhZ2UgZmlsdGVyIGNoZWNrLgoKCSogaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJUmVtb3ZlZCBUSFJFQURfSXNXaW4xNi4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBtZW51IGJlaGF2aW91ciB3aGVuIGVzY2FwZSBpcyBwcmVzc2VkLgoKCSogd2luMzIvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCURvIG5vdCByZXR1cm4gRkFMU0Ugb24gU2V0RmlsZUF0dHJpYnV0ZXMoKSBmYWlsdXJlIChpbiByZWFkb25seQoJZGlyZWN0b3J5IHNldHVwcykuCgoJKiBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLAoJICBzZXJ2ZXIvdHJhY2UuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsCgkgIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsCgkgIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsCgkgIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvc2VydmVyLmgsCgkgIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1vdmVkIHRoZSBtYWpvciBwYXJ0IG9mIG1lc3NhZ2UgcXVldWUgYW5kIHdpbmRvdyB0aW1lciBoYW5kbGluZyBpbnRvCgl0aGUgc2VydmVyLgoJSW1wbGVtZW50ZWQgTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0c0V4LgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvZGVmd25kLmMsCgkgIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU3BlbGxpbmcgdHlwb3MuCgoJKiBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBjb21waWxlIGlmIHdlIGRvIG5vdCBoYXZlIHRoZSB4Zjg2dmlkbW9kZSBleHRlbnNpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJVGhlIHNoZWxsIHNwZWNpYWwgZm9sZGVyIHBhdGggY3JlYXRpb24gZGlkIG5vdCBta2RpciB0aGUgbGFzdAoJY29tcG9uZW50IG9mIHRoZSBwYXRoIGlmIGl0IGRpZCBub3QgZW5kIHdpdGggXC4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgaW5jbHVkZS93aW5udC5oOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUVuaGFuY2VkIFNldFRocmVhZEV4ZWN1dGlvblN0YXRlIHN0dWIuCgoJKiBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jOgoJTWlrZSBCb25kIDxtYm9uZEBjb3gucnIuY29tPgoJSW1wbGVtZW50YXRpb24gb2Ygc3Bhd25sIGFuZCBzcGF3bmxwLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBvbGRlciBjdXBzR2V0UHJpbnRlcnMoKSBBUEkgc28gd2Ugc3VwcG9ydCBDVVBTIDEuMC54IHRvbyAoYXMgZm91bmQKCWluIERlYmlhbiBQb3RhdG8pLgoJT25seSBzZXQgdGhlIGRlZmF1bHQgcHJpbnRlciBpZiB0aGVyZSBpcyBubyBlbnRyeSB5ZXQgb3IgaXQgaXMgbm90CglXSU5FUFMgZHJpdmVuLgoKCSogd2luZG93cy9pbnB1dC5jOiBKdWtrYSBIZWlub25lbiA8amhlaUBpa2kuZmk+CglLZXlib2FyZCBldmVudHMgZGlkIG5vdCB1cGRhdGUgQXN5bmNLZXlTdGF0ZVRhYmxlLCBub3cgdGhleSBkby4KCgkqIGNvbnRyb2xzL2VkaXQuYywgZGxscy9pbW0zMi9pbW0uYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJTWFrZSBzdXJlIHdlIHNldCBkd09TVmVyc2lvbkluZm9TaXplIGJlZm9yZSBjYWxsaW5nIEdldFZlcnNpb25JbmZvKCkuCgoyMDAxLTA1LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYvZGdhMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZG9wdGVkIHRvIG5ldyB0aHJlYWRlZCBkaXNwbGF5cy4KCgkqIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZGxscy93aW5lcHMvdHJ1ZXR5cGUuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLAoJICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVJlYWQgbWV0cmljcyBmcm9tIFRydWVUeXBlIGZvbnRzLgoKCSogd2luZG93cy9tZGkuYzogQmlsbCBNZWRsYW5kIDxtZWRiaTAxQGFjY3BhYy5jb20+CglPbmx5IG1lYXN1cmUgY2hpbGQgcmVjdGFuZ2xlcyBvZiB2aXNpYmxlIGNoaWxkcmVuIHdoZW4gZGVjaWRpbmcgYWJvdXQKCXNjcm9sbCBiYXJzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglEaXNhYmxlIC9ldGMvcHJpbnRjYXAgcGFyc2luZyBpZiBubyBQUEQgZmlsZSBzcGVjaWZpZWQuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUd1ZXNzdGltYXRlIFdpbmRvd3MgZm9udCBtZXRyaWNzIGZvciBUeXBlIDEgZm9udHMuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywKCSAgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywKCSAgd2luZG93cy94MTFkcnYvd25kLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsCgkgIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLAoJICBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi9kZXNrdG9wLmMsCgkgIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYvd2luZG93LmMsIGRsbHMveDExZHJ2L3dpbnBvcy5jLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS91c2VyLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIGNvbnRyb2xzL2Rlc2t0b3AuYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMvdHR5ZHJ2L3VzZXIuYzoKCUNyZWF0ZSBhbiBYIGNvbm5lY3Rpb24gZm9yIGVhY2ggdGhyZWFkLCBhbmQgcHJvY2VzcyBYIGV2ZW50cyBpbiB0aGUKCXRocmVhZCB0aGF0IGNyZWF0ZWQgdGhlIGNvcnJlc3BvbmRpbmcgWCB3aW5kb3cuCglTcGF3biBhIHNlcGFyYXRlIHRocmVhZCB0byBydW4gdGhlIGRlc2t0b3AgbWVzc2FnZSBsb29wIGluIGRlc2t0b3AKCW1vZGUuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L3BvcnQuYzoKCVdhcm5pbmdzIGZpeGVzLgoKMjAwMS0wNS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxpYnJhcnkvcG9ydC5jLCBsb2FkZXIvZG9zL2Rvc21vZC5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywKCSAgbG9hZGVyL25lL3NlZ21lbnQuYywgbXNkb3MvaW50MTMuYywgbXNkb3MvaW50MjEuYywKCSAgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3NlcmlhbC5jLAoJICBzZXJ2ZXIvc29jay5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZmlsZS5jLAoJICB3aW5kb3dzL2NsaXBib2FyZC5jLCBkbGxzL3dpbmFzcGkvYXNwaS5jLAoJICBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywKCSAgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmluZXQvZnRwLmMsCgkgIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvYWNjb25maWcuaCwKCSAgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwgbGlicmFyeS9sb2FkZXIuYywKCSAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgNjRiaXQgZmlsZSBzaXplIGhhbmRsaW5nLgoJUmVtb3ZlZCBzZXZlcmFsIHVubmVlZGVkIHN5cy9zdGF0LmggaW5jbHVkZXMuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6CglDbGVhciBvd25lciBvZiBzeXN0ZW0gbWVzc2FnZSBxdWV1ZSB0byBhdm9pZCBmcmVlaW5nIGl0IHdoZW4gdGhlIGZpcnN0Cgl0YXNrIGV4aXRzLgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJQWRkIGNsb3NpbmcgdGFncy4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglEZWZpbmUgSEFWRV9TWVNfU09DS0VUX0ggb24gTmV0QlNEIGFuZCBGcmVlQlNELgoKCSogY29udHJvbHMvbWVudS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJVGVzdCBpZiB0aGUgbWVudSBpcyBkZXN0cm95ZWQgYmVmb3JlIGRpc3BsYXlpbmcgYSBtZW51IGl0ZW0uCgoyMDAxLTA1LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL3VzZXIvY29udHJvbHMuaCwgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmM6CglDcmVhdGUgYSBuZXcgd2luZG93IGZvciB0aGUgdG9wIHBvcHVwIG1lbnUgb24gZXZlcnkgbmV3IG1lbnUgdHJhY2tpbmcsCglzbyB0aGF0IHRoZSB3aW5kb3cgYmVsb25ncyB0byB0aGUgcmlnaHQgdGhyZWFkLgoKCSogZGxscy93aW5lcHMvZm9udC5jLCBmaWxlcy9kcml2ZS5jLAoJICBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG9iamVjdHMvZm9udC5jLCBjb250cm9scy9saXN0Ym94LmMsCgkgIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLAoJICBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL21zdmNydC9kYXRhLmMsCgkgIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBzaW5nbGUgcXVvdGluZyBvZiBkZWJ1Z3N0cl94eHggc3RyaW5ncy4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCBhIHdhcm5pbmcgc2F5aW5nIHRoYXQgdGhlIHgxMWRydiBzZWN0aW9uIGlzIGdldHRpbmcgb3V0ZGF0ZWQuCglBZGQgdGVtcGxhdGVzIGZvciBtaXNzaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB0aGUgeDExZHJ2IHNlY3Rpb24uCglSZW1vdmUgb2Jzb2xldGUgY29tbWFuZC1saW5lIG9wdGlvbnMuCgoJKiBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglSZW1vdmVkIHNvbWUgbW9yZSBvYnNvbGV0ZSAzMiBzdWZmaXhlcy4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJRWxpbWluYXRlIF9fY29tcGFyX2ZuX3QuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsCgkgIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywKCSAgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywKCSAgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsCgkgIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L29wZW5nbC5jLAoJICBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLAoJICBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFkcnYuaCwKCSAgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJUmVuYW1lZCBkaXNwbGF5IHRvIGdkaV9kaXNwbGF5IHdoZXJlIGl0IGlzIHVzZWQgZm9yIEdESSBvcGVyYXRpb25zLCB0bwoJYWxsb3cgc3VwcG9ydGluZyBtdWx0aXBsZSBYIGNvbm5lY3Rpb25zLgoKMjAwMS0wNS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAxMDUxMC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wNS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMveDExZHJ2L3dpbmRvdy5jLCB3aW5kb3dzL3dpbi5jOgoJRml4ZWQgcmVwYXJlbnRpbmcgdG8gZGVza3RvcCAoZm91bmQgYnkgR2VyYXJkIFBhdGVsKS4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCVJlYWxseSBmcmVlIHRoZSBtZW1vcnkgb24gZGxsIHVubG9hZC4KCgkqIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYvd2luZG93LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW4uaCwKCSAgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvdHR5ZHJ2L3duZC5jOgoJTW92ZWQgU2Nyb2xsV2luZG93RXggaW1wbGVtZW50YXRpb24gdG8gdGhlIGdyYXBoaWNzIGRyaXZlci4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb24ndCBzdGFydCBhcHBsaWNhdGlvbnMgaW4gdGhlIGJhY2tncm91bmQgdG8gYXZvaWQgYnJlYWtpbmcgY29uc29sZQoJYXBwbGljYXRpb25zLgoKCSogaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIGRlY2xhcmF0aW9uIG9mIERFQ0lNQUwgaW4gVkFSSUFOVCBoYXBwZW5zIGluIHRoZSB3cm9uZyBwbGFjZS4KCUNvbW1lbnQgb3V0IGZvciBub3cuCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWw6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZWQgdGhlIHByaW50aW5nIGRvY3VtZW50YXRpb24gdG8gaW5jbHVkZSBDVVBTIGFuZCBMUFIgc3VwcG9ydCwKCWFsc28gZ2l2ZSBzb21lIGhpbnRzIG9uIEFGTSBmaWxlcyBpbiBzeXN0ZW0gYW5kIGdlbmVyaWMucHBkLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2dlbmVyaWMucHBkOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBhIGdlbmVyaWMgbGV2ZWwgMyBjb2xvciBwb3N0c2NyaXB0IFBQRCAoZm9yIC9ldGMvcHJpbnRjYXAgYmFzZWQKCXByaW50ZXJzKS4KCgkqIHdpbmVkZWZhdWx0LnJlZzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgdmVyc2lvbiBlbnRyeSBmb3IgRGlyZWN0WCA3LjBhLgoKMjAwMS0wNS0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglSZW1vdmVkIFhTaG1Db21wbGV0aW9uIGV2ZW50IHN1cHBvcnQgKG5vIGxvbmdlciB1c2VkKS4KCgkqIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLlBMLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS54czoKCUdvdCByaWQgb2YgTWFrZU1ha2VyIHNvIHdlIGNhbiBidWlsZCBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzoKCUFsbG93IFdJTkVTRVJWRVIgdG8gc3BlY2lmeSBhIHJlbGF0aXZlIHBhdGguCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmM6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCU9uIE5ldEJTRCBpZl90eXBlIGlzIGRlZmluZWQgYXMgYSBtYWNybyBpbiAvdXNyL2luY2x1ZGUvbmV0L2lmLmguCglVbmRlZmluZSBpdCB0byBhdm9pZCBhIGNvbmZsaWN0LgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJQmFuZyBKdW4tWW91bmcgPGJqeUBtb2d1YS5vcmc+CglEbyBub3QgdXNlIGludGVybmFsIGV4Y2VwdGlvbiBjb2RlcyBkZWZpbmVkIGJ5IFdpbmUgd2l0aCBOZXRCU0QsCglyYXRoZXIgdXNlIG5hdGl2ZSBvbmVzIGZyb20gL3Vzci9pbmNsdWRlL2kzODYvdHJhcC5oLiBOb3RlIHRoYXQgVF9NQ0hLCglpcyBub3Qgc3VwcG9ydGVkIGJ5IE5ldEJTRC4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzoKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJQWRkZWQgc3VwcG9ydCBmb3IgTmV0QlNELgoKCSogaW5jbHVkZS9kZHJhdy5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCB0aGUgSURpcmVjdERyYXdTdXJmYWNlNCBpbnRlcmZhY2UgZGVjbGFyYXRpb24gdG8gY29uZm9ybSBhIGJpdAoJbW9yZSB3aXRoIHRoZSBEaXJlY3RYIFNESyBoZWFkZXJzJyBpZGVhIG9mIHdoYXQgdGhlIGludGVyZmFjZSBsb29rcwoJbGlrZS4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCUR1YW5lIENsYXJrIDxkY2xhcmtAYWthbWFpbC5jb20+CglBZGQgdGVzdHMgZm9yIHRoZSBmbGFnIEZPUk1BVF9NRVNTQUdFX0lHTk9SRV9JTlNFUlRTLCBhbmQgYWN0CglhY2NvcmRpbmdseS4KCgkqIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luLmMsCgkgIHdpbmRvd3Mvd2lucG9zLmM6CglVc2UgMzItYml0IGhvb2sgZnVuY3Rpb25zIHdoZXJlIHBvc3NpYmxlLiBDbGVhbmVkIHVwIGEgY291cGxlIG9mCgkxNi1iaXQgdHlwZSB1c2VzLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9zY3JvbGwuYywKCSAgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywKCSAgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYywgbWVtb3J5L2dsb2JhbC5jLCBtc2Rvcy9pbnQxMC5jLAoJICBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pb3BvcnRzLmMsIG9iamVjdHMvcGFsZXR0ZS5jLAoJICBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywKCSAgZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsCgkgIGRsbHMvd2lubW0vZHJpdmVyLmMsIGRsbHMvd2lubW0vbWNpLmMsCgkgIGRsbHMvd2lubW0vbWNpYXZpL21tb3V0cHV0LmMsIGRsbHMvd2lubW0vbWNpYXZpL3duZC5jLAoJICBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsCgkgIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLAoJICBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywKCSAgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsCgkgIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3BzYXBpL3BzYXBpX21haW4uYywKCSAgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLAoJICBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywKCSAgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGx3YXBpL3NobHdhcGlfbWFpbi5jLAoJICBkbGxzL3R0eWRydi9wYWxldHRlLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywKCSAgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsCgkgIGRsbHMvZGlucHV0L21vdXNlL21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywKCSAgZGxscy9pbW0zMi9pbWMuYywgZGxscy9pbW0zMi9pbWV3bmQuYywgZGxscy9pbW0zMi9pbW0uYywKCSAgZGxscy9pbW0zMi9tZW1vcnkuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL21zdmNydC9maWxlLmMsCgkgIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGNvbnRyb2xzL21lbnUuYywKCSAgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkZCAnXG4nIGF0IHRoZSBlbmQgb2YgdHJhY2VzLgoKCSogaW5jbHVkZS9ub25jbGllbnQuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLAoJICBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywKCSAgZGxscy94MTFkcnYvd2lucG9zLmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJTW92ZWQgd2luZG93IG1vdmUvcmVzaXplIHN5c2NvbW1hbmQgaGFuZGxpbmcgdG8gdGhlIGdyYXBoaWNzIGRyaXZlci4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCU9ubHkgZHJhdyB0aGUgcGFkZGluZyBhcmVhIG9mIHRoZSBjb21ibyBib3gsIGRvbid0IGVyYXNlIHRoZSBjb21ibwoJc2VsZWN0aW9uIHRleHQuCgoJKiB0b29scy9zcGVjbWFrZXIvbXNtYW5nbGUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVuYW1lZCAnb3BlcmF0b3JfY29tcGxpbWVudCcgdG8gJ29wZXJhdG9yX2NvbXBsZW1lbnQnLgoKCSogY29udHJvbHMvZWRpdC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2guY3pla2FsbGFAdXRvcm9udG8uY2E+CglGaXhlZCBhIHBhaW50IHByb2JsZW0gcmVwb3J0ZWQgYnkgTWlrZSBNY0Nvcm1hY2suCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvYWdsLmMsIGRsbHMvd2luZXBzL2dseXBobGlzdC5jLAoJICBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJVW5pY29kZSBlbmNvZGluZ3MgZm9yIFBvc3RTY3JpcHQgZm9udHMuCgoJKiBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLAoJICBkbGxzL3dpbnNwb29sL3dzcG9vbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCAvZXRjL3ByaW50Y2FwIGJhc2VkIHByaW50aW5nIHN1cHBvcnQuCglDaGFuZ2VkICdDVVBTOnByaW50ZXJuYW1lJyB0byAnTFBSOnByaW50ZXJuYW1lJy4KCVNvbWUgZml4ZXMgaW4gQWRkUHJpbnRlclcoKS4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglBZGQgbWlzc2luZyBuZXdsaW5lIHRvIFdBUk4gbWVzc2FnZXMuCgoyMDAxLTA1LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3BlX2ltYWdlLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLAoJICBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3Mvd2lucHJvYy5jLAoJICBkbGxzL250ZGxsL2RlYnVndG9vbHMuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBpZjE2MzIvcmVsYXkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUHJpbnQgdGhlIHRpZCBpbiB0aGUgZmlyc3QgY29sdW1uIHdoZW4gK3RpZCBpcyBzcGVjaWZpZWQuCgoJKiBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBTIHBhc3N0aHJvdWdoIHdhcyBzZW5kaW5nIDIgYnl0ZXMgdG9vIG1hbnkuCglBZGRlZCBHRVRTRVRQUklOVE9SSUVOVCBzdHViLgoJSW1wbGVtZW50ZWQgRVBTUFJJTlRJTkcgbW9kZSBjaGFuZ2VyLgoKMjAwMS0wNS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZXBzL2VzY2FwZS5jOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTWFrZSBQU0RSVl9Fc2NhcGUoR0VUUEhZU1BBR0VTSVpFKSByZXR1cm4gcGh5c2ljYWwgc2l6ZS4KCgkqIGRsbHMvd2luZXBzL2luaXQuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCUZpeGVkIHJvdW5kaW5nIGVycm9yIGluIHBhZ2Ugc2l6ZSBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCVN3YXAgcG9ydHJhaXQvbGFuZHNjYXBlIGljb24gd2hlbiBidXR0b24gY2xpY2tlZC4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglEdWFuZSBDbGFyayA8ZGNsYXJrQGFrYW1haWwuY29tPgoJQWRkZWQgZW50cnkgZm9yIHByaW50aW5nIHRvIGEgZmlsZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBpbmNsdWRlL01ha2VmaWxlLmluLAoJICBpbmNsdWRlL21pbm1heC5oLCBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSBtaW5tYXguaCBoZWFkZXIgKFZDNikuCglBZGRlZCBzdXBwb3J0IGZvciBOT01JTk1BWC4KCVJlbW92ZSBfX21pbi9fX21heCBmcm9tIHdpbmRlZi5oLCB0aGV5IGJlbG9uZyB0byAobXN2Y3J0LylzdGRsaWIuaC4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2FuaXR5IGNoZWNrIGZvciBNYWtlZGxsLnJ1bGVzLmluIC0+IE1ha2VkbGwucnVsZXMgb24gd2hldGhlciB0byByZXJ1bgoJY29uZmlndXJlLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCUFkZCB0aGUgTmV0QlNEIHN0eWxlIGVycm5vIGxvY2F0aW9uLgoJTW9kaWZ5IGEgbWVzc2FnZSB0byBnaXZlIGEgYml0IG1vcmUgaW5mbyB3aGVuIGJ1aWxkaW5nIFdpbmUgb24gTmV0QlNELgoKCSogaW5jbHVkZS9ndWlkZGVmLmgsIGluY2x1ZGUvb2JqYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBtaXNzaW5nIGluY2x1ZGUgZGlyZWN0aXZlcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlIHRoZSBhbm9ueW1vdXMgZnVuY3Rpb24gcGFyYW1ldGVyIGZyb20gZ2VuZXJhdGVfbGlzdCBjYWxscyB3aGVuCglpdCBpcyB1bm5lY2Vzc2FyeS4KCU1vZGlmeSB0aGUgLnNwZWMuYyBydWxlIHRvIGFsbG93IGNvbXBpbGF0aW9uIG91dCBvZiAkKFRPUFNSQ0RJUikuCgoJKiBpbmNsdWRlL21zdmNydC9zdGRpby5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUkNfSU5WT0tFRCAoJk5PV0lOUkVTKSBzcGVjaWFsIGNhc2VzLgoKCSogdG9vbHMvd3JjL3dyYy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CgktbC8tTCB3ZXJlIG5vdCByZW5hbWVkIHRvIC10Ly1UIGluIHRoZSB1c2FnZSBtZXNzYWdlcy4KCgkqIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4IGR1cGxpY2F0ZSBkaXJlY3RvcmllcyBiZWluZyBjb25jYXRlbmF0ZWQgdG8gYnVmZmVyIGluCglWY3BFeHBsYWluMTYoKS4gIEFkZGVkIGEgZmV3IHVzZWZ1bCBUUkFDRSBsaW5lcy4gIEVuYWJsZWQgYSBpZmRlZidlZAoJb3V0IGNhbGwgdG8gQ29weUZpbGUoKSBpbnNpZGUgb2YgVkNQX0NvcHlGaWxlcygpIHNvIGZpbGVzIGFyZSBjb3BpZWQKCXRvIGEgdXNlcnMgZGlyZWN0b3JpZXMgZHVyaW5nIGFuIGluc3RhbGwuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmM6CglCYW5nIEp1bi1Zb3VuZyA8Ymp5QG1vZ3VhLm9yZz4KCUNhbGwgT1NTX01pZGlJbml0KCkgb25seSBpZiBIQVZFX09TU19NSURJIGlzIGRlZmluZWQuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzoKCUJhbmcgSnVuLVlvdW5nIDxianlAbW9ndWEub3JnPgoJSW5jbHVkZSBtaXNzaW5nIGVycm5vLmguCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcm9wIGZsYWdzIGR1cmluZyBmb250IGVudW1lcmF0aW9uIGZvciBmb250IGNob29zZXIgaWYgd2UgZ2V0IG5vCgltYXRjaGVzLgoKCSogZGxscy9nZGkvZ2RpLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoYW5nZWQgc29tZSBwdHIgaW50byBzdHIuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwKCSAgaW5jbHVkZS93dHlwZXMuaCwgaW5jbHVkZS9vbGVhdXRvLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIERFQ0lNQUwgdHlwZS4KCU5hbWVzIGFyZSBubyBsb25nZXIgc3VmZml4ZWQgd2l0aCAzMiEgUmVtb3ZlZCBpdC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBpbmNvcnJlY3QgY2FzdCBpbiBXU09DSzMyX3NlbmQgYW5kIFdTT0NLMzJfcmVjdmZyb20uCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgSVNfRVJST1IuCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcG9ydCB0aGF0IHdlIGhhdmUgMl4xNiBjb2xvcnMsIHNvIFBvd2VyUG9pbnQ5NyBwcmludHMgY29sb3JlZAoJc2xpZGVzLgoKCSogZGxscy93aW5lcHMvdGV4dC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGb3IgdW5kZXJsaW5pbmcgYW5kIHN0cmlraW5nIG91dCB0ZXh0IHdlIG5lZWQgdG8gc2VuZCBhICduZXdwYXRoJyBvcgoJaGF2ZSB0aGUgd2hvbGUgcGFnZSBmaWxsZWQgd2l0aCBibGFjay4KCgkqIGRsbHMvd2luZXBzL3JzcmMucmMsIGRsbHMvd2luZXBzL3dwc19EZS5yYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUGFwZXIgZGlhbG9nIHRyYW5zbGF0ZWQgdG8gR2VybWFuLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gUFJPRklMRV9Db3B5RW50cnkuCgoyMDAxLTA1LTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsCgkgIGRsbHMvdHR5ZHJ2L3VzZXIuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLAoJICBkbGxzL3gxMWRydi94MTFkcnYuc3BlYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywKCSAgaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL3VzZXIuaCwgd2luZG93cy9rZXlib2FyZC5jLAoJICB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJUmVtb3ZlIEdldC9TZXRCZWVwQWN0aXZlIGZyb20gVVNFUiBkcml2ZXIgYW5kIG1hbmFnZSBpdCBsb2NhbGx5IGluc2lkZQoJU3lzdGVtUGFyYW1ldGVyc0luZm8uCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgV01fQ09NTUFORCBub3RpZmljYXRpb24gY29kZXMgZm9yIDE2IGJpdCBQcmludERsZy4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvd2luZWRiZy5zcGVjOgoJRGVsYXkgaW1wb3J0IG9mIHVzZXIzMiB0byBhbGxvdyBkZWJ1Z2dpbmcgY3Jhc2hlcyBpbiB1c2VyIGluaXQgY29kZS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0RlLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywKCSAgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIGxhcmdlIHBhcnRzIG9mIFBhZ2VTZXR1cERsZ0EuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEZWJ1ZyBvdXRwdXQgZm9yIGZsYWdzLCBzZWxlY3QgZmlyc3QgYXZhaWxhYmxlIGhlaWdodCBhbmQgd2VpZ2h0IHdoZW4KCXNlbGVjdGluZyBhIGZvbnQuCgoyMDAxLTA1LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kY2UuYzoKCU1ha2Ugc3VyZSB3ZSByZWNvbXB1dGUgdGhlIHZpc2libGUgcmVnaW9uIGluIERDIGhvb2suCgoJKiBkbGxzL3dpbmVwcy9hZm0uYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJTWlzYy4gZXJyb3IgY2hlY2tpbmcgaW4gUG9zdFNjcmlwdCBkcml2ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBhdXRvcmVwZWF0IHNjcm9sbGluZyB3aGVuIGJ1dHRvbiBpcyBoZWxkIGRvd24uCglJbXByb3ZlbWVudHMgdG8gc2l6ZSBhbmQgYXBwZWFyYW5jZSBvZiBidXR0b25zLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDbGVhbiBzaG91bGQgYWxzbyBkZWxldGUgdGhlIHBkZiwgcHMgYW5kIC5vdXQoPykgZmlsZXMuCgoJKiBkb2N1bWVudGF0aW9uL21ha2Vfd2luZWhxOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0aGUgd3d3LndpbmVocS5jb20gZGlyZWN0b3J5IGhhbmRsaW5nLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsCgkgIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRlZCBoYW5kbGluZyBvZiBzZXZlcmFsIHN5bWJvbHMgd2l0aCB0aGUgc2FtZSBuYW1lLgoJRml4ZWQgdHJhbXBvbGluZSBpZGVudGlmaWNhdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBzbWFsbCBzZWN0aW9uIGFib3V0IGV4cHJlc3Npb25zIGluIHdpbmVkYmcuCgoyMDAxLTA1LTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21vZHVsZS5jOgoJVW5jb21tZW50ZWQgdGhlIFZpcnR1YWxGcmVlIGNhbGwgb24gZGxsIHVubG9hZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCB0aGUgT1NNZXNhIGNvbmZpZ3VyZSBjaGVjayBzbyB0aGF0IE9TTWVzYSB3b24ndCBiZSBsaW5rZWQgaW4gaWYgaXQncwoJaW5jb21wYXRpYmxlIHdpdGggdGhlIEdMWCBpbXBsZW1lbnRhdGlvbiAoZS5nLiBudmlkaWEpLgoJUmVtb3ZlZCB0aGUgb2xkICJPU01lc2Egbm90IGZvdW5kIiB3YXJuaW5nLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIFByaW50RGxnIHNvIHRoZSBkZXZuYW1lcyBzdHJ1Y3QgY29udGFpbnMgdGhlIGNvcnJlY3QgZHJpdmVyCglwcmludGVyIGFuZCBwb3J0IG5hbWVzLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbDoKCVNpbWVvbiBQaWxncmltIDxzaW1lb24ucGlsZ3JpbUBhbGxpZWR0ZWxlc3luLmNvLm56PgoJVHlwbyBpbiBzdHViLXJlcG9ydGluZyBzdHlsZSBkZXNjcmlwdGlvbgoKCSogZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCW50ZGxsLl9pc3djdHlwZSBzaG91bGQgYmUgbnRkbGwuaXN3Y3R5cGUuCgoJKiBjb250cm9scy9jb21iby5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgSGVhcEZyZWUoKSBtZW1vcnkgbm90IGFsbG9jYXRlZCBieSB1cyBpbiBDT01CT19HZXRUZXh0LgoJQ29udmVydCByZXR1cm4gdmFsdWUgZnJvbSBMQl9HRVRURVhUIGludG8gQ09NQk9fR2V0VGV4dC4KCjIwMDEtMDQtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgY2hlY2sgZm9yIGN1cHMvY3Vwcy5oIGhlYWRlciBmaWxlIGFuZCBhIHdhcm5pbmcgaWYgd2UgZmluZCBvbmx5CglydW50aW1lIGxpYnJhcmllcywgYnV0IG5vIGhlYWRlcnMuCgoJKiBjb250cm9scy9jb21iby5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglEcmF3IHRoZSBwYWRkaW5nIGFyZWEgb2YgYSBjb21ibyBib3guCgoJKiBkbGxzL3dpbmVwcy9pbml0LmM6CglJYW4gUGlsY2hlciA8aWFuLnBpbGNoZXJAaG9tZS5jb20+CglDaGVjayBmb3IgZXJyb3JzIGluIFBTRFJWX0luaXQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIGNoZWNrcyBpbiBfZ2V0X2NvbW1vbl9hbmNlc3RvciBhIGJpdCBzdHJpY3RlciB0byBhdm9pZCBYUXVlcnlUcmVlCglYRXJyb3JzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSW1wbGVtZW50IENPTUNUTDMyX1N0clRvSW50VygpIHVzaW5nIE5URExMJ3MgX3d0b2kuCgoyMDAxLTA0LTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jLCBzZXJ2ZXIvcHRyYWNlLmMsCgkgIHNlcnZlci90aHJlYWQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUHJlc2VydmUgdGhlIFRGIChUcmFwIEZsYWcpIHdoZW4gY29udGludWluZyBmcm9tIGEgcHRyYWNlZCBzdXNwZW5kLgoKCSogY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywKCSAgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3VpdG9vbHMuYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsCgkgIGRsbHMvd2luMzJzL3dpbjMyczE2LnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmMsCgkgIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB3aW4zMi9maWxlLmMsIHdpbmRvd3MvbWRpLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gbmFtZSBmaXhlcy4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jLCBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGRvY3VtZW50YXRpb24uCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmluLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9nZGkvcHJpbnRkcnYuYywKCSAgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2luaXQuYywKCSAgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9pbmZvLmMsCgkgIGRsbHMvd2luc3Bvb2wvd3Nwb29sLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgQ1VQUyBwcmludGluZyBzdXBwb3J0LgoKCSogZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUREUkFXX3tYRjg2REdBMixYVmlkTW9kZX1fSW5pdCB3YXMgbW92ZWQgdG8gZGxscy94MTFkcnYuCgoJKiBkbGxzL3gxMWRydi9kZ2EyLmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlaW1wbGVtZW50ZWQgRFhHcmFiIHdpdGggaW1wcm92ZW1lbnRzOyBpdCBubyBsb25nZXIgZGVwZW5kcyBvbgoJWFZpZE1vZGUsIGFuZCBpdCByZWxlYXNlcyB0aGUgZ3JhYiBpZiB0aGUgYXBwIGV4aXRzIGZ1bGwtc2NyZWVuCglEaXJlY3REcmF3LiAgQWxzbyBtYWRlIHRoZSBVc2VER0Egb3B0aW9uIGF2YWlsYWJsZSBmb3IgQXBwRGVmYXVsdHMKCWNvbmZpZ3VyYXRpb24uCgoyMDAxLTA0LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywKCSAgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsCgkgIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYywgZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUF2b2lkIGNyYXNoIG9uIGRlbGV0ZWQgd2luZG93cy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2NvbXBvYmouYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMTYvc2V0dXB4LmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3VzZXIuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmNydC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi90dHlkcnYuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3ZlcnNpb24uYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2ludHJ1c3QuYXBpLAoJICB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwKCSAgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssCgkgIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmM6CglHYWVsIGRlIENoYWxlbmRhciA8R2FlbC5kZS5DaGFsZW5kYXJAbGltc2kuZnI+CglDb3JyZWN0ZWQgYSB0eXBvIGluIHNwZWMgZmlsZSBhbmQgYWRkZWQgc29tZSBzdHVicy4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVBsYXlTb3VuZEEgc2hvdWxkIHJldHVybiBUUlVFIHdoZW4gaXQgc3RvcHMgcGxheWluZyBzb3VuZC4KCjIwMDEtMDQtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLAoJICB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsCgkgIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvdHR5ZHJ2L3duZC5jLAoJICBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLAoJICBkbGxzL3gxMWRydi93aW5kb3cuYywgZGxscy94MTFkcnYvd2lucG9zLmMsCgkgIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBpbmNsdWRlL2RjZS5oLCBpbmNsdWRlL21lc3NhZ2UuaCwKCSAgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2lucG9zLmgsCgkgIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvZGNlLmMsCgkgIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9mb2N1cy5jLAoJICB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jLAoJICB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJTW92ZWQgbW9zdCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgU2V0V2luZG93UG9zIGFuZCBTZXREcmF3YWJsZSBpbnRvCgl0aGUgdXNlciBkcml2ZXIsIGFuZCB0aGUgY29ycmVzcG9uZGluZyBjb2RlIGludG8gdGhlIGRsbHMveDExZHJ2CglkaXJlY3RvcnkuIE1vdmVkIGEgZmV3IGZ1bmN0aW9ucyBvdXQgb2YgdGhlIHdpbmRvdyBkcml2ZXIgaW50byB0aGUKCXVzZXIgZHJpdmVyLiBQbHVzIGEgZmV3IHJlbGF0ZWQgY2xlYW51cHMuCgoJKiBkbGxzL2RkcmF3L2QzZHZpZXdwb3J0LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywKCSAgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCVNtYWxsIGNsZWFudXBzLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcm9wIFNZU0xFVkVMIGNoZWNrcyBmcm9tIHJlbGF5IGRlYnVnZ2luZywgc2luY2UgdGhleSBicmVhayBkZWJ1Z2dpbmcKCWJ1aWx0aW4gR0RJIGRsbHMuCgoJKiBpbmNsdWRlL21zdmNydC9zdGRsaWIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRG9uJ3QgdXNlIFdpbmRvd3MgdHlwZXMgbGlrZSBMT05HTE9ORyBpbiBtc3ZjcnQgaGVhZGVycy4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIG1vcmUgZGlzYXNzZW1ibHkgaW5zdHJ1Y3Rpb25zIChub3RhYmx5IHJkdHNjLCB3aGljaCBpcyB1c2VkCglieSBzZXZlcmFsIHByb2dyYW1zKSBhbmQgbW9yZSBNTVguCgoyMDAxLTA0LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvZXhjZXB0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVVzZSBzbnByaW50ZiB0byBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvd3MgaW4gZm9ybWF0X2V4Y2VwdGlvbl9tc2cuCgoJKiBpbmNsdWRlL3RjaGFyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUHJldmVudCB1c2UgYnkgV2luZSdzIHNvdXJjZS4KCUFkZGVkIG1pc3NpbmcgJ2Z1bmN0aW9uJyBkZWZpbml0aW9ucyAobWFjcm9zIHJlYWxseSkuCgoJKiBkbGxzL21zdmNydC90aW1lLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2UgbXVzdCBub3QgZnJlZSB0aGUgcG9pbnRlciByZXR1cm5lZCBieSBsb2NhbHRpbWUgKGVzcGVjaWFsbHkgbm90Cgl3aXRoIE1TVkNSVF9mcmVlISkuCglXZSBubyBsb25nZXIgbmVlZCB0byBpbmNsdWRlIHN0ZGxpYi5oLgoKCSogaW5jbHVkZS9tc3ZjcnQvc3RkZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgb2Zmc2V0b2YgKGZvciB0aGUgTUZDKS4KCgkqIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2hlYXAuYywKCSAgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL21zdmNydC9zdHJpbmcuYywKCSAgaW5jbHVkZS9tc3ZjcnQvbWFsbG9jLmgsIGluY2x1ZGUvbXN2Y3J0L3NlYXJjaC5oLAoJICBpbmNsdWRlL21zdmNydC9zdGRsaWIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGQgbXN2Y3J0L21hbGxvYy5oIChmb3IgdGhlIE1GQykuCglBZGQgbXN2Y3J0L3NlYXJjaC5oLgoJTW92ZSBkdXBsaWNhdGVkIGRlZmluaXRpb25zIHRvIHRoZSBuZXcgaGVhZGVycy4KCVVzZSBtYWxsb2MuaCBpbnN0ZWFkIG9mIHN0ZGxpYi5oIHdoZW4gc2Vuc2libGUuCgoJKiBpbmNsdWRlL21zdmNydC9jcnRkYmcuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglQcm92aWRlIGxpbWl0ZWQgc3VwcG9ydCBmb3IgdGhlIG1zdmNydCBkZWJ1ZyBBUEkuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRmlsZXMgd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgbWF5IG5vdCBoYXZlIGJlZW4gcmVuYW1lZC4gVHJ5IHRvIG1hdGNoCglib3RoIGZvcm1zLgoKCSogZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywKCSAgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLAoJICBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jLCBkbGxzL21zYWNtL3N0cmVhbS5jLAoJICBkbGxzL21zYWNtL3dpbmVhY20uaDoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgY2FjaGUgZm9yIGRyaXZlcnMgaW5mb3JtYXRpb24uCglGaXhlZCBhIGZldyBidWdzIChtZW1vcnkgaGFuZGxpbmcsIHZlcnNpb24gaW5mby4uLikKCUVuaGFuY2VkIHZhbGlkaXR5IGNoZWNrcy4KCgkqIGRsbHMvd2luZXBzL2dseXBobGlzdC5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJVXNlIHR5cGVjYXN0cyB0byBzdXBwcmVzcyBjb21waWxlciB3YXJuaW5ncy4KCgkqIG9iamVjdHMvZm9udC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBHZXRDaGFyQUJDV2lkdGhzIHdpdGggR2V0Q2hhcldpZHRoLgoKCSogb2JqZWN0cy9yZWdpb24uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRXh0cmFjdGVkIE1FTUNIRUNLIGludG8gYW4gZXh0cmEgZnVuY3Rpb24gdG8gYXZvaWQgYSBnY2MtMi45NS4yCgljb21waWxlciBidWcuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBNTVggZGlzYXNzZW1ibHkgdG8gdGhlIGRlYnVnZ2VyLgoKCSogZGVidWdnZXIvZXhwci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBnZXR0aW5nIGEgdmFyaWFibGUgYWRkcmVzcy4KCgkqIGRlYnVnZ2VyL3R5cGVzLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZsb2F0IHZhcmlhYmxlcyBkaXNwbGF5LgoKMjAwMS0wNC0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJRG9taW5payBTdHJhc3NlciA8ZG9taW5pay5zdHJhc3NlckBtY2hwLnNpZW1lbnMuZGU+CglBbGxvdyBpbGxlZ2FsIGhhbmRsZXMgaW4gRmluZENsb3NlLgoKCSogZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLAoJICBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywKCSAgZmlsZXMvZHJpdmUuYywgb2JqZWN0cy9kaWIuYywgdG9vbHMvd2luZWNvbmYsCgkgIGRlYnVnZ2VyL2V4dF9kZWJ1Z2dlci5jLCBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywKCSAgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiB3aW5kb3dzL3Byb3BlcnR5LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIG1ha2Ugc3VyZSB0aGF0IHdlIHJlYWxseSB1c2UgdGhlIGNvcnJlY3QgYW1vdW50IG9mIHBhcmFtZXRlcnMgZWFjaAoJICB0aW1lIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24KCS0gYWx3YXlzIHBhc3Mgc3RyaW5ncyBpbnN0ZWFkIG9mIGF0b21zIHRvIFdpbjMyIGVudW0gcHJvYwoJLSBmaXggdHJhY2UgY3Jhc2ggZHVlIHRvIHN0cmluZyBmb3JtYXQgZGlzcGxheWluZyBvZiBhdG9tIChMT1dPUkQKCSAgb25seSkgaGFuZGxlCgoJKiBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL2FnbC5jLAoJICBkbGxzL3dpbmVwcy9nbHlwaGxpc3QuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCVN0b3JlIGVhY2ggZ2x5cGggbmFtZSBvbmx5IG9uY2UgaW4gUG9zdFNjcmlwdCBkcml2ZXIuCgoJKiBvYmplY3RzL2JydXNoLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVRha2UgYSBzdGFiIGF0IGltcGxlbWVudGluZyBTZXRTb2xpZEJydXNoMTYuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgb2ZmIGJ5IG9uZSBlcnJvciBpbiBJbWFnZUxpc3RfRHJhd0luZGlyZWN0KCkuCglGaXhlZCBzb21lIG1pc3NpbmcgTlVMTCBISU1BR0VMSVNUIGNoZWNrIChmaXhlcyBNaWNyb3NvZnQgV29ya3MKCXN0YXJ0dXApLgoKCSogZGxscy93aW5tbS93aW5lb3NzL21peGVyLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIHN1cmUgdG8gcmV0dXJuIG91ciB2YXJpYWJsZSB3aXRoIHRoZSBjb3JyZWN0IHJldHVybiB2YWx1ZS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVmlydHVhbFByb3RlY3Qgc2hvdWxkIHJldHVybiBjb3JyZWN0IG9sZCBwcm90ZWN0aW9uIGZsYWdzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gTm90aWZ5IHBhcmVudCBvZiBjaGlsZCBzaXplIGNoYW5nZXMgd2hlbiBjaGFuZ2VzIGFyZSBmcm9tIFdNX1NJWkUKCSAgbWVzc2FnZXMuCgktIElmIG1vcmUgdGhhbiBvbmUgYmFuZCBleGlzdHMsIHRoZW4gZmlyc3QgYmFuZCBtYXkgaGF2ZSBhIGdyaXBwZXIuCgktIEZpeCB0aGUgYmFuZCBsYXlvdXQgYWxnb3JpdGhtIHRvIGhhbmRsZSBzb21lIGlzc3VlcyBmcm9tIFdpbkFSQS4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IENCX3tHRVR8U0VUfUlURU1EQVRBIGZvciBDb21iQm94RXguCgktIEltcGxlbWVudCBXTV9OQ0NSRUFURSB0byByZW1vdmUgdW53YW50ZWQgd2luZG93IHN0eWxlcyAoYXMgbmF0aXZlIGRvZXMpLgoJLSBDbGVhbiB1cCBzb21lIHRyYWNlcy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4IGZpbGUgbG9zc2FnZSBpbiBzdWJkaXJlY3RvcmllcyBvZiBhbiAnaW5jbHVkZScgZGlyZWN0b3J5IChjbG9zZXMgIzE2MykuCglXaGVuIGNhc2UgZml4aW5nICNpbmNsdWRlcywgdGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUgZmlsZSBtYXkgaGF2ZQoJYmVlbiByZW5hbWVkIChjbG9zZXMgIzE2MSkuCglCZXR0ZXIgc3VwcG9ydCBvZiAkKFNSQ0RJUikgaW4gLUkgZGlyZWN0aXZlcy4KCVJURiB3YXMgbm90IHJlY29nbmlzZWQgaW4gcmMgZmlsZXMgYmVjYXVzZSBpdCB3YXMgaW4gdGhlIHdyb25nIHBsYWNlLgoJRXNjYXBlIHdlaXJkIGNoYXJhY3RlcnMgd2hlbiBwdXR0aW5nIHRoZSByYyBmaWxlbmFtZSBpbiB0aGUgc3BlYyBmaWxlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUFkZGVkIFdJTkVQUkVMT0FEIHRvIG1hbiB3aW5lLgoKCSogZGxscy9rZXJuZWwvY29tbS5jOgoJRG9taW5payBTdHJhc3NlciA8ZG9taW5pay5zdHJhc3NlckB0LW9ubGluZS5kZT4KCURvbid0IHVzZSBSVFNDVFMgaWYgU3RyIGhhbmRzaGFrZSBpcyBlbmFibGVkLgoJVXNlIGFwcHJvcHJpYXRlIFVuaXggdGltZW91dCB2YWx1ZXMgaW4gU2V0Q29tbVRpbWVvdXRzLgoKMjAwMS0wNC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAxMDQxOC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wNC0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IEZpeGVkIHNldHVwYXBpIGRlcGVuZGVuY2llcy4KCgkqIHdpbmRvd3MvaW5wdXQuYzogSnVra2EgSGVpbm9uZW4gPGpoZWlAaWtpLmZpPgoJR2V0QXN5bmNLZXlTdGF0ZSBub3cgY2xlYXJzICJoYXMgYmVlbiBwcmVzc2VkIiBpbmZvcm1hdGlvbiBvZiBvbmx5IHRoZQoJcmVxdWVzdGVkIGtleSBpbnN0ZWFkIG9mIGFsbCBrZXlzLgoKCSogd2luZG93cy9kY2UuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jOgoJTm8gbmVlZCB0byBwcmVhbGxvY2F0ZSBEQ0VzIHNpbmNlIHRoZXkgYXJlIGFsbG9jYXRlZCBvbiBkZW1hbmQKCWFueXdheS4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL2RjZS5oOgoJTW92ZWQgRENYXyogY29uc3RhbnRzIHRvIHdpbnVzZXIuaC4KCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuaCwgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuaDoKCVJlbW92ZWQgYSBmZXcgb2Jzb2xldGUgZmlsZXMuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXggREdBIHNvIGl0IHdvcmtzIHByb3Blcmx5IGFnYWluLgoKCSogZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUFkZCBcbiB0byBGSVhNRSBjYWxsIGluIGFjbUdldFZlcnNpb24gdG8gcHJldmVudCBvdmVyZmxvd2luZyBidWZmZXIgaW4KCXdpbmVfZGJnX3ZwcmludGYuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglFbGltaW5hdGUgdW5pdGlhbGl6ZWQgZ2FyYmFnZSBiZWluZyByZXR1cm5lZCBmcm9tIExJU1RWSUVXX0dldEl0ZW1BLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUVuaGFuY2VkIHRoZSBwcmFnbWEgcGFjayBoYW5kbGluZy4KCUVuaGFuY2VkIHRoZSAnYWZ4cmVzLmgnIGhhbmRsaW5nICh0aGUgaW5kZW50YXRpb24pLgoJU3RhcnQgaXNzdWluZyB3aW5lbWFrZXIncyB3YXJuaW5ncyBpbiB0aGUgc291cmNlIGZpbGVzIHRoZW1zZWx2ZXMuCgoyMDAxLTA0LTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbGlzdGJveC5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCURvIG5vdCBzZW5kIFdNX01PVVNFQUNUSVZBVEUgZm9yIGNoaWxkcmVuIG9mIGRlc2t0b3AuCgoJKiBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RkcmF3L2hhbC5jLAoJICBkbGxzL2RkcmF3L2RkcmF3L2hhbC5oLCBkbGxzL2RkcmF3L2RwYWxldHRlL2hhbC5jLAoJICBkbGxzL2RkcmF3L2RwYWxldHRlL2hhbC5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2hhbC5oLCBkbGxzL2RkcmF3L21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgRGlyZWN0RHJhdydzIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIChIQUwpIGludGVyZmFjZS4KCURpc2FibGVkIERpcmVjdERyYXcncyBvbGQgWFZpZE1vZGUgYW5kIERHQTIgZHJpdmVycywgaXQgbm93IGRlcGVuZHMgb24gdGhlCglkaXNwbGF5IGRyaXZlciAoeDExZHJ2KSBIQUwgaW1wbGVtZW50YXRpb25zIG9mIHRoZXNlIGZlYXR1cmVzLgoKCSogZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLAoJICBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkucmMsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cGFwaV9wcml2YXRlLmgsCgkgIGRsbHMvc2V0dXBhcGkvc2V0dXB4LnNwZWMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaCwKCSAgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9wcml2YXRlLmgsCgkgIGRsbHMvc2V0dXBhcGkvdmlydGNvcHkuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gaW1wbGVtZW50IHNvbWUgbW9yZSB2aXJ0Y29weSAoVkNQKSBzdHVmZgoJLSBhZGQgc29tZSBzZXR1cHggcmVzb3VyY2VzCgktIGltcGxlbWVudCBWSFNUUiBmdW5jdGlvbmFsaXR5CgktIGxhcmdlIHBhcnRzIG9mIFZDUCBjYWxsYmFjayBoYW5kbGluZwoJLSBtZXJnZSBzZXR1cGFwaSBhbmQgc2V0dXB4IHN0dWZmLCBlc3BlY2lhbGx5IHJlc291cmNlIGhhbmRsaW5nCgkgIGdldHMgcmlkIG9mIHNldHVweCBkZWJ1ZyBjaGFubmVsOyBzZXR1cGFwaSBpcyB0aGUgb25seSBvbmUgdGhhdCByZW1haW5zCgoJKiBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYnRleHR1cmUuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWJ0ZXh0dXJlLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlbW92ZWQgdGhlIG9ic29sZXRlIERJQlRleHR1cmUgc3VyZmFjZSBjbGFzcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGliLmgsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaWxsIGluIHNvbWUgbW9yZSBIQUwgZmllbGRzLiBGbGlwIHNvbWUgb2YgdGhlbSB3aGVuIGFwcHJvcHJpYXRlLgoJQWxsb3cgU2V0U3VyZmFjZURlc2MgdG8gY2hhbmdlIGNsaWVudCBtZW1vcnkgc3VyZmFjZSBhZGRyZXNzLgoJUHJvcGFnYXRlIERJQiBjb2xvciB0YWJsZSB1cGRhdGVzIHRvIGJhY2tidWZmZXJzIHRvbyAodGhhbmtzIHRvCglTdGVwaGVuIENsb3VzZSkuCgoJKiBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUZpbGwgaW4gc29tZSBEaXJlY3REcmF3UGFsZXR0ZSBIQUwgZmllbGRzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5oLAoJICBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmgsCgkgIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuYywgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglSZW1vdmVkIFVzZXJfRGlyZWN0RHJhd19HZXRDYXBzLiBVc2luZyBNYWluX0RpcmVjdERyYXdfR2V0Q2FwcyBpbnN0ZWFkLAoJYW5kIHRoZSBVc2VyIGNvbnN0cnVjdG9yIGZpbGxpbmcgaW4gdGhlIG1haW4gY2FwYWJpbGl0eSBiaXRzLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaWxsIGluIHNvbWUgb2YgdGhlIGRkcmF3IEhBTCBmaWVsZHMuCglDYWxsIHRoZSBzZXRfZXhjbHVzaXZlX21vZGUgY2FsbGJhY2sgd2hlbiBuZWNlc3NhcnkuCglBZGRlZCBhIE1haW5fRGlyZWN0RHJhd19HZXRDYXBzIG1ldGhvZC4KCVJlbW92ZWQgcmVmZXJlbmNlcyB0byBvYnNvbGV0ZSBESUJUZXh0dXJlIHN1cmZhY2UgY2xhc3MuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIGdhbW1hIGNvbnRyb2wgb24gdGhlIERpcmVjdERyYXcgcHJpbWFyeSB3aW5kb3cuCglFbnN1cmVkIHRoYXQgdGhlIHByaW1hcnkgd2luZG93IGlzIGNyZWF0ZWQgYmVmb3JlIHRoZSBjb25zdHJ1Y3RvciByZXR1cm5zLgoJRmxhZyB0aGUgcHJpbWFyeSB3aW5kb3cgYXMgdHJhbnNwYXJlbnQgc28gbW91c2UgY2xpY2tzIHBhc3MgdGhyb3VnaCBpdC4KCVB1dCB0aGUgcHJpbWFyeSB3aW5kb3cgaGFuZGxlIGludG8gYSByZXNlcnZlZCBmaWVsZCBmb3IgeDExZHJ2IEhBTCB1c2UuCgoJKiBkbGxzL01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdHlwbyBzbyB0aGF0IHdpbnRydXN0IGlzIGJ1aWx0LgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWd1cmluZy5zZ21sOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglBZGQgYSBtaXNzaW5nIDwvc2VjdDM+LgoKCSogZGxscy93c29jazMyL3NvY2tldC5jOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglVc2Ugb2YgcHJvcGVyIHRlc3QgZ2V0cyByaWQgb2YgYSBzaWduZWQvdW5zaWduZWQgd2FybmluZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIHRoZSBkZHJhdyBIQUwgYWNjZXNzIGVzY2FwZSAoRENJQ09NTUFORCkgaW4geDExZHJ2LgoKCSogY29udHJvbHMvY29tYm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgcmVkdW5kYW50IHNlbmRpbmcgb2YgV01fRFJBV0lURU0gbWVzc2FnZSB0byBvd25lcmRyYXduCgljb21ib2JveC4KCjIwMDEtMDQtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvbHN0ci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXggc29tZSBjcmFzaCBvbiBiYWQgcGFyYW1ldGVyIGNvbmRpdGlvbnMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgX3d0b2kgYW5kIF93dG9sLgoKCSogZGxscy94MTFkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L2RnYTIuYywgZGxscy94MTFkcnYvZGdhMi5oLAoJICBkbGxzL3gxMWRydi94MTFkZHJhdy5jLCBkbGxzL3gxMWRydi94MTFkZHJhdy5oLAoJICBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBkbGxzL3gxMWRydi94dmlkbW9kZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCB0aGUgWEY4NkRHQTIgZHJpdmVyIGZvciB0aGUgZGRyYXcgSEFMLgoJRW50ZXJlZCBzb21lIGJhc2ljIEhBTCBkZXZpY2UgY2FwYWJpbGl0aWVzIGRhdGEuCglBZGRlZCBhIEdldERyaXZlckluZm8gaGFuZGxlci4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLAoJICBkbGxzL3dpbnRydXN0Ly5jdnNpZ25vcmUsIGRsbHMvd2ludHJ1c3QvTWFrZWZpbGUuaW4sCgkgIGRsbHMvd2ludHJ1c3Qvd2ludHJ1c3Quc3BlYywgZGxscy93aW50cnVzdC93aW50cnVzdF9tYWluLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0B4czRhbGwubmw+CglBZGRlZCBuZXcgZGxsIHdpbnRydXN0LmRsbCB3aXRoIGEgc3R1YiBmb3IgV2luVmVyaWZ5VHJ1c3QoKS4KCgkqIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZHN1cmZhY2UvZ2FtbWEuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCB0aGUgSURpcmVjdERyYXdHYW1tYUNvbnRyb2wgaW50ZXJmYWNlLgoKCSogZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wcGQuYzoKCUlhbiBQaWxjaGVyIDxpYW4ucGlsY2hlckBob21lLmNvbT4KCU1ha2UgcGFwZXIgc2l6ZSBhbmQgYmluIHR5cGUgaGFuZGxpbmcgbW9yZSBsaWtlIFdpbmRvd3MgZHJpdmVycy4KCgkqIG9iamVjdHMvZm9udC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBOVUxMIGNoZWNrIGZvciBscG5GaXQgaW4gR2V0VGV4dEV4dGVudEV4UG9pbnRXLgoKCSogZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS90c194bGliLmgsIHRzeDExL1gxMV9jYWxscywKCSAgdHN4MTEvdHNfeGxpYi5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCUNvcHkgdGhlIGZpcnN0IDEyOCBjb2xvcnMgZnJvbSB0aGUgZGVmYXVsdCBjb2xvcm1hcCB0byBXaW5lJ3MgcHJpdmF0ZQoJY29sb3JtYXAgd2hlbiB1c2luZyAnc2hhcmVkJyBjb2xvcnMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUxldCBMT0FEX0xJQlJBUllfQVNfREFUQUZJTEUgbG9hZCB0aGUgYnVpbHRpbiBkbGwgaWYgbG9hZGluZyBhIG5hdGl2ZQoJRExMIGZhaWxlZCwgc28gdGhhdCB3aW5lc2V0dXB0aydzIGZha2Utd2luZG93cyBpbnN0YWxsYXRpb24gd29yay4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglTbGlnaHRseSBpbXByb3ZlIGtleWJvYXJkIHRyYWNraW5nIGluIGNvbWJvYm94LgoKCSogY29udHJvbHMvZWRpdC5jOgoJRGFuIEVuZ2VsIDxkZW5nZWxAc291cmNlaGFydmVzdC5jb20+CglTZXQgdGhlIGJhY2tnb3VuZCBtb2RlIHRvIG9wYXF1ZSB0byBwYWludCBoaWdobGlnaHRlZCB0ZXh0LgoKCSogZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywKCSAgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsCgkgIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3RodW5rcy5jLAoJICBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIGRkcmF3IEhBTCBhbmQgZ2FtbWEgcmFtcCBzdHVmZiB0byBpbXBsZW1lbnRhdGlvbiBzdHJ1Y3R1cmVzLgoJQWRkZWQgYSBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSB0byBmbGlwX2RhdGEgYW5kIGZsaXBfdXBkYXRlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBDb2VyY2VESUJTZWN0aW9uJ3MgQXV4TW9kIGhhbmRsaW5nLiBBZGRlZCBDb2VyY2VESUJTZWN0aW9uMi4KCgkqIG9sZS91dWlkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW5jbHVkZSB0aGUgR1VJRHMgaW4gZGRyYXdpLmggaW4gdGhlIGxpYndpbmVfdXVpZC5hIGxpYnJhcnkuCgoJKiBpbmNsdWRlL2RkcmF3aS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglZZXQgbW9yZSBzdHVmZiBmb3IgZGRyYXdpLmgsIGluY2x1ZGluZyBzb21lIEdldERyaXZlckluZm8gR1VJRHMuCgoJKiBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sCgkgIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZHJhdy92ZXJzaW9uLnJjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGQgdmVyc2lvbiByZXNvdXJjZSB0byBkZHJhdy5kbGwsIHZlcnNpb25lZCB0byBEaXJlY3RYIDcuMC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJR2V0SXRlbVNwYWNpbmcodHJ1ZSk6IFJldHVybiB0aGUgZGVmYXVsdCBpdGVtIHNwYWNpbmcgaWYgdGhlIHZpZXcgaXMKCUxWU19JQ09OLCBhbmQgdGhlIGN1cnJlbnQgJ2l0ZW0gc2l6ZScgb3RoZXJ3aXNlLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURpc3BsYXkgdGhyZWFkIGlkIGluc3RlYWQgb2YgJWZzIGluIHNub29wIHRyYWNlLgoKCSogZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEb24ndCByZXN0b3JlIHRoZSBzYXZlZCBrZXlib2FyZCBhdXRvcmVwZWF0IGNvbmZpZywgc2luY2UgdGhlIGNvbmZpZwoJc2F2ZSBjb2RlIGl0c2VsZiB3YXMgZGlzYWJsZWQgYSB3aGlsZSBhZ28uLi4KCgkqIGluY2x1ZGUvZDNkdHlwZXMuaCwgaW5jbHVkZS9kM2R2ZWMuaW5sLCBpbmNsdWRlL2QzZC5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglEaXJlY3QzRCBoZWFkZXIgdXBkYXRlLgoKCSogaW5jbHVkZS9kM2RoYWwuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTmV3IGhlYWRlciBkM2RoYWwuaCwgdGhlIERpcmVjdDNEIEhBTCBkZXZpY2UgZHJpdmVyIGludGVyZmFjZS4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUhhbmRsZSB0aGUgJWYgY2FzZSBpbiB3c3ByaW50Zi4KCgkqIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglDaGFuZ2VkIHRoZSBzcGVjIGRlZmluaXRpb24gb2YgKnMqcHJpbnRmIGZyb20gKnN0ciB0byBwdHIsIHNpbmNlIHRoYXQKCXBhcmFtZXRlciBpcyBhIGRlc3RpbmF0aW9uIGJ1ZmZlciB0aGF0IG1heSBvbmx5IGNvbnRhaW4gZ2FyYmFnZSBvbiBlbnRyeS4KCgkqIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywKCSAgZGxscy9kcGxheXgvdmVyc2lvbi5yYywgZGxscy9kcGxheXgvLmN2c2lnbm9yZToKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkIHZlcnNpb24gcmVzb3VyY2UgdG8gZHBsYXl4LmRsbCwgdmVyc2lvbmVkIHRvIERpcmVjdFggNy4wLgoKCSogaW5jbHVkZS93aW5lL3dpbmVfY29tbW9uX3Zlci5yYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJR2VuZXJhbGl6ZSB0aGUgV2luZSB2ZXJzaW9uIHJlc291cmNlIHRlbXBsYXRlIGEgYml0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfQ2EucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0NzLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VvLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Fcy5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfRmkucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0ZyLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9IdS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSXQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0phLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Lby5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfTmwucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX05vLnJjLAoJICBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QbC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUHQucmMsCgkgIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1J1LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9Tay5yYywKCSAgZGxscy9zaGVsbDMyL3NoZWxsMzJfU3YucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1dhLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgIlN5c3RlbSIgZm9udCBieSAiSGVsdiIgaW4gc2hlbGwzMiAiQWJvdXQiIGRpYWxvZy4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgT0xFMzIuSXNBY2NlbGVyYXRvci4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIFNUR19FX0ZJTEVBTFJFQURZRVhJU1RTIGluIG9sZTMyLlN0Z09wZW5TdG9yYWdlIGlmIHRoZSBmaWxlIGlzCglub3QgYSBzdG9yYWdlIG9iamVjdC4KCgkqIG9iamVjdHMvZGMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglNb3ZlIGltcGxlbWVudGF0aW9uIG9mIENyZWF0ZURDMTYgdG8gQ3JlYXRlRENBLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglBbGxvY2F0ZSBiaXRtYXAgb2JqZWN0cyBpbiB0aGUgbGFyZ2UgaGVhcCBhcmVhLgoKCSogZGxscy93aW5lcHMvdGV4dC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgMCBjb3VudCBoYW5kbGluZyBpbiBQU0RSVl9UZXh0LgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIE1TIFNoZWxsIERsZyBmb250IHRvIHRoZSBzZXQgb2YgZGVmYXVsdCBzYW5zIHNlcmlmIGZvbnRzLgoKCSogZGxscy9tc3ZjcnQvdGltZS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBNU1ZDUlRfY2xvY2sgcmV0dXJuIHR5cGUuCgoyMDAxLTA0LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sOgoJQWRkZWQgbWlzc2luZyA8bGlzdGl0ZW0+LgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL29iamVjdC5oOgoJUmVwYWlyZWQgc2hhcmVkIFBFIGRhdGEgc2VjdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2VyLnNnbWw6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG5vdGUgb24gdXNpbmcgc2hlbGwgc2NyaXB0cyBhcyBBZURlYnVnIHNldHVwLCBhZGRlZAoJQnJlYWtPbkRsbExvYWQgdmFyaWFibGUuCgoJKiBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglBIGZldyBmaXhlcy4KCgkqIGRsbHMvbXNhY20vZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG9wZW5pbmcgb2Ygc29tZSBkcml2ZXJzLgoKCSogZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY2FsbGJhY2sgcGFyYW1ldGVycyAoYm9ndXMgaFdhdmUpOyBhZGRlZCBhY20gY29udmVyc2lvbiBmb3IKCXdhdmVJbi4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglFcmljIFBvdWVjaCA8ZXJpYy5wb3VlY2hAd2FuYWRvby5mcj4KCUFsbG93IE1DSV9TRVQgdG8gY2hhbmdlIHdhdmVGb3JtYXQgZm9yIHJlY29yZGluZy4KCUZpeGVkIGJ1ZmZlciBoYW5kbGluZyBvbiByZWNvcmRpbmcgZW5kLgoJRml4ZWQgc2l6ZSBvZiByZWNvcmRlZCBkYXRhIGluIG1taW8gZmlsZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPGVyaWMucG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJ1ZmZlcnMgaXNzdWUgaW4gcmVjb3JkaW5nLgoJWmVyb2VkIHVubmVjZXNzYXJ5IHNlY29uZCBwYXJhbWV0ZXIgZm9yIFdJTV9EQVRBIG5vdGlmaWNhdGlvbi4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB3YW5hZG9vLmZyPgoJRW5oYW5jZWQgcm9idXN0bmVzcyBhdCBzdGFydHVwLgoKCSogd2luZG93cy9tc2dib3guYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIE1CXypNT0RBTCBzdHlsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSAqZG9uJ3QqIE1vdmVXaW5kb3coKSB0aGUgc3RhdHVzIGJhciBpZiBDQ1NfTk9SRVNJWkUgaXMgc3BlY2lmaWVkLAoJICBhbmQgdXNlIFNldFdpbmRvd1BvcyBpbnN0ZWFkIGZvciBvbmUgb2YgdGhlIE1vdmVXaW5kb3coKXMKCS0gY2FsbCBTVEFUVVNCQVJfR2V0SW5mb1B0ciAqb25jZSogbGlrZSBXaW5kb3dzIGRvZXMsIG5vdCB0d2ljZSAodXNlZCB0byBiZQoJICBpbiBldmVyeSBzdWIgZnVuY3Rpb24sIHRvbykKCS0gcmVtZW1iZXIgaHduZFBhcmVudCBmcm9tIGNyZWF0ZSBzdHJ1Y3QgdG8gdXNlIGluIGF0IGxlYXN0IFdNX0NSRUFURSBhbmQKCSAgV01fU0laRSBpbnN0ZWFkIG9mIEdldFBhcmVudCgpIGxpa2UgaW4gV2luZG93cwoJLSBhZGRlZCBEZWZXaW5kb3dQcm9jIGNhbGwgdG8gV01fU0laRSBsaWtlIGluIFdpbmRvd3MKCS0gYWRkZWQgSW52YWxpZGF0ZVJlY3QsIFVwZGF0ZVdpbmRvdyB0byBXTV9DUkVBVEUgbGlrZSBpbiBXaW5kb3dzCgktIG11Y2ggbW9yZSB2ZXJib3NlICtzdGF0dXNiYXIgb3V0cHV0CgktIHJlbmFtZSBwYXJ0X251bSB0byBuUGFydCBmb3IgY29uc2lzdGVuY3kKCS0gYWRkZWQgbmNsbS5jYlNpemUgdG8gU3lzdGVtUGFyYW1ldGVyc0luZm9BIGNhbGwKCS0gYWRkZWQgRklYTUUgdG8gU1RBVFVTQkFSX1NldFBhcnRzCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTZXQgdGhlIGN1c3RvbSBkaWFsb2cgYm94IHRvIHRoZSBib3R0b20gb2YgdGhlIFotb3JkZXIuCgoyMDAxLTA0LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kcGxheXgvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L2RwaW5pdC5oLCBkbGxzL2RwbGF5eC9kcGxheS5jLAoJICBkbGxzL2RwbGF5eC9kcGxheV9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXlzcC5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLAoJICBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwgZGxscy9kcGxheXgvbG9iYnlzcC5jLAoJICBkbGxzL2RwbGF5eC9sb2JieXNwLmgsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsCgkgIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmgsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9vYmpiYXNlLmgsCgkgIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL3V1aWQuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIFByb3ZpZGUgbG9iYnkgcHJvdmlkZXIgQ09NIG9iamVjdCBoZWFkZXIgZmlsZSBhbmQgc3R1YiBpbXBsZW1lbnRhdGlvbgoJLSBCcmVhayBvdXQgZHBsIGFuZCBkcCBzZXJ2aWNlIHByb3ZpZGVyIGludGlhbGl6YXRpb24KCS0gQWRkIG1pc3NpbmcgZGVmaW5pdGlvbiBvZiBFX1BFTkRJTkcKCS0gUmVzb2x2ZSBhIGZldyBmaXhtZXMKCS0gRml4IGluY2x1ZGVzIGZvciBkcGxheS5oCgoJKiBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVzc2FnZS5oLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUFkZGVkIGZpcnN0L2xhc3QgbWVzc2FnZSBmaWx0ZXJzIHRvIE1TR19JbnRlcm5hbEdldE1lc3NhZ2UgdG8gYXZvaWQKCWJ1c3kgd2FpdHMuCgoJKiBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBpbmNsdWRlL3dpbmNvbi5oLAoJICB3aW4zMi9jb25zb2xlLmM6CglNaWNoYWVsIFN0ZWZhbml1YyA8bXN0ZWZhbmlAcmVkaGF0LmRlPgoJLSBhZGRlZCBzdHVicyBmb3IgdGhyZWUgY29uc29sZSBmdW5jdGlvbnMKCS0gdXBkYXRlZCB3aW5jb24uaAoKCSogb2xlL29sZTJubHMuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVNtYWxsIHR5cG8gZml4LgoKCSogd2luZG93cy93aW5wb3MuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVNldFdpbmRvd1JnbiBzaG91bGRuJ3QgYWN0aXZhdGUgdGhlIHdpbmRvdy4KCjIwMDEtMDQtMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdGhlIHNpZ25hdHVyZSBvZiBfX0dldE1haW5BcmdzIGFuZCBfX2dldG1haW5hcmdzIChmcm9tIG1zdmNydCkuCgoJKiBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvY29uc29sZS5jLCBkbGxzL21zdmNydC9jcHAuYywKCSAgZGxscy9tc3ZjcnQvY3R5cGUuYywgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9kaXIuYywKCSAgZGxscy9tc3ZjcnQvZW52aXJvbi5jLCBkbGxzL21zdmNydC9lcnJuby5jLCBkbGxzL21zdmNydC9leGl0LmMsCgkgIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywKCSAgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywKCSAgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsCgkgIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgZGxscy9tc3ZjcnQvc3RyaW5nLmMsIGRsbHMvbXN2Y3J0L3RocmVhZC5jLAoJICBkbGxzL21zdmNydC90aW1lLmMsIGRsbHMvbXN2Y3J0L3djcy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglJbmNsdWRlIHRoZSBtc3ZjcnQgaGVhZGVycywgcmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9ucy4KCUZpeGVkIHRoZSBzaWduYXR1cmUgb2YgYSBmZXcgZnVuY3Rpb25zLgoJRG9uJ3QgdXNlIHdjcyogZnVuY3Rpb25zLCB1c2UgKlcgKGZyb20gdW5pY29kZS5oKSBpbnN0ZWFkLgoKCSogaW5jbHVkZS90Y2hhci5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVByZXZlbnQgbXVsdGlwbGUgZGVmaW5pdGlvbnMgY2F1c2VkIGJ5IE1TVkNSVCBoZWFkZXJzLgoKCSogZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBbGxvdyB0aGUgTWFrZWZpbGUuaW4gdG8gZGVmaW5lIEVYVFJBREVGUyBhbmQgYWRkIGl0IHRvIERFRlMuCgoJKiBpbmNsdWRlL21zdmNydC9zeXMvc3RhdC5oLCBpbmNsdWRlL21zdmNydC9zeXMvdGltZWIuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvc3lzL3R5cGVzLmgsIGluY2x1ZGUvbXN2Y3J0L3N5cy91dGltZS5oLAoJICBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21zdmNydC9jb25pby5oLAoJICBpbmNsdWRlL21zdmNydC9jdHlwZS5oLCBpbmNsdWRlL21zdmNydC9kaXJlY3QuaCwKCSAgaW5jbHVkZS9tc3ZjcnQvZG9zLmgsIGluY2x1ZGUvbXN2Y3J0L2ZjbnRsLmgsIGluY2x1ZGUvbXN2Y3J0L2lvLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3Byb2Nlc3MuaCwgaW5jbHVkZS9tc3ZjcnQvc3RkZGVmLmgsCgkgIGluY2x1ZGUvbXN2Y3J0L3N0ZGlvLmgsIGluY2x1ZGUvbXN2Y3J0L3N0ZGxpYi5oLAoJICBpbmNsdWRlL21zdmNydC9zdHJpbmcuaCwgaW5jbHVkZS9tc3ZjcnQvdGltZS5oLAoJICBpbmNsdWRlL21zdmNydC93Y2hhci5oLCBpbmNsdWRlL21zdmNydC93Y3R5cGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgaGVhZGVycyBmb3IgdGhlIG1zdmNydCBsaWJyYXJ5LgoKCSogY29udHJvbHMvZWRpdC5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCUFkZGVkIG1hcHBpbmdzIGZvciBXTV9DSEFSVE9JVEVNIGFuZCBXTV9NRU5VQ0hBUiBtZXNzYWdlcy4KCVJlbW92ZWQgbWFwcGluZyBvZiAxNi1iaXQgZWRpdCBtZXNzYWdlcyBpbiB0aGUgZ2VuZXJpYyByb3V0aW5lcy4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYzoKCVBhc3MgdGhlIGNvcnJlY3Qgc3RyaW5nIGxlbmd0aCB0byBSZWdTZXRWYWx1ZUV4QS4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCVJlZ1NldFZhbHVlRXhBL1c6IGZpeGVkIFJFR19TWiBzdHJpbmcgbGVuZ3RoIGhhbmRsaW5nIGZvciBXaW45NS4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgc3R1YiBmb3IgV1NBU2VuZC4KCgkqIGRsbHMvbnRkbGwvcmVnLmMsIHNlcnZlci9yZWdpc3RyeS5jOgoJRml4ZWQgaGFuZGxpbmcgb2YgXFxSZWdpc3RyeSBwcmVmaXguCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJU3R1YiBmb3IgT2xlTG9hZFBpY3R1cmVFeC4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJTWljaGFlbCBTdGVmYW5pdWMgPG1zdGVmYW5pQHJlZGhhdC5kZT4KCUZpeCBmb3Igc21hbGwgdHlwby4KCgkqIGRsbHMvbXN2Y3J0L2NvbnNvbGUuYywgZGxscy9tc3ZjcnQvY3BwLmMsIGRsbHMvbXN2Y3J0L2N0eXBlLmMsCgkgIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvZGlyLmMsIGRsbHMvbXN2Y3J0L2Vudmlyb24uYywKCSAgZGxscy9tc3ZjcnQvZXJybm8uYywgZGxscy9tc3ZjcnQvZXhjZXB0LmMsIGRsbHMvbXN2Y3J0L2V4aXQuYywKCSAgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9oZWFwLmMsIGRsbHMvbXN2Y3J0L2xvY2FsZS5jLAoJICBkbGxzL21zdmNydC9tYWluLmMsIGRsbHMvbXN2Y3J0L21hdGguYywgZGxscy9tc3ZjcnQvbWJjcy5jLAoJICBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5oLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYywKCSAgZGxscy9tc3ZjcnQvcHJvY2Vzcy5jLCBkbGxzL21zdmNydC9zdHJpbmcuYywgZGxscy9tc3ZjcnQvdGhyZWFkLmMsCgkgIGRsbHMvbXN2Y3J0L3RpbWUuYywgZGxscy9tc3ZjcnQvd2NzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUFkanVzdCB0aGUgJ01TVkNSVF8nIHByZWZpeCB0byBtYXRjaCB0aGUgbXN2Y3J0IGhlYWRlcnMKCVByZWZpeCBpbnRlcm5hbCBtZXRob2RzIHdpdGggJ21zdmNydF8nIGluc3RlYWQgb2YgJ01TVkNSVF8nLCAnX19NU1ZDUlRfJywgZXRjLgoJUmVtb3ZlICdfY2RlY2wnLCBpdCdzIHVubmVjZXNzYXJ5CgoyMDAxLTA0LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvd2luZXRlc3QvdGVzdC5wbCwgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS54cywgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuYzoKCVN0b3JlIHRoZSBmdW5jdGlvbiBwb2ludGVyIGluIHRoZSAlcHJvdG90eXBlcyBoYXNoIGluc3RlYWQgb2YgdGhlCglmdW5jdGlvbiBuYW1lIHRvIGF2b2lkIGxvb2tpbmcgaXQgdXAgb24gZXZlcnkgY2FsbC4KCUZpeGVkIGNhbGxiYWNrIHRodW5rcyB0byB1c2Ugc3RkY2FsbCBjYWxsaW5nIGNvbnZlbnRpb24uCgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEaXNwbGF5IHRocmVhZCBpZCBpbnN0ZWFkIG9mICVmcyBpbiByZWxheSB0cmFjZS4KCgkqIGRsbHMva2VybmVsL3RpbWUuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUZpbGwgaW4gU3RhbmRhcmROYW1lIGZpZWxkIGluIHN0cnVjdCByZXR1cm5lZCBmcm9tIEdldFRpbWVab25lSW5mb3JtYXRpb24uCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsCgkgIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIHN0dWJzIGZvciBmdW5jdGlvbnMgdXNlZCBieSBuZXdlciBycGNydDQgZGxscy4KCgkqIG9iamVjdHMvZGMuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglHZXREZXZpY2VDYXBzOiBtYWtlIHN1cmUgdGhlIGRldkNhcHMgZmllbGQgaXMgbm90IE5VTEwgYmVmb3JlCglkZXJlZmVyZW5jaW5nIGl0LgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBcmcgMyBvZiBDb0dldENsYXNzT2JqZWN0IGlzIENPU0VSVkVSSU5GTyosIGFkZGVkIHNvbWUgbW9yZSBkZWJ1Zy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsX0RlLnJjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcmFuc2xhdGlvbnMgZm9yIEdlcm1hbiBsYW5ndWFnZS4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgR2V0Q29udmVydFN0ZyBzdHViLgoKCSogZGxscy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFjdHVhbGx5IHByaW50IHRoZSBndWlkcyBpbiBEbGxHZXRDbGFzc09iamVjdCgpLgoKCSogUkVBRE1FLCB0b29scy93aW5laW5zdGFsbDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHVuaW5zdGFsbCBoaW50cy4KCgkqIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCU1vZGlmeSBkZWJ1Z2dlciB0byB1bmRlcnN0YW5kIHNwZWNpYWwgdW5kb2N1bWVudGVkICJOYW1lIFRocmVhZCIKCWV4Y2VwdGlvbiBmcm9tIE1TIFZDNi4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZWFsbHkgZG8gbm90IHJvbGwgdXAgaWYgc2VsZWN0aW9uIGlzIGJlaW5nIHRyYWNrZWQgYnkgYXJyb3cga2V5cyBpbgoJdGhlIGRyb3Bkb3duIGxpc3Rib3guCgoJKiBkbGxzL3VzZXIvZGRlbWwuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQHhzNGFsbC5ubD4KCVdoZW4gY2FsbGluZyBDcmVhdGVNdXRleCgpIGhhbmRsZSB0aGUgY2FzZSB3aGVuIHRoZSBtdXRleCBpcyBhbHJlYWR5CgljcmVhdGVkIGluIGFub3RoZXIgcHJvY2Vzcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUFmdGVyIGFuIGl0ZW0gdGV4dCBjaGFuZ2VzLCB0aGUgcmVjdGFuZ2xlIHdpZHRoIHNob3VsZCBiZQoJcmVjYWxjdWxhdGVkLgoKMjAwMS0wNC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmM6CglEb24ndCB1c2UgVEhSRUFEX0lkVG9URUIgaW4gRW51bVRocmVhZFdpbmRvd3MuCgoJKiB1bmljb2RlL3djdG9tYi5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJTWFrZSBzdXJlICd1c2VkJyBpcyBzZXQgdG8gMCBpZiBubyBjb252ZXJzaW9ucyB0YWtlIHBsYWNlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeGVkIHNjcm9sbGluZyBvZiBsaXN0dmlldyB3aXRoIGEgbW91c2Ugd2hlZWwuCgoJKiBvbGUvb2xlMm5scy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSW1wbGVtZW50IFRJTUVfRk9SQ0UyNEhPVVJGT1JNQVQgYW5kIFRJTUVfTk9USU1FTUFSS0VSIGZsYWdzIGluCglPTEVfR2V0Rm9ybWF0QS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jLCBjb250cm9scy9tZW51LmMsIGRsbHMva2VybmVsL3RodW5rLmMsCgkgIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZmlsZXMvZHJpdmUuYywgbG9hZGVyL25lL21vZHVsZS5jLAoJICBtc2Rvcy9pbnQyMS5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglBZGRlZCBUQVNLX0dldFB0ci9UQVNLX0dldEN1cnJlbnQgZnVuY3Rpb25zIHRvIGdldCB0aGUgVERCIGZvciBhIHRhc2sKCWhhbmRsZS4KCgkqIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJVW5pZmllZCAxNi1iaXQgYW5kIDMyLWJpdCBzY2hlZHVsaW5nIGEgYml0IG1vcmUuCgoJKiBtc2Rvcy9kb3Njb25mLmM6CglEb24ndCBjYWxsIHN0cnRvayB0d2ljZSBpZiBpdCBmYWlsZWQgdGhlIGZpcnN0IHRpbWUuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jOgoJTWFrZSBzdXJlIHRoZSBwcm9jZXNzIHNvY2tldCBpcyBub24tYmxvY2tpbmcuCglEb24ndCBmYWlsIGlmIG5vdGhpbmcgcmVhZHkgb24gcmVjdm1zZyBmb3IgYSBmaWxlIGRlc2NyaXB0b3IuCgoJKiBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgb2JqZWN0cy9mb250LmMsIGluY2x1ZGUvd2luZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggbWVtYmVyIG5hbWVzIGluIE5FV1RFWFRNRVRSSUNFWCBzdHJ1Y3RzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRXJhc2UgdGhlIGluLW1lbW9yeSBEQyBmb3IgdHJlZXZpZXcgYW5kIGZpeGVzIHRoZSByZWN0YW5nbGUgY2FsY3VsYXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJU2V0IGJhY2tncm91bmQgbW9kZSB0byB0cmFuc3BhcmVudCBiZWZvcmUgY2FsbGluZyBvd25lci1kcmF3biB1c2VyCgloYW5kbGluZy4KCjIwMDEtMDQtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lcHMvZm9udC5jLAoJICBkbGxzL3dpbmVwcy9pbml0LmMsIGRsbHMvd2luZXBzL3BzZHJ2LmgsIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLAoJICBkb2N1bWVudGF0aW9uL2NvbmZpZ3VyaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vZm9udHMuc2dtbCwKCSAgZG9jdW1lbnRhdGlvbi9wcmludGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3BzZHJ2LnJlZywKCSAgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtdXNlci5zZ21sOgoJSWFuIFBpbGNoZXIgPGlhbi5waWxjaGVyQGhvbWUuY29tPgoJVmFyaW91cyByZWdpc3RyeS1yZWxhdGVkIFBvc3RTY3JpcHQgZHJpdmVyIGVuaGFuY2VtZW50cy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglEbyBub3Qgc2VuZCB0aGUgRU5fQ0hBTkdFIG5vdGlmaWNhdGlvbiBtZXNzYWdlIHVudGlsIHRoZSBzZWxlY3Rpb24KCXN0YXJ0IGFuZCBlbmQgdmFsdWVzIGFyZSBmaWxsZWQgaW4uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJR3VzdGF2byBOb3JvbmhhIFNpbHZhIChLb1YpIDxrb3ZAZGViaWFuLm9yZz4KCUFkZGVkIFVTIGludGVybmF0aW9uYWwga2V5Ym9hcmQuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9zeXNwYXJhbXMuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJQWRkIHZhbHVlIDEwNiB0byBTeXN0ZW1QYXJhbWV0ZXJzSW5mby4KCjIwMDEtMDMtMzEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS5QTCwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuaW4sCgkgIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLndpbjMyLCBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnBtLAoJICBwcm9ncmFtcy93aW5ldGVzdC93aW5lLnhzLCBwcm9ncmFtcy93aW5ldGVzdC93aW5ldGVzdC5jOgoJSm9obiBGIFN0dXJ0eiA8anN0dXJ0ekBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBjYWxsYmFjayBmdW5jdGlvbnMuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRG9uJ3QgdHJ5IHRvIGNyZWF0ZSBmaWxlIHR3aWNlIGluIHRoZSBOVUxMIGZpbGVuYW1lIGNhc2UgZm9yCglTdGdDcmVhdGVEb2NGaWxlLgoKCSogY29udHJvbHMvZWRpdC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlIGZvcm1hdCBlbmdpbmUgdG8gcmVkdWNlIGZsaWNrZXIuCgoyMDAxLTAzLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGFwcGxpY2F0aW9uLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGEgZmV3IG9wdGlvbnMKCShEZXNrdG9wLCBNYW5hZ2VkLCBTY3JlZW5EZXB0aCBhbmQgU3luY2hyb25vdXMpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCB1bmRlZmluZWQgQyBjb25zdHJ1Y3RzICh2YWwgYXNzaWdubWVudCBpbiBleHByZXNzaW9ucyB1c2luZyBpdCwKCXBvc3RpbmMgb3BlcmF0b3JzIGluIG1hY3JvcykuCgoJKiBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYzoKCURvbid0IGxvYWQgdXNlcjMyIHRvbyBlYXJseSBvbiBmb3IgMTYtYml0IGFwcHMsIHNvIHRoYXQgYXBwLXNwZWNpZmljCgljb25maWcgY2FuIGJlIGF2YWlsYWJsZSB3aGlsZSBsb2FkaW5nIGl0LgoKCSogd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglHZXQgYW5kIHByaW50IGNsYXNzIG5hbWUgZm9yIHJpZ2h0IHdpbmRvdyBpbiBXSU5fV2Fsa1dpbmRvd3MuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHdpbmRvd3MvdXNlci5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLAoJICBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oOgoJQWx3YXlzIGxvYWQgdGhlIDMyLWJpdCBkbGwgY29udGFpbmluZyBhIGdpdmVuIDE2LWJpdCBidWlsdGluLgoJQ2hlY2sgdGhlIG1vZHVsZSBuYW1lIGluIGFkZGl0aW9uIHRvIHRoZSBmaWxlIG5hbWUgd2hlbiBsb2FkaW5nIGEKCTE2LWJpdCBidWlsdGluIGRsbC4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsCgkgIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCS0gQWx3YXlzIHVzZSBhIGRvdWJsZS1idWZmZXJlZCB2aXN1YWwgaWYgb25lIGlzIGF2YWlsYWJsZS4KCS0gRW5zdXJlIHRoYXQgYWxsIGNvbG9ybWFwcyBjcmVhdGVkIHVzZSB0aGUgZG91YmxlLWJ1ZmZlcmVkIHZpc3VhbCBpZgoJICBpdCBleGlzdHMuIFRoaXMgcHJldmVudHMgcHJvYmxlbXMgd2hlcmUgRFJJIEdMIGltcGxlbWVudGF0aW9ucyBmYWlsCgkgIHRvIHdvcmsgdW5sZXNzIHRoZSBjb2xvcm1hcCB2aXN1YWwgbWF0Y2hlcyB0aGUgd2luZG93IHZpc3VhbCBtYXRjaGVzIHRoZQoJICBnbFggdmlzdWFsLgoJLSBHZXQgYXJvdW5kIHNpbWlsYXIgdmlzdWFsIGlzc3VlIHdpdGggdGhlIGRlZmF1bHQgR0wgY29udGV4dCBjcmVhdGVkIGZvcgoJICBhcHBzIHRoYXQgZG9uJ3QgY3JlYXRlIHRoZWlyIG93biBjb250ZXh0cyBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBHTCBmdW5jdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJRml4ZWQgY29tbWFuZC1saW5lIGV4YW1wbGUuCgoyMDAxLTAzLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaCwgQU5OT1VOQ0U6CglSZWxlYXNlIDIwMDEwMzI2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTAzLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIGFkZGl0aW9uYWwgZGVmYXVsdHMgYW5kIHNhbXBsZXMgdG8gW2ZvbnRzXSBzZWN0aW9uLgoKMjAwMS0wMy0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2Mvb3B0aW9ucy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywKCSAgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywKCSAgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsCgkgIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3gxMWRydi5oOgoJQ2xlYW51cCBwcm9wZXJseSBvbiB4MTFkcnYgdW5sb2FkaW5nLgoJTW92ZWQgLS1zeW5jaHJvbm91cyBvcHRpb24gaW50byBjb25maWcgZmlsZS4KCVJlbW92ZWQgLS1kZXNrdG9wLCAtLWRpc3BsYXkgYW5kIC0tbGFuZ3VhZ2UgY29tbWFuZC1saW5lIG9wdGlvbnMuCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJLSBNQ0lfU0FWRSBzaG91bGQgb3ZlcndyaXRlIGl0cyBkZXN0aW5hdGlvbiBmaWxlLgoJLSB3aWRDbG9zZSgpIGlzIHNvbWV0aW1lcyBmYWlsaW5nLi4uIE1DSSAoaW4gV0FWRV9tY2lSZWNvcmRDYWxsYmFjaykKCSAgc2hvdWxkbid0IHF1ZXVlIHVwIGJ1ZmZlcnMgaWYgaXQga25vd3Mgd2UgYXJlIG5vIGxvbmdlciByZWNvcmRpbmcuCgoJKiBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGZpbGVzL3Byb2ZpbGUuYywgbWVtb3J5L2xvY2FsLmMsCgkgIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgd2luZG93cy91c2VyLmM6CglTbWFsbCBkbGwgc2VwYXJhdGlvbiBmaXhlcy4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCVVzZSBURUIgc3RhdGljIGJ1ZmZlciBmb3IgVW5pY29kZSBjb252ZXJzaW9uLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGhhbmRsaW5nIG9mIC5ocHAgZmlsZXMgKGFub3RoZXIgZXh0ZW5zaW9uIGZvciBDKysgaGVhZGVycykuCglUaGUgd3JhcHBlciBjb2RlIG5lZWRzIHRvIGltcG9ydCBkbGxzIHRvby4KCUFsbCB0aGUgZ2VuZXJhdGVkIHdyYXBwZXIgZmlsZXMgd2VyZSBpZGVudGljYWwsIHRoZSAndmFyaWFibGUnCglzdWJzaXR1dGlvbiB3YXMgZG9uZSBvbiB0aGUgdGVtcGxhdGUgaXRzZWxmLiBPdXBzIQoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0VmVyc2lvbkluZm8zMlRvMTY6IHRoZSBlbmQgb2YgdGhlIGNoaWxkIGxpc3QgbWF5IGFsc28gYmUgbWFya2VkCglieSBhIDAtYnl0ZSBjaGlsZC4KCjIwMDEtMDMtMjIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvc2VydmVyLmgsCgkgIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNlcnZlci9hc3luYy5jLAoJICBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmM6CglNaWNoYWVsIE1jQ29ybWFjayA8bWNjb3JtYWNAYWFsczI3LmFsY2F0ZWwuY29tLmF1PgoJVXNlIHBvbGwoKSBvbiB0aGUgY2xpZW50LXNpZGUgZHVyaW5nIHNlcnZlciB3YWl0cyB0byBpbXBsZW1lbnQKCW92ZXJsYXBwZWQgSS9PLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2NvbnNvbGUuYywKCSAgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2NvbnNvbGUuYzoKCVVzZSB0aGUgbmV3IHNlbmRfZmQgbWVjaGFuaXNtIGZvciB0aGUgc2V0X2NvbnNvbGVfZmQgc2VydmVyIHJlcXVlc3QuCgoJKiBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsCgkgIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAbWFuZHJha2Vzb2Z0LmNvbT4KCUFkZGVkIG5lZWRlZCBzdHJpbmcuaCBpbmNsdWRlcy4KCjIwMDEtMDMtMjEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLAoJICB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUNsZWFuZWQgdXAgYXNzdW1wdGlvbnMgYWJvdXQgV1NfQ0hJTEQgZmxhZyBzbyB0aGF0IHdlIGNhbiBhbGxvdyBpdCB0bwoJYmUgY2hhbmdlZCBpbiBTZXRXaW5kb3dMb25nLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW5jcmVhc2UgZGVidWcgYnVmZmVyIHNpemUgdXAgdG8gMTAyNCBieXRlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZXRlc3QvTWFrZWZpbGUuUEwsCgkgIHByb2dyYW1zL3dpbmV0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5ldGVzdC9NYWtlZmlsZS53aW4zMiwKCSAgcHJvZ3JhbXMvd2luZXRlc3QvdGVzdC5wbCwgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS5wbSwKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZS54cywgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3QuYywKCSAgcHJvZ3JhbXMvd2luZXRlc3Qvd2luZXRlc3Quc3BlYzoKCUFkZGVkIGZpcnN0IHZlcnNpb24gb2YgdGhlIFBlcmwgcmVncmVzc2lvbiB0ZXN0aW5nIGZyYW1ld29yay4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWcsIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwKCSAgbG9hZGVyL2xvYWRvcmRlci5jOgoJQWRkZWQgIioiIHdpbGRjYXJkIGVudHJ5IHRvIERsbE92ZXJyaWRlcyB0byByZXBsYWNlIERsbERlZmF1bHRzCglzZWN0aW9uOyB0aGlzIHdheSBpdCBjYW4gYWxzbyBiZSBzcGVjaWZpZWQgb24gYSBwZXItYXBwIGJhc2lzLgoJUmVtb3ZlZCBjb21waWxlZC1pbiBkZWZhdWx0cyBmb3IgZGxscyBtZW50aW9uZWQgaW4gdGhlIHNhbXBsZSBjb25maWcuCglVcGRhdGUgbWFuIHBhZ2UuCgoJKiBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsCgkgIGluY2x1ZGUvbmV0c3BpLmgsIHNlcnZlci9tYWluLmMsIHNlcnZlci90cmFjZS5jOgoJSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAbWFuZHJha2Vzb2Z0LmNvbT4KCVdhcm5pbmcgZml4ZXMuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHRvb2xzL3dtYy9tY2wuYywgc2NoZWR1bGVyL3B0aHJlYWQuYywKCSAgc2NoZWR1bGVyL3N5bmNocm8uYywgc2VydmVyL2F0b20uYzoKCUplZmYgR2FyemlrIDxqZ2FyemlrQG1hbmRyYWtlc29mdC5jb20+CglBZGRlZCBzb21lIGluY2x1c2lvbnMgb2Ygc3RyaW5nLmggd2hlcmUgbmVjZXNzYXJ5LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglEaXNhYmxlIERPTlRfUkVTT0xWRV9ETExfUkVGRVJFTkNFUyBmb3IgYnVpbHRpbiBkbGxzLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGxvYWRpbmcgb2YgYnVpbHQtaW4gZGxscyB3aXRoIExPQURfTElCUkFSWV9BU19EQVRBRklMRSBmbGFnIHNldC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglTaG93IGFuIGVycm9yIGlmIHNtYWxsIGVub3VnaCBmcmFnbWVudCBzaXplcyBjb3VsZG4ndCBiZSBzZXQuCglGb3JjZSBhIGNvbXBsZXRlIGNsb3NlL3Jlb3BlbiBvZiB0aGUgc291bmQgZGV2aWNlIGlmIHBhdXNlIGlzCglyZXF1ZXN0ZWQgaW4gRGlyZWN0U291bmQgbW9kZSAobWFueSBkcml2ZXJzIHJlcXVpcmUgdGhpcykuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVtb3ZlIG9ic29sZXRlIGFuZCBtaXNsZWFkaW5nIEZJWE1FLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgR2V0L1NldERldmljZUdhbW1hUmFtcC4KCjIwMDEtMDMtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLAoJICBpbmNsdWRlL2xvYWRvcmRlci5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbG9hZGVyL2xvYWRvcmRlci5jLAoJICBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbWlzYy9vcHRpb25zLmM6CgktIEFkZGVkIHN1cHBvcnQgZm9yIGFwcC1zcGVjaWZpYyBkbGwgb3ZlcnJpZGVzIHVzaW5nCgkgIEFwcERlZmF1bHRzXDxhcHBuYW1lPlxEbGxPdmVycmlkZXMgY29uZmlndXJhdGlvbiBzZWN0aW9uLgoJLSBCZXR0ZXIgc3VwcG9ydCBmb3IgbXVsdGlwbGUgLS1kbGwgb3B0aW9ucy4KCS0gQWRkZWQgd2FybmluZyBtZXNzYWdlIHRvIGRpc2NvdXJhZ2UgcHV0dGluZyBtdWx0aXBsZSBkbGxzIGluIGEKCSAgc2luZ2xlIG92ZXJyaWRlIGVudHJ5LgoKCSogd2luMzIvZXhjZXB0LmM6CglUZXJtaW5hdGUgcHJvY2VzcyBvbiB1bmhhbmRsZWQgXkMgZXhjZXB0aW9uIGluc3RlYWQgb2YgbGF1bmNoaW5nIHRoZQoJZGVidWdnZXIuCgoJKiBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3dpbmVwcy9pbml0LmMsCgkgIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLAoJICBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZ2RpLmgsCgkgIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgR2V0L1NldERldmljZUdhbW1hUmFtcC4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgd2luZG93cy93aW4uYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YnMgZm9yIEdldFdpbmRvd3NNb2R1bGVGaWxlTmFtZVtBL1ddLgoKCSogY29udHJvbHMvY29tYm8uYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglOYXRpdmUgdmVyc2lvbiBzZWVtcyB0byBhbHdheXMgcmUtZHJhdyB0aGUgc2VsZWN0ZWQgdGV4dCBhdCB0aGUgZW5kIG9mCglhIHJvbGx1cC4KCgkqIGRsbHMveDExZHJ2L3gxMWRkcmF3LmMsIGRsbHMveDExZHJ2L3gxMWRkcmF3LmgsCgkgIGRsbHMveDExZHJ2L3h2aWRtb2RlLmMsIGRsbHMveDExZHJ2L3h2aWRtb2RlLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIGdhbW1hIHJhbXAgY29kZSB0byB0aGUgWFZpZE1vZGUgaW50ZXJmYWNlLgoKCSogaW5jbHVkZS9kZHJhd2kuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTW9yZSBEaXJlY3REcmF3IEhBTCB0eXBlIGRlY2xhcmF0aW9ucy4KCjIwMDEtMDMtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVNhdHN1a2kgRnVqaXNoaW1hIDxzZkBmcmVlYnNkLm9yZz4KCUZpeGVkIEZyZWVCRFMgeHBnNCBjaGVjay4KCgkqIE1ha2UucnVsZXMuaW4sIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9zcGVjbWFrZXIvTWFrZWZpbGUuaW46CglTYXRzdWtpIEZ1amlzaGltYSA8c2ZAZnJlZWJzZC5vcmc+CglVc2UgSU5TVEFMTF9TQ1JJUFQgaW5zdGVhZCBvZiBJTlNUQUxMX1BST0dSQU0gZm9yIHNjcmlwdHMuCgoJKiBpbmNsdWRlL3dpbmUvd2luZV9jb21tb25fdmVyLnJjLCBkbGxzL29sZWF1dDMyLy5jdnNpZ25vcmUsCgkgIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywKCSAgZGxscy9vbGVhdXQzMi92ZXJzaW9uLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCB2ZXJzaW9uIGluZm8gZm9yIGJ1aWx0LWluIG9sZWF1dDMyLmRsbC4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUZpeCBzeXN0ZW0gbWVudSBjcmFzaCBieSBlbnN1cmluZyB0aGF0IGl0ZW0tPnRleHQgaXMgbm90IG51bGwgd2hlbgoJTUZfVEVYVCBzZXQuCgoJKiBpbmNsdWRlL2RkcmF3Lmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIElEaXJlY3REcmF3R2FtbWFDb250cm9sIGludGVyZmFjZSBkZWNsYXJhdGlvbi4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVHJ1bmNhdGUgdmVyc2lvbiBkYXRhIGlmIHByb3ZpZGVkIGJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgc291bmQgZGlzYXBwZWFyaW5nIGFmdGVyIG9uLXRoZS1mbHkgc2FtcGxlIHJhdGUgY2hhbmdlcyBhbmQKCWFmdGVyIGNlcnRhaW4gdW5kZXJydW4gY29uZGl0aW9ucy4KCUNvbXBpbGF0aW9uIGZpeGVzIGZvciB3aGVuIFVTRV9EU09VTkQzRCBpcyBkZWZpbmVkLgoKCSogd2luZG93cy93aW5wb3MuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXaW4yMDAwOiBJZiBib3RoIFdTX0VYX0xBWUVSRUQgYW5kIFdTX0VYX1RSQU5TUEFSRU5UIHN0eWxlcyBhcmUgc2V0LAoJbW91c2UgY2xpY2tzIHNob3VsZCBnbyBzdHJhaWdodCB0aHJvdWdoIHRoZSB3aW5kb3cuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVNIR2V0U3BlY2lhbEZvbGRlclBhdGhBIG11c3QgYmUgYWJsZSB0byBjcmVhdGUgYSBmdWxsIHBhdGggaWYgaXQKCWRvZXNuJ3QgZXhpc3QuCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvZmlsZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3R1YiBmb3IgX3NldGptcDMoKS4KCUltcGxlbWVudGVkIF9zb3BlbigpLgoKMjAwMS0wMy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLAoJICBkbGxzL2NvbWN0bDMyL3JzcmMucmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglBZGRlZCB2ZXJzaW9uIGluZm8uCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW4xNmRydi5oLAoJICBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2ZvbnQuYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywKCSAgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvcHNkcnYuaCwKCSAgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgR2V0VGV4dE1ldHJpY3MgdG8gdW5pY29kZS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGluY2x1ZGUvd2ludmVyLmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgcHJvdG90eXBlIG9mIEdldEZpbGVWZXJzaW9uSW5mb0EvVy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gRG9jdW1lbnRlZCB0aGluZ3Mga25vd24gdG8gYmUgdW5pbXBsZW1lbnRlZC4KCS0gSW1wbGVtZW50ZWQgQ0JOX1NFTENIQU5HRSwgQ0JOX0tJTExGT0NVUywgYW5kIENCTl9TRUxFTkRPSy4KCS0gQ29ycmVjdGVkIENCRU5fRU5ERURJVCBub3RpZmllcyB0byBhbHdheXMgaGF2ZSBlZGl0IGNvbnRyb2wgdGV4dC4KCS0gTG9ja2VkICJzZWxlY3RlZCIgc3RhdGUgb2YgaWNvbiB0byBmb2N1cyBzdGF0ZSBvZiBlZGl0IGNvbnRyb2wgKGlmCgkgIGl0IGV4aXN0cykganVzdCBsaWtlIG5hdGl2ZS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIENvcnJlY3QgUkJOX0NISUxEU0laRSBiYW5kIHJlY3RhbmdsZSB0byBtYXRjaCBuYXRpdmUuCgktIENvcnJlY3QgZmxhZ3MgaW4gRGVmZXJXaW5kb3dQb3MgdG8gU1dQX05PWk9SREVSIHRvIG1hdGNoIG5hdGl2ZS4KCS0gTWFrZSBoYW5kbGluZyBDb21ib0JveCBhbmQgQ29tYm9Cb3hFeCB0aGUgc2FtZSB3aGVuIG1vdmluZyBjaGlsZAoJICB3aW5kb3dzLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglMYWJlbCB0aGUgd2lkdGggYW5kIGhlaWdodCBjb3JyZWN0bHkgaW4gdGhlIFdJTkRPV1BPUyBkaXNwbGF5LgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIFdpbjIwMDAgV1NfRVhfTEFZRVJFRCB3aW5kb3cgc3R5bGUuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlcGxhY2VkIG9uZSAua2RlIHdpdGggLmtkZTIgaW4gS0RFMiBtZW51IGNvZGUuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVtb3ZlZCBwYXRoIGZyb20gZHBsYXl4IHJlZ2lzdHJ5IGVudHJ5LCBzbyB0aGF0IHRoZSBidWlsdGluIGRwbGF5eAoJY2FuIGJlIGxvYWRlZC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTZXQgTERfTElCUkFSWV9QQVRIIGlmIG5lY2Vzc2FyeSBiZWZvcmUgY2FsbGluZyB3cmMgJiB3aW5lYnVpbGQuCgoyMDAxLTAzLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZXR1cm4gZnJvbSBHZXRGaWxlVmVyc2lvbkluZm8oU2l6ZSkgaWYgc3BlY2lmaWVkIGZpbGUgZm91bmQsIGJ1dAoJVlNfVkVSU0lPTl9JTkZPIHJlc291cmNlIG5vdC4KCgkqIHNlcnZlci9zZXJpYWwuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJUmVtb3ZlZCBicm9rZW4gc3VwcG9ydCBmb3IgRVZfVFhFTVBUWSBiZWNhdXNlIGl0IGNhdXNlcyBidXN5IGxvb3BzLgoKCSogc2VydmVyL2FzeW5jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUFkZCBtaXNzaW5nIHJlbGVhc2Ugb2JqZWN0IHNvIHNlcnZlciBleGl0cyBjbGVhbmx5LgoKCSogY29udHJvbHMvbWVudS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJUmVjYWxjdWxhdGUgbWVudSBzaXplcyBpZiBXTV9JTklUTUVOVSBoYXMgcmVjcmVhdGVkL2NoYW5nZWQgc29tZXRoaW5nLgoKMjAwMS0wMy0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL25scy9jaHQubmxzOgoJSGFubi1odWVpIENoaW91IDxrb2FsYUBtYW5hLmVlLm50dS5lZHUudHc+CglVcGRhdGVkLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwKCSAgc2NoZWR1bGVyL3RocmVhZC5jOgoJSmFtZXMgSnVyYW4gPGphbWVzanVyYW5AYWx1bW5pLnBzdS5lZHU+CglBZGRlZCBzdHViIGZvciBTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZSAobmV3IGZ1bmN0aW9uIGluIFdpbjk4LzIwMDApLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4IFVuaWNvZGUvQW5zaSBtZXNzYWdlIHRyYW5zbGF0aW9uIGZvciBzb21lIGxpc3Rib3gvY29tYm9ib3gKCW1lc3NhZ2VzIHdpdGggYSB6ZXJvIHZhbHVlZCBscGFyYW0uIE91dHB1dCBhbiBlcnJvciB3aGVuIHRoZQoJdHJhbnNsYXRpb24gZmFpbHMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2ZvbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0eXBvIGluIE9VVExJTkVURVhUTUVUUklDIGRlZmluaXRpb24uCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJWWV0IGFub3RoZXIgYXR0ZW1wdCBvbiBmaXhpbmcgbm90aWZpY2F0aW9ucyBpbiB0aGUgZWRpdCBjb250cm9sLgoKCSogZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkIHNvbWUgc3BlY2lmaWMgYWZtZGlycyBhcyBleGFtcGxlcy4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglEb24ndCBsb2FkIEFGTSBmaWxlcyBmcm9tIHByZWRlZmluZWQgZGlyZWN0b3JpZXM7IHVzZSBbYWZtZGlyc10KCXNlY3Rpb24gaW4gV2luZSBjb25maWcgZmlsZSBpbnN0ZWFkLgoKMjAwMS0wMy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBub3RpZmljYXRpb25zIG9mIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBjb250cm9scy9zdGF0aWMuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUNhbGwgRGVmV2luZG93UHJvYyBmb3IgV01fQ1RMQ09MT1JTVEFUSUMgbWVzc2FnZSB3aGVuIHRoZSBhcHBzIGRvZXMKCW5vdC4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZGxscy93aW5tbS9tbWlvLmMsCgkgIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzcGVsbGluZy90eXBvcyBpbiBjb21tZW50cy4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBtaXNzaW5nIGV4dGVuc2lvbiBmb3IgJ29sZTMyLmRsbCcuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBDcmVhdGVSZW1vdGVUaHJlYWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUltcGxlbWVudCBTSEdldEZpbGVJbmZvVyBieSBjYWxsaW5nIFNIR2V0RmlsZUluZm9BLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglIYW5kbGUgZW1wdHkgc3RyaW5ncyBhbmQgaW52YWxpZCB2YWx1ZXMgaW4gbHBzdHJJbml0aWFsRGlyIGZvciAzMiBiaXRzCglvcGVuIGZpbGUgZGlhbG9ncy4KCjIwMDEtMDMtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbjoKCUFkZGVkIHZlcnNpb24xNi5yYyBpbiBSQ19TUkNTIGxpc3QuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywKCSAgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywKCSAgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaDoKCUFkZGVkIHN1cHBvcnQgZm9yIG5lc3RlZCBzZXJ2ZXIgd2FpdHMgKHRvIGFsbG93IHdhaXRpbmcgaW4gc2lnbmFsCgloYW5kbGVycykuCgoJKiBSRUFETUUsIHRvb2xzL3dpbmVjaGVjazoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIGEgcGVybCBzY3JpcHQgdG8gY2hlY2sgbWFueSBhc3BlY3RzIG9mIFdpbmUgY29uZmlndXJhdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUxQQVJBTSBpbiBmaW5kIGRpYWxvZyB3bV9pbml0ZGlhbG9nIGlzIHRoZSBmaW5kL3JlcGxhY2Ugc3RydWN0dXJlLCBub3QKCWN1c3RkYXRhLgoKCSogZGxscy9rZXJuZWwvbmxzL2x2aS5ubHM6CglOZXJpanVzIEJhbGl1bmFzIDxuZXJpanVzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCVVwZGF0ZWQgTGF0dmlhbiBkYXRlIGZvcm1hdC4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgU0hFTEwgbGlua2luZyBvZiBLREUyIGRlc2t0b3AvbWVudSBlbnRyaWVzLgoKMjAwMS0wMy0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAxMDMwNS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMS0wMy0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgblNlbGVjdGlvbk1hcmsgYW5kIG5Gb2N1c2VkSXRlbSB3aGVuIGluc2VydGluZy9kZWxldGluZy9zb3J0aW5nCglpdGVtcy4KCVNvcnRJdGVtczogSWYgc29ydGluZyBsZXNzIHRoYW4gMiBpdGVtcywgZG8gbm90aGluZy4KCgkqIHdpbjMyL2ZpbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBTZXRGaWxlQXBpc1RvT0VNLCBTZXRGaWxlQXBpc1RvQU5TSSBhbmQgQXJlRmlsZUFwaXNBTlNJLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CgktIEJhY2tncm91bmQgb2YgdGhlIGNoaWxkIHduZCBzaG91bGQgYmUgZXJhc2VkIHdpdGggdGhlIHNhbWUgY29sb3IgYXMKCSAgdGhlIGNvbnRyb2wuCgktIERlZmF1bHQgc2Nyb2xsIGFtb3VudCBzaG91bGQgYmUgdGhlIG1pbmltdW0gY2xpZW50IGFyZWEuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJVW5ibG9jayB0aGUgZGlhbG9nIG1lc3NhZ2UgbG9vcCB3aXRoIGEgV01fTlVMTCBtZXNzYWdlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJVmVkcmFuIFJvZGljIDx2ZWRyYW5AcmVuYXRhLmlyYi5ocj4KCU1hZGUgOCBicHAgdG8gMjQgYml0IGRlcHRoIGNvbnZlcnNpb24gaW4gWDExRFJWX0RJQl9TZXRJbWFnZUJpdHNfOAoJZmFzdGVyIGJ5IHVzaW5nIGlubGluZSBhc20uCgoJKiB0b29scy9zcGVjbWFrZXIvbWlzYy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGRsbHMvd2lubW0vbW1pby5jOgoJQ2hhbmdlZCBpc29sYXRlZCBmb3IgbG9vcHMgdG8gd2hpbGUgbG9vcHMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgQW5kcmVhcwoJTW9ocikuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVRoZSBmb3IgbG9vcCBpbiBJVHlwZUxpYjJfZm5GaW5kTmFtZSB3YXMgd3JvbmcgKGV4dHJhICc7JykuCgoJKiBmaWxlcy9maWxlLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKCkgZmFpbHMgZm9yIHBpcGUgaGFuZGxlcyBhY2NvcmRpbmcgdG8KCU1TRE4sIGFuZCBhbHNvIGZvciBzZXJpYWwgaGFuZGxlcyAoRklMRV9UWVBFX0NIQVIgaW4gZ2VuZXJhbCA/KS4KCgkqIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGdyYXBoaWNzL2RyaXZlci5jOgoJSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglEb24ndCBsb2FkIHRoZSBXSU5FUFMgZHJpdmVyIHVudGlsIGl0J3MgbmVlZGVkLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgRURJVF9VbmxvY2tCdWZmZXIgY29wZSB3aXRoIGRlc3Ryb3llZCB3aW5kb3dzLgoKMjAwMS0wMy0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIG1lbW9yeS9oZWFwLmM6CglXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgc3lzdGVtIGhlYXAgYXQgc3RhcnR1cCBldmVuIHRob3VnaCB3ZSBkb24ndCB1c2UKCWl0LCBzaW5jZSBzb21lIFdpbjk1IG5hdGl2ZSBkbGxzIGRlcGVuZCBvbiB0aGF0LgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCSAtIGFkZCB0cmFjaW5nIHRvIE9wZW5HTCB0aHVua3MKCSAtIHVwZGF0ZSB0byBsYXRlc3QgZ2wuc3BlYyBmaWxlCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBEQ1hfQ0xJUFNJQkxJTkdTIHRvIGZsYWdzIGZvciBEQ0VfR2V0VmlzUmduIG9ubHkgaWYgd2luZG93IGhhcwoJV1NfQ0xJUFNJQkxJTkdTIGJpdCBzZXQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW4gTElTVFZJRVdfQWRkR3JvdXBTZWxlY3Rpb24gYW5kIExJU1RWSUVXX1NldEdyb3VwU2VsZWN0aW9uLCBpZiBubwoJc2VsZWN0aW9uIG1hcmsgaGFzIGJlZW4gc2V0LCBqdXN0IHNlbGVjdCB0aGUgY3VycmVudCBpdGVtLgoJSW4gTElTVFZJRVdfU2V0R3JvdXBTZWxlY3Rpb24gd2UgbXVzdCBhbHNvIHNldCB0aGUgc2VsZWN0aW9uIG1hcmsgaW4KCXRoYXQgY2FzZSAoYW5kIG9ubHkgaW4gdGhhdCBjYXNlKS4KCVJlbW92ZWQgYSBuYXVnaHR5ICc7JyAoc3BvdHRlZCBieSBFcmljIFBvdWVjaCkuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSWYgYSB0YXJnZXQgaGFzIEMrKyBzb3VyY2VzLCB0aGVuIHVzZSBnKysgdG8gbGluayBpdCAoZml4ZXMgIzE2MikuCglSZW1vdmVkIFNPTkFNRSwgaXQncyBub3QgcmVsZXZhbnQgZm9yIGRsbHMgYW5kIHdhcyB1bnVzZWQgYW55d2F5LgoKMjAwMS0wMy0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzogRml4ZWQgZmlsZSBkZXNjcmlwdG9yIGxlYWsuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBmaWxlcy9kaXJlY3RvcnkuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVNvbWUgbW9yZSBtZXNzYWdlIGNsZWFudXBzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogQ2hyaXMgSmFjb2Jzb24KCVNtYWxsIGJ1ZyBmaXguCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJSW5pdGlhbGl6ZSB0aGUgcmV0dXJuIGVycm9yIGNvZGUgdG8gMCBmb3IgY29tbW9uIGRpYWxvZyBmaWxlCglmdW5jdGlvbnMuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkIGZpbGVzIGZvdW5kIGluIGFuICdpbmNsdWRlJyBkaXJlY3RvcnksIHRvIHRoZSAnbWlzYyBzb3VyY2VzJyBsaXN0LgoKMjAwMS0wMy0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUNyZWF0ZSB0aGUgc2VydmVyIHBpcGVzIG9uIHRoZSBjbGllbnQgc2lkZSBhbmQgdHJhbnNmZXIgdGhlbSB0byB0aGUKCXNlcnZlciBvbiB0aHJlYWQgY3JlYXRpb24uCglVc2UgYSBzaW5nbGUgcGVyLXByb2Nlc3Mgc29ja2V0IGluc3RlYWQgb2Ygb25lIHBlciB0aHJlYWQgZm9yCgl0cmFuc2ZlcnJpbmcgZmlsZSBoYW5kbGVzIGJldHdlZW4gY2xpZW50IGFuZCBzZXJ2ZXIuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVlbmFibGUgdGhlIHdyYXBwZXIgc3VwcG9ydC4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglTcXVhc2ggYW5vdGhlciBBRk0gY2hhcmFjdGVyIG1ldHJpY3MgcGFyc2luZyBidWcuCgoyMDAxLTAyLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9zZXJ2ZXIuaDoKCU5ldyBtZWNoYW5pc20gdG8gdHJhbnNmZXIgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIGNsaWVudCB0byBzZXJ2ZXIuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSm9oYW5uZXMuU2NoaW5kZWxpbkBnbXguZGUKCVNvbWUgbWlub3IgY2hhbmdlcyB0byB0aGUgR2VybWFuIGtleWJvYXJkIGxheW91dC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglEb21pbmlrIFN0cmFzc2VyIDxkb21pbmlrLnN0cmFzc2VyQG1jaHAuc2llbWVucy5kZT4KCUF2b2lkIGNyYXNoIGF0IGVuZCBvZiBsaXN0LgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCUZpeCBidWcgaW4gQUZNIGNoYXJhY3RlciB3aWR0aCBwYXJzaW5nLgoKCSogd2luMzIvZGV2aWNlLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3VzZXIvZGRlbWwuYywgZGxscy91c2VyL2V4dGljb24uYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvZGRyYXcuaCwgb2JqZWN0cy9tZXRhZmlsZS5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgZGVidWdnZXIvdHlwZXMuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL21zdmNydC9wcm9jZXNzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVNtYWxsICd0eXBvcyBpbiBjb21tZW50cycgZml4ZXMuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglVc2UgdGhlIHN0YW5kYXJkIENyZWF0ZVRocmVhZCByb3V0aW5lIHRvIGNyZWF0ZSAxNi1iaXQgdGFza3MgaW5zdGVhZAoJb2YgZHVwbGljYXRpbmcgdGhlIGNvZGUuCgoJKiBkbGxzL3dpbnNwb29sL3dzcG9vbC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYzoKCVJlbW92ZWQgZGVwZW5kZW5jeSBvbiBjb21jdGwzMi4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXSU5FX1VOSUNPREVfVEVYVCB3YXMgaW5jb3JyZWN0LgoJRHJvcHBlZCBzdXBwb3J0IGZvciBXSU5FX1VOSUNPREVfVEVYVCgnYycpIGluIEMuCgoJKiBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c2NvbnRyb2wuaDoKCU1pY2hhZWwgU3RlZmFuaXVjIDxtc3RlZmFuaUByZWRoYXQuZGU+CglJbXBsZW1lbnRlZCBXc0NvbnRyb2wgY29tbWFuZCB3aXRoIGlkIDB4MTAxLgoKCSogZGxscy9rZXJuZWwvbmxzL2Fmay5ubHMsIGRsbHMva2VybmVsL25scy9iZWwubmxzLCBkbGxzL2tlcm5lbC9ubHMvYmdyLm5scywgZGxscy9rZXJuZWwvbmxzL2NhdC5ubHMsIGRsbHMva2VybmVsL25scy9jemUubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGVhLm5scywgZGxscy9rZXJuZWwvbmxzL2RlYy5ubHMsIGRsbHMva2VybmVsL25scy9kZWwubmxzLCBkbGxzL2tlcm5lbC9ubHMvZGVzLm5scywgZGxscy9rZXJuZWwvbmxzL2VzbS5ubHMsIGRsbHMva2VybmVsL25scy9lc24ubmxzLCBkbGxzL2tlcm5lbC9ubHMvZXNwLm5scywgZGxscy9rZXJuZWwvbmxzL2V1cS5ubHMsIGRsbHMva2VybmVsL25scy9maW4ubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJhLm5scywgZGxscy9rZXJuZWwvbmxzL2ZyYi5ubHMsIGRsbHMva2VybmVsL25scy9mcmMubmxzLCBkbGxzL2tlcm5lbC9ubHMvZnJsLm5scywgZGxscy9rZXJuZWwvbmxzL2Zycy5ubHMsIGRsbHMva2VybmVsL25scy9ncmMubmxzLCBkbGxzL2tlcm5lbC9ubHMvaHVuLm5scywgZGxscy9rZXJuZWwvbmxzL2luZC5ubHMsIGRsbHMva2VybmVsL25scy9pc2wubmxzLCBkbGxzL2tlcm5lbC9ubHMvaXRhLm5scywgZGxscy9rZXJuZWwvbmxzL2l0cy5ubHMsIGRsbHMva2VybmVsL25scy9qcG4ubmxzLCBkbGxzL2tlcm5lbC9ubHMvbmxiLm5scywgZGxscy9rZXJuZWwvbmxzL25sZC5ubHMsIGRsbHMva2VybmVsL25scy9ub24ubmxzLCBkbGxzL2tlcm5lbC9ubHMvbm9yLm5scywgZGxscy9rZXJuZWwvbmxzL3Bsay5ubHMsIGRsbHMva2VybmVsL25scy9wdGIubmxzLCBkbGxzL2tlcm5lbC9ubHMvcHRnLm5scywgZGxscy9rZXJuZWwvbmxzL3JvbS5ubHMsIGRsbHMva2VybmVsL25scy9za3kubmxzLCBkbGxzL2tlcm5lbC9ubHMvc2x2Lm5scywgZGxscy9rZXJuZWwvbmxzL3N2ZS5ubHMsIGRsbHMva2VybmVsL25scy90cmsubmxzOgoJUHJ6ZW15c2xhdyBCcnVza2kgPGY2NjMzNnBiQGFzay5ldGkucGcuZ2RhLnBsPgoJQWRkZWQgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgZGVmaW5pdGlvbiBpbiBtb3N0IG5scyBmaWxlcy4KCjIwMDEtMDItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3F1ZXVlLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNjaGVkdWxlci90aW1lci5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMva2VybmVsL2NvbW0uYywgZGxscy9rZXJuZWwvZGVidWdnZXIuYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90b29saGVscC5jOgoJTmV3IHNldCBvZiBtYWNyb3MgZm9yIHNlcnZlciBjYWxsczsgbWFrZXMgcmVxdWVzdHMgd2l0aG91dCB2YXJpYWJsZQoJcGFydCBzb21ld2hhdCBmYXN0ZXIuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOgoJTW92ZWQgUFRIUkVBRF9pbml0X2RvbmUgb3V0IG9mIHRoZSAjaWZkZWYuCgoyMDAxLTAyLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3VzZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBzdHVicyB0byBLRVJORUwzMiBhbmQgVVNFUjMyLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglIYW5kbGUgZmlsZW5hbWVzIHdpdGggc3BhY2VzLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglNYXAgMzIgYml0cyByZXNvdXJjZSBmb3IgMTYgYml0cyBwcmludCBkaWFsb2cuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJVXNlIEdldFN5c0NvbG9yQnJ1c2goQ09MT1JfV0lORE9XKSB3aGVuIHRoZXJlIGlzIG5vIGJydXNoIGZvciBkcmF3aW5nCgliYWNrZ3JvdW5kIGluIGxpc3Rib3guCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglEYXZpZCBHcmFudCA8ZGF2ZUByZWFjaC5uZXQ+CglBZGRlZCAocGFydGlhbCkgc3VwcG9ydCBmb3IgRk9fQ09QWSBhbmQgRk9fREVMRVRFLgoKMjAwMS0wMi0yMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvLmN2c2lnbm9yZSwgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdmVyc2lvbi5yYywgZGxscy91c2VyL3Jlc291cmNlcy92ZXJzaW9uMTYucmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGluY2x1ZGUvd2luZS93aW5lX2NvbW1vbl92ZXIucmMsIGRsbHMva2VybmVsLy5jdnNpZ25vcmUsIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwucmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC92ZXJzaW9uLnJjLCBkbGxzL2tlcm5lbC92ZXJzaW9uMTYucmMsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaS5zcGVjLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dkaS92ZXJzaW9uLnJjLCBkbGxzL2dkaS92ZXJzaW9uMTYucmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkIHZlcnNpb24gaW5mb3JtYXRpb24gKDE2IGFuZCAzMiBiaXQpIHRvIGNvcmUgYnVpbHQtaW4gZGxsczoKCWtybmwzODYuZXhlL2tlcm5lbDMyLmRsbCwgdXNlci5leGUvdXNlcjMyLmRsbCwgZ2RpLmV4ZS9nZGkzMi5kbGwuCglQcm92aWRlIGEgd2F5IGZvciByZWFkaW5nIHZlcnNpb24gaW5mb3JtYXRpb24gdXNpbmcgc3RhbmRhcmQgQVBJOgoJR2V0RmlsZVZlcnNpb25JbmZvU2l6ZSAtPiBHZXRGaWxlVmVyc2lvbkluZm8gLT4gVmVyUXVlcnlWYWx1ZS4KCgkqIGluY2x1ZGUvaGVhcC5oLCBtZW1vcnkvaGVhcC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvcHRocmVhZC5jOgoJT25seSBjcmVhdGUgdGhlIHN5c3RlbSBoZWFwIHdoZW4gd2UgYWN0dWFsbHkgbmVlZCBpdC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBtZW1vcnkvZ2xvYmFsLmM6CglBbGxvY2F0aW9ucyBkbyBub3QgbmVlZCB0byBiZSBvbiB0aGUgc3lzdGVtIGhlYXAuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUhvcml6L1ZlcnQgZGV0ZXJtaW5hdGlvbiBtdXN0IGJlIGR5bmFtaWMsIGFzIHRoZSBzdHlsZSBtYXkgbm90IGJlIHNldAoJdXBvbiBjcmVhdGlvbjsgaW1wcm92ZWQgcG9zaXRpb25pbmcgYW5kIHNjcm9sbGluZy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgYWxpZ25tZW50IHByb2JsZW1zIHdpdGggTk1QR1NDUk9MTCBzdHJ1Y3QuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgZml4bWUgZm9yIFNQSV9HRVRXSEVFTFNDUk9MTExJTkVTIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUgb2YgMy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXBhcmUgYmFja2dyb3VuZCB3aGlsZSBkcmF3aW5nIHJhZGlvIGJ1dHRvbnMgYW5kIGNoZWNrYm94ZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHBheSBhdHRlbnRpb24gdG8gaWYgb3VyIGNhbGwgdG8KCSAgU2V0Q2xpcGJvYXJkRGF0YSBmcm9tIHRoZSBYMTFEUlYgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24gd29ya3MuIElmIG5vdAoJICB3ZSBuZWVkIHRvIGRlbGV0ZSB0aGUgZ2xvYmFsIGJsb2NrIHdlIGFsbG9jYXRlZC4gVGhpcyBpcyBhIHNldmVyIG1lbW9yeQoJICBsZWFrIHdpdGggbGFyZ2UgY2xpcGJvYXJkIGl0ZW1zLgoJLSBJZiBhbiBYIHNlbGVjdGlvbiBpdCB0b28gbGFyZ2UgdGhlbiBYIG1heSBnaXZlIGl0IHRvIHVzIGluIGNodW5rcywKCSAgd2Ugd2VyZSBub3QgaGFuZGxpbmcgdGhpcyB3ZWxsLgoKCSogZGxscy9rZXJuZWwvbmxzL3Vrci5ubHM6CglWYWxlcnkgS2FydGVsIDxrdm5AaWdrLmtpZXYudWE+CglVcGRhdGVkIGFsbCBmaWVsZHMgd2l0aCBVa3JhaW5pYW4gdmFsdWVzLgoKCSogY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy90dHlkcnYvd25kLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wcm9wZXJ0eS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJRG8gbm90IGFsbG9jYXRlIGFueSBVU0VSIGRhdGEgb24gdGhlIHN5c3RlbSBoZWFwLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jcGwuaCwgaW5jbHVkZS93aW51c2VyLmgsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NvbnRyb2wuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBIGZpcnN0IHN0YWIgYXQgaW1wbGVtZW50aW5nIHRoZSBSdW5EbGwgZmVhdHVyZXMuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglCdWlsZENvbW1EQ0IxNiBoYWQgYSByYXRoZXIgYnJva2VuIGJhdWQgcmF0ZSBoYW5kbGluZy4KCgkqIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSB0aGUgd2luZWxhdW5jaGVyIHN1cHBvcnQgd2luZWxpYiBhcHAgaW52b2NhdGlvbnMuIEZpeGVkIGEgZmV3CglmaWxlIHBhdGggaXNzdWVzLgoKMjAwMS0wMi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc2VwYXJhdGUgc2VydmVyIHBpcGUgdG8gd2FpdCBvbiBibG9ja2luZyBzZXJ2ZXIgY2FsbHMuCglTZW5kIHRoZSBjb21wbGV0ZSByZXF1ZXN0L3JlcGx5IHRocm91Z2ggdGhlIHJlcXVlc3QgZmlmbyBpbnN0ZWFkIG9mCglqdXN0IGEgZHVtbXkgYnl0ZS4KCUNvbnZlcnQgZXJyb3Igc3RhdHVzIHRvIHRleHQgaW4gc2VydmVyIHJlcGx5IHRyYWNpbmcuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglDb25maXJtIGZpbGUgZGVsZXRlcy4gIE1ha2UgZGVsZXRlIGNvbmZpcm1hdGlvbiBtZXNzYWdlcyBtb3JlCgljb25zaXN0ZW50LiBJbXByb3ZlIHRyYWNlIG1lc3NhZ2VzIG9uIGRlbGV0ZSBmYWlsdXJlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzaGVsbCBzdXBwb3J0IGZvciBkZWxldGluZyBmaWxlcyB1c2luZyB0aGUgRGVsZXRlIGtleS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBpbmNsdWRlL3dpbnNwb29sLmg6CglJYW4gUGlsY2hlciA8cGlsY2hlckBjb25jZW50cmljLm5ldD4KCUltcGxlbWVudCBFbnVtUHJpbnRlckRhdGFFeHtBfFd9LgoKCSogZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL21zbmV0MzIvbXNuZXQzMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IG9yZGluYWxzLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9tc3ZjcnQvZGF0YS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuaDoKCV9fZ2V0bWFpbmFyZ3MgbGFzdCBhcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gbmV3X21vZGUuCgoyMDAxLTAyLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL21hcHBpbmcuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIG1lbW9yeS92aXJ0dWFsLmMsIHNjaGVkdWxlci9jbGllbnQuYzoKCVNtYWxsIHNlcnZlciBwcm90b2NvbCBjbGVhbnVwcy4KCgkqIGRsbHMvb2xlY2xpL29sZWNsaS5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGkzMi5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJU3R1YiBmb3IgT2xlU2F2ZWRDbGllbnREb2MuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW5zZXJ0IHRoZSBpdGVtIGJlZm9yZSBjYWxsaW5nIGEgU2V0Rmlyc3RWaXNpYmxlIHdoaWNoIGNhbiBnZW5lcmF0ZSBhCglXTV9QQUlOVCBtZXNzYWdlLgoKCSogbGlicmFyeS9wb3J0LmM6CglDbGVhciAlZWJwIGJlZm9yZSBlbnRlcmluZyB0aGUgbmV3IHRocmVhZC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdvdCByaWQgb2YgdGhlIFdTSU5GTyBzdHJ1Y3R1cmUuIEZpeGVkIGEgY291cGxlIG9mIGJ1Z3MuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCUZpeGVkIF9fR2V0TWFpbkFyZ3MuCgoJKiBBTk5PVU5DRSwgUkVBRE1FLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJSm9lcmcgTWF5ZXIgPGptYXllckBsb3Bsb2YuZGU+CglBZGQgaW5mb3JtYXRpb24gYWJvdXQgcHJlYnVpbHQgZG9jdW1lbnRhdGlvbiBwYWNrYWdlcyBpbgoJb3RoZXItdGhhbi1zZ21sIGZvcm0uCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIG5lZWQgdG8gZ2l2ZSByb29tIGZvciB0aGUgbnVsbCB0ZXJtaW5hdGlvbiB3aGVuIHRyYW5zbGF0aW5nIHRoZQoJY2xpcGJvYXJkIHRleHQuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEltcGxlbWVudCBDQl9TRVRDVVJTRUwsIENCRU1fREVMRVRFSVRFTSwgQ0JFTV9HRVRJVEVNLAoJICBDQkVNX3tHRVR8U0VUfVVOSUNPREVGT1JNQVQsIENCX0ZJTkRTVFJJTkdFWEFDVCwgV01fQ09NTUFORCwKCSAgV01fREVMRVRFSVRFTS4KCS0gSW1wbGVtZW50IGV4dGVuZGVkIHN0eWxlIENCRVNfRVhfTk9FRElUSU1BR0UsIGFuZCB3YXJuIG90aGVycyBhcmUKCSAgbm90IHlldCBpbXBsZW1lbnRlZC4KCS0gUmVzdHJ1Y3R1cmUgRHJhd0l0ZW0gY29kZSB0byBkbyB0aGluZ3MgbW9yZSByYXRpb25hbGx5LgoKCSogY29udHJvbHMvY29tYm8uYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFJlc3RydWN0dXJlIFBhaW50VGV4dCBjb2RlIHRvIHJlbW92ZSBGaWxsUmVjdCBmcm9tIG93bmVyLWRyYXduIHBhdGguCgktIENoYW5nZSBTZXRGb2N1cyB0byBpbmRpY2F0ZSBmb2N1cyBzZXQgb25seSBhZnRlciBOb3RpZnkgaXMgc2VudCB0byBvd25lci4KCS0gR2V0IG1vcmUgaW5mbyBpbiBhIHRyYWNlLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0IGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBET1NGU19PcGVuRGV2aWNlKCkgZmFpbHMgb24gYSBDT014CglkZXZpY2UuCgoJKiBtaXNjZW11L21haW4uYywgb2JqZWN0cy9wYWxldHRlLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbG9hZGVyL3Rhc2suYzoKCVJlbW92ZWQgYSBmZXcgQ2FsbG91dCBmdW5jdGlvbnMgYnkgZG9pbmcgYSBHZXRQcm9jQWRkcmVzcyBhdCB0aGUgdGltZQoJd2UgYWN0dWFsbHkgbmVlZCB0aGUgZnVuY3Rpb24uCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJRml4ZWQgTUVNX1NZU1RFTSBoYW5kbGluZyB0byBhdm9pZCB1bm1hcHBpbmcgYXJlYXMgdGhhdCB3ZSBkaWRuJ3QgbW1hcC4KCgkqIGRsbHMvbXN2Y3J0L2RhdGEuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHByb3RvdHlwZXMgb2YgTVNWQ1JUX19fZ2V0bWFpbmFyZ3MgYW5kIE1TVkNSVF9fX3dnZXRtYWluYXJncy4KCVByb3RlY3QgTVNWQ1JUX19hY21kbG4gZ2xvYmFsIHZhcmlhYmxlIGZyb20gY29ycnVwdGlvbi4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIHR5cGVkZWYgb2YgQ1JJVElDQUxfU0VDVElPTiBvdXQgb2YgI3ByYWdtYSBwYWNrKDEpIGJsb2NrLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGJlaGF2aW91ciBvZiBkcm9wZG93biBidXR0b25zLiBXaGVuIGEgZHJvcGRvd24gYnV0dG9uIGlzCgljbGlja2VkLCBpdCBkb2VzIG5vdCBjaGFuZ2UgaW50byBwcmVzc2VkIHN0YXRlLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBFTUYgcmVjb3JkIEVNUl9FWFRTRUxFQ1RDTElQUkdOLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRGUucmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRyYW5zbGF0ZWQgbmV3IGNvbW1vbiBkaWFsb2cgcmVzb3VyY2VzIGludG8gR2VybWFuLgoJUmVzaXplZCBmaWxlIGRpYWxvZyBhIGJpdCB0byBtYWtlIHRvb2xiYXIgY29tcGxldGVseSB2aXNpYmxlIGFnYWluLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfRGUucmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIEdlcm1hbiB0cmFuc2xhdGlvbiwgY2hhbmdlZCBkaWFsb2cgZm9udCB0byBIZWx2ZXRpY2EuCgoyMDAxLTAyLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDEwMjE2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTAyLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUFzc2VydCBvbiBvdXRwdXQgYnVmZmVyIG92ZXJmbG93LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJVXBkYXRlIHNlbGVjdGlvbiBhZnRlciBzb3J0aW5nIChpbiBMSVNUVklFV19Tb3J0SXRlbXMpIGJ5IG1ha2luZyBzdXJlCglzZWxlY3Rpb24gbGlzdCBtYXRjaGVzIHN0YXRlcyBvZiBpbmRpdmlkdWFsIGl0ZW1zLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgRElCL3BpeG1hcCBzeW5jaHJvbml6YXRpb24gZm9yIHtHZXQsU2V0fVBpeGVsLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVEJfU0VUQlVUVE9OU0laRSBtZXNzYWdlcyBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudCBldmVuIGFmdGVyCglidXR0b25zIGhhdmUgYmVlbiBhZGRlZC4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jLCB3aW4zMi9jb25zb2xlLmM6CglQYXNzIHRoZSBzdGRpbi9zdGRvdXQgaGFuZGxlcyBvbiBzdGFydHVwIHRvIHVzZSBhcyBjb25zb2xlIChiYXNlZCBvbiBhCglwYXRjaCBieSBFcmljIFBvdWVjaCkuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvcnJlY3QgdGhlIGNvZGVwYWdlIGZvciB0aGUgVHVya2lzaCBrZXlib2FyZC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVNldHRpbmcgdGhlIEhvdEl0ZW0gdG8gLTEgY2FuIGJlIGRpc2FzdHJvdXMgYXQgdGltZXMgaWYgaXQgZXF1YWxzCglvbGRoaXQuCgoJKiB0b29scy9zcGVjbWFrZXIvZGxsLmMsIHRvb2xzL3NwZWNtYWtlci9tYWluLmMsIHRvb2xzL3NwZWNtYWtlci9tc21hbmdsZS5jLCB0b29scy9zcGVjbWFrZXIvb3V0cHV0LmMsIHRvb2xzL3NwZWNtYWtlci9zZWFyY2guYywgdG9vbHMvc3BlY21ha2VyL3NwZWNtYWtlci5oLCB0b29scy9zcGVjbWFrZXIvc3ltYm9sLmMsIHRvb2xzL3NwZWNtYWtlci9SRUFETUU6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBDcmVhdGUgZW50cmllcyBmb3Igb3JkaW5hbCBvbmx5IGV4cG9ydHMsIHVzZSBvcmRpbmFscyBpZiBub24tc3RhbmRhcmQuCgktIEltcHJvdmUgQysrIGRlbWFuZ2xlciwgcmVjb2duaXNlIGRhdGEgdHlwZXMsIGZpeCBzb21lIGJ1Z3MuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUdpdmVzIGJhY2sgdGhlIEVSUk9SX0ZJTEVfTk9UX0ZPVU5EIHRvIEdldEZpbGVBdHRyaWJ1dGVzLgoKMjAwMS0wMi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGJhY2tzbGFzaCBlc2NhcGluZyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJSWYgVmVyUXVlcnlWYWx1ZUEgaXMgY2FsbGVkIHdpdGggYSBQRSByZXNvdXJjZSwgdHJhbnNsYXRlIHRoZSBjYWxsIHRvCglWZXJRdWVyeVZhbHVlVy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnRpbnVlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgU2V0IEhvdCBJdGVtLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJU2VuZCBMVk5fREVMRVRFSVRFTSBub3RpZmljYXRpb24gZmlyc3QsIHRvIGF2b2lkIGNyYXNoZXMgaWYgdGhlIGFwcAoJcmVxdWVzdHMgTFZJRl9QQVJBTSB3aXRoIExJU1RWSUVXX0dldEl0ZW0oKSBkdXJpbmcgaXRzIExWTl9ERUxFVEVJVEVNCgltZXNzYWdlIGhhbmRsZXIuCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBpbmNsdWRlcyBmb3IgPHRpbWUuaD4uCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCU1vcnRlbiBXZWxpbmRlciA8dGVycmEtd2luZUBkaWt1LmRrPgoJKFBTRFJWX0FGTUdldENoYXJNZXRyaWNzKTogVXNlIHVuc2lnbmVkIGNoYXJzIChzaW5jZSBpc3NwYWNlIGlzIHVzZWQpLgoJKFBTRFJWX0FGTVBhcnNlKTogRG9uJ3QgY3Jhc2ggb24gbWlzc2luZyBmb250IG5hbWUuICBVc2UgdW5zaWduZWQKCWNoYXJzLiAgRml4IHBlY3VsaWFyIGluY29uc2lzdGVudCBpbmRlbnRhdGlvbi4gIERvbid0IGxlYWsgYSBGSUxFLgoJQ2F0Y2ggcHJvYmxlbWF0aWMgZmlsZXMgd2l0aCBubyBsaW5lIGZlZWQgaW4gdGhlbS4gIERvbid0IG1peAoJY2hhcmFjdGVycyBhbmQgaW50ZWdlcnMuICBEb24ndCBvdmVycnVuIHRoZSBidWZmZXIuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgdHVya2lzaCBrZXlib2FyZCBsYXlvdXQuCgoyMDAxLTAyLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCVJlbW92ZWQgb3JkaW5hbCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvbid0IG5lZWQgYSBzcGVjaWZpYyB2YWx1ZS4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZXhjZXB0LmMsIHdpbjMyL2ZpbGUuYywgd2luMzIvaW5pdC5jLCB3aW4zMi9uZXdmbnMuYywgd2luMzIvdGltZS5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2xpbmVkZGEuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIG9sZS9vbGUybmxzLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvZW52LmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBvcmRpbmFsIGZpeGVzLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZm9udC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBkbGxzL3dpbmVwcy9mb250LmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgRk9OVE9CSiB0byB1c2UgTE9HRk9OVFcgcmF0aGVyIHRoYW4gTE9HRk9OVDE2LgoJVXBkYXRlZCBwYXJhbWV0ZXJzIG9mIERFVklDRUZPTlRFTlVNUFJPQy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglGaXhlZCBXTV9HRVRURVhUTEVOR1RIIGhhbmRsaW5nLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhdmkvLmN2c2lnbm9yZSwgZGxscy93aW5tbS9tY2lhdmkvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYXZpL2luZm8uYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5kcnYuc3BlYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpX3Jlcy5yYywgZGxscy93aW5tbS9tY2lhdmkvbW1vdXRwdXQuYywgZGxscy93aW5tbS9tY2lhdmkvcHJpdmF0ZV9tY2lhdmkuaCwgZGxscy93aW5tbS9tY2lhdmkvd25kLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbWNpYXZpLmgsIGluY2x1ZGUvdmZ3Lmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0ZWQgdGhlIHJlYWwgaW1wbGVtZW50YXRpb24gb2YgbWNpYXZpLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOgoJQWx3YXlzIHJldHVybiBzdWNjZXNzIGluc3RlYWQgb2Ygb3ZlcmZsb3cgaWYgY2FsbGVyIGRpZG4ndCBzcGVjaWZ5IGEKCWJ1ZmZlci4KCgkqIHRvb2xzL3dpbmVjb25mOgoJTW9ydGVuIFdlbGluZGVyIDx0ZXJyYS13aW5lQGRpa3UuZGs+CglPdXRwdXQgdGhlIHJpZ2h0IG51bWJlciBvZiBiYWNrc2xhc2hlcyBpbiB2YWx1ZXMuCgoJKiB3aW5kb3dzL3NweS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUJlIHNtYXJ0ZXIgYWJvdXQgdGhlIGVsbGlwc2lzIGluIFNQWV9HZXRXbmROYW1lLgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBtZW1vcnkvaGVhcC5jLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1pc2MgdHlwb3MgaW4gY29tbWVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTGlzdFZpZXdfR2V0SXRlbVJlY3QgYWxyZWFkeSBzZXRzIHJjLmxlZnQuCgoJKiBjb250cm9scy9tZW51LmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBvbGUvb2xlMm5scy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCWRlYnVnc3RyX3h4eCBhbHJlYWR5IGRvZXMgdGhlIHF1b3RpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDaGFuZ2UgdGhlIGNhbGxiYWNrIGRlY2xhcmF0aW9ucyB0byBhIHNhZmVyIGZvcm1hdC4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglUdW5lIHRoZSBkb2NvIHRvIHRoZSBjb2RlIGZvciByZWxheS9zbm9vcCBzcGVjaWZpYy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ29zbWV0aWNzLgoKCSogd2luMzIvZGV2aWNlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUdpdmUgYm90aCAtLXdpbnZlciBudDQwIGFuZCB3aW4zMSBmb3IgVnhEIHdhcm5pbmcsIGFzIHNvbWUgcHJvZ3JhbXMKCXdvcmsgd2l0aCB3aW4zMS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L3N0cnVjdF9jb252ZXJ0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gY29ycmVjdCBERFJBV19Db252ZXJ0X0REREVWSUNFSURFTlRJRklFUl8yX1RvXzEgY29uZnVzaW9uCgktIGZpeCBHZXRBdmFpbGFibGVWaWRNZW0gZGRyYXcgaWZhY2UgY29weSZwYXN0ZSBidWcgKGRvaCAhKQoKCSogZGxscy94MTFkcnYveDExZGRyYXcuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZGxscy94MTFkcnYveHZpZG1vZGUuYywgZGxscy94MTFkcnYveHZpZG1vZGUuaCwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW46CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUd1dHMgb2YgYSBzaW1wbGUgWFZpZE1vZGUtc3VwcG9ydGluZyBEaXJlY3REcmF3IEhBTCBpbiB4MTFkcnYuCgoJKiBmaWxlcy9maWxlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJU2V0TGFzdEVycm9yKCkgZm9yIEdldEZpbGVBdHRyaWJ1dGVzQS4KCgkqIHdpbmRvd3MvZGVmd25kLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUV4Y2VwdGlvbiBmb3IgYWxsb3dpbmcgdGhlIHBhcmVudCB0byBzZXQgdGhlIGN1cnNvciBmb3IgYSBjaGlsZCB3bmQgaXMKCXdoZW4gdGhlIGN1cnNvciBpcyBvbiB0aGUgYm9yZGVyIG9mIGEgcmVzaXphYmxlIHduZC4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IG1lbnUgaXRlbSB0byBzZXBlcmF0b3Igb25seSB3aGVuIHN0cmluZyBpcyBOVUxMLgoKMjAwMS0wMi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZGNpZGRpLmgsIGluY2x1ZGUvZGRyYXdpLmg6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVNvbWUgaW1wb3J0YW50IHN0dWZmIGZyb20gdGhlIERpcmVjdERyYXcgRERLIGhlYWRlcnMuCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L2xvYWRlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJTW9yZSB2ZXJib3NlIGVycm9yIG1lc3NhZ2VzIHdoZW4gYXBwbGljYXRpb24gbG9hZCBmYWlscy4KCgkqIGluY2x1ZGUvd2lubnQuaCwgbWlzYy9jcHUuYywgd2luMzIvbmV3Zm5zLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJVXNlIHRoZSBQZW50aXVtJ3MgcmR0c2MgaW5zdHJ1Y3Rpb24gKGlmIGF2YWlsYWJsZSkgdG8gaW1wbGVtZW50CglRdWVyeVBlcmZvcm1hbmNlQ291bnRlci4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93aW5ubHMuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZGNpbWFuMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgZml4ZXMKCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBkbGxzL3dpbm5scy93aW5ubHMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglQZXRlciBILiBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CgktIG9ubHkgcGFyc2UgQUZNLWZpbGVzLCB3aGljaCBzdGFydCB3aXRoICJCZWdpbkZvbnRNZXRyaWNzIgoJLSB1c2UgZmdldGMgaW5zdGVhZCBvZiBmZ2V0cyB0byBjb3BlIHdpdGggQUZNLUZpbGVzIHdpdGgKCSAgTWFjaW50b3NoLVN0eWxlIGxpbmUtYnJlYWtzICgnXHInKSBpbiB0aGUgcGFyc2VyLgoKCSogZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGRsbHMvc2hsd2FwaS91cmwuYywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUltcGxlbWVudCBhIGJ1bmNoIG9mIHNobHdhcGkgZnVuY3Rpb25zLCBhZGQgc29tZSBuZXcgc3R1YnMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgUkdCIDU2NSA9PiBSR0IgMDg4OCBjb252ZXJzaW9uLgoKCSogZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnQga2V5Ym9hcmQgc2hvcnRjdXQgRjIgdG8gcmVuYW1lIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbiB0aGUKCXNoZWxsdmlldyAoYW5kIGluIGNvbW1vbiBkaWFsb2dzKS4KCgkqIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCU1vcmUgcG9ydGFibGUgLmFsaWduIGRpcmVjdGl2ZS4KCUlnbm9yZSAtZGVsYXkgZGlyZWN0aXZlIG9uIHBwYyBvbmx5LgoJQWRkZWQgY29kZSB0byBjYWxsIHRoZSBkbGwgY29uc3RydWN0b3JzLgoKCSogaW5jbHVkZS93aW5udC5oOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWFjcm9zIGZvciBwcGMuCgoJKiBjb250cm9scy9tZW51LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvbid0IGNyYXNoIG9uIGNsb3NlIGZyb20gd2luZG93IG1hbmFnZXIuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUG9zdE1lc3NhZ2VBL1cgaWdub3JlcyBtZXNzYWdlcyBjb250YWluaW5nIHBvaW50ZXJzIGFuZCByZXR1cm5zCglGQUxTRS9MYXN0RXJyb3IgRVJST1JfSU5WQUxJRF9QQVJFTUVURVIuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDcmVhdGVJY29uIG11c3QgcGVyZm9ybSBjb2xvciBkZXB0aCBjb252ZXJzaW9uIGlmIHRoZSBwcm92aWRlZCBiaXRtYXAKCWlzIG5vdCBvZiB0aGUgc2FtZSBkZXB0aCBhcyB0aGUgc2NyZWVuLgoJQWRkZWQgc29tZSBkb2N1bWVudGF0aW9uLgoKMjAwMS0wMi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJRHVhbmUgQ2xhcmsgPGRjbGFya0Bha2FtYWlsLmNvbT4KCS0gbWFrZSB0aGUgTGFuZHNjYXBlL1BvcnRyYWl0IGJ1dHRvbnMgZG8gc29tZXRoaW5nLgoJLSBmaXggdGhlc2UgcHJvYmxlbXMgaW4gdGhlIFBhcGVyIFNpemUgYW5kIFNvdXJjZSBjb21ibyBib3hlczoKCSAgMSkgRXZlcnkgdGltZSB0aGUgcHJpbnRlciBzZXR1cCBkaWFsb2cgaXMgb3BlbmVkLCB0aGUgc2V0dGluZ3MKCSAgYXJlIHNldCBiYWNrIHRvIGdhcmJhZ2Ugc2V0dGluZ3MuCgkgIDIpIElmIHRoZSBwYXBlciBzaXplIG9yIHNvdXJjZSBpcyBjaGFuZ2VkLCBhbmQgdGhlbiB0aGUgcHJpbnRlciBpcwoJICBjaGFuZ2VkLCB0aGUgbmV3IHByaW50ZXIgZG9lcyBub3QgZ2V0IHRoZSBuZXcgc2l6ZSBhbmQgc291cmNlCgkgIHNldHRpbmdzIGV2ZW4gdGhvdWdoIGl0IGFwcGVhcnMgdG8gZnJvbSB0aGUgZGlhbG9nLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBvYmplY3RzL2RpYi5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUluIENyZWF0ZURJQlNlY3Rpb24sIHRoZSBvZmZzZXQgaW50byB0aGUgZmlsZSBtYXBwaW5nIGRvZXMgbm90IGhhdmUgdG8KCWJlIGEgbXVsdGlwbGUgb2YgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGdyYW51bGFyaXR5LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGQgbWlzc2luZyBkZWZpbml0aW9ucyByZXF1aXJlZCBieSB0aGUgQ29udHJvbCBTcHkgZXhhbXBsZXMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IHBsYXlpbmcgb2YgRU1SX0JJVEJMVCwgRU1SX1NUUkVUQ0hCTFQsIEVNUl9NQVNLQkxULAoJRU1SX1BMR0JMVCwgRU1SX1NFVERJQklUU1RPREVWSUNFLCBFTVJfUE9MWVRFWFRPVVRBLCBFTVJfUE9MWVRFWFRPVVRXLAoJRU1SX0ZJTExSR04sIEVNUl9GUkFNRVJHTiwgRU1SX0lOVkVSVFJHTiwgRU1SX1BBSU5UUkdOIGVuaGFuY2VkCgltZXRhZmlsZSByZWNvcmQgdHlwZXMgYWNjb3JkaW5nIHRvIHNwZWNzLgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvaGFzaC5jLCBkbGxzL29sZWF1dDMyL3N0dWJzLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wbGVtZW50IExIYXNoVmFsT2ZOYW1lU3lzQSBmb3IgNCBMQ0lEcywgZml4IHByb3RvdHlwZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZSBUT09MQkFSX0lEIGFuZCBXTV9TRVRUSU5HQ0hBTkdFLCB0aGV5IGFyZSBub3QgdXNlZC4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRGVjbGFyZSBSSUNIRURJVF9DTEFTUzIwVyB1c2luZyBhIFdDSEFSIGFycmF5LgoKCSogd2luZG93cy9jbGlwYm9hcmQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJZiBhbiBhcHBsaWNhdGlvbiBkaXJlY3RseSBjYWxscyBTZXRDbGlwYm9hcmREYXRhIHdpdGggQ0ZfVEVYVCBhbmQKCXRoZW4gbGF0ZXIgY2FsbGVkIEdldENsaXBib2FyZERhdGEgd2l0aCBDRl9URVhUIHdlIGdhdmUgdGhlbSBhIE5VTEwKCWJlY2F1c2Ugd2Ugd2hlcmUgbm90IGhhbmRsaW5nIHRoaXMgY2FzZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGJlaGF2aW91ciBvZiBFTV9HRVRMSU5FIG1lc3NhZ2UuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBzdXJlIHRoYXQgTVNHX1BlZWtNZXNzYWdlIHVzZXMgYW4gaW50ZXJuYWwgdmFyaWFibGUgdG8gYXZvaWQKCWNvcnJ1cHRpb24uCgoJKiBkbGxzL250ZGxsL3JlZy5jLCBmaWxlcy9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvcmVnYXBpL1JFQURNRSwgdG9vbHMvd2luZWluc3RhbGw6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gVFJBQ0Ugb3BlbmVkIHJlZ2lzdHJ5IGhhbmRsZXMKCS0gYWRkIHByb3BlciBxdW90ZXMgdG8gd2luZWluc3RhbGwKCS0gc3BlbGxpbmcKCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIG1vdmUgVFNYR3JhYlNlcnZlciBhZnRlciBhIHBvc3NpYmxlIHJldHVybiBGQUxTRTsKCS0gbW92ZSBtaXNwbGFjZWQgY29tbWVudAoJLSBvcHRpbWl6ZSBUU1hHcmFiU2VydmVyIHVzZQoKCSogd2luZG93cy9tZGkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgcmVkdW5kYW50IHBhcmFtZXRlcnMgZnJvbSBNRElDcmVhdGVDaGlsZCBhbmQgTURJRGVzdHJveUNoaWxkLgoJTWFrZSB0aGUgcGFyYW1ldGVyIG5hbWVzIHNsaWdodGx5IG1vcmUgZGVzY3JpcHRpdmUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGQgYW4gdXBkb3duIGNvbnRyb2wgdG8gdGhlIGNvcHkgY291bnQgZW50cnkuCglEaXNhYmxlIHRoZSBjb2xsYXRlIGJ1dHRvbiBpZiBuby4gb2YgY29waWVzIGlzIDEuCglBZGQgTGFuZHNjYXBlL1BvcnRyYWl0IGljb25zLgoJR2V0IHJpZCBvZiB0aGUgIkR1bW15IENvbW1lbnQiIGxpbmUuCglGaXggdGhlIEVuZ2xpc2ggb2Ygc29tZSBvZiB0aGUgZXJyb3IgbWVzc2FnZXMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdW51c2VkIG91dFhmb3JtLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWxsb3cgYW4gYXBwbGljYXRpb24gdG8gcmUtYXNrIGZvciBFWENMVVNJVkUgRGlyZWN0RHJhdyBhY2Nlc3MuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDaGVjayBQUk9QU0hFRVRQQUdFQS5wZm5DYWxsYmFjayBmb3IgTlVMTCBwb2ludGVyIGlmIFBTUF9VU0VDQUxMQkFDSwoJaXMgZ2l2ZW4uCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIFdNX0NIQVJzIGFuZCBwYXNzIHRoZW0gdG8gVFJFRVZJRVdfUHJvY2Vzc0xldHRlcktleXMuIFNlZSBhbHNvCglMSVNUVklFV19Qcm9jZXNzTGV0dGVyS2V5cyBpbiBsaXN0dmlldy5jLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCAocmV3cml0ZSksIGFuZCBhZGQgZG9jdW1lbnRhdGlvbiB0byBMSVNUVklFV19Qcm9jZXNzTGV0dGVyS2V5cy4KCUxvd2VyZWQgdGhlIGtleSByZXBldGl0aW9uIGRlbGF5IChBcmljKS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgcmVxdWlyZSB3cml0ZSBhY2Nlc3Mgb24gdGhlIGZpbGUgaGFuZGxlIHRvIGNyZWF0ZSBhCgljb3B5LW9uLXdyaXRlIG1hcHBpbmcuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBkbGxzL3dpbnNwb29sL3dzcG9vbC5jLCBsaWJ0ZXN0L2hlbGxvNS5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgd2luZG93cy9kZWZ3bmQuYywgZGxscy9jb21jdGwzMi9zbW9vdGhzY3JvbGwuYywgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsIGRsbHMvaW1tMzIvaW1tX3ByaXZhdGUuaCwgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvd2luZXBzL2RyaXZlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDaGFuZ2UgdGhlIGNhbGxiYWNrIGRlY2xhcmF0aW9ucyB0byBhIHNhZmVyIGZvcm1hdC4KCgkqIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZmlsZXMvZmlsZS5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL3RpbWUuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBhcmd1bWVudCBmaXhlcy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCURvY3VtZW50YXRpb24gbmFtZSBmaXhlcyAoYWx3YXlzIHVzZSBleHRlcm5hbCBuYW1lKS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGxpYnRlc3QvdmFydGVzdC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXggdHlwb3MgaW4gY29tbWVudHMuCgoJKiBkbGxzL2tlcm5lbC9ubHMvbXNsLm5scywgbWlzYy9vcHRpb25zLmMsIHRvb2xzL3dtYy9sYW5nLmMsIHRvb2xzL3dtYy9sYW5ndWFnZS5jLCB0b29scy93cmMvdXRpbHMuYywgZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBNYWxheWFuIGxhbmd1YWdlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJRml4IExpc3RWaWV3X0dldEl0ZW1SZWN0KCkgbWFjcm8uCglGaXggdXNlIG9mIExpc3RWaWV3X0dldEl0ZW1SZWN0KCkgbWFjcm8gaW4gbGlzdHZpZXcgY29udHJvbC4KCUFkZCBzb21lIGRvY3VtZW50YXRpb24gdG8gTElTVFZJRVdfR2V0SXRlbVJlY3QoKS4KCgkqIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L21hdGguYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L21zdmlkZW8uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvdXNlci5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZG9jdW1lbnRhdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZGVkIHN1cHBvcnQgZm9yIEFQSTpzIGltcGxlbWVudGVkIHdpdGggX19BU01fR0xPQkFMX0ZVTkMKCS0gUmVvcmdhbml6ZWQgZG9jdW1lbnRhdGlvbiBjaGVja2luZy4KCS0gTWlub3IgQVBJIGZpbGVzIGZpeGVzCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIGRpZmZlcmVudGx5IHNpemVkIHN0cnVjdHMgYnkgdXNpbmcgdGhlaXIgZHdTaXplIHBhcmFtZXRlcnMuCgoJKiBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgd2luZG93cy93aW5wcm9jLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJRml4IGEgZmV3IGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGphYmJleUBjb2Rld2VhdmVycy5jb20+CglEb24ndCBhbGxvdyBjb21jdGwzMiBjb250cm9scyB0byBhY2Nlc3MgdGhlaXIgaW5mb1B0ciBiZWZvcmUgaXQgaGFzCgliZWVuICBhbGxvY2F0ZWQgb3IgYWZ0ZXIgaXQgaGFzIGJlZW4gZnJlZWQuCgoJKiBkbGxzL3dpbm1tL21taW8uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBNTUlPX09wZW4gd29yayB3aXRoIE5VTEwgZmlsZW5hbWUgYWdhaW4uCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3dpbi5jLCBkbGxzL3VzZXIvY29udHJvbHMuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB1bmljb2RlIE1ESSBjbGllbnQgd2luZG93IHByb2MuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBjaGFyIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBzaWduZWQuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaDoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglVc2UgZXh0ZXJuICJDIiBmb3IgV2luZWxpYiBDKysgYXBwcy4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQ2FsbCBMb2FkSW1hZ2UgdG8gbG9hZCB0aGUgbm9uLXN0YW5kYXJkIHNpemVkIGNvbGxhdGUgaWNvbnMuCgoJKiBkbGxzL3dpbmVwcy9mb250LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglNYXAgJ0NvdXJpZXIgTmV3JyB0byAnQ291cmllcicuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggRU1GIHBvc2l0aW9uaW5nIHdoZW4gcmNsRnJhbWUgaGFzIGEgbm9uLXplcm8gb3JpZ2luLgoKCSogaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2V0dXBhcGkuaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnNvY2syLmgsIGluY2x1ZGUvd2luc3ZjLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUNoYW5nZSB0aGUgY2FsbGJhY2sgZGVjbGFyYXRpb25zIHRvIGEgc2FmZXIgZm9ybWF0LgoKCSogZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCWFjbURyaXZlckVudW1XIHNob3VsZG4ndCByZXR1cm4gTU1TWVNFUlJfRVJST1IgaWYKCWFjbURyaXZlckVudW1DYWxsYmFjayByZXR1cm5zIFRSVUUuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYywgaW5jbHVkZS93aW5zcG9vbC5oOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFNldC9HZXRQcmludGVyRGF0YVtFeF0uCglSZW1vdmUgb3JkaW5hbHMgZnJvbSB3aW5zcG9vbC5kcnYuc3BlYyAuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJVGFrZSBhIHN0YWIgYXQgaW1wbGVtZW50aW5nIE9sZVNldEF1dG9Db252ZXJ0LgoKCSogZGxscy93aW5lcHMvYWZtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGEgTlVMTCBwdHIgcHJvYmxlbS4KCUFkZGVkIGxvYWRpbmcgb2YgLmFmbSBmaWxlcyBmcm9tIHNldmVyYWwgY29tbW9uIGxvY2F0aW9ucwoJKGdob3N0c2NyaXB0LCBhMnBzLCBlbnNjcmlwdCwgKHRlVGVYKSwgWDExKS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglEb24ndCB0b3VjaCBXQVZFSERScyBkd0xvb3BzIHZhcmlhYmxlLgoKCSogZGxscy93aW5lcHMvcHBkLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTcGFjZXMgZG8gbm90IGhhdmUgdG8gY29tZSBhZnRlciB0aGUgJzonIHRoYXQgZW5kcyBhIGtleXdvcmQuCglNYXAgYmluIG5hbWUgTWFudWFsRW52IHRvIERNQklOX0VOVk1BTlVBTC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNYWtlIHN1cmUgYWxsIGZpbGVzIGFyZSB0ZXJtaW5hdGVkIHdpdGggYSAnXG4nLgoJUmVtb3ZlIG9ic29sZXRlIGNvbW1lbnQgYWJvdXQgJ2FmeHJlcy5oJyBjb21pbmcgYmFjayBhZnRlciBlZGl0aW5nIGluIFZDLgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIFJURiBxdWFsaWZpZXIgaW4gUkMgZmlsZXMuCgoJKiBtc2Rvcy9pbnQyMS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCB0aGUgaW50MjEgTEZOIHJlbmFtZSBmaWxlIGZ1bmN0aW9uLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggUmVsZWFzZVN0Z01lZGl1bSBmb3IgTWV0YUZpbGVQaWN0IHR5cGVzLgoKCSogZGxscy93aW5lcHMvdGV4dC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IGZvciByb3RhdGVkIHRleHQgd2hlbiBscER4IGlzIHNwZWNpZmllZC4KCUJldHRlciBoYW5kbGluZyBvZiBjdW11bGF0aXZlIHJvdW5kaW5nIGVycm9ycy4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIHRoZSBDQ1NfTk9SRVNJWkUgc3R5bGUuCglDaGFuZ2UgdGhlIHNjcm9sbCBkZWx0YSBvbmx5IHdoZW4gdGhlIGFwcCByZXNwb25kcyB0byB0aGUgUEdOX05PVElGWSBtc2cuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUluIENvcHlESUJTZWN0aW9uLCB1c2Ugc291cmNlIERJQiBjb2xvcm1hcCBpbnN0ZWFkIGlmIG5vIHBhbGV0dGUgaGFzCgliZWVuIHNlbGVjdGVkIGludG8gdGhlIHNvdXJjZSBEQywgdG8gd29yayBhcm91bmQgc29tZSBYMTEtaW1wb3NlZAoJRElCc2VjdGlvbiBpbXBsZW1lbnRhdGlvbiBkZWZpY2llbmNpZXMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4IERHQTIgbW9kZSBzZXR0aW5nIHRvIHVzZSB0aGUgY29ycmVjdCBjb2xvciBkZXB0aC4KCgkqIHRvb2xzL3dpbmVjb25mOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGZpeCB3aW5lY29uZiB0byBnZW5lcmF0ZSBuZXcgY29uZmlnIGZpbGUgZm9ybWF0CgktIGZpeCBzb21lIHZhcmlhYmxlIGNoZWNrcwoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBFTVJfRVhUVEVYVE9VVEEgYW5kIEVNUl9DUkVBVEVNT05PQlJVU0ggZW5oYW5jZWQKCW1ldGFmaWxlIHJlY29yZHMuIEJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBFTVJfU1RSRVRDSERJQklUUyBhbmQKCUVNUl9FWFRURVhUT1VUVy4KCgkqIHJlbGF5MzIvc25vb3AuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCU1ha2Ugc25vb3Agc3BlY2lmaWMgY2FzZSBpbnNlbnNpdGl2ZS4KCgkqIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9kY2ltYW4zMi9kY2ltYW5fbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBEQ0lDbG9zZVByb3ZpZGVyIHN0dWIuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IElTaGVsbExpbms8QXxXPl9mbkdldFdvcmtpbmdEaXJlY3RvcnksCglJU2hlbGxMaW5rPEF8Vz5fZm5HZXRBcmd1bWVudHMsIElTaGVsbExpbms8QXxXPl9mbkdldEljb25Mb2NhdGlvbi4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJT3duZXJkcmF3biBjb21ibyBib3hlcyBzaG91bGQgdXNlIE9EU19DT01CT0JPWEVESVQgaW4gdGhlIGl0ZW1TdGF0ZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEZpeCB0eXBvIGluIHByZXZpb3VzIGNoYW5nZS4KCS0gQWRkIHN0cnVjdHVyZXMgZm9yIENCRU5fSU5TRVJUSVRFTSBub3RpZnkgbWVzc2FnZS4KCgkqIHRvb2xzL3dyYy91dGlscy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVJlbW92ZSB4bWFsbG9jL3hyZWFsbG9jIGxpbWl0cyBmb3IgbGFyZ2UgYmluYXJ5IHJlc291cmNlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRleHQgc2l6ZSBjYWxjdWxhdGlvbiBidWcgaW4gR2V0VGV4dEV4dGVudFBvaW50KCkgZm9yIHdpbmRvdyBkYydzLgoKCSogZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLnNnbWw6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglOZXcgc2VjdGlvbiBhYm91dCB3cml0aW5nIGRvY3MgaW4gRG9jQm9vayBhbmQgZGVhbGluZyB3aXRoIHRoZSBXaW5lCglTR01MIGJ1aWxkIHN5c3RlbTsgaGFsZiBkb25lLCBidXQgYSBnb29kIHN0YXJ0LgoKCSogZGxscy93aW5ubHMvd2lubmxzLmMsIGRsbHMvd2lubmxzL3dpbm5scy5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBIGNvdXBsZSBvZiBzdHVicyBmb3IgVGVybWluYWwgU2VydmVyIENsaWVudCAxNiBiaXQuCgoyMDAxLTAxLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW46CglNYXR0aGV3IENsYXJrZSA8TWF0dGhld19DbGFya2VAbWluZGxpbmsuYmMuY2E+CglEb24ndCBhc3N1bWUgLnNwZWMgZmlsZXMgYXJlIGZvdW5kIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgYXMgdGhpcwoJaXMgbm90IHRoZSBjYXNlIHdoZW4gYnVpbGRpbmcgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN5bmNocm9uaXplIGFjY2VzcyB0byBNRVNTQUdFUVVFVUUgbWVtYmVycy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBtb3JlIDE2LT4zMiBtYXBwaW5ncyBmb3IgSUNNKiBtZXNzYWdlcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglkdmlkZW8uZGxsIGZvcmdldHMgdG8gc2V0IHRoZSBERFNEX0NBUFMgZmxhZywganVzdCBhc3N1bWUgaXQgc2V0LgoJT3V0cHV0IG1vcmUgZGVidWcgaW5mbyBvbiBmYWlsdXJlLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglEaXNhYmxlZCBzZXR0aW5nIG9mIHdpbmRvdyBvcmlnaW4gZnJvbSBhbiBFTUYuCgoyMDAxLTAxLTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9tc3ZpZGVvL21zdmZ3MzIuc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBWaWRlb0NhcERyaXZlckRlc2NBbmRWZXIuCgoJKiBkbGxzL3VzZXIvdXNlci5zcGVjLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy91c2VyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgZXhwb3J0cy4KCgkqIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRG9uJ3QgZGlzYWJsZSBrZXlib2FyZCBhdXRvcmVwZWF0LCBzaW5jZSBhdXRvcmVwZWF0IGlzIG5vdyBkZXRlY3RhYmxlLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJLSBTaWVkbGVyMyBhcHBlYXJzIHRvIGhhdmUgcmF0aGVyIGxpbWl0ZWQgYnVmZmVycyBmb3IgZGV2aWNlL2Rlc2NyaXB0aW9uCgkgIHN0cmluZ3MgYW5kIGNyYXNoZXMgd2l0aCB0aG9zZSBsb25nIHN0cmluZ3MuIFNob3J0ZW5lZCB0aG9zZSBzdHJpbmdzLgoJLSBBbHNvIGRyaXZlciBuZWVkcyB0byBiZSAiZGlzcGxheSIgZm9yIGRpc3BsYXkgZGV2aWNlcyAoc29tZSBvdGhlcgoJICBwcm9ncmFtcyByZWx5IG9uIHRoYXQgaW5mbyBJIHNlZW0gdG8gcmVtZW1iZXIpLgoJLSBGaXhlZCBEU3VyZmFjZTo6R2V0U3VyZmFjZURlc2MgdG8gbm90IGp1c3QgYmxpbmRseSBjb3B5IGEKCSAgRERTVVJGQUNFREVTQzIgc3RydWN0IG92ZXIgYSBzbWFsbGVyIEREU1VSRkFDRURFU0Mgb25lLgoKCSogZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXhpbnB1dC5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCBjaXJjdWxhciBidWZmZXJpbmcgZm9yIHRoZSBkaW5wdXQgbW91c2UgZGV2aWNlLgoJTWFwcGVkIHRoZSBtb3VzZSB3YXJwIG9uIHRoZSBjZW50ZXIgb2YgdGhlIGNvb3BlcmF0aXZlIHdpbmRvdywgd2hpY2gKCXNob3VsZCBtYWtlIHdpbmRvd2VkIGdhbWVzIHdvcmsgYmV0dGVyIGluIG1hbmFnZWQgbW9kZS4KCgkqIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVRha2UgaW50byBhY2NvdW50IHVucHJpbnRhYmxlIG1hcmdpbnMgaW4gcHNkcnYuCgoJKiBkbGxzL3dpbmVwcy9kcml2ZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+Cglwc2RydidzIERldmljZUNhcGFiaWxpdGllcyBzaG91bGQgbGlzdCBETUJJTl9BVVRPIGFzIGFuIGF2YWlsYWJsZQoJYmluLgoKCSogZGxscy93aW5lcHMvcHBkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkICJPbmx5T25lIiBwYXBlciBzb3VyY2UsIHVzZWQgYnkgdGhlIEFjcm9iYXQgRGlzdGlsbGVyIFBQRC4KCgkqIGRsbHMvbXN2Y3J0L21hdGguYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHR5cG8uCgoJKiBkbGxzL3dpbm1tL21jaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIG1jaSBzdHJpbmcgcGFyc2luZyBpc3N1ZXMuCglBZGRlZCBtb3JlIG1hcHBpbmdzIDMyQVRvMTYuCgoJKiBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNpbXBsaWZpZWQgbWVtb3J5IGFsbG9jYXRpb24gZm9yIGFzeW5jaHJvbm91cyBNQ0kgbWVzc2FnZSBoYW5kbGluZy4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5kcnYuc3BlYywgZGxscy93aW5tbS9tY2lzZXEvbWNpc2VxLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5kcnYuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRGVsYXkgaW1wb3J0aW5nIHVzZXIzMiAob25seSB1c2VkIGZvciBjb25maWd1cmF0aW9uKS4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgb2RkaXRpZXMuCgoJKiBkbGxzL21zdmlkZW8vZHJhd2RpYi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIGJpdCBtb3JlIG9mIGZsYWdzIGhhbmRsaW5nIGluIGRyYXdkaWIgZnVuY3Rpb25zLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVB1dCBhICdcbicgYXQgdGhlIGVuZCBvZiB0aGUgRklYTUUgdG8gcHJldmVudCB2ZXJ5IG9kZCBhbmQgZGlmZmljdWx0Cgl0byBkZWJ1ZyBjcmFzaGVzIGR1ZSB0byBvdmVyZmxvd2luZyBvZiB0aGUgZGVidWcgaW5mbydzIG91dHB1dCBidWZmZXIuCgoJKiB0b29scy9zcGVjbWFrZXIvUkVBRE1FLCB0b29scy9zcGVjbWFrZXIvbWFpbi5jLCB0b29scy9zcGVjbWFrZXIvbXNtYW5nbGUuYywgdG9vbHMvc3BlY21ha2VyL291dHB1dC5jLCB0b29scy9zcGVjbWFrZXIvc3BlY21ha2VyLmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJSW1wcm92ZSBuYW1lIGRlbWFuZ2xpbmcsIGFkZCAnZGVtYW5nbGUgc3ltYm9sJyBvcHRpb24uCgoyMDAxLTAxLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlIHRoZSBrZXl3b3JkICdmdW5jdGlvbicsIGFzIHJlcXVlc3RlZCBieSBSb2JlcnQgTHViZXJkYS4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCU1hcnRpbiBQaWxrYSA8bXBpbGthQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHR5cG8gd2hpY2ggY2F1c2VkIHRoZSBXcml0ZXRvSG9tZVJlZ2lzdHJ5RmlsZXMgb3B0aW9uIHRvIGJlCglpZ25vcmVkLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBSZXdyaXRlIFdNX0NSRUFURSB0byBtYXRjaCBuYXRpdmUgKGFsbG9jYXRpbmcgb3duIEVkaXQgY29udHJvbCwgZXRjKS4KCS0gSW1wbGVtZW50IGFkZGl0aW9uYWwgV05EUFJPQ3MgZm9yIHRoZSBDb21ibyBhbmQgRWRpdCBjb250cm9scyB0bwoJICBoYW5kbGUgZGlmZmVyZW50IGZ1bmN0aW9ucy4KCS0gSW1wbGVtZW50IENCRU1fU0VUQ1VSU0VMIGFuZCBDQkVNX0hBU0VESVRDSEFOR0VELgoKCSogY29udHJvbHMvY29tYm8uYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIFdoZW4gcGFpbnRpbmcgdGhlIHRleHQsIGlmIHRoZSBjb250cm9sIGlzIE9XTkVSRFJBV04gdGhlIGlzc3VlIHRoZQoJICBXTV9EUkFXSVRFTSBtZXNzYWdlLgoJLSBTZXQgdGhlIGZvY3VzZWQgc3RhdHVzIGF0IHRoZSBlbmQgb2YgdGhlIGVuZCBvZiB0aGUgU2V0Zm9jdXMgcm91dGluZS4KCS0gRmxpcCB0aGUgb3JkZXIgb2YgdXBkYXRpbmcgdGhlIGxpc3QgYm94IGFuZCBpc3N1aW5nIHRoZSBXTV9OT1RJRlkKCSAgZm9yIENCTl9FRElUVVBEQVRFIHRvIG1hdGNoIG5hdGl2ZS4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglNYWRlIGV4Y2VwdGlvbl9ldmVudF9yZXF1ZXN0IG5vbi1ibG9ja2luZywgYW5kIGFkZGVkCglnZXRfZXhjZXB0aW9uX3N0YXR1cyB0byByZXRyaWV2ZSB0aGUgZXhjZXB0aW9uIHJlc3VsdCByZXR1cm5lZCBieSB0aGUKCWRlYnVnZ2VyLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9wYWludGluZy5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL2hlYXAuaCwgbWVtb3J5L2NvZGVwYWdlLmMsIG1zZG9zL2Rvc2FzcGkuYywgbXNkb3MvaW50MTEuYywgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50MzMuYywgb2JqZWN0cy9kaWIuYywgZGxscy9vbGVhdXQzMi9jb25ucHQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsIGRsbHMvc2hkb2N2dy9ldmVudHMuYywgZGxscy9zaGRvY3Z3L2ZhY3RvcnkuYywgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS91cmwuYywgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdXNlci9iaWRpMTYuYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc2FjbS9zdHJlYW0uYywgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9vbGUzMi9hbnRpbW9uaWtlci5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZTJpbXBsLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYywgZGxscy9kZHJhdy9jb252ZXJ0LmMsIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS91c2VyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2Uvd25kcHJvYy5jLCBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCUFkZCA8c3RyaW5nLmg+IHRvIGZpbGVzIHRoYXQgbmVlZGVkIGl0LgoKCSogZmlsZXMvZmlsZS5jLCBtZW1vcnkvYXRvbS5jLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvd2luaGVscC5jLCB3aW5kb3dzL3dpbnByb2MuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVNvbWUgbW9yZSBjbGVhbnVwcy4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQ2hlY2sgdGhhdCB0aGUgbGludXggMi40IGV2ZW50IGludGVyZmFjZSBpcyBhdmFpbGFibGUgYmVmb3JlIGNyZWF0aW5nCglhIGRpbnB1dCBkZXZpY2UgYmFzZWQgb24gaXQuCgoJKiBkbGxzL3dpbmVwcy90ZXh0LmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglIYW5kbGUgdGhlIGxwRHggYXJyYXkgcHJvcGVybHkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJTWFydGluIFBpbGthIDxtcGlsa2FAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgU1dfUkVTVE9SRSBoYW5kbGluZy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3Qgbm90aWZ5IHBhcmVudCBvZiB0aGUgRWRpdCBjb250cm9sIG9uIFdNX1NFVFRFWFQgd2hlbiBFZGl0IGlzCglwYXJ0IG9mIHRoZSBDb21ib0JveC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIG1ha2UgaGlkZGVuIGJhbmRzIGhhdmUgdmFsaWQgKDAgd2lkdGgpIGNoaWxkIHdpbmRvdyBhcmVhcwoJLSB3aGVuIGhpZGluZyBhIGJhbmQsIGRvbid0IHNob3cgdGhlIHdpbmRvdywgaGlkZSBpdC4KCgkqIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCUNoYW5nZWQgd2FpdF9wcm9jZXNzIGFuZCB3YWl0X2RlYnVnX2V2ZW50IHJlcXVlc3RzIHRvIG5ldmVyIGJsb2NrOwoJd2FpdGluZyBpcyBhbHdheXMgZG9uZSB0aHJvdWdoIFdhaXRGb3JTaW5nbGVPYmplY3QoKS4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3Qgb3BlbiB0aGUgY29tbSBoYW5kbGUgd2l0aCBHRU5FUklDX1dSSVRFIHZpYSBGSUxFX0dldFVuaXhIYW5kbGUuCgoJKiB3aW5kb3dzL2RlZnduZC5jLCBpbmNsdWRlL3dpbi5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlcGxhY2UgMTYtYml0IGNhbGxzIGluIERlZldpbmRvd1Byb2MgYnkgMzItYml0LCBwcmVmZXJyaW5nIHVuaWNvZGUKCUFQSSBjYWxscy4KCjIwMDEtMDEtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3VzZXIvd3NwcmludGYuYzoKCUdvdCByaWQgb2YgV1BSSU5URl9FeHRyYWN0VkFQdHIuCgoJKiBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3dpbjMycy93aW4zMnMxNi5zcGVjLCBkbGxzL3dpbmVkb3MvZG9zdm0uYywgZGxscy93aW5tbS93aW5lb3NzL29zcy5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCB0b29scy9zcGVjbWFrZXIvb3V0cHV0LmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RkcmF3L3RodW5rcy5jLCBkbGxzL2RkcmF3L2RkcmF3L3VzZXIuYywgZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2Zha2V6YnVmZmVyLmMsIGRsbHMvZGRyYXcvc3RydWN0X2NvbnZlcnQuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZWRvcy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIGJ1Z2ZpeGVzLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvaG9vay5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3VpdG9vbHMuYywgZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGRsbHMva2VybmVsL3N0cmVzcy5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3RodW5rLmMsIGRsbHMva2VybmVsL3RpbWUuYywgZGxscy9rZXJuZWwvdG9vbGhlbHAuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC93aW44N2VtLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jLCBkbGxzL3VzZXIvYmlkaTE2LmMsIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvbWlzYy5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy91c2VyL3RleHQuYywgbG9hZGVyL3Rhc2suYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9jdW1lbnRhdGlvbiBvcmRpbmFsIGZpeGVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJRml4ZWQgdHlwbyBpbiBIS0VZX1VTRVJTLy5EZWZhdWx0IGNyZWF0aW9uLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCURvbid0IHNlbmQgbm90aWZpY2F0aW9ucyBmb3IgdGhlIGluaXRpYWwgZGlzcGxheSBvZiB0aGUgZmlyc3QgdGFiIG9mCgl0aGUgY29udHJvbC4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglBZGRlZCBhIGZldyBtZXNzYWdlcyBhbmQgbm90aWZpY2F0aW9ucy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJRGlzYWJsZWQgc2V0dGluZyBvZiB2aWV3cG9ydCBvcmlnaW4gZnJvbSBhbiBFTUYuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgcmVzdG9yZSB0aGUgYml0X2dyYXZpdHkgdG8gQkdGb3JnZXQgYWZ0ZXIgdXNpbmcgQkdOb3J0aHdlc3QgdG8KCWNvcHkgYml0cyBkdXJpbmcgU2V0V2luZG93UG9zLgoKCSogd2luZWRlZmF1bHQucmVnOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdGhlIG5lY2Vzc2FyeSByZWdpc3RyeSBlbnRyaWVzIGZvciB0aGUgTW96aWxsYSBBY3RpdmVYIGNvbnRyb2wuCgoyMDAxLTAxLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJT25seSBzZXQgd2luZG93IHRleHQgZm9yIFdNX05DQ1JFQVRFIGluIERlZldpbmRvd1Byb2MqKCkgaW4gY2FzZQoJbHBzek5hbWUgaXMgYSBzdHJpbmcgKGkuZS4gY2hlY2sgSElXT1JEKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXBzL29ibV9yYWRpb2NoZWNrLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVJlbW92ZWQgbm9uLXN0YW5kYXJkIE9CTV9SQURJT0NIRUNLIGJpdG1hcC4KCgkqIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvdWl0b29scy5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYzoKCVVzZSBEcmF3RnJhbWVDb250cm9sKCkgaW5zdGVhZCBvZiBPRU0gYml0bWFwcyB0byBwYWludCBjYXB0aW9uIGJ1dHRvbnMKCWFuZCBtZW51IGNoZWNrIG1hcmtzLgoKCSogZGxscy93aW5lcHMvZm9udC5jLCBkbGxzL3dpbmVwcy9ncmFwaGljcy5jLCBkbGxzL3dpbmVwcy9wZW4uYywgZGxscy93aW5lcHMvdGV4dC5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHdvcmxkIHRyYW5zZm9ybSBzdXBwb3J0LgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglTZXZlcmFsIGZpeGVzIGZvciBwbGF5aW5nIGVuaGFuY2VkIG1ldGFmaWxlcyBpbiBhIGdpdmVuIHJlY3RhbmdsZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHdvcmxkIHRyYW5zZm9ybSBzdXBwb3J0LgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgb2JqZWN0cy9mb250LmMsIFJFQURNRSwgZGVidWdnZXIvUkVBRE1FOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL3J1bm5pbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItYmluZGxscy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItaW50cm8uc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lbGliLW1mYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVsaWItcGtnLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi1wb3J0aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi10b29sa2l0LnNnbWwsIGRvY3VtZW50YXRpb24vd2luZWxpYi11c2VyLnNnbWw6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CgktIFNwbGl0IFdpbmVsaWIgVXNlciBHdWlkZSBpbnRvIHNtYWxsZXIgZmlsZXMgZm9yIGVhc2llciBtYWludGVuYW5jZQoJICBhbmQgYmV0dGVyIGludGVncmF0aW9uIHdpdGggbWFrZV93aW5laHEuCgktIEFkZCBzb21lIFdpbmVsaWIgZG9jcyBmcm9tIEpvbiBHcmlmZml0aHMuCgktIEZpeCBhIDxzZWN0Mj4gcHJvYmxlbSBpbiBydW5uaW5nLnNnbWwuCgoyMDAxLTAxLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3RlY3QgcmVhZC1vbmx5IGVkaXQgY29udHJvbCBmcm9tIG1vZGlmaWNhdGlvbi4KCgkqIGRsbHMvbXN2Y3J0L2V4aXQuYzoKCUpvbiBHcmlmZml0aHMgPHRudGpwZ3JpZmZAdHNueHQuY28udWs+CglJbXBsZW1lbnRlZCBfX2RsbG9uZXhpdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCU1pc2MgZml4ZXMgaW4gTElTVFZJRVdfU2V0SW1hZ2VMaXN0LCBMSVNUVklFV19TZXRJdGVtQ291bnQsCglMSVNUVklFV19VcGRhdGVTaXplLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRGlzcGxheSB0aGUgY29uZmlnIGZpbGUgbG9jYXRpb24gaW4gdGhlIGluY29ycmVjdCBjb25maWcgZmlsZSBlcnJvcgoJbWVzc2FnZS4KCgkqIGRsbHMvbXN2Y3J0L3djcy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmM6CglKYW1lcyBKdXJhbiA8amFtZXNqdXJhbkBhbHVtbmkucHN1LmVkdT4KCVVzZSBpbnQgaW5zdGVhZCBvZiBXQ0hBUiBpbiB2YV9hcmcoKSAoZml4ZXMgZ2NjLWN1cnJlbnQgY29tcGlsYXRpb24KCXByb2JsZW0pLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCB2YXJpb3VzIGRlZmluaXRpb25zIChtb3N0bHkgbWFjcm9zKS4KCUZpeGVkIHR5cG8gaW4gdGhlIEhETl97QkVHSU4sRU5EfURSQUcgbWFjcm9zLgoJQWRkZWQgYSBwb2ludGVyIHR5cGUgZm9yIElNQUdFSU5GTy4KCUZpeGVkIHRoZSByZXR1cm4gdHlwZSBvZiBUcmVlVmlld197U2V0VG9vbFRpcHMsR2V0VG9vbFRpcHN9LgoJRXZlbiBtYWNyb3MgbXVzdCBjb21lIGluIEEvVyBhbmQgbmV1dHJhbCBmb3JtIChzZWUgdGhlIExpc3RWaWV3XyBzZXJpZXMpLgoJRml4ZWQgdHlwbyBpbiBNb250aENhbF9TZXRDb2xvci4KCgkqIGluY2x1ZGUvcmljaGVkaXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgQ0hBUlJBTkdFLgoKCSogaW5jbHVkZS9wcnNodC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBQU05fR0VUT0JKRUNULgoKCSogZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJSW5jbHVkZSAnb3B0aW9ucy5oJyBmb3IgYSBuZWVkZWQgcHJvdG90eXBlLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGluY2x1ZGUvb2xlYXV0by5oOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCBWYXJDeUZyb21JMSB0byB0YWtlIGEgc2lnbmVkIGNoYXIuCgoJKiBjb250cm9scy9jb21iby5jLCBkbGxzL21zdmNydC9tYmNzLmMsIG9iamVjdHMvYml0bWFwLmMsIHRvb2xzL3NwZWNtYWtlci9vdXRwdXQuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVHlwbyBmaXhlcyBpbiBjb21tZW50cy4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9lbnZpcm9uLmMsIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9taXNjLmMsIGRsbHMvbXN2Y3J0L21zdmNydC5zcGVjLCBkbGxzL21zdmNydC9wcm9jZXNzLmMsIGRsbHMvbXN2Y3J0L3RocmVhZC5jLCBkbGxzL21zdmNydC93Y3MuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIE5ldyBtc3ZjcnQgdW5pY29kZSBmdW5jdGlvbnMsIHdpbmFwaV9jaGVjay8tV2FsbC8tVyBjbGVhbi4KCS0gRm9yd2FyZCB0byBudGRsbCB3aGVyZSBwb3NzaWJsZS4KCS0gRml4IHNvbWUgLnNwZWMgZW50cmllcyB3aXRoIGluY29ycmVjdCBwYXJhbWV0ZXJzLgoKCSogaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUZpeGVkIFVuaWNvZGUgc3RyaW5ncy4KCgkqIGRsbHMvbnRkbGwvY3JpdHNlY3Rpb24uYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglNYWRlIFNwaW5Db3VudCBGSVhNRSBpbnRvIGEgVFJBQ0UuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUluY3JlYXNlZCBkZWJ1Z2dlciBpbmNsdWRlIGxpbWl0IHRvIDUxMi4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9wZV9pbWFnZS5jLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LmgsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9zdHJpbmcuYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIFJlbW92ZSA8c3RyaW5nLmg+IGZyb20gd2lubnQuaC4KCS0gbnRkbGw6IGNvbXBsZXRlIGNydCBmdW5jdGlvbnMsIHByZXZlbnQgbGliYyBpbXBvcnRzLCBmaXggc3NjYW5mLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL3Byc2h0Lmg6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBGaXggYSB0eXBvIGluIFRCU0FWRVBBUkFNUyBBL1cgZGVjbGFyYXRpb24uCgktIFVzZSAxNiBiaXQgVW5pY29kZSBjb25zdGFudHMgZm9yIHdjIHN0cmluZ3MuCgktIE1ha2Ugc29tZSBzdHJpbmcgY29uc3RhbnRzIGF2YWlsYWJsZSBhcyBVbmljb2RlLgoKMjAwMS0wMS0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJRml4ZWQgdGhlIHNpemUgb2YgdGhlIGZpbGUgZGlhbG9nIGljb25zLgoKCSogd2luZG93cy9zcHkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIEFkZGVkIE5NQ0JFRU5ERURJVCBzdHJ1Y3R1cmUgZm9yIE5PVElGWSBkdW1wLgoJLSBBZGRlZCBkdW1wIG9mIHBvc2l0aW9uaW5nIHN0cnVjdHVyZSBmb3IgV01fV0lORE9XUE9TQ0hBTkd7RUR8SU5HfS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCBOTUNCRUVOREVESVR7V3xBfSBzdHJ1Y3R1cmVzIGFuZCBmbGFncy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUZpeCB0aGUgY21kbGluZSBhcmd1bWVudCBwYXNzZWQgdG8gTkVfQ3JlYXRlVGhyZWFkIHRvIGluY2x1ZGUgc3RyaW5nCglsZW5ndGguCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgbWlzc2luZyBwb2ludGVyIHR5cGUgZGVjbGFyYXRpb25zICh1c3VhbGx5IFB4eHgpLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUVzY2FwZSBhbnkgc3BhY2VzIGluIGxwc3pPYmplY3ROYW1lIHBhc3NlZCB0byBIdHRwT3BlblJlcXVlc3QuCgoyMDAxLTAxLTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogV2FybmluZyBmaXguCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCURpc3BsYXkgdGhlIGltcG9ydGluZyBkbGwgaW4gdGhlIDB4ZGVhZGJlZWYgbWVzc2FnZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfY3Vyc29ycy5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfaWNvbnMucmMsIGluY2x1ZGUvd2ludXNlci5oLCBwcm9ncmFtcy9jbG9jay9tYWluLmgsIHByb2dyYW1zL25vdGVwYWQvbGNjLmgsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy9wcm9nbWFuL2dyb3VwLmMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5oLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dyYW0uYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy93aW4uYywgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglGaXhlZCBhIG51bWJlciBvZiBpbmNvbXBhdGliaWxpdGllcyBpbiBPRU0gaWNvbnMvY3Vyc29ycyBoYW5kbGluZy4KCgkqIGRsbHMvdXNlci90ZXh0LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglQcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyBpbiBURVhUX05leHRMaW5lVy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L21zYWNtLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZjcnQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcmFzYXBpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2V0dXBhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hkb2N2dy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luZWRvcy5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93c29jazMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgktIE1pbm9yIGRvY3VtZW50YXRpb24gY2hlY2sgaW1wcm92ZW1lbnRzLgoKMjAwMS0wMS0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBvbGQgbGludXgvaW5wdXQuaC4KCgkqIGRvY3VtZW50YXRpb24vbWFrZV93aW5laHEsIGRvY3VtZW50YXRpb24vd2luZS1kZXZlbC5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmUtcGtnLnNnbWwsIGRvY3VtZW50YXRpb24vd2luZS11c2VyLnNnbWw6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBjb252ZW5pZW5jZSBzY3JpcHQgZm9yIGdlbmVyYXRpbmcgb25saW5lIGRvY3MgZm9yIHdpbmVocS5jb20uCgoJKiBjb250cm9scy91aXRvb2xzLmM6CglKb3NoIER1Qm9pcyA8ZHVib2lzakBjb2Rld2VhdmVycy5jb20+CglTcGVjaWZpZWQgJ3NpZ25lZCcgb24gY2hhcnMgY29tcGFyZWQgdG8gLTEuCgoJKiBkb2N1bWVudGF0aW9uL3BhY2thZ2luZy5zZ21sOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJTWFrZSBTR01MIElEIGF0dHJpYnV0ZXMgaW4gcGFja2FnaW5nLnNnbWwgbW9yZSB1bmlxdWUgdG8gYXZvaWQKCWNvbmZsaWN0cyB3aGVuIHdlIGJ1bmRsZSBhbGwgZm91ciBndWlkZXMgaW50byBhIHNpbmdsZSBzZXQuCgoJKiBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL3Njcm9sbC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVNvbHZlIHJlbWFpbmluZyBwcm9ibGVtcyB3aXRoIHNjcm9sbCBiYXJzIGluIHRoZSBlZGl0IGNvbnRyb2wuCgoyMDAxLTAxLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9kYjJodG1sLXdpbmVocToKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHVwIGRiMmh0bWwtd2luZWhxIEhUTUwgZ2VuZXJhdGlvbiBzY3JpcHQuICBXb3JrcyBpbiBEZWJpYW4sIGFuZAoJbWF5IGFjdHVhbGx5IHdvcmsgaW4gUmVkaGF0IG5vdywgdG9vLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBTSEVMTDMyLklzTmV0RHJpdmUgYW5kIFNIRUxMMzIuSUxTYXZlVG9TdHJlYW0gbmVlZGVkIGZvcgoJSUUgNS4KCgkqIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9mb250cy5zZ21sLCBkb2N1bWVudGF0aW9uL2luc3RhbGxhdGlvbi11bmQta29uZmlndXJhdGlvbi5nZXJtYW4sIGRvY3VtZW50YXRpb24vaW5zdGFsbGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL29wZW5nbC5zZ21sLCBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWw6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlZCBmb3IgY2hhbmdlIGluIGNvbmZpZyBmaWxlIG5hbWUuICBSZW1vdmVkIHJlZmVyZW5jZXMgdG8KCW9ic29sZXRlIGdsb2JhbCB3aW5lIGNvbmZpZ3VyYXRpb24gZmlsZSB3aGVyZSBhcHByb3ByaWF0ZS4gIFVwZGF0ZWQKCWNvbmZpZyBvcHRpb24gZm9ybWF0IHRvIG1hdGNoIHRoZSBuZXcgc3ludGF4LiAgTWlzYyBjbGVhbnVwcy4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9jdXJzb3JzLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9pY29ucy5yYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2FwcHN0YXJ0aW5nLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2J1bW1lciwgaW5jbHVkZS9iaXRtYXBzL29jcl9jcm9zcywgaW5jbHVkZS9iaXRtYXBzL29jcl9kcmFnb2JqZWN0LCBpbmNsdWRlL2JpdG1hcHMvb2NyX2hhbmQsIGluY2x1ZGUvYml0bWFwcy9vY3JfaGVscCwgaW5jbHVkZS9iaXRtYXBzL29jcl9pYmVhbSwgaW5jbHVkZS9iaXRtYXBzL29jcl9pY29uLCBpbmNsdWRlL2JpdG1hcHMvb2NyX25vLCBpbmNsdWRlL2JpdG1hcHMvb2NyX25vcm1hbCwgaW5jbHVkZS9iaXRtYXBzL29jcl9zaXplLCBpbmNsdWRlL2JpdG1hcHMvb2NyX3NpemVuZXN3LCBpbmNsdWRlL2JpdG1hcHMvb2NyX3NpemVucywgaW5jbHVkZS9iaXRtYXBzL29jcl9zaXplbndzZSwgaW5jbHVkZS9iaXRtYXBzL29jcl9zaXpld2UsIGluY2x1ZGUvYml0bWFwcy9vY3JfdXAsIGluY2x1ZGUvYml0bWFwcy9vY3Jfd2FpdCwgaW5jbHVkZS9iaXRtYXBzL29pY19iYW5nLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2JhbmdfOTUsIGluY2x1ZGUvYml0bWFwcy9vaWNfY2Ryb20sIGluY2x1ZGUvYml0bWFwcy9vaWNfZmxvcHB5LCBpbmNsdWRlL2JpdG1hcHMvb2ljX2ZvbGRlciwgaW5jbHVkZS9iaXRtYXBzL29pY19mb2xkZXIyLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2hhbmQsIGluY2x1ZGUvYml0bWFwcy9vaWNfaGFuZF85NSwgaW5jbHVkZS9iaXRtYXBzL29pY19oZGlzaywgaW5jbHVkZS9iaXRtYXBzL29pY19sYW5kc2NhcGUsIGluY2x1ZGUvYml0bWFwcy9vaWNfbmV0d29yaywgaW5jbHVkZS9iaXRtYXBzL29pY19ub3RlLCBpbmNsdWRlL2JpdG1hcHMvb2ljX25vdGVfOTUsIGluY2x1ZGUvYml0bWFwcy9vaWNfcG9ydHJhaXQsIGluY2x1ZGUvYml0bWFwcy9vaWNfcXVlcywgaW5jbHVkZS9iaXRtYXBzL29pY19xdWVzXzk1LCBpbmNsdWRlL2JpdG1hcHMvb2ljX3NhbXBsZSwgaW5jbHVkZS9iaXRtYXBzL29pY193aW5laWNvbiwgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJU3RvcmUgVVNFUiBpY29ucyBhbmQgY3Vyc29ycyBhcyByZXNvdXJjZXMgaW5zdGVhZCBvZiB4cG0gYml0bWFwcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IG9mZiBieSBvbmUgZXJyb3IgaW4gYnVmZmVyIGxlbmd0aCBjaGVjay4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVN3aXRjaGVkIGZyb20gd2luZS5jb25maWcgYmFjayB0byB3aW5lLmNvbmYsIG5vIG5lZWQgdG8gdXNlIHNvbWV0aGluZwoJbm90IGxpbnV4IHN0YW5kYXJkLiAgUmVtb3ZlZCB1c2Ugb2Ygb2Jzb2xldGUgIi0tY29uZmlnIiBvcHRpb24gd2hlbgoJY2FsbGluZyByZWdhcGkuICBMb3RzIG9mIGNsZWFudXAgYW5kIHJlb3JnYW5pemF0aW9uLiAgQ2hlY2sgdG8gc2VlIGlmCgl3aW5lIGlzIGluc3RhbGxlZCB3aGVuIHdpbmVpbnN0YWxsIGlzIG5vdCBydW4gYXMgcm9vdC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCAzIG1pc3NpbmcgRlNfeHh4IG1hY3Jvcy4KCjIwMDEtMDEtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NkbGczMi5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglSZXBsYWNlZCBzb21lIEdldFByb2NBZGRyZXNzKCkgaW1wb3J0cyBieSB0aGUgc3RhbmRhcmQgZGxsIGltcG9ydAoJbWVjaGFuaXNtLgoKCSogZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvaW1tMzIvbWFpbi5jLCBkbGxzL21zYWNtL21zYWNtMzJfbWFpbi5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuaCwgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbW1kbGcvZ2VuZXJpYy5jOgoJQ2xlYW5lZCB1cCBkbGwgc3RhcnR1cCByb3V0aW5lcyBub3cgdGhhdCB3ZSBoYXZlIHNlcGFyYXRlIGFkZHJlc3MKCXNwYWNlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy93aW5tbS9kcml2ZXIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ29zbWV0aWNzLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2Ugc29tZSBub2lzZSBpbiBhIGZldyBjYXNlcyB3aGVyZSB0aGUgWDExZHJ2IGRvZXNuJ3QgbG9hZCwgYnV0IHVzZWQKCXRvIGZhaWwgc2lsZW50bHkuCgoJKiBzY2hlZHVsZXIvc2VydmljZXMuYzoKCUpvc2ggRHVCb2lzIDxkdWJvaXNqQGNvZGV3ZWF2ZXJzLmNvbT4KCVNFUlZJQ0VfQ3JlYXRlU2VydmljZVRhYmxlIHN0aWxsIHJldHVybmVkIFRSVUUgaWYgQ3JlYXRlVGhyZWFkIGZhaWxlZC4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvTWFrZWZpbGUuaW4sIGxpYnJhcnkvZXJybm8uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUveDExZHJ2LmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQ2xlYW5lZCB1cCB0aGUgdmFyaW91cyBlcnJubyBsb2NhdGlvbiB0ZXN0cyBpbiBjb25maWd1cmUuCglBZGRlZCAoaF8pZXJybm9fbG9jYXRpb24gcG9pbnRlcnMgaW4gdGhlIGxpYnJhcnkgdGhhdCBhbGxvdyByZW1hcHBpbmcKCXRoZSBjYWxscyBpbiBoaWdoZXIgbGV2ZWwgZGxscy4KCU1vdmVkIFgxMURSVl9Dcml0U2VjdGlvbiBvdXQgb2Ygc3lzZGVwcy5jIGFuZCBpbnRvIHgxMWRydi5kbGwuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUluIFdzQ29udHJvbCwgZG9uJ3QgbWl4IExpbnV4IGFuZCBXaW5lIHNvY2tldCBjYWxscy4gQWx3YXlzIHVzZSBXaW5lIGNhbGxzLgoJQWRkZWQgaGFjayBmb3IgbWlzc2luZyBXSU5BUEkgaW4gVW5peCBzb2NrZXQoKSBkZWZpbml0aW9uLgoKCSogZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NldHVwYXBpL3N0dWJzLmMsIGluY2x1ZGUvc2V0dXBhcGkuaDoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJQWRkZWQgc29tZSBzdHVicyBuZWVkZWQgZm9yIElFIDUuNSBzZXR1cC4KCgkqIHRvb2xzL3dpbmVzaGVsbGxpbms6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglSZXZpc2VkIHdpbmVzaGVsbGxpbmsgdG8gd2FrZSB1cCBLREUgMS54IHNvIHRoYXQgYXBwbGljYXRpb25zIHRoYXQgZ2V0CglpbnN0YWxsZWQgc2hvdyB1cCB3aXRob3V0IGEgbWFudWFsIEtERSBtZW51IHJlZnJlc2ggcmVxdWlyZWQuCglBZGRlZCBhIGZldyB1c2FnZSBjaGVja3MgdG8gbWFrZSBtYW51YWwgaW52b2NhdGlvbiBhIGxpdHRsZSBsZXNzCglwYWluZnVsLgoKCSogdG9vbHMvYmluMnJlcy5jOiBGaXhlZCB0bXBmaWxlIGJ1ZmZlciBzaXplLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglGaXhlZCB0eXBvIGluIHdpbmVfZ2V0X3VuaXhfZmlsZV9uYW1lKCkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglSZXZpc2VkIHNoZWxsIGxpbmsgcHJvY2VzcyB0byB0cmVhdCBlbXB0eSAoZS5nLiAiIikgc3RyaW5ncwoJaWRlbnRpY2FsbHkgdG8gTlVMTCBzdHJpbmdzLiBNYWtlcyBtYW55IG1vcmUgaW5zdGFsbGVycyB0YWtlIHVzZWZ1bAoJYWN0aW9uLiBBZGRlZCBtYW55IHRyYWNlIG1lc3NhZ2VzLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1Y3pla2FsbGFAY29kZXdlYXZlcnMuY29tPgoJT25seSBhZGp1c3QgaXRlbSByZWN0IGJ5IGhvcml6b250YWwgc2Nyb2xsYmFyIG9mZnNldCBpbiByZXBvcnQgdmlldy4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUNoYW5nZSBXU0FDbGVhbnVwIC0gd3NpbmZvIGlzIGEgc3RhdGljIHN0cnVjdHVyZSBub3cuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHdpbmVsYXVuY2hlciB0ZXN0IGZvciB4bWVzc2FnZSBhbmQgd2FybiB0aGUgdXNlciBpZiB0aGV5IGRvbid0CgloYXZlIGl0LgoKMjAwMS0wMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBpbmNsdWRlL3dpbmVfZ2wuaCwgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglSZXBsYWNlZCBYMTFEUlZfQ3JpdFNlY3Rpb24gcmVmZXJlbmNlcyBieSB3aW5lX3RzeDExXyh1bilsb2NrLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3gxMWRydi5oLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jOgoJUmVtb3ZlZCBDQUxMX0xBUkdFX1NUQUNLIHN1cHBvcnQuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjYWxsIGEgTkUgRExMJ3MgRGxsRW50cnlQb2ludCB0d2ljZSBkdXJpbmcgb25lIHNpbmdsZQoJTG9hZE1vZHVsZSgpIGNhbGwuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFwVmlld09mRmlsZUV4OiBtYWtlIHRoZSByZXR1cm5lZCBlcnJvciBkZXBlbmRlbnQgb24gdGhlIFdpbmRvd3MKCXZlcnNpb24gdXNlZC4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCVVwZGF0ZWQgZGVidWcgY2hhbm5lbHMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgd2luZG93cy93aW5wcm9jLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYzoKCVJlbW92ZWQgdW5uZWNlc3NhcnkgaGVhZGVycy4KCgkqIHdpbmRvd3MvbWRpLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBNRU5VSVRFTUlORk8gc3RydWN0dXJlIGJlZm9yZSBjYWxsaW5nIEdldE1lbnVJdGVtSW5mby4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvdGh1bmtzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGFuIGludGVyZmFjZSBjYXN0IGluIEREMi0+REQ3IHRodW5rLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBvbmUgbWlzc2luZyBidWZmZXIgc2l6ZSByb3VuZGluZyBpbiB0aGUgZWRpdCBjb250cm9sLgoJTWFrZSByb3VuZGluZyBjb2RlIHNsaWdodGx5IG1vcmUgcmVhZGFibGUuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBpZjE2MzIvYnVpbHRpbi5jOgoJUmVwbGFjZWQgR0xPQkFMX0FsbG9jIGJ5IEdsb2JhbEFsbG9jMTYgd2hlcmUgcG9zc2libGUuCgoJKiBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3R3ZWFrLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9zeXNjb2xvci5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgd2luZG93cy9zeXNwYXJhbXMuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy9zdGF0aWMuYywgY29udHJvbHMvdWl0b29scy5jLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL3VzZXIvY2FjaGUuYywgZGxscy91c2VyL3RleHQuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2NhY2hlLmgsIGluY2x1ZGUvdHdlYWsuaCwgaW5jbHVkZS91c2VyLmg6CglNb3ZlZCB0d2VhayBzdXBwb3J0IHRvIFVTRVIgZGxsLiBSZW1vdmVkIHR3ZWFrLmggYW5kIGNhY2hlLmguCgoJKiBtZW1vcnkvbG9jYWwuYywgbXNkb3MvaW50MjAuYywgbXNkb3MvaW50MmYuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luMzIvaW5pdC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2V4cHIuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZmlsZS5jLCBpZjE2MzIvcmVsYXkuYzoKCVJlbW92ZWQgc29tZSBkaXJlY3QgYWNjZXNzZXMgdG8gdGhlIDE2LWJpdCB0YXNrIHN0cnVjdHVyZS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL21zdmNydC9jdHlwZS5jLCBkbGxzL21zdmNydC9tc3ZjcnQuc3BlYzoKCUZpeGVkIHRvdXBwZXIvX3RvdXBwZXIgbWl4dXAuCgoyMDAxLTAxLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDEwMTEyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAxLTAxLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jOgoJQWRkZWQgbWlzc2luZyBXSU5fUmVsZWFzZVduZFB0ci4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbW1zeXN0ZW0uc3BlYzoKCXdpbm1tLmRsbCBjYW4gbm93IGJlIHByb3Blcmx5IHNlcGFyYXRlZC4KCgkqIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJV2FybmluZyBmaXguCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlcyBmb3IgdmFyaW91cyB1bmRlcnJ1bi1yZWxhdGVkIHByb2JsZW1zLiBBbHNvIGFkZGVkIGEgbWVjaGFuaXNtCglmb3IgdGhlIHNvdW5kIGRyaXZlciB0byByZXF1ZXN0IHRoYXQgYSBTdG9wIHNob3VsZCBjbG9zZSBhbmQgcmVvcGVuCgl0aGUgZGV2aWNlLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3RpbWUuYywgZGxscy93aW5tbS93aW5lbW0uaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJUmVtb3ZlIG11bHRpbWVkaWEgdGltZXJzIGZyb20gdGhlIHNlcnZpY2UgdGhyZWFkLCB1c2UgYSBzZXBhcmF0ZSB0aHJlYWQKCWluc3RlYWQuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUluIFNUQVRVU0JBUl9HZXRUaXBUZXh0e2EsVywgYWx3YXlzIHB1dCBhIHRlcm1pbmF0aW5nICdcMCcgaW4gdGhlCglidWZmZXIuCglQYXNzIGEgYnVmZmVyIG9mIHN1ZmZpY2llbnQgc2l6ZSB0byBUVE1fR0VUVEVYVEEuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhMl9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3duZHByb2MuYywgZGxscy9kZHJhdy9tYWluLmM6CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJV2FybmluZyBmaXhlcy4KCgkqIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbnNwYXBpLmgsIGluY2x1ZGUvd3NoaXNvdHAuaCwgaW5jbHVkZS93c2lweC5oLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi9wcm90b2NvbC5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglJbXBsZW1lbnRlZCBFbnVtUHJvdG9jb2xBL1cuCgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGxpYnJhcnkvcG9ydC5jLCBjb25maWd1cmU6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCU5ldEJTRCAxLjUgaXMgbGFja2luZyBlY3Z0LCBmY3Z0LCBnY3Z0IGZvciBjcnRkbGwuCgoJKiBzZXJ2ZXIvZmlsZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglXb3JrYXJvdW5kIGZvciBTdVNFIDcgMi4yLjE2IGtlcm5lbCBidWcuCgoJKiBjb250cm9scy9lZGl0LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglHdWFyZCBhZ2FpbnN0IGluY29taW5nIHN0cmluZyBvZiBOVUxMIGluIFdNX1NFVFRFWFQuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvY29uc29sZS5jLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2Rpci5jLCBkbGxzL2NydGRsbC9leGl0LmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvbG9jYWxlLmMsIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIGRsbHMvY3J0ZGxsL21lbW9yeS5jLCBkbGxzL2NydGRsbC9zcGF3bi5jLCBkbGxzL2NydGRsbC9zdHJpbmcuYywgZGxscy9jcnRkbGwvdGltZS5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCVR1cm4gY3J0ZGxsIGludG8gZm9yd2FyZHMgdG8gbXN2Y3J0LgoKCSogZGxscy9tc3ZjcnQvZXhjZXB0LmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgc29tZSBleGNlcHRpb24gaGFuZGxpbmcgZnVuY3Rpb25zLgoKCSogZGxscy9tc3ZjcnQvbWF0aC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBtaXN0eXBlZCB2YXJpYWJsZSBuYW1lIGluIE1TVkNSVF9fZnBjbGFzcygpLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUFkZGVkIGZsYWcgdG8gZGlmZmVyZW50aWF0ZSBmaWxlIG1hcHBpbmdzIGFuZCBWaXJ0dWFsQWxsb2MoKSBibG9ja3MsCglhbmQgcmVqZWN0IFZpcnR1YWxGcmVlKCkgY2FsbHMgb24gZmlsZSBtYXBwaW5ncy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYzoKCVJlbW92ZWQgb2Jzb2xldGUgZ2V0X3JlcV9idWZmZXIoKSBmdW5jdGlvbi4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJU3dhcCBscE92ZXJsYXBwZWQgcGFyYW1ldGVycyBpbiBSZWFkRmlsZSBhbmQgV3JpdGVGaWxlLgoJVGhlIEludGVybmFsSGlnaCBtZW1iZXIgc2hvdWxkIGNvbnRhaW4gdGhlIG51bWJlciBvZgoJYnl0ZXMgdHJhbnNmZXJyZWQuCgoJKiBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbWF0aC5jLCBkbGxzL21zdmNydC9tYmNzLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJRml4ZXMgYXMgYSByZXN1bHQgb2YgdGVzdGluZyBidWlsdGluIGNydGRsbCBhZ2FpbnN0IGJ1aWx0aW4gbXN2Y3J0LgoKCSogZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2RyaXZlLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlZCBtZXNzYWdlcyB3aXRoIG5ldyBjb25maWcgZmlsZXMgaW4gbWluZCB0byBrZWVwIGZyb20gY29uZnVzaW5nCgl1c2Vycy4KCgkqIGRsbHMvY29tY3RsMzIvcGFnZXIuYzoKCVN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgbW9zdCBmdW5jdGlvbmFsaXR5LiAgVE9ETyBsaXN0cyB3aGF0cyBsZWZ0LgoKMjAwMS0wMS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NoZG9jdncvLmN2c2lnbm9yZSwgZGxscy9zaGRvY3Z3L01ha2VmaWxlLmluLCBkbGxzL3NoZG9jdncvY2xhc3NpbmZvLmMsIGRsbHMvc2hkb2N2dy9ldmVudHMuYywgZGxscy9zaGRvY3Z3L2ZhY3RvcnkuYywgZGxscy9zaGRvY3Z3L21pc2MuYywgZGxscy9zaGRvY3Z3L29sZW9iamVjdC5jLCBkbGxzL3NoZG9jdncvcGVyc2lzdC5jLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5oLCBkbGxzL3NoZG9jdncvc2hkb2N2dy5zcGVjLCBkbGxzL3NoZG9jdncvc2hkb2N2d19tYWluLmMsIGRsbHMvc2hkb2N2dy93ZWJicm93c2VyLmMsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2luZS9vYmpfd2ViYnJvd3Nlci5oLCB3aW5lZGVmYXVsdC5yZWc6CglKb2huIFIuIFNoZWV0cyA8ZHVza0ByYXZlbmR1c2sub3JnPgoJSW1wbGVtZW50ZWQgc3R1YnMgZm9yIElXZWJCcm93c2VyIGluIHNoZG9jdncuZGxsLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYzoKCU5hdGhhbiBOZXVsaW5nZXIgPG5uZXVsQHVtci5lZHU+CglSZW5hbWVkIHN0cnVjdCBvcHRpb24gdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggZ2V0b3B0LmguCgoJKiBkbGxzL21zdmNydC9leGNlcHQuYywgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJQWRkZWQgYmluYXJ5IGNvbXBhdGlibGUgX19FSF9wcm9sb2cuCgoJKiBzZXJ2ZXIvbWFpbi5jOgoJSm9zaCBEdUJvaXMgPGR1Ym9pc2pAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYSBzaW1wbGUgdXNhZ2UoKSBmdW5jdGlvbi4KCgkqIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jOgoJTm8gbG9uZ2VyIHVzZWQuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NhY2hlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaDoKCUpvaG4gUi4gU2hlZXRzIDxkdXNrQHJhdmVuZHVzay5vcmc+CglDb3JyZWN0IHNvbWUgY3V0ICYgcGFzdGUgdHlwb3MuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgZm9yIHRoZSBuZXcgY29uZmlnIGZvcm1hdCBhbmQgbG9jYXRpb24gb2YgdGhlIGRlZmF1bHQgY29uZmlnCglmaWxlLiAgQWRkIGEgY29uZl9xdWVzaW9uIHRvIGNvbnZlcnQgYW4gb2xkIHVzZXIgY29uZmlnIGZpbGUsIG9yIHVzZQoJdGhlIGRlZmF1bHQgV2luZSBjb25maWcgZmlsZS4gIFJlbW92ZWQgdGhlIHNldHRpbmcgb2Ygb2Jzb2xldGUKCUVYVFJBX0xEX0xJQlJBUllfUEFUSC4gIEFkZGVkIGEgY29uZl9xdWVzdGlvbiB0byBnaXZlIHRoZSB1c2VyIHRoZQoJb3B0aW9uIHRvIGluc3RhbGwgbG9jYWwgY29uZmlnIGFuZCByZWdpc3RyeSBmaWxlcyB3aGVuIHRoZSBzY3JpcHQgaXMKCWJlaW5nIHJ1biBieSByb290LgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSB0aGUgbWFpbl90YXJnZXQgaW4gc2luZ2xlLXRhcmdldCBtb2RlLgoJVGhlIGRlZmluZWQoQGFycmF5KSBjb25zdHJ1Y3QgaXMgc2FpZCB0byBiZSBkZXByZWNhdGVkLCBhdm9pZCBpdC4KCVNpbXBsaWZ5IHRoZSB1c2FnZSByZXBvcnRpbmcuCglBZGQgYSB3b3JkIG9mIGNhdXRpb24gdG8gdGhlIHVzYWdlIG1lc3NhZ2UuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSByZXR1cm4gdmFsdWUgb2YgV01fR0VUVEVYVCBpbiB0aGUgZWRpdCBjb250cm9sLgoKCSogY29udHJvbHMvY29tYm8uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglWYXJpb3VzIGNvbWJvYm94IGZpeGVzLgoKCSogZmlsZXMvTWFrZWZpbGUuaW46CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGRlZmluZXMgYWZ0ZXIgcHJvZmlsZS5jIGNsZWFudXAuCgoJKiBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHVubmFtZWQgdW5pb24gZHVtbXkgbmFtZXMuCgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaCwgaW5jbHVkZS93aW5udC5oLCBjb25maWd1cmU6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlcGxhY2VkIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgY29uZmlndXJlIGNoZWNrcyBieSBoYXJkY29kZWQKCWRlZmluaXRpb25zIGluIHdpbm50LmggKHRvIGF2b2lkIGNvbmZpZy5oIGRlcGVuZGVuY3kpLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbWlzc2luZyBwcm90b3R5cGVzIHRvIGF2b2lkIGNvbXBpbGUgd2FybmluZ3Mgb24gU29sYXJpcy4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXb3JrIGFyb3VuZCBwcm9ibGVtcyBvbiBTb2xhcmlzIGlmIGNvbmZpZy5oIGlzIG5vdCBpbmNsdWRlZC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBieXRlb3JkZXIgcHJvYmxlbXMgY2F1c2VkIGJ5IG5vbi1wb3J0YWJsZSBjb2RlLgoKMjAwMS0wMS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXN2Y3J0L2NwcC5jLCBkbGxzL21zdmNydC9jdHlwZS5jLCBkbGxzL21zdmNydC9kYXRhLmMsIGRsbHMvbXN2Y3J0L2Rpci5jLCBkbGxzL21zdmNydC9lbnZpcm9uLmMsIGRsbHMvbXN2Y3J0L2Vycm5vLmMsIGRsbHMvbXN2Y3J0L2V4Y2VwdC5jLCBkbGxzL21zdmNydC9leGl0LmMsIGRsbHMvbXN2Y3J0L2ZpbGUuYywgZGxscy9tc3ZjcnQvaGVhcC5jLCBkbGxzL21zdmNydC9sb2NhbGUuYywgZGxscy9tc3ZjcnQvbWFpbi5jLCBkbGxzL21zdmNydC9tYXRoLmMsIGRsbHMvbXN2Y3J0L21iY3MuYywgZGxscy9tc3ZjcnQvbWlzYy5jLCBkbGxzL21zdmNydC9tc19lcnJuby5oLCBkbGxzL21zdmNydC9tc3ZjcnQuaCwgZGxscy9tc3ZjcnQvbXN2Y3J0LnNwZWMsIGRsbHMvbXN2Y3J0L3Byb2Nlc3MuYywgZGxscy9tc3ZjcnQvc3RyaW5nLmMsIGRsbHMvbXN2Y3J0L3RocmVhZC5jLCBkbGxzL21zdmNydC90aW1lLmMsIGRsbHMvbXN2Y3J0L3djcy5jLCBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnLCBsb2FkZXIvbG9hZG9yZGVyLmMsIERFVkVMT1BFUlMtSElOVFMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21zdmNydC8uY3ZzaWdub3JlLCBkbGxzL21zdmNydC9NYWtlZmlsZS5pbiwgZGxscy9tc3ZjcnQvY29uc29sZS5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gTWlncmF0ZSBDUlRETEwgdG8gTVNWQ1JULgoJLSBNYW55IGZpeGVzIGFuZCBhIGxvYWQgb2YgbmV3IGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL29wdGlvbnMuYzoKCVJlbW92ZWQgYWxsIHRyYWNlcyBvZiB0aGUgLS1jb25maWcgb3B0aW9uLgoKCSogZGxscy9kZHJhdy9kZHJhdy94dmlkbW9kZS5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2QHRyYW5zZ2FtaW5nLmNvbT4KCVJlZW5hYmxlZCBEWEdyYWIgb3B0aW9uLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCVN5bmNocm9uaXplIHRoZSBzaXplcyBvZiB0aGUgZXh0ZXJuYWwgYW5kIGludGVybmFsIGJ1ZmZlcnMgYXQgc3RhcnQKCWFuZCBlbmQgb2YgbWVzc2FnZSBwcm9jZXNzaW5nIGluIHRoZSBlZGl0IGNvbnRyb2wuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglGaXhlZCByZXR1cm5lZCBsZW5ndGggZm9yIExCX0dFVFRFWFQuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbjoKCUFkZGVkIG5scyB0byBFWFRSQVNVQkRJUlMuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB1c2Ugb2Ygb3V0ZGF0ZWQgV0lORV9JTkkgZW52aXJvbm1lbnQgdmFyaWFibGUuICBSZW1vdmVkCglvYnNvbGV0ZSAtLWNvbmZpZyBvcHRpb24uICBSZW1vdmVkIGxvYWRpbmcgb2YgZ2xvYmFsIHdpbmUgY29uZmlnIGZpbGUuCglDbGVhbmVkIHVwIHNvbWUgbWVzc2FnZXMuCgoJKiBjb250cm9scy9lZGl0LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+Cgllcy0+YnVmZmVyX3NpemUgaXMgbm90IGFsd2F5cyB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGN1cnJlbnRseSBpbiB0aGUKCWVkaXRib3gsIHNvIHVzZSAtMSBpbnN0ZWFkLgoKCSogbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUFkZGVkIGEgc3BlY2lmaWMgZGVidWcgY2hhbm5lbCBmb3IgZGxsIGxvYWRpbmcgKGJ1aWx0aW4vbmF0aXZlKS4KCgkqIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy90ZXh0LmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUZpeGVkIHNvbWUgc2lnbmVkL3Vuc2lnbmVkIHdhcm5pbmdzLgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBhc3luY2hyb25vdXMgUmVhZEZpbGUgYW5kIFdyaXRlRmlsZS4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZXF1aXJlIHRoYXQgdGhlIHVzZXIgc3BlY2lmeSBhIHdvcmsgZGlyZWN0b3J5LiBUaGlzIHByb3ZpZGVzIGEKCXNhZmVndWFyZCBhZ2FpbnN0IGFjY2lkZW50YWwgaW52b2NhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgY29weSB0aGUgZHdTaXplIGJ5dGVzIHJlYWxseSBvY2N1cGllZCBieSBscFByb3BTaGVldFBhZ2UuCgoJKiBpbmNsdWRlL3dpbmRvd3N4Lmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZvciB0aGUgR2xvYmFsKlB0ciogc2V0IG9mIG1hY3JvcywgcmVwbGFjZSB0aGUgMTZiaXQgdmVyc2lvbiB3aXRoCgl0aGVpciAzMiBiaXQgZXF1aXYuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCU9ubHkgY2FsbCBUT09MQkFSX0NhbGNUb29sYmFyIHdoZW4gcGFyYW1ldGVycyBjaGFuZ2UuCgoyMDAxLTAxLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL3VzZXIvY29udHJvbHMuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB1bmljb2RlIHdpbmRvdyBwcm9jIGZvciB0aGUgbGlzdGJveCBjb250cm9sLgoJUmVwbGFjZWQgYWxsIGFuc2kgY2FsbHMgYnkgdGhlaXIgdW5pY29kZSBlcXVpdmFsZW50cy4KCVJlbW92ZWQgdXNlIG9mIHRoZSBjdXN0b20gbG9jYWwgaGVhcC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUZXN0IGZvciBOVUxMIGFuZCBMUFNUUl9URVhUQ0FMTEJBQ0sgYmVmb3JlIHVzaW5nIGxwQ29sdW1uLT5wc3pUZXh0LgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIHNvbWUgaW5jb3JyZWN0IGZvcm1hdCBzdHJpbmdzLgoKCSogZGVidWdnZXIvZGJnbWFpbi5jOiBSZW1vdmVkIG9ic29sZXRlIGZpbGUuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy91c2VyLmMsIGRsbHMvdXNlci9taXNjLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBIRFdQIHRvIHdpbnVzZXIuaC4KCUNvbnZlcnQgSFdJTlNUQSB0byBTVFJJQ1QuCgoJKiBmaWxlcy9kcml2ZS5jLCBtaXNjL2Nkcm9tLmM6CglSeWFuIEN1bW1pbmcgPGJvZG5hcjQyQGJvZG5hcjQyLmRocy5vcmc+CglNYWtlIENEUk9NX0dldExhYmVsIHJldHVybiAwIGluIHRoZSBldmVudCBvZiBmYWlsdXJlLCBhbmQgbWFrZSB0aGUKCWRlZmF1bHQgbGFiZWwgZm9yIGRyaXZlcyBhIHN0cmluZyBvZiAxMSBzcGFjZXMuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCUZpeGVkIHVzYWdlIG9mIFJlZ0VudW1WYWx1ZUEuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUhhbmRsZSB0aGUgRW51bVByaW50ZXJzKCkgZmxhZyBQUklOVEVSX0VOVU1fREVGQVVMVCBpbiB0aGUgc2FtZSB3YXkKCXRoYXQgTlQgZG9lcyAtIHRoYXQgaXMgaWdub3JlIGl0IGFuZCByZXR1cm4gVFJVRS4KCgkqIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJQWN0dWFsbHkgY2FsbCBDRFJPTV9BdWRpb19HZXRUcmFja3NJbmZvIHdoZW4gcmV0cmlldmluZwoJTUNJX0NEQV9TVEFUVVNfVFJBQ0tfVFlQRS4KCVdJTkVfQ0RBX09QRU4gbWFwcyB0byBNQ0lFUlJfSEFSRFdBUkUuCgoJKiBzY2hlZHVsZXIvc2VydmljZXMuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTRVJWSUNFX0FkZE9iamVjdCBjaGVjayBmb3IgTlVMTCBoYW5kbGVzIGluIGFkZGl0aW9uIHRvCglJTlZBTElEX0hBTkRMRV9WQUxVRS4KCgkqIGZpbGVzL2ZpbGUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgbGFzdCBwYXJhbWV0ZXIgb2YgQ3JlYXRlRmlsZSBzaG91bGQgYmUgMCAoYWthIE5VTEwpLCBub3QgLTEuCglDcmVhdGVGaWxlIHJldHVybnMgSU5WQUxJRF9IQU5ETEVfVkFMVUUgd2hlbiBpdCBmYWlscywgbm90CglIRklMRV9FUlJPUi4KCUFkZGVkIGNvbW1lbnRzLgoKCSogd2luMzIvY29uc29sZS5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCXB0eV9oYW5kbGUgaXMgYSBIQU5ETEUsIG5vdCBhbiBpbnQuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJKGNvbmZpZ3VyZSkgTG9vayBmb3IgdGhlIGhlYWRlcnMgaW4gJFdJTkVfUk9PVC9pbmNsdWRlL3dpbmUgYW5kCgkvb3B0L3dpbmUvaW5jbHVkZS93aW5lLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJU2VuZCB0aGUgY3JlYXRpb24gbm90aWZpY2F0aW9uIHRvIHRoZSB0cnVlIG93bmVyIG9mIHRoZSB0b29sdGlwLgoKCSogY29udHJvbHMvY29tYm8uYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCUVuc3VyZSB0aGVyZSBpcyBhbiBlZGl0IGNvbnRyb2wgd2hlbiB3ZSByZXNldCBjb250ZW50cy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkanVzdCBpdGVtIHJlY3RzIGJ5IGhvcml6b250YWwgc2Nyb2xsYmFyIG9mZnNldC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglGaXhlZCBUQ01fR2V0Um93Q291bnQuCgoyMDAxLTAxLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWM6CglOZWVkIHRvIGltcG9ydCB1c2VyMzIgZXZlbiB0aG91Z2ggd2UgZG9uJ3QgdXNlIHN5bWJvbHMgZnJvbSBpdCB5ZXQuCgoJKiB0b29scy9zcGVjbWFrZXIvTWFrZWZpbGUuaW46CglMZW9uYXJkIE5vcnJn5XJkIDx2aW5zY2lAbmljLmZ1bmV0LmZpPgoJUmVmZXJlbmNlICQoU1JDRElSKSB3aGVuIGluc3RhbGxpbmcgdGhlIHBlcmwgc2NyaXB0IChpdCBkb2Vzbid0IGV4aXN0CglpbiB0aGUgYnVpbGQgZGlyZWN0b3J5KS4KCgkqIGRsbHMvY29tbWRsZy9maW5kZGxnMzIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUNoYW5nZWQgc3RyaW5nIHBvaW50ZXIgY2FsY3VsYXRpb24uCgoJKiBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9zaGx3YXBpL3JlZy5jLCBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgYWxsIHRoZSBkb2N1bWVudGVkIHNobHdhcGkgZnVuY3Rpb25zIG91dCBvZiB1bmRvY3NoZWxsLmggaW50bwoJc2hsd2FwaS5oLiAgTm90aGluZyBidXQgZmlsZXMgaW4gZGxscy9zaGVsbDMyIHdpbGwgbm93IGluY2x1ZGUKCXVuZG9jc2hlbGwuaC4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIG9uZSAmLCBub3cgQ29DcmVhdGVJbnN0YW5jZSgpIG9mIGRkcmF3IG9iamVjdHMgd29ya3MgYWdhaW4uCgoJKiBzZXJ2ZXIvYXN5bmMuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQ2FsY3VsYXRlIHRoZSB0aW1lb3V0IHRpbWUgb25jZSB3aGVuIHRoZSBhc3luYyBpcyBjcmVhdGVkLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUltcGxlbWVudGVkIEhhc092ZXJsYXBwZWRDb21wbGV0ZWQgbWFjcm8uCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgbWlzc2luZyBtYXBwaW5nIGZvciBMQl9GSU5EU1RSSU5HRVhBQ1QgbWVzc2FnZSAodGhhbmtzIHRvIEdlcmFyZAoJUGF0ZWwgZm9yIHJlcG9ydGluZyB0aGUgYnVnKS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQ29tYm9ib3ggc2hvdWxkIGNsZWFyIGl0cyBjdXJyZW50IHNlbGVjdGlvbiBvbiByZXNwb25zZSB0bwoJQ0JfU0VUQ1VSU0VMKC0xKSBtZXNzYWdlLgoKMjAwMS0wMS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVXNlIHRoZSBleGUgbmFtZSBhbmQgZmlsZSBoYW5kbGUgd2UgZ290IGZyb20gdGhlIHNlcnZlciBhbHNvIHdoZW4KCXN0YXJ0aW5nIFdpbjE2IG9yIERPUyBwcm9ncmFtcywgdG8gYXZvaWQgZGVwZW5kaW5nIG9uIHRoZSBjb250ZW50cyBvZgoJdGhlIGNvbW1hbmQtbGluZS4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2FzeW5jLmMsIHNlcnZlci9kZWJ1Z2dlci5jOgoJQWRkZWQgc2VwYXJhdGUgcXVldWUgZm9yICJzeXN0ZW0iIEFQQ3MgdGhhdCBnZXQgY2FsbGVkIGV2ZW4gd2hlbiB0aGUKCXRocmVhZCBpcyBub3QgaW4gYW4gYWxlcnRhYmxlIHN0YXRlLgoJU3BlY2lmeSB0aGUgc2VsZWN0X3JlcXVlc3QgdGltZW91dCBhcyBhYnNvbHV0ZSB2YWx1ZSBzbyB0aGF0IHdlIGNhbgoJcmVzdGFydCB0aGUgcmVxdWVzdCB3aGVuIGludGVycnVwdGVkLgoKCSogd2luZS5pbmk6IFJlbW92ZWQgb2xkIGZvcm1hdCBjb25maWcgZmlsZS4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb2RpZnkgdGhlIGxvb2sgb2YgYml0bWFwIG1lbnUgaXRlbXMgdG8gbWF0Y2ggV2luOTUgYW5kIFdpbjk4CglGaXggdGhlIHN1bmtlbiBlZGdlL2JpdG1hcCBvdmVybGFwIGluIHRoZSBXaW45OCBsb29rCglJbnRyb2R1Y2UgYW4gSVNfTUFHSUNfSVRFTSBtYWNybyB0byB0ZXN0IGlmIHRoZSBpdGVtIGlzICdtYWdpYycKCgkqIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBtc2Rvcy9pbnQyMS5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIEhGSUxFIHZzLiBIQU5ETEUgbWlzbWF0Y2hlcy4KCUlmIG5vdCB1c2VkIHRoZSBsYXN0IHBhcmFtZXRlciBvZiBDcmVhdGVGaWxlIG11c3QgYmUgMCwgbm90IC0xLgoKCSogZGxscy9tc2FjbS9tc2FjbS5zcGVjLCBkbGxzL21zYWNtL21zYWNtX21haW4uYywgZG9jdW1lbnRhdGlvbi9zYW1wbGVzL2NvbmZpZywgbG9hZGVyL2xvYWRvcmRlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGb3JjZWQgbG9hZGluZyBvZiBtc2FjbTMyIHdoZW4gbXNhY20gaXMgbG9hZGVkLgoJQWRkZWQgbXNhY20gRExMIHBhaXIgaW4gY29uZmlnIGZpbGVzLgoJQWRkZWQgc29tZSBkdW1iIGNhbGxzIGZyb20gMTYgdG8gMzIuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudCBJbnRlcm5ldENhbm9uaWNhbGl6ZVVybC4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglKb2hhbiBHaWxsIDxqb2hhbmVAbHlzYXRvci5saXUuc2U+CglBZGRlZCBhIG1vcmUgdHJ1dGhmdWwgbWVzc2FnZSBhYm91dCB3aGF0IHJlYWxseSBpcyB3cm9uZy4KCgkqIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEb24ndCBjYWxsIFF1ZXJ5QWJvcnQxNigpIGluIFdyaXRlU3Bvb2wxNigpLCBzaW5jZSBpdCBtaWdodCBiZSBjYWxsZWQKCXdpdGggbG9ja3MgaGVsZCAoYW5kIHdlIGRvIG5vdCBuZWVkIHRvIGNhbGwgaXQgaGVyZSkuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVRvb2sgYSBzdGFiIGF0IGltcGxlbWVudGluZyBMQlNfTk9TRUwuCgoyMDAxLTAxLTA1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmM6CglTZW5kIHRoZSBleGUgZmlsZSBoYW5kbGUgaW4gaW5pdF9wcm9jZXNzX2RvbmUgcmVxdWVzdC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUF2b2lkIGNyYXNoaW5nIG9uIGludmFsaWQgbGluZXMgZHVyaW5nIGNvbmZpZyBmaWxlIGNvbnZlcnNpb24uCgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS91cmwuYywgaW5jbHVkZS9zaGx3YXBpLmg6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBhIGZldyBVcmwqIGZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgdW5pY29kZSB3aW5kb3cgcHJvYyBmb3IgY29tYm9ib3ggY29udHJvbC4KCVJlcGxhY2VkIGFuc2kgY2FsbHMgYnkgdGhlaXIgdW5pY29kZSBlcXVpdmFsZW50cy4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHVuaWNvZGUgd2luZG93IHByb2MgZm9yIHRoZSBzdGF0aWMgY29udHJvbC4KCVJlcGxhY2VkIGFuc2kgY2FsbHMgYnkgdGhlaXIgdW5pY29kZSBlcXVpdmFsZW50cy4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJUmV0dXJuaW5nIHN1Y2Nlc3MgZm9yIHVua25vd24gV1NDTlRMX1RDUElQX1FVRVJZX0lORk8gY29kZSBtYWtlcyB3aW45OAoJd2luaXBjZmcgd29yay4KCgkqIGRsbHMvZGlucHV0L21vdXNlL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTW91c2UgZXZlbnRzIGZpeC4KCgkqIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbmRvd3MvcXVldWUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNjaGVkdWxlci90aW1lci5jLCBzZXJ2ZXIvYXN5bmMuYywgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9xdWV1ZS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCBkbGxzL2tlcm5lbC9zeW5jLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3NlcnZlci5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglBZGRlZCBoYW5kbGVfdCB0eXBlIHRvIHNlcnZlciBpbnRlcmZhY2Ugc28gdGhhdCB3ZSBjYW4gbWFrZSBoYW5kbGVzCglwb2ludGVycyBsYXRlciBvbi4KCUFsd2F5cyB1c2UgMCB0byBzaWduYWwgaW52YWxpZCBoYW5kbGUgaW4gc2VydmVyIHJlcXVlc3RzLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSSB0cmlwbGUgY2hlY2tlZCBidXQgeWVzLCBDSE9PU0VDT0xPUi5oSW5zdGFuY2UgaXMgYW4gSFdORC4uLgoKCSogZGxscy93aW5tbS9kcml2ZXIuYywgbXNkb3MvdmdhLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2UgbXVzdCBjYXN0IHRoZSByZXR1cm4gdmFsdWUgb2YgR2V0UHJvY0FkZHJlc3MuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL2RpYWxvZy5jLCBwcm9ncmFtcy9wcm9nbWFuL2dyb3VwLmMsIHByb2dyYW1zL3Byb2dtYW4vbWFpbi5jLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dyYW0uYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglUaGUgV25kUHJvYyBmdW5jdGlvbiB3YXMgbWlzc2luZyB0aGUgQ0FMTEJBQ0sgbW9kaWZpZXIuCgoJKiBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIGZpcnN0IDIgcGFyYW1ldGVycyBvZiBXaW5NYWluIGFyZSBISU5TVEFOQ0VzLCBub3QgSEFORExFcy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzb21lIHByb2JsZW1zIHdpdGggc2Nyb2xsaW5nIGluIHRoZSBlZGl0IGNvbnRyb2wuCgoyMDAxLTAxLTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jb250cm9sLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4LmMsIGRsbHMvZGlucHV0L2pveXN0aWNrL2xpbnV4aW5wdXQuYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmVtb3ZlZCB0aGUgJ2ZuJyBwcmVmaXggKGkuZS4gSUNPTV9GTikuCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZGRyYXcuaCwgbXNkb3MvdmdhLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kY2xpcHBlci9tYWluLmMsIGRsbHMvZGRyYXcvZGNsaXBwZXIvbWFpbi5oLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmgsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uaCwgZGxscy9kZHJhdy9kZHJhdy90aHVua3MuYywgZGxscy9kZHJhdy9kZHJhdy91c2VyLmMsIGRsbHMvZGRyYXcvZGRyYXcvdXNlci5oLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RkcmF3L3h2aWRtb2RlLmMsIGRsbHMvZGRyYXcvZGRyYXcveHZpZG1vZGUuaCwgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL21haW4uaCwgZGxscy9kZHJhdy9kcGFsZXR0ZS94MTEuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EyLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYi5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RpYnRleHR1cmUuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kaWJ0ZXh0dXJlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZmFrZXpidWZmZXIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9mYWtlemJ1ZmZlci5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdGh1bmtzLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvdXNlci5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3VzZXIuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS93bmRwcm9jLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2Uvd25kcHJvYy5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBkb2N1bWVudGF0aW9uL2RkcmF3LnR4dCwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvY29udmVydC5jLCBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RkY29taW1wbC5oLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9zdHJ1Y3RfY29udmVydC5jLCBkbGxzL2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmg6CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3QHRyYW5zZ2FtaW5nLmNvbT4KCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1ham9yIERpcmVjdERyYXcgcmVzdHJ1Y3R1cmUvcmVpbXBsZW1lbnRhdGlvbiwgdXNpbmcgYW4gaW1wcm92ZWQgY29tcG9uZW50CglvYmplY3QgbW9kZWwgaGllcmFyY2h5LiBUaGUgaW1wbGVtZW50YXRpb24gY3VycmVudGx5IHN1cHBvcnRzOgoJLSBEaXJlY3REcmF3IG92ZXIgR0RJL1VTRVIgaW4gYSB3aW5kb3cgKHVzaW5nIERJQnNlY3Rpb25zIGFuZAoJICBhc3luY2hyb25vdXMgdXBkYXRlcykKCS0gWFZpZE1vZGUKCS0gWEY4NkRHQTIKCS0gQWxsIERpcmVjdERyYXcgaW50ZXJmYWNlcyBmcm9tIHZlcnNpb25zIDEgdG8gNyAoYXQgbGVhc3QgaW4gdGhlb3J5KQoJLSBIb29rcyBmb3IgRGlyZWN0M0QgaW50ZXJmYWNlcwoKCSogZGxscy9tc2FjbS93aW5lYWNtLmgsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL21zYWNtZGxnLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgcGFydHMuCgoJKiBjb250cm9scy9tZW51LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIHRoZSBhbGlnbm1lbnQgb2YgdGhlIE1GX1JJR0hUSlVTVElGWSBtZW51IGl0ZW1zLgoKCSogbWlzYy9tYWluLmM6IFJlbW92ZWQgb2Jzb2xldGUgY29kZS4KCgkqIGRsbHMvTWFrZWZpbGUuaW46IEZpeGVkIGRsbCBkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBpbmNsdWRlL21tZGRrLmgsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyB1c2luZyBtYW5pZmVzdCBjb25zdGFudCBpbnN0ZWFkIG9mIHJhdyB2YWx1ZXMgZm9yIGFsbCB0aGUKCURSVl9RVUVSWT8/PyB2YWx1ZXMuCgoJKiBkbGxzL2tlcm5lbC90aHVuay5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglBZGRlZCBVbHJpY2ggV2VpZ2FuZCdzIGRlc2NyaXB0aW9uIG9mIEtFUk5FTDMyXzk5LgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJTWlrZSBNY0Nvcm1hY2sgIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJU29tZSBib3JrZW4gbWVtb3J5IG1vbml0b3JpbmcgcHJvZ3JhbXMgZGl2aWRlIGJ5IGR3VG90YWxQYWdlRmlsZSwKCXdoaWNoIHByb2JhYmx5IGlzbid0IHplcm8gb24gd2luZG93cy4KCgkqIGNvbmZpZ3VyZS5pbiwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3NwZWNtYWtlci8uY3ZzaWdub3JlLCB0b29scy9zcGVjbWFrZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3NwZWNtYWtlci9SRUFETUUsIHRvb2xzL3NwZWNtYWtlci9kbGwuYywgdG9vbHMvc3BlY21ha2VyL2Z1bmN0aW9uX2dyZXAucGwsIHRvb2xzL3NwZWNtYWtlci9tYWluLmMsIHRvb2xzL3NwZWNtYWtlci9taXNjLmMsIHRvb2xzL3NwZWNtYWtlci9tc21hbmdsZS5jLCB0b29scy9zcGVjbWFrZXIvb3V0cHV0LmMsIHRvb2xzL3NwZWNtYWtlci9zZWFyY2guYywgdG9vbHMvc3BlY21ha2VyL3NwZWNtYWtlci5oLCB0b29scy9zcGVjbWFrZXIvc3ltYm9sLmMsIGNvbmZpZ3VyZToKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBZGRlZCBzcGVjIGdlbmVyYXRpb24gdG9vbCBzcGVjbWFrZXIuCgoJKiBtaXNjL29wdGlvbnMuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglSZWltcGxlbWVudGVkICJyZWxheT0iIGFuZCAic25vb3A9IiBzdWJvcHRpb25zLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW51c2VyLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZXMgdG8gdGhlaXIgcmlnaHRmdWwgaGVhZGVycy4KCVRoZSBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiBwb2ludGVyIHR5cGVzIG11c3QgYmUgYmFzZWQgb24gU1RSSUNULgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglTdGFyY3JhZnQgd2FzIGNvbmZ1c2VkIGJ5IGEgd3JvbmcgRkFMU0UgQml0Qmx0IHJldHVybi4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTZXQgZnJhZ21lbnRzIGZvciB3YXZlIGlucHV0IHRvIDcgeCAxMDI0IGJ5dGUuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGxvYWRpbmcgb2YgMTYgYml0IGRyaXZlcnMuCglCZXR0ZXIgc3VwcG9ydCBmb3IgbmF0aXZlIG1hcHBlcnMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBwcm9ibGVtIHdoZXJlIHdoZW4gZGVsZXRpbmcgYW4gaXRlbSB1c2luZyBpbmRleCAtMSBvbiBhbiBlbXB0eQoJbGlzdGJveCB3ZSB3b3VsZCBwYXNzIHRocm91Z2ggYW4gaWxsZWdhbCBuZWdhdGl2ZSBpbmRleCBhbmQgY2F1c2UKCXByb2JsZW1zLgoKMjAwMS0wMS0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglQYXNzIHRoZSBhcHBsaWNhdGlvbiBuYW1lIGFsc28gd2hlbiBzdGFydGluZyBhIFVuaXggYXBwLCBhbmQgdXNlIGl0IHRvCglsb2FkIHRoZSBtYWluIGV4ZSAuc28gZmlsZS4KCUZpeGVkIGJ1ZyBpbiBkaXJlY3RvcnkgaGFuZGxpbmcgaW4gUFJPQ0VTU19DcmVhdGUuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUpvbiBHcmlmZml0aHMgPHRudGpwZ3JpZmZAdHNueHQuY28udWs+CglBZGRlZCBJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uQW5kU3BpbkNvdW50IHByb3RvdHlwZS4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIHdpbmRvd3MvdXNlci5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgSERFU0sgdG8gU1RSSUNULgoKCSogZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBkdXBsaWNhdGUgZmllbGQgaW4gaW50ZXJuYWwgc3RydWN0dXJlLgoJU2lsZW5jZWQgd2FybmluZyBmb3IgTUNJX0NPTkZJR1VSRSBtZXNzYWdlLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgRFJWTV9NQVBQRVJfU1RBVFVTIG1lc3NhZ2UuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvbXNhY20uZHJ2LnNwZWMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlcGxhY2VkIHBvaW50ZXJzIHRvIGV4dGVybmFsIGZ1bmN0aW9ucyBieSBhIERMTCBpbXBvcnQuCgoJKiBkbGxzL21zdmlkZW8vZHJhd2RpYi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBiaXRtYXAgc2l6ZSBoYW5kbGluZy4KCjIwMDEtMDEtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgY29uZmlndXJlOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglUdXJuIG9uIGRldGVjdGFibGUgYXV0b3JlcGVhdCBpZiB0aGUgWCBLZXlib2FyZCBFeHRlbnNpb24gaXMKCWRldGVjdGVkLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBITUVUQUZJTEVQSUNUIHRvIHd0eXBlcy5oLiBOb3RlLCBITUVUQUZJTEVQSUNUIGlzIGFsd2F5cyBhCgkndm9pZConIHVubGlrZSByZWd1bGFyIGhhbmRsZXMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50IFByaW50RGxnMTYgYmV0dGVyIChhZGRpbmcgUHJpbnREbGdQcm9jMTYgYW5kIHNldmVyYWwgb3RoZXIKCTE2Yml0IGRlcGVuZGVudCBmdW5jdGlvbnMpCglJZiB3ZSBhcmUgdXNpbmcgYSB0ZW1wbGF0ZSB3ZSBtaWdodCBub3QgaGF2ZSB0aGUgZGVmYXVsdCBjb21ib2JveCBmb3IKCXByaW50ZXJzLCB1c2UgdGhlIGRlZmF1bHQgcHJpbnRlciBpbiB0aG9zZSBjYXNlcy4KCU1vcmUgZXJyb3IgbWVzc2FnZXMgYW5kIGNoZWNrcy4KCUFkZGVkIEdsb2JhbEZsYWdzMTYgYW5kIEdsb2JhbFJlQWxsb2MxNiB0byBrZXJuZWwzMi5zcGVjLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEZWxheWVkIGltcG9ydCB0aHVua3MgZm9yIFNwYXJjLgoKCSogZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBhbiAnI2lmZGVmIFNUUklDVCcuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglCdWdmaXggZm9yIHNvdW5kIGRyb3BwaW5nIG91dCwgYW5kIHdvcmthcm91bmQgZm9yIEhhbGYtTGlmZSdzCglicmFpbmRlYWQgc2Vjb25kYXJ5IHNvdW5kIGJ1ZmZlciBtYW5hZ2VtZW50LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS93aW5kZWYuaCwgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBIRFJPUCB0byBzaGVsbGFwaS5oLgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJU2hvdWxkIGluY2x1ZGUgY2d1aWQuaC4KCgkqIGluY2x1ZGUvb2xlMi5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHR3byBlcnJvciBjb2RlczogRV9EUkFXIGFuZCBEQVRBX0VfRk9STUFURVRDLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJUmV0dXJuIDguMyBmaWxlIG5hbWVzLgoJRml4ZWQgc2l6ZW9mKFdDSEFSKSBidWdzLgoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgktIEZpeGVkIGEgYnl0ZW9yZGVyIGNvbnZlcnNpb24gcHJvYmxlbSB3aXRoIG1lc3NhZ2UgdGFibGVzLgoJLSBDYXJlZnVsbHkgcmVhZCBhbmQgd3JpdGUgKHBvc3NpYmx5KSBtaXNhbGlnbmVkIGRhdGEgZWxlbWVudHMKCSAgdG8gYXZvaWQgY3Jhc2hlcyBvbiBhcmNoaXRlY3R1cmVzIHdoZXJlIHRoaXMgaXMgbm90IGFsbG93ZWQuCgoJKiBwcm9ncmFtcy92aWV3L3ZpZXcuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVwbGFjZWQgY2FsbHMgdG8gT3BlbkZpbGUgd2l0aCB0aGUgZXF1aXZhbGVudCBjYWxsIHRvCglDcmVhdGVGaWxlLiBSZW1vdmVzIHRoZSBuZWVkIHRvIGNhc3QgdGhlIHJlc3VsdCB0byBIQU5ETEUuCgoJKiBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBsYXN0IHBhcmFtZXRlciBvZiBDcmVhdGVGaWxlIGlzIGEgSEFORExFIGFuZCBzaG91bGQgdGh1cyBiZSBOVUxMLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBIHNvY2tldCBiZWNvbWVzIHJlYWRhYmxlIGFmdGVyIGNvbm5lY3QgaW4gTGludXggMi40IChldmVuIGZvcgoJY29ubmVjdGlvbiByZWZ1c2VkKS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWFkIDQgYnl0ZXMgdG8gd2FrZSB1cCBHRVRJU1BBQ0UuCgoJKiBkbGxzL3dpbmVwcy9hZm0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgb25lIHNhZmV0eSBjaGVjayB0byBBRk0gcGFyc2luZy4KCgkqIGRsbHMvdXNlci91c2VyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCTE2Yml0IHVzZXIgR2V0UHJvcC9TZXRQcm9wIGdldCBzdHJpbmdzIG9yIGF0b21zLCBzbyB3ZSBjYW4gdXNlICdzdHInLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSAwIHZzLiBGQUxTRSBtaXNtYXRjaGVzLgoJRml4ZWQgYSAnJXgnIHZzLiAnJWx4JyBtaXNtYXRjaC4KCUZpeGVkIHNvbWUgRFdPUkQgdnMuIFNDX0hBTkRMRSBtaXNtYXRjaGVzLgoKCSogaW5jbHVkZS93aW5zdmMuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTQ19IQU5ETEUgaXMgYSBIQU5ETEUsIG5vdCBhICdERUNMQVJFX0hBTkRMRScKCVNFUlZJQ0VfU1RBVFVTX0hBTkRMRSBpcyBhIERXT1JECgoJKiBtZW1vcnkvbG9jYWwuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxpZ24gbW92ZWFibGUgYmxvY2tzIGlmIHRoZSBhcmNoaXRlY3R1cmUgcmVxdWlyZXMgaXQuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVvcmRlcmVkIHRoZSBkZWZpbml0aW9ucyBhY2NvcmRpbmcgdG8gdGhlaXIgdmFsdWUuCglJbnNlcnRlZCB0aGUgKl9TXyogbWFjcm9zIHJpZ2h0IGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyAqX0VfKiBibG9jawoJUmVpbmRlbnRlZCB0aGUgdmFsdWVzLgoJUmVtb3ZlZCB0aGUgZHVwbGljYXRlIHNldCBvZiBFX3h4eCBtYWNyb3Mgc2luY2UgdGhleSBhcmUgb25seSB1c2VkIG9uCglub24gV0lOMzIgcGxhdGZvcm1zLgoJVW5jb21tZW50ZWQgdGhlIENPX0VfSU5JVF8gc2V0IG9mIG1hY3Jvcy4KCVJlbW92ZWQgc29tZSBkdXBsaWNhdGUgbWFjcm8gZGVmaW5pdGlvbnMgYW5kIGZpeGVkIHZhcmlvdXMgdHlwb3MuCglBZGRlZCB0aGUgZGVmaW5pdGlvbnMgbmVlZGVkIGJ5IHRoZSBNRkMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgUmVzZXJ2ZWQ1IC0+IGxzdHJjbXAxNi4KCgkqIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDb2RlIHdhcyBjaGVja2luZyBmb3IgMCBvciBIRklMRV9FUlJPUiBpbnN0ZWFkIG9mIG5lZ2F0aXZlIGVycm9yCgl2YWx1ZXMuCgoyMDAwLTEyLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJIkltcGxlbWVudCIgR2V0S0JDb2RlUGFnZSBhbmQgR2V0S0JDb2RlUGFnZTE2LgoKCSogZmlsZXMvZmlsZS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBHZXRPdmVybGFwcGVkUmVzdWx0LgoKCSogb2JqZWN0cy9mb250LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZUZvbnRJbmRpcmVjdCgpIGNhbiBnZXQgTlVMTCBwb2ludGVycy4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSW1wcm92ZSBhc3luYyBpL28gY29tcGF0YWJpbGl0eS4gbHBPdmVybGFwcGVkLT5JbnRlcm5hbCBzaG91bGQgaG9sZAoJdGhlIG92ZXJsYXBwZWQgdHJhbnNmZXIgc3RhdHVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBidWlsdGluIGltcG9ydHMgYnJva2VuIGJ5IGxhdGVzdCBjaGFuZ2UuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSB1bmFsaWduZWQgYWNjZXNzIHRlc3QgZWZmZWN0aXZlLgoKCSogaW5jbHVkZS93aW5lL3BvcnQuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZXZpbGlzaCBjdXQgYW5kIHBhc3RlLgoKCSogZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbXBpbGUgdGhlIGRlYnVnZ2VyIHdpdGggU1RSSUNUIG9uLgoKCSogZGxscy93aW5lcHMvZm9udC5jOgoJSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglVc2UgYSBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gdG8gbWF0Y2ggUG9zdFNjcmlwdCBmb250IG5hbWVzLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYW4gSUNPTV9GTiB0aGF0IGdlbmVyYXRlcyBlaXRoZXIgZm4jI3hmbiBvciBzZm4gYXMgYXBwcm9wcmlhdGUuCglVc2UgSUNPTV9GTiB0byBhdm9pZCBkdXBsaWNhdGluZyB0aGUgJ0lDT01fVj9NRVRIT0QuKicgZGVmaW5pdGlvbnMuCglSZW1vdmUgdGhlIG9ic29sZXRlIElDT01fQ1ZNRVRIT0QgbWFjcm9zLgoJVXNlIHRoZSBJQ09NX1ZUQkwgbWFjcm8gdG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlICdJQ09NX0NBTEwuKicKCWRlZmluaXRpb25zLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBpbXBsZW1lbnRlZCBwYXNzaXZlIEZUUCB0cmFuc2ZlcnMgKFBBU1YsIG5lZWRlZCBmb3IgZmlyZXdhbGxzKQoJLSBmaXhlZCBsc3RuU29ja2V0IGNsb3NpbmcKCgkqIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvd2lubnQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCB3aW5lYnVpbGQgdG8gd29yayBvbiBub24tSW50ZWwgYXJjaGl0ZWN0dXJlcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUHJldmVudCB1bmFsaWduZWQgYWNjZXNzIHRvIE5FIGluLW1lbW9yeSBtb2R1bGUgZGF0YS4KCgkqIG1lbW9yeS9jb2RlcGFnZS5jLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NvbXBvc2UuYywgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9tYnRvd2MuYywgdW5pY29kZS93Y3RvbWIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGNvbXBvc2l0ZSBVbmljb2RlIGNoYXJhY3RlcnMgaW4gTXVsdGlCeXRlVG9XaWRlQ2hhcgoJYW5kIFdpZGVDaGFyVG9NdWx0aUJ5dGUuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgcHJvdG90eXBlIGZvciBHZXRMb2dDb2xvclNwYWNlLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglDb252ZXJ0IEhDT0xPUlNQQUNFIHRvIFNUUklDVCBtb2RlLgoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOgoJV2lsYnVyIE4uIERhbGUgPHdpbGJ1ci5kYWxlQGx1bWluLm5sPgoJVXBkYXRlZCBmaXJzdCBleGFtcGxlIHVzaW5nIGxhdGVzdCB3aW5lYnVpbGQgZGxsL3NvIHByb2NlZHVyZS4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgc21hbGwgcmFjZSBjb25kaXRpb24gYmV0d2VlbiB2bTg2X2VudGVyKCkgYW5kIHNpZ25hbCBoYW5kbGluZy4KCU1hZGUgc2VwYXJhdGUgc2F2ZV92bTg2X2NvbnRleHQgYW5kIHJlc3RvcmVfdm04Nl9jb250ZXh0IGZ1bmN0aW9ucy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CglBbGxvdyBzdHVicyBmb3IgZXhwb3J0cyB0aGF0IGFyZSBub3QgbGVnYWwgQyBpZGVudGlmaWVycy4KCgkqIGRsbHMva2VybmVsL3N5bmMuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglUZXN0IHBvaW50ZXIgYmVmb3JlIGl0IGlzIGRlcmVmZXJlbmNlZCBpbiBDcmVhdGVFdmVudFcoKS4KCjIwMDAtMTItMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVtYWtlciwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW46CglSZW5hbWVkIGxpYnV1aWQuYSB0byBsaWJ3aW5lX3V1aWQuYQoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGxpbmsgd2l0aCBsaWJ3IGlmIGxpYmMgYWxyZWFkeSBjb250YWlucyB3KiByb3V0aW5lcy4KCUxpbmsgZXZlcnkgbGlicmFyeSB3aXRoIGxpYm5zbCBpZiByZXF1aXJlZC4KCUluY2x1ZGUgaWVlZWZwLmggd2hlcmUgbmVjZXNzYXJ5LgoKCSogZGxscy93aW5tbS93aW5lb3NzL29zcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDb21waWxlIGZpeCBpZiBIQVZFX09TUyBpcyBub3QgZGVmaW5lZC4KCgkqIGlmMTYzMi9yZWxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBicm9rZW4gcHJvdG90eXBlcy4KCgkqIGlmMTYzMi9zbm9vcC5jLCByZWxheTMyL3Nub29wLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNpbGVuY2Ugc2lsbHkgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RjaW1hbjMyL2RjaW1hbjMyLnNwZWMsIGRsbHMvb2xlZGxnL29sZWRsZy5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBvcnQga2VybmVsMzIgKGZvciBTZXRMYXN0RXJyb3IoKSkuCgoJKiBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L2hlYXAuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RpYWxvZy5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy91c2VyL2V4dGljb24uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgY2hlY2sgd2hldGhlciB1bmFsaWduZWQgbWVtb3J5IGFjY2VzcyBpcyBhbGxvd2VkLgoJQWRkZWQgbWFjcm9zIHRvIGFjY2VzcyB1bmFsaWduZWQgV09SRHMgLyBEV09SRHMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2RyaXZlLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9leGNlcHQuYywgd2luMzIvZmlsZS5jLCBSRUFETUUsIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBjbGFyaWZ5IG1hbnkgZXJyb3IgbWVzc2FnZXMKCS0gYWRkIGRhdGEgY29ycnVwdGlvbiB3YXJuaW5nIHRvIFJFQURNRSBmaWxlCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgdGhlIFggc3RhdGUgaW5zdGVhZCBvZiB0aGUgVksga2V5IHN0YXRlIHRvIGNoZWNrIGZvciBlYXRhYmxlCgljaGFyYWN0ZXJzLCBzaW5jZSB0aGUgVksga2V5IHN0YXRlIGlzbid0IGEgZmFuIG9mIEFsdEdyLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglBbGxvdyBhbiBhcHBsaWNhdGlvbiB0byBvcGVuIGEgZG9zIGRldmljZSBlbmRpbmcgd2l0aCAnOicuCgoJKiBkbGxzL3dpbmVkb3MvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbGVhc2UgdGhlIFdpbjE2IGxvY2sgYmVmb3JlIHN0YXJ0aW5nIHRoZSBET1MgcHJvY2Vzcywgc2luY2UgaXQncyBub3QKCXJlYWxseSBhIFdpbjE2IGFwcC4KCgkqIGRsbHMvd2luZWRvcy9kb3N2bS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTaW5jZSBET1NWTV9XYWl0KCkgYmxvY2tzIHRoZSBub3JtYWwgZXZlbnQgcHJvY2Vzc2luZywgaXQgc2hvdWxkCglkaXNwYXRjaCBwZW5kaW5nIGV2ZW50cyBpdHNlbGYuCgoyMDAwLTEyLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvbXNjLmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUZpeCB0aGUgdHJpdmlhbCBjb21waWxlciB3YXJuaW5ncyBpbiBkZWJ1Z2dlci8gd2hlbiBjb21waWxpbmcgd2l0aCAtVwoJLSBtb3ZlZCBpbmxpbmUgc3RhdGVtZW50cyB0byBmcm9udAoJLSBmaXhlZCB0aGUgdHJpdmlhbCBjYXNlcyBvZiBzaWduZWQvdW5zaWduZWQgY29tcGFyaXNvbnMKCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciB1c2luZyBmdW5jdGlvbiBwb2ludGVycyB0byB3aW5tbSBhbmQgbXN2ZnczMiwgYnV0IGRlbGF5Cglsb2FkaW5nIGluc3RlYWQuCgoJKiB0b29scy93aW5lYnVpbGQvUkVBRE1FLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGFiaWxpdHkgdG8gZGVsYXkgbG9hZGluZyBvZiBhbiBpbXBvcnRlZCBETEwgdW50aWwgaXQncyBuZWVkZWQKCShuZXcgLWRlbGF5IG9wdGlvbiBmb3IgaW1wb3J0IGRpcmVjdGl2ZSBpbiBzcGVjIGZpbGUpLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jOgoJRml4ZWQgZXJyb3IgcmVjb3ZlcnkgZHVyaW5nIHRocmVhZCBjcmVhdGlvbi4KCgkqIGRsbHMvd2luZWRvcy9NYWtlZmlsZS5pbiwgZGxscy93aW5lZG9zL2Rvc3ZtLmMsIGRsbHMvd2luZWRvcy9tb2R1bGUuYywgZGxscy93aW5lZG9zL3dpbmVkb3Muc3BlYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21pc2NlbXUuaCwgbG9hZGVyL2Rvcy9NYWtlZmlsZS5pbiwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBtaXNjZW11L21haW4uYywgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDIwLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDMzLmMsIG1zZG9zL2lvcG9ydHMuYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvd2luZWRvcy8uY3ZzaWdub3JlOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTZXBhcmF0ZWQgdGhlIE1aIGxvYWRlciBhbmQgY29yZSBET1MgVk0gaW50byBkbGxzL3dpbmVkb3MuCgoJKiBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5zdmMuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEZWNsYXJlIGFsbCBoYW5kbGVzIHdpdGggREVDTEFSRV9PTERfSEFORExFIHRvIGVhc2UgY29udmVyc2lvbiB0bwoJU1RSSUNULgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgaW5jbHVkZS93aW5nZGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgR2V0RENCcnVzaENvbG9yIGFuZCBHZXREQ1BlbkNvbG9yLgoKMjAwMC0xMi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglSZW1vdmVkIC0tY29uZmlnIGZyb20gbWFuIHdpbmUuCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUmVtb3ZlZCB0cmFpbGluZyBnYXJiYWdlIGFmdGVyIFtzZXJpYWxwb3J0c10gZGV2aWNlIG5hbWUuCgoyMDAwLTEyLTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgaW5jbHVkZS9yYXMuaCwgaW5jbHVkZS93aW5kZWYuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBIUkFTQ09OTiBmcm9tIHdpbmRlZi5oLgoJQWRkZWQgbWlzc2luZyBVbmljb2RlIHR5cGUgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zLgoJQWRkZWQgYSBmZXcgbWlzc2luZyBtYWNybyBkZWZpbml0aW9ucy4KCUVuY2xvc2UgaW4gYW4gZXh0ZXJuICJDIiBmb3IgQysrIFdpbmVsaWIgYXBwbGljYXRpb25zLgoJQWRkZWQgdGhlIHN0cnVjdHVyZSBwYWNraW5nIHNwZWNpZmljYXRpb24uCgoJKiBmaWxlcy9jaGFuZ2UuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBzY2hlZHVsZXIvaGFuZGxlLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBmZXcgdHlwZSBjbGFzaGVzIGluIHByZXBhcmF0aW9uIGZvciB0aGUgc3dpdGNoIHRvIFNUUklDVC4KCgkqIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgd2luZG93cy9wYWludGluZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVcGRhdGVkIHRoZSBsb29rIG9mIGRvdHMgYW5kIGRhc2hlcyB0byBtYXRjaCB0aGUgV2luMzIgbG9vay4KCUlzc3VlIGEgRklYTUUgYWJvdXQgUFNfVVNFUlNUWUxFLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIGVudmlyb25tZW50IHZhcmlhYmxlIFRNUCBhcyBhbiBhbGlhcyBmb3IgVEVNUC4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJPG1hbGxvYy5oPiBpcyBub3QgSVNPIEMsIDxzdGRsaWIuaD4gaXMuCgoJKiB3aW5kb3dzL3NweS5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeGVkIGxvb3AgdGVzdCBmb3IgbmVnYXRpdmUgdmFsdWUuCgoyMDAwLTEyLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDAxMjIyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTEyLTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglDYW5jZWwgYSBmZXcgY2hhbmdlcyB0byBnZXQgYmFjayBiYXNpYyB0ZXh0IGNsaXBib2FyZCBmdW5jdGlvbmFsaXR5LgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luaGVscC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZXBsYWNlZCBjYWxscyB0byBLRVJORUwuWWllbGQxNiBieSBjYWxscyB0byBLRVJORUwzMi5LMzJXT1dZaWVsZCBmcm9tCglvdXRzaWRlIGxpYmtlcm5lbC5zby4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCU5vIGxvbmdlciB0cnkgdG8gbG9hZCBidWlsdGluIGxpYnJhcnkgd2hlbiBsb2Fkb3JkZXIgaXMgJ3NvJy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGxpYnJhcnkvTWFrZWZpbGUuaW4sIHRzeDExL01ha2VmaWxlLmluLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL3dpbmVfdW5pY29kZS5kZWY6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJVXNlIGRsbHdyYXAgZm9yIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJpZXMgaW4gY3lnd2luLgoKCSogc2VydmVyL2FzeW5jLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jOgoJQXZvaWQgZHVwJ2luZyBmaWxlIGRlc2NyaXB0b3JzIHdoZW4gbm90IG5lY2Vzc2FyeS4KCURvIG5vdCBzZW5kIGZkIHRvIHRoZSBjbGllbnQgaWYgb3BzLT5nZXRfZmQoKSBmYWlscy4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzoKCUZpeGVkIGNvcHkvcGFzdGUgYnVnICh0aGFua3MgdG8gR2VyYXJkIFBhdGVsKS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCU1vcmUgaW50ZWxsaWdlbnQgRGlyZWN0U291bmQgcHJlYnVmZmVyaW5nLiBCeSB0cmFja2luZyB0aGUKCWxhc3Qtd3JpdHRlbiBwb3NpdGlvbiBvZiBzdHJlYW1pbmcgYnVmZmVycywgaXQgYXR0ZW1wdHMgdG8gYXZvaWQKCXByZWJ1ZmZlcmluZyBwYXN0IHRoaXMgcG9zaXRpb24gdW5sZXNzIG5lY2Vzc2FyeTsgdGhpcyBtYXkgYXZvaWQgYQoJbnVtYmVyIG9mIHNvdW5kIHByb2JsZW1zIGluIHZhcmlvdXMgc2l0dWF0aW9ucy4gTWVyZ2VkIEhFTCBhbmQgSEFMCgltaXhpbmcgY29kZSwgd2hpY2ggc2hvdWxkIHJlZHVjZSB0aGUgSEVMIG1vZGUncyBDUFUgdXNhZ2Ugc2xpZ2h0bHkuCgoJKiB3aW5kb3dzL3dpbi5jOiBKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCVdhcm4gd2hlbiBGaW5kV2luZG93IG5lZWRzIHRvIGNoZWNrIG90aGVyIHByb2Nlc3NlcyB3aW5kb3dzLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAbG9wbG9mLmRlPgoJRG9uJ3Qgc3VwcHJlc3MgZXJyb3IgbWVzc2FnZXMuCgoJKiBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUFkZCAlZnMgaW5mbyB0byB0aGUgY3JpdGljYWwgc2VjdGlvbiB0aW1lb3V0IG1lc3NhZ2UuCgoJKiBpbmNsdWRlL2RlYnVndG9vbHMuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgcmVkdW5kYW50ICc7JyBhdCB0aGUgZW5kIG9mIGxpbmUuCgoJKiBjb250cm9scy9lZGl0LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJRml4IHJlbWFpbmluZyBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2hlcy4KCgkqIGRsbHMvbnRkbGwvb20uYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS92aXJ0dWFsLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglVc2UgYSBzZXBhcmF0ZSBGSUZPIHBhaXIgZm9yIHNlcnZlciByZXF1ZXN0cyB0aGF0IGRvbid0IG5lZWQgdG8gcGFzcyBhCglmaWxlIGRlc2NyaXB0b3IuCglBc3NvY2lhdGUgZmlsZSBkZXNjcmlwdG9ycyB3aXRoIGhhbmRsZXMgb24gdGhlIHNlcnZlciBzaWRlIHNvIHRoYXQgd2UKCWRvbid0IG5lZWQgdG8gcGFzcyB0aGUgZmQgZXZlcnkgdGltZSB0aGUgY2xpZW50IHdhbnRzIHRvIHVzZSBpdC4KCgkqIHdpbmUuaW5pOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCU5hdGl2ZSBJTU0zMi5ETEwgY3Jhc2hlcyB3aW5lIC0gdXNlIGJ1aWx0aW4gRExMLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJUHJpbnQgYWxsIHByb2JsZW1zIGFzIEVSUigpIGV4Y2VwdCBmb3IgImNvdWxkIG5vdCBvcGVuIiBsaWJyYXJ5LCB3aGljaAoJaXMgV0FSTigpLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlEaXJlY3REcmF3U3VyZmFjZTo6Qmx0OjpTUkNDT1BZIGlzIHRoZSBkZWZhdWx0IFJPUCBvcGVyYXRpb24sIGRvIG5vdAoJdGhyb3cgZXJyb3IuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9wcm9wZXJ0eS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvcmVjdC5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3RpbWVyLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbmhlbHAuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmMsIHdpbmRvd3MvY2FyZXQuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVmFyaW91cyBkb2N1bWVudGF0aW9uIGZpeGVzLgoKCSogd2luZG93cy93aW5wb3MuYzoKCVJlbW92ZWQgdGhlIGR1bW15IG1vdXNlIGV2ZW50IGluIFNldFdpbmRvd1Bvcy4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSAxNiBiaXQgZW50cnkgcG9pbnRzIG5lZWRlZCBieSBtdWx0aW1lZGlhIERMTHMuCgoJKiB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBsb2FkZXIvcmVzb3VyY2UuYywgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvbG9jYWwuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBjb250cm9scy9lZGl0LmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvd2lubW0vbW1pby5jLCBmaWxlcy9maWxlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYzoKCVJlcGxhY2VkIFdJTjE2X0dsb2JhbExvY2sxNiBieSAib2ZmaWNpYWwiIGZ1bmN0aW9uIEszMldPV0dsb2JhbExvY2sxNi4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglHYXZyaWVsIFN0YXRlIDxnYXZAdHJhbnNnYW1pbmcuY29tPgoJTW9yZSBESUIgc2VjdGlvbiBjb3B5LWJsaXR0aW5nIGltcHJvdmVtZW50czogSGFuZGxlIDhicHAgRElCcywgREMKCW1hcHBpbmcgbW9kZXMsIGFuZCBjbGlwcGluZy4gVGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIERJQnNlY3Rpb24ncwoJWFNobUltYWdlIG1lY2hhbmlzbSB0byBnZXQgYSByZWFsbHkgZmFzdCBibGl0IHRvIHRoZSBkaXNwbGF5LgoKMjAwMC0xMi0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci91c2VyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi91c2VyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGUgdXBkYXRlLgoJLSBNaW5vciBidWcgZml4ZXMuCgktIEFkZGVkIG5ldyBvcHRpb24gb24gLS1kb2N1bWVudGF0aW9uLW9yZGluYWwgKG9mZiBieSBkZWZhdWx0KS4KCS0gQWRkZWQgbmV3IG9wdGlvbiBvbiAtLWRvY3VtZW50YXRpb24tcGVkYW50aWMgKG9mZiBieSBkZWZhdWx0KS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgZXJyb3JzIGZvciBJRHNEcml2ZXJfR2V0UG9zaXRpb24uCglSZXBvcnQgRFNFUlJfVU5JTklUSUFMSVpFRCBvbiBub24tb3BlbmVkIFdpbmVPU1MgYXVkaW8gZGV2aWNlLgoKCSogZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9kcml2ZXIuYywgd2luZG93cy9kcml2ZXIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2xlYW5lZCB1cCB0aGUgY29kZSBhIGJpdC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglFbmFibGUgdGhlIERpcmVjdFNvdW5kIEhBTCBmb3Igc291bmQgZHJpdmVycyB0aGF0IGRvIG5vdCByZXBvcnQKCURTUF9DQVBfUkVBTFRJTUUuIFNldCBwcmVjaXNpb24gb2YgdGhlc2UgdG8gMjU2IGJ5dGVzIChhYm91dCAzbXMpLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIFRMQl9Eb0Z1bmNzOiBjb2RlIGNsZWFudXAgYW5kIGVsZW1kZXNjRnVuYyByZWFkIGNvcnJlY3RseSBmcm9tIFRMQi4KCS0gVExCX0xvYWRUeXBlTGliOiByZWYgY291bnQgcHJvYmxlbS4KCS0gSVR5cGVMaWI6OkdldFR5cGVJbmZvT2ZHdWlkOiBzYWZlciBpbXBsZW1lbnRhdGlvbiAocG9pbnRlciB0ZXN0aW5nKS4KCS0gSVR5cGVJbmZvOjpHZXRSZWZUeXBlT2ZJbXBsVHlwZTogc2FmZXIgaW1wbGVtZW50YXRpb24gKHBvaW50ZXIgdGVzdGluZykuCgktIElUeXBlSW5mbzI6OkdldERvY3VtZW50YXRpb25MIHJldHVybiBlcnJvcnMgaWYgU3lzQWxsb2NTdHJpbmcgZmFpbGVkLgoJLSBUTEIgbG9hZGVyIGZ1bmN0aW9ucyBub3cgdHJhY2UgaW4gInR5cGVsaWIiIGNoYW5uZWwuCgktIEltcHJvdmVkIHRyYWNlcyBpbiBBZGRSZWYvUmVsZWFzZSBhbmQgaW1wcm92ZWQgZHVtcF8qIGZ1bmN0aW9ucyBmb3IKCSAgZGVidWdnaW5nLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHdyaXRlIHRvIGJ1ZmZlciB3aXRoIHplcm8gbGVuZ3RoLgoJUmVtb3ZlZCBzb21lIHVudXNlZCBmdW5jdGlvbiBwYXJhbWV0ZXJzLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglEbyBub3QgZnJlZSB0aGUgbm90IG93bmVkIGVycm9yIHN0cmluZy4KCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglVcGRhdGVkIFNhZmVBcnJheUdldFVCb3VuZCBhbmQgU2FmZUFycmF5R2V0TEJvdW5kIHdpdGggbW9yZSBzYW5pdHkKCWNoZWNrczogYW4gYXJyYXkgaGFzIGF0IGxlYXN0IG9uZSBkaW1lbnNpb24uCglVcGRhdGVkIHZhbGlkQ29vcmRpbmF0ZXMsIHdoZXJlIFNhZmVBcnJheUdldExCb3VuZCB3YXMgY2FsbGVkIG9uCglkaW1lbnNpb24gMC4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmV3cm90ZSB0aGUgYWxsb2NhdGlvbiBvZiBNTSBkcml2ZXIgZGVzY3JpcHRvcnMuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCVVzZSBoYW5kbGUgdG8gcGFsZXR0ZSBpbnN0ZWFkIG9mIGluZGV4IGZvciBFTVJfU0VMRUNUUEFMRVRURS4KCUltcGxlbWVudGVkIHNpbXBsZSBjYXNlIGZvciBFTVJfRVhUU0VMRUNUQ0xJUFJHTi4KCjIwMDAtMTItMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL2RlYnVndG9vbHMuYzoKCUZpeGVkIGRlYnVnIHJvdXRpbmVzIHRvIHdvcmsgYmVmb3JlIHRoZSBwcm9jZXNzIGhlYXAgaXMgY3JlYXRlZC4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCURvIG5vdCBjYWxsIHRocmVhZCBhdHRhY2gvZGV0YWNoIHJvdXRpbmVzIGR1cmluZyBwcm9jZXNzIGV4aXQgdG8gYXZvaWQKCXBvdGVudGlhbCBkZWFkbG9ja3MuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTZXQgdGhlIGNvbG9yIG1hc2sgd2l0aCBCSV9CSVRGSUVMRCBkaWJzLCBkb24ndCB1c2UgdGhlCglhcHBsaWNhdGlvbi1wcm92aWRlZCB2YWx1ZS4KCgkqIG1lbW9yeS9nbG9iYWwuYywgY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgbmV3IGVkaXQgY29udHJvbCBhbGxvY2F0ZSBpdHMgYnVmZmVycyB3aXRoIGdyYW51bGFyaXR5IDMyIGJ5dGUuCglFbnN1cmUgdGhhdCBhbGwgY29waWVkIHN0cmluZ3MgYXJlIDAgdGVybWluYXRlZC4KCgkqIHdpbmRvd3Mvc3B5LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBwcmludCBvdXQgV01fTk9USUZZIG1lc3NhZ2UgY29kZSBpZiB3ZSBrbm93IGl0LgoJLSBwcmludCBvdXQgbWVtb3J5IHBhc3QgZW5kIG9mIE5NSERSIHN0cnVjdHVyZSBmb3IgdGhlIHNpemUgb2YKCSAgdGhlIG5vcm1hbCBOTXh4eHh4IHN0cnVjdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2UgY29kZS4KCS0gc2V0dXAgbm90aWZ5IGNvZGUgdGFibGUgZm9yIGNvbW1vbiwgUkVCQVIsIFRPT0xCQVIsIGFuZCBDT01CT0VYIChhdAoJICBsZWFzdCBwYXJ0aWFsbHkpLgoKMjAwMC0xMi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9nbG9iYWwuYzogU2V0IGxhc3QgZXJyb3IgaW4gR2xvYmFsVW5sb2NrLgoKCSogZGxscy9rZXJuZWwvY29tbS5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL2tlcm5lbC90aW1lLmM6CglBbmRyZXcgSm9obnN0b24gPGFqb2huc3RvbkBzd2l0Y2guY29tPgoJRG9jdW1lbnRhdGlvbiB1cGRhdGUuCgoJKiBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaW5jbHVkZS93aW5udC5oLCBsaWJyYXJ5L2xvYWRlci5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEVU1NWVNUUlVDVE5BTUUyIGNyZWF0ZXMgYSBjb25mbGljdCB3aGVuIHVzaW5nIGFub255bW91cyB1bmlvbiBuYW1lcy4KCgkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmcuc2dtbDoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJQWRkZWQgZGVzY3JpcHRpb24gb2YgcHJpbnRlcnBvcnRzIHNlY3Rpb24gb2YgdGhlIHdpbi5pbmkgZmlsZSBmb3Igd2luZXBzLmRydi4KCgkqIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJRml4IElDb25uZWN0aW9uUG9pbnRDb250YWluZXIgaW50ZXJmYWNlIG1hY3Jvcy4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvZGlzcGF0Y2guYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgRGlzcGF0Y2ggQVBJLgoKCSogZGxscy9jcnRkbGwvY29uc29sZS5jLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2Rpci5jLCBkbGxzL2NydGRsbC9leGl0LmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvbG9jYWxlLmMsIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gQWRkIHNldmVyYWwgbWJjcyBhbmQgQ1AgOTMyIGZ1bmN0aW9ucywgZml4IHNvbWUgZXhpc3RpbmcgY2FsbHMKCS0gQnVnIGZpeGVzLCAtVyB3YXJuaW5ncyBhbmQgd2luYXBpX2NoZWNrIHVwZGF0ZXMuCgktIERvbid0IGJlIHNvIHN0cmljdCBzZXR0aW5nIGRlZmF1bHQgbG9jYWxlLCBzdG9yZSBjb2RlcGFnZQoKCSogbGlicmFyeS9wb3J0LmM6CglJbmNsdWRlIHN0ZGxpYi5oIGluc3RlYWQgb2Ygd2NoYXIuaC4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCXNobHdhcGkgZm9yd2FyZGVycyBmb3IgU2V0V2luZG93TG9uZ1cgYW5kIENhbGxXaW5kb3dQcm9jVy4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglOZXcgdW5pY29kZSBlZGl0IGNvbnRyb2wuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUHJvdGVjdCBhZ2FpbnN0IE5VTEwgYnVmZmVyIGluIHRoZSBwcm9maWxlIGZ1bmN0aW9ucy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglOZXcgdW5pY29kZSBlZGl0IGNvbnRyb2wuCgoJKiBvbGUvb2xlMm5scy5jLCB0b29scy9iaW4ycmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL3BhcnNlci55LCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWRpLmMsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5jLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jLCBkbGxzL3dpbm1tL21pZGltYXAvbWlkaW1hcC5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmMsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2lucG9zLmgsIG1pc2MvdHdlYWsuYywgbXNkb3MvaW50MDkuYywgbXNkb3MvaW50MzMuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL3N0dWJzLmMsIGRsbHMvcmljaGVkaXQvcnRmLmgsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy93aW5tbS9qb3lzdGljay9qb3lzdGljay5jLCBkbGxzL3dpbm1tL3RpbWUuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+Cgl3aW51c2VyLmggbm93IHJlcXVpcmVzIHRoYXQgd2UgaW5jbHVkZSB3aW5iYXNlLmggZmlyc3QuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBDcmVhdGVXaW5kb3dTdGF0aW9uLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB0aGUgJ2V4dGVybiAiQyIgeyAuLi4gfScgc3RhdGVtZW50LiBJdCBpcyBub3Qgc3VwcG9zZWQgdG8gYmUKCXRoZXJlLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb3ZlZCBhIG1pc3BsYWNlZCAnZXh0ZXJuICJDIiB7IC4uLiB9JyBzdGF0ZW1lbnQuCgoJKiBsaWJyYXJ5L3BvcnQuYywgaW5jbHVkZS90Y2hhci5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd3R5cGVzLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYmV0dGVyIHN1cHBvcnQgZm9yIFVuaWNvZGU6CglBZGRlZCBzdXBwb3J0IGZvciAxNi1iaXQgd2NoYXJfdAoJQWRkZWQgc3VwcG9ydCBmb3IgcmV3cml0aW5nIDQtYnl0ZSBVbmljb2RlIGxpdGVyYWxzIHRvIDE2Yml0IFVuaWNvZGUKCgkqIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBJTUFHRV9SRVNPVVJDRV9ESVJFQ1RPUllfRU5UUlkgb24gYmlnLWVuZGlhbiBtYWNoaW5lcy4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglTdHViIGZvciBEbGxEZWJ1Z09iamVjdFJQQ0hvb2suCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCU1pc2MgZml4ZXMgZm9yIFF1ZXJ5UGF0aE9mUmVnVHlwZUxpYiwgVExCX1JlYWRUeXBlTGliLAoJSVR5cGVJbmZvX2ZuR2V0Q29udGFpbmluZ1R5cGVMaWIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglEbyBub3Qgc2VuZCBhIFdNX05PVElGWUZPUk1BVCB0byBhIG5vbi1leGlzdGVudCBvd25lci4KCgkqIHNlcnZlci9hdG9tLmMsIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcXVldWUuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2FzeW5jLmM6CglNZXJnZWQgdGhlIGdldF9yZWFkX2ZkIGFuZCBnZXRfd3JpdGVfZmQgcmVxdWVzdHMuCgoJKiBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIERJR0REX1BFRUsgZm9yIFN5c01vdXNlQTo6R2V0RGV2aWNlRGF0YS4KCgkqIGluY2x1ZGUvdGNoYXIuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+Cglfc3Rye2RlYyxpbmN9OiBDYXN0IHRoZSBwYXJhbWV0ZXJzIHRvIHRoZSBwcm9wZXIgdHlwZSBmaXJzdAoJQWRkZWQgZGVmaW5pdGlvbnMgZm9yIF90ZmluZGRhdGEqCgoJKiBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS93aW5udC5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIHNvbWUgb2YgdGhlIFNURE1FVEhPRC9TVERBUEkgdG8gd2lubnQuaC4KCU1vdmVkIHRoZSBFWFRFUk5fQyBtYWNybyB0byB3aW5udC5oLgoJQWRkZWQgYSAnI2lmbmRlZiBfX1dJTkVfXycgYXJvdW5kIHRoZSByZW1haW5pbmcgbWFjcm9zLgoKCSogaW5jbHVkZS93dHlwZXMuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHNvbWUgb2YgdGhlIFNFQ1VSSVRZX3h4eCB0eXBlcy4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFNldFVzZXJPYmplY3RTZWN1cml0eS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGQgbm90aWZ5IHN0cnVjdHVyZXMgTk1NT1VTRSwgTk1PQkpFQ1ROT1RJRlksIE5NS0VZLCBhbmQgTk1DSEFSLgoKMjAwMC0xMi0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1jLmMsIGRsbHMvaW1tMzIvaW1la2wuYywgZGxscy9pbW0zMi9pbWV3bmQuYywgZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjLCBkbGxzL2ltbTMyL2ltbV9wcml2YXRlLmgsIGRsbHMvaW1tMzIvbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIGtleWJvYXJkIGxheW91dCBhbmQgY29udGV4dCAgLSBmYXIgZnJvbSBjb21wbGV0ZS4KCgkqIGxpYnJhcnkvcG9ydC5jOgoJTW9ydGVuIFdlbGluZGVyIDx0ZXJyYS13aW5lQGRpa3UuZGs+Cgkoc3RyY2FzZWNtcCk6IENvbmZvcm0gdG8gQU5TSSBzcGVjcyBmb3IgdG91cHBlci4KCShzdHJuY2FzZWNtcCk6IERpdHRvLiAgQWxzbyBkbyBub3QgdXNlIHNpZGUtZWZmZWN0cyBpbiBtYWNybyBhcmdzLgoJKHdpbmVfb3BlbnB0eSk6IFBsdWcgZGVzY3JpcHRvciBsZWFrLiAgQWx3YXlzIHNldCBlcnJubyBvbiBmYWlsdXJlLgoJKHdpbmVfYW5vbl9tbWFwKTogRml4IGNvbW1lbnQgbG9jYXRpb24uCgoJKiBtaXNjL29wdGlvbnMuYzoKCU1vcnRlbiBXZWxpbmRlciA8dGVycmEtd2luZUBkaWt1LmRrPgoJKHBhcnNlX29wdGlvbnMpOiBBbGxvdyBHTlUtbGlrZSBvcHRpb24gYXJndW1lbnRzIGxpa2UKCSItLWRlc2t0b3A9ODAweDYwMCIuICAoTm90IHBlcmZlY3QgLS0gd2UgZG9uJ3QgYWxsb3cgc2hvcnRoYW5kcy4pCgoJKiB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gSW1wbGVtZW50IGRyYWcgZm9yIHZlcnRpY2FsIHJlYmFycyAoZHJhZyB1cCBhbmQgZG93bikuCgktIEJldHRlciBhbGdvcml0aGltcyBmb3IgaW5zZXJ0aW5nIG5ldyBiYW5kcyAtIG1hdGNoZXMgbmF0aXZlIHZlcnNpb24KCSAgY2xvc2VyLgoJLSBNYWtlIGRyYXdpbmcgb2YgcmViYXIgYXR0ZW1wdCB0byBtYXRjaCBuYXRpdmUgcGl4ZWwgYnkgcGl4ZWwgKG5vdGUKCSAgdGhpcyBkb2VzIG5vdCBmaXggdGhlIGVtYmVkZGVkIGNvbnRyb2xzIGluIGVhY2ggYmFuZCAtIHRoZXkgc3RpbGwgYXJlCgkgIGFzIGdvb2Qgb3IgYmFkIGFzIGJlZm9yZS4pCgktIEltcGxlbWVudCBzb21lIG9mIHRoZSBub3RpZmljYXRpb25zIChSQk5fSEVJR0hUQ0hBTkdFLCBfQ0hJTERTSVpFLAoJICBfREVMRVRJTkdCQU5ELCBfREVMRVRFREJBTkQpLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUGFzcyBXTV9DT01NQU5EIGFuZCBXTV9OT1RJRlkgdG8gcGFyZW50IGFzIHJlY2VpdmVkLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUNoYW5nZSB0aGUgY3VycmVudCBkaXJlY3RvcnkgYXMgdGhlIHVzZXIgYnJvd3NlcyB0aGUgZGlyZWN0b3J5IHRyZWUuCgoJKiBkbGxzL2NydGRsbC9maWxlLmM6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJQ2hhbmdlZCB0eXBvIHZhX2xpc3QgdG8gdmFsaXN0LgoKCSogd2luZG93cy9kaWFsb2cuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUFsbG93IGZvciB0aGUgZGlhbG9nIGZvbnQgc2l6ZSB0byBiZSBzZXQgZGlyZWN0bHkgaW4gcGl4ZWxzLgoKCSogd2luZG93cy93aW5wb3MuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCVdNX0dFVE1JTk1BWElORk8gdHJhY2sgbWluIHNpemUgc2hvdWxkIGJlIHVzZWQgaW4gU2V0V2luZG93UG9zIGFsc28KCWZvciAzMiBiaXRzIGFwcHMuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1hcHBpbmcgZm9yIElDTV9TRVRTVEFURSAocHRyIGluIGxQYXJhbTEgdG8gcHJpdmF0ZSBkYXRhKS4KCjIwMDAtMTItMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIG1lbW9yeS9lbnZpcm9uLmMsIGRsbHMvc2V0dXBhcGkvZGV2aW5zdC5jLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9zZXR1cHguYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2ltbTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvb2xlY2xpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1pbm9yIEFQSSBmaWxlIHVwZGF0ZS4KCS0gVHVybmVkIG9uIC0tZG9jdW1lbnRhdGlvbi1hcmd1bWVudHMgYnkgZGVmYXVsdC4KCgkqIGRsbHMvY3J0ZGxsL2Rpci5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvY3J0ZGxsL2xvY2FsZS5jLCBkbGxzL2NydGRsbC9zcGF3bi5jLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9jb25zb2xlLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYzoKCUpvbiBHcmlmZml0aHMgPGpvbl9wX2dyaWZmaXRoc0B5YWhvby5jb20+CgktIEZpeCBfZnVsbHBhdGggJiBzcGxpdHBhdGgsIHdpbmFwaV9jaGVjayBmaXhlcwoJLSBBZGQgY3ByaW50Zixjc2NhbmYsX2ZnZXR3Y2hhcixfZmdldHdjLF9mcHV0d2NoYXIsX2ZwdXR3YywKCSAgX3d0b2kgJiBfd3RvbCAoZndkKSxzY2FuZixfdGltZXpvbmVfZGxsCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGluY2x1ZGUvaW5wdXQuaCwgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy93aW5wb3MuYzoKCUF2b2lkIGEgY291cGxlIG9mIGRlcGVuZGVuY2llcyBvbiBpbnB1dC5jIGludGVybmFsIHZhcmlhYmxlcy4KCgkqIGRsbHMvY3J0ZGxsL2ZpbGUuYzoKCUZpeGVkIGluZmluaXRlIGxvb3AgaW4gQ1JURExMX19mY2xvc2VhbGwuCgoJKiBkbGxzL2ltbTMyL01ha2VmaWxlLmluLCBkbGxzL2ltbTMyL2ltZXduZC5jLCBkbGxzL2ltbTMyL2ltbS5jLCBkbGxzL2ltbTMyL2ltbV9wcml2YXRlLmgsIGRsbHMvaW1tMzIvbWFpbi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIHNvbWUgQVBJcyBhbmQgSU1FIGNsYXNzIC0gZmFyIGZyb20gY29tcGxldGUuCgoJKiBkbGxzL2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIE5VTEwgYmVmb3JlIGRvaW5nIElzRXF1YWxHVUlEKCkuCgoJKiBkbGxzL3dpbm1tL21jaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBsb2FkaW5nIG9mIDE2IGJpdCBNQ0kgZHJpdmVycyAoZm9yIGNvbW1hbmQgdGFibGVzKS4KCUZpeGVkIGFsaWFzIGhhbmRsaW5nIGluIG1jaVNlbmRTdHJpbmcuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVweC5zcGVjLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gZG9uJ3QgaW5pdGlhbGl6ZSB3aXRoIHBGaXJzdExERCBpZiBwRmlyc3RMREQgaXNuJ3QgaW5pdGlhbGl6ZWQgeWV0IGVpdGhlcgoJLSBjb3JyZWN0ZWQgVmNwQ2xvc2UgLnNwZWMKCjIwMDAtMTItMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQWxsb2NhdGUgZW50cnkgcG9pbnRzIGR5bmFtaWNhbGx5IHRvIGFsbG93IGZvciBhIGxhcmdlciBudW1iZXIgb2YKCW9yZGluYWxzLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9NYWtlZmlsZS5pbiwgZGxscy9pbW0zMi9pbW0uYywgZGxscy9pbW0zMi9pbW0zMi5zcGVjLCBkbGxzL2ltbTMyL2ltbV9wcml2YXRlLmgsIGRsbHMvaW1tMzIvaW1tZGRrLmgsIGRsbHMvaW1tMzIvbWFpbi5jLCBkbGxzL2ltbTMyL21lbW9yeS5jLCBkbGxzL2ltbTMyL3N0cmluZy5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUltcGxlbWVudGVkIHNvbWUgRERLIEFQSXMgLSBmYXIgZnJvbSBjb21wbGV0ZS4KCgkqIE1ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgdG8gb2xlL2xpYnV1aWQuYS4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBbHdheXMgbGluayB3aXRoIHV1aWQuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29kZXdlYXZlcnMuY29tPgoJT25seSBjYXB0dXJlIG1vdXNlIHdoZW4gYW4gaXRlbSBpcyBzZWxlY3RlZC4KCgkqIGluY2x1ZGUvbnRkZWYuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5udC5oOgoJRnJhbudvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vdmVkIHNvbWUgbWFjcm9zIGxpa2UgTlVMTCwgRkFMU0UgdG8gd2lubnQuaAoJTW92ZWQgdGhlIGFub255bW91cyBzdHJ1Y3QvdW5pb25zIHRvIHdpbm50LmgKCU1vdmVkIGNhbGxpbmcgY29udmVudGlvbiBtYWNyb3MgdG8gd2lubnQuaAoJTW92ZWQgc29tZSBiYXNpYyB0eXBlcyBsaWtlIEJPT0wsIElOVCwgTE9ORywgZXRjLiB0byB3aW5udC5oCglNb3ZlZCBIQU5ETEUgYW5kIERFQ0xBUkVfSEFORExFIHRvIHdpbm50LmgKCU1vdmVkIHN0cnVjdHVyZSBwYWNraW5nIG1hY3JvcyB0byB3aW5udC5oCgoJKiBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvd2luYmFzZS5oLCBzZXJ2ZXIvc25hcHNob3QuYzoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglOZWVkcyB0byBpbmNsdWRlIHdpbmRlZi5oLgoKCSogaW5jbHVkZS9vbGUyLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgT2xlSXNDdXJyZW50Q2xpcGJvYXJkIGFuZCBPbGVTZXRDbGlwYm9hcmQuCgoJKiBpbmNsdWRlL29iamJhc2UuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0aGUgcHJvdG90eXBlIG9mIEdldENsYXNzRmlsZS4KCgkqIHdpbmRvd3Mvd2luLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglEb24ndCByZXR1cm4gbGFzdCBhY3RpdmUgcG9wdXAgaWYgaXQgaXMgcG9pbnRpbmcgdG8gYSBkZWxldGVkIHdpbmRvdy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIG1pc2Mvb3B0aW9ucy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbXByb3ZlZCB1c2FnZSBtZXNzYWdlLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL250ZGxsL3JlZy5jLCBpbmNsdWRlL3NlcnZlci5oLCBtZW1vcnkvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJQ29udmVydGVkIGVudW1fa2V5X3ZhbHVlIHJlcXVlc3QgdG8gdGhlIG5ldyByZXF1ZXN0IG1lY2hhbmlzbS4KCgkqIG1pc2MvY2Ryb20uYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0YXR1cyBvZiBDRFJPTV9BVURJT19JTlZBTElEIHNlZW1zIHRvIG1lYW4gdGhlIGRpc2sgaXMgc3RvcHBlZC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSBkaWZmaWN1bHRpZXMgd2l0aCB0aGUgZm9udCBvbiB2ZXJ0aWNhbCB0YWJzLiBBbHNvIHBsdWdnZWQgYQoJcmVzb3VyY2UgbGVhay4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29kZXdlYXZlcnMuY29tPgoJTWFyayB3aWR0aCBhcyB2YWxpZCB3aGVuIHdlIHNlbmQgSEROX0VORFRSQUNLQS4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZ3ZXJzLmNvbT4KCUNoZWNrIHRvIHNlZSB3aGV0aGVyIGFueSBhbmNlc3RvciB3aW5kb3dzIGFyZSBkcm9wIHRhcmdldHMuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNwZWxsaW5nIGZpeC4KCgkqIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL3BlX2ltYWdlLmM6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCB0aGUgdHlwZSBvZiBGdW5jdGlvbiB0byBQRFdPUkQgYXMgb24gV2luZG93cy4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5c3AuaDoKCUZyYW7nb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHRoZSBkZWNsc3BlYyBzcGVjaWZpZXIuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIG1pc2Mvb3B0aW9ucy5jLCBtaXNjZW11L21haW4uYywgbWlzY2VtdS93aW5lLnNwZWMsIHRvb2xzL3dpbmVidWlsZC9SRUFETUUsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgVW5pY29kZSBhcHBsaWNhdGlvbnMgaW4gd2luZWJ1aWxkLgoJUmVtb3ZlZCBjdWlleGVfbm9fbWFpbiBoYWNrLgoJQXZvaWQgc3RkY2FsbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW5zaWRlIGZ1bmN0aW9ucyBiZWNhdXNlIG9mIGdjYyBidWcuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglNYXJ0aW4gUGlsa2EgPG1waWxrYUBjb2Rld2VhdmVycy5jb20+CgktIHJlZ2lzdHJ5IGxvYWRpbmcgc3BlZWQgdXAgKHJlZHVjZWQgY2xpZW50IDwtPiBzZXJ2ZXIgY29tbXVuaWNhdGlvbikKCS0gbWFrZSB0aGUgY29kZSBhIGJpdCBtb3JlIHVuZGVyc3RhbmRhYmxlCgoyMDAwLTEyLTE0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCUFkZGVkICJpZ25vcmUiIGRpcmVjdGl2ZSBmb3Igc2tpcHBpbmcgaW5kaXZpZHVhbCBzeW1ib2wgcmVzb2x1dGlvbi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjOgoJVmFzaWx5IEkuIFZvbGNoZW5rbyA8VmFzaWx5LlZvbGNoZW5rb0Btc3R1LmVkdS5ydT4KCUFkZGVkIG1vcmUgUnVzc2lhbiBzdXBwb3J0LgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1tLnNwZWMsIGRsbHMvd2lubmxzLy5jdnNpZ25vcmUsIGRsbHMvd2lubmxzL01ha2VmaWxlLmluLCBkbGxzL3dpbm5scy93aW5ubHMuYywgZGxscy93aW5ubHMvd2lubmxzLnNwZWMsIGRsbHMvd2lubmxzL3dpbm5sczMyLnNwZWM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgYSBzcGVjIGZpbGUgZm9yIDE2Yml0IGltbS4KCUFkZGVkIHNwZWMgZmlsZXMgZm9yIHdpbm5scyBhbmQgd2lubmxzMzIuCgoJKiBpbmNsdWRlL3dpbmUvd2luYmFzZTE2Lmg6CglBZGRlZCBpbmxpbmUgZGVmaW5pdGlvbiBmb3IgTWFwU0wuCgoJKiB0b29scy93aW5lc2hlbGxsaW5rOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhbiB1bnF1b3RlZCBzdHJpbmcuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgZmlsZXMvZHJpdmUuYzoKCUxhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUFkZCBzdHJlcnJvcigpIHRvIHRoZSAiQ291bGQgbm90IHN0YXQiIGFuZCAiSW52YWxpZCBwYXRoIiBzdGFydHVwCgllcnJvciBtZXNzYWdlcy4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6CglDb21tZW50ZWQgb3V0IGxhcmdlIHN0YWNrIGluaXQgbm93IHRoYXQgdGhyZWFkIHN0YWNrcyBhcmUgYXQgbGVhc3QgMU1iLgoKCSogZGxscy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlmIERpcmVjdERyYXdDcmVhdGUgZ2V0cyBwYXNzZWQgYSBJRGlyZWN0RHJhd3syLDQsN30gaW50ZXJmYWNlLCBnZXQKCXRoaXMgaW50ZXJmYWNlIGFuZCBkbyBub3QgdXNlIElEaXJlY3REcmF3LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgdGhlIG5hbWUgb2YgQVBJcyBleHBvcnRlZCBieSBvcmRpbmFsLgoKCSogZGxscy9rZXJuZWwvbmxzL2h1bi5ubHM6CglOZW1ldGggUGV0ZXIgPHFnZW5wZXRlQGdvbGQudW5pLW1pc2tvbGMuaHU+CglTb21lIE5MUyB1cGRhdGVzLgoKMjAwMC0xMi0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vYXJjaGl0ZWN0dXJlLnNnbWwsIGRvY3VtZW50YXRpb24vYXV0aG9ycy5lbnQsIGRvY3VtZW50YXRpb24vYnVncy5zZ21sLCBkb2N1bWVudGF0aW9uL2J1aWxkLnNnbWwsIGRvY3VtZW50YXRpb24vY29tcGlsaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vY29uZmlndXJpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9jb25zb2xlcy5zZ21sLCBkb2N1bWVudGF0aW9uL2N2cy1yZWdyZXNzaW9uLnNnbWwsIGRvY3VtZW50YXRpb24vZGIyaHRtbC13aW5laHEsIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9kZWZhdWx0LmRzbCwgZG9jdW1lbnRhdGlvbi9kbGxzLnNnbWwsIGRvY3VtZW50YXRpb24vZG9jdW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWwsIGRvY3VtZW50YXRpb24vZ2V0dGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL2kxOG4uc2dtbCwgZG9jdW1lbnRhdGlvbi9pbXBsZW1lbnRhdGlvbi5zZ21sLCBkb2N1bWVudGF0aW9uL2luc3RhbGxpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9pbnRyb2R1Y3Rpb24uc2dtbCwgZG9jdW1lbnRhdGlvbi9vbGUuc2dtbCwgZG9jdW1lbnRhdGlvbi9vcGVuZ2wuc2dtbCwgZG9jdW1lbnRhdGlvbi9wYWNrYWdpbmcuc2dtbCwgZG9jdW1lbnRhdGlvbi9wYXRjaGVzLnNnbWwsIGRvY3VtZW50YXRpb24vcG9ydGluZy5zZ21sLCBkb2N1bWVudGF0aW9uL3ByaW50aW5nLnNnbWwsIGRvY3VtZW50YXRpb24vcmVnaXN0cnkuc2dtbCwgZG9jdW1lbnRhdGlvbi9ydW5uaW5nLnNnbWwsIGRvY3VtZW50YXRpb24vdG9vbHMuc2dtbCwgZG9jdW1lbnRhdGlvbi93aW5lLWRvYy5zZ21sLCBkb2N1bWVudGF0aW9uL3dpbmVocS5kc2wsIGRvY3VtZW50YXRpb24vd2luZWxpYi11c2VyLnNnbWw6CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglEb2N1bWVudGF0aW9uIHVwZGF0ZS4KCgkqIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBsaWJyYXJ5L2xvYWRlci5jLCBsaWJyYXJ5L3BvcnQuYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJV29yayBhcm91bmQgZ2xpYmMgMi4xLnggZGxvcGVuIGJ1ZyAoYWdhaW4pLgoKCSogZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9kZXZpbnN0LmMsIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X3ByaXZhdGUuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBpbXBsZW1lbnRlZCBwcm9wZXIgTEREL0xESUQgaGFuZGxpbmcKCS0gaW1wbGVtZW50IEN0bCpMZGQoKSwgQ3RsW0dTXWV0TGRkUGF0aCwgR2VuSW5zdGFsbCAobm8gcmVhbCBvcGVyYXRpb25zCgkgIHlldCwgSSB3YW50IGhlbHApLCBJbnN0YWxsSGluZlNlY3Rpb24KCS0gU3R1YmJlZCBvdXQgRGlHZXRDbGFzc0RldnMxNiAobmVlZGVkIGZvciBlLmcuIE1vbmtleSBJc2xhbmQgMyA7KQoJLSBtYW55IG5ldyAuc3BlYyBzdHVicwoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglTSEdldE1hbGxvYyBtdXN0IHVzZSBNRU1DVFhfVEFTSywgb3RoZXJ3aXNlIENvR2V0TWFsbG9jIHdpbGwKCWJhZGx5IGZhaWwgd2l0aCBFX0lOVkFMSURBUkcgaW4gY2FzZSBuYXRpdmUgT0xFMzIgaXMgdXNlZC4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbWFwaS5oLCBpbmNsdWRlL21hcGlkZWZzLmg6CglGcmFu529pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgbWFwaS5oIHdpdGggdGhlIGRlZmluaXRpb25zIG5lZWRlZCBieSB0aGUgTUZDLgoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgX3VsdG93KCkgYW5kIGV4cG9ydCBbTnQvWnddUXVlcnlWb2x1bWVJbmZvcm1hdGlvbkZpbGUoKS4KCgkqIHRvb2xzL21ha2VkZXAuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcGF0aCByZXNvbHV0aW9uIGZvciBhL2IuYyBzb3VyY2UgZmlsZXMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglJbnZhbGlkYXRlIHRoZSBmb2N1cyByZWN0IHdoZW4gYSBsaXN0Ym94IGlzIHJlc2l6ZWQuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB3aW4zMi9leGNlcHQuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9ub25jbGllbnQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL2xkdC5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9zZWxlY3RvcnMuaCwgbWlzYy9sc3RyLmMsIG1zZG9zL2Rvc2FzcGkuYywgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgb2JqZWN0cy9nZGlvYmouYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL3VzZXIvcmVzb3VyY2UuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYzoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSBpbmNsdWRlcy4KCUdvdCByaWQgb2YgbGR0LmguCgoJKiBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL2NwdS5jLCBtc2Rvcy94bXMuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgd2luMzIvZGV2aWNlLmM6CglVc2UgZ2V0cGFnZXNpemUoKSBpbnN0ZWFkIG9mIFZJUlRVQUxfR2V0UGFnZVNpemUoKS4KCgkqIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2luaGVscC5jLCB3aW5kb3dzL3dpbnByb2MuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50MzMuYywgbXNkb3MvaW50NWMuYywgbXNkb3MvdnhkLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIG1pc2MvZXJyb3IuYywgbXNkb3MvZGV2aWNlcy5jLCBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oLCBpbmNsdWRlL3dpbmUvcG9ydC5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvZW52aXJvbi5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9pbnN0ci5jLCBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1lbW9yeS9zdHJpbmcuYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5zb2NrL2FzeW5jLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21hcHBpbmcuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2RpZ2l0YWx2LmgsIGluY2x1ZGUvbW1kZGsuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbm50LmgsIGRsbHMvdXNlci9sc3RyLmMsIGRsbHMvdXNlci90ZXh0LmMsIGRsbHMvdXNlci93c3ByaW50Zi5jLCBkbGxzL3ZlcnNpb24vdmVyMTYuYywgZGxscy93aW4zMnMvd2luMzJzMTYuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBkbGxzL3dpbmVwcy9lc2NhcGUuYywgZGxscy93aW5tbS9kcml2ZXIuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvaWZzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlY2xpL29sZWNsaS5zcGVjLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvZ2RpL2dkaS5zcGVjLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2dkaS93aW5nLmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL2NvbWJvLmM6CglSZXBsYWNlZCBQVFJfU0VHX1RPX0xJTiBtYWNybyBieSBleHBvcnRlZCBNYXBTTCBmdW5jdGlvbi4KCUZpeGVkIGEgZmV3IHB0ci9zZWdwdHIgbWlzbWF0Y2hlcy4KCU1vdmVkIENPTlZfUkVDVC9QT0lOVCBtYWNyb3MgdG8gd2luZ2RpMTYuaC4KCgkqIGRlYnVnZ2VyL2RlYnVnLmwsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NlcmlhbHVpL2NvbmZkbGcuYywgZGxscy93aW5zcG9vbC9pbmZvLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgd2luZG93cy93aW5wb3MuYzoKCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiB3aW5kb3dzL2RyaXZlci5jLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2RyaXZlci5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjLCBkbGxzL3dpbm1tL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTcGxpdCBkcml2ZXIgZnVuY3Rpb25zIGludG8gVVNFUiAoMTYgYml0IHBhcnQpIGFuZCBXSU5NTSAoMzIgYml0IHBhcnQpLgoJRml4ZWQgc29tZSBidWdzIGluIDE2IGJpdCBwYXJ0IGFzIHdlbGwuCglOb3cgY29ycmVjdGx5IHBhcnNpbmcgdGhlIHN5c3RlbS5pbmkgZXh0cmEgcGFyYW1ldGVycy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGNydGRsbCBjb21waWxlIHByb2JsZW0gcmVnYXJkaW5nIGZwb3NfdCBpbiBnbGliYzIuMi4KCgkqIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jb25zb2xlLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5oLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZGlyLmMsIGRsbHMvY3J0ZGxsL2V4aXQuYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL2NydGRsbC9zcGF3bi5jOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gSW1wbGVtZW50IGNvbnNvbGUgSS9PCgktIFN1cHBvcnQgdGVtcG9yYXJ5IGZpbGVzLCBhZGQgdG1wZmlsZSwgcm10bXAKCS0gc3Bhd24qIGZ1bmN0aW9uczogZml4IGFyZ3MsIGFkZCBjd2FpdCwgc2VhcmNoZW52CgoJKiBwcm9ncmFtcy9jbG9jay9tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgYSBjcmFzaCBpbiBwcm9ncmFtL2Nsb2NrLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAcnotb25saW5lLmRlPgoJRml4ZWQgY3Jhc2ggb2YgV2luWmlwIDguMCBkdWUgdG8gaW52YWxpZCBpbWFnZSBsaXN0IGhhbmRsZS4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRGVmaW5lIE5VTEwgYXMgaW4gV2luMzIuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJldHVybiB2YWx1ZXMgZnJvbSBEUlZfRU5BQkxFIHNob3VsZCBub3QgYmUgY2hlY2tlZC4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRm9ybWF0TWVzc2FnZUEgd2Fzbid0IHByb3Blcmx5IGhhbmRsaW5nIHRoZSAlbHMgbW9kaWZpZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJSW52YWxpZCBidXR0b25zIGFyZSAiaGlkZGVuIi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTW92ZSBhbGwgdmFsdWVzIG9mIFNIR2V0U3BlY2lhbEZvbGRlclBhdGhBIGludG8gYW4gYXJyYXksIGFkZCBzb21lCglvdGhlciByZWdpc3RyeSBsb2NhdGlvbnMgYW5kIGltcHJvdmUgdGhlIG51bWJlciBvZiBzdXBwb3J0ZWQgQ1NJRExzLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSWFuIFBpbGNoZXIgPHBpbGNoZXJAY29uY2VudHJpYy5uZXQ+CglDaGFuZ2VkIEZJTEVETEc5NV9Pbk9wZW4gdG8gImRvdWJsZSB0ZXJtaW5hdGUiIHRoZSByZXR1cm5lZCBzdHJpbmcgaWYKCU9GTl9BTExPV01VTFRJU0VMRUNUIGlzIHNldC4KCjIwMDAtMTItMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9tYWluLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgb2xlL29sZTJubHMuYywgcmVsYXkzMi9idWlsdGluMzIuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYzoKCUdvdCByaWQgb2YgbWFpbi5oLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmM6CglVc2UgX19BU01fR0xPQkFMX0ZVTkMgZGlyZWN0bHkgaW4gaTM4Ni1vbmx5IGNvZGUuCgoJKiBkbGxzL3VzZXIvdXNlci5zcGVjLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgd2luZG93cy9jdXJzb3JpY29uLmM6CglDaGFuZ2VkIExvYWRJbWFnZTE2IHRvIHRha2UgYW4gTFBDU1RSIGluc3RlYWQgb2YgYSBTRUdQVFIuCgoJKiBpbmNsdWRlL2RyaXZlLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDExLmMsIG1zZG9zL2ludDEzLmMsIG1zZG9zL2ludDE3LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDJmLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvdXNlci9uZXR3b3JrLmMsIGZpbGVzL2RyaXZlLmM6CglVc2UgdGhlIERSSVZFXyogQVBJIGNvbnN0YW50cyBpbnN0ZWFkIG9mIHRoZSBEUklWRVRZUEUgZW51bS4KCUNoYW5nZWQgRFJJVkVfQ0FOTk9UREVURVJNSU5FIGFuZCBEUklWRV9ET0VTTk9URVhJU1QgdG8gdXNlIHRoZQoJY29ycmVjdCBuYW1lcy4KCUNsZWFuZWQgdXAgYSBmZXcgZGVwZW5kZW5jaWVzIG9uIGludGVybmFsIGRyaXZlLmMgZnVuY3Rpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfcHJpdmF0ZS5oLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eC5jLCBkbGxzL2RpbnB1dC9qb3lzdGljay9saW51eGlucHV0LmMsIGRsbHMvZGlucHV0L2tleWJvYXJkL21haW4uYywgZGxscy9kaW5wdXQvbW91c2UvbWFpbi5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2RpbnB1dC5oOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFkZGVkIHByZWZlcmVuY2VzIHRvIGRpbnB1dCBkcml2ZXJzIChzbyB3ZSBjYW4gaGF2ZSB0d28gam95c3RpY2sKCWRyaXZlcnMpLiBJbXBsZW1lbnRlZCBhIGpveXN0aWNrIGRyaXZlciBmb3IgdGhlIExpbnV4IDIuNAoJZGV2L2lucHV0L2V2ZW50IEFQSS4KCgkqIGluY2x1ZGUvd2lubmxzLmgsIGRsbHMvY3J0ZGxsL01ha2VmaWxlLmluLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2xvY2FsZS5jLCBkbGxzL2NydGRsbC90aW1lLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBJbXBsZW1lbnRlZCBzZXRsb2NhbGUgcGFyc2luZyBhbmQgTENfVFlQRSBiZWhhdmlvci4KCS0gSW1wbGVtZW50ZWQgaXNsZWFkYnl0ZSwgc25wcmludGYuCgktIEFkZGVkIE5MUyBJc1ZhbGlkQ29kZVBhZ2UgcHJvdG90eXBlLCBtaXNjIENSVERMTCBmaXhlcy4KCgkqIGluY2x1ZGUvc2hlbGxhcGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHByb3RvdHlwZSBmb3IgU0hBcHBCYXJNZXNzYWdlLgoKCSogZGxscy91c2VyL3RleHQuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglGaXhlZCBpbmRlbnRhdGlvbiBwcm9ibGVtcyByZXN1bHRpbmcgZnJvbSBhdXRvbWF0aWMgcmVuYW1pbmcsIG90aGVyCglhZXN0aGV0aWMgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJVXNlIERyYXdUZXh0IHRvIGRpc3BsYXkgdGV4dCBpbiBob3Jpem9udGFsIHRhYnMuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzoKCU1hcnRpbiBQaWxrYSA8bXBpbGthQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZWQgdGhlIGNvbmRpdGlvbiBzbyBpdCBhbHNvIHdvcmtzIGluIGNhc2Ugd2hlbiBzc2NhbmYgcmV0dXJucyBFT0YuCgoyMDAwLTEyLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy91c2VyLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3ZlcnNpb24uYywgbWlzY2VtdS9tYWluLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvdnhkLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi9maWxlLmMsIGRsbHMvY3J0ZGxsL2V4aXQuYywgZGxscy9jcnRkbGwvc3Bhd24uYywgZGxscy9jcnRkbGwvdGltZS5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbGR0LmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYzoKCU1vdmVkIGFsbCBXaW5lIGludGVybmFsIGRlZmluaXRpb25zIG91dCBvZiBwcm9jZXNzLmguCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglPdXRwdXQgdGhlIGV4cG9ydHMgdGFibGUgaW4gYXNzZW1ibHkgY29kZSB0byBtYWtlIGl0IHBvc3NpYmxlIHRvCglleHBvcnQgQysrIG1hbmdsZWQgbmFtZXMuCgoJKiBkbGxzL250ZGxsL3J0bC5jOgoJSW1wbGVtZW50ZWQgUnRsQWNxdWlyZVBlYkxvY2sgYW5kIFJ0bFJlbGVhc2VQZWJMb2NrLgoKCSogZGxscy91c2VyL3RleHQuYzoKCUdlcmFyZCBQYXRlbCA8Z2VyYXJkLnBhdGVsQGFzaS5mcj4KCUltcGxlbWVudGVkIERyYXdUZXh0VyBhcyBVbmljb2RlIGFuZCBEcmF3VGV4dEEgYXMgY2FsbCB0byBEcmF3VGV4dFcuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgaW5jbHVkZS9jbGlwYm9hcmQuaCwgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGQgQ0ZfVU5JQ09ERVRFWFQgYXMgcHJpbWFyeSB0ZXh0IGNsaXBib2FyZCBmb3JtYXQuCglVc2UgW3gxMWRydl0uVGV4dENQIGZvciBpbnRlcmNoYW5nZSB3aXRoIFguCgoyMDAwLTEyLTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW46CglEZW5uaXMgQmpvcmtsdW5kIDxkYkB6aWdvLmRocy5vcmc+CglSZW1vdmUgb2xkIGxpbmsgYmVmb3JlIGNyZWF0aW5nIHRoZSBuZXcgb25lLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBkbGxzL3R0eWRydi93bmQuYywgZGxscy91c2VyL2NvbnRyb2xzLmgsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGluY2x1ZGUvYnV0dG9uLmgsIGluY2x1ZGUvY29tYm8uaCwgaW5jbHVkZS9kZXNrdG9wLmgsIGluY2x1ZGUvZGlhbG9nLmgsIGluY2x1ZGUvbWRpLmgsIGluY2x1ZGUvbWVudS5oLCBpbmNsdWRlL3Njcm9sbC5oLCBpbmNsdWRlL3N0YXRpYy5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmMsIE1ha2UucnVsZXMuaW4sIGNvbnRyb2xzL01ha2VmaWxlLmluLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGNvbnRyb2xzL3N0YXRpYy5jLCBjb250cm9scy93aWRnZXRzLmM6CglNb3ZlZCBtb3N0IGJ1aWx0aW4gY29udHJvbHMgc3RydWN0dXJlcyBpbnRvIHRoZWlyIHJlc3BlY3RpdmUgQyBmaWxlLgoJQ3JlYXRlZCBuZXcgY29udHJvbHMuaCBmaWxlIHByaXZhdGUgdG8gdXNlcjMyLmRsbCBhbmQgbW92ZWQgcmVtYWluaW5nCglidWlsdGluIGNvbnRyb2xzIGRlZmluaXRpb25zIHRoZXJlLgoKMjAwMC0xMi0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS9lbGZkbGwuaCwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL2xvYWRvcmRlci5jOgoJUmVtb3ZlZCBubyBsb25nZXIgdXNlZCBlbGZkbGwgbG9hZGVyLgoKCSogd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgZGxscy93aW5tbS93aW5lb3NzL21peGVyLmMsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS93bmFzcGkzMi5oLCBtaXNjL21haW4uYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBSRUFETUU6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gUkVBRE1FIHVwZGF0ZQoJLSBhZGQgb2Zmc2V0cyB0byBBU1BJIHN0cnVjdCBkZWZpbmVzCgktIHNwZWxsaW5nCgoJKiBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglEb24ndCBmYWlsIG9uIHBvaW50ZXIgYWRkcmVzcyBjaGVja2luZyB3aGVuIGZvcmVpZ24gaGVhcC4KCgkqIGluY2x1ZGUvb2xlYXV0by5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIGR1cGxpY2F0ZSBkZWZpbmVzLgoKCSogZGxscy9zaGVsbDMyL2RpYWxvZ3MuYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgTWVzc2FnZUJveCgpIHVzYWdlLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglQcmludCBDREIgYXJlYS4KCjIwMDAtMTItMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGhhbmRsZXJzIGZvciBzb21lIElNRSBtZXNzYWdlcyBpbiBEZWZXaW5kb3dQcm9jLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJR2VyYXJkIFBhdGVsIDxnZXJhcmQucGF0ZWxAYXNpLmZyPgoJRmlsZW9rc3RyaW5nIG5vdGlmaWNhdGlvbiBzaG91bGQgYmUgc2VudCB0byB0aGUgY3VzdG9tIGNoaWxkIGRpYWxvZywKCW5vdCB0byB0aGUgbWFpbiBkaWFsb2cuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3QHRyYW5zZ2FtaW5nLmNvbT4KCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRGUtc3R1YiBzaW4oKSBhbmQgY29zKCkuCglBZGQgbm9pbXBvcnQgZmxhZyB0byBzaW4oKSwgY29zKCksIGFuZCBwb3coKS4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIGluY2x1ZGUvYnV0dG9uLmgsIGluY2x1ZGUvY2xhc3MuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy93aWRnZXRzLmM6CglSZW1vdmVkIGRlcGVuZGVuY2llcyBvbiB0aGUgaW50ZXJuYWxzIG9mIHRoZSBDTEFTUyBzdHJ1Y3R1cmUuCglBZGRlZCBzdXBwb3J0IGZvciBoYXZpbmcgYm90aCBBU0NJSSBhbmQgVW5pY29kZSB3aW5kb3cgcHJvY2VkdXJlcyBmb3IKCWJ1aWx0aW4gY2xhc3Nlcy4KCgkqIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJUmVtb3ZlZCBjYWxscyB0byBXSURHRVRTX0lzQ29udHJvbC4KCgkqIGluY2x1ZGUvd2luaW5ldC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVVuY29tbWVudCBHT1BIRVJfQVRUUklCVVRFX1RZUEUgYW5kIEdvcGhlckdldEF0dHJpYnV0ZS4KCUNyZWF0ZSBBL1cgdmVyc2lvbnMgb2YgR09QSEVSX0FUVFJJQlVURV9UWVBFIGFuZAoJR09QSEVSX0FUVFJJQlVURV9FTlVNRVJBVE9SLgoKCSogaW5jbHVkZS93aW5zb2NrLmgsIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHByb3RvdHlwZSBmb3IgY2xvc2Vzb2NrZXQuCgoJKiBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgaGFuZGxpbmcgb2YgRGlhbG9nQm94SW5kaXJlY3RQYXJhbUEgcmV0dXJuIHZhbHVlLgoKMjAwMC0xMi0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgZmlsZXMvcHJvZmlsZS5jLCBSRUFETUUsIHdpbmUuaW5pOgoJQWRkZWQgYXV0b21hdGljIHRyYW5zbGF0aW9uIG9mIHRoZSBjb25maWcgZmlsZSB0byB0aGUgbmV3Cglmb3JtYXQuIFVwZGF0ZWQgZG9jdW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvd2luZS9wb3J0Lmg6CglBZGRlZCBkZWZpbmUgZm9yIFNfSVNMTksgaWYgbWlzc2luZy4KCgkqIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJRG9uJ3QgbWFrZSB0aGUgc3BlYyBmaWxlIGNvbnN0cnVjdG9ycyBzdGF0aWMgc28gdGhhdCB0aGV5IGRvbid0IGdldAoJb3B0aW1pemVkIG91dC4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUveDExZHJ2LmgsIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3QHRyYW5zZ2FtaW5nLmNvbT4KCUdhdnJpZWwgU3RhdGUgPGdhdkB0cmFuc2dhbWluZy5jb20+CglESUIgc2VjdGlvbiBpbXByb3ZlbWVudHM7IFVwZGF0ZURJQlNlY3Rpb24gaGFzIGJlZW4gcmVwbGFjZWQgd2l0aAoJTG9ja0RJQlNlY3Rpb24gYW5kIFVubG9ja0RJQlNlY3Rpb24sIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5LgoJRElCX1N0YXR1c18qIGlzIG5vdyBkcml2ZXItaW5kZXBlbmRlbnQsIGFuZCB0aGVyZSdzIGEgbmV3CglESUJfU3RhdHVzX0F1eE1vZC4gQmV0dGVyIGhhbmRsaW5nIG9mIERJQiBzdXJmYWNlcyB3aXRoIG5vbnN0YW5kYXJkCglwaXRjaC4gU2xpZ2h0IG9wdGltaXphdGlvbiBvZiBESUJzZWN0aW9uLT5kaXNwbGF5IEJpdEJsdC4KCgkqIGRsbHMva2VybmVsL25scy9oZWIubmxzLCBtaXNjL29wdGlvbnMuYywgdG9vbHMvd3JjL3V0aWxzLmMsIGRsbHMva2VybmVsL2xvY2FsZV9yYy5yYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglBZGQgYmFzaWMgTkxTIGluZm9ybWF0aW9uIG5lZWRlZCBmb3IgSGVicmV3LgoKCSogZGxscy9rZXJuZWwvbmxzL2N5bS5ubHM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglXZWxzaCBuZWVkcyBpc284ODU5LTE0LgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIFNlbmROb3RpZnlNZXNzYWdlKCkgZm9yIFdNX1NZTkNQQUlOVC4KCgkqIGRsbHMvbnRkbGwvbnQuYzoKCUphbWVzIEp1cmFuIDxqYW1lc2p1cmFuQGFsdW1uaS5wc3UuZWR1PgoJUmV0dXJuIGEgbWF4aW11bSByZWdpc3RyeSBzaXplIG9mIDMyIE1CIGluIE50UXVlcnlTeXN0ZW1JbmZvcm1hdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc6CglBZGRlZCBzYW1wbGUgY29uZmlnIGZpbGUgaW4gdGhlIG5ldyBmb3JtYXQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVNldCAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeT0yIGZsYWcgaWYgc3VwcG9ydGVkIHRvIGF2b2lkIHdhc3RlZnVsCglzdGFjayBhbGlnbm1lbnRzLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgcHJpbnRzIGxpbmUgbnVtYmVyIGZvciAneC5kbGwgaW1wb3J0ZWQgYnV0IG5vIHN5bWJvbHMgdXNlZCcgd2FybmluZy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglVcGRhdGUgaW50ZXJuYWwgY29udHJvbHMgb24gV01fV0lORE9XUE9TQ0hBTkdFRC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9leHRfZGVidWdnZXIuYywgTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9leHRfZGVidWdnZXIuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJQnVpbGQgdGhlIGRlYnVnZ2VyIGFzIGEgLnNvLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGxndWlkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGluY2x1ZGUvZHBsYXkuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvdXVpZC5jLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvb2xlb2JqLmMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJQ3JlYXRlZCBhIHNtYWxsIHN0YXRpYyBsaWJyYXJ5IGluIG9sZS9saWJ1dWlkLmEgdGhhdCBjb250YWlucyBhbGwgdGhlCglVVUlEIGRlZmluaXRpb25zICh3aXRoIHRoZSBoZWxwIG9mIEZyYW5jb2lzIEdvdWdldCkuCgoJKiB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGlmMTYzMi9NYWtlZmlsZS5pbiwgbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvTWFrZXByb2cucnVsZXMuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluOgoJVXNlIGxpYndpbmUgYW5kIGxpYndpbmVfdW5pY29kZSBkaXJlY3RseSBmcm9tIHRoZWlyIGJ1aWxkIGRpcmVjdG9yeQoJaW5zdGVhZCBvZiB1c2luZyBzeW1saW5rcy4KCgkqIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3RzX3NoYXBlLmgsIGluY2x1ZGUvdHNfeGY4NmRnYS5oLCBpbmNsdWRlL3RzX3hmODZkZ2EyLmgsIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3RzX3hwbS5oLCBpbmNsdWRlL3RzX3hyZXNvdXJjZS5oLCBpbmNsdWRlL3RzX3hzaG0uaCwgaW5jbHVkZS90c194dXRpbC5oLCBpbmNsdWRlL3RzX3h2aWRlby5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS8uY3ZzaWdub3JlLCB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvbG9ja2luZy5jLCB0c3gxMS90c19zaGFwZS5jLCB0c3gxMS90c194Zjg2ZGdhLmMsIHRzeDExL3RzX3hmODZkZ2EyLmMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCB0c3gxMS90c194bGliLmMsIHRzeDExL3RzX3hwbS5jLCB0c3gxMS90c194cmVzb3VyY2UuYywgdHN4MTEvdHNfeHNobS5jLCB0c3gxMS90c194dXRpbC5jLCB0c3gxMS90c194dmlkZW8uYywgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQnVpbGQgdHN4MTEgbGF5ZXIgYXMgYSBzZXBhcmF0ZSBzaGFyZWQgbGlicmFyeS4KCjIwMDAtMTItMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgaWYxNjMyL2J1aWx0aW4uYywgbGlicmFyeS9sb2FkZXIuYywgbG9hZGVyL2VsZi5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJQWx3YXlzIHBhc3MgbG93ZXItY2FzZSBmaWxlbmFtZXMgdG8gd2luZV9kbGxfbG9hZCgpLgoJQ2xlYXIgZGxlcnJvcigpIGJlZm9yZSBhbmQgYWZ0ZXIgY2FsbHMgdG8gZGxvcGVuL2Rsc3ltIHRvIHdvcmsgYXJvdW5kCglhIGdsaWJjIGJ1ZyAodGhhbmtzIHRvIEphbWVzIEFiYmF0aWVsbG8gZm9yIHRyYWNraW5nIHRoZSBidWcpLgoKCSogZGxscy9rZXJuZWwvbmxzL3NyYi5ubHMsIHRvb2xzL3dyYy91dGlscy5jOgoJTmVyaWp1cyBCYWxpdW5hcyA8bmVyaWp1c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglGaXhlZCBTZXJiaWFuIGxhbmd1YWdlIGNvZGUgcGFnZS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBwcm9ibGVtIHdoZXJlIHRoZSBzdHJpbmcgaW4gYSBjb21ibyBib3ggZmxpY2tlcnMgaWYgeW91CglyYXBpZGx5IHJlc2V0IHRoZSBjb250ZW50IGFuZCB0aGVuIHJlcGxhY2UgdGhlIGNvbnRlbnQuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQmV0dGVyIGVycm9yIG1lc3NhZ2UgZm9yIGZvcndhcmRzLgoKCSogZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzIucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1poLnJjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIENoaW5lc2UgcmVzb3VyY2VzLgoKCSogaW5jbHVkZS9pbW0uaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5pdGlvbnMuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglDb21waWxlIGZpeCBmb3IgZ2NjIDIuNy4yLjMuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglVc2UgdGhlIGFwcHJvcmlhdGUgY29tbWFuZCBmb3IgY29tYmluaW5nIC5vIGZpbGVzLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB0aGUgY29kZSBkdXBsaWNhdGlvbi4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCURvbid0IGZvcmdldCB0byBtYXAgdGhlIG1lc3NhZ2UgaW4gV0lOUFJPQ19NYXBNc2cxNlRvMzJXKCkuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBkbGVycm9yKCkgY2hlY2sgdG8gdXNlIHN0cnN0cigpLgoKCSogZGxscy9NYWtlZmlsZS5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglVc2UgQExJQkVYVEAgaW5zdGVhZCBvZiAuc28gZm9yIHRoZSBpbnRlci1kbGxzIGRlcGVuZGVuY2llcy4KCgkqIHRvb2xzL21ha2VkZXAuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CgktIG92ZXJ3cml0ZSAocmF0aGVyIHRoYW4gYXBwZW5kKSB0aGUgb3V0cHV0IGZpbGUgaWYgd2UgaGF2ZSBubyBzZXBhcmF0b3IKCS0gYXZvaWQgb3V0cHV0IGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvaW5wdXQuYzoKCUtlbiBDb2xlbWFuIDxrZW5fY29sZW1hbkBpbmFtZS5jb20+CglBZGRlZCBhIGZpcnN0LWN1dCB2ZXJzaW9uIG9mIE1hcFZpcnR1YWxLZXlFeFcoKSB0aGF0IGhhcyB0aGUgc2FtZQoJZnVuY3Rpb25hbGl0eSAoYW5kIGxpbWl0YXRpb25zKSBhcyB0aGUgQU5TSSB2ZXJzaW9uLgoKCSogdG9vbHMvd2luZWluc3RhbGw6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCXdpbmVpbnN0YWxsIGRpZG4ndCBjcmVhdGUgdGhlIGRlZmF1bHQgbm8td2luZG93cyBkaXJlY3RvcnkgL2MKCXdoZW4ganVzdCBwcmVzc2luZyBlbnRlci4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIGNvcnJlY3QgbnVtYmVyIG9mIGNvbG9ybWFwIGVudHJpZXMgbG9va2VkIGF0IGluIEdldERJQkNvbG9yVGFibGUuCgktIGNvcnJlY3QgbnVtYmVyIG9mIGNvbG9ybWFwIGVudHJpZXMgcHJvY2Vzc2VkIGluIFNldERJQkNvbG9yVGFibGUuCgoJKiBkbGxzL2tlcm5lbC9ubHMvbmxiLm5scywgZGxscy9rZXJuZWwvbmxzL25sZC5ubHM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJU29tZXMgZml4ZXMgZm9yIER1dGNoIGxvY2FsZXMuCgoJKiBkbGxzL2ltbTMyL2ltbTMyLnNwZWM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc29tZSBzdHVicy4KCjIwMDAtMTItMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMDEyMDIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMTItMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvbWFwcGluZy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglDaGVjayB0aGUgYXR0cmlidXRlcyBvZiB0aGUgKmN1cnJlbnQqIHNlY3Rpb24sIG5vdCBvbmx5IHRoZSBhdHRyaWJ1dGVzCglvZiB0aGUgKmZpcnN0KiBzZWN0aW9uLi4uCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUZpeGVkIFdJTlBST0NfR2V0UHRyKCkgdG8gYWx3YXlzIHBhc3MgdGhlIHN0YXJ0IG9mIHRoZSBibG9jayB0bwoJSGVhcFZhbGlkYXRlKCkuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJRGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIGlmIGxvYWRpbmcgYSBXaW5lbGliIGFwcCBmYWlsZWQgKHN1Z2dlc3RlZCBieQoJRnJhbmNvaXMgR291Z2V0KS4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RleGVjdXRlYnVmZmVyLmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGluY2x1ZGUvZDNkdHlwZXMuaCwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIHRoZSBEVU1NWVVOSU9OTkFNRSBtYWNyb3Mgc28gdGhhdCB0aGUgaGVhZGVycyBjYW4gYmUgdXNlZCBpbgoJV2luZWxpYi4KCgkqIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQVNDSUktb25seSB2ZXJzaW9uIG9mIHRvdXBwZXIsIHRvbG93ZXIsIHN0cmNhc2VjbXAgYW5kIHRoZSBsaWtlCglmb3IgZmlsZSBhbmQgbW9kdWxlIEkvTy4KCgkqIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzb2NrMzIuc3BlYywgaW5jbHVkZS93aW5zb2NrMi5oOgoJVXNlIGlvY3Rsc29ja2V0KCkgaW5zdGVhZCBvZiBpb2N0bCgpIHNvIHRoYXQgd2UgY2FuIGltcG9ydCB3czJfMzIuZGxsCglhZ2FpbiAodW50ZXN0ZWQpLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvbnRkbGwvbWlzYy5jLCBsb2FkZXIvcmVzb3VyY2UuYywgd2luMzIvY29uc29sZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZC9tb2RpZmllZCBkb2N1bWVudGF0aW9uIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9rZXJuZWwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvd2luc29jay5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93cHJvY3MuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpbGVPcGVuRGxnUHJvYzk1OiBub3RpZnkgYXBwbGljYXRpb24gb2YgY2hhbmdlZCBzZWxlY3Rpb24gYWZ0ZXIKCWZpbGxpbmcgdGVtcGxhdGUuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgbWlzYy9jZHJvbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWdzIHdoZW4gdHJheSB3YXMgb3Blbi4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNldmVyYWwgYWRkaXRpb25hbCB0by9mcm9tIHVuaWNvZGUgbWVzc2FnZSBtYXBwaW5ncy4KCgkqIHByb2dyYW1zL01ha2Vwcm9nLnJ1bGVzLmluLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluOgoJQWx3YXlzIHB1dCB0aGUgZGxsIGNvbnN0cnVjdG9yIGluIHRoZSAuaW5pdCBzZWN0aW9uLCBhbmQgbGlrZSB0aGUKCS5zcGVjLm8gZmlsZSBmaXJzdCB0byBlbnN1cmUgY29ycmVjdCBjYWxsaW5nIG9yZGVyIG9mIHRoZSBjb25zdHJ1Y3RvcnMuCgoJKiBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxNS5jLCBvYmplY3RzL2JydXNoLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvZmlsZS5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvcmVnaXN0cnkuYywgd2luZS5pbmk6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgbWlzY2VsbGFuZW91cyB0eXBvcywgc3ludGFjdGljIGFuZCBncmFtbWF0aWNhbCBlcnJvcnMuCgoJKiBERVZFTE9QRVJTLUhJTlRTLCBpbmNsdWRlL2RwbGF5LmgsIGluY2x1ZGUvZHBsb2JieS5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbm5scy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRoZSBjYXNlIG9mICJXaW5lbGliIi4KCgkqIGRvY3VtZW50YXRpb24vd2luZW1ha2VyLm1hbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIFdpbmVsaWIgY2FzZS4KCVRoZSBsaW5raW5nIGFzcGVjdHMgaGF2ZSBiZWVuIHNvbHZlZCBieSB0aGUgbGFzdCB3aW5lYnVpbGQgdXBkYXRlIC0+CglyZW1vdmVkIGZyb20gdGhlIHRvZG8gbGlzdC4KCVRoZSBjb25maWd1cmUgc2NyaXB0IGhhcyBiZWVuIHVwZGF0ZWQgLT4gcmVtb3ZlZCBmcm9tIHRoZSB0b2RvIGxpc3QuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSWYgdGhlcmUgaXMgYSBzaW5nbGUgdGFyZ2V0LCBpdCBzaG91bGQgYWxzbyBnZXQgdGhlICdwcm9qZWN0X3NldHRpbmdzCglzb3VyY2VzJy4KCUlmIGEgc3ViZGlyZWN0b3J5IGlzIGNhbGxlZCAnaW5jbHVkZScgdGhlbiBhZGQgaXQgdG8gdGhlIGluY2x1ZGUgcGF0aC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUluY2x1ZGUgY29uZmlnLmguCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzZXZlcmFsIGNsaXBib2FyZCBmb3JtYXRzLgoKCSogTWFrZS5ydWxlcy5pbjoKCURlbm5pcyBCavZya2x1bmQgPGRiQHppZ28uZGhzLm9yZz4KCUNvbXBpbGUgZml4IGZvciBidWlsZGluZyB3aW5lIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUludGVybmV0Q2xvc2VIYW5kbGUgZGlkbid0IHJldHVybiBUUlVFIGluIGFsbCBhcHByb3ByaWF0ZSBjYXNlcy4KCgkqIHdpbjMyL2RldmljZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIC0td2ludmVyIG50NDAgaGludCB0byBWeEQgZXJyb3IgbWVzc2FnZS4KCgkqIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvaW1tMzIvaW1tMzIuc3BlYzoKCUhpZGVub3JpIFRha2VzaGltYTxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIHNvbWUgc3R1YnMuCgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJLSBUYWtlIHRoZSBtb3VzZSBjYXB0dXJlIG9uIGEgV01fTkNSQlVUVE9ORE9XTiBvbiB0aGUgY2FwdGlvbiBiYXIsCgkgIHJlbGVhc2UgaXQgb24gYSBXTV9SQlVUVE9OVVAKCS0gRG9uJ3Qgc2VuZCBXTV9DT05URVhUTUVOVSBvbiBhIFdNX05DUkJVVFRPTlVQCgktIFVzZSBwYXJlbnQtcmVsYXRpdmUgY29vcmRpbmF0ZXMgd2hlbiBjYWxsaW5nIE5DX0hhbmRsZU5DSGl0VGVzdAoKMjAwMC0xMi0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvdGV4dC5jLCBvbGUvb2xlMm5scy5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9zeXN0ZW0uYywgbXNkb3MvaW50MTAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2RjLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBmaWxlcy9kcml2ZS5jLCBncmFwaGljcy9kaXNwZGliLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdXNlci9sc3RyLmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9rZXJuZWwvY29tbS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZC9tb2RpZmllZCBkb2N1bWVudGF0aW9uIGZvciBmdW5jdGlvbiBhcmd1bWVudHMuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgbG9hZGVyL25lL21vZHVsZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBXaW4xNiBkb2N1bWVudGF0aW9uIG5vdCBmaXhlZCBiZWNhdXNlIG9mIGEgYnVnIGluIHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMvd2luaW5ldC9mdHAuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbWlzYy9yZWdpc3RyeS5jLCBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2dkaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9jb21wb2JqLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBGaXhlZCBhIGJ1ZyBjb25jZXJuaW5nIFdpbjE2IGRvY3VtZW50YXRpb24uCgktIEZpeGVkIHNvbWUgYnVncyBjb25jZXJuaW5nIGFyZ3VtZW50IGRvY3VtZW50YXRpb24KCS0gTWlub3IgQVBJIGZpbGVzIHVwZGF0ZQoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgdG9vbHMvY3ZkdW1wL2N2ZHVtcC5oLCB0b29scy9mbnQyYmRmLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbnBvcy5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGlmMTYzMi90aHVuay5jLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgbWlzYy92ZXJzaW9uLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvdnhkLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHJlbGF5MzIvc25vb3AuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jcnRkbGwvdGltZS5jLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy91c2VyL2V4dGljb24uYywgZGxscy91c2VyL21vdXNlLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGVidWdnZXIvbXNjLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGluY2x1ZGVzLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9uZWV4ZS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2Lmg6CglNb3ZlZCB1c2VmdWwgTkUgZm9ybWF0IGRlZmluaXRpb25zIHRvIHdpbmJhc2UxNi5oLgoKCSogaW5jbHVkZS93aW5udC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTW9kaWZpZWQgd2luZWJ1aWxkIHRvIHVzZSB0aGUgX19BU01fRlVOQyBtYWNybyBmb3IgZ3JlYXRlciBwb3J0YWJpbGl0eS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dwcm9jcy5zcGVjLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludGVycnVwdHMuYzoKCU1vdmVkIHRoZSBmZXcgcmVtYWluaW5nIGZ1bmN0aW9ucyBpbiB3cHJvY3MuZGxsIHRvIGtlcm5lbC5kbGwuCglObyBsb25nZXIgbG9hZCB3cHJvY3MuZGxsIHVuY29uZGl0aW9uYWxseS4KCVJlc3RvcmVkIGRlZmF1bHQgaW50ZXJydXB0IGhhbmRsZXIgYmVoYXZpb3IgKHJlcG9ydGVkIGJ5IEFuZHJlYXMgTW9ocikuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dpbnNvY2suc3BlYywgZGxscy93c29jazMyL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYzoKCUZpbmlzaGVkIHNlcGFyYXRpb24gb2Ygc2hlbGwzMiBhbmQgd3NvY2szMi4KCgkqIGxpYnJhcnkvcG9ydC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lL3BvcnQuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglTdXBwbHkgZHVtbXkgZ2V0cmxpbWl0IGlmIGFic2VudC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzZWdzdHIgdG8gc3RyIHByb3RvLgoKCSogZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvdHlwZXMuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2xlYW5lZCB1cCBpbnRlcm5hbCB0eXBlcyBkZWZpbml0aW9uLgoKCSogZGVidWdnZXIvc3RhYnMuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wcm92ZWQgc3RhYnMgbG9hZGluZyAobm93IHVzaW5nIHJlY3Vyc2l2ZSBwYXJzaW5nLCByZXF1aXJlZCBieSBzdGFicwoJZ2VuZXJhdGVkIGJ5IGxhdGVzdCBnY2MgdmVyc2lvbnMpLgoKCSogZGVidWdnZXIvZXhwci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXb3JrIGFyb3VuZCBmb3IgZGVyZWYgaXNzdWVzIChsZWFzdCBpbXBhY3Qgc29sdXRpb24gdGFrZW4sIGV2ZW4gaWYgaXNzdWVzIHJlbWFpbikuCgoJKiBkbGxzL2tlcm5lbC9ubHMvY2h0Lm5scywgZGxscy9rZXJuZWwvbmxzL2N6ZS5ubHMsIGRsbHMva2VybmVsL25scy9kYW4ubmxzLCBkbGxzL2tlcm5lbC9ubHMvZmluLm5scywgZGxscy9rZXJuZWwvbmxzL3Ryay5ubHMsIGRsbHMva2VybmVsL25scy96aGkubmxzOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUEgbnVtYmVyIG9mIGFkZGl0aW9ucyB0byB0aGUgbmxzIGZpbGVzLiBBbHNvIG9uZSBjb3JyZWN0aW9uLCB3ZSBoYWQKCTg5NSBmb3IgdGhlIEN6ZWNoIGRlZmF1bHQgY29kZXBhZ2UgYnV0IGFjY29yZGluZyB0byBtaWNyb3NvZnQgaXQKCXNob3VsZCBiZSA4NTIuCgoJKiB0b29scy93aW5lbGF1bmNoZXIuaW46CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglNYWtlIHdpbmVsYXVuY2hlciB3b3JrIGJldHRlciBmb3Igc291cmNlIHRyZWUgYnVpbGRzLgoJTWFrZSB3aW5lbGF1bmNoZXIgZGV0ZWN0IHRoZSBsYWNrIG9mIGEgfi8ud2luZXJjIGZpbGUgYW5kIHByb21wdCB0aGUKCXVzZXIgYWJvdXQgaXQuCglQYXNzIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzIGEgYml0IG1vcmUgZ3JhY2lvdXNseTsgaW1wcm92ZXMKCWludGVyYWN0aW9uIHdpdGggZ21jIGFuZCBrZm0uCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgdGhlIEtERSAyIGJldGEgYW5kIGZpbmFsIG1ldGhvZCBvZiBzcGVjaWZ5aW5nIHN5c3RyYXkgd2luZG93cy4KCjIwMDAtMTEtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9saXN0Ym94LmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglEb24ndCB1cGRhdGUgc2Nyb2xsYmFycyB3aGVuIHByb2Nlc3NpbmcgV01fREVTVFJPWS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJQ2hlY2sgZm9yIE5VTEwgaGFuZGxlIGJlZm9yZSBjYWxsaW5nIEhlYXBWYWxpZGF0ZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZW1ha2VyLm1hbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglCcmluZyB0aGUgbWFuIHBhZ2UgaW4gbGluZSB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB3aW5lbWFrZXIuCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJLSBJbiBpbnRlcmFjdGl2ZSBtb2RlLCBkb24ndCBpZ25vcmUgaW52YWxpZCBvcHRpb25zLCBhc2sgdGhlIHVzZXIgYWdhaW4KCS0gVXBwZXJjYXNlIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYWZ0ZXIgYWxsIChoaW50OiAkKFNSQzouYz0ubykpCgktIFBhc3MgdGhlIGdsb2JhbCBkZWZpbmVzIGFuZCBpbmNsdWRlIHBhdGggdG8gV1JDCgktIEJhc2UgdGhlIGNsZWFudXAgb24gdGhlIE9CSlMgdmFyaWFibGUgc28gdGhhdCBpdCB3b3JrcyBldmVuIGlmIHRoZQoJICBzb3VyY2VzIGFyZSBpbiBhIHN1YmRpcmVjdG9yeQoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCS0gRml4IHRoZSBoYW5kbGluZyBvZiByZWxhdGl2ZSBpbmNsdWRlL2xpYnJhcnkgcGF0aHMKCS0gSW4gaW50ZXJhY3RpdmUgbW9kZSwgcHJpbnQgIi4vIiBmb3IgdGhlIHRvcCBsZXZlbCBkaXJlY3RvcnkgcmF0aGVyCgkgIHRoYW4gYW4gZW1wdHkgc3RyaW5nCgktIFdlIGRvbid0IG5lZWQgdG8gZm9yY2UgYSBzcGFjZSBiZWZvcmUgYXNzaWdubWVudHMKCS0gQWxpZ24gVE9QU1JDRElSICYgY28gbGlrZSBhbGwgdGhlIG90aGVyIGFzc2lnbmVtZW50cwoJLSBDb21waWxlIERsbHMgZmlyc3QgKGRlcGVuZGVuY2llcyB3b3VsZCBkbyBpdCBtb3JlIG9yIGxlc3MgYW55d2F5KQoJLSBXb3JkaW5nIGNoYW5nZSBpbiB0aGUgdXNhZ2UKCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaS5jLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIG1pc2MvcmVnaXN0cnkuYywgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2dkaS9NYWtlZmlsZS5pbjoKCUZpbmlzaGVkIHNlcGFyYXRpb24gb2YgYWR2YXBpMzIuCgoJKiBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWM6CglGaW5pc2hlZCBzZXBhcmF0aW9uIG9mIG9sZTMyLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSW1wbGVtZW50IGJldHRlciB2ZXJzaW9uIG9mIERQQV9NZXJnZS4KCgkqIGRsbHMvd2luaW5ldC9mdHAuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkIG1pc3NpbmcgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4gdG8gZ2V0IHN0cnVjdCBpbl9hZGRyIG9uIGFsbCBwbGF0Zm9ybXMuCgoJKiBtZW1vcnkvaGVhcC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBjcmFzaCBpbiBVbk1hcExTIGZvciBwb2ludGVycyBub3QgYmVsb25naW5nIHRvIHRoZSBzZWdwdHIgaGVhcC4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21pZGltYXAvLmN2c2lnbm9yZSwgZGxscy93aW5tbS93YXZlbWFwLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2luZW9zcy8uY3ZzaWdub3JlLCBkbGxzL3dpbnNvY2svLmN2c2lnbm9yZSwgZGxscy93aW5zcG9vbC8uY3ZzaWdub3JlLCBkbGxzL3dvdzMyLy5jdnNpZ25vcmUsIGRsbHMvd3NvY2szMi8uY3ZzaWdub3JlLCBkbGxzL3gxMWRydi8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy92ZXJzaW9uLy5jdnNpZ25vcmUsIGRsbHMvd2luMzJzLy5jdnNpZ25vcmUsIGRsbHMvd2luYXNwaS8uY3ZzaWdub3JlLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLCBkbGxzL3dpbmluZXQvLmN2c2lnbm9yZSwgZGxscy93aW5tbS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL2pveXN0aWNrLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vbWNpYW5pbS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaWF2aS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaWNkYS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21jaXNlcS8uY3ZzaWdub3JlLCBkbGxzL29wZW5nbDMyLy5jdnNpZ25vcmUsIGRsbHMvcHNhcGkvLmN2c2lnbm9yZSwgZGxscy9yYXNhcGkzMi8uY3ZzaWdub3JlLCBkbGxzL3JpY2hlZGl0Ly5jdnNpZ25vcmUsIGRsbHMvcnBjcnQ0Ly5jdnNpZ25vcmUsIGRsbHMvc2VyaWFsdWkvLmN2c2lnbm9yZSwgZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLCBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGZvbGRlci8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvLmN2c2lnbm9yZSwgZGxscy90YXBpMzIvLmN2c2lnbm9yZSwgZGxscy90dHlkcnYvLmN2c2lnbm9yZSwgZGxscy91cmxtb24vLmN2c2lnbm9yZSwgZGxscy9tcHIvLmN2c2lnbm9yZSwgZGxscy9tc2FjbS8uY3ZzaWdub3JlLCBkbGxzL21zbmV0MzIvLmN2c2lnbm9yZSwgZGxscy9tc3ZpZGVvLy5jdnNpZ25vcmUsIGRsbHMvbnRkbGwvLmN2c2lnbm9yZSwgZGxscy9vZGJjMzIvLmN2c2lnbm9yZSwgZGxscy9vbGUzMi8uY3ZzaWdub3JlLCBkbGxzL29sZWF1dDMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlY2xpLy5jdnNpZ25vcmUsIGRsbHMvb2xlZGxnLy5jdnNpZ25vcmUsIGRsbHMvb2xlcHJvMzIvLmN2c2lnbm9yZSwgZGxscy9vbGVzdnIvLmN2c2lnbm9yZSwgZGxscy9jcnRkbGwvLmN2c2lnbm9yZSwgZGxscy9kY2ltYW4zMi8uY3ZzaWdub3JlLCBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsIGRsbHMvZGlucHV0Ly5jdnNpZ25vcmUsIGRsbHMvZHBsYXkvLmN2c2lnbm9yZSwgZGxscy9kcGxheXgvLmN2c2lnbm9yZSwgZGxscy9kc291bmQvLmN2c2lnbm9yZSwgZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9pY21wLy5jdnNpZ25vcmUsIGRsbHMvaW1hZ2VobHAvLmN2c2lnbm9yZSwgZGxscy9pbW0zMi8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2x6ZXhwYW5kLy5jdnNpZ25vcmUsIGRsbHMvYWR2YXBpMzIvLmN2c2lnbm9yZSwgZGxscy9hdmlmaWwzMi8uY3ZzaWdub3JlLCBkbGxzL2NvbWN0bDMyLy5jdnNpZ25vcmUsIGRsbHMvY29tbWRsZy8uY3ZzaWdub3JlOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCVJlbW92ZSBsaWJYWFhYLnNvLjEuMCBsaW5lcyBmcm9tIC5jdnNpZ25vcmUgZmlsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJRmluaXNoZWQgc2VwYXJhdGlvbiBvZiBjb21jbHQzMiBhbmQgY29tZGxnMzIuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL2dycGZpbGUuYywgcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmM6CglGaXhlZCBwcm9nbWFuIGludGVybmFsIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgaXQgbGlrZSB0aGUgb3RoZXIKCXByb2dyYW1zLgoKCSogZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJRXhwb3J0IGEgZmV3IDE2LWJpdCBmdW5jdGlvbnMgbmVlZGVkIGJ5IGhpZ2hlci1sZXZlbCBkbGxzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmM6CglFeHBvcnQgdGhlIHdpbmUgc2VydmVyIGZ1bmN0aW9ucyBmcm9tIG50ZGxsLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3Rvb2xoZWxwLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQgbmV3IG9wdGlvbiAtLWRvY3VtZW50YXRpb24tYXJndW1lbnRzCgktIE1pbm9yIEFQSSBmaWxlcyB1cGRhdGUKCgkqIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuYywgZGxscy9yaWNoZWRpdC9yZWFkZXIuYywgZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBkbGxzL3JpY2hlZGl0L3J0Zi5oLCBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC91dGlsaXR5LmMsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS91bmtud24uaCwgaW5jbHVkZS93aW5kb3dzLmgsIG1zZG9zL2ludDExLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGVhdXQzMi9jb25ucHQuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRG9uJ3QgaW5jbHVkZSB3aW5kb3dzLmggaW50ZXJuYWxseS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhbGlhcyBjYXBhYmlsaXR5IHRvIC0td2ludmVyLgoJd2luMjAwMCBpcyB0aGUgb2ZmaWNpYWwgdmFsdWUuCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS93aW5iYXNlLmgsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbjoKCVVzZSB0aGUgSEVBUF9XSU5FX1NFR1BUUiBmbGFnIHRvIHNwZWNpZnkgYWxsb2NhdGlvbnMgb24gdGhlIHNlZ3B0ciBoZWFwLgoJQWRkZWQgYSBoYWNrIGluIE1hcExTIHRvIHJlY29nbml6ZSBzdWNoIGFsbG9jYXRpb25zIGFuZCB1c2UgdGhlIGhlYXAKCXNlbGVjdG9yIGluIHRoaXMgY2FzZS4KCgkqIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jOgoJUmVtb3ZlZCBkZXBlbmRlbmNpZXMgb24gV2luZSBpbnRlcm5hbCBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCUFsd2F5cyBpbml0aWFsaXplIG1zZzE2IGFuZCB3cGFyYW0xNiBpbiBXSU5QUk9DX01hcE1zZzMyV1RvMTYuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvbG9hZG9yZGVyLmgsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHdpbmUuaW5pOgoJUmVtb3ZlZCAiZWxmZGxsIiBsb2FkIG9yZGVyIG9wdGlvbiBhbmQgdXBkYXRlZCBkb2N1bWVudGF0aW9uLgoKMjAwMC0xMS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2RldmljZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIHNlcnZlci9wdHJhY2UuYywgc2VydmVyL3JlcXVlc3QuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglEbyBub3QgaW5jbHVkZSBzeXMvcHRyYWNlLmggYW5kIHN5cy91c2VyLmggdW5jb25kaXRpb25hbGx5LgoJT3RoZXIgcG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZGMuYzoKCUJyaWFuIFRlYWd1ZSA8YnRlYWd1ZUByaWNlLmVkdT4KCUFkZCBhIHN0dWIgZm9yIHRoZSBDQVBTMSBjYXBhYmlsaXR5IGluIEdldERldmljZUNhcHMuCglEZWZpbmUgdGhlIENBUFMxIGJpdCBmbGFncyBpbiB3aW5nZGkuaAoJTWFrZSB2YXJpb3VzIGNhbGxzIHRvIEdldERldmljZUNhcHMgaW4gRExMUyB1c2UgI2RlZmluZWQgdmFsdWVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL3VzZXIvbW91c2UuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtaXNjL3N5c3RlbS5jLCBtc2Rvcy9kcG1pLmMsIHNjaGVkdWxlci90aHJlYWQuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmM6CglSZW5hbWVkIENhbGxUbzE2KiBmdW5jdGlvbnMgdG8gd2luZV9jYWxsX3RvXzE2KiBhbmQgZXhwb3J0IHRoZW0gZnJvbQoJa2VybmVsMzIuc3BlYy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGdlcmFyZC5wYXRlbEBhc2kuZnI+CglGaXhlZCByZXR1cm5lZCBsZW5ndGggb2YgZmlsZXMuCgoJKiBjb25maWd1cmUuaW4sIGRlYnVnZ2VyL3N0YWJzLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZToKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglEbyBub3QgdXNlIGEub3V0LmguCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tcHIvd25ldC5jLCBkbGxzL3dpbm1tL21jaWFuaW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmMsIGRsbHMvd2lubW0vbWNpYXZpL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWF2aS9tY2lhdmkuYywgZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGluY2x1ZGUvd2luZ2RpLmgsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglDbGVhbmVkIHVwIHNvbWUgbW9yZSBkZXBlbmRlbmNpZXMgb24gV2luZSBpbnRlcm5hbCBmdW5jdGlvbnMuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvcG9ydC5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgbHN0YXQgdG8gcG9ydC5jLgoKCSogd2luMzIvZGV2aWNlLmM6CglLZWVzIFNjaG9lbm1ha2VycyA8a2Vlc3NAbWlsbHRyb25pY3MuY29tPgoJQWRkZWQgSEFTUCBkZXZpY2Ugc3R1Yi4KCgkqIG9iamVjdHMvZ2Rpb2JqLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgdGhlIHNpemUgb2YgdGhlIGxhcmdlX2hhbmRsZXMgYXJyYXkuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmRydi5zcGVjOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUZpeGVkIGEgZmV3IGNvbXBpbGF0aW9uIHdhcm5pbmdzLgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvc3RhdGljLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVdNX1NFVFRFWFQgc2hvdWxkIHJldHVybiBUUlVFIG9uIHN1Y2Nlc3MuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglWaXJ0dWFsUXVlcnkgc2hvdWxkIHJldHVybiAwIGZvciBhbGwgYWRkcmVzc2VzID49IDB4YzAwMDAwMDAuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJT3duZXJkYXRhIGxpc3R2aWV3cyB3ZXJlIG5vdCBjbGVhcmluZyBwcmV2aW91c2x5IHNlbGVjdGVkIGl0ZW1zIHdoZW4gYQoJbmV3IGl0ZW0gaXMgc2V0IGFzIHNlbGVjdGVkIHVzaW5nIFNldEl0ZW0gYW5kIHRoZSBsaXN0dmlldyBoYXMKCUxWSVNfU0lOR0xFU0VMLgoKMjAwMC0xMS0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJV2Ugd2VyZSByZXR1cm5pbmcgY2hhcmFjdGVycyBmb3IgdmFyaW91cyBDVFJMICsgU3ltYm9sIGtleXN0cm9rZXMKCXdoaWNoIHNob3VsZCBub3QgcmV0dXJuIGNoYXJhY3RlcnMuCgoJKiBtaXNjL2NwdS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCWxpbnV4LTIuNC4wLXRlc3QxMCBub3cgY2FsbHMgJ2ZsYWdzJyBhcyAnZmVhdHVyZXMnLgoKCSogd2luZG93cy93aW4uYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJU2xpZ2h0bHkgcmVhcnJhbmdlIFdJTjE2L1dJTjMyQS9XSU4zMiB3aW5kb3cgY3JlYXRpb24uCgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvd2lkZ2V0cy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglNYWRlIGJ1dHRvbiBjb250cm9sIGZ1bGx5IHVuaWNvZGUgYXdhcmUuCgoJKiBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBmaXggY3Jhc2ggaW4gU0VUVVBYX1RyYW5zbGF0ZUxESUQoKQoJLSBpbXBsZW1lbnQgY3VzdG9tIExESUQgbG9va3VwCgoJKiBtaXNjL2Nkcm9tLmMsIG1pc2MvY3B1LmMsIG1pc2MvdmVyc2lvbi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLCBvbGUvb2xlMm5scy5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2luaXQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW5wcm9jLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3RleHQuYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS93aW5lL3dpbmVzdHJpbmcuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvY29udmVydC5jLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1lbW9yeS9zdHJpbmcuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3Nodl9pdGVtX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvbXByL3duZXQuYywgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9wY21jb252ZXJ0ZXIuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgY29udHJvbHMvbWVudS5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaS5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvY29tYm9leC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmM6CglHb3QgcmlkIG9mIHRoZSBXaW5lIGludGVybmFsIGxzdHJjcHkqIGZ1bmN0aW9ucyBhbmQgb2Ygd2luZXN0cmluZy5oLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbjoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJVXBkYXRlZCBtYW4gcGFnZS4KCgkqIG1lbW9yeS9oZWFwLmMsIGluY2x1ZGUvaGVhcC5oOgoJTWFkZSBIRUFQX3N0cmR1cCogZnVuY3Rpb25zIGlubGluZSAodGVtcG9yYXJ5KS4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCB3aW4zMi9uZXdmbnMuYzoKCU1vdmVkIEVudW1Qb3J0c0EgdG8gZGxscy93aW5zcG9vbC4KCjIwMDAtMTEtMjcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiAqLyouYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZXF1aXJlIHtERUNMQVJFLERFRkFVTFR9X0RFQlVHX0NIQU5ORUwgc3RhdGVtZW50cyB0byBlbmQgaW4gYSA7CgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYzoKCVNldCBkZWJ1Z2dpbmcgb3B0aW9uIGJhc2VkIG9uIE5PX1RSQUNFX01TR1MgZGVmaW5lLiBPbmx5IG91dHB1dCAzMi1iaXQKCXJlbGF5IHN0dWJzIGlmIGRlYnVnZ2luZyBpcyBvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2lubnQuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglUZXN0IGlmIHdlIG5lZWQgdG8gcHV0IHRoZSAudHlwZSBkaXJlY3RpdmUgaW5zaWRlIGEgLmRlZiBkaXJlY3RpdmUuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJ1bmNhdGUgZGVzdCBibGl0IHJlY3RhbmdsZSBkb3duIHRvIHN1cmZhY2Ugc2l6ZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdBUk4oKSBhYm91dCBtaXNzaW5nIC9kZXYvc2VxdWVuY2VyLCBpdCdzIHRvbyBjb25mdXNpbmcgZm9yIG5ld2JpZXMuCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsc28gbWVudGlvbiB4cG0tZGV2ZWwgaW4gdGhlIGVycm9yIG1zZy4KCgkqIG1pc2MvY3B1LmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkIEZsb2F0aW5nUG9pbnRQcm9jZXNzb3IgZW1wdHkgZW50cnkgdG8gdGhlIHJlZ2lzdHJ5LgoKCSogY29udHJvbHMvbWVudS5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJV2hlbiBwcm9jZXNzaW5nIG1vdXNlIG1lc3NhZ2VzIGluIE1FTlVfVHJhY2tNZW51LCB1c2UgdGhlIGNvb3JkaW5hdGVzCglpbiBsUGFyYW0gaW5zdGVhZCBvZiB0aG9zZSBpbiBNU0c6OnB0LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglEaXNwbGF5IHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB3aGVuIGltcG9ydCBmYWlsZWQuCgoJKiBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy91c2VyL25ldHdvcmsuYywgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL3czMnNrZXJuZWwuYywgZGxscy93aW4zMnMvdzMyc2tybmwuc3BlYywgZGxscy93aW4zMnMvdzMyc3lzLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL21wci93bmV0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvc3RhdGljLmM6CglGaXhlZCBhIGZldyBkZXBlbmRlbmNpZXMgb24gMTYtYml0IG9yIGludGVybmFsIGZ1bmN0aW9ucy4gRml4ZWQgYSBmZXcKCXdhcm5pbmdzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbm1tL21taW8uYzoKCUZpeGVkIFNFR1BUUl9HRVQgdXNhZ2UuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglBZGRlZCBlbnRyeSBmb3IgUHJpdmF0ZUV4dHJhY3RJY29uc0EuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy92eGQuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL2x6ZXhwYW5kX21haW4uYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJSW1wbGVtZW50ZWQgRG9zRmlsZUhhbmRsZVRvV2luMzJIYW5kbGUsIFdpbjMySGFuZGxlVG9Eb3NGaWxlSGFuZGxlIGFuZAoJRGlzcG9zZUxaMzJIYW5kbGUgYW5kIHVzZSB0aGVtIHRvIHJlcGxhY2UgZmlsZS5jIGludGVybmFsIGZ1bmN0aW9ucy4KCVJlbmFtZWQgV09XKiBmdW5jdGlvbnMgaW50byBLMzJXT1cqLgoKCSogZGxscy9rZXJuZWwvdG9vbGhlbHAuc3BlYzoKCUFkZGVkIGVudHJ5IGZvciBUZXJtaW5hdGVBcHAxNi4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL3dpbi5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZmlsZXMvZGlyZWN0b3J5LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Jlc291cmNlLmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maW5kZGxnLmMsIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBkbGxzL3VzZXIvdXNlci5zcGVjOgoJQ2hhbmdlZCBHZXRQcm9jQWRkcmVzczE2IGFuZCAxNi1iaXQgcmVzb3VyY2UgZnVuY3Rpb25zIHRvIHRha2Ugbm9ybWFsCglwb2ludGVycyBpbnN0ZWFkIG9mIFNFR1BUUnMuCglSZW1vdmVkIFdJTjE2X0dldFRlbXBEcml2ZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIG1pc2Mvb3B0aW9ucy5jLCBtaXNjL3ZlcnNpb24uYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gYWRkZWQgd2ludmVyIHNldHRpbmdzIG50MmssIHdpbjMwIGFuZCB3aW4yMCAoeWVzLCBzb21lIHJhcmUgcHJvZ3JhbXMgbmVlZCB0aGlzKQoJICBhbmQgKmRvY3VtZW50KiBpdCAod2luOTggd2FzIG5vdCBkb2N1bWVudGVkIHByZXZpb3VzbHkpCgktIE9hQnVpbGRWZXJzaW9uOiBhZGQgdmFsdWUgZm9yIE5UNCBTUDYKCS0gc3BlbGxpbmcgZml4ZXMKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jcnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpOgoJSm9uIEdyaWZmaXRocyA8am9uX3BfZ3JpZmZpdGhzQHlhaG9vLmNvbT4KCS0gY29uZmlndXJlIHRlc3RzIGZvciBmaW5pdGUoKS9mcGNsYXNzKCksIGZpeGVzIEJTRCBjb21waWxlCgktIHdpbmFwaV9jaGVjayB1cGRhdGVzLCBmaXggZXJybm8gaW4gbW9yZSBtYXRoIGNhbGxzCgoJKiB3aW4zMi9leGNlcHQuYywgaW5jbHVkZS90b29saGVscC5oLCBsb2FkZXIvdGFzay5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBUZXJtaW5hdGVBcHAgbmVlZGVkIGZvciBEQmFzZSA1LjAuCglNYWRlIEZhdGFsQXBwRXhpdDE2IGhvbm9yIHRoZSBTRU1fTk9HUEZBVUxURVJST1JCT1ggZXJyb3JfbW9kZSBmbGFnLgoKCSogY29udHJvbHMvZWRpdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglHZW5lcmFsIGNsZWFuIHVwIG9mIHRoZSBlZGl0IGNvbnRyb2w6IHJlbW92ZWQgdHJhbnNmZXIgb2YgdW51c2VkCgl2YXJpYWJsZXMsIGZpeGVkIHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaGVzLgoKCSogdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBpbml0IGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgbWFpbi4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJR2xvYmFsQWxsb2MgYXMgR2xvYmFsQWxsb2MxNiBzaG91bGQgcm91bmQgc2l6ZSB0byAzMi4KCUNhbGwgU2V0TGFzdEVycm9yIGluIEdsb2JhbExvY2suCgoyMDAwLTExLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW4zMnMvd2luMzJzMTYuYywgbWVtb3J5L3NlbGVjdG9yLmM6CglNb3ZlZCBVVFNlbGVjdG9yT2Zmc2V0VG9MaW5lYXIgYW5kIFVUTGluZWFyVG9TZWxlY3Rvck9mZnNldCB0bwoJZGxscy93aW4zMnMuCgoJKiBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL2luZnBhcnNlLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4MTYuaDoKCVJlbW92ZWQgZGVwZW5kZW5jeSBvbiAxNi1iaXQgZmlsZSBJL08gZnVuY3Rpb25zLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3dzcHJpbnRmLmMsIGRsbHMvd2lubW0vbWNpLmMsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2Mvd3NwcmludGYuYywgbXNkb3MvaW50MTEuYywgb2xlL29sZTJubHMuYywgZGVidWdnZXIvbW9kdWxlLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jOgoJTW92ZWQgd3NwcmludGYgZnVuY3Rpb25zIHRvIGRsbHMvdXNlci4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGRyYXcgc2Nyb2xsYmFycyBpZiB0aGVpciBjbGllbnQgcmVjdGFuZ2xlIGlzIGVtcHR5LgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZ25vcmUgU09MX1NPQ0tFVC9TT19ERUJVRyBzZXRzb2Nrb3B0KCkgY2FsbHMuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgc3RyYW5nZSBjaGVja2ogZm9yICFmaWxlbmFtZSwgc28gd2UgZG9uJ3QgZ2V0IHNlY3Rpb24gTlVMTAoJYWNjZXNzZXMgbGF0ZXIuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglSZXBsYWNlZCB1X2NoYXIvdV9zaG9ydC91X2xvbmcgYnkgQllURS9XT1JEL0RXT1JEIGZvciBpbmNyZWFzZWQgcG9ydGFiaWxpdHkuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUNvcnJlY3RlZCBkZWZhdWx0IHZhbHVlcyB3aXRoIGhlbHAgZnJvbSBVbHJpY2ggQ3pla2FsbGEuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgdG9vbHMvd2luZWJ1aWxkL1JFQURNRSwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBZGRlZCBlbnRyeSBwb2ludCBmbGFncyAtbm9pbXBvcnQsIC1ub3JlbGF5LCAtcmV0NjQgYW5kIC1pMzg2LgoJUmVwbGFjZWQgJ2J5dGUnLCAnd29yZCcgYW5kICdsb25nJyBieSAndmFyaWFibGUnIGFuZCBtYWRlIGl0IHdvcmsgZm9yCglXaW4zMiB0b28uCglNYWRlIHBhcnNlciBtb3JlIHJvYnVzdCBhZ2FpbnN0IHRydW5jYXRlZCBmaWxlcy4KCgkqIGluY2x1ZGUvY2Ryb20uaCwgaW5jbHVkZS9lbGZkbGwuaCwgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYywgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oLCBkbGxzL3dpbm1tL3dpbmVvc3Mvb3NzLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTWFrZSBzdXJlIGFsbCBmaWxlcyB1c2luZyBjb25maWcuaCBjb25zdGFudHMgYWN0dWFsbHkgI2luY2x1ZGUgImNvbmZpZy5oIgoKCSogZGxscy9vbGUzMi9vbGUzMl9tYWluLmMsIGRsbHMvZGNpbWFuMzIvZGNpbWFuX21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2F2aWZpbGUuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZGNpbWFuMzIuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUaGUgX193aW5lX2NhbGxfZnJvbV8xNl8gY2FsbHMgaW4gdGhlIGltcG9ydCB0YWJsZSBzaG91bGQgdXNlIGEgdmFsaWQKCXNlZ21lbnQgZm9yIGRlcmVmZXJlbmNpbmcgdGhlaXIgcG9pbnRlciAodXNpbmcgQ1MpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy93aW5pbmV0L3V0aWxpdHkuYywgZGxscy93aW5zb2NrL2FzeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5zb2NrLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgY2hlY2tpbmcgZm9yIG5ldGRiLmguCglEb24ndCBpbmNsdWRlIGFycGEvaW5ldC5oIGFuZCBzeXMvc29ja2V0LmggaWYgc3lzdGVtIGRvZXNuJ3QgaGF2ZSB0aGVzZSBoZWFkZXJzLgoKCSogaW5jbHVkZS94MTFkcnYuaCwgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCURvIG5vdCBjb21waWxlIGNvZGUgdGhhdCBtYWtlcyB1c2Ugb2YgdGhlIFggU2htIGV4dGVuc2lvbi4KCjIwMDAtMTEtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2tlcm5lbC9kZWJ1Z2dlci5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL3dpbm50Lmg6CglNb3ZlZCBHRVRfSVAgb3V0IG9mIHdpbm50LmguCgoJKiBwcm9ncmFtcy9wcm9nbWFuL0NoYW5nZUxvZywgcHJvZ3JhbXMvcHJvZ21hbi9SdS5yYywgcHJvZ3JhbXMvcHJvZ21hbi9kaWFsb2cuYywgcHJvZ3JhbXMvcHJvZ21hbi9yc3JjLnJjOgoJVmFzaWx5IEkuIFZvbGNoZW5rbyA8Rm9vZFRlY2hub2xvZ2lzdEBwaXNlbS5uZXQ+CglBZGRlZCBSdXNzaWFuIGxhbmd1YWdlIHN1cHBvcnQuCglGaXhlZCBidWcgb2YgZmlsZSBicm93c2luZyBvcGVyYXRpb24gKGZpbGVwYXRoIGxlbmd0aCBjb3JyZWN0ZWQpLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIHRvb2xzL2JpbjJyZXMuYywgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGNoZWNraW5nIGZvciBtbWFwLgoKCSogdG9vbHMvd3JjL3V0aWxzLmM6CglBZGRlZCBhIGZldyBtaXNzaW5nIGxhbmd1YWdlcy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZV9yYy5yYywgZGxscy9rZXJuZWwvbmxzL2hrZy5ubHMsIGRsbHMva2VybmVsL25scy9wcmMubmxzLCBkbGxzL2tlcm5lbC9ubHMvc2dwLm5sczoKCU5lcmlqdXMgQmFsaXVuYXMgPG5lcmlqdXNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoJQWRkZWQgbWlzc2luZyBsb2NhbGVzIHRvIGxvY2FsZV9yYy5yYy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJTWFkZSBYMTFEUlZfRElCX0dldEltYWdlQml0c18xNiBhd2FyZSBvZiA1NjUgRElCcy4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJLSBzdXBwb3J0IGZvciBhcmd1bWVudHMgd2l0aCByZWZlcmVuY2VkIHR5cGVzCgktIGltcG9ydGVkIHR5cGUgbGlicmFyaWVzCgktIGRpc3BpbnRlcmZhY2VzCgktIGR1YWwgaW50ZXJmYWNlcwoJLSByZWYgY291bnQgcHJvYmxlbXMKCS0gbWVtb3J5IGxlYWtzIGZpeGVkCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglnbGliYzIuMiBuZWVkcyBfX1VTRV9JU09DOTkgZm9yIEZQX05BTiBhbmQgaXNmaW5pdGUoKS4KCgkqIHdpbjMyL2NvbnNvbGUuYywgaW5jbHVkZS93aW5jb24uaCwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCUZpeGVkIEdldExhcmdlc3RDb25zb2xlV2luZG93U2l6ZSByZXR1cm4gdHlwZSBmb3IgV2luZWxpYiBhcHBzLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc3RyaW5nLmMsIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWM6CglBZGRlZCBhIGZldyBmb3J3YXJkcy4KCgkqIGRsbHMvdXNlci9taXNjLmMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCUZpeGVkIHR5cG9zLgoKCSogaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kaWIuYywgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydi5oLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIEdldC9TZXRESUJDb2xvclRhYmxlLgoKCSogZGxscy9rZXJuZWwvbmxzL2x0aC5ubHMsIGRsbHMva2VybmVsL25scy9sdmkubmxzOgoJTmVyaWp1cyBCYWxpdW5hcyA8bmVyaWp1c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglDb21wbGV0ZWQgbHZpLm5scyBhbmQgbHRoLm5scy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDaGVjayB3aGV0aGVyIHNlbmRlclEgaXMgTlVMTCBiZWZvcmUgdHJ5aW5nIHRvIGxvY2sgaXQuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvc3RyaW5nLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBGaXggY3R5cGUoKSwgbWFrZSBpcyogZnVuY3Rpb25zIGJpbmFyeSBjb21wYXRpYmxlCgktIEFkZCAxMyBmdW5jdGlvbnMsIHNldCBlcnJubyBpbiBtYXRoIGNhbGxzCgoJKiBkbGxzL3dpbmluZXQvZnRwLmMsIGlmMTYzMi9yZWxheS5jLCB3aW5kb3dzL3VzZXIuYywgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL250ZGxsLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3JwY3J0NC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zZXR1cGFwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91cmxtb24uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjazoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGluY2x1ZGUvY29tY2F0LmgsIGluY2x1ZGUvcnBjLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSW5jbHVkZSB0aGUgc2FtZSBoZWFkZXJzIGFzIG9uIFdpbmRvd3MuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb2JqX3ByaXZhdGUuaCwgZGxscy9vbGUzMi9maWxlbW9uaWtlci5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgaW5jbHVkZS9jb21wb2JqLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJY29tcG9iai5oIGlzIGEgc3lub255bSBmb3Igb2JqYmFzZS5oCglNb3ZlZCBhbGwgdGhlIG90aGVyIGNvbnRlbnRzIHRvIGRsbHMvb2xlMzIvY29tcG9ial9wcml2YXRlLmgKCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG5vdGlmaWNhdGlvbiBmb3JtYXQgaGFuZGxpbmcuCgoJKiBjb250cm9scy9saXN0Ym94LmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgV2luMTYgYmVoYXZpb3VyIG9mIERETF9EUklWRVMgaW4gRGxnRGlyTGlzdC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIFRvVW5pY29kZSBUUkFDRSBtZXNzYWdlLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9maWxlLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBBZGQgbWF0aCBjYWxsczogc2NhbGIsIGZwY2xhc3MsIG5leHRhZnRlciwgbG9nYiwgX0NJKgoJLSBBZGQgZnV0aW1lLCB1dGltZSwgcHVyZWNhbGwsIGdldHBpZAoKCSogZGxscy9udGRsbC9taXNjLmM6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJTlRETExfX0NJcG93IHJldHVybnMgZG91YmxlLCBub3QgTE9ORy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIFJlYWQgYWxsIHRoZSBmcmFnbWVudHMgYXZhaWxhYmxlLCBub3Qgb25seSBvbmUgZnJhZ21lbnQgYmVmb3JlCgkgIGdvaW5nIGJhY2sgdG8gc2xlZXAuCgktIFVzZSBTTkRDVExfRFNQX1NFVFRSSUdHRVIgaW9jdGwgY29tbWFuZCB0byB0cmlnZ2VyIHRoZSBzdGFydCB0aGUKCSAgcmVjb3JkaW5nLiBJZiB0aGlzIGNvbW1hbmQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlLCByZWFkIDQKCSAgYnl0ZXMgaW4gdGhlIHNvdW5kIGRldmljZSBpbnN0ZWFkLgoKCSogd2luZG93cy9kaWFsb2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJQWRkIHN1cHBvcnQgZm9yIG5hdGlvbmFsIGNoYXJhY3RlcnMgYXMgYWNjZWxlcmF0b3JzIGluIGRpYWxvZ3MuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGR0aW1vc2hrb3ZAY29kZXdlYXZlcnMuY29tPgoJQWx3YXlzIGdlbmVyYXRlIHVuaWNvZGUgQ0hBUiBtZXNzYWdlcy4KCgkqIGRsbHMvb2xlMzIvaGdsb2JhbHN0cmVhbS5jLCBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYzoKCUZpeGVkIHdhcm5pbmdzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZHJpdmVyLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGxscy9vbGUzMi9pZnMuYywgbXNkb3MvZG9zbWVtLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvc21ldGljcy4KCgkqIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBHZGlTZWVHZGlEbzE2LgoKCSogaW5jbHVkZS93aW5udC5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIGRvdWJsZSBBTllTSVpFX0FSUkFZIGRlZmluZS4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXaGVuIGF1dG9kZXRlY3RlZCB0aGUgTUZDIHdlcmUgc3RpbGwgZ2VuZXJhdGluZyB3cmFwcGVycy4KCUZpeGVkIGluY29uc2lzdGVuY2llcyBpbiB0aGUgdXNlIG9mICdubycgaW4gdGhlIG9wdGlvbiBuYW1lcy4KCVVwZGF0ZWQgdGhlIE1GQyBsaW5rLWxpc3QgKGNvbmZpZ3VyZS5pbikuCglNYWRlIHRoZSBNYWtlZmlsZS5pbiBsYXlvdXQgbW9yZSByZWFkYWJsZS4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJVXBkYXRlIGNvbW1lbnRzLCBjbGVhbnVwIHdhcm5pbmcgbWVzc2FnZXMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDExLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHNlcnZlci90cmFjZS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUluY2x1ZGUgY29uZmlnLmggaW4gZmlsZXMgdGhhdCB0ZXN0IGZvciBjb25zdGFudHMgZGVmaW5lZCBpbiBpdC4KCgkqIGRsbHMva2VybmVsL2NvbW0uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglBdm9pZCB1c2luZyBUSU9DTV8qIGNvbnN0YW50cyBpZiBub3QgYXZhaWxhYmxlLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJRml4ZWQgdHlwbyBpbiBtYWNybyBJQ09NX01FVEhPRDExIHBhcmFtZXRlciBsaXN0LgoKCSogZGxscy9pbWFnZWhscC9tb2RpZnkuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgUEUgZmlsZSBjaGVja3N1bSBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCBjYWxscyB0byBpbnRlcm5hbCAobm9uLWV4cG9ydGVkKSB3aW5lIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2xvY2FsZV9yYy5yYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUgdHVya2lzaCBsb2NhbGUuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYzoKCVVscmljaCBDemVrYWxsYSA8dWN6ZWthbGxhQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGZvciB6ZXJvLWxlbmd0aCBzdHJpbmcgc2VsZWN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVjemVrYWxsYUBjb2Rld2VhdmVycy5jb20+CglTZW5kIEhETl9JVEVNQ0hBTkdJTkcgYW5kIEhETl9JVEVNQ0hBTkdFRCB3aGVuIHJlc2l6aW5nLgoKCSogb2xlL29sZTJubHMuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ29tcGFyZVN0cmluZ1cgcmV0dXJuZWQgd3JvbmcgcmVzdWx0cyBzb21ldGltZXMuCgoJKiBvbGUvTWFrZWZpbGUuaW46CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJV2Ugbm8gbG9uZ2VyIGhhdmUgYW4gb2xlL25scyBkaXJlY3RvcnkuCgoJKiBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvcmVnLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgb3JkaW5hbCBzdHVicywgaW1wbGVtZW50ZWQgU0hEZWxldGVWYWx1ZSosIFNIU2V0VmFsdWUqLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUltcGxlbWVudGVkIFNlbmROb3RpZnlNZXNzYWdlKCkuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJTWFkZSB3aW5laW5zdGFsbCBhIGJpdCBtb3JlIHZlcmJvc2UuCgoJKiBkbGxzL2dkaS93aW5nLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV2luRyB3YXMgd3JpdHRlbiBmb3IgOGJwcCBESUJzLCBzbyBzb21lIGFwcHMgYXNzdW1lIHRoYXQsIHNvIGFsd2F5cwoJcmVjb21tZW5kIDhicHAsIHJlZ2FyZGxlc3Mgb2YgdGhlIGFjdHVhbCBkaXNwbGF5IGRlcHRoLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0UGl4ZWwgbmVlZHMgdG8gcmV0dXJuIENMUl9JTlZBTElEIGlmIG5vdCBpbnNpZGUgY2xpcHBpbmcgcmVnaW9uLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyX21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgT0xFMzIuRGxsUmVnaXN0ZXJTZXJ2ZXIgc3R1Yi4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5zcGVjOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSb3V0ZWQgYSBjb3VwbGUgb2YgMTYtYml0IGF2aWZpbGUuZGxsIGhhbmRsZXJzIHRvIHRoZSAzMi1iaXQKCWhhbmRsZXJzLi4uIHdlbGwsIHdvcmtzIGZvciBDaXZpbGl6YXRpb24gSUkuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHBvdygpIGZvcndhcmQuCgoJKiByZWxheTMyL3Nub29wLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvbid0IHRlc3QgIUhJV09SRCB2YWx1ZXMgZm9yIHBvaW50ZXJuZXNzLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglGaXhlZCBjb21waWxhdGlvbiB3YXJuaW5nIG9uIEN5Z3dpbi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNdWx0aUJ5dGVUb1dpZGVDaGFyKCkgcmV0dXJucyBjaGFyYWN0ZXJzLCBub3QgYnl0ZXMuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFZUX0VNUFRZIHRvIFZUX0JTVFIgdHlwZSBjb2VyY2lvbi4KCgkqIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgcHJvdG90eXBlcyBmb3IgT2xle0csU31ldEF1dG9Db252ZXJ0LCBMSGFzaFZhbE9mTmFtZVN5c3ssQX0uCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSAlbHMgc2FtZSBhcyAlcy4KCgkqIGRsbHMvZGNpbWFuMzIvZGNpbWFuX21haW4uYywgZGxscy9kY2ltYW4zMi9kY2ltYW4zMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHViIGZvciBEQ0lPcGVuUHJvdmlkZXIuCgoyMDAwLTExLTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9vbGVzdnIzMi5zcGVjLCBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvTWFrZWZpbGUuaW46CglBdm9pZCBsaW5raW5nIHdpdGggbnRkbGwgd2hlcmUgcG9zc2libGUuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvZGlyLmMsIGRsbHMvY3J0ZGxsL2ZpbGUuYywgZGxscy9jcnRkbGwvc3Bhd24uYzoKCVJlbW92ZWQgY2FsbHMgdG8gV2luZSBpbnRlcm5hbCBmdW5jdGlvbnMuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9zaGx3YXBpL3NobHdhcGkuc3BlYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgZGxscy93aW5pbmV0L2Z0cC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCVJlcGxhY2VkIEhFQVBfc3RyZHVwKiBhbmQgbHN0cmNweW5BdG9XIGNhbGxzIGJ5IGV4cG9ydGVkIGZ1bmN0aW9ucy4KCjIwMDAtMTEtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2dkaW9iai5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5oZWxwLmMsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBkbGxzL2tlcm5lbC9rZXJuZWwuc3BlYywgZGxscy9rZXJuZWwvc3luYy5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93b3d0aHVuay5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBkbGxzL3dpbjMycy93aW4zMnMxNi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLCBmaWxlcy9kb3NfZnMuYywgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvc3lzbGV2ZWwuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luc29jay5oOgoJTW92ZWQgc3RhbmRhcmQgc3lzbGV2ZWwgQVBJcyBkZWNsYXJhdGlvbiB0byB3aW5iYXNlLmguCglVc2UgZXhwb3J0ZWQgc3lzbGV2ZWwgZnVuY3Rpb24gd2hlcmV2ZXIgcG9zc2libGUuCglNb3ZlZCBTRUdQVFIgZGVjbGFyYXRpb24gdG8gd2luZGVmMTYuaC4KCgkqIGluY2x1ZGUvd2lucHJvYy5oLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy93aW5wcm9jLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1hcHBpbmcgdG8vZnJvbSB1bmljb2RlIGZvciBXTV9DSEFSLCBXTV9ERUFEQ0hBUiwgV01fU1lTQ0hBUiwKCVdNX1NZU0RFQURDSEFSIG1lc3NhZ2VzLgoKCSogdG9vbHMvd2luZWJ1aWxkL21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWxsb3cgdGhlIHVzZXIgdG8gc3RpY2sgdGhlIG9wdGlvbiBhbmQgaXRzIGFyZ3VtZW50IHRvZ2V0aGVyLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvY3J0ZGxsL21lbW9yeS5jLCBkbGxzL2NydGRsbC9zdHJpbmcuYywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGk6CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBDb21wbGV0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGVhcCBmdW5jdGlvbnMKCS0gRm9yd2FyZCBqMCxqMSxqbix5MCx5MSx5biBtYXRoIGNhbGxzIHRvIGxpYmMKCS0gQWRkIHN0cm5leHRjLCBwYXNzIHRleHQgZmxhZyBpbiBjcmVhdCwgd2luYXBpX2NoZWNrIGZpeGVzCgoJKiBjb250cm9scy93aWRnZXRzLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCVByZXBhcmUgc3dpdGNoaW5nIHRvIHVuaWNvZGUgb2YgYnVpbHRpbiB3aWRnZXRzLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglJbmNyZWFzZSBudW1iZXIgb2YgcGFyYW1ldGVycyBwb3NzaWJsZSBmb3IgSUNPTV8qIG1hY3JvcyB0byAxMS4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCVNraXAgZGlyZWN0b3JpZXMgd2hlbiBsb2FkaW5nIGRlYnVnIHN5bWJvbHMuCgoJKiBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbXByb3ZlZCBpbnRlcm5hbCBtb2R1bGUgaGFuZGxpbmcgKG1vZHVsZSBub3cgaGF2ZSBhIHNpemUsIG1hcCBvZgoJbG9hZGVkIG1vZHVsZSBpcyBjbGVhcmVyLCBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLCBzZXBlcmF0ZWQgbW9kdWxlCglsb2FkaW5nIGNvZGUgZnJvbSBzeW1ib2wgZXh0cmFjdGlvbikuCgoJKiBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZHRpbW9zaGtvdkBjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgcmVkdW5kYW50IGluY2x1ZGVzLgoJRWxpbWluYXRlIHVzZSBvZiBVU0VSIGludGVybmFsIHN0cnVjdHVyZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglVc2UgaW50ZXJuYWwgdW5pY29kZSBzdHJpbmdzLgoJQWRkZWQgdW5pY29kZSBtZXNzYWdlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglFcmljIEtvaGwgPGVrb2hsQGNvZGV3ZWF2ZXJzLmNvbT4KCU5ldyB1bmljb2RlIHN1cHBvcnQgZnVuY3Rpb25zLgoKCSogdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUluY2x1ZGUgY29uZmlnLmguCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2ltcGxpZmllZCByZWcgaGFuZGxpbmcgaW4gQ29HZXRDbGFzc09iamVjdCwgZG8gbm90IHVzZSBSZWdRdWVyeVZhbHVlVy4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVnU2V0VmFsdWVFeDE2IG1pZ2h0IGdldCBwYXNzZWQgMCBhcyBjb3VudCBvZiBkYXRhYnl0ZXMsIGRldGVybWluZQoJc3RyaW5nIGxlbmd0aCBmb3Igb3Vyc2VsdmVzIGluIHRoaXMgY2FzZS4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3Vua253bi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCU1hdGNoIHRoZSBXaW5kb3dzIGhlYWRlciBkZXBlbmRlbmNpZXMuCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglTTV9BUlJBTkdFIGlzIEFSV19ISURFLCBpLmUuIDgKCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEaXN0aW5ndWlzaCBiZXR3ZWVuIElNUE9SVFMgYW5kIExJQlJBUklFUy4KCVJlbmFtZWQgTElCUkFSSUVTIHRvIERMTFMgdG8gYXZvaWQgY29uZnVzaW9uIHdpdGggdGhlIGFib3ZlLCByZW5hbWVkCglQUk9HUkFNUyB0byBFWEVTIHRvIG1hdGNoLgoJQWRkZWQgYSAnLWknIG9wdGlvbiBmb3IgaW1wb3J0aW5nIGEgV2luZWxpYiBsaWJyYXJ5LiAnLWwnIGlzIHN0aWxsCgl0aGVyZSBidXQgaXMgb25seSB1c2VkIGZvciBsaW5raW5nIGluIHRoZSBVbml4IHNlbnNlLgoJRGlzYWJsZWQgdGhlICd3cmFwcGVyJyBvcHRpb25zLiBJdCB3aWxsIGJlIHJlbW92ZWQgYXMgYSBzZXBhcmF0ZQoJcGF0Y2guCglObyBsb25nZXIgbGluayB3aXRoIGFsbCBvZiBXaW5lJ3MgbGlicmFyaWVzLgoJSW1wb3J0IHRoZSBzYW1lIGRlZmF1bHQgc2V0IG9mIGRsbHMgYXMgVmlzdWFsIFN0dWRpby4KCUF2b2lkIGR1cGxpY2F0ZSBpbXBvcnRzIHdoZW4gZ2VuZXJhdGluZyB0aGUgLnNwZWMgZmlsZS4KCVVwZGF0ZWQgdGhlIHdheSB3aW5lYnVpbGQgaXMgdXNlZC4KCUxpbmsgYXBwbGljYXRpb25zIGFzIGxpYnJhcmllcyBhbmQgY3JlYXRlIGEgc3ltYm9saWMgbGluayB0byB3aW5lLgoJRGV0ZWN0IHdoZXJlICd3aW5lJyBpcyBsb2NhdGVkIGluIHRoZSBjb25maWd1cmUgc2NyaXB0LgoJUmVtb3ZlZCB1bnVzZWQvbm8gbG9uZ2VyIHVzZWQgdmFyaWFibGVzOiBETExGTEFHUywgWExJQiwgWF9ETExTLAoJWEZJTEVTLCBETExTIChjb25maWd1cmUuaW4pCglVcGRhdGVkIExEU0hBUkVEIEFORCBMRERMTEZMQUdTIGRldGVjdGlvbiAoY29uZmlndXJlLmluKS4KCVJlbW92ZWQgdGhlIHJ1bGVzIHBlcnRhaW5pbmcgdG8gc3BlYyBmaWxlcyBmcm9tIHRoZSBNYWtlLnJ1bGVzLgoJVXBkYXRlZCB0aGUgY2xlYW4gY29tbWFuZCB0byByZW1vdmUgdGhlIHN5bWJvbGljIGxpbmtzLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHNvbWUgcnBjcnQ0IHN0dWJzLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsbG93IGRlc2t0b3A9TiBpbiB0aGUgW3gxMWRydl0gc2VjdGlvbiBvZiAud2luZXJjLCBpbnN0ZWFkIG9mCglkZWZhdWx0aW5nIHRvIGRlc2t0b3A9NjQweDQ4MC4KCjIwMDAtMTEtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lYnVpbGQvcmVsYXkuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtZW1vcnkvTWFrZWZpbGUuaW4sIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2luc3RyLmMsIG1lbW9yeS9sZHQuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL3Z4ZC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9nbG9iYWwuaCwgaW5jbHVkZS9sZHQuaCwgaW5jbHVkZS9zZWxlY3RvcnMuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL2xpYnJhcnkuaCwgbGlicmFyeS9NYWtlZmlsZS5pbiwgbGlicmFyeS9sZHQuYywgbG9hZGVyL3Rhc2suYzoKCU1vdmVkIExEVCBoYW5kbGluZyB0byBsaWJ3aW5lLnNvLiBDaGFuZ2VkIHRoZSBpbnRlcmZhY2UgdG8gdXNlIHRoZQoJZXhwb3J0ZWQgTERUX0VOVFJZIHN0cnVjdHVyZS4KCjIwMDAtMTEtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjOgoJVGVtcCBoYWNrOiBkbyBub3QgaW1wb3J0IGRsbHMgdGhhdCB3ZSBsaW5rIHdpdGggYXQgdGhlIEVMRiBsZXZlbC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglGaXhlZCBjb3B5L3Bhc3RlIHR5cG8gc3BvdHRlZCBieSBEaW1pdHJpZSBPLiBQYXVuLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUltcGxlbWVudCBkcmFnZ2luZyBvbiBncmlwcGVyIHRvIGV4cGFuZCBhbmQgY29tcHJlc3MgYmFuZHMuIEFjdHVhbAoJbW92aW5nIGJhbmRzIHRvIGRpZmZlcmVudCByb3dzIHdpbGwgYmUgbGF0ZXIuCgoJKiBkbGxzL2tlcm5lbC9jb21tLmMsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2FzeW5jLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJLSBjcmVhdGVkIHNlcnZlciBvYmplY3QgZm9yIGhhbmRsaW5nIGFzeW5jIGkvbwoJLSBpbXBsZW1lbnRlZCBXYWl0Q29tbUV2ZW50IHdpdGggdGhlIEVWX1JYQ0hBUiBmbGFnCgktIGltcGxlbWVudGVkIEdldE92ZXJsYXBwZWRSZXN1bHQKCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3RodW5rLmMsIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgdG9vbHMvd2luZWJ1aWxkL3JlbGF5LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMTYuYywgd2luZG93cy93aW5wcm9jLmM6CglFeHBvcnQgdGhlIENhbGxGcm9tMTZ4eHggZnVuY3Rpb25zIGZyb20ga2VybmVsMzIuIFJlbmFtZWQgdGhlbQoJX193aW5lX2NhbGxfZnJvbV8xNiB0byBmb2xsb3cgdGhlIG5hbWluZyBjb252ZW50aW9uLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9pbXBvcnQuYywgdG9vbHMvd2luZWJ1aWxkL21haW4uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJRG8gbm90IHdhcm4gZm9yIHVudXNlZCBpbXBvcnRlZCBkbGxzIHdoZW4gZm9yd2FyZHMgdG8gdGhlIHNhbWUgZGxscwoJYXJlIHByZXNlbnQuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglEb24ndCBpbmNsdWRlIHdpbmUgaW50ZXJuYWwgZnVuY3Rpb25zIGluIHRoZSByZWxheSBkZWJ1Z2dpbmcgdGFibGUuCgoJKiBNYWtlLnJ1bGVzLmluOgoJRG8gYSBzdHJpcCAtLXN0cmlwLXVubmVlZGVkIG9uIHRoZSAudG1wLm8gZmlsZSB0byByZWR1Y2UgZGlzayB1c2FnZS4KCgkqIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBtZW1vcnkvZ2xvYmFsLmMsIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvaW1hZ2VobHAvYWNjZXNzLmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYzoKCVJlcGxhY2VkIGEgZmV3IGludGVybmFsIGZ1bmN0aW9ucyBieSBleHBvcnRlZCBvbmVzLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVW5peDk4IHB0aHJlYWRfcndsb2NrKiBzdHVicyBmb3IgZ2xpYmMyLjIgY29tcGF0aWJpbGl0eS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTaW5jZSB3ZSBjYW4gbm8gbG9uZ2VyIGJ1aWx0IC5hIGZpbGVzOgoJLSByZW1vdmUgLWRpc2FibGUvLWVuYWJsZS1kbGwgb3B0aW9uCgktIGVycm9yIGFuZCBhYm9ydCBpZiBubyBzdWl0YWJsZSBzaGFyZWQgbGlicmFyeSBsaW5raW5nIGlzIHBvc3NpYmxlCgoJKiB0b29scy93aW5lbWFrZXI6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdGhlIGRldGVjdGlvbiBvZiB0aGUgbGluayBmbGFncyBmb3IgTmV0QlNEL0N5Z3dpbiAoY29uZmlndXJlLmluKQoJQWRkZWQgQUNfUEFUSF9IRUFERVIgYW5kIEFDX1BBVEhfTElCUkFSWQoJQmV0dGVyIGhlYWRlci9saWJyYXJ5IGRldGVjdGlvbi4gTm93IHdvcmtzIGlmIHRoaW5ncyBhcmUgYWxyZWFkeSBpbgoJdGhlIGluY2x1ZGUvbGlicmFyeSBwYXRoCglMb29rIGZvciB0aGUgd2luZS9NRkMgaGVhZGVycyBhbmQgbGlicmFyaWVzIGluIG1vcmUgcGxhY2VzIHNvIHRoYXQgaXQKCXdvcmtzIG91dCBvZiB0aGUgYm94IGlmIFdpbmUvTUZDIGlzIGluc3RhbGxlZCBpbiBhIHN0YW5kYXJkIHBsYWNlCgkoYWx0aG91Z2ggdGhlcmUgaXMgbm90IHJlYWxseSBhIHN0YW5kYXJkIHBsYWNlIHlldCBmb3IgdGhlIE1GQykKCVJlbmFtZWQgdGhlICctLXdpdGgteHh4JyBvcHRpb25zIHRvIGhhdmUgc2ltcGxlciBtb3JlIG5hdHVyYWwgbmFtZXMKCVJlbmFtZWQgdGhlIGNvcnJlc3BvbmRpbmcgJ1dJTkVMSUJfeHh4JyB2YXJpYWJsZXMgdG8gJ1dJTkVfeHh4JwoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdoZW4gYSBXaW4xNiBhcHAgc2V0cyBhIHNlbGVjdG9yIGJhc2UgdG8gbG93IERPUyBtZW1vcnksIG1ha2Ugc3VyZSBsb3cKCURPUyBtZW1vcnkgaXMgbWFwcGVkIGZpcnN0LgoKCSogbXNkb3MvaW50ZXJydXB0cy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgdGhlIHZpcnR1YWwgcmVhbC1tb2RlIGludGVycnVwdCB0YWJsZSBpZiBsb3cgRE9TIG1lbW9yeSBpc24ndAoJbWFwcGVkLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW9yZ2FuaXplZCBET1MgbWVtb3J5IHJlbWFwcGluZyBzbGlnaHRseSwgc28gdGhhdCB0aGUgcmVhbC1tb2RlCglpbnRlcnJ1cHQgdGFibGUgY2FuIGV4aXN0IGV2ZW4gd2hlbiBsb3cgRE9TIG1lbW9yeSBpc24ndCBtYXBwZWQsCglhbmQgaXMgY29waWVkIGRvd24gYWxvbmcgd2l0aCB0aGUgQklPUyBhcmVhIHdoZW5ldmVyIGl0IGlzIG1hcHBlZC4KCUFkZGVkIERPU01FTV9TeXN0ZW1CYXNlKCkgd2hpY2ggcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHZpcnR1YWwKCXJlYWwtbW9kZSBpbnRlcnJ1cHQgdGFibGUgYW5kIEJJT1MgZGF0YSBzZWdtZW50LgoJQWxsb3dlZCBET1NNRU1fSW5pdChUUlVFKSB0byBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuCgoyMDAwLTExLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2pveXN0aWNrL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWNkYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lzZXEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpd2F2ZS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9taWRpbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwgZGxscy93b3czMi9NYWtlZmlsZS5pbiwgZGxscy9zaGZvbGRlci9NYWtlZmlsZS5pbiwgZGxscy9zaGx3YXBpL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlcHJvMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLCBkbGxzL3BzYXBpL01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9NYWtlZmlsZS5pbiwgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbXByL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zbmV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZWRsZy9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9pY21wL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluOgoJU3RhcnQgdXNpbmcgaW1wb3J0IHRhYmxlcyBmb3IgZGxscyB0aGF0IGNhbiBhbHJlYWR5IHN1cHBvcnQgaXQuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMvb2xlMzIvY29tcG9iai5zcGVjLCBpZjE2MzIvcmVsYXkuYywgbG9hZGVyL3Rhc2suYywgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmM6CglSYWlzZSBhbiBleGNlcHRpb24gZm9yIHVuaW1wbGVtZW50ZWQgMTYtYml0IGVudHJ5IHBvaW50cyB0b28uCglBZGRlZCBjaGVjayBmb3IgZHVwbGljYXRlIG5hbWVzIGluIDE2LWJpdCBzcGVjIGZpbGVzLgoKCSogd2luMzIvZXhjZXB0LmMsIHdpbmVkZWZhdWx0LnJlZzoKCVRoZSBkZWJ1Z2dlciAiQXV0byIgcmVnaXN0cnkgdmFsdWUgc2hvdWxkIGJlIGEgc3RyaW5nLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgd2luZS5pbmk6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRoZSBEZXNrdG9wPVhYWHhZWVkgc2V0dGluZyBpbiB0aGUgW3gxMWRydl0gc2VjdGlvbiBvZiB0aGUKCWNvbmZpZyBmaWxlLgoKCSogZGVidWdnZXIvbXNjLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1ha2UgdXNlIG9mIFdpbmRvd3Mgc3RydWN0dXJlIGZvciBDT0ZGIGluZm8uCglGaXhlZCBhIGZldyBpc3N1ZXMgaW4gQ09GRiBsb2FkaW5nLgoJQ2xlYW5lZCB1cCB0aGUgY29kZS4KCgkqIHRvb2xzL2MybWFuLnBsOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeCBmb3IgQVBJcyB0aGF0IGRvbid0IGhhdmUgYW55IG9yZGluYWwgKG9yZGluYWw9QCkuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJTWFkZSBXSU5TUE9PTF9HZXRQcmludGVyRHJpdmVyIHdvcmsgYWdhaW4uCgoyMDAwLTExLTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uc29sZS9nZW5lcmljLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCB0b29scy9iaW4ycmVzLmMsIHRvb2xzL21ha2VkZXAuYywgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvcmVzMTYuYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd21jL2xhbmcuYywgdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9yZWFkcmVzLmMsIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCUdldCByaWQgb2Ygc29tZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQgdmFyaWFibGVzLCBzaWduZWQvdW5zaWduZWQKCWNvbXBhcmlzb25zIGFuZCBpbmNvbXBsZXRlIGluaXRpYWxpemF0aW9ucy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmdkaS5oLCB1bmljb2RlL01ha2VmaWxlLmluLCB1bmljb2RlL2NfMjg1OTIuYywgdW5pY29kZS9jXzI4NTkzLmMsIHVuaWNvZGUvY18yODU5NC5jLCB1bmljb2RlL2NfMjg1OTkuYywgdW5pY29kZS9jXzI4NjAwLmMsIHVuaWNvZGUvY18yODYwMy5jLCB1bmljb2RlL2NfMjg2MDQuYywgdW5pY29kZS9jXzI4NjA1LmMsIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvY3B0YWJsZS5jOgoJTmVyaWp1cyBCYWxpdW5hcyA8bmVyaWp1c0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CglBZGQgbmV3IGVuY29kaW5ncyBJU08gODg1OS0xMCAoY3AyODYwMCksIDg4NTktMTMgKGNwMjg2MDMpLCA4ODU5LTE0IChjcDI4NjA0KSwKCTg4NTktMTUgKGNwMjg2MDUpLiBBZGQgTGl0aHVhbmlhbiAoQmFsdGljKSBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgV01fUEFJTlQgaW4gQU5JTUFURV9XaW5kb3dQcm9jOyBjYWxsIERlZldpbmRvd1Byb2NBIGZvciBkZWZhdWx0IGhhbmRsaW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGFub3RoZXIgZGV0ZWN0aW9uIG9mIHN0cmVuZ3RoLXJlZHVjZSBidWcgaW4gR0NDLgoKMjAwMC0xMS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5zcGVjLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5zcGVjLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5zcGVjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbjoKCUJ1aWxkIG1vc3QgcHJvZ3JhbXMgYXMgLnNvIGZpbGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHByb2dyYW1zLy5jdnNpZ25vcmUsIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9NYWtlcHJvZy5ydWxlcy5pbjoKCUFkZGVkIE1ha2Vwcm9nLnJ1bGVzLmluIGNvbnRhaW5pbmcgcnVsZXMgZm9yIGJ1aWxkaW5nIFdpbmVsaWIKCXByb2dyYW1zLgoKCSogZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2RlYnVndG9vbHMuaDoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglVc2UgdmFyaWFibGUgYXJndW1lbnQgbWFjcm9zIHdoZW4gY29tcGlsaW5nIHdpdGggZ2NjLgoKCSogdG9vbHMvd2luZWxhdW5jaGVyLmluOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJTWFrZSB3aW5lbGF1bmNoZXIgc21hcnRlciBhYm91dCBmaW5kaW5nIHRoZSBXaW5lIGxpYnJhcmllcyBhbmQKCWJpbmFyaWVzLiAgQ2hhbmdlIHRoZSBjb2xvciBzY2hlbWUuICBIYW5kbGUgbGF1bmNoZXMgd2l0aCBubwoJYXJndW1lbnRzLCBjb3JyZWN0bHkgaGFuZGxlIGludm9jYXRpb24gYXMgYSBtaW1lLXR5cGUgaGFuZGxlciBmcm9tCglLREUuCgoJKiBtZW1vcnkvaGVhcC5jLCBkbGxzL3VzZXIvZXh0aWNvbi5jLCBkbGxzL3ZlcnNpb24vcmVzb3VyY2UuYywgaW5jbHVkZS9zcWxleHQuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwgbGlicmFyeS9sb2FkZXIuYywgbG9hZGVyL3BlX3Jlc291cmNlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVXNlIERVTU1ZeHh4TkFNRSBmb3IgYW5vbnltb3VzIHN0cnVjdC91bmlvbnMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1pc3NpbmcgcG9pbnRlciB0eXBlczogUHh4eCBvciBMUHh4eAoJRml4ZWQgdGhlIGRlZmluaXRpb24gb2YgRk9OVEVOVU1QUk9DCglGaXhlZCB0eXBvOiBUQV9SVExFQURJTkcgaXMgaW4gZmFjdCBUQV9SVExSRUFESU5HIChyaWdodCB0byBsZWZ0CglyZWFkaW5nIEkgYmVsaWV2ZSkKCUFkZGVkIG1pc3NpbmcgZGVmaW5pdGlvbnM6IFBDX1RSQVBFWk9JRAoJVXNlIERVTU1ZeHh4TkFNRSBmb3IgYW5vbnltb3VzIHN0cnVjdC91bmlvbnMgaW4gREVWTU9ERQoKCSogaW5jbHVkZS93aW51c2VyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc29tZSBTVE5feHh4IG1hY3Jvcy4KCgkqIGluY2x1ZGUvd2luZGVmLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSElDT04gYW5kIEhDVVJTT1Igc2hvdWxkIGJlIGludGVyY2hhbmdlYWJsZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBMUFVEQUNDRUwgYW5kIEhERl9SVExSRUFESU5HLgoKCSogdG9vbHMvd2luZW1ha2VyOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnQgaW5jbHVkZSBzdGF0ZW1lbnRzIG9mIG5vdC1mb3VuZCBmaWxlcyB0byBsb3dlciBjYXNlIGJ5CglkZWZhdWx0CglBZGRlZCAtLW5vLWxvd2VyLWluY2x1ZGUgb3B0aW9uIHRvIG92ZXJyaWRlIHRoZSBhYm92ZQoJQmVhdXRpZmllZCB0aGUgaW50ZXJhY3RpdmUgbW9kZSBvdXRwdXQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZm9sbG93CglJbnRlcmFjdGl2ZSBtb2RlOiBzdXBwb3J0IHRoZSAtLW1mYyBhbmQgLS13cmFwIG9wdGlvbnMgZm9yIGJvdGgKCXByb2plY3RzIGFuZCB0YXJnZXRzCglGaXhlZCB0aGUgbWZjL3dyYXAgcHJvcGFnYXRpb24gYmV0d2VlbiBwcm9qZWN0IGFuZCB0YXJnZXRzIChnb2VzIGJvdGgKCXdheXMpCglBdXRvZGV0ZWN0IE1GQyBiYXNlZCBwcm9qZWN0cyBieSBsb29raW5nIGZvciBhbiAnc3RkYWZ4LihjcHB8aCknIGZpbGUKCURvbid0IHB1dCB0aGUgc3RkYWZ4LmNwcCBmaWxlIGluIHRoZSBsaXN0IG9mIGZpbGVzIHRvIGNvbXBpbGUgKGl0J3MKCWp1c3QgdGhlcmUgZm9yIHByZS1jb21waWxlZCBoZWFkZXJzLCB5dWspCglGaXhlZCBMRF9MSUJSQVJZX1BBVEggd2hlbiBsaW5raW5nIGFuIGFwcGxpY2F0aW9uIHdpdGggYSBsaWJyYXJ5IGZyb20KCXRoZSBzYW1lIG1ha2VmaWxlCglEb24ndCBmb3JnZXQgJ2V4dHJhJyBzb3VyY2VzIHdoZW4gbG9va2luZyBmb3IgYSBmaWxlIGZvciBjb25maWd1cmUuaW4KCVJlbmFtZWQgdGhlICctLW5vLW1ha2VmaWxlJyBvcHRpb24gdG8gJy1uby1nZW5lcmF0ZWQtZmlsZScKCgkqIGRvY3VtZW50YXRpb24vd2luZW1ha2VyLm1hbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglEb2N1bWVudCB0aGUgLS1sb3dlci1pbmNsdWRlIG9wdGlvbnMuCglEb2N1bWVudCB0aGUgLS1uby1nZW5lcmF0ZWQtZmlsZXMgb3B0aW9ucy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6IFJlcGFpcmVkIHJlbGF5IGRlYnVnZ2luZy4KCgkqIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCVdlIGRvIG5vdCBuZWVkIHRvIHNldCBTT1ZFUlNJT04gZm9yIGRsbHMuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L2V4cGFuZC5zcGVjLCBsaWJ0ZXN0L2hlbGxvLnNwZWMsIGxpYnRlc3QvaGVsbG8yLnNwZWMsIGxpYnRlc3QvaGVsbG8zLnNwZWMsIGxpYnRlc3QvaGVsbG80LmMsIGxpYnRlc3QvaGVsbG80LnNwZWMsIGxpYnRlc3QvaGVsbG81LnNwZWMsIGxpYnRlc3QvbmV3LnNwZWMsIGxpYnRlc3Qvcm9sZXguc3BlYywgbGlidGVzdC92YXJ0ZXN0LmMsIGxpYnRlc3QvdmFydGVzdC5zcGVjLCBsaWJ0ZXN0L3ZvbGluZm8uc3BlYzoKCUJ1aWxkIHRlc3QgcHJvZ3JhbXMgYXMgLnNvIGZpbGVzLiBBZGRlZCBtaXNzaW5nIGltcG9ydHMuCgoJKiBpbmNsdWRlL3dpbmUvbGlicmFyeS5oLCBsaWJyYXJ5L2xvYWRlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyBhIFdpbmVsaWIgYXBwIGxpbmtlZCBhcyBhIC5zbyBmcm9tIHRoZSB3aW5lCglsYXVuY2hlciwgYmFzZWQgb24gdGhlIHZhbHVlIG9mIGFyZ3ZbMF0uCgoJKiBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L01ha2VmaWxlLmluOgoJRG9uJ3QgbGluayBsaWJ3aW5lX3VuaWNvZGUgaW50byBhbGwgZGxscy4KCgkqIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmgsIHByb2dyYW1zL2Nsb2NrL2xpY2Vuc2UuYywgcHJvZ3JhbXMvY2xvY2svbGljZW5zZS5oLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uaCwgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmgsIHByb2dyYW1zL25vdGVwYWQvbGljZW5zZS5jLCBwcm9ncmFtcy9ub3RlcGFkL2xpY2Vuc2UuaCwgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5oLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYzoKCUZpeGVkIGxhbmd1YWdlIGhhbmRsaW5nLiBSZW1vdmVkIHNvbWUgZGVwZW5kZW5jaWVzIG9uIFdpbmUgaW50ZXJuYWxzLgoKCSogd2luZS5pbmk6IEFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgYW4gZXhwbGFuYXRpb24gZm9yIHRoZSBkaXJlY3Rvcnkgc3ltbGluayBzdHVmZi4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CglDb3JyZWN0ZWQgdXNlZCByZWdpc3RyeSBrZXkuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJSW5pdGlhbGl6ZSBuU29ja2V0RkQgdG8gSU5WQUxJRF9TT0NLRVQuCgoyMDAwLTExLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvdW5pbnN0YWxsZXIuc3BlYywgcHJvZ3JhbXMvdmlldy92aWV3LnNwZWMsIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjLCBwcm9ncmFtcy93aW5lbWluZS93aW5lbWluZS5zcGVjLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuc3BlYywgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5zcGVjLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWMsIHByb2dyYW1zL2Nsb2NrL2Nsb2NrLnNwZWMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LnNwZWMsIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5zcGVjLCBwcm9ncmFtcy9ub3RlcGFkL25vdGVwYWQuc3BlYywgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suc3BlYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLnNwZWMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuc3BlYywgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LnNwZWM6CglBZGRlZCBzb21lIG1pc3NpbmcgaW1wb3J0cy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL2ltcG9ydC5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglBZGRlZCBzdXBwb3J0IGluIHdpbmVidWlsZCBmb3IgcmVzb2x2aW5nIGZ1bmN0aW9uIGltcG9ydHMgKC1zeW0gb3B0aW9uKS4KCUFkZGVkIC1MIG9wdGlvbiBmb3IgbG9jYXRpbmcgaW1wb3J0ZWQgZGxscy4KCUNoYW5nZWQgZ2VuZXJhdGVkIGV4ZSBpbml0IGNvZGUgdG8gdXNlIF9fd2luZV9nZXRfbWFpbl9hcmdzLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBtaXNjL29wdGlvbnMuYzoKCUFkZGVkIF9fd2luZV9nZXRfbWFpbl9hcmdzIHRvIHJldHJpZXZlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgZm9yIHRoZQoJYXBwbGljYXRpb24uCgoJKiBsb2FkZXIvZWxmZGxsLmM6CglEb24ndCBzdHJpcCB0aGUgbGlicmFyeSBleHRlbnNpb24gaWYgaXQncyBub3QgIi5kbGwiLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46CglGaXhlZCBOZXRCU0QgZGxsIGNoZWNrLgoJQWRkZWQgY2hlY2sgZm9yIC1Cc3ltYm9saWMuCglGaXhlZCBMRFNIQVJFRCBkZWZpbml0aW9uIHRvIHN1cHBvcnQgdW5kZWZpbmVkIFNPTkFNRS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBoZWFkZXIgY29udHJvbCBjdXJzb3JzIGFuZCBkcmFnIGxpc3QgYXJyb3cgaWNvbi4KCgkqIGRsbHMvd2luZXBzL3JzcmMucmMsIGRsbHMvd2luZXBzL3dwc19Fbi5yYywgZGxscy93aW5lcHMvd3BzX1J1LnJjLCBkbGxzL3dpbmVwcy93cHNfU2sucmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIFJ1c3NpYW4gcmVzb3VyY2VzIHRvIHRoZSBQb3N0c2NyaXB0IGRyaXZlci4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglEbWl0cnkgVGltb3Noa292IDxkdGltb3Noa292QGNvZGV3ZWF2ZXJzLmNvbT4KCU1ha2UgYSBjb3B5IG9mIHRoZSBkaWFsb2cgcmVzb3VyY2UgYmVmb3JlIGNvcnJlY3Rpbmcgc3R5bGVzLgoKMjAwMC0xMS0wOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGxpYnJhcnkvbG9hZGVyLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglEbyBidWlsdGluIG1vZHVsZXMgZml4dXBzIGluIGxpYnJhcnkvbG9hZGVyLmMgYmVmb3JlIGNhbGxpbmcgdGhlCglsb2FkX2RsbCBjYWxsYmFjay4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2tlcm5lbC9jb21tLmM6CglDaGVjayBhbGwgQ2FsbG91dHMgZnVuY3Rpb24gcG9pbnRlcnMgZm9yIE5VTEwgYmVmb3JlIHVzaW5nIHRoZW0uCglEb24ndCBsb2FkIFVTRVIgZGxsIGlmIG5vdCBuZWVkZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLmgsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9kaXIuYywgZGxscy9jcnRkbGwvZXhpdC5jLCBkbGxzL2NydGRsbC9maWxlLmMsIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIGRsbHMvY3J0ZGxsL21lbW9yeS5jLCBkbGxzL2NydGRsbC9zcGF3bi5jLCBkbGxzL2NydGRsbC9zdHJpbmcuYywgZGxscy9jcnRkbGwvdGltZS5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY3J0ZGxsLmFwaSwgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW46CglKb24gR3JpZmZpdGhzIDxqb25fcF9ncmlmZml0aHNAeWFob28uY29tPgoJLSBJbXBsZW1lbnRlZCA3MyBDUlQgZnVuY3Rpb25zCgktIFJlaW1wbGVtZW50ZWQgZmlsZSBJL08gdXNpbmcgV2luMzIgY2FsbHMKCS0gU2V0IGVycm5vL2Rvc2Vycm5vIGluIG1vc3QgY2FsbHMKCgkqIGRsbHMvd2luaW5ldC9mdHAuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkIG1pc3NpbmcgI2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4gYW5kICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+LgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jOgoJQWRkZWQgbWlkZGxlIG1vdXNlIGJ1dHRvbiBoYW5kbGluZy4KCgkqIGRsbHMvdXNlci8uY3ZzaWdub3JlOiBSZW1vdmVkIC5zIGZpbGVzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jb21jYXQuaCwgaW5jbHVkZS9ycGMuaCwgaW5jbHVkZS9ycGNkY2UuaCwgaW5jbHVkZS9ycGNkY2VwLmgsIGluY2x1ZGUvcnBjbmRyLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgdGhpbmdzIHRvIHRoZSBwcm9wZXIgcnBjeHh4LmggaGVhZGVyLgoJQWRkZWQgc29tZSB0eXBlIGRlZmluaXRpb25zIHVzZWQgYnkgdGhlIE1GQy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2UgbXVzdCBpbmNsdWRlIHdpbmRlZi5oIGJlZm9yZSB3dHlwZXMuaCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBETV9SRVBPU0lUSU9OLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJV2UgbXVzdCBpbmNsdWRlIHN0ZGFyZy5oLgoJQWRkZWQgYSBmZXcgbWlzc2luZyBleGNlcHRpb24gcmVsYXRlZCB0eXBlcy4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXZSBtdXN0IGluY2x1ZGUgY3R5cGUuaCBzbyB0aGF0IGFwcGxpY2F0aW9ucyBnZXQgaXNhbG51bSAmIGNvLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgQ0NfU09MSURDT0xPUiBhbmQgQ0NfQU5ZQ09MT1IuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBsaWJyYXJ5L01ha2VmaWxlLmluLCBsaWJyYXJ5L2RlYnVnLmMsIGxpYnJhcnkvbG9hZGVyLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2NlbXUvbWFpbi5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmM6CglNb3ZlZCBidWlsdGluIGRsbCByZWdpc3RyYXRpb24gdG8gbGlid2luZS4KCUNoYW5nZWQgcHJvY2VzcyBpbml0aWFsaXphdGlvbiB0byBub3QgbG9hZCBpbXBvcnRlZCBkbGxzIHRvbyBlYXJseS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBWS19QUklPUiBhbmQgVktfTkVYVCBwcm9jZXNzaW5nIChtZXJnZWQgZnJvbSBDb3JlbCB0cmVlKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJVG9Vbmljb2RlOiBpZ25vcmUgQ1RSTCtudW1iZXIga2V5c3Ryb2tlcy4KCgkqIGluY2x1ZGUvd2luZS9saWJyYXJ5LmgsIGluY2x1ZGUvd2luZS9wb3J0LmgsIGxpYnJhcnkvcG9ydC5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL29wdGlvbnMuYzoKCUFkZGVkIG5ldyBsaWJyYXJ5LmggaGVhZGVyIGZvciBsaWJ3aW5lIGRlZmluaXRpb25zLgoJQWRkZWQgZ2V0cGFnZXNpemUoKSBhbmQgd2luZV9hbm9uX21tYXAoKSBwb3J0YWJpbGl0eSBmdW5jdGlvbnMuCgoyMDAwLTExLTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzoKCXB0aHJlYWRfYXRmb3JrOiBkb24ndCBjYWxsIGNyaXRpY2FsIHNlY3Rpb24gZnVuY3Rpb25zIGJlZm9yZQoJaW5pdGlhbGl6YXRpb24gaXMgZG9uZS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6CglGaXhlZCAwLy0xIG1peHVwIGZvciBpbmRpY2F0aW5nIG5vIG1hcHBpbmcgaGFuZGxlLgoKCSogY29udHJvbHMvdWl0b29scy5jLCBpbmNsdWRlL3RjaGFyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIHR5cG9zIGluIGNvbW1lbnRzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bF9EZS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRW4ucmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJRXJpYyBLb2hsIDxla29obEBjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCB0b29sYmFyIGN1c3RvbWl6YXRpb24gZGlhbG9nLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCUVyaWMgS29obCA8ZWtvaGxAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgbmV3IG1lc3NhZ2VzLgoKCSogZGVidWdnZXIvbXNjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCS0gVGFrZSBPTUFQIHJlY29yZHMgaW50byBhY2NvdW50IHRvIGNvcnJlY3Qgc3ltYm9sIGFkZHJlc3Nlcy4KCS0gVW5kZXJzdGFuZCBDb2RlVmlldyBkYXRhIGVtYmVkZGVkIGluIHRoZSBQRSBmaWxlIGl0c2VsZi4KCS0gVW5kZXJzdGFuZCBOQjExIHNpZ25hdHVyZSBDb2RlVmlldyBkYXRhLgoJLSBObyBtb3JlIGJvZ3VzICd0aW1lc3RhbXAgbWlzbWF0Y2gnIGVycm9ycy4KCS0gR2VuZXJhbCBjbGVhbnVwIC8gcmVtb3ZhbCBvZiBkdXBsaWNhdGUgY29kZS4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbWlzc2luZyBJTUFHRV9ERUJVR19NSVNDIGRlZmluaXRpb24uCgoJKiBkbGxzL3dpbmluZXQvZnRwLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglTZW5kIHRoZSBsb2NhbCBpcCBhZGRyZXNzIHdpdGggdGhlIFBPUlQgY29tbWFuZCBhbmQgbm90IHRoYXQgb2YgdGhlCglzZXJ2ZXIuCglGaXggaGFuZGxpbmcgb2YgbXVsdGktbGluZSByZXNwb25zZXMuCglSZWFkIGEgcmVzcG9uc2UgYWZ0ZXIgdGhlIFNUT1IgY29tbWFuZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCB0aGUgUmVkcmF3SXRlbXMgbWVzc2FnZSBmb3IgYSBsaXN0dmlldy4KCgkqIGRsbHMvd2luZXBzL2FmbS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglOZXcgcGF0aCBmb3IgQUZNIGRvY3VtZW50YXRpb24gb24gdGhlIG5ldC4KCgkqIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIGluY2x1ZGUgcGF0aCBoYW5kbGluZyBpbiBnZXRfcmVhbF9pbmNsdWRlX25hbWUKCU1vZGlmaWVkIGdldF9yZWFsX2luY2x1ZGVfbmFtZSBzbyB0aGF0IGl0IGNhbiBmb2xsb3cgYW4gaW5jbHVkZSBwYXRoCglzdGFydGluZyB3aXRoICQoVE9QU1JDRElSKQoJSW5kZW50IHRoZSBkZWJ1ZyBtZXNzYWdlcyBhIGJpdCBtb3JlIHNvIHRoYXQgd2luZW1ha2VyJ3MgaXMgc3RpbGwKCXJlYWRhYmxlIHdoZW4gdGhleSBhcmUgb24KCVRoZSBBVExfSU5DTFVERV9ST09UIHZhcmlhYmxlIHdhcyBzZXQgd3JvbmcgKGNvbmZpZ3VyZS5pbikKCVRoZSBNRkMgaW5jbHVkZSBwYXRoIG11c3QgY29udGFpbiB0aGUgcGF0aCB0byB0aGUgQVRMIGhlYWRlcnMKCShjb25maWd1cmUuaW4pCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2UgRHJhd0ZvY3VzUmVjdCB0byBkcmF3IHRoZSBmb2N1cyByZWN0YW5nbGUuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIGZvcnRpZnkgQVNQSSAvcHJvYyBmaWxlIHBhcnNpbmcgKFNDU0lfZ2V0cHJvY2VudHJ5KCkpIGFnYWluc3QKCSAgQ0QtUk9NIGRyaXZlcyB0aGF0IGFyZSBkb2luZyBtYWQgdGhpbmdzIHdpdGggc3BhY2VzCgktIGFkZCBFUlIoKXMgaW4gY2FzZSBvZiBwYXJzaW5nIHByb2JsZW1zCgoJKiBpbmNsdWRlL2JpdG1hcHMvd2luZV9zbWFsbC54cG06CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgMTZ4MTYgd2luZSBsb2dvLgoKMjAwMC0xMS0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2lubW0uc3BlYzoKCVJlbW92ZWQgU1VCRElSUyBpbiB3aW5tbSBNYWtlZmlsZS4KCgkqIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy9zZXR1cGFwaS9zdHVicy5jLCBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL3NldHVwYXBpLmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdHVicyBhbmQgc2V0dXBhcGkuaC4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDQkVNX1NFVElURU1XIGRvbmUgYnkgZXhhbXBsZSBmcm9tIFNFVElURU1BLCBjb252ZXJ0ZWQgU0VUSVRFTUEgdG8gdXNlCglpdC4KCgkqIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vd2luZW1ha2VyLm1hbjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglXaW5lbWFrZXIncyBtYW4gcGFnZSBpbml0aWFsIHJlbGVhc2UuCgoJKiB0b29scy93cmMvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCB0b29scy9tYWtlZGVwLmMsIHRvb2xzL3dtYy9NYWtlZmlsZS5pbjoKCUJldHRlciBlcnJvciBtZXNzYWdlIHdoZW4gYW4gaW5jbHVkZSBmaWxlIGlzIG5vdCBmb3VuZCBieSBtYWtlZGVwLgoJQWRkZWQgc3VwcG9ydCBmb3IgLm1jIGV4dGVuc2lvbi4KCURvIG5vdCB0cnkgdG8gb3BlbiAqLnRhYi5oIGFuZCAqLm1jLnJjIGluY2x1ZGUgZmlsZXMuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW46CglBZGRlZCBtaXNzaW5nIGRlcGVuZGVuY3kgZm9yIDE2LWJpdCByZXNvdXJjZSBmaWxlcy4KCgkqIE1ha2UucnVsZXMuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9rZXJuZWwucmMsIGRsbHMva2VybmVsL21lc3NhZ2VzLy5jdnNpZ25vcmU6CglVc2UgLm1jLnJjIGV4dGVuc2lvbiBmb3IgcmMgZmlsZXMgZ2VuZXJhdGVkIGJ5IHRoZSBtZXNzYWdlIGNvbXBpbGVyLgoKCSogbG9hZGVyL2VsZi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglHZXQgRUxGX0xvYWRMaWJyYXJ5RXhBIGJhY2sgaW50byBhIHdvcmtpbmcgc3RhdGUuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJRW5hYmxlIHRoZSBmdW5jdGlvbnMgQWRkUHJpbnRlclcsIFdJTlNQT09MX0dldFByaW50ZXJEcml2ZXIsCglBZGRQcmludGVyRHJpdmVyQSwgV0lOU1BPT0xfRW51bVByaW50ZXJEcml2ZXJzIHRvIGRpc3Rpbmd1aXNoIHRoZQoJcmVnaXN0cnkgZW50cnlzIG9mIFdpbjlbNThdIGFuZCBXaW5OVCBwcmludGVyIGRyaXZlcnMuCgoJKiBjb250cm9scy9tZW51LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVRha2UgaW50byBhY2NvdW50IHRoZSBzdW5rZW4gYm9yZGVyIGZvciBXaW45OCBsb29rLgoJTGVhdmUgYSAxIHBpeGVsIGdhcCB0byB0aGUgbGVmdCBvZiBtZW51IGJpdG1hcCBpdGVtcyBmb3Igc3ltZXRyeSAoYW5kCgliZWNhdXNlIFdpbjl4IGRvZXMgaXQpLgoJTGVhdmUgYSAxIHBpeGVsIGdhcCBhYm92ZSBtZW51IGJhciBpdGVtcyBmb3Igc3ltZXRyeSAoYW5kIGJlY2F1c2UKCVdpbjl4IGRvZXMgaXQpLgoKMjAwMC0xMS0wNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kZXZpY2UuYywgZGxscy9kaW5wdXQvZGV2aWNlX3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0X3ByaXZhdGUuaCwgZGxscy9kaW5wdXQvam95c3RpY2svbGludXguYywgZGxscy9kaW5wdXQva2V5Ym9hcmQvbWFpbi5jLCBkbGxzL2RpbnB1dC9tb3VzZS9tYWluLmMsIGluY2x1ZGUvZGlucHV0LmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gcmVvcmdhbml6ZWQgRElucHV0IERMTAoJLSBhZGRlZCBzdHViYmluZyBmb3IgRElucHV0IDdhCgktICdmaXhlZCcgdGhlIG1vdXNlIHByb2JsZW0gaW4gRmFsbG91dAoKCSogZGxscy9vbGUzMi8uY3ZzaWdub3JlLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyX21haW4uYywgZGxscy9vbGUzMi9vbGUzMl9tYWluLmgsIGRsbHMvb2xlMzIvb2xlMzJyZXMucmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBEbkQgY3Vyc29ycyBhcyBvbGUzMiByZXNvdXJjZXMuCgoJKiBpbmNsdWRlL3NweS5oLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9zcHkuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgdGhlIGFiaWxpdHkgdG8gc2VlIG5hbWVzIG9mIHRoZSB2aXJ0dWFsIGtleSBjb2Rlcy4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgdG9vbHMvLmN2c2lnbm9yZSwgdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVsYXVuY2hlci5pbjoKCUplcmVteSBXaGl0ZSA8andoaXRlQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgd2luZWxhdW5jaGVyIHNoZWxsIHNjcmlwdCB3aGljaCBtYWtlcyB0aGUgcHJvY2VzcyBvZiBydW5uaW5nCglXaW5lIGEgbGl0dGxlIG5pY2VyIGZvciBhbiBlbmQgdXNlci4gIFRoZSBpbnRlbnQgb2Ygd2luZWxhdW5jaGVyIGlzIHRvCgliZSB1c2VkIGluc2lkZSBvZiBhIGRpc3RyaWJ1dGlvbiBwYWNrYWdlLgoKCSogdG9vbHMvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVtYWtlcjoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglOZXcgc2NyaXB0IGZvciBwb3J0aW5nIFdpbmRvd3Mgc291cmNlIGNvZGUgdG8gV2luZUxpYi4KCgkqIGRsbHMveDExZHJ2L3gxMWRydi5zcGVjLCBkbGxzL3dpbm1tL21jaWFuaW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaWF2aS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaWNkYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaXNlcS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lzZXEvbWNpc2VxLmRydi5zcGVjLCBkbGxzL3dpbm1tL21jaXdhdmUvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmRydi5zcGVjLCBkbGxzL3dpbm1tL21pZGltYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmRydi5zcGVjLCBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC9tc2FjbS5kcnYuc3BlYywgZGxscy93aW5tbS93aW5lb3NzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbmVvc3Mvd2luZW9zcy5kcnYuc3BlYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLmRydi5zcGVjLCBkbGxzL3dzb2NrMzIvTWFrZWZpbGUuaW4sIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL3ZlcnNpb24uc3BlYywgZGxscy93aW4zMnMvTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL3czMnNrcm5sLnNwZWMsIGRsbHMvd2luYXNwaS9NYWtlZmlsZS5pbiwgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWMsIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy93aW5pbmV0L01ha2VmaWxlLmluLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2pveXN0aWNrL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmRydi5zcGVjLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlc3ZyL29sZXN2cjMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9wc2FwaS9NYWtlZmlsZS5pbiwgZGxscy9wc2FwaS9wc2FwaS5zcGVjLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsIGRsbHMvcmljaGVkaXQvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuc3BlYywgZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvTWFrZWZpbGUuaW4sIGRsbHMvbHpleHBhbmQvbHozMi5zcGVjLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tcHIvbXByLnNwZWMsIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vbXNhY20zMi5zcGVjLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLCBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVjbGkvTWFrZWZpbGUuaW4sIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvb2xlZGxnL29sZWRsZy5zcGVjLCBkbGxzL29sZXBybzMyL01ha2VmaWxlLmluLCBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9kc291bmQvTWFrZWZpbGUuaW4sIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpMzIuc3BlYywgZGxscy9pY21wL01ha2VmaWxlLmluLCBkbGxzL2ljbXAvaWNtcC5zcGVjLCBkbGxzL2ltYWdlaGxwL01ha2VmaWxlLmluLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwLnNwZWMsIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYXZpZmlsMzIvTWFrZWZpbGUuaW4sIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjOgoJRGVjbGFyZSBkZWJ1ZyBjaGFubmVscyBpbiBhbGwgZGxscyB0aGF0IG5lZWQgdGhlbTsgYWRkZWQgaW1wb3J0cyBvZgoJbnRkbGwgd2hlcmUgbmVjZXNzYXJ5LgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9kZWJ1Z3Rvb2xzLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIGluY2x1ZGUvbWFpbi5oLCBsaWJyYXJ5L01ha2VmaWxlLmluLCBsaWJyYXJ5L2RlYnVnLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvZGVidWdzdHIuYywgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy9maW5kX2RlYnVnX2NoYW5uZWxzLCB0b29scy9tYWtlX2RlYnVnOgoJTmV3IGRlYnVnIGNoYW5uZWwgbWVjaGFuaXNtIGFsbG93aW5nIGRlY2VudHJhbGl6ZWQgY2hhbm5lbAoJZGVjbGFyYXRpb25zLgoKCSogdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jOgoJQWRkZWQgZGVidWdfY2hhbm5lbHMgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3dpbjE2ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9lbmhtZXRhZmlsZWRydi5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L21ldGFmaWxlZHJ2LmgsIGdyYXBoaWNzL3BhaW50aW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU9wdGltaXplZCB7LHB9TW92ZVRveyxFeH17LDE2fS4KCgkqIHdpbmRvd3MvZGNlLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgY29tbWVudCBleHBsYWluaW5nIHdoeSB3ZSBoYXZlIGFuIEVSUiByYXRoZXIgdGhhbiBhIFdBUk4uCgoJKiBtc2Rvcy9kb3NtZW0uYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkZWQgbWlzc2luZyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+LgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZvcndhcmQgQ0JFTV9TRVRFWFNUWUxFIHRvIENCRU1fU0VURVhURU5ERURTVFlMRSwgcGFzcyBXTV9TRVRURVhUIGFuZAoJV01fR0VUVEVYVCBkb3duIHRvIGNvbWJvIGJveC4KCgkqIHdpbmRvd3Mvc3lzcGFyYW1zLmM6CglKYW1lcyBBYmJhdGllbGxvIDxqYWJiZXlAY29kZXdlYXZlcnMuY29tPgoJQ2xlYW51cCBTeXN0ZW1QYXJhbWV0ZXJzSW5mbzwxNnxBfFc+LgoKCSogY29udHJvbHMvbWVudS5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHJlc2V0IE1GX1BPUFVQIGZsYWcgaW4gU2V0TWVudSgpLgoKCSogd2luZG93cy9xdWV1ZS5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8amFiYmV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCB0ZXN0IGZvciBwZW5kaW5nIG1lc3NhZ2UgaW4gUVVFVUVfUmVjZWl2ZU1lc3NhZ2UoKS4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9kYy5oLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZGxscy93aW5lcHMvYnJ1c2guYywgZGxscy93aW5lcHMvY2xpcHBpbmcuYywgZGxscy93aW5lcHMvY29sb3IuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9wZW4uYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvdGV4dC5jLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L21hcHBpbmcuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wZW4uYywgZ3JhcGhpY3Mvd2luMTZkcnYvdGV4dC5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3R0eWRydi9iaXRtYXAuYywgZGxscy90dHlkcnYvZGMuYywgZGxscy90dHlkcnYvZ3JhcGhpY3MuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jLCBkbGxzL3R0eWRydi90dHlkcnYuaCwgZGxscy90dHlkcnYvd25kLmM6CglBbGxvY2F0ZSBEQyBvYmplY3RzIG9uIHRoZSBwcm9jZXNzIGhlYXAsIGFuZCByZW1vdmVkIFdJTl9EQ19JTkZPCglzdHJ1Y3R1cmUgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgS2VuIENvbGVtYW4pLgoKMjAwMC0xMS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCVJlbW92ZWQgbGVmdG92ZXIgZGVidWcgb3V0cHV0LgoKCSogZGxscy9zZXR1cGFwaS9pbmZwYXJzZS5jLCBkbGxzL3NldHVwYXBpL3NldHVweDE2LmgsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBmaXggaW5mIGZpbGUgb3Blbi9jbG9zZQoJICAtIGRvIE5PVCByZXR1cm4gaGFuZGxlcyBiYXNlZCBvbiBsaXN0IG9mZnNldAoJICAtIHdlIG1pZ2h0IHdhbnQgdG8gdXNlIEhFQVBfc3RyZHVwQSBpbnN0ZWFkIG9mIGFzc2lnbmluZyBzdHJpbmcgcG9pbnRlcnMuLi4KCS0gaW1wbGVtZW50IChtb3JlIG9yIGxlc3MpIEdlbkZvcm1TdHJXaXRob3V0UGxhY2Vob2xkZXJzCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUHJvdGVjdCB0aGUgYmFja3NsYXNoZXMgd2UgbWVhbiB0byBoYXZlIHNob3cgZnJvbSBncm9mZi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBvZmYgYnkgb25lIGVycm9yIGluIERQQSBoYW5kbGluZywgYWRkZWQgc29tZSB3YXJuaW5ncy4KCgkqIGZpbGVzL2ZpbGUuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglVc2UgZGVidWdnaW5nIEFQSSBpbnN0ZWFkIG9mIG91dHB1dGluZyB0byBzdGRlcnIgZGlyZWN0bHkuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQXZvaWQgZGl2aXNpb24gYnkgemVyby4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUGFzcyB1cCBXTV9EUkFXSVRFTSBtZXNzYWdlcyB0byBwYXJlbnQuCgoyMDAwLTExLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBpbmNsdWRlL2JpdG1hcHMvd2luZS54cG0sIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93aW5lc2hlbGxsaW5rLCB3aW5lLmluaToKCUNyZWF0ZSBHbm9tZS9LREUgZGVza3RvcCBhbmQgbWVudSBlbnRyaWVzIGZyb20gSVNoZWxsTGluawoJaW50ZXJmYWNlLiBCYXNlZCBvbiB0aGUgd29yayBvZiBKYW1lcyBUaG9tc29uIGFuZCBEdXNhbiBMYWNrby4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglUcmVldmlldyBpdGVtIHNvcnRpbmcgY291bGQgbWVzcyB1cCB0aGUgdmlzaWJsZU9yZGVyIG9mIHRoZSBpdGVtcy4KCgkqIHdpbmRvd3Mvd2luLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3ZlIGZvY3VzIHJlY2FsY3VsYXRpb24gb3V0IG9mIHRoZSB3aW5kb3cgZGVzdHJveSByZWN1cnNpb24KCXNvIHdlIGRvIG5vdCBzZW5kIFdNX1NFVEZPQ1VTIHRvIGFscmVhZHkgZGVzdHJveWVkIHdpbmRvd3MuCgoJKiBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvIG5vdCBpbnZlcnQgIm1hZ2ljIiBiaXRtYXAgbWVudSBpdGVtcy4KCgkqIHRvb2xzL2ZpbmRfZGVidWdfY2hhbm5lbHM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCU1ha2Ugc3VyZSB0byBjYXJlZnVsbHkgcXVvdGUgZmlsZSBuYW1lcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTd2FwIENhbGNUb29sYmFyIGFuZCBwYWludCByZWN0YW5nbGUgY29tcHV0YXRpb24gdG8gdGhlIGNvcnJlY3Qgb3JkZXIuCgoJKiBwcm9ncmFtcy93Y21kL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBjeXcudWtsaW51eC5uZXQ+CglQYXVzZSBjb21tYW5kIGludGVycHJldGVyIHdoaWxlIGV4ZWN1dGluZyBhIGNvbnNvbGUtbW9kZSBhcHAuCgoyMDAwLTExLTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglGaXhlZCBTZWFyY2hQYXRoIHRvIGhhbmRsZSBhICc7Jy1zZXBhcmF0ZWQgcGF0aCBhcyBmaXJzdCBhcmd1bWVudC4KCgkqIGRsbHMvbnRkbGwvbnQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCBOdFF1ZXJ5SW5mb3JtYXRpb25Ub2tlbigpIHRvIGZpbGwgb3V0IGEgdmFsaWQgVE9LRU5fR1JPVVAgd2l0aAoJYWRtaW4gcHJpdmlsZWdlcy4KCgkqIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEcmF3SWNvbkV4OiB3aGVuIGZsYWdzPTAgdXNlIGZsYWdzPURJX05PUk1BTCBpbnN0ZWFkLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUV4cG9ydCBTSEdldFNldHRpbmdzIGJ5IG5hbWUuIE5ldyBzdHViIGZvciBzaGVsbC42OC4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGF2ZSBJbnRlcm5ldCBFeHBsb3JlciAzIHNob3cgaXRzIHRvb2xiYXJzIGJ5IHBhc3NpbmcgUkJfR0VUQkFORElORk8KCXRvIFJCX0dFVEJBTkRJTkZPQS4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJVXNlIEdESVNlbGVjdFBhbGV0dGUxNiBpbnN0ZWFkIG9mIFNlbGVjdFBhbGV0dGUgYW5kCglHRElSZWFsaXplUGFsZXR0ZTE2IGluc3RlYWQgb2YgUmVhbGl6ZVBhbGV0dGUgaW4gb3JkZXIgdG8gZ2V0IHJpZCBvZgoJcG9zc2libGUgZGVhZGxvY2tzLgoKCSogcmVsYXkzMi9zbm9vcC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGltZXIuYywgc2VydmVyL2F0b20uYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5oLCB3aW4zMi9jb25zb2xlLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCBkbGxzL2tlcm5lbC90aW1lLmMsIGRsbHMva2VybmVsL3dpbjg3ZW0uYywgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9vbGVhdXQzMi92YXJpYW50LmMsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWlzYy9jcHUuYywgbWlzYy9lcnJvci5jLCBtaXNjL29wdGlvbnMuYywgbWlzYy9yZWdpc3RyeS5jLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL3ZnYS5jLCBtc2Rvcy92eGQuYywgb2JqZWN0cy9kaWIuYywgY29udHJvbHMvZWRpdC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVZhcmlvdXMgd2FybmluZyBmaXhlcy4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgaW5jbHVkZS9wYXRoLmg6CglNYXJrIER1Zm91ciA8bS5kdWZvdXJAc3R1ZGVudC50dWRlbGZ0Lm5sPgoJTWFrZSB0aGUgZnVuY3Rpb25zIFBpZSwgQ2hvcmQsIFJvdW5kUmVjdCwgQW5nbGVBcmMsIFBvbHlEcmF3IGFuZAoJRWxsaXBzZSB3b3JrIHdpdGggYW4gb3BlbiBwYXRoLgoKCSogY29udHJvbHMvbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNYWtlIGJpdG1hcCBtZW51IGl0ZW1zIGxvb2sgbGlrZSBpbiB3aW5kb3dzIHdoZW4gc2VsZWN0ZWQsCglpLmUuIGludmVydGVkIGFuZCBoaWxpdGVkIChpbiBXaW45OCBsb29rKS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglDaGVjayBmb3IgU0JfQ1RMIGJlZm9yZSBkaXNwbGF5aW5nIGEgY2FyZXQuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmM6CglEbyBub3QgdHJ1bmNhdGUgaGlnaCB3b3JkIG9mIG1lc3NhZ2UgaWQuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS93aW5lL29ial9zZXJ2aWNlcHJvdmlkZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUJldHRlciBoYW5kbGluZyBvZiBjdXN0b20gdGVtcGxhdGVzIGFuZCBob29rcy4KCUJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHVubmVjZXNzYXJ5IGNhbGxzIG9mIFRPT0xCQVJfQ2FsY1Rvb2xiYXIoKSAod2hpY2ggd291bGQgYmUKCXJlY2FsY3VsYXRlZCBkdWUgdG8gSW52YWxpZGF0ZVJlY3QoKS0+V01fUEFJTlQgYW55d2F5KS4KCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWUgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvYWR2YXBpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvcnBjcnQ0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3R0eWRydi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd2luaW5ldC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi94MTFkcnYuYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUdhYnJpZWwgR2FyY2lhIDxHYXJjaWFHQG9yaWdlbmVzLmNvbS5hcj4KCUFkZGVkIExhdGluIEFtZXJpY2FuIGxheW91dC4KCgkqIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjLCBkbGxzL3VybG1vbi91cmxtb25fbWFpbi5jLCBkbGxzL3NobHdhcGkvb3JkaW5hbC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJU3R1YnMgZm9yIFVybE1rU2V0U2Vzc2lvbk9wdGlvbiwgU0hMV0FQSV8xMzIsIFNIR2V0SW52ZXJzZUNNQVAuCglSZWRpcmVjdGVkIGZvcndhcmQgb2Ygc2hsd2FwaS41NCB0byBnZGkzMi5DcmVhdGVJQ1cuCgoyMDAwLTEwLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVXNlIFBTX0FMVEVSTkFURSByYXRoZXIgdGhhbiBQU19ET1QuCglVc2UgUmVjdGFuZ2xlIHRvIGRyYXcgZm9jdXMgcmVjdGFuZ2xlcy4KCgkqIG9iamVjdHMvcGVuLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWxsb3cgcGVucyB3aXRoIHN0eWxlcyBncmVhdGVyIHRoYW4gUFNfSU5TSURFRlJBTUUgdG8gYmUgY3JlYXRlZCB3aXRoCglDcmVhdGVQZW5JbmRpcmVjdCBhbmQgRXh0Q3JlYXRlUGVuLgoKCSogZ3JhcGhpY3MveDExZHJ2L3Blbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglVc2Ugc2l6ZW9mIGZvciBtYWludGFpbmFiaWxpdHkuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSWdub3JlIFJCQlNfQlJFQUsgc3R5bGUgb24gZmlyc3QgYmFuZC4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCUZpeGVkIGEgZmV3IGRldmljZSBjYXBzIHZhbHVlcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CglfbnRfcGFyc2VfbmsoKSBzaG91bGQgbm90IGNsb3NlIGtleXMgdGhhdCBpdCBkb2VzIG5vdCBvcGVuLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJU2V0IHRoZSB0aGlja25lc3Mgb2Ygc3RvY2sgcGVucyB0byAwIHNvIHRoYXQgdGhleSBhcmUgbm90IHNjYWxlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBjYW5jZWxzIGVkaXRpbmcgb2YgYSBsaXN0dmlldyBsYWJlbCBpZiB0aGUgbGlzdHZpZXcgaXMKCXNjcm9sbGVkLgoKCSogd2luZG93cy9zeXNjb2xvci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaXhlZCB0aGUgdmFsdWUgb2Ygc29tZSBzeXN0ZW0gY29sb3JzLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeCBmb3IgYXZvaWRpbmcgc3VidHJhY3Rpb24gZnJvbSB1bnNpZ25lZCB6ZXJvLgoKCSogZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd3BzX1NrLnJjLCBkbGxzL3dpbm1tL3dpbm1tX1NrLnJjLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYywgZG9jdW1lbnRhdGlvbi9pMThuLnNnbWwsIHByb2dyYW1zL2Nsb2NrL1NrLnJjLCBwcm9ncmFtcy9jbG9jay9yc3JjLnJjLCBwcm9ncmFtcy9ub3RlcGFkL1NrLnJjLCBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmMsIHByb2dyYW1zL3Byb2dtYW4vU2sucmMsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywgcHJvZ3JhbXMvd2luaGVscC9Tay5yYywgcHJvZ3JhbXMvd2luaGVscC9yc3JjLnJjLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2sucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1NrLnJjOgoJUGV0ZXIgSXZhbnlpIDxpdmFueWlAaW50ZXJuZXQuc2s+CglBZGRlZC91cGdyYWRlZCBTbG92YWsgbWVzc2FnZXMsIGFuZCBTbG92YWsgYW5kIEN6ZWNoIGtleWJvYXJkIGxheW91dC4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglIaWRlIHRoZSBjYXJldCBvbmx5IG9uIHRoZSBmaXJzdCBXTV9LRVlET1dOLgoKCSogZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQ2hhbmdlZCBtb3VzZSBVbkFjcXVpcmUgdG8gTk9UIHVuYWNxdWlyZSBpdCBvbiBtdWx0aXBsZSB1bmFjcXVpcmVzLgoJSW1wbGVtZW50ZWQgRElQUk9QX0FYSVNNT0RFIGZvciBTeXNNb3VzZUFJbXBsX1NldFByb3BlcnR5LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CglVbmRlciBzb21lIGNvbmRpdGlvbnMgaXRzIG5lY2Vzc2FyeSB0byBleHBsaWNpdGx5IHNob3cgdGhlCglzY3JvbGxiYXJzLgoKCSogd2luZG93cy9kaWFsb2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRGlzcGxheSBhbiBFUlIgb24gZXJyb3JzIHdoaWxlIGluaXRpYWxpemluZyBVU0VSLgoKCSogZGxscy9rZXJuZWwvdGltZS5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVJldHVybiBUSU1FX1pPTkVfSURfU1RBTkRBUkQgaW4gR2V0VGltZVpvbmVJbmZvcm1hdGlvbigpLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJSGFuZGxlIHNwZWNpYWwgY2FzZSB3aGVyZSBpdGVtSUQgPSAtMSAoc3BlY2lhbCBmb2N1cyByZWN0IGRyYXcpLgoKCSogZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglGaXggaW5zdWZmaWNpZW50IHJlY3Qgd2lkdGggdmFsdWUgaW4gcmVzb3VyY2UgZmlsZS4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglOZWVkIHRvIGdldCBhbnkgb3V0c3RhbmRpbmcgaW5wdXQgcHJpb3IgdG8gcmV0dXJuaW5nIG51bWJlci4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTb21lIGJ1Z2ZpeGVzLCBhbm90aGVyIGZ1bmN0aW9uIGZvciBwYWNrYWdpbmcsIGFuZCBzb21lIHRleHQKCXJlZm9ybWF0dGluZyBmcm9tIEVyaWMgTWFyeW5pYWsuCgoJKiBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW46CglSZW1vdmVkIG9ic29sZXRlIFRPT0xTVUJESVJTIGRlcGVuZGVuY3kuCgoJKiBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy91bmluc3RhbGxlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZWRsZy9NYWtlZmlsZS5pbiwgZGxscy9vbGVkbGcvb2xlZGxnLnNwZWMsIGRsbHMvb2xlc3ZyL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9vbGVzdnIzMi5zcGVjLCBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWMsIGRsbHMvcnBjcnQ0L01ha2VmaWxlLmluLCBkbGxzL3JwY3J0NC9ycGNydDQuc3BlYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGxpYnRlc3QvTWFrZWZpbGUuaW4sIG1pc2NlbXUvd2luZS5zcGVjLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgZGVidWdnZXIvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvTWFrZWZpbGUuaW4sIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMvbXNuZXQzMi9NYWtlZmlsZS5pbiwgZGxscy9tc25ldDMyL21zbmV0MzIuc3BlYzoKCUFkZGVkIGltcG9ydCBvZiBudGRsbC4KCgkqIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW4sIHVuaWNvZGUvTWFrZWZpbGUuaW4sIC5jdnNpZ25vcmUsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL01ha2VkbGwucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvLmN2c2lnbm9yZSwgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgbGlicmFyeS8uY3ZzaWdub3JlLCBsaWJyYXJ5L01ha2VmaWxlLmluLCBsaWJyYXJ5L3BvcnQuYywgbGlicmFyeS93aW5lc3R1Yi5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3BvcnQuYzoKCUJ1aWxkIG50ZGxsIGFzIGEgcmVhbCBkbGwsIGluY2x1ZGluZyBldmVyeXRoaW5nIHRoYXQgd2FzIHByZXZpb3VzbHkgaW4KCWxpYndpbmUuc28uIENyZWF0ZWQgYSBuZXcgKG1vc3RseSBlbXB0eSkgbGlid2luZS5zbyBpbiBsaWJyYXJ5LyBzdWJkaXIuCgoyMDAwLTEwLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvbXNjLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglERUJVR19Qcm9jZXNzREJHRmlsZTogdXNlIGEgc3RhY2sgdmFyaWFibGUgZm9yIHRoZSBleHRyYV9pbmZvLgoKCSogcmVsYXkzMi9zbm9vcC5jLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuaCwgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBsb2FkZXIvdGFzay5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUZpeGVkIGEgZmV3IGNvbXBpbGF0aW9uIHdhcm5pbmdzCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oLCBzZXJ2ZXIvaGFuZGxlLmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCU1vdmUgaW5saW5lIGFuZCBzdGF0aWMgdG8gdGhlIGJlZ2lubmluZyBvZiBkZWNsYXJhdGlvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNPTUJPRVhfRHJhd0l0ZW06IGNoZWNrIHJldHVybiB2YWx1ZSBvZiBTZW5kTWVzc2FnZUEoLi4uLENCX0dFVElURU1EQVRBLC4uLikKCgkqIHRvb2xzL3dpbmVjb25mOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIGEgJy1pbmlmaWxlJyBvcHRpb24gdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgdGhlIHdpbmUuaW5pIGZpbGUKCXVzZWQgaW4gdGhlIGJ1aWxkaW5nIG9mIHRoZSBuZXcgd2luZS5pbmkgZmlsZS4KCgkqIGRlYnVnZ2VyL21zYy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGVuYWJsZSBsb2FkaW5nIG9mIHBkYiBmaWxlcyBuYW1lZCBpbiBOQjEwIHJlY29yZHMgb2YgYSBkYmcgZmlsZQoJLSBkaXNhYmxlIHRpbWVzdGFtcCBjaGVjayBmb3IgcGRiIGZpbGVzCgoJKiB3aW4zMi9kZXZpY2UuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUXVpZXRlbiBWeERDYWxsX1ZNTSBvdXRwdXQuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJd2luZWluc3RhbGwgaW1wcm92ZW1lbnRzLCBtb3N0bHkgZm9yIHVzYWdlIGluIHBhY2thZ2UgcG9zdGluc3RhbGwKCXNjcmlwdHMuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaW5jbHVkZS9idWlsdGluMTYuaCwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmM6CglQYXRjaCBmbGF0IGNzIG9mIDE2LWJpdCBlbnRyeSBwb2ludHMgaWYgY3VycmVudCAlY3MgaXMgZGlmZmVyZW50IGZyb20KCWNvbXBpbGVkIHZhbHVlLCBhbmQgcmV0cmlldmUgZmxhdCBkcyBmcm9tIGEgZ2xvYmFsIHZhcmlhYmxlLiBUaGlzCglzaG91bGQgYXZvaWQgcHJvYmxlbXMgd2l0aCB3aW40bGluIGtlcm5lbHMuCgoJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3dpbnBvcy5jLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9udGRsbC9jcml0c2VjdGlvbi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZmlsZXMvZGlyZWN0b3J5LmMsIGluY2x1ZGUvbnRkZGsuaCwgbWVtb3J5L3JlZ2lzdHJ5LmM6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJQWRkZWQgYmFzaWMgd29ya2luZyBzdHVicyBvZiBuZXcgV2luZG93cyAyMDAwIEFQSSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL2xvY2FsLmgsIG1lbW9yeS9sb2NhbC5jOgoJUmVtb3ZlZCB1bnVzZWQgTE9DQUxfTG9ja1NlZ3B0ci4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9wYWxldHRlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVVzZSBHZXRTdG9ja09iamVjdCgpIGluc3RlYWQgb2YgdGhlIG1hZ2ljIFNUT0NLXyogaGFuZGxlcy4KCgkqIGRlYnVnZ2VyL21zYy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJREVCVUdfUHJvY2Vzc0RCR0ZpbGU6IGFsbG9jYXRlIE1TQ19EQkdfSU5GTyBiZWZvcmUgd3JpdGluZyB0byBtZW1iZXJzCglvZiB0aGF0IHN0cnVjdHVyZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJSW1wbGVtZW50IFNIR0ZJX0VYRVRZUEUgZnVuY3Rpb24gb2YgU0hHZXRGaWxlSW5mby4KCgkqIHdpbmRvd3Mvd2luaGVscC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBvcnQgZXJyb3JzIG9uIFdpbkhlbHAoKSBmYWlsdXJlcy4KCgkqIGRsbHMvY29tY3RsMzIvY29tYm9leC5jOgoJR3V5IEwuIEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCS0gaW1wcm92ZWQgdHJhY2UgaW5mb3JtYXRpb24KCS0gaW1wbGVtZW50ZWQgQ0JfU0VUSVRFTUhFSUdIVCwgV01fV0lORE9XUE9TQ0hBTkdJTkcsCgkgIFdNX01FQVNVUkVJVEVNLCBXTV9EUkFXSVRFTQoJLSBjaGFuZ2VkIENCRU1fSU5TRVJUSVRFTUEsIENCRU1fU0VUSU1BR0VMSVNULAoJICBXTV9DUkVBVEUsIFdNX0RFU1RST1kKCS0gYWJvdmUgY2hhbmdlcyBjb3JyZWN0IHdpbmRvdyByZWN0YW5nbGUsIGRyYXdzIGl0ZW1zLCBhbmQgY3JlYXRlcwoJICBjb250cm9sIGNvcnJlY3RseS4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CgktIGNvcnJlY3QgcHJvY2Vzc2luZyBvZiBSQkJTX0JSRUFLIHN0eWxlLgoJLSBoYW5kbGUgY2FzZXMgd2hlcmUgY3lDaGlsZCB3YXMgc2V0IHRvIC0xIGJ5IGFwcGwuIC0gdW5kb2N1bWVudGVkLgoJLSByZW1vdmUgc3BlY2lhbCBjb2RlIGZvciBDb21ib2JveGV4IHByb2JsZW0gKG5vdyBzb2x2ZWQpLgoJLSBmaXggc29tZSBwYWludGluZyBwcm9ibGVtcwoKMjAwMC0xMC0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlIGZvciBkd1RvdGFsVmlydHVhbC4KCVJldHVybiBhIG1vcmUgcGxhdXNpYmxlIHZhbHVlIGZvciBkd0F2YWlsVmlydHVhbC4KCgkqIG1pc2MvY3B1LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJUmV0dXJuIGEgbW9yZSBwbGF1c2libGUgdmFsdWUgZm9yIE1pbmltdW1BcHBsaWNhdGlvbkFkZHJlc3MuCgoJKiB0b29scy93aW5lYnVpbGQvbWFpbi5jLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6CglGZWRlcmljbyBTY2h3aW5kdCA8ZmdzY2hAY29yZS1zZGkuY29tPgoJRml4ZXMgZm9yIE9wZW5CU0QuCgoJKiBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZUl0ZW1Nb25pa2VyIG1heSBnZXQgTlVMTCBhcyBzekRlbGltLCBzb21lIGNsZWFudXBzLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgT2xlTG9hZEZyb21TdHJlYW06IERlcmVmZXJlbmNlIHBwdk9iaiBhbmQgZ2V0IElQZXJzaXN0U3RyZWFtCglpbnN0ZWFkIG9mIGFjY2Vzc2luZyBJVW5rbm93bi4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgZm9yIEh0dHBTZW5kUmVxdWVzdEV4QS4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJLSBzZXQgdGhlIGl0ZW0gaGVpZ2h0IG5vdCBvbmx5IGZvciB0aGUgbGlzdGJveCwgYnV0IGFsc28gZm9yIHRoZSB0ZXh0IGZpZWxkCgktIGNlbnRlciB0ZXh0IHZlcnRpY2FsbHkKCS0gYmVhdXRpZnkgY29tbWVudHMKCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbjoKCU1hdHRoZXcgQ2xhcmtlIDxNYXR0aGV3X0NsYXJrZUBtaW5kbGluay5iYy5jYT4KCURvbid0IGFzc3VtZSB3ZSBhcmUgYnVpbGRpbmcgaW4gdGhlIHNvdXJjZSB0cmVlLCBidXQgYWxsb3cgbWFrZSB0bwoJbG9jYXRlIHJlc291cmNlcy9kaXNwbGF5LnJjIGFuZCByZXNvdXJjZXMvbW91c2UucmMgdmlhIFZQQVRILgoKMjAwMC0xMC0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYywgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHdpbjMyL2V4Y2VwdC5jOgoJUmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gYSBzdHViIGVudHJ5IHBvaW50IGlzIGNhbGxlZC4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9zdHJ1Y3QzMi5jLCB3aW5kb3dzL3N0cnVjdDMyLmg6CglSZW1vdmVkIHVudXNlZCBTVFJVQ1QzMl9OQ0NBTENTSVpFIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvaW5wdXQuYywgY29udHJvbHMvbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBc2sgYXBwbGljYXRpb24gdG8gcmVpbml0aWFsaXplIGl0cyBtZW51IGJlZm9yZSBwcm9jZXNzaW5nIGFuCglhY2NlbGVyYXRvciBrZXkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglNYXJ0aW4gUGlsa2EgPG1waWxrYUBjb2Rld2VhdmVycy5jb20+CgkiU3RhcnRNZW51IiAtLT4gIlN0YXJ0IE1lbnUiLCAiU3RhcnR1cCIgLS0+ICJTdGFydFVwIi4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCUZpeGVkIHR5cG8gZHVlIHRvIG1lcmdlIGVycm9yLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglVcGRhdGVkIHRoZSBsb2FkIHByb2Nlc3Mgc28gdGhhdCBhbGwgdHlwZWxpYnMgKGFuZCBub3QganVzdCB0aGUgZmlyc3QKCW9uZSwgYXMgaXQgdXNlZCB0bykgc3RvcmVkIGluIGEgRExMIGNhbiBiZSBsb2FkZWQuCgoJKiBncmFwaGljcy9wYWludGluZy5jOgoJTWFyayBEdWZvdXIgPG0uZHVmb3VyQHN0dWRlbnQudHVkZWxmdC5ubD4KCUltcGxlbWVudGVkIFBvbHlEcmF3KCkgYW5kIEFuZ2xlQXJjKCkuCgoyMDAwLTEwLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQU5OT1VOQ0UsIENoYW5nZUxvZywgaW5jbHVkZS92ZXJzaW9uLmg6CglSZWxlYXNlIDIwMDAxMDI2LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTEwLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgd2luMzIvZXhjZXB0LmM6CglSYWlzZSBhbiBleGNlcHRpb24gd2hlbiBhIHN0dWIgZW50cnkgcG9pbnQgaXMgY2FsbGVkLgoKCSogd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL3N0cnVjdDMyLmMsIHdpbmRvd3Mvc3RydWN0MzIuaDoKCVJlbW92ZWQgdW51c2VkIFNUUlVDVDMyX05DQ0FMQ1NJWkUgZnVuY3Rpb25zLgoKCSogd2luZG93cy9pbnB1dC5jLCBjb250cm9scy9tZW51LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFzayBhcHBsaWNhdGlvbiB0byByZWluaXRpYWxpemUgaXRzIG1lbnUgYmVmb3JlIHByb2Nlc3NpbmcgYW4KCWFjY2VsZXJhdG9yIGtleS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCU1hcnRpbiBQaWxrYSA8bXBpbGthQGNvZGV3ZWF2ZXJzLmNvbT4KCSJTdGFydE1lbnUiIC0tPiAiU3RhcnQgTWVudSIsICJTdGFydHVwIiAtLT4gIlN0YXJ0VXAiLgoKCSogZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jOgoJRml4ZWQgdHlwbyBkdWUgdG8gbWVyZ2UgZXJyb3IuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVVwZGF0ZWQgdGhlIGxvYWQgcHJvY2VzcyBzbyB0aGF0IGFsbCB0eXBlbGlicyAoYW5kIG5vdCBqdXN0IHRoZSBmaXJzdAoJb25lLCBhcyBpdCB1c2VkIHRvKSBzdG9yZWQgaW4gYSBETEwgY2FuIGJlIGxvYWRlZC4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6CglNYXJrIER1Zm91ciA8bS5kdWZvdXJAc3R1ZGVudC50dWRlbGZ0Lm5sPgoJSW1wbGVtZW50ZWQgUG9seURyYXcoKSBhbmQgQW5nbGVBcmMoKS4KCjIwMDAtMTAtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBhbiBhbm90aGVyIHNwZWNpYWwgY2FzZSBoYW5kbGluZyBmb3IgU2hpZnQrW051bVBhZF1ERUwuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgc2VydmVyL01ha2VmaWxlLmluLCB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluOgoJS3Jpc3RvZmZlciBHbGVkaXRzY2ggPHRvZmZlckBwaW5nLnVpby5ubz4KCUFkZGVkIExERkxBR1MgdG8gbGlua2luZyBvZiB3aW5lLXJlbGF0ZWQgYmluYXJpZXMuCgoJKiBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVJlcGxhY2VkIFRvQXNjaWkgYnkgVG9Vbmljb2RlIGluIHRoZSBVc2VyIGRyaXZlciBpbnRlcmZhY2UuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJV2lsbGlhbSBXYWdob3JuIDx3d2FnaG9ybkBsaXRhbnkuZGVtb24uY28udWs+Cgl4Zjg2dm1vZGVfc2V0ZGlzcGxheW1vZGUoKSB3YXNuJ3QgcHJvcGVybHkgc2F2aW5nIHRoZSAncHJpdmF0ZScgZmllbGQKCW9mIHRoZSBYRjg2VmlkTW9kZU1vZGVMaW5lIHN0cnVjdHVyZS4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOgoJRnJhbmNvaXMgTWV0aG90IDxmcmFuY29pc21AbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IG9mIGJsaW5raW5nIHRodW1iIGFzIGZvdW5kIGluIFdpbmRvd3Mgc2Nyb2xsYmFyLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglVcGRhdGVkIHR5cGVsaWIgbG9hZGVyLiBUeXBlbGliIGNvbnRlbnRzIGNhbiBiZSBzdG9yZWQgYXMgbXVsdGlieXRlCglzdHJpbmdzLiBIb3dldmVyLCB0aGV5IGFyZSBhbHdheXMgcmV0dXJuZWQgdG8gdGhlIGFwcGxpY2F0aW9uIGFzIEJTVFIsCgllLmcuIFVOSUNPREUgc3RyaW5ncy4gQWxsIHN0cmluZ3MgYXJlIG5vdyBzdG9yZWQgYXMgQlNUUiBpbnN0ZWFkIG9mCglBU0NJSSBzdHJpbmdzLgoKCSogaW5jbHVkZS9tb2R1bGUuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJRnJlZSB0aGUgV2luMTYgZHVtbXkgbW9kdWxlIGFuZCB3bS0+ZGVwcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJTWFyayBEdWZvdXIgPG0uZHVmb3VyQHN0dWRlbnQudHVkZWxmdC5ubD4KCVgxMURSVl9EcmF3QXJjOiBzd2FwIHRoZSBzdGFydCBhbmQgZW5kIHBvaW50cyB3aGVuIGRyYXdpbmcgaW4KCWNsb2Nrd2lzZSBkaXJlY3Rpb24uCgoJKiBvYmplY3RzL3JlZ2lvbi5jOgoJQXZpYWQgUGluZWxlcyA8cGF2aWFkQG5ldHZpc2lvbi5uZXQuaWw+CglBdm9pZCBpbmZpbml0ZSBsb29wIGluIENyZWF0ZVJvdW5kUmVjdFJnbigpLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvZGlzcGxheS5zcGVjLCBkbGxzL3VzZXIvbW91c2Uuc3BlYywgZGxscy91c2VyL3Jlc291cmNlcy8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvcmVzb3VyY2VzL2Rpc3BsYXkucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvZGlzcGxheS5yYzE2LCBkbGxzL3VzZXIvcmVzb3VyY2VzL21vdXNlLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL21vdXNlLnJjMTYsIGlmMTYzMi9idWlsdGluLmMsIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3JlczE2LmMsIHRvb2xzL3dpbmVidWlsZC9yZXMzMi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC91dGlscy5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyAucmVzIGZpbGVzIGZvciAxNi1iaXQgcmVzb3VyY2VzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCVJlbW92ZWQgbm8gbG9uZ2VyIHVzZWQgc3RydWN0dXJlIGRlZmluaXRpb24uCgoJKiB0b29scy93cmMvd3JpdGVyZXMuYzoKCTE2LWJpdCByZXNvdXJjZSBzaXplIG11c3QgYmUgc2NhbGVkIGJ5IGFsaWdubWVudC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IFRDU19WRVJUSUNBTCBzdHlsZS4gIEZpeCB0YWIgYm9yZGVycyB0byBoYXZlIHNoYWRpbmcgdGhhdAoJbWF0Y2hlcyBXaW5kb3dzLiAgQ2VudGVyIGltYWdlIGFuZCB0ZXh0IGluIHRhYnMuICBTaXplIHRhYnMgdG8KCWNvbXBsZXRlbHkgZmlsbCBlYWNoIHJvdyB3aXRoIG11bHRpbGluZSBzdHlsZS4gIEZpeCBwb3NpdGlvbmluZyBvZgoJdGFicyBmb3IgVENTX0JPVFRPTSBzdHlsZS4gIEZpeCB2YXJpb3VzIGRyYXdpbmcgaXNzdWVzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU3VzYW4gRmFybGV5IDxzdXNhbkBjb2Rld2VhdmVycy5jb20+CgktIFdoZW4gaW5zZXJ0aW5nIGFuIGl0ZW0sIGRvIG5vdCBpbnZhbGlkYXRlIHRoZSBhcmVhIGFib3ZlIHRoZSBuZXcKCSAgaXRlbS4KCS0gVGhlIGRlYnVnIGZ1bmN0aW9uIHRoYXQgdmVyaWZpZXMgdGhlIHRyZWUgYWZ0ZXIgZWFjaCBpbnNlcnRpb24KCSAgc2hvdWxkIGJlIGRpc2FibGVkIGJ5IGRlZmF1bHQuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglSZWltcGxlbWVudCBwYXRjaCBieSBNYXJjdXMgTWVpc3NuZXIgKCc5OCkgdG8gImZpeCIgcHJvYmxlbXMgd2l0aAoJRFNDQVBTX0VNVUxEUklWRVIgZmxhZyBmb3IgZ2FtZXMgbGlrZSBRdWFrZSAyIGFuZCBVbnJlYWwgVG91cm5hbWVudC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglUcmFuc2Zvcm0gZGV2aWNlIG9wZW4gZXJyb3IgVFJBQ0UoKXMgaW50byBXQVJOKCk7IGJldHRlciBlcnJvciBtc2dzLgoKCSogd2luZG93cy93aW5wb3MuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJbiBTV1BfRG9OQ0NhbGNTaXplKCkgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBjbGllbnQgYXJlYSBoYXMKCW1vdmVkLCB1c2UgdGhlIGNsaWVudCBjb29yZGluYXRlcyBhcyB0aGV5IGFyZTogbm90IHJlbGF0aXZlIHRvIGl0cwoJd2luZG93IGNvb3JkaW5hdGVzLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgU1BJX0dFVFdJTkRPV1NFWFRFTlNJT04uCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgYSBXSU5FTE9BREVSIGVudmlyb25tZW50IHZhcmlhYmxlIHdoaWNoIGFsbG93cyB0aGUKCXNwZWNpZmljYXRpb24gb2YgYSBkaWZmZXJlbnQgYmluYXJ5IGxvYWRlci4KCjIwMDAtMTAtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCVJlbW92ZWQgR2V0UmVzRGlyRW50cnlBL1cuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jOgoJSW1wbGVtZW50IEludGVybmFsRXh0cmFjdEljb24gYnkgY2FsbGluZyBQcml2YXRlRXh0cmFjdEljb25zIGluc3RlYWQKCW9mIGR1cGxpY2F0aW5nIGFsbCB0aGUgY29kZS4KCgkqIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3V0aWxzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQWRkZWQgY29kZXBhZ2UgdHJhbnNsYXRpb24gYmFzZWQgb24gdGhlIGxhbmd1YWdlIGlkIChiYXNlZCBvbiBhIHBhdGNoCglieSBKdW5pY2hpIEt1Y2hpbmlzaGkgPGprdWNoaUBtYWhvcm9iYS5uZS5qcD4pLgoKCSogY29udHJvbHMvbWVudS5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNvbnZlcnRlZCBtZW51IHN0cmluZyBoYW5kbGluZyB0byBVbmljb2RlLgoKCSogZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGZvcndhcmQgZm9yIFdTQVJlc2V0RXZlbnQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29udmVydCB0aGUgdmFsdWUgb2YgbGV2ZWwgd2hlbiBzZXRzb2Nrb3B0IGlzIGNhbGxlZCB3aXRoCglXU19TT19ET05UTElOR0VSLgoKCSogbWlzYy9vcHRpb25zLmMsIHNlcnZlci9yZXF1ZXN0LmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL3dpbmVwcy9pbml0LmMsIGlmMTYzMi90aHVuay5jLCBsb2FkZXIvdGFzay5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglFeHBsaWNpdGx5IGluaXRpYWxpemUgc3RydWN0dXJlcy4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEV4cGxpY2l0bHkgaW5pdGlhbGl6ZSBzdHJ1Y3R1cmVzLgoJLSBGaXhlZCBzdHJhbmdlIGNvZGUgcHJvYmFibHkgY2F1c2VkIGJ5IGEgbWVyZ2UgY29uZmxpY3QuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCS0gQWxsIGF1ZGlvIGRldmljZSBoYW5kbGVzIGFyZSBpbml0aWFsaXplZCB0byAtMSBhbmQgc2V0IHRvIC0xIHdoZW4gY2xvc2VkLgoJLSBXSU5FX1dNX0hFQURFUiBldmVudCBzaG91bGQgKk5PVCogbWFrZSB0aGUgcmVjb3JkaW5nIHRocmVhZCBzdGFydC4gVGhlCgkgIHRocmVhZCBzaG91bGQgb25seSBzdGFydCB0aHJvdWdoIHdhdmVJblN0YXJ0LiBUaGUgYXBwbGljYXRpb24gY2FsbGluZwoJICB3YXZlSW5BZGRCdWZmZXIgbWlnaHQgbm90IGJlIGluIGEgc3RhdGUgdG8gcHJvdmlkZSBhbm90aGVyIGJ1ZmZlciBpbgoJICBhIHBlcmlvZCBvZiB0aW1lIHNob3J0IGVub3VnaCB0byBhdm9pZCBidWZmZXIgdW5kZXJydW4gaW4gd2lkUmVjb3JkZXIKCSAgdGhyZWFkLgoJLSB3aWRSZWNvcmRlciAtIGltcHJvdmVkIHJvYnVzdG5lc3Mgb2Ygd2lkUmVjb3JkZXIgdG8gYXZvaWQgc29tZSBkYXRhCgkgIGxvc3MgdGhhdCBvY2N1cmVkIHdoZW4gbm90IHJlYWRpbmcgb25lIGZ1bGwgZnJhZ21lbnQgZnJvbSB0aGUgT1NTCgkgIGF1ZGlvIGRyaXZlci4KCgkqIGRsbHMvZGRyYXcvZGRyYXcveDExLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2Nkcm9tLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbmVzIGZvciBub24tTGludXguCgoJKiB0b29scy93aW5lYnVpbGQvcmVzMzIuYzoKCURhdmlkIEVsbGlvdHQgPGRmZUBpbmZpbml0ZS1pbnRlcm5ldC5uZXQ+CglGaXhlZCBPRkZTRVRPRiBtYWNybyBkZWZpbml0aW9uIGZvciBnY2MgMi45Ni4KCgkqIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3R1YnMgZm9yIENyeXB0R2VuUmFuZG9tKCksIENyeXB0UmVsZWFzZUNvbnRleHQoKS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglTdXNhbiBGYXJsZXkgPHN1c2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCURvIG5vdCBibG9jayBDQk5fRURJVENIQU5HRSBmb3IgV01fUEFTVEUgb3IgV01fQ1VUIHdpdGggdGhlCglOT0VESVROT1RJRlkgZmxhZywgYXMgdGhlc2UgbXNncyBjYW4gY29tZSBkaXJlY3RseSBmcm9tIHRoZSBhcHAgdG8gdGhlCgljb21ibyB3bmRwcm9jLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNYWtlIEVudW1FbmhNZXRhRmlsZSB3b3JrLgoKCSogZGxscy9ycGNydDQvcnBjcnQ0LnNwZWMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgUnBjU3RyaW5nRnJlZUEgYW5kIFV1aWRUb1N0cmluZ0EuCgoyMDAwLTEwLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvdW5pbnN0YWxsZXIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL3VuaW5zdGFsbGVyLnNwZWMsIHByb2dyYW1zL3ZpZXcvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy92aWV3LnNwZWMsIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWMsIHByb2dyYW1zL3dpbmVtaW5lLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS93aW5lbWluZS5zcGVjLCBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5zcGVjLCByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy9tYWtlZGVwLmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvLmN2c2lnbm9yZSwgZGxscy93aW5lcHMvLmN2c2lnbm9yZSwgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2lubW0uc3BlYywgaWYxNjMyL01ha2VmaWxlLmluLCBsaWJ0ZXN0Ly5jdnNpZ25vcmUsIGxpYnRlc3QvTWFrZWZpbGUuaW4sIGxpYnRlc3QvaGVsbG8zLnNwZWMsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svY2xvY2suc3BlYywgcHJvZ3JhbXMvY21kbGd0c3QvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LnNwZWMsIHByb2dyYW1zL25vdGVwYWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnNwZWMsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9wcm9nbWFuLnNwZWMsIE1ha2UucnVsZXMuaW4sIGRsbHMvY29tY3RsMzIvLmN2c2lnbm9yZSwgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbW1kbGcvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvc2VyaWFsdWkvLmN2c2lnbm9yZSwgZGxscy9zZXJpYWx1aS9zZXJpYWx1aS5zcGVjLCBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kaXNwbGF5LnNwZWMsIGRsbHMvdXNlci9tb3VzZS5zcGVjLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWM6CglCdWlsZCBXaW4zMiByZXNvdXJjZXMgYXMgLnJlcyBmaWxlcyBhbmQgZHVtcCB0aGVtIGludG8gdGhlIC5zcGVjLmMgZmlsZS4KCgkqIHRvb2xzL3dpbmVidWlsZC9NYWtlZmlsZS5pbiwgdG9vbHMvd2luZWJ1aWxkL2J1aWxkLmgsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3JlczMyLmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmM6CglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIFdpbjMyIC5yZXMgZmlsZXMuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy91c2VyL2Rpc3AucmMsIGRsbHMvdXNlci9tb3VzZXJjLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL1RPRE8sIGRsbHMvdXNlci9yZXNvdXJjZXMvZGlzcGxheS5yYzE2LCBkbGxzL3VzZXIvcmVzb3VyY2VzL21vdXNlLnJjMTYsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9DYS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfQ3MucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0RhLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9EZS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRW4ucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0VvLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Fcy5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfRmkucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0ZyLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9IdS5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfSXQucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX0phLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Lby5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfTmwucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX05vLnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9QbC5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfUHQucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1J1LnJjLCBkbGxzL3VzZXIvcmVzb3VyY2VzL3VzZXIzMl9Tay5yYywgZGxscy91c2VyL3Jlc291cmNlcy91c2VyMzJfU3YucmMsIGRsbHMvdXNlci9yZXNvdXJjZXMvdXNlcjMyX1dhLnJjOgoJTW92ZWQgYWxsIFVTRVIgcmVzb3VyY2VzIHRvIG5ldyBkbGxzL3VzZXIvcmVzb3VyY2VzIGRpcmVjdG9yeS4KCgkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW52ZXIuaCwgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvdmVyc2lvbi92ZXIuc3BlYywgZGxscy92ZXJzaW9uL3ZlcjE2LmM6CglEdXBsaWNhdGUgcmVzb3VyY2UgZGlyZWN0b3J5IHNlYXJjaGluZyByb3V0aW5lcyBpbnN0ZWFkIG9mIGNhbGxpbmcKCXBlX3Jlc291cmNlLmMgaW50ZXJuYWwgZnVuY3Rpb25zLgoJTWFkZSBHZXRGaWxlUmVzb3VyY2UxNiBhbmQgR2V0RmlsZVJlc291cmNlU2l6ZTE2IGNhbGxhYmxlIGRpcmVjdGx5CglpbnN0ZWFkIG9mIGRlZmluaW5nIGV4dHJhIGludGVybmFsIGZ1bmN0aW9ucy4KCgkqIGRsbHMvdXNlci9leHRpY29uLmM6CglEdXBsaWNhdGUgcmVzb3VyY2UgZGlyZWN0b3J5IHNlYXJjaGluZyByb3V0aW5lcyBpbnN0ZWFkIG9mIGNhbGxpbmcKCXBlX3Jlc291cmNlLmMgaW50ZXJuYWwgZnVuY3Rpb25zLgoKCSogdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglGaXhlZCBkdXBsaWNhdGlvbiBvZiB0eXBlbmFtZSBpbiAxNi1iaXQgYXNzZW1ibHkgb3V0cHV0LgoKCSogbWVtb3J5L2hlYXAuYzoKCUZpeGVkIG11bHRpYnl0ZSBoYW5kbGluZyBpbiBIRUFQX3N0cmR1cEF0b1cuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgaW5jbHVkZS9jZHJvbS5oLCBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDJmLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFsd2F5cyBvcGVuL2Nsb3NlIHRoZSBDRC1ST00gZGV2aWNlIGZvciBldmVyeSBXaW5kb3dzIEFQSSBDRC1ST00KCWFjY2Vzcy4KCgkqIGNvbnRyb2xzL2VkaXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG8gbm90IHNlbmQgRU5fVVBEQVRFIHRvIG11bHRpLWxpbmUgZWRpdCBjb250cm9scy4KCgkqIGNvbnRyb2xzL21lbnUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJRml4ZWQgdGhlIHRleHQgY29sb3Igb2YgaGlnbGlnaHRlZCBtZW51IGJhciBpdGVtIGZvciB0aGUgV2luOTggbG9vay4KCUNsaWNraW5nIG9uIGEgc2VwYXJhdG9yIHNob3VsZCBub3QgY2xvc2UgdGhlIG1lbnUuCglEbyBub3QgcmlnaHQgYWxpZ24gJ2JpdG1hcCcgaXRlbXMgYW5kIHRoZSBoZWxwIG1lbnUgZm9yIHRoZSBXaW45eCBsb29rCglhbmQgZmVlbHMuCgoJKiBmaWxlcy9kb3NfZnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWYgd2UgaGF2ZSBhIGRyaXZlIHBvaW50aW5nIHRvIC8sIHdlIG11c3Qgbm90IHJlbW92ZSB0aGUgZmluYWwgLyBvciB3ZQoJZ2V0IHRoZSBjdXJyZW50IGRpcmVjdG9yeSBkb3VibGVkLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmgsIGluY2x1ZGUvZGRyYXcuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc29tZSBiYXNpYyBJRGlyZWN0RHJhdzcgaW50ZXJmYWNlIHN1cHBvcnQsIGZpeGVkIGFyZ3VtZW50IGNvdW50CglvZiBJRGlyZWN0RHJhd3s0LDd9X1NldERpc3BsYXlNb2RlIGRlZmluZXMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJLSBDYWxjdWxhdGUgY2hhbmdlcyBpbiB0aGUgY2xpZW50IGFyZWEgcmVsYXRpdmUgdG8gdGhlIHdpbmRvdwoJICBpbnN0ZWFkIG9mIGl0cyBwYXJlbnQgd2hlbiB1c2luZyBTV1BfRVhfUEFJTlRTRUxGLgoJLSBXaXRoIFNXUF9FWF9QQUlOVFNFTEYsIGNvcHkgb25seSBpZiBjbGllbnQgYXJlYSBjaGFuZ2VkLCBzaW5jZSBhCgkgIHdpbmRvdyBjYW4ndCBtb3ZlIHJlbGF0aXZlIHRvIGl0c2VsZi4KCS0gSW4gU1dQX0RvTkNDYWxjU2l6ZSwgd2hlbiBkZXRlcm1pbmluZyBpZiB0aGUgY2xpZW50IGFyZWEKCSAgY2hhbmdlZCwgdXNlIHZhbHVlcyByZWxhdGl2ZSB0byB0aGUgd2luZG93IGl0c2VsZiwgbm90IGl0cyBwYXJlbnQuCgoJKiBvYmplY3RzL3JlZ2lvbi5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHBhaW50aW5nIHByb2JsZW1zIGluIG5vbi1NTV9URVhUIG1vZGVzLgoKMjAwMC0xMC0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2Rvc19mcy5jLCBtc2Rvcy9kb3Njb25mLmMsIHNlcnZlci9yZWdpc3RyeS5jLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglKb2VyZyBNYXllciA8am1heWVyQGxvcGxvZi5kZT4KCVJlZHVjZSB0aGUgbnVtYmVyIG9mIHdhcm5pbmdzIGFib3V0IG1pc3NpbmcgaW5pdGlhbGl6ZXJzLgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHb3QgcmlkIG9mIG1pc2xlYWRpbmcgIk5vIFRscyBTcGFjZSIgZXJyb3IgbWVzc2FnZS4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXNlIGludGVybWVkaWF0ZSB0eXBlZGVmLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvb2xlMmRpc3AuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvdHlwZWxpYi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc2FjbTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9zcHkuYywgaW5jbHVkZS9zcHkuaDoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCB3UGFyYW0gYW5kIGxQYXJhbSBhcyBwYXJhbWV0ZXJzIGluIFNQWV9FeGl0TWVzc2FnZQoJQWRkZWQgZHVtcCBmb3IgdGhlIFNUWUxFQ0hBTkdbSU5HfEVEXSBtZXNzYWdlcy4KCUR1bXAgc3RydWN0dXJlcyBvbiBleGl0IG9ubHkgaWYgbWVzc2FnZSBhbGxvd3MgY2hhbmdlcy4KCgkqIHdpbjMyL2V4Y2VwdC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIFByaW50IENTIHJlZyBhdCBjcmFzaCBNZXNzYWdlQm94IChuZWVkZWQgZm9yIFdpbjE2IHByb2dyYW1zKS4KCS0gQWRkICJoaW50IiBmb3IgZGVidWdnZXIgc2V0dXAuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvd2luZWRiZy5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhZHZhcGkzMiB0byBpbXBvcnRlZCBETExzIGxpc3QuCgoJKiBkbGxzL21zYWNtL3BjbWNvbnZlcnRlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtb3JlIGNvbnZlcnNpb24gcm91dGluZXMgKHJhdGUgY29udmVyc2lvbiBpcyBpbXBsZW1lbnRlZCkuCglDbGVhbmVkIHVwIHRoZSBjb2RlLgoKCSogZGVidWdnZXIvbXNjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVBEQiBzeW1ib2wgaGVhZGVyIGZvcm1hdCBkZXBlbmRzIG9ubHkgb24gdmVyc2lvbiBjb2RlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3Qgc2V0IHRoZSBpU3ViSXRlbSBwYXJ0IG9mIHRoZSBzdHJ1Y3QgZm9yIExWTV9ISVRURVNULAoJYXBwbGljYXRpb25zIG9ubHkgbmVlZCB0byBwYXNzIG1lbW9yeSBzcGFjZSB1cCB0byBpSXRlbS4KCgkqIFJFQURNRTogQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglNZW50aW9uIHRoYXQgeW91IG5lZWQgdGhlIFgxMSBkZXZlbCBmaWxlcy4KCgkqIGRsbHMvZGRyYXcvbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEaXJlY3REcmF3Q3JlYXRlRXgoKSBzaG91bGQgYWxyZWFkeSByZXR1cm4gdGhlIGludGVyZmFjZSBmb3IgdGhlCglwYXNzZWQgcmVmaWlkLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQ2hhbmdlIHRoZSB3aWR0aCAvIGhlaWdodCBwYXJhbWV0ZXIgb24gYSBTZXREaXNwbGF5TW9kZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeGVkIGJ1ZyB3aGVuIGNoYW5naW5nIGRyaXZlcyBpbiAxNiBiaXQgc3R5bGUgZGlhbG9nIGZvciBhIDMyIGJpdCBhcHAKCSsgbWlzY2VsbGFuZW91cyBmaXhlcy4KCgkqIGRsbHMvdXNlci9leHRpY29uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHR3byBjaGVja3MgZm9yIG91dCBvZiByYW5nZSBwb2ludGVyIGFjY2Vzc2VzLgoKCSogZGVidWdnZXIvdHlwZXMuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZmxvYXRpbmcgcG9pbnQgZGF0YSBwcmludGluZyBhbmQgbWFkZSBiYXNpYyB0eXBlcyByZWFkaW5nIG1vcmUKCXJvYnVzdC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglKYXNvbiBNYXdkc2xleSA8amFzb25AbWFjYWRhbWlhbi5jb20+CglGaXhlZCBzb21lIGZsaWNrZXJpbmcgdGhhdCB3YXMgb2NjdXJyaW5nIGluIHRoZSBpbWFnZSBsaXN0IGNvbnRyb2wKCXdoZW4gaXQgcmVwYWludGVkLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHNsZWVwIHRpbWUgY2FsY3VsYXRpb24gZm9yIHRoZSB3b2RQbGF5ZXIgdGhyZWFkLgoJQ2hhbmdlZCB0aGUgd29kUGxheWVyIHRocmVhZCBtZXNzYWdpbmcgdG8gdXNlIGl0cyBvd24gZmFzdCAzMCBlbnRyaWVzCglyaW5nIGJ1ZmZlciBsaXN0LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgcmVkdW5kYW50IHRocmVhZCBwcmlvcml0eSBkZWZpbmVzLgoKMjAwMC0xMC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIGNydC9tc3ZjcnQgdGhyZWFkIHByb3RvdHlwZXMuCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYXN5bmNocm9ub3VzIHJlY29yZGluZyBpbiBNQ0kgbGF5ZXIuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkZWQgc3VwcG9ydCBmb3IgQVpFUlRZIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCVNlcXVlbmNlciBlcnJvciBtZXNzYWdlIGZpeC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUZpeCBtZXNzYWdlcyBzZW50IHdoZW4gcmlnaHQtY2xpY2tpbmcgaW4gYSBibGFuayAobm9uLWl0ZW0pIGFyZWEgb2YgYQoJbGlzdHZpZXcuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVBhc3MgdGhlIGNvcnJlY3QgaEZpbGUgdG8gUEVfQ3JlYXRlTW9kdWxlLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURyYXcgdGV4dCBhbmQgaWNvbnMsIGltcGxlbWVudCBvcmRlcmluZyBmdW5jdGlvbnMsIGFsbG93IHJlb3JkZXJpbmcKCXdpdGggbW91c2UgYW5kIGZpeCB0aGUgV01fTk9USUZZIHRhcmdldC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIHN1cHBvcnQgZm9yIEFaRVJUWSBrZXlib2FyZCBsYXlvdXQuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL2dyb3VwLmMsIHByb2dyYW1zL3Byb2dtYW4vZ3JwZmlsZS5jLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uaCwgcHJvZ3JhbXMvcHJvZ21hbi9wcm9ncmFtLmM6Cgk8ZXdpbGxAbmNhbC52ZXJpby5jb20+CglDaGFuZ2VkIEdST1VQIHRvIFBST0dHUk9VUC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvd2lubnQuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAY29kZXdlYXZlcnMuY29tPgoJU2tpcCBkaXJlY3Rvcnkgc3ltbGlua3MgaW4gRE9TRlNfRmluZE5leHRFeC4KCgkqIGRsbHMvd2luZXBzL2VzY2FwZS5jOiBCcmlhbiBQaXJpZQoJQWRkZWQgc3VwcG9ydCBmb3IgUEFTU1RIUk9VR0ggYW5kIFBPU1RTQ1JJUFRfUEFTU1RIUk9VR0ggZXNjYXBlcy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvd2luaW5ldC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkL2ZpeGVkIG1pc3NpbmcgZXh0ZXJuICJDIi4KCgkqIGNvbnNvbGUvaW50ZXJmYWNlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBjaGFyL05VTEwgY29tcGFyaXNvbi4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUge0hSRVNVTFQsU0NPREV9X1NFVkVSSVRZIG1hY3Jvcy4KCgkqIGRsbHMvdXNlci9leHRpY29uLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvcGVfcmVzb3VyY2UuYywgZGxscy9zaGVsbDMyL3NoZWxsLmM6CglVc2UgYSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQgZW50cmllcyBpbiByZXNvdXJjZSBkaXJlY3Rvcmllcy4KCUZpeGVkIEdldFJlc0RpckVudHJ5QS9XIHByb3RvdHlwZXMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJQ2FsbCBQcml2YXRlRXh0cmFjdEljb24gaW4gdXNlcjMyIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGNvZGUuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCVNob3VsZCB0ZXN0IHVuaXhkZXYgYWdhaW5zdCAtMSAoc2VlIHdvZE9wZW4vd2lkT3BlbikuCgl3aWRSZWNvcmRlcjogYnl0ZXNSZWFkIGlzIG5vdyB0ZXN0ZWQgYWdhaW5zdCAoRFdPUkQpIC0xLgoKCSogbG9hZGVyL2VsZmRsbC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglCYWNrIG91dCBteSBFTEZETExfZGxvcGVuIHBhdGNoIGFuZCBhZGQgYSB3YXJuaW5nIGZvciBmdXR1cmUgbWlzZ3VpZGVkCgloYWNrZXJzLgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBmcmVlaW5nIGxvY2tlZCBnbG9iYWwgbWVtb3J5IGhhbmRsZXMuCgoJKiB3aW5kb3dzL21kaS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW1tZDEuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXYXRjaCBvdXQgZm9yIERlZk1ESUNoaWxkUHJvYyBjYWxscyBvbiBub24tTURJLWNoaWxkIHdpbmRvd3MuCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbW1kMS5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGhvbGQgdGhlIFgxMSBsb2NrIHdoaWxlIGNhbGxpbmcgR0RJIG9iamVjdCByb3V0aW5lcy4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRG8gbm90IGRvIGFueSBHTFggY2FsbHMgb24gYSBkaXNwbGF5IHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBHTFguCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJUmVjYWxjdWxhdGUgbkl0ZW1IZWlnaHQgd2hlbiBMVlNfU0VUSU1BR0VMSVNUIGlzIGNhbGxlZC4gIEZpeGVzIGljb25zCgliZWluZyBjaG9wcGVkIG9mZiBpbiB0aGUgZmlsZSBkaWFsb2cgd2luZG93LiAgQWxpZ24gaXRlbXMgdG8gdG9wIGFuZAoJcmVmcmVzaCBhZnRlciBzb3J0aW5nLCBhcyB3aW5kb3dzIGRvZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmMsIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3Auc3BlYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCVN0dWIgQ3JlYXRlRGlzcFR5cGVJbmZvLCBDcmVhdGVTdGREaXNwYXRjaDE2IGFuZCBDcmVhdGVTdGREaXNwYXRjaC4KCgkqIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkIHByb3BlciBtZXNzYWdlIHJlcGx5IG1lY2hhbmlzbSBhbmQgc3AgcGxheWVyIGRhdGEgc3RvcmFnZQoJLSBNb3JlIGltcGxlbWVudGF0aW9uIGFuZCBmaXhlcwoKCSogaW5jbHVkZS9wb3BwYWNrLmgsIGluY2x1ZGUvcHNocGFjazEuaCwgaW5jbHVkZS9wc2hwYWNrMi5oLCBpbmNsdWRlL3BzaHBhY2s0LmgsIGluY2x1ZGUvcHNocGFjazguaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciB0aHJlZSBsZXZlbHMgb2YgbmVzdGluZyBvZiB0aGUgJ3ByYWdtYSBwYWNrJwoJZGlyZWN0aXZlcy4KCjIwMDAtMTAtMTcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnQyMC5jLCBtc2Rvcy9pbnQyMS5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgRE9TIElOVDIxIEFIPTRCIChFWEVDKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBzdXBwb3J0IGZvciBrZXlib2FyZCBpbnB1dCBpbiB2YXJpb3VzIGxvY2FsZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5AY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50IExWTV9TRVRJVEVNUE9TSVRJT04zMi4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlbWVtYmVyIG93bmVyIEhXTkQgd2hlbiBjcmVhdGluZyBhbmQgdXNlIHRoaXMgaHduZCBmb3IgdGhlIFdNX05PVElGWQoJbWVzc2FnZSB0YXJnZXQuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQWRkZWQgZmxhZyBhbmQgbm90aWZpY2F0aW9uIGRlZmluaXRpb25zIGZvciBDb21ib0JveEV4LgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIG9sZCBXaW4gMi54IHN0cmluZyBmdW5jdGlvbnMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVdhcm5pbmcgZml4LgoKCSogc2VydmVyL3B0cmFjZS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGQgYXBwcm9wcmlhdGUgY2FzdHMgdG8gY2FkZHJfdCBmb3IgdGhlIHRoaXJkIHBhcmFtZXRlciBvZiBwdHJhY2UoKS4KCjIwMDAtMTAtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgY291cGxlIG9mIHJlY2VudCBidWdzLCBhbmQgYWRkZWQgc29tZSBtb3JlIHNhZmVndWFyZHMgKGNvdWxkCgliZSBoYW5keSBmb3IgcG9ydGFiaWxpdHkgYW55d2F5KSBhbmQgdHJhY2Ugc3RhdGVtZW50cy4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvc2VyaWFsLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBpbmNsdWRlL3NlcnZlci5oLCBkbGxzL2tlcm5lbC9jb21tLmMsIGZpbGVzL2Rvc19mcy5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglDb252ZXJ0ZWQgYSBmZXcgbW9yZSBzZXJ2ZXIgcmVxdWVzdHMgdG8gdGhlIG5ldyBtZWNoYW5pc20uCgoJKiBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvcmVnLmMsIGluY2x1ZGUvbnRkZGsuaDoKCUZpeGVkIGEgZmV3IHByb3RvdHlwZXMuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZG9zbWVtLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglTZXQgc2VsZWN0b3IgMDAwMEggYmFzZSB0byAweGYwMDAwIHVudGlsIHRoZSBmaXJzdCA2NEsgYXJlCgl1bnByb3RlY3RlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFNoZWxsTWVzc2FnZUJveFtBV10gYnVmZmVycyB1c2FnZSAoaW4gc29tZSBjYXNlcywgd3JvbmcgYnVmZmVycwoJd2VyZSB1c2VkIDsgZGVzdGluYXRpb24gYnVmZmVyIGRvZXNuJ3QgaGF2ZSBhIGZpeGVkIHNpemUpLgoJRml4ZWQgRm9ybWF0TWVzc2FnZSBwYXJhbWV0ZXIgd2FybmluZ3MgKGl0J3Mgbm93IGEgdmFfbGlzdCopLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBvcmlnX21vZGUuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRHJhdyB0aGUgc2Nyb2xsYmFyIGJlc2lkZSB0aGUgYnVkZHkgd2hlbiBuZWl0aGVyIFVEU19BTElHTltSSUdIVHxMRUZUXQoJaXMgZ2l2ZW4uCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglMb2NhbGl6YXRpb24gYW5kIGV4cGVjdCBsZWFwZGF5cyB3aGVuIGxvb2tpbmcgZm9yIHRoZSBsZW5ndGggb2YgYQoJbW9udGguCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglMb2NhbGl6YXRpb24gYW5kIG1hbnkgY2hhbmdlcyB0byBiZWhhdmlvdXIgYW5kIG91dGxvb2suCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bF9EZS5yYywgZGxscy9jb21jdGwzMi9jb21jdGxfRW4ucmMsIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNwbGl0IG91dCByZXNvdXJjZXMgdGhhdCBtaWdodCBiZSBsb2NhbGl6ZWQuCglBZGRlZCBHZXJtYW4gcmVzb3VyY2VzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYWRkaXRpb25hbCByZXNvdXJjZSBJRHMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YmJlZCBMb29rdXBBY2NvdW50TmFtZUEuCgoJKiBkbGxzL2RkcmF3L21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV0dXJuICJkZWZhdWx0IiBEaXJlY3REcmF3IGRyaXZlciBpZiB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBkcml2ZXIKCXJlZ2lzdGVyZWQuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglGaXhlZCBiZWhhdmlvdXIgb2Ygd2luZG93J3Mgc3lzdGVtIGJ1dHRvbnMuCgoJKiBkbGxzL3VzZXIvcmVzb3VyY2UuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglMb2FkU3RyaW5nQSBpbnNlcnRzIHRlcm1pbmF0aW5nIG51bGwgaW4gdGhlIGJ1ZmZlciB3aGVuIHRoZSBzdHJpbmcKCXJlc291cmNlIGlzIGFuIGVtcHR5IHN0cmluZyBvciB3aGVuIGl0IGNhbiBub3QgYmUgZm91bmQuCgoyMDAwLTEwLTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcHMvb2NyX2hhbmQsIGluY2x1ZGUvd2ludXNlci5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRoZSBJRENfSEFORCBjdXJzb3IuCgoJKiBkbGxzL2tlcm5lbC9mb3JtYXRfbXNnLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIHRoZSBzaWduYXR1cmUgb2YgdGhlIEZvcm1hdE1lc3NhZ2UgQVBJcy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvbWN4LmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCVRoZSBNT0RFTSBzdHVmZiBoYXMgYmVlbiBzcHVuIG9mZiB0byBpdHMgcmlnaHRmdWwgcGxhY2U6IG1jeC5oLgoKCSogaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnNvY2suaCwgaW5jbHVkZS93aW5kb3dzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQ29tcGxldGVkL2NvcnJlY3RlZCB0aGUgbGlzdCBvZiBpbmNsdWRlIGZpbGVzLgoJSGFuZGxlIFdJTjMyX0xFQU5fQU5EX01FQU4gYW5kIHRoZSBOT3h4eCBtYWNyb3MuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGEgTk9HREkgcHJvdGVjdGlvbi4KCVJlcGxhY2VkIF9NQVhfUEFUSCB3aXRoIE1BWF9QQVRILgoJI3VuZGVmIGNhbiBiZSB1c2VkIGRpcmVjdGx5IG9uIFRSQU5TUEFSRU5ULgoKCSogaW5jbHVkZS9vbGUyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTXVzdCBpbmNsdWRlIG9iamJhc2UuaC4KCgkqIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBpbmNsdWRlL3dpbmRlZi5oLCBkbGxzL2tlcm5lbC9jb21tLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJSEZJTEUgaXMgYW4gaW50LCBub3QgYSByZWd1bGFyIEhBTkRMRS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgTVNHRl9EREVNR1IuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBpbmNvcnJlY3QgZm9ybWF0IHN0cmluZy4KCgkqIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBjaGFuZ2luZyBtb3VzZSBjdXJzb3Igd2hlbiBvdmVyIGEgaGVscCB0b3BpYyBsaW5rLgoKCSogZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIERpcmVjdElucHV0Q3JlYXRlRXguCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CglEbyBub3Qgc2VuZCBhIFdNX0NPTlRFWFRNRU5VIG1lc3NhZ2Ugd2hlbiBhIFRyZWVWaWV3IHJlY2VpdmVzIGEKCVdNX1JCVVRUT05VUC4KCgkqIGlmMTYzMi9maW5kZnVuYywgdG9vbHMvZmluZGZ1bmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglNYWtlIGZpbmRmdW5jIGxvb2sgZm9yIC5zcGVjIGZpbGVzLCBhbmQgcHV0IGl0IHdpdGggdGhlIG90aGVyIHRvb2xzLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglWYWxpZGF0ZSBhY2Nlc3MgZXZlbiBpZiB3cmFwIHBhc3QgYWRkcmVzcyAwIGZvciBJc0JhZFN0cmluZ1B0cltBfFddCglhbmQgSXNCYWRbUmVhZHxXcml0ZV1QdHIuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIG1lbW9yeS9yZWdpc3RyeS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CgktIHN0dXBpZCBzcGVsbGluZyBmaXhlcwoJLSBzb21lIG1vcmUgbG9hZG9yZGVyIGFycmF5IHdvcmsKCgkqIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBmaWxlcy9kcml2ZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvbnRkZGsuaCwgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL250ZGxsL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCUFkZGVkIGEgZmV3IG1vcmUgbGFyZ2UgaW50ZWdlciBmdW5jdGlvbnMuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBvYmplY3RzL2RjLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJU3R1YmJlZCBHZXREZXZpY2VHYW1tYVJhbXAuCgoJKiBtc2Rvcy9pbnQyMS5jOgoJUGV0ZXIgSGF3a2lucyA8cGV0ZXJAaGF3a2lucy5lbXUuaWQuYXU+CglBZGRlZCBET1MgaW50IDIxaCBmdW5jdGlvbiA0NDUyaCBzdXBwb3J0IChEUi1ET1MgdmVyc2lvbiBjaGVjaykuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpbGwgaW4gdGhlIGRzQm1paC5iaVNpemVJbWFnZSBmaWVsZCBvZiBESUJTZWN0aW9ucyB3aXRoIHRoZQoJY2FsY3VsYXRlZCBiaXRtYXAgc2l6ZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUluZGljYXRlIHRoYXQgdGhlIE1JREkgZXJyb3IgbWVzc2FnZSBvbmx5IGFmZmVjdHMgcHJvZ3JhbXMgdGhhdCBuZWVkIE1JREkuCgoJKiBtZW1vcnkvaGVhcC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBjb2Rld2VhdmVycy5jb20+CglHZXQgcmlkIG9mIHNoYXJlZCBoZWFwIGZpeG1lIG1lc3NhZ2VzLgoJU2xpZ2h0bHkgY29ycmVjdGVkIG15IGhlYXAgY29tbWl0IHBhdGNoIChYaWxpbngpLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNZXJnZWQgRE9TVk1fSW50IHdpdGggRE9TVk1fU2ltdWxhdGVJbnQsIGFuZCBtYWRlIGl0IGhhbmRsZSBhcHBzIHRoYXQKCXB1cnBvc2VmdWxseSBzaHVmZmxlIHRoZSBpbnRlcnJ1cHQgdmVjdG9ycyBhcm91bmQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJVG8gaW1wcm92ZSBjdXN0b20tZHJhd24gaXRlbXMsIGFkZCBmb2N1cyBib3JkZXIgdG8gaXRlbVJlY3RzIGFuZCBkbwoJbm90IG92ZXJsYXAgdGhlbS4KCgkqIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9jb21tLmMsIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL2NvbW0uaCwgaW5jbHVkZS9tc2Rvcy5oLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2NvbW0uYywgbXNkb3MvaW50MTEuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJTW92ZWQgY29tbS5jIGludG8ga2VybmVsMzIuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUNsYWltIHRoYXQgb3VyIGhlYWRlcnMgY29uZm9ybSB0byB0aGUgdmVyc2lvbiA1LjAuCgoJKiBpbmNsdWRlL3Byc2h0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJVGhlIHN0cmluZyBmaWVsZHMgaW4gUFJPUFNIRUVUUEFHRUEgc2hvdWxkIGJlIEFOU0kgc3RyaW5ncy4KCgkqIGluY2x1ZGUvb2xlY3RsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVtb3ZlZCB0aGUgRFVNTVlfVU5JT05fTkFNRSBpbiBmYXZvciBvZiBEVU1NWVVOSU9OTkFNRS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB0aGUgbWlzc2luZyBUVklOU0VSVFNUUlVDVCBzeW5vbnltcy4KCUFkZGVkIG1pc3NpbmcgQ0JFSUZfeHh4IGRlZmluaXRpb25zLgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBpbmNsdWRlL29sZWF1dG8uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXhlZCB0aGUgc2lnbmF0dXJlIG9mIFN5c0FsbG9jU3RyaW5nQnl0ZUxlbi4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglTdGF0dXMgYmFycyBvbiBtYW5hZ2VkIHdpbmRvd3Mgc2hvdWxkIG5vdCBoYXZlIFNJWkVHUklQIHN0eWxlLgoKCSogZGxscy9udGRsbC9yZWcuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1ha2UgcmVnIHRoZSBkZWZhdWx0IG91dHB1dCBjaGFuZWwuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJSWdub3JlIHNldHNvY2tvcHQgY2FsbHMgdGhhdCBtYWtlIHRoZSBzaXplIG9mIHRoZSByZWNlaXZlIGJ1ZmZlciB0b28KCXNtYWxsLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglTdWJpdGVtcyBvZiBsaXN0dmlld3Mgd2VyZSBub3QgcGFpbnRlZCB3aXRoIHRoZSByaWdodCBiYWNrZ3JvdW5kIHdoZW46CgktTFZTX0VYX0ZVTExST1dTRUxFQ1Qgc3R5bGUgaXMgZGVmaW5lZAoJLWl0ZW0gaXMgc2VsZWN0ZWQKCS1MaXN0dmlldyBkb2Vzbid0IGhhdmUgdGhlIGZvY3VzLgoKCSogc2VydmVyL3NvY2suYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJQWZ0ZXIgYWNjZXB0IGlzIGNhbGxlZCBvbiB0aGUgc29ja2V0LCB0aGUgbGlzdGVuaW5nIHNvY2tldCBuZWVkcyB0byBiZQoJcmVzZWxlY3RlZC4KCgkqIG1lbW9yeS9yZWdpc3RyeS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93cyBvbiBkYXRhIHJldHVybnMgZnJvbSBSZWdRdWVyeVZhbHVlRXhBLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaDogS29ucmFkIFJpZWNrIDxrckByMHEuY3g+CglDaGFuZ2VkIHJlcG5lIHRvIHJlcG56IGZvciBTb2xhcmlzIGFzc2VtYmxlci4KCjIwMDAtMTAtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbm50Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgTENUWVBFLCBHZXRMb2NhbGVJbmZvLCBOVU1CRVJGTVQsIENVUlJFTkNZRk1UIGFuZCB0aGUgcmVsYXRlZAoJQVBJIHRvIHdpbm5scy5oLgoJTW92ZWQgTEFOR194eHgsIFNVQkxBTkdfeHh4LCBTT1JUX3h4eCBhbmQgSVNfVEVYVF9VTklDT0RFX3h4eCB0bwoJd2lubnQuaC4KCgkqIGRsbHMvdXNlci9yZXNvdXJjZS5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3Mvd2luaGVscC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIG1hbnkgbWlzc2luZyAqUHh4eCB0eXBlcy4KCVJlbW92ZWQgYSBmZXcgKkxQeHh4IHR5cGVzIHRoYXQgYXJlIG5vdCBzdXBwb3NlZCB0byBiZSB0aGVyZSAoaW4KCXBhcnRpY3VsYXIgTFBJQ09OSU5GTykuCglBZGRlZCBhIGZldyBtaXNzaW5nICpMUEN4eHggdHlwZXMgKE1FTlVJVEVNSU5GTywgU0NST0xMSU5GTywKCURMR0lURU1URU1QTEFURSkuCglXSU5IRUxQIGFuZCBQRV9BQ0NFTCBhcmUgaW50ZXJuYWwgdHlwZXMuCglNVUxUSUtFWUhFTFAgYW5kIEhFTFBXSU5JTkZPIGJvdGggaGF2ZSBhbiBBIGFuZCBXIHZhcmlhbnQuCglOVU1CRVJGTVQsIENVUlJFTkNZRk1UIGFuZCB0aGUgcmVsYXRlZCBBUEkgYmVsb25nIHRvIHdpbm5scy5oLgoJQWRkZWQgbWlzc2luZyBBUldfeHh4IGRlZmluZXMgKGZvciBzeXNtZXRyaWNzKS4KCgkqIGluY2x1ZGUvd3R5cGVzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUk9URkxBR1MgaGF2ZSB0aGVpciBvd24gaWZkZWYgcHJvdGVjdGlvbiwgdGFrZSB0aGVtIG91dCBvZiB0aGUKCV9TRUNVUklUWV9ERUZJTkVEIGlmZGVmIGJsb2NrLgoKCSogaW5jbHVkZS93aW5nZGkuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIGRlY2xhcmF0aW9uIGZvciBHZXRFbmhNZXRhRmlsZURlc2NyaXB0aW9uLgoKCSogd2luZWRlZmF1bHQucmVnOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBZGRlZCBGb250cyByZWdpc3RyeSBrZXkuCgoJKiB3aW4zMi9leGNlcHQuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVncmVzc2lvbiBmb3IgZGVidWdnZXIgc3RhcnR1cCBldmVudCBjcmVhdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeCBkZXByZXNzZWQgc3RhdGUgd2l0aCBmbGF0IHRvb2xiYXJzIHNvIHByZXNzaW5nIHRoZSBidXR0b25zIGRyYXdzCgl0aGUgYnV0dG9uIGluIGEgZGVwcmVzc2VkIHN0YXRlLiAgRml4IGJpdG1hcCBvZmZzZXRzLCBmaXhlcyBiaXRtYXAKCW9mZnNldCBwcm9ibGVtcyBpbiBmaWxlIGNvbW1vbiBkaWFsb2cuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJT24gSW5zZXJ0SXRlbSB3aXRoIFRWSV9GSVJTVCwgdGhlIGNoZWNrIGZvciByZXNldHRpbmcgZmlyc3RWaXNpYmxlCgltdXN0IGJlIGRvbmUgKmJlZm9yZSogdGhlIHBhcmVudCdzIGZpcnN0Q2hpbGQgY2hhbmdlcy4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcG9ydCBub24tYnVmZmVyZWQgb3ZlcmxheXMuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUmV3cml0ZSB0byBzdXBwb3J0IHJvd3Mgb2YgYmFuZHMuCglEcmF3IHNlcGFyYXRvcnMgYmV0d2VlbiBiYW5kcyBpbiByb3dzIGFuZCBiZXR3ZWVuIHJvd3MuCglTdXBwb3J0IHRleHQgYW5kIGJhY2tncm91bmQgY29sb3IgYW5kIGNvbG9yIHByb3BhZ2F0aW9uLgoJSW1wcm92ZSBsYXlvdXQgY29kZS4KCU1ha2UgZk1hc2sgaW4gaW50ZXJuYWwgc3RydWN0dXJlIHRoZSBpbmRpY2F0b3Igb2YgdmFsaWQgaW5mb3JtYXRpb24uCglGaXggc2l6ZSBvZiBncmlwcGVycy4KCUFkZCBkZWJ1Z2dpbmcgdHJhY2VzIGZvciBmdXR1cmUuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY29tPgoJU2ltcGxlIE5VTEwgY2hlY2suCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gQmFja2dyb3VuZCBzaG91bGQgbm90IGJlIGRyYXduIGlmIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGlzIENMUl9OT05FLgoJLSBEb24ndCBjaGFuZ2UgdGhlIHNpemUgdG8gMCBmb3IgdGhlIGhlYWRlciBjb250cm9sIG9mIGxpc3R2aWV3IHdpdGgKCSAgTFZTX05PQ09MVU1OSEVBREVSIHN0eWxlLiBJbiBmYWN0IGp1c3Qgc2V0dGluZyBIRFNfSElEREVOIHRvIHRoZQoJICBoZWFkZXIgY29udHJvbCBpcyBlbm91Z2guCgoJKiBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9jb252ZXJ0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIDE2ICg1NjUpIC0+IDE1ICg1NTUpIGJpdCBkZXB0aCBjb252ZXJ0ZXIuCgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdXBwb3J0IGZvciBjcDkzNi4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzogV29yay1hcm91bmQgZm9yIGdjYyBidWcuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVtbnRlZCBHZXRGb3VyQ0NDb2Rlcy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbmFibGUgWEY4NnZtb2RlIHN3aXRjaGluZyBwb3NzaWJsZSBmb3IgWDExIHRvby4KCgkqIGRsbHMvbXNhY20vTWFrZWZpbGUuaW4sIGRsbHMvbXNhY20vZHJpdmVyLmMsIGRsbHMvbXNhY20vZm9ybWF0LmMsIGRsbHMvbXNhY20vaW50ZXJuYWwuYywgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvbXNhY20vcGNtY29udmVydGVyLmMsIGRsbHMvbXNhY20vd2luZWFjbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBQQ00gY29udmVydGVyIGludGVybmFsIGRyaXZlci4KCUEgZmV3IGRyaXZlciBoYW5kbGluZyBmaXhlcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpeGVkIHRoZSBPcGVuR0wgZGV0ZWN0aW9uIGNvZGUuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlZCBsb2FkaW5nIG9mIHN5bWJvbHMgZnJvbSBsaWJyYXJpZXMuCgoJKiB3aW4zMi9maWxlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglQcmV2ZW50IFNldEZpbGVBdHRyaWJ1dGVBIGZyb20gbWFraW5nIGRpcmVjdG9yeSByZWFkLW9ubHkuCgoJKiBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglFbmFibGUgYW5vbnltb3VzIHN0cnVjdC91bmlvbiBzdXBwb3J0IGJ5IGRlZmF1bHQgaW4gYm90aCBDIGFuZCBDKysuCglEaXNhYmxlIHRoZW0gZm9yIGNvbXBpbGVycyBrbm93biBub3QgdG8gc3VwcG9ydCB0aGVtLgoJRGlzYWJsZSB0aGVtIGZvciB0aGUgV0lORSBjb2RlLgoKCSogaW5jbHVkZS9kZGUuaCwgaW5jbHVkZS93aW51c2VyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgZm91ciBEREVsUGFyYW0gZnVuY3Rpb25zLgoJTm93IG5lZWRzIGFuICdleHRlcm4gIkMiJyBwcm90ZWN0aW9uIGZvciBDKysuCgoJKiBkbGxzL3VzZXIvZGRlbWwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglGaXggdGhlIHBhcmFtZXRlciB0eXBlcyBhbmQgY29tbWVudHMgb2YgdGhlIERERWxQYXJhbSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5pbmV0Lmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJlbW92ZWQgc3RyYXkgQS9XIGZyb20gaW52b2NhdGlvbnMgb2YgV0lORUxJQl9OQU1FX0FXLgoKCSogbXNkb3MvaW50MTEuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJUmVtb3ZlZCBkZXBlbmRlbmN5IG9uIGdsb2JhbHMgTFBUW10gYW5kIENPTXt9LgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBpbmNsdWRlL29sZWF1dG8uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJQWRkZWQgc29tZSBvZiB0aGUgQVBJcyBpbnRyb2R1Y2VkIGluIFdpbjk4LCBtb3N0bHkgdGhlIFZhclh4eCBtYXRocyBBUElzLgoKCSogbXNkb3MvdmdhLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVJlcGxhY2UgbnVsbCBieXRlcyBieSBzcGFjZXMgaW4gV3JpdGVDb25zb2xlT3V0cHV0QSBjYWxsLgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNQ0lDREEgZGlkbid0IG9wZW4vY2xvc2UgdGhlIGRvb3Igd2hlbiBjYWxsaW5nIHRoZSBjb21tYW5kIHdpdGhvdXQKCXZhbGlkIHBhcmFtZXRlciBibG9jayAoaS5lLiA9PSBOVUxMKS4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBPbGVMb2NrUnVubmluZyBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0ZWQgc29tZSBzZWd2cyB0aGF0IG9jY3VyIHdpdGggb3duZXJkYXRhIGxpc3R2aWV3cy4KCgkqIG9iamVjdHMvcmVnaW9uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldHVybiB2YWx1ZXMgYXJlIHJldmVyc2VkIGluIGZhaWx1cmUvcmdkYXRhID09IE5VTEwgY2FzZSBpbgoJR2V0UmVnaW9uRGF0YSAod2FzIG1lcmdlIGVycm9yIGJ5IG1lKS4KCgkqIHdpbjMyL2V4Y2VwdC5jLCB3aW5lZGVmYXVsdC5yZWc6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglDaGFuZ2VkIGRlYnVnZ2VyIGxhdW5jaGluZyB0byBhdXRvIHBlciBkZWZhdWx0LgoKCSogZGxscy9rZXJuZWwvbmxzL2Rhbi5ubHM6CglOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCURlZmluZSBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSBmb3IgRGFuaXNoIGxvY2FsZS4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdXBwcmVzcyBqdW5rIG5vaXNlIGF0IHN0YXJ0dXAgb2YgRGlyZWN0U291bmQgb24gU0IgTGl2ZSEgYW5kIEVTIDEzNzEuCgoyMDAwLTEwLTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kcml2ZS5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBmaWxlcy9kcml2ZS5jOgoJVXNlIHNwZWNpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRyYW5zbWl0IHRoZSBjd2Qgb2YgdGhlIHZhcmlvdXMKCWRyaXZlcyB0byBjaGlsZCBwcm9jZXNzZXMgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgQW5kcmVhcyBNb2hyKS4KCgkqIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS90Y2hhci5oLCBpbmNsdWRlL3dpbmluZXQuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkIHRoZSAnOycgZW5kaW5nIG9uIGxpbmVzIHVzaW5nIHRoZSBERUNMX1dJTkVMSUJfVFlQRV9BVyBhbmQKCVdJTkVMSUJfTkFNRV9BVyBtYWNyb3MuCgoJKiBpbmNsdWRlL29sZWF1dG8uaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzb21lIG1pc3NpbmcgJ1N5c0FsbG9jU3RyaW5nJyBwcm90b3R5cGVzLgoJQWRkZWQgc29tZSBtaXNzaW5nICdUeXBlTGliJyBwcm90b3R5cGVzLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgc29tZSBwcm90b3R5cGVzLgoKCSogaW5jbHVkZS9iaXRtYXBzL29jcl9pYmVhbToKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIHdoaXRlIGJvcmRlciBhcm91bmQgdGhlIEktYmVhbSBjdXJzb3IuCgoyMDAwLTEwLTAyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2dsb2JhbC5jOgoJTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJUHJvdGVjdCBHbG9iYWxIYW5kbGUoKSBhZ2FpbnN0IGJhZCBwYXJhbWV0ZXJzLgoKCSogZGVidWdnZXIvc3RhY2suYzoKCUZpeGVkIGJhY2t0cmFjZSBmb3IgYXBwcyB0aGF0IG5ldmVyIGNhbGxlZCBkb3duIHRvIDE2LWJpdCBjb2RlLgpuCgkqIGxvYWRlci90YXNrLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1ha2Ugc3VyZSB0aGF0IHdlIHNraXAgdGFza3Mgd2l0aCBtaXNzaW5nIGhJbnN0YW5jZS4KCgkqIG1lbW9yeS9nbG9iYWwuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJSW50cm9kdWNlZCBhIG5ldyBhcmVuYSBmbGFnIGNhbGxlZCBHQV9ET1NNRU0gdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgoJRE9TTUVNIGFuZCBub3JtYWwgIndpbmRvd3MiIGdsb2JhbCBtZW0uCgoJKiBkbGxzL3dpbm1tL21taW8uYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUJ1ZyBmaXhlcyBpbiBtbWlvLCByZWxhdGVkIHRvIGJ1ZmZlcmluZyBpbiByZWNvcmQgbW9kZS4KCjIwMDAtMTAtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRToKCVJlbGVhc2UgMjAwMDEwMDIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMTAtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglQcm90ZWN0IEdsb2JhbEhhbmRsZSgpIGFnYWluc3QgYmFkIHBhcmFtZXRlcnMuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOgoJRml4ZWQgYmFja3RyYWNlIGZvciBhcHBzIHRoYXQgbmV2ZXIgY2FsbGVkIGRvd24gdG8gMTYtYml0IGNvZGUuCgoJKiBsb2FkZXIvdGFzay5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNYWtlIHN1cmUgdGhhdCB3ZSBza2lwIHRhc2tzIHdpdGggbWlzc2luZyBoSW5zdGFuY2UuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUludHJvZHVjZWQgYSBuZXcgYXJlbmEgZmxhZyBjYWxsZWQgR0FfRE9TTUVNIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KCURPU01FTSBhbmQgbm9ybWFsICJ3aW5kb3dzIiBnbG9iYWwgbWVtLgoKCSogZGxscy93aW5tbS9tbWlvLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CglCdWcgZml4ZXMgaW4gbW1pbywgcmVsYXRlZCB0byBidWZmZXJpbmcgaW4gcmVjb3JkIG1vZGUuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIG1lbW9yeS9yZWdpc3RyeS5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvc2VydmVyLmgsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUNvbnZlcnQgTnRRdWVyeUtleSBhbmQgTnRFbnVtZXJhdGVLZXkgdG8gdGhlIG5ldyByZXF1ZXN0IG1lY2hhbmlzbS4KCUZpeGVkIGEgZmV3IGJ1Z3MuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjOgoJRm9yd2FyZCBhbGwgbGFyZ2UgaW50ZWdlciBmdW5jdGlvbnMgdG8gbnRkbGwuCgoJKiBvbGUvb2xlMm5scy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0RGF0ZUZvcm1hdEE6IENoZWNrIHJhbmdlIGFuZCByZWNhbGN1bGF0ZSB3RGF5T2ZXZWVrLgoJT0xFX0dldEZvcm1hdEF8VzogRml4IHRyYW5zZm9ybWF0aW9uIG9mIHdEYXlPZldlZWsgdG8KCUxPQ0FMRV9TKEFCQlJFVilEQVlOQU1FeC4KCgkqIGluY2x1ZGUvd25hc3BpMzIuaCwgZGxscy9rZXJuZWwvdGltZS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NobHdhcGkuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd25hc3BpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvbW1zeXN0ZW0uYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMTYvc2V0dXB4LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3VzZXIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQ6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gU3VwcG9ydCBmb3Igc3RkY2FsbDY0CgktIE1pbm9yIEFQSSB1cGRhdGVzLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQmVhdXRpZmllZCB0aGUgbG9hZG9yZGVyIGFycmF5IChncm91cCBETExzIGFjY29yZGluZyB0byBmdW5jdGlvbmFsaXR5LAoJYWRkIGdyb3VwIGhlYWRlciBjb21tZW50cywgLi4uKSwgYWRkZWQgYnVpbHRpbiB4MTFkcnYgYW5kIHdpbmFzcGkuCgoJKiBkbGxzL21zYWNtL2ludGVybmFsLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglTaWxlbmNlIHVubmVlZGVkIGV4Y2VwdGlvbiB0byBhbGxvdyBlYXNpZXIgQUNNIGRlYnVnZ2luZy4KCjIwMDAtMTAtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3NlcnZlci5oLCBtZW1vcnkvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvbnRkbGwvcmVnLmM6CglDb252ZXJ0ZWQgc29tZSBvZiB0aGUgcmVnaXN0cnkgc2VydmVyIHJlcXVlc3RzIHRvIHRoZSBuZXcgcmVxdWVzdAoJbWVjaGFuaXNtLgoKCSogd2luMzIvdGltZS5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2xhcmdlX2ludC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvd2lubnQuaCwgc2NoZWR1bGVyL3RpbWVyLmMsIGRsbHMva2VybmVsL3RpbWUuYzoKCUltcGxlbWVudGVkIGEgYnVuY2ggb2YgbGFyZ2UgaW50ZWdlciBmdW5jdGlvbnMgaW4gbnRkbGwuCgoJKiB0b29scy93aW5lYnVpbGQvYnVpbGQuaCwgdG9vbHMvd2luZWJ1aWxkL3BhcnNlci5jLCB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIHJlbGF5MzIvcmVsYXkzODYuYzoKCUFkZGVkIHN0ZGNhbGw2NCBlbnRyeSBwb2ludCB0eXBlIHRvIGFsbG93IGNvcnJlY3QgcmVsYXkgZGVidWdnaW5nCglzdXBwb3J0IGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gNjQtYml0IHZhbHVlcy4KCjIwMDAtMDktMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvaGVhcC5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglNYWtlIHN1cmUgd2UgY29tbWl0IGVub3VnaCBtZW1vcnkgaW4gYSBuZXcgc3ViaGVhcC4KCgkqIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJU3RlZmFuIExlaWNodGVyIDxTdGVmYW4uTGVpY2h0ZXJAY2FtbGluZS5jb20+CgktIG1vdmVkIHNvbWUgY29kZSBmcm9tIFdJTlNQT09MX0dldFByaW50ZXJEcml2ZXIgaW50byBuZXcgZnVuY3Rpb24KCSAgV0lOU1BPT0xfR2V0RHJpdmVySW5mb0Zyb21SZWcKCS0gYnVnIGZpeCBpbiBmdW5jdGlvbiBHZXRQcmludGVyRGlyZWN0b3J5VzogZnJlZSBsb2NhbCB2YXJpYWJsZSBub3QKCSAgdGhlIG9uZSBmcm9tIGZ1bmN0aW9uIGludGVyZmFjZQoJLSBpbXBsZW1lbnRlZCBFbnVtUHJpbnRlckRyaXZlcnNBfFcKCgkqIGZpbGVzL3Byb2ZpbGUuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgdGhlIGRlZmF1bHQgdmFsdWUgaGFuZGxpbmcgKHRyYWlsaW5nIHNwYWNlcyBvZiB0aGUgZGVmYXVsdCB2YWx1ZQoJYXJlIGNsaXBwZWQpLgoJc2VjdGlvbiA9PSBOVUxMLCBrZXlfbmFtZSA9PSBOVUxMIHVuZG9jLiBmZWF0dXJlIGlzIG9ubHkgdmFsaWQgaW4gV2luMzIuCgoJKiBkbGxzL250ZGxsL3N5bmMuYywgaW5jbHVkZS9udGRkay5oLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvZXhjZXB0LmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL25ld2Zucy5jLCB3aW4zMi9wcm9jZXNzLmMsIHdpbjMyL3RpbWUuYywgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2RlYnVnZ2VyLmMsIGRsbHMva2VybmVsL3N5bmMuYywgZGxscy9rZXJuZWwvdGltZS5jOgoJTW92ZWQgYSBidW5jaCBvZiByb3V0aW5lcyB0byBrZXJuZWwzMi5kbGwgKHdpdGggdGhlIGhlbHAgb2YKCURpbWl0cmllIE8uIFBhdW4pLgoKCSogb2JqZWN0cy9wYWxldHRlLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglHRElTZWxlY3RQYWxldHRlMTYgY2hlY2tlZCBHZXRPYmplY3RUeXBlKCkgcmV0dXJuIHZhbHVlIGZvcgoJUEFMRVRURV9NQUdJQyBpbnN0ZWFkIG9mIE9CSl9QQUwuCgoJKiBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgRExMVkVSU0lPTklORk8gdG8gc2hsd2FwaS5oLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglMZXQgSW50ZXJuYWxFeHRyYWN0SWNvbjE2IGxvYWQgaWNvbnMgZnJvbSBidWlsdGluIERMTHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNb2RpZmllZCB0aGUgYml0bWFwIGNlbnRlcmluZyBhbGdvcml0aG0gdG8gdGFrZSB0aGUgYnV0dG9uJ3MgYm9yZGVyCglpbnRvIGFjY291bnQuCgoJKiB3aW5kb3dzL3RpbWVyLmMsIGluY2x1ZGUvbWVzc2FnZS5oLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJQmVmb3JlIGNhbGxpbmcgdGhlIHRpbWVyIHdpbmRvdyBwcm9jLCBtYWtlIHN1cmUgaXQgaXMgdmFsaWQuCgoJKiBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvc2VjLmM6CglSZW1vdmVkIGEgZmV3IGRlcGVuZGVuY2llcyBvbiBrZXJuZWwzMiBmdW5jdGlvbnMuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL2NyaXRzZWN0aW9uLmM6CglNb3ZlZCBjcml0aWNhbCBzZWN0aW9uIGltcGxlbWVudGF0aW9uIHRvIG50ZGxsLgoKCSogd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbjMyL01ha2VmaWxlLmluLCB3aW5kb3dzL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHRzeDExL01ha2VmaWxlLmluLCByZWxheTMyL01ha2VmaWxlLmluLCByZXNvdXJjZXMvTWFrZWZpbGUuaW4sIG9iamVjdHMvTWFrZWZpbGUuaW4sIG9sZS9NYWtlZmlsZS5pbiwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzY2VtdS9NYWtlZmlsZS5pbiwgbXNkb3MvTWFrZWZpbGUuaW4sIGxvYWRlci9uZS9NYWtlZmlsZS5pbiwgbWVtb3J5L01ha2VmaWxlLmluLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9kb3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9NYWtlZmlsZS5pbiwgaWYxNjMyL01ha2VmaWxlLmluLCBncmFwaGljcy93aW4xNmRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL21ldGFmaWxlZHJ2L01ha2VmaWxlLmluLCBmaWxlcy9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGNvbnNvbGUvTWFrZWZpbGUuaW4sIGNvbnRyb2xzL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluOgoJTW92ZWQgJChNT0RVTEUpLm8gcnVsZSBvdXQgb2YgTWFrZS5ydWxlcyBpbnRvIHRoZSBpbmRpdmlkdWFsCglNYWtlZmlsZXMuCgoJKiBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBpbmNsdWRlL3NobHdhcGkuaCwgZGxscy9zaGx3YXBpL3JlZy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBTSERlbGV0ZUVtcHR5S2V5QSwgU0hEZWxldGVLZXlBLgoKCSogb2JqZWN0cy9yZWdpb24uYzoKCVNlcmdlaSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jb20+CglGaXhlZCByZXR1cm4gdmFsdWVzIG9mIEdldFJlZ2lvbkRhdGEuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglDYWxsIFJlbGVhc2VDYXB0dXJlICh3aGljaCB0cmlnZ2VycyBXTV9DQVBUVVJFQ0hBTkdFRCkgYWZ0ZXIgdGhlCglXTV9DT01NQU5EIGZvciB0aGUgYnV0dG9uIGhhcyBiZWVuIHNlbnQsIHJhdGhlciB0aGFuIGJlZm9yZS4KCgkqIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJVXNlIHdhdmVhdWRpbywgbm90IHdhdmVmb3JtLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglGaXggYSBjb3VwbGUgb2YgVFJBQ0UgbWVzc2FnZXMuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGRlZCBtaXNzaW5nIGNhc3QuCgoJKiBpbmNsdWRlL3dpbmUvbW1zeXN0ZW0xNi5oLCBkbGxzL3dpbm1tL21tc3lzdGVtLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJRml4IHRoZSByZXR1cm4gdHlwZSBvZiBtaXhlck1lc3NhZ2UxNi4KCgkqIGluY2x1ZGUvd2ludmVyLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAY29kZXdlYXZlcnMuY29tPgoJUmVuYW1lZCBWU19VU0VSX0lORk8gdG8gVlNfVVNFUl9ERUZJTkVELgoKMjAwMC0wOS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvYnVpbHRpbjMyLmgsIG1pc2NlbXUvLmN2c2lnbm9yZSwgbWlzY2VtdS9NYWtlZmlsZS5pbiwgbWlzY2VtdS9tYWluLmMsIG1pc2NlbXUvd2luZS5zcGVjLCByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvaW1wb3J0LmMsIHRvb2xzL3dpbmVidWlsZC9tYWluLmMsIHRvb2xzL3dpbmVidWlsZC9wYXJzZXIuYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCB0b29scy93aW5lYnVpbGQvdXRpbHMuYywgTWFrZS5ydWxlcy5pbjoKCUNoYW5nZWQgdGhlIFdpbjMyIGRsbCBkZXNjcmlwdG9yIHRvIGJlIGluIElNQUdFX05UX0hFQURFUlMgZm9ybWF0LgoJR2VuZXJhdGUgdGhlIGltcG9ydCB0YWJsZSBkaXJlY3RseSBpbiBQRSBmb3JtYXQuCglBZGRlZCBndWkvY3VpZXhlX25vX21haW4gbW9kZXMgaW4gRVhFIHNwZWMgZmlsZXMsIGFuZCB1c2UgdGhpcyBmb3IgdGhlCgltYWluIHdpbmUgYmluYXJ5LgoKCSogZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FjbTMyLnNwZWMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaTMyLnNwZWM6CglBZGRlZCBhIGZldyBtaXNzaW5nIGltcG9ydHMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCB2YXJpb3VzIHR5cGUgYW5kIG1hY3JvIGRlZmluaXRpb25zIHRoYXQgYXJlIG5lZWRlZCB0byBjb21waWxlCgl0aGUgbGF0ZXN0IE1GQy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN0b3JlIGEgY29weSBvZiBNSURJT1BFTkRFU0MgaW5mb3JtYXRpb24gaW5zdGVhZCBvZiBwb2ludGVyLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVbmxvY2sgd2luMTYgY3JzdCB3aGlsZSB0aHVua2luZyB1cCB0byAzMiBiaXQgZGxsLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUluY2x1ZGUgPHVuaXN0ZC5oPiBmb3IgcHJvdG90eXBlIG9mIHNlbGVjdCgpLgoKCSogc2VydmVyL3NvY2suYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJU29ja2V0IHJldHVybmVkIGJ5IGFjY2VwdCBmdW5jdGlvbiBvZiBNaWNyb3NvZnQgQVBJIHNob3VsZCBrZWVwIHRoZQoJcHJvcGVydGllcyBvZiB0aGUgbGlzdGVuaW5nIHNvY2tldC4gVGhpcyBpcyBhbHNvIHRydWUgZm9yIG5vbi1ibG9ja2luZwoJcHJvcGVydHkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglJZiB3aW5kb3cgd2FzIG5vdCByZXNpemVkIGFuZCBub3QgbW92ZWQsIHJlcGFpbnQgb25seSBpdHNlbGYgZXhjbHVkaW5nCglwYXJlbnQuCgoJKiB0b29scy93aW5lYnVpbGQvc3BlYzMyLmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jOgoJR2VuZXJhdGUgV2luMzIgZGxsIGRlc2NyaXB0b3Igc3RydWN0dXJlIGluIHRoZSAuc3BlYy5jIGZpbGUgc28gdGhhdCB3ZQoJZG9uJ3QgbmVlZCB0byBkZXBlbmQgb24gYnVpbHRpbjMyLmguCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluLCBpbmNsdWRlL21vdXNlLmgsIGluY2x1ZGUvem1vdXNlLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglDcmVhdGVkIHptb3VzZS5oLCBtb3ZlZCB3aGVlbCBjb2RlIGZyb20gbW91c2UuaCBpbnRvIGl0LgoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCU1DSV9TVEFUVVNfTEVOR1RIIG9uIFdpbmRvd3MgcmV0dXJucyBvbmUgZnJhbWUgbGVzcyB0aGFuIHRoZSB0b3RhbAoJdHJhY2sgbGVuZ3RoIGZvciB0aGUgbGFzdCB0cmFjayBvbiBhIENELiAgVGhpcyBhbHNvIGFmZmVjdHMgcXVlcmllcwoJZm9yIHRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIENELgoKCSogbXNkb3MvZG9zYXNwaS5jLCBpbmNsdWRlL3dpbmUvd2luYXNwaS5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvd25hc3BpMzIuaCwgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6CglGaXhlZCBhIGZldyBub24gcG9ydGFibGUgemVyby1zaXplIGFycmF5IGRlY2xhcmF0aW9ucy4KCgkqIGZpbGVzL2RyaXZlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhdmUgdGhlIFVOSVggY3dkIGZvbGxvdyB0aGUgY3VycmVudCBkaXJlY3Rvcnkgb24gdGhlIGN1cnJlbnQgZHJpdmUuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglPbiByZWNlcHRpb24gb2YgYSBGb2N1c091dCBldmVudCwgZG9uJ3QgZGVhY3RpdmF0ZSB0aGUgYXBwbGljYXRpb24gaWYgdGhlCgluZXh0IHdpbmRvdyB0byBnZXQgdGhlIGZvY3VzIGlzIGEgV2luZSB3aW5kb3cuCgoyMDAwLTA5LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheSwgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXlzcC5jLCBkbGxzL2RwbGF5eC9kcGxheXNwLmgsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9xdWV1ZS5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gUmVtb3ZlIHdpbm1tIGhhY2sgaW4gZHBsYXkgY29kZQoJLSBGaXggdXAgc29tZSBtaXNzaW5nIGhvbGVzIGluIHRoZSBjb2RlCgktIE1vcmUgbWVzc2FnZSBpbXBsZW1lbnRhdGlvbgoJLSBTdGF0dXMgZG9jdW1lbnRhdGlvbiB1cGRhdGUKCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCU1pZ3JhdGUgJExERkxBR1MgZnJvbSBjb25maWd1cmUgdG8gTWFrZWZpbGUgYW5kIGludG8gbWFpbiB3aW5lCglleGVjdXRhYmxlLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURpc3BsYXkgYW4gRVJSKCkgaW4gY2FzZSBvZiB1bmRlZmluZWQgc3ltYm9scy4KCgkqIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvaW5mcGFyc2UuYywgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHgxNi5oLCBkbGxzL3NldHVwYXBpL3NldHVweF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTdGFydGVkIHNvbWUgYmFzaWMgd29yayBvbiB0aGUgbW9yZSBvciBsZXNzIHVuZG9jdW1lbnRlZCBTRVRVUFgKCWZ1bmN0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCVN1cHBvcnQgZm9yIFRCU1RZTEVfRVhfRFJBV0REQVJST1dTIHN0eWxlOyByZXNldCBjYXB0dXJlIGFuZCBidXR0b24KCXByZXNzZWQgZmxhZ3Mgb24gV01fQ0FQVFVSRUNIQU5HRUQuCgoJKiBvYmplY3RzL2RjLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdPUkQgaXMgdW5zaWduZWQsIHNvIHdlIG5lZWQgdG8gdHJhbnNhbHRlIDB4ZmZmZiBpbnRvIC0xLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luMzIvY29uc29sZS5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3dpbi5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1zZG9zL2Rvc2FzcGkuYywgbXNkb3MveG1zLmMsIG9sZS9vbGUybmxzLmMsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgaW5jbHVkZS93aW5lL2tleWJvYXJkMTYuaCwgaW5jbHVkZS93aW5lL21tc3lzdGVtMTYuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS93aW5hc3BpLmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmUvd2lubmV0MTYuaCwgaW5jbHVkZS93aW5lL3dpbnNvY2sxNi5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5jb24uaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5ubHMuaCwgaW5jbHVkZS93aW5wcm9jLmgsIGluY2x1ZGUvd2luc29jay5oLCBpbmNsdWRlL3dpbnNvY2syLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3dpbnZlci5oLCBpbmNsdWRlL3duYXNwaTMyLmgsIGluY2x1ZGUvd293bnQzMi5oLCBpbmNsdWRlL3d0eXBlcy5oLCBpbmNsdWRlL25lZXhlLmgsIGluY2x1ZGUvbm9uY2xpZW50LmgsIGluY2x1ZGUvbnRzZWNhcGkuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3Rvb2xoZWxwLmgsIGluY2x1ZGUvdmZ3LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2luYXNwaS5oLCBpbmNsdWRlL2FzcGkuaCwgaW5jbHVkZS9iYXNldHNkLmgsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvY2Ryb20uaCwgaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvZGNlLmgsIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvZ2xvYmFsLmgsIGluY2x1ZGUvbG9jYWwuaCwgaW5jbHVkZS9semV4cGFuZC5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvbW1kZGsuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGlmMTYzMi9zbm9vcC5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZmlsZXMvZmlsZS5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9zb3VuZDE2LmMsIGRsbHMvd2lubW0vd2luZW1tLmgsIGRsbHMvd2luYXNwaS9hc3BpLmgsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW4zMnMvdzMyc3lzLmMsIGRsbHMvdmVyc2lvbi92ZXIxNi5jLCBkbGxzL3VzZXIvZGRlbWwuYywgZGxscy91c2VyL2RkZW1sMTYuaCwgZGxscy91c2VyL2JpZGkxNi5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2V0dXBhcGkvc2V0dXB4X21haW4uYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9ycGNydDQvcnBjcnQ0X21haW4uYywgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmgsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2lmcy5jLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL21zdmlkZW8vdmZ3MTYuaCwgZGxscy9tc3ZpZGVvL2RyYXdkaWIuYywgZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvbXNhY20vbXNhY21kcnYuaCwgZGxscy9tc2FjbS93aW5lYWNtLmgsIGRsbHMva2VybmVsL3V0dGh1bmsuYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmMsIGRsbHMvZ2RpL2JpZGkxNi5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2tlcm5lbC9zdHJlc3MuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9jb21tZGxnL2NkbGcuaCwgZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmM6CglNb3ZlZCBhbGwgV2luMTYgZGVmaW5pdGlvbnMgb3V0IG9mIHRoZSBzdGFuZGFyZCBXaW5kb3dzIGhlYWRlcnMuCgoJKiBsb2FkZXIvcGVfcmVzb3VyY2UuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQXZvaWQgY3Jhc2hlcyBpZiAxNi1iaXQgbW9kdWxlIGhhbmRsZSB3YXMgcGFzc2VkIHRvIHRoZSAzMi1iaXQKCXJlc291cmNlIGVudW1lcmF0b3IuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBpbmNsdWRlL2RkcmF3LmgsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmgsIHdpbmUuaW5pOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIERpcmVjdERyYXcgb3ZlcmxheXMgdXNpbmcgdGhlIFhWaWRlbyBleHRlbnNpb24uCgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglDb2RlIGNsZWFudXAuCglBZGQgY2hlY2tpbmcgZm9yIGludmFsaWQgREJDUyB0cmFpbGVyIGJ5dGVzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIGNvbW1jdGwgaGVhZGVyIGlzc3VlcyByZXBvcnRlZCBpbiBuZXdzZ3JvdXAuCgoJKiBkbGxzL3dpbjMycy93MzJza2VybmVsLmMsIGluY2x1ZGUvTWFrZWZpbGUuaW4sIGluY2x1ZGUvd2luZS93MzJza3JubC5oLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCByZXNvdXJjZXMvc3lzcmVzX1dhLnJjOgoJQSBmZXcgaW5jbHVkZXMgY2xlYW51cC4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBsb2FkZXIvbWFpbi5jLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5LmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHlzdG9yYWdlLmgsIGluY2x1ZGUvd2luZS9vYmpfcXVlcnlhc3NvY2lhdGlvbnMuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS93aW5lL29ial9jYWNoZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaCwgaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb21tZGxnYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2Nvbm5lY3Rpb24uaCwgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZG9ja2luZ3dpbmRvd2ZyYW1lLmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lL29ial9lbnVtaWRsaXN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZXJyb3JpbmZvLmgsIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgaW5jbHVkZS9kbGdzLmgsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9vbGVpZGwuaCwgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGRsbHMvc2hsd2FwaS9yZWdzdHJlYW0uYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvbWVtb3J5c3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsZm9sZGVyLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGd1aWQuYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy9vbGUzMi9vbGUyaW1wbC5jLCBkbGxzL29sZTMyL29sZTJzdHVicy5jLCBkbGxzL29sZTMyL3N0Z19iaWdibG9ja2ZpbGUuYywgZGxscy9vbGUzMi9zdGdfc3RyZWFtLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsIGRsbHMvb2xlYXV0MzIvY29ubnB0LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvb2xlMzIvYW50aW1vbmlrZXIuYywgZGxscy9vbGUzMi9iaW5kY3R4LmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBkbGxzL29sZTMyL2l0ZW1tb25pa2VyLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jOgoJUmVtb3ZlZCBzaGVsbC5oLiBDbGVhbmVkIHVwIHRoZSBuZXN0ZWQgaW5jbHVkZXMgbWVzcyBpbiB3aW5lL29ial8qLmguCgoyMDAwLTA5LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2NsaXBib2FyZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglVc2UgZG9jdW1lbnRlZCBEUk9QRklMRVMgc3RydWN0dXJlIGluc3RlYWQgb2YgaW50ZXJuYWwgRFJPUEZJTEVTVFJVQ1QuCgoJKiByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYywgd2luMzIvZGV2aWNlLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy93aW5wcm9jLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MTMuYywgbXNkb3MvaW50MTUuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50MzMuYywgbXNkb3MvaW50NWMuYywgbXNkb3MvdnhkLmMsIG1zZG9zL3htcy5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1lbW9yeS9pbnN0ci5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy9lcnJvci5jLCBtaXNjL3N5c3RlbS5jLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2Rvc2FzcGkuYywgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvdGFzay5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC93aW44N2VtLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvdXNlci9tb3VzZS5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jOgoJUmVtb3ZlZCBzb21lIG9mIHRoZSBYWFhfcmVnIG1hY3JvcyBub3cgdGhhdCB3ZSBhcmUgdXNpbmcgdGhlIHN0YW5kYXJkCglDT05URVhUODYgc3RydWN0dXJlIGV2ZXJ5d2hlcmUuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3MvdXNlci5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvdGltZXIuYywgd2luMzIvY29uc29sZS5jLCBtaXNjL2NvbW0uYywgbWlzYy9jcHUuYywgbWlzYy9tYWluLmMsIG1pc2MvdmVyc2lvbi5jLCBvbGUvb2xlMm5scy5jLCBzY2hlZHVsZXIvZXZlbnQuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvY29udmVydC5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L2Vudmlyb24uYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY2Ryb20uYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3RleHQuYywgaW5jbHVkZS93aW5iYXNlLmgsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvdHR5ZHJ2L2dyYXBoaWNzLmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvd2lubW0vam95c3RpY2suYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgZGxscy9vbGUzMi9jbGlwYm9hcmQuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvZmlsZW1vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9tcHIvd25ldC5jLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NydGRsbC9tYnN0cmluZy5jLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBjb250cm9scy9saXN0Ym94LmMsIGNvbnRyb2xzL21lbnUuYzoKCVJlbW92ZWQgaW5jbHVzaW9uIG9mIHdpbmUvd2luZXN0cmluZy5oIGZyb20gd2luYmFzZS5oIGFuZCBhZGRlZCBpdCB0bwoJdGhlIEMgZmlsZXMgdGhhdCBuZWVkIGl0LgoKMjAwMC0wOS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MDkuYywgbXNkb3MvaW50MmYuYywgbXNkb3MvaW50MzMuYywgbWVtb3J5L2luc3RyLmMsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgaW5jbHVkZS9sZHQuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS9kb3NleGUuaDoKCU1vdmVkIG1vc3QgZ2xvYmFsIGRhdGEgb3V0IG9mIHRoZSBMUERPU1RBU0sgc3RydWN0dXJlLgoJQWxsb2NhdGUgRFBNSSByZWFsLW1vZGUgc2VnbWVudHMgZ2xvYmFsbHkgYXQgc3RhcnR1cC4KCVRyeSB0byBhbGxvY2F0ZSBET1MgbWVtb3J5IGF0IGFkZHJlc3MgMC4KCgkqIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGRsbHMvdXNlci91c2VyLnNwZWM6CglDYWxsIFdIX0dFVE1FU1NBR0UgaG9vayBpbiBQZWVrTWVzc2FnZSB0b28gKGJhc2VkIG9uIGEgcGF0Y2ggYnkgUm9iCglGYXJudW0pLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTG9ja3MgdGhlIHZpcnR1YWwgdmlld3MgbGlua2VkIGxpc3QuCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCU1ha2UgY2FsbHMgdG8gZ2V0aG9zdGJ5bmFtZSwgZ2V0aG9zdGJ5YWRkciwgZ2V0c2VydmJ5bmFtZSwKCWdldHNlcnZieXBvcnQsIGdldHByb3RvYnluYW1lIGFuZCBnZXRwcm90b2J5bnVtYmVyIHRocmVhZC1zYWZlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJVXNlIGFwcHJvcHJpYXRlIGNoYXJzZXQgaWYgZmFjZW5hbWVzIG9mIGZvbnQgaXMga25vd24uCglVc2UgQ1BfQUNQIGlmIERFRkFVTFRfQ0hBUlNFVCBpcyByZXF1ZXN0ZWQuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUluIFdNX0RSQVdJVEVNLCBhbHdheXMgY2FsbHMgdGhlIGFwcCB3aXRoIGEgdmFsaWQgY3VycmVudCBmb2N1c19pdGVtLgoKCSogZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2JyZWFrLmM6CglJbXByb3ZlZCBzdXBwb3J0IGZvciB2bTg2IG1vZGUuCgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyB3aGlsZSBpbiB2bTg2IG1vZGUuCglGaXhlZCBhIGNvdXBsZSBvZiBidWdzIGluIHZtODYgc3VwcG9ydC4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIG9iamVjdHMvZm9udC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGZvcm1hdCBzdHJpbmdzLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBzZXQgV1NfQ0hJTEQgYW5kIENDU19UT1AgdG8gdGhlIHRvb2xiYXIncyBzdHlsZS4KCVRPT0xCQVJfQ2FsY1Rvb2xiYXIoKTogaWYgdGhlIGJpdG1hcCBzaXplIGlzIDAsIHVzZSB0aGUgYnVpbHRpbgoJZGVmYXVsdHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBmcmVlLmZyPgoJVGhlIHNpemUgb2YgdGhlIGNvbWN0bDMyIGludGVybmFsIGJpdG1hcHMgaXMgMjR4MjQgbm90IDI2eDI2LgoJRml4ZWQgbWlub3IgdHlwb3MuCgoJKiB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9SRUFETUUud3JjOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglGaWxlbmFtZXMgbWF5IGNvbnRhaW4gJy8nIGFuZCAnXCcuCglTbWFsbCB0eXBvIGZpeGVzLgoKMjAwMC0wOS0yMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglQYWludCBiYWNrZ3JvdW5kIGJlZm9yZSBkcmF3aW5nIGl0ZW0gYW5kIHN1Yml0ZW1zLiAgUGFpbnQgYW55IGFyZWEgb2YKCXRoZSBjb250cm9sIG5vdCBvY2N1cGllZCBieSBpdGVtcy4gIEVhcmx5IG91dCBvZiBMSVNUVklFV19SZWZyZXNoWFhYCglpZiBubyBpdGVtcyBleGlzdC4gSW52YWxpZGF0ZVJlY3QoKSBvbiBMQlVUVE9ORE9XTiBvbmx5IGlmIHRoZSBjb250cm9sCgloYXMgaXRlbXMgdG8gZHJhdy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIG1pc2MvbWFpbi5jLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1ha2UgR2V0VGlja0NvdW50IG5vdCB1c2UgdGhlIHdob2xlIFVuaXggZXBvY2ggKHNpbmNlIDE5NzApIGFueSBtb3JlLAoJc2luY2UgdGhhdCBjcmFzaGVkIHNldmVyYWwgZ2FtZXMgb3IgY2F1c2VkIHByb2JsZW1zIHdpdGggdGhlbSBhcyB0aGV5CglhcmVuJ3QgdXNlZCB0byBhIGhpZ2ggV2luZG93cyB1cHRpbWUgb2YgbW9yZSB0aGFuIDI0LjkgZGF5cy4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzoKCVJvYmVydG8gQXVndXN0byBQdW5nYXJ0bmlrIDxwdW5nQGthcmluYS5ldGNvbS51ZnJncy5icj4KCUFkZGVkIFNfSVNGSUZPIGNoZWNrIGZvciBTb2xhcmlzLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBhIG1hY3JvIGZvciBfZGVjbHNwZWMgKGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgc3lub255bSBvZgoJX19kZWNsc3BlYykuCglSZW1vdmVkIHRoZSBkbGxpbXBvcnQgYW5kIGRsbGV4cG9ydCBtYWNyb3MuCgoJKiBpbmNsdWRlL29iamJhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglNdXN0IGluY2x1ZGUgJ3N0ZGxpYi5oJy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBIQU5ETEVfV01fTk9USUZZIGFuZCBGT1JXQVJEX1dNX05PVElGWS4KCgkqIGRsbHMvd2luZXBzL01ha2VmaWxlLmluLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5lcHMvcHNkbGcuaCwgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvcnNyYy5yYywgZGxscy93aW5lcHMvd2luZXBzLnNwZWMsIGRsbHMvd2luZXBzL3dwc19Fbi5yYywgZGxscy93aW5lcHMvd3BzX3h4LnJjLCBkbGxzL3dpbmVwcy8uY3ZzaWdub3JlLCBkbGxzL01ha2VmaWxlLmluOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUGFwZXIgc2l6ZSBhbmQgb3JpZW50YXRpb24gcHJvcCBzaGVldCBmb3Igd2luZXBzLgoKCSogZGxscy91c2VyL3RleHQuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IERUX1BBVEhfRUxMSVBTSVMsIERUX0VORF9FTExJUFNJUywgYW5kIERUX1dPUkRfRUxMSVBTSVMKCWZsYWdzIGluIERyYXdUZXh0LgoKCSogbG9hZGVyL21vZHVsZS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBXaW5FeGVjMTYgdG8gaGFuZGxlIHF1b3RlZCBmaWxlbmFtZXMgY29ycmVjdGx5LgoKCSogaW5jbHVkZS93aW5lL29ial9lcnJvcmluZm8uaCwgZGxscy9vbGUzMi9lcnJvcmluZm8uYzoKCURhbXlhbiBPZ255YW5vZmYgPERhbXlhbkByb2NrZXRtYWlsLmNvbT4KCUlFcnJvckluZm8gaXMgbm93IGRlcml2ZWQgZnJvbSBJVW5rbm93bi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0IHNvbWUgc2l0dWF0aW9ucyB3aXRoIGxpc3R2aWV3IHNlbGVjdGlvbnMuIFNwZWNpZmljYWxseSBmaXhlZAoJc2l0dWF0aW9ucyB3aGVyZSBpbiBhbiBPV05FUkRBVEEgbGlzdHZpZXcgdGhlIHNlbGVjdGlvbiByYW5nZXMgYmVjb21lCglpbnZhbGlkIGlmIHRoZSBudW1iZXIgb2YgaXRlbXMgaXMgY2hhbmdlZC4gQWRkaXRpb25hbCBmaXhlcyBhIGZldwoJcHJvYmxlbXMgcmVzdWx0aW5nIGluIGxvb3BzIGluIFJlbW92ZUFsbFNlbGVjdGlvbnMuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglBZGRlZCBhIGZldyBtaXNzaW5nIG1hY3JvcywgdHlwZXMgYW5kIHByb3RvdHlwZXMuCgoJKiBpbmNsdWRlL3dpbnJlcy5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGZyZWUuZnI+CglOZXcgZmlsZS4gQWxsIFJDIGZpbGVzIGdlbmVyYXRlZCBieSBWQzYgaW5jbHVkZSBhZnhyZXMuaCB3aGljaCBpbiB0dXJuCglpbmNsdWRlcyB0aGlzIGZpbGUuCgoJKiB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJU3BlbGxpbmcsIHRyYWNlIGZpeGVzLgoKCSogbWVtb3J5L2Vudmlyb24uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIFNldExhc3RFcnJvcigpIGluIEdldEVudmlyb25tZW50VmFyaWFibGVBLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCURhbXlhbiBPZ255YW5vZmYgPERhbXlhbkByb2NrZXRtYWlsLmNvbT4KCUFkZGVkIGVycm9yIGNvcnJlY3Rpb24gd2hlbiB1c2luZyBzeW1ib2wgb2Zmc2V0cy4KCgkqIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYzoKCUVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEB2b2lsYS5mcj4KCUZpeGVkIHJlZW50cmFuY3kgaXNzdWVzIGluIHBsYXkvc3RvcCBvcGVyYXRpb25zLgoKCSogZGxscy9jb21tZGxnL2NkbGdfeHgucmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggUHJpbnREbGcgY29sbGF0ZSBpY29ucy4gIEFkZCBvcmllbnRhdGlvbiBpY29ucy4KCgkqIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHVicyBmb3Igc2hsd2FwaS4xNTEgYW5kIHNobHdhcGkuMTUzLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3R1YiBmb3IgQ29Jc09sZTFDbGFzcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJU2V0IGNsb3NlIG9uIGV4ZWMoKSBmbGFnIGF0IHRpbWVzIHdoZW4gd2UgbGVhdmUgL2Rldi9kc3AgYW5kCgkvZGV2L3NlcXVlbmNlciBvcGVuLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBGTEFUQlVUVE9OIHN0eWxlIHRhYnMuCglNYWRlIHdpZHRoIG9mIEJVVFRPTiBzdHlsZSB0YWJzIG5vIGxlc3MgdGhhbiAyeCB0aGVpciBoZWlnaHQuCglFeHBhbmRlZCBmb2N1cyByZWN0IHRvIGJlIGp1c3QgaW5zaWRlIHRoZSBib3JkZXIuCgoJKiBkbGxzL2tlcm5lbC90b29saGVscC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkIEZJWE1FcyBmb3IgYWxsIHRoZXNlIG5pY2UgY29tcGxldGVseSB1bmltcGxlbWVudGVkIFRPT0xIRUxQCglmdW5jdGlvbnMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCWZpeGVkIHRoZSB3aW45NSByZWdpc3RyeSBsb2FkZXIgdG8gaGF2ZSBzb21ld2hhdCBzdHJpY3RlciBjaGVja2luZy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUZpeGVkIGJ1dHRvbiBpbWFnZSB0byBiZSBvZmZzZXQgdG8gdGhlIGNlbnRlciBvZiB0aGUgYnV0dG9uIGhvcml6b250YWxseSwKCXZpc2libGUgd2l0aCBXaW5aaXAgYW5kIEN1dGVGVFAgNC4wLiAgRml4ZWQgY29tcGlsZSB3YXJuaW5ncyBmcm9tIGZvcm1hdCB0eXBlCglzcGVjaWZpZXJzIGluIHR3byBUUkFDRSdzLiAgUmVtb3ZlZCBUUkFDRSBpbiBUT09MQkFSX0dldEl0ZW1SZWN0KCkuICBBZGRlZAoJYnV0dG9uIHdpZHRoIHRvIFRSQUNFIGluIFRPT0xCQVJfQ2FsY1Rvb2xiYXIoKS4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQGNvZGV3ZWF2ZXJzLmNvbT4KCUNoYW5nZWQgUmVkcmF3V2luZG93KCkncyB0byBJbnZhbGlkYXRlUmVjdCgpJ3MuICBSZWRyYXdXaW5kb3coKSB3YXMKCWJlaW5nIGNhbGxlZCB3aXRoIFJEV19VUERBVEVOT1csIGZvcmNpbmcgaW1tZWRpYXRlIHBhaW50aW5nLiAgQWRkZWQKCXJlZHJhd2luZyBsb2dpYyB0byBTVEFUVVNCQVJfU2V0VGV4dFcoKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkBjb2Rld2VhdmVycy5jb20+CglGaXggYmVoYXZpb3Igb2YgVFZTX1NJTkdMRUVYUEFORCBzdHlsZSBicm9rZW4gaW4gQ29yZWwgbWVyZ2UuICBPcHRpbWl6ZQoJcmVkcmF3aW5nIGluIFRSRUVWSUVXX1NldEl0ZW1BKCkgdG8gcmVkcmF3IG9ubHkgaWYgdGhlIGl0ZW0gY2hhbmdlcy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAZnJlZS5mcj4KCVJhaXNlZCBNQVhfRExMUyB0byAxMDAuCgoyMDAwLTA5LTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2luc29jazIuaCwgaW5jbHVkZS93aW5zdmMuaCwgaW5jbHVkZS93dHlwZXMuaCwgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBzb21lIG1pc3NpbmcgV0lORUxJQl9OQU1FX0FXIGRlZmluaXRpb25zLCB0eXBlcyBhbmQgbWVzc2FnZXMKCS0gU21hbGwgcHJvdG90eXBlIGZpeGVzCgoJKiByZWxheTMyL3Nub29wLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ2F0Y2ggRVhDRVBUSU9OX1BSSVZfSU5TVFJVQ1RJT04gZXhjZXB0aW9uIHRvby4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJTm90aWZpY2F0aW9uIE5NX0NMSUNLLCBOTV9SQ0xJQ0sgYW5kIE5NX0RCTENMSyBzZW50IGJ5IHRoZSBsaXN0dmlldwoJc2hvdWxkIHNldCBsUGFyYW0gdG8gYSBOTUxJU1RWSUVXIGluc3RlYWQgb2YgYSBOTUhEUi4gQWNjb3JkaW5nIHRvCglNU0ROIGRvYywgaXQgaXMgbGlrZSB0aGF0IHNpbmNlIHZlcnNpb24gNC43MSwgV2luZSBpcyByZXR1cm5pbmcgNS4wIGFzCgl0aGUgRExMIHZlcnNpb24uCgoJKiBjb250cm9scy9tZW51LmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIHdpbmRvdyBsb2NrIHByb2JsZW0gaW4gU2V0TWVudSgpLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIZW5uaW5nIEhvZmZtYW5uCglBdm9pZCBkZWFkbG9ja3MgaW4gRW51bU1ldGFGaWxlLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUF2b2lkIGluZmluaXRlIGxvb3AgaWYgUXVlcnlQYXRoT2ZSZWdUeXBlTGliIGlzIGNhbGxlZCB3aXRoIGxjaWQ9MC4KCjIwMDAtMDktMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnRlcnJ1cHRzLmMsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvbW9kdWxlLmMsIG1lbW9yeS9pbnN0ci5jOgoJTWlzYyBjbGVhbnVwcy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oOgoJQWRkZWQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3Igc3dpdGNoaW5nIHRvIHZtODYgbW9kZSB3aXRoIHByb3BlcgoJZXhjZXB0aW9uIGhhbmRsaW5nLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L3ZpcnR1YWwuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCU1vdmVkIEZJTEVfZG9tbWFwKCkgdG8gbWVtb3J5L3ZpcnR1YWwuYyAoYW5kIHJlbmFtZWQgaXQgVklSVFVBTF9tbWFwKS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglDaGFuZ2UgRklYTUUoIkJ1dHRvbiBzaXplIHNldCBhZnRlciBidXR0b24gaW4gdG9vbGJhclxuIikgaW4KCVNldEJ1dHRvblNpemUoKSB0byBXQVJOIGFzIHF1aXRlIGEgZmV3IGFwcGxpY2F0aW9ucyBhcmUgZG9pbmcgdGhpcwoJYWZ0ZXIgYWRkaW5nIGVhY2ggYnV0dG9uIHRvIHRoZSB0b29sYmFyIGFuZCB0aGVyZSBpcyBubyB3YXkgd2UgY2FuCglzdG9wIHRoZW0uCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglSZW1vdmUgdW51c2VkIGxvY2FsIHZhcmlhYmxlIGluIERHQV9JRGlyZWN0RHJhd1N1cmZhY2U0SW1wbF9TZXRQYWxldHRlKCkuCgoJKiBtaXNjL2NvbW0uYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJLSByZW1vdmVkIHJlZHVuZGFudCBmdW5jdGlvbnMgQ09NTV9HZXQoUmVhZC9Xcml0ZSlGZAoJLSBjb3JyZWN0ZWQgdGhlIG5hbWUgb2YgMTZiaXQgZnVuY3Rpb25zIGluIGNvbW1lbnRzCgktIHJlbW92ZWQgdW51c2VkIHN0YXRpYyB2YXJpYWJsZQoKCSogUkVBRE1FOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIHByZWZlciB3aW5laW5zdGFsbAoJLSBtZW50aW9uIGRlYnVnZ2VyIHNldHVwICh0ZW1wb3JhcnkpCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGxvYmouaDoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJRml4ZWQgaW5jb3JyZWN0IGFyZyBjb3VudCBpbiBTSEdldFNldHRpbmdzIHRoYXQgY2F1c2VzIHdpbnppcDMyLmV4ZSB0bwoJcmVwb3J0IGFuIGVycm9yLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglTb3J0aW5nIGl0ZW1zIGluIGEgbGlzdHZpZXcgdXNpbmcgTFZXX1NPUlRJVEVNUyBpcyBvbmx5IHNvcnRpbmcgdGhlIGl0ZW1zCglhbmQgbm90IHRoZSBzdWJpdGVtcy4gVGhpcyBwYXRjaCBmaXggdGhpcyBpc3N1ZS4gSSd2ZSByZW1vdmUgdGhlIHRlbXBvcmFyeQoJU29ydGxpc3QsIGl0IHdhcyBub3QgbmVjZXNzYXJ5IHRvIGNyZWF0ZSBhbm90aGVyIGxpc3QsIGFuZCBpdCB3YXMgYnVnZ3kuCgoyMDAwLTA5LTE2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBpZjE2MzIvdGh1bmsuYzoKCVJlbW92ZWQgYSBjb3VwbGUgb2YgdW51c2VkIGZ1bmN0aW9ucyBpbiB0aGUgQ2FsbG91dCBzdHJ1Y3R1cmUuCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywgb2JqZWN0cy9wYWxldHRlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCU1vdmVkIFNlbGVjdC9SZWFsaXplUGFsZXR0ZSBpbXBsZW1lbnRhdGlvbiB0byBVU0VSIGFuZCB1c2UKCXBmblNlbGVjdC9SZWFsaXplUGFsZXR0ZSBmdW5jdGlvbiBwb2ludGVycyBpbiBHREkuCglNYWtlIHN1cmUgdGhlIHBhbGV0dGUgaGFuZGxlIGlzIHZhbGlkIGluIEdESVNlbGVjdFBhbGV0dGUxNiAodGhhbmtzIHRvCglVd2UgQm9ubmVzKS4KCgkqIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZXJpYWwuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIG1pc2MvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglJbXBsZW1lbnRlZCBTZXRDb21tTWFzaywgU2V0Q29tbVRpbWVvdXRzLCBHZXRDb21tTWFzaywgR2V0Q29tbVRpbWVvdXRzLgoKCSogZGxscy93aW5lcHMvb2JqZWN0cy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3Mvd2luMTZkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvb2JqZWN0cy5jLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3Mvc3lzY29sb3IuYywgZGxscy90dHlkcnYvb2JqZWN0cy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgc3VwcG9ydCBmb3Igbm9uLWRlbGV0YWJsZSBzeXN0ZW0gYnJ1c2hlcyBhbmQgcGVucyBjcmVhdGVkIGJ5CglVU0VSLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJSm9obiBHaWxtb3JlIDxnbnVAdG9hZC5jb20+CglDbGVhbmVkIGl0IHVwIHNvIHRoYXQgY29kZSBwYXRocyB3aGljaCBoYXZlIHVuc3VwcG9ydGVkIFdTX1NPIHZhbHVlcwoJbmV2ZXIgYWN0dWFsbHkgcGFzcyB0aGVtIHRvIFVuaXggc3lzdGVtIGNhbGxzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgbWVtb3J5L3ZpcnR1YWwuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIFZpcnR1YWxBbGxvY0V4LgoKCSogaW5jbHVkZS93aW5iYXNlLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgR2V0VGltZVpvbmVJbmZvcm1hdGlvbiBhbmQgVElNRV9aT05FX0lEX0lOVkFMSUQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgdGFiIGNvbnRyb2wgdG8gdXNlIEhUVFJBTlNQQVJFTlQgd2hlbiBtb3VzZSBoaXRzIGNsaWVudCBhcmVhLAoJYnV0IG5vdCB0YWIgY29udHJvbCBidXR0b25zLgoKCSogbWlzYy9jZHJvbS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTaWxlbmNlIHNvbWUgYm9ndXMgZXJyb3IgbWVzc2FnZS4KCgkqIGluY2x1ZGUvd2luc29jay5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRqdXN0ZWQgdG8gYWxsb3cgTUZDIGNvbXBpbGF0aW9uOyBwcmV2ZW50IGRlZmluaXRpb24gb2Ygc3RydWN0IGZkX3NldAoJd2hpY2ggY29uZmxpY3RzIHdpdGggdGhlIGZkX3NldCB0eXBlZGVmLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBQV05EQ0xBU1MgZGVmaW5pdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJQWxsb3cgaGF2aW5nIGEgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCB0ZXh0IGNvbG9yIGZvciB0aGUgbGlzdHZpZXcuCgoJKiBvbGUvb2xlMm5scy5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVVzZSB0aGUgc3lzdGVtIGxvY2FsIHRpbWUgaWYgbHBUaW1lPU5VTEwuCgoyMDAwLTA5LTEzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9rZXJuZWwvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXBkYXRlIEVTUCBjb3JyZWN0bHkgb24gcmV0dXJuIGZyb20gZmxhdCB0aHVuayByb3V0aW5lcy4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCBpZjE2MzIvcmVsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGltbWQxLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9kaWZpZWQgQ2FsbFRvMTZSZWdpc3RlciByb3V0aW5lcyB0byB1cGRhdGUgcmVnaXN0ZXIgY29udGV4dCBhZnRlcgoJY2FsbCByZXR1cm5zLiBDYWxsZXJzIGFkYXB0ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGx3YXBpL3N0cmluZy5jLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBzb21lIFN0ciogcHJvdG90eXBlcyB0byBzaGx3YXBpLmguCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglNZXJnZWQgbWFpbiBXaW5lIGNoYW5nZXMgaW50byBDb3JlbCdzIHRyZWV2aWV3IGNvbnRyb2wgcmV3cml0dGVuIGJ5CglTZXJnZSBJdmFub3YgYW5kIEFuZHJldyBMZXd5Y2t5LiAgRml4ZWQgaXRlbSBmb2N1cyBiZWhhdmlvciB0byBtYXRjaAoJV2luZG93cy4gIEZpeGVkIGl0ZW0gc2VsZWN0aW9uIHdoZW4gdW4vZXhwYW5kaW5nIGl0ZW1zLiAgSW1wbGVtZW50ZWQKCVdNX1NFVFJFRFJBVy4gIEFkZGVkIENvcmVsJ3MgQ09NQ1RMMzJfQ3JlYXRlVG9vbFRpcCgpIGhlbHBlciBmdW5jdGlvbgoJdG8gY29tbWN0cmwuYy4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYywgY29udHJvbHMvYnV0dG9uLmM6CglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCShNZXJnZWQgYnkgTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+KQoJRml4ZWQgcHJvYmxlbSB3aXRoIG9yaWdpbiBmb3IgRFNUX0NPTVBMRVggc3R5bGUuCglGaXhlZCBoYW5kbGluZyBvZiBEU1NfRElTQUJMRUQgYW5kIERTU19ERUZBVUxUIHN0eWxlcy4KCglBZGRlZCBoYW5kbGluZyBvZiBCU19NVUxUSUxJTkUgc3R5bGUsIGxhYmVsIGFsaWdubWVudAoJc3R5bGVzIChCU19SSUdIVCwgZXRjLikgYW5kIHNvbWUgZXhvdGljIHN0eWxlcyBCU19GTEFUIChvbmx5CglwdXNoYnV0dG9ucyBmb3Igbm93KSwgYW5kIEJTX1BVU0hMSUtFLgoKCU1vZGlmaWVkIGxhYmVsIGRyYXdpbmcgcHJvY2VkdXJlOiBub3cgYWxsIGtpbmRzIG9mIGJ1dHRvbnMKCXVzZSBjb21tb24gQlVUVE9OX0RyYXdMYWJlbCBmdW5jdGlvbi4gQWN0dWFsIGxhYmVsIGRyYXdpbmcgaXMKCXBlcmZvcm1lZCBieSBEcmF3U3RhdGVXIGZ1bmN0aW9uLgoKCUdyb3VwQm94IG11c3QgdXNlIFdNX0NUTENPTE9SU1RBVElDIGluc3RlYWQgb2YgV01fQ1RMQ09MT1JCVE4gbWVzc2FnZS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVwZ3JhZGUgYWxzbyAxNWJwcCB0byAxNmJwcCBzdXJmYWNlcy4KCjIwMDAtMDktMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJS0RFIDEueCBoYXMgcHJvYmxlbXMgd2l0aCB1c2luZyBYU2hhcGVDb21iaW5lTWFzayB3aGVuIHRoZXJlIHdhcyBubwoJcHJldmlvdXMgcmVnaW9uLgoKCSogY29udHJvbHMvc2Nyb2xsLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldFNjcm9sbEluZm8gOiBkb24ndCBzaG93L2hpZGUgc2Nyb2xsYmFyIGlmIG5vIHBhcmFtZXRlciAobWludmFsLAoJbWF4dmFsKSBjaGFuZ2UuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oOgoJQWRkZWQgbWlzc2luZyBfX3ZvbGF0aWxlX18uCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2dkaS9nZGkuc3BlYywgZmlsZXMvZmlsZS5jLCBtaXNjL21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luZG93cy9tZXNzYWdlLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi90YWIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gZml4ZXMgZGVidWdnZXIgb3V0cHV0CgktIGdldCByaWQgb2Ygd3JvbmcgY29tbWVudHMKCS0gZml4IGNvbW1lbnRzCgktIC5zcGVjIHNwZWxsaW5nIGZpeAoJLSBpbXByb3ZlIHdhcm5pbmcgbWVzc2FnZQoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgd2luMzIvdGltZS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJImltcGxlbWVudGVkIiBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudC4KCgkqIHdpbmRvd3MvY2xhc3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IHRyeSB0byBkZWxldGUgYSB3bmRjbGFzcyBiYWNrZ3JvdW5kIGJydXNoIGlmIGl0J3MgYSBDT0xPUl8qCgljb25zdGFudC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCU1ha2Ugc3VyZSBOQ19IYW5kbGVOQ0NhbGNTaXplIHJldHVybnMgYSB2YWxpZCByZWN0YW5nbGUuCglQYWludGluZyBmYWlscyBpZiB0aGUgcmVjdGFuZ2xlIGlzIGludmFsaWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUhpZGUgdGhlIHZlcnRpY2FsIHNjcm9sbGJhciB3aGVuIGxpc3R2aWV3IHN0eWxlIGlzIExWU19MSVNULgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGQgV01fVVNFUkNIQU5HRUQuCgoJKiBkZWJ1Z2dlci9pbmZvLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGluY2x1ZGUvdGxoZWxwMzIuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSB0cFhYWCBpbnN0ZWFkIG9mIHRiWFhYIGluIHRhZ1RIUkVBREVOVFJZMzIuCgoJKiBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXhlZCBER0EgLyBER0EgMiBwYWxldHRlIGNyZWF0aW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4IGEgbWVtb3J5IGxlYWsgaW4gWDExRFJWX0dldFRleHRFeHRlbnRQb2ludC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wOS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzoKCUFkZGVkIFdJTkVTRVJWRVIgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYWxsb3cgb3ZlcnJpZGluZyB0aGUgbm9ybWFsCglzZXJ2ZXIgc2VhcmNoIHNlcXVlbmNlLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglSZW1vdmVkIGNoZGlyKCIvIikgdW50aWwgd2UgaGF2ZSBwcm9wZXIgVW5peCBjd2QgbWFuYWdlbWVudC4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6CglJbXBsZW1lbnRlZCBSdGxwV2FpdEZvckNyaXRpY2FsU2VjdGlvbiBhbmQgUnRscFVuV2FpdENyaXRpY2FsU2VjdGlvbi4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIE5FX0xvYWRFeGVIZWFkZXIgZXJyb3IgaGFuZGxpbmcuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGxvYWRlciAtIGJyb2tlbiBzZWFyY2ggZm9yIGFscmVhZHkgbG9hZGVkIG1vZHVsZXMuCgoJKiBvYmplY3RzL2RpYi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBmYWxsYmFjayBjb2RlIGZvciBTdHJldGNoQmx0IG9uIFJMRSBESUJzIHdpdGggZ2Fwcy4KCjIwMDAtMDktMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2ZvbnRzLnNnbWw6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGJkZnRvcGNmIGNvbW1hbmQuCgoJKiBkbGxzL21zYWNtL2ZpbHRlci5jLCBkbGxzL21zYWNtL2Zvcm1hdC5jLCBkbGxzL21zYWNtL3N0cmVhbS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCAqRmlsdGVyKiBmdW5jdGlvbnMuCglNaXNjIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIFRDTV9HRVRST1dDT1VOVC4KCgkqIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSBtaXNzaW5nIGxpYnJhcnkgZGVwZW5kZW5jaWVzLgoKCSogaW5jbHVkZS9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jZ3VpZC5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIGNndWlkLmguCgoJKiBkbGxzL2RkcmF3L2RnYS5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCURvIG5vdCBzdXBwb3J0IERHQSB3aGVuIERpcmVjdFZpZGVvIG5vdCBwcmVzZW50LgoKCSogd2luZG93cy9kZWZ3bmQuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJVW5pZnkgV01fU0VUVEVYVCBoYW5kbGluZyBhbW9uZyBEZWZXaW5kb3dQcm9jMTYvRGVmV2luZG93UHJvY0EvRGVmV2luZG93UHJvY1cuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCUF2b2lkIGRpdmlkZSBieSB6ZXJvIHdoZW4gbGlzdGJveCBzZXQgdG8gemVybyBoZWlnaHQuCgoJKiB3aW5kb3dzL21kaS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglTaW1wbGlmeSBhIGJpdCBNREkgY2hpbGQgd2luZG93IGNyZWF0aW9uLgoKCSogY29udHJvbHMvbWVudS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglHZXRNZW51IG1pZ2h0IGJlIHVzZWQgdG8gZ2V0IGNoaWxkIHdpbmRvdyBpZC4KCjIwMDAtMDktMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJR2lvdmFubmkgUGFuY290dGkgPGdpb3Zhbm5pLnBhbmNvdHRpQGNlZGVjcmEuaXQ+CglJdGFsaWFuIGtleWJvYXJkIGZpeGVzLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCURPU0ZTX01hdGNoTG9uZyBpZ25vcmVkIHNldmVyYWwgdGhpbmdzIGFib3V0IGZpbGUgbWFzayBtYXRjaGluZyBmb3IKCWxvbmcgZmlsZSBuYW1lcy4KCgkqIGluY2x1ZGUvd2luZS91bmljb2RlLmg6CglFcmlrIEhvZm1hbiA8ZXJpay5ob2ZtYW5AYTEubmw+CglBZGRlZCBtaXNzaW5nIGNvbnN0IHRvIGV4dGVybmFsIHRhYmxlcyBkZWZpbml0aW9ucy4KCgkqIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL2NvbW0uaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgbWlzYy9jb21tLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlcmlhbC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJQWRkZWQgc2VyaWFsIHBvcnQgb2JqZWN0IHRvIHRoZSBzZXJ2ZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIE1ha2Ugc3VyZSB0b29sdGlwcyBhcmUgaGlkZGVuIGJlZm9yZSBkZWxldGluZyB0aGVtLgoJLSBHbGl0Y2ggaGFwcGVuZWQgd2hpbGUgbW92aW5nIGZyb20gYSB0b29sdGlwIHRvIGFub3RoZXIgKGZpeGVkKS4KCgkqIG9iamVjdHMvZGMuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglNYWtlIEdldERldmljZUNhcHMxNiAoaGRjLCBOVU1DT0xPUlMpIG5vdCByZXR1cm4gLTEgZm9yIDE2IGJpdHMgcHJvZ3JhbXMuCgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdXBwb3J0IGZvciBjcDk0OS4KCjIwMDAtMDktMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvYXRvbS5jOiBGaXhlZCBjdXQmcGFzdGUgdHlwby4KCgkqIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3h2aWRlby5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3RzX3h2aWRlby5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIHBvc3NpYmlsaXR5IHRvIHVzZSBYVmlkZW8uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJbXBsZW1lbnRlZCBib3RoIGN1c3RvbWRyYXcgbWVzc2FnZSBzZW5kaW5nIGFuZCBoYW5kbGluZyAoYmFzZWQgb2ZmCgl0aGUgdHJlZXZpZXcgbWV0aG9kKSBhcyB3ZWxsIGFzIExWU19PV05FUkRSQVdGSVhFRC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglGaXhlZCBhIGJ1ZyAoaW5jb3JyZWN0IHNpemUgaW4gbWVtbW92ZSkgdGhhdCBJIGludHJvZHVjZWQgd2l0aCBhbgoJZWFybGllciBwYXRjaC4gVGVzdGVkIHdpdGggd29yZHZpZXcuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCVBoaWwgQ29sZSA8dWtwZ2NAcC5jb2xlLmVhc3luZXQuY28udWs+CglBZGRlZCB0d28gZGlyZWN0b3JpZXMgdG8gZGVmYXVsdCBub24td2luZG93cyBpbnN0YWxsLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIG5ld2VyIChBU1BJIDMuMCA/KSBmdW5jdGlvbiBzdHVicyB0byBXTkFTUEkzMi4KCUJldHRlciBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvc2hlbGwzMi9zeXN0cmF5LmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglTeXN0cmF5IHNob3VsZCBrZWVwIGEgY29weSBvZiBpdHMgaWNvbnMuCgoJKiBzZXJ2ZXIvc29jay5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkYXB0ZWQgV2luc29jayB0byBMaW51eCAyLjQgVENQIHNvY2tldCBwb2xsKCkgYmVoYXZpb3VyCgkodGhhbmtzIHRvIEJlcmVuZCBPemNlcmkgZm9yIGZpbmRpbmcgdGhlIHByb2JsZW0pLgoKCSogd2luZG93cy9tZGkuYzogU2VyZ2UgSXZhbm92CglEZWxheSBkZXN0cm95aW5nIG1lbnUgZW50cnkgdW50aWwgYWxsIG1lc3NhZ2VzIGFyZSBzZW50LgoKMjAwMC0wOS0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9hdG9tLmM6CglGaXhlZCBVbmljb2RlIGNvbnZlcnNpb24gaW4gR2V0QXRvbU5hbWVBICh0aGFua3MgdG8gR2VyYXJkIFBhdGVsKS4KCgkqIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbnRkbGwuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdHR5ZHJ2LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3gxMWRydi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2NvbXBvYmouYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZCBqaXN4MDIxMiBlbmNvZGluZy4KCVJlbW92ZSBGSVhNRXMgZm9yIGltcGxlbWVudGVkIERCQ1MgaGFuZGxpbmcuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglBZGRlZCBtaXNzaW5nIGNvbW1hLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglNaWtlIE1jQ29ybWFjayA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCVJld3JvdGUgcXVpY2tzb3J0IHRvIHNvbHZlIGluZmluaXRlIHJlY3Vyc2lvbnMgV2luOTggZXhwbG9yZXIuZXhlLgoKMjAwMC0wOS0wMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2NvbnNvbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hhbmdlIHh0ZXJtIG1vdXNlIHRyYWNraW5nIG1vZGUgdG8gQlROX0VWRU5UX01PVVNFICh0cmFjayBpZiBwcmVzc2VkKS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglBdm9pZCBjcmFzaCBvbiBlbXB0eSBjb21tYW5kLWxpbmUuCgoJKiBkZWJ1Z2dlci9zdGFicy5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglBZGRlZCB0d28gbWlzc2luZyBjYXN0cy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJSmVhbi1DbGF1ZGUgQmF0aXN0YSA8amNiQG1hY2FkYW1pYW4uY29tPgoJVXNlIFNldERJQml0cyBpbnN0ZWFkIG9mIFN0cmV0Y2hESUJpdHMgKGluIEFOSU1BVEVfUGFpbnRGcmFtZSkuCgoyMDAwLTA5LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL2J1aWx0aW4uYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCUF2b2lkIGJ1ZmZlciBvdmVyZmxvd3MgaW4gYnVpbHRpbiBkbGwgbG9hZGluZyAod2l0aCB0aGUgaGVscCBvZiBEbWl0cnkKCVRpbW9zaGtvdikuCgoJKiB3aW5kb3dzL21kaS5jOiBIZW5uaW5nIEhvZmZtYW5uCglBdWdtZW50IG1lbnUgd2hlbiBhIG1kaSB3aW5kb3cgc3RhcnRzIG1heGltaXplZC4KCgkqIHdpbmRvd3MvbWRpLmM6IEZyYW5jaXMgQmVhdWRldAoJTURJIFBhdGNoIHdoaWNoIGZpeGVzIHByb2JsZW1zIGluIFBSLCBRUCwgV1AgYW5kIFBhcmFkb3guCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglEb24ndCB1c2UgY29waWVzIG9mIGNyaXRpY2FsIHNlY3Rpb25zIG1hZGUgYnkgbWVtY3B5KCkKCUFkZGVkIG1pc3NpbmcgV0lOQVBJcwoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvd2luZWRiZy5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXggZm9yIGRlYnVnZ2VyIGRpc2Fzc2VtYmx5IGJlaW5nIG9mZiBieSBvbmUgYnl0ZSBhZnRlciB1c2luZyBuZXh0aQoJb24gYSAiY2FsbCIgaW5zdHJ1Y3Rpb24uCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVdoZW4gY2hlY2tpbmcgdGhlIHNvY2tldCByZXR1cm4gYnkgdGhlIHNlcnZlciByZXF1ZXN0LCB3ZSBzaG91bGQgZG8gYQoJInNpZ25lZCIgY2hlY2suCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgQ29HZXRQU0Nsc2lkKCkuCgoyMDAwLTA4LTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvd2luZWNvbmY6CglQaGlsIENvbGUgPHVrcGdjQHAuY29sZS5lYXN5bmV0LmNvLnVrPgoJVGhlIFBhdGggdmFyaWFibGUgaW4gdGhlIGNyZWF0ZWQgLndpbmVyYyBtdXN0IGJlIGluIGRvcyBmb3JtYXQuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCVBoaWwgQ29sZSA8dWtwZ2NAcC5jb2xlLmVhc3luZXQuY28udWs+CglTbWFsbCBmaXguCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBhIHN0cmluZyBidWZmZXIgb3ZlcmZsb3cuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUplYW4tQ2xhdWRlIEJhdGlzdGEgPGpjYkBtYWNhZGFtaWFuLmNvbT4KCS0gaW1wcm92ZWQgQUNTX1RSQU5TUEFSRU5UIGFuZCBBQ1NfQ0VOVEVSIHN1cHBvcnQKCS0gYWRkZWQgUkxFOCBpbmNyZW1lbnRhbCBkZWNvbXByZXNzaW9uCgktIGVhY2ggYW5pbWF0aW9uIGlzIG5vdyBjb250cm9sbGVkIGJ5IGl0cyBvd24gV2luZG93cyB0aHJlYWQKCS0gYWRkZWQgdXNlIG9mIENyaXRpY2FsIFNlY3Rpb25zIGluIHRoZSBXTV9QQUlOVCBoYW5kbGVyLgoKCSogd2luMzIvY29uc29sZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlcGxhY2VkIFVTRVIzMi5ETEwgdXNlIGJ5IGhhcmRjb2RlZCB0YWJsZXMgZm9yIFZrS2V5U2NhbkEgYW5kCglNYXBWaXJ0dWFsS2V5QS4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvY29udGV4dF9zcGFyYy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvc2VydmVyLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1lbW9yeS92aXJ0dWFsLmMsIG1pc2MvY29tbS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglDb252ZXJ0ZWQgYSBsb3Qgb2Ygc2VydmVyIHJlcXVlc3RzIHRvIHRoZSBuZXcgZXhjZXB0aW9uIGhhbmRsaW5nCgltZWNoYW5pc20uCgoyMDAwLTA4LTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCUZpeGVkIG5vbi1PcGVuR0wgY29tcGlsZS4KCgkqIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9yZWdpc3RyeS5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzY2hlZHVsZXIvdGltZXIuYywgc2VydmVyL2F0b20uYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3N5bmMuYzoKCUFkZGVkIGV4Y2VwdGlvbiBoYW5kbGluZyB3cmFwcGVyIHRvIGEgbnVtYmVyIG9mIHNlcnZlciByZXF1ZXN0cy4KCUNoYW5nZWQgYSBmZXcgcmVxdWVzdHMgdG8gdXNlIHRoZSBuZXcgdmFyYXJnIG1lY2hhbmlzbS4KCjIwMDAtMDgtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYywgbWlzYy9jZHJvbS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgdmVyYm9zZSBDRC1ST00gc2VyaWFsIG51bWJlciB3YXJuaW5ncyBhbmQgc29tZSBzcGVsbGluZyBlcnJvcnMuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCU5ld2JpZSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGZvciAzRCBjcmVhdGlvbiBmYWlsdXJlLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXlfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5c3AuYywgZGxscy9kcGxheXgvZHBsYXlzcC5oLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmgsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBNb3JlIGltcGxlbWVudGF0aW9uCgktIFNob3VsZCBiZSBhYmxlIHRvIGVudW1lcmF0ZSBzZXNzaW9ucyBhbnl3aGVyZSB3aXRoIGF0IGxlYXN0IHRjcC9pcAoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0czoKCUFkZGVkIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIG1hY3JvcyB0aGF0IHdpbGwgYmUgbmVlZGVkIHRvIHN1cHBvcnQKCXJlZW50cmFudCBzZXJ2ZXIgcmVxdWVzdHMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL2lucHV0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgktIGZpeCBvbmUgbG9ja2luZyBpZ25vcmFudCByZXR1cm4gMDsgaW4gTVNHX1NlbmRNZXNzYWdlSW50ZXJUaHJlYWQoKQoJLSBmaXggYSBjcmFzaCBpbiBRVUVVRV9SZW1vdmVTTVNHKCkKCS0gY29udmVydCBzb21lIHF1ZXVlIFdBUk4oKSB0byBFUlIoKQoJLSBzcGFpbGVuZyBmaWtzZXMKCgkqIGNvbnRyb2xzL2xpc3Rib3guYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWx3YXlzIGNhbGwgTElTVFZJRVdfU2V0U2VsZWN0aW9uKCkgZm9yIGFuIGl0ZW0sIGV2ZW4gaWYgdGhhdCBpdGVtCgloYXMgYmVlbiBzZWxlY3RlZCBiZWZvcmUsIGluIG9yZGVyIHRvIGxldCBvdGhlciBpdGVtcyBnZXQgZXJhc2VkLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCUFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jb20+CglDb252ZXJ0IHRoZSBVbmljb2RlIENoYXJhY3RlciBpZCB0byBhIGdseXBoIGlkIGluCglYMTFEUlZfR2V0VGV4dEV4dGVudFBvaW50LgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY29tPgoJLSBlbmhhbmNlZCByZXBvcnRpbmcgb2YgdW5zdXBwb3J0ZWQgWCBmb250IGVuY29kaW5ncwoJLSBhZGRlZCAtY3AtKi0gZGF0YSB0byBmb250IGVuY29kaW5nIGxvb2t1cCBzdHJ1Y3R1cmVzCgoyMDAwLTA4LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9sb2Fkb3JkZXIuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy9vcHRpb25zLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CgktIEFsd2F5cyBzdG9yZSB0aGUgZnVsbCBwYXRoIG5hbWUgb2YgMzJiaXQgbW9kdWxlcyBpbiBXSU5FX01PRFJFRgoJLSBBZGQgdGhlIHBvc3NpYmlsaXR5IHRvIHVzZSBwYXRoIG5hbWVzIHdpdGggdGhlIC0tZGxsIGNvbW1hbmQgbGluZQoJICBvcHRpb24KCS0gQWRkIHRoZSBwb3NzaWJpbGl0eSB0byB1c2UgdGhlIC0tZGxsIGNvbW1hbmQgbGluZSBvcHRpb24gc2V2ZXJhbAoJICB0aW1lcy4KCS0gTm90ZTogVGhlIGNvbG9uLXNpZ24gaXMgbm93IGV4Y2hhbmdlZCB3aXRoIHRoZSBwbHVzLXNpZ24sIGFzIGl0IGlzCgkgIHBhcnQgb2YgZG9zIHBhdGggbmFtZXMuCgoJKiB0b29scy93aW5laW5zdGFsbDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIGEgd2luZSBycG0gdW5pbnN0YWxsIHNlY3Rpb24gdG8gd2luZWluc3RhbGwuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOgoJRnJhbmNvaXMgTWV0aG90IDxmcmFuY29pc21AbWFjYWRhbWlhbi5jb20+CglEbyBub3QgY2hlY2sgZm9yIHN5c3RlbSBtZW51IGlmIHRoZSB3aW5kb3cgaGFzIHN0eWxlIFdTX0VYX1RPT0xfV0lORE9XLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBBUkdCIDE1NTUgZm9ybWF0CgktIGZpeGVkIHJlZmNvdW50IHByb2JsZW0gZm9yIEFkZC9EZWxldGVBdHRhY2hlZFN1cmZhY2UKCgkqIHNlcnZlci9yZWdpc3RyeS5jOgoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNvbT4KCUZpeGVkIHR5cG8gaW4gSEtFWV9DVVJSRU5UX0NPTkZJRyBuYW1lLgoKCSogZGxscy9rZXJuZWwvbWVzc2FnZXMvd2luZXJyX2VudS5tYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJQWRkIG1pc3NpbmcgbWVzc2FnZSB0byB3aW5lcnJfZW51Lm1jLgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW5jcmVhc2UgbnVtYmVyIG9mIHN1cHBvcnRlZCBhcmdzIGZvciBXT1dfQ2FsbFByb2MzMlcxNiBmcm9tIDExIHRvIDEzCgkoZm9yIENyZWF0ZVNlcnZpY2UpLgoKCSogZGxscy9rZXJuZWwvd3Byb2NzLnNwZWMsIG1zZG9zL3Z4ZC5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglTdHViIHN1cHBvcnQgZm9yIGludDJmL2F4PTE2ODQvYng9MDAyNyAoVlhETERSKS4KCjIwMDAtMDgtMjYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9leGNlcHQuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGxvYWRlci90YXNrLmM6CglSZW1vdmVkIGNhbGxzIHRvIENvbnZlcnRUb0dsb2JhbEhhbmRsZSBhbmQgTWFrZUNyaXRpY2FsU2VjdGlvbkdsb2JhbC4KCgkqIGRsbHMvbnRkbGwvcmVnLmMsIGluY2x1ZGUvbnRkZGsuaDoKCVNpbXBsaWZpZWQgcm9vdCBrZXkgaGFuZGxpbmcgbm93IHRoYXQgdGhlIHNlcnZlciBzdXBwb3J0cyBhIHJlYWwgcm9vdAoJa2V5LiBGaXhlZCBhIGZldyBwcm90b3R5cGVzLiBJbXBsZW1lbnRlZCBOdERlbGV0ZUtleS9OdERlbGV0ZVZhbHVlS2V5LgoKCSogZGxscy9udGRsbC9taXNjLmMsIGRsbHMvbnRkbGwvbnRkbGxfbWlzYy5oOgoJRml4ZWQgZGVidWdzdHJfYXMvdXMgcHJvdG90eXBlcy4KCgkqIGRsbHMvd2luaW5ldC9odHRwLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy9jb21tLmMsIG1pc2MvZXh0X2RlYnVnZ2VyLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCBjb25zb2xlL3h0ZXJtLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL250ZGxsL3NpZ25hbF9zcGFyYy5jLCBkbGxzL29sZWF1dDMyL3BhcnNlZHQuYywgZGxscy93aW5pbmV0L2Z0cC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBtYWRlIHRoZSBNSURJIHNlcXVlbmNlciBlcnJvciBtZXNzYWdlIG11Y2ggYmV0dGVyIGZvciBjb25mdXNlZCB1c2VycwoJICB0byBiZSBmb3VuZCBvbiAjV2luZUhRCgktIHVzZSBzdHJlcnJvciBpbnN0ZWFkIG9mIGVycm5vIGF0IGltcG9ydGFudCBwbGFjZXMKCS0gZ290IHJpZCBvZiBIQVZFX1NUUkVSUk9SIG1hY3JvCgktIHJlbW92ZWQgc29tZSAjaW5jbHVkZTpzIChob3BlZnVsbHkgSSBkaWRuJ3QgYnJlYWsgYW55dGhpbmcpCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJUmVwbGFjZWQgY0N1ckltYWdlIGJ5IGNNYXhJbWFnZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CgkiRml4ZWQiIGhvcnJpYmx5IG1pc2FsaWduZWQgcGFnZXMgaW4gcHJvcGVydHkgc2hlZXRzIG9mIGFwcGFyZW50bHkKCW5ld2VyIEluc3RhbGxTaGllbGRzLgoKCSogZGxscy93aW5lcHMvaW5pdC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZWdpc3RlciBXaW5lIFBvc3RzY3JpcHQgRHJpdmVyIGFzICJXSU5FUFMiLCAiV0lORVBTLkRMTCIgYW5kCgkiV0lORVBTLkRSViIgdG8gYWxsb3cgYW4gZWFzeSBjb25maWd1cmluZyBmb3IgdXNlcnMuCgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CgkgIGltcGxlbWVudHMgRHJhd1RleHQgZm9yIGNwOTMyLgoKCSogZGxscy91c2VyL2RkZW1sLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglEb24ndCBtYWtlIERERU1MIG11dGV4ZXMgZ2xvYmFsIGFueSBtb3JlLgoKCSogZmlsZXMvcHJvZmlsZS5jLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuaDoKCUFkZGVkIGEgcmVhbCByb290IGtleSBhbmQgc2ltcGxpZmllZCBjcmVhdGlvbiBvZiB0aGUgSEtFWV8qIHNwZWNpYWwgcm9vdCBrZXlzLgoJRG8gbm90IHByZWZpeCBhbGwga2V5cyB3aXRoIHRoZSBuYW1lIG9mIHRoZSB0b3Aga2V5IHdoZW4gc2F2aW5nIHRvIGEgZmlsZS4KCVRyeSB0byBsb2FkICRXSU5FUFJFRklYL2NvbmZpZyBpbnRvIHRoZSBXaW5lIGNvbmZpZyBicmFuY2ggYXQgc3RhcnR1cC4KCgkqIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zYWNtL21zYWNtLnJjLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbS9zdHJlYW0uYywgZGxscy9tc2FjbS93aW5lYWNtLmgsIGluY2x1ZGUvbXNhY20uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wbGVtZW50ZWQgbW9zdCBvZiAnKkZvcm1hdConIEFQSS4KCUltcHJvdmVkIGludGVybmFsIG9iamVjdCBhbmQgbWVzc2FnZXMgaGFuZGxpbmcuCglTdGFydGVkIHNvbWUgJypGaWx0ZXIqJyBmdW5jdGlvbnMuCglGaXhlZCBzdGFuZGFyZCBoZWFkZXJzIGZvciBXaW5lbGliLgoJRml4ZWQgYWNtTWV0cmljcy4KCjIwMDAtMDgtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGluY2x1ZGUvbnRkZGsuaDoKCUZpeGVkIFJ0bCogc3RyaW5nIGZ1bmN0aW9ucyBmb3IgcHJvcGVyIE1CQ1MvY29kZXBhZ2Ugc3VwcG9ydC4gQWRkZWQgYQoJZmV3IG1vcmUgZnVuY3Rpb25zLgoKCSogZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1vdmVkIFRBU0tfQ3JlYXRlIGNhbGwgdG8gS0VSTkVMIGluaXRpYWxpc2F0aW9uIHJvdXRpbmUuCglDbGVhciBsYXN0IGVycm9yIGNvZGUgYmVmb3JlIGNhbGxpbmcgbWFpbiBlbnRyeSBwb2ludCAocmVwb3J0ZWQgYnkKCUphbWVzIEp1cmFuKS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3VzZXIvdXNlci5zcGVjLCBtZW1vcnkvc3RyaW5nLmM6CglGaXhlZCBhIGNvdXBsZSBvZiBXSU5BUEkgaXNzdWVzIHdpdGggMTYtYml0IHNwZWMgZmlsZXMgKHRoYW5rcyB0bwoJTWFyY3VzIE1laXNzbmVyKS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxheXNwLmMsIGRsbHMvZHBsYXl4L2RwbGF5c3AuaCwgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfbWVzc2FnZXMuaCwgZGxscy9kcGxheXgvZHBsYXl4X3F1ZXVlLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuYywgZGxscy9kcGxheXgvbmFtZV9zZXJ2ZXIuaCwgaW5jbHVkZS9kcGxheS5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9ndWlkLmMsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGluaXQuaCwgZGxscy9kcGxheXgvZHBsYXkuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEltcGxlbWVudGVkIGxvYWRpbmcgYW5kIGluaXRpYWxpemF0aW9uIG9mIHNlcnZpY2UgcHJvdmlkZXJzCgktIENyZWF0ZWQgc2VydmljZSBwcm92aWRlciBDT00gb2JqZWN0CgktIExvdHMgb2YgZHBsYXkvZHBsb2JieSBpbXBsZW1lbnRhdGlvbi9maXhlcwoJLSBDbGVhbiB1cCBvZiBvbGUvZ3VpZC5jCgoJKiBvYmplY3RzL2RjLmM6IEJhY2tlZCBvdXQgZm9udCBjb2RlcGFnZSBjaGFuZ2UuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbWlzYy9jb21tLmMsIG1pc2MvdmVyc2lvbi5jLCBtc2Rvcy9pbnQyZi5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCU1pbm9yIGNvc21ldGljIGNoYW5nZXMuCgoJKiBtaXNjL3R3ZWFrLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUNsZWFudXAgYW5kIHNwZWVkdXAgb2YgaW5pdCBjb2RlLgoKCSogb2JqZWN0cy9nZGlvYmouYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVzdG9yZWQgdGhlIGhQc2V1ZG9CaXRtYXAgaGFjayBmb3IgcHJvZ3JhbXMgZGVsZXRpbmcgdGhlIDF4MSBiaXRtYXAKCWluIG1lbW9yeSBEQ3MuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvdGV4dC5jOgoJQmFja2VkIG91dCBmb250IGNvZGVwYWdlIGNoYW5nZS4KCgkqIGRsbHMvZGRyYXcvaGVscGVyLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgdGhlIGRpc3BsYXlpbmcgb2YgdGhlIEZPVVJDQyBjb2RlcyBpbiBfZHVtcF9waXhlbGZvcm1hdC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZWNvcmRpbmcgZm9ybWF0IHNldHRpbmdzICgxNiBiaXQgd2FzIGJyb2tlbikgYW5kIHJlZW50cmFuY3kKCWlzc3Vlcy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaCwgaW5jbHVkZS9zaGxvYmouaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW1wcm92ZWQgYSBiaXQgdGhlIGZvbGRlciBicm93c2luZyBpbXBsZW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOgoJTWF0dGhldyBMYWtlIDxNYXN0ZXJSX0xAeWFob28uY29tPgoJQWRkZWQgTEhORC4KCgkqIHRvb2xzL3dyYy8uY3ZzaWdub3JlLCB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbjoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CglGaXhlZCBhIExBTFIoMikgcHJvYmxlbSB3aGlsZSBzY2FubmluZyB1c2VydHlwZSByZXNvdXJjZXMgd2hpY2ggaGFkCglpZGVudGlmaWVycyBmb3IgYm90aCBuYW1lIGFuZCB0eXBlLgoKCSogbWlzYy93c3ByaW50Zi5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVVzZSBpbnQgaW5zdGVhZCBvZiBDSEFSL1dDSEFSIGluIHZhX2FyZygpIChmaXhlcyBnY2MtY3VycmVudCBjb21waWxlCglwcm9ibGVtKS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUNoYW5nZSBwaXhlbCBmb3JtYXQgZm9yIDI0IEJQUCBzdXJmYWNlcyB3aGVuIHRoZSBERHJhdyBCUFAgaXMgMzIuCgoJKiBvYmplY3RzL2dkaW9iai5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJR2V0T2JqZWN0QTogdW5sb2NrIHRoZSBvYmplY3QgYWdhaW4gZXZlbiBpbiBjYXNlIG9mIGZhaWx1cmUuCgoyMDAwLTA4LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oOgoJRml4ZWQgZmluYWxseSBoYW5kbGVyIG5hbWUuCgoJKiB3aW5kb3dzL2NsYXNzLmM6CglGaXhlZCBSZWdpc3RlckNsYXNzIGxhc3QgZXJyb3IgY29kZSBvbiBhdG9tIGNyZWF0aW9uIGZhaWx1cmUuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUNsZWFuZWQgdXAgbWFqb3IgdWdsaW5lc3MgaW4gX19sZkNoZWNrU3VtLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUxhcmdlIGNhcHRpb24gaWNvbnMgc2hvdWxkIGVuZCBpbiAnLi4uJyB3aGVuIHRoZXkgYXJlIGFiYnJldmlhdGVkLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglGcmFuY29pcyBNZXRob3QgPGZyYW5jb2lzbUBtYWNhZGFtaWFuLmNvbT4KCUZvciB0aGUgdHJhbnNwYXJlbmN5IGlzc3VlLCBpbXBsZW1lbnRlZCBhIHN3aXRjaC1jYXNlIGZvciB0aGUgYml0Y291bnQKCShiaXQgcGVyIHBpeGVsKSBvZiB0aGUgYW5pbWF0aW9uIGZpbGVzLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmUgd2FzIG5vdCBkcmF3aW5nIHRyYWNrYmFycyB3aXRoIG1pbmltdW0gcmFuZ2VzIG9mIG1vcmUgdGhhbiAwCgljb3JyZWN0bHkuCgoyMDAwLTA4LTIyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIHJlbW92ZWQgdW5uZWNlc3NhcnkgcmVjdXJzaW9uCgktIHVwb24gcXVlcnkgZmFpbHVyZSBvbiBtYWluIHByaW1hcnkgbGNpZCBhbmQgc2Vjb25kYXJ5IGxjaWQsCgkgIGF0dGVtcHRzIGEgcXVlcnkgb24gc3lzdGVtIGxjaWQgKDApCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgaWYxNjMyL3Nub29wLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVzIGZvciByZWFkaW5nIGxhdGNoZWQgdmFsdWVzIHdpdGggcG9ydHMgMHg0MC0weDQzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCURvbid0IGNyYXNoIHdoZW4gY2FsbGluZyBEaXJlY3REcmF3U3VyZmFjZTo6RW51bUF0dGFjaGVkU3VyZmFjZXMgb24gYQoJc3VyZmFjZSB3aXRoIG5vIGF0dGFjaGVkIHN1cmZhY2VzLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglBbGxvdyBGb3JtYXRNZXNzYWdlIHRvIGxvYWQgVW5pY29kZSBzdHJpbmcgcmVzb3VyY2VzLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5udC5oLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgQVBDIHN1cHBvcnQgaW4gd2FpdGFibGUgdGltZXJzLgoKCSogZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYzoKCVJlbW92ZWQgdW5uZWNlc3NhcnkgY2FsbHMgdG8gQ0xJUFBJTkdfVXBkYXRlR0NSZWdpb24uIEZpeGVkIFBhdEJsdCB0bwoJdXNlIERDX0dldERDVXBkYXRlLgoKMjAwMC0wOC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAwMDgyMS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wOC0yMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJLSBkb24ndCByZXR1cm4gRkFMU0UgZm9yIHN5c3RlbSBwcm9jZXNzIGNoYW5nZXMKCS0gU0hVVERPV05fTk9SRVRSWSBpcyAxIGFuZCBoYXMgdG8gYmUgaW4gd2luYmFzZS5oCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQmVnaW5uaW5nIG9mIHNvbWUgc2ltcGxlIG9wdGltaXphdGlvbiBvZiB0aGUgbGlzdHZpZXcKCWRyYXdpbmcuIFNwZWNpZmljYWxseSBpdCByZWR1Y2VzIGZsaWNrZXIgd2hlbiBzZWxlY3Rpb24gY2hhbmdlcy4KCgkqIGxvYWRlci90YXNrLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCVRyYW5zZm9ybSBldmVyeSBFUlIoKSB0byBXQVJOKCkgaW4gTWFrZVByb2NJbnN0YW5jZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDYWxsIFdyaXRlT3V0UHJvZmlsZXMxNiB0byBtYWtlIHN1cmUgdGhhdCBsYXN0IHByb2ZpbGUgZ2V0cyB3cml0dGVuLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgaW5jbHVkZS9kaWFsb2cuaCwgd2luZG93cy9kaWFsb2cuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRGlzYWJsZSB0aGUgb3duZXIgb2YgYSBtb2RhbCBkaWFsb2cgYm94IGp1c3QgYmVmb3JlIGNyZWF0aW5nIHRoZQoJZGlhbG9nIHdpbmRvdy4KCgkqIGZpbGVzL2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJKGZyb20gSUJNIFRvcFBhZ2UgcGF0Y2gpIHJldHVybiBjb3JyZWN0IGVycm9yIGZvciBhbHJlYWR5IGV4aXN0aW5nCglmaWxlLgoKCSogd2luZG93cy93aW5wcm9jLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUhhbmRsZSB0aGUgTEJfR0VUVEVYVCBhbmQgQ0JfR0VUTEJURVhUIGNhc2VzIGZvciAzMlcgdG8gMTYgbWFwcGluZy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUVuYWJsZXMgc2hvd2luZyBvZiBoaWRkZW4gd2luZG93cyB3aGVuIHRoZSBhcHAgYXNrICpvbmx5KiB0byBtYXhpbWl6ZSBpdC4KCjIwMDAtMDgtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy90ZXh0LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJSGFuZGxlIHRoZSBjb2RlcGFnZSBvZiBmb250cyBpZiBzdXBwb3J0ZWQgYnkgdGhlIGdyYXBoaWNzIGRyaXZlci4KCgkqIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFmb250Lmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgaW50ZXJuYWwgY2hhcnNldHMgZm9yIHN1cHBvcnRpbmcgREJDUyBjaGFyc2V0cy4KCgkqIG9iamVjdHMvZGMuYzoKCUZpeGVkIEdESSBsb2NraW5nIGluIEdldERldmljZUNhcHMuCgoJKiBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJS2FpIE1vcmljaCA8bWFpbEBrYWktbW9yaWNoLmRlPgoJRml4ZWQgYnVnIGluIHJlcGVhdGVkbHkgaWNvbmlzYXRpb24sIGNvZGUgY2xlYW51cC4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNldCBYMTFEUlZfRGV2aWNlQ2Fwcy5udW1Db2xvcnMgYWNjb3JkaW5nIHRvIGRvYyAoZml4ZXMgQ3ViYXNlIFZTVDI0CglzdGFydHVwIHByb2JsZW0pLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBEdXBsaWNhdGVJY29uKCkuCgoJKiBtc2Rvcy9pbnQxNS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVN0dWJiZWQgSU5UIDE1IGZ1bmN0aW9uIDg0aC4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglMb3VpcyBQaGlsaXBwZSBHYWdub24gPGxvdWlzcGhpbGlwcGVAbWFjYWRhbWlhbi5jb20+CgktIFNlcGFyYXRlIGFwcGxpY2F0aW9uIGNhbGxzIHRvIFNob3dPd25lZFBvcHVwcyBmcm9tIFdpbmUgY2FsbHMgKGluCgkgIEVWRU5UX01hcE5vdGlmeSkgYnkgaW50cm9kdWNpbmcgYW4gaW50ZXJuYWwgZnVuY3Rpb24uCgktIEZpeCBTaG93T3duZWRQb3B1cHMgc28gaXQgc2VuZHMgbWVzc2FnZXMgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzIGFzCgkgIGluIFdpbmRvd3MuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVJlbW92ZWQgZGlyZWN0IGNhbGxzIHRvIFRSRUVWSUVXX1JlZnJlc2goKS4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIHBsYXliYWNrIG9mIEVNUl9QT0xZQkVaSUVSe1RPfTE2LCBFTVJfUE9MWUxJTkUxNiBhbmQKCUVNUl9QT0xZUE9MWUxJTkUuCgoJKiBpbmNsdWRlL21haW4uaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZGVkIG5ldyBsYW5ndWFnZSBkZXRlY3Rpb24gc2NoZW1lIHRoYXQgdXNlcyBOTFMgZGF0YSBiYXNlIGluc3RlYWQgb2YKCWhhcmQgY29kZWQgdmFsdWVzLgoKCSogbG9hZGVyL3BlX3Jlc291cmNlLmM6CglEdXNhbiBMYWNrbyA8ZGxhY2tvQGNvZGV3ZWF2ZXJzLmNvbT4KCVBhc3MgdGhlIHR5cGUvbmFtZSBhcyBhIEMgc3RyaW5nIGluc3RlYWQgb2YgYW4KCUlNQUdFX1JFU09VUkNFX0RJUl9TVFJJTkdfVSBzdHJ1Y3R1cmUgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLgoKMjAwMC0wOC0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZ2xvYmFsLmgsIGluY2x1ZGUvcGF0aC5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS94MTFkcnYuaCwgbWVtb3J5L2xvY2FsLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9wZW4uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvZ2RpL3ByaW50ZHJ2LmMsIGRsbHMvZ2RpL3dpbmcuYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy90dHlkcnYvYml0bWFwLmMsIGRsbHMvdHR5ZHJ2L2RjLmMsIGRsbHMvdHR5ZHJ2L29iamVjdHMuYywgZGxscy90dHlkcnYvd25kLmMsIGRsbHMvd2luZXBzL2JydXNoLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvb2JqZWN0cy5jLCBkbGxzL3dpbmVwcy9wc2Rydi5oLCBncmFwaGljcy9iaXRibHQuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tYXBwaW5nLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvb2JqZWN0cy5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9kYy5oLCBpbmNsdWRlL2dkaS5oOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IChmb3IgQ29yZWwpCglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY29tPgoJQWRkZWQgc3lzbGV2ZWwgbG9ja2luZyBmb3IgR0RJIG9wZXJhdGlvbnMuCglQcm9wYWdhdGUgdGhlIGNoYW5nZXMgdGhyb3VnaCB0aGUgZ3JhcGhpY3MgY29kZS4KCgkqIG1pc2MvY2Ryb20uYzoKCUVkIFNub3cgPGVkX3Nub3dAdHRtZW5naW5lZXJpbmcuY29tPgoJQ29ycmVjdGVkIHNlcmlhbCBudW1iZXIgZ2VuZXJhdGlvbiBmb3IgQ0QncyB3aXRoIDEgb3IgMiB0cmFja3MuCgoyMDAwLTA4LTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jZHJvbS5jLCBmaWxlcy9kb3NfZnMuYzoKCVN0ZWZhbiBMZWljaHRlciA8U3RlZmFuLkxlaWNodGVyQGNhbWxpbmUuY29tPgoJRml4ZWQgcmV0dXJuIHZhbHVlIG9mIENEUk9NX0dldExhYmVsIGlmIENEUk9NX09wZW4gZmFpbGVkIChlLmcuIG5vCglEZXZpY2UgZW50cnkgZm9yIGRyaXZlIGluIHdpbmUuY29uZikuCgoJKiBpbmNsdWRlL3gxMWZvbnQuaCwgZ3JhcGhpY3MveDExZHJ2L2NvZGVwYWdlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVNlcGFyYXRlIEdldFRleHRNZXRyaWNzIGFuZCBpbXBsZW1lbnQgaXQgZm9yIFNCQ1MvVW5pY29kZS9jcDkzMi4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJRml4ZWQgU1RBVFVTX0dldFRleHRXIGluIHJlZ2FyZCB0byBOVUxMIHBvaW50ZXJzLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFwcGVuZCAuRFJWIHRvIG5hbWUgb25seSBpZiBubyBleHRlbnNpb24gcHJlc2VudC4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvIG5vdCBjcmFzaCBpZiBwYXRoIGlzIE5VTEwgaW4gREVCVUdfUHJvY2Vzc0VsZkZpbGVGcm9tUGF0aC4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOgoJRWQgU25vdyA8ZWRfc25vd0B0dG1lbmdpbmVlcmluZy5jb20+CglDbGVhbiBvdXQgdGhlIGhhY2sgb24gQkFTUy9UUkVCTEUgYW5kIHN1cHByZXNzIHRoZW0gaW4gdGhlIG1hc2sgYXMgd2FzCglyZWNvbW1lbmRlZCBvaCBzbyBsb25nIGFnby4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CgktIEFkZGVkIGEgaGVscGVyIGZ1bmN0aW9uIFRPT0xCQVJfR2V0VGV4dCgpIGFuZCBtYWNybyBUT09MQkFSX0hhc1RleHQoKSB0bwoJICBkZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkIHRvIGNhbGwgSW52YWxpZGF0ZVJlY3QoKSB3aXRoIGJFcmFzZSBvZiBUUlVFIG9yCgkgIEZBTFNFLiAgUmVkdWNlcyBiYWNrZ3JvdW5kIGVyYXNlcyBpbiBub24tdGV4dCB0b29sYmFycyBieSA4MC04NSUuCgktIEZpeGVkIGJ1dHRvbiBzdGF0ZSBub3QgYmVpbmcgdXBkYXRlZCBwcm9wZXJseSB3aGVuIExCVVRUT05ET1dOIGFuZCBjdXJzb3IKCSAgbGVhdmVzIHRoZSB0b29sYmFyLgoJLSBSZW1vdmVkIEZJWE1FKCkgaW4gVE9PTEJBUl9EcmF3U3RyaW5nIGZvciBidG5QdHItPmlTdHJpbmcgPT0gLTEsIHJlcGxhY2VkCgkgIHdpdGggYSBzb3VyY2UgY29kZSBjb21tZW50LgoJLSBSZW1vdmVkIHVuZWNlc3NhcnkgY2FsbCB0byBUT09MQkFSX0NhbGNUb29sYmFyKCkgaW4KCSAgVE9PTEJBUl9HZXRJdGVtUmVjdCgpLiAgT3B0aW1pemVkIFRPT0xCQVJfQ2FsY1N0cmluZ3MoKS4gRml4ZXMgdmVyeQoJICBzbG93IHJlc3BvbmRpbmcgdG9vbGJhcnMgaW4gVWx0cmFlZGl0IGR1ZSB0byBwcm9jZXNzaW5nIFRCX0dFVElURU1SRUNUCgkgIG1lc3NhZ2VzLgoJLSBPcHRpbWl6ZWQgVE9PTEJBUl9TZXRJbnRlbnQoKSwgU2V0Um93cygpIGFuZCBTZXRTdHlsZSgpLgoKCSogc2NoZWR1bGVyL3N5bmNocm8uYzoKCU1pa2UgTWNDb3JtYWNrICA8bWlrZV9tY2Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdT4KCVNhdmUgR0VUX0FQQ1MgZGF0YSBiZWZvcmUgY2FsbGluZyBhbnkgYXN5bmNocm9ub3VzIHByb2NlZHVyZSBjYWxscywgaW4KCWNhc2UgdGhlIHNlcnZlciBpcyBjYWxsZWQgZHVyaW5nIHRoZSBBUEMuCgoJKiBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBpbmNsdWRlL2RpYWxvZy5oLCB3aW5kb3dzL2RpYWxvZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglUdXJucyB0aGUgaGFuZGxpbmcgdG8gcHVyZSAxNiBiaXRzLCByZW1vdmUgcmVmZXJlbmNlcyB0byBkaWFsb2cuaC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOgoJQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNvbT4KCVJlbW92ZSB1bnVzZWQgY3JpdGljYWwgc2VjdGlvbiBnbG9iYWwgdmFyaWFibGUgUFJJTlQzMl9SZWdpc3RyeUJsb2NrZXIuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBdm9pZHMgY2hhbmdpbmcgMiBsZXZlbHMgd2hlbiBjbGlja2luZyAuLiBpbiB0aGUgZGlyZWN0b3J5IGxpc3QuCgoJKiBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCB3aW4zMi9jb25zb2xlLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVN0dWJiZWQgU2V0Q29uc29sZUlucHV0RXhlTmFtZUEvVy4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVdNX0dFVEZPTlQgc2hvdWxkIHJldHVybiBhIHJlYWwgZm9udCBoYW5kbGUgaW5zdGVhZCBvZiBOVUxMLgoKMjAwMC0wOC0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJTmljbGFzIEthcmxzc29uIE1BVEUgPG5rYXJsc3NvQHJhLmFiby5maT4KCVdBVENPTSBjb21waWxlZCBwcm9ncmFtcyBsZWF2ZSBWaXJ0dWFsU2l6ZSB0byB6ZXJvIHdoaWNoIHRyaWdnZXJzIHRoZQoJdmlydXMgY2hlY2suIFVzZSBTaXplT2ZSYXdEYXRhIGluc3RlYWQuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCU5pY2xhcyBLYXJsc3NvbiBNQVRFIDxua2FybHNzb0ByYS5hYm8uZmk+CglJbXBsZW1lbnRlZCBBQ1NfQ0VOVEVSIGZvciBhbmltYXRpb24gY29udHJvbHMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCUF2b2lkIGdvaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgcmVsb2NhdGlvbiBzZWN0aW9uLiBTa2lwIHNhbml0eSBjaGVja3MKCWZvciBlbXB0eSByZWxvY2F0aW9uIGJsb2Nrcy4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOgoJRnJhbmNvaXMgTWV0aG90IDxmcmFuY29pc21AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBiYWNrZ3JvdW5kIHRyYW5zcGFyZW5jeSBvbiBhbmltYXRpb24gY29udHJvbCBmb3IgYXZpCgljb21wb3NlZCBvZiA4IGJwcChvciBsZXNzKSBpbWFnZS4gSSBhZGRlZCBzdXBwb3J0IGZvciA4IGJwcCBvciBtb3JlLAoJYnV0IGl0IGhhcyBub3QgYmVlbiB0ZXN0ZWQuCgoJKiBkbGxzL29sZTMyL29sZTIuYzoKCUxvdWlzIFBoaWxpcHBlIEdhZ25vbiA8bG91aXNwaGlsaXBwZUBtYWNhZGFtaWFuLmNvbT4KCVdoaWxlIGRyYWdnaW5nLCBjYXRjaCBrZXlib2FyZCBtZXNzYWdlcyBiZXR3ZWVuIFdNX0tFWUZJUlNUIGFuZAoJV01fS0VZTEFTVCwgbm90IGp1c3QgV01fS0VZRklSU1QuCgoJKiBkbGxzL2tlcm5lbC93b3d0aHVuay5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJSWYgYSBtb2R1bGUgY2Fubm90IGJlIGZvdW5kIGluIExvYWRMaWJyYXJ5RXgzMlcxNiwgY2FsbCBMb2FkTGlicmFyeUV4Cglhbnl3YXksIHNpbmNlIGl0IG1pZ2h0IGJlIGEgYnVpbHRpbiBtb2R1bGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NlZCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGV2ZXJ5IGFyZ3VtZW50IGluIENvbW1hbmRMaW5lVG9Bcmd2LgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFkZCBhbiBlcnJvciBtZXNzYWdlIGlmIGRldm1vZGUgc3RydWN0dXJlIGluIHJlZ2lzdHJ5IGlzIGludmFsaWQ7CglhdHRlbXB0IHRvIHByb3ZpZGUgcGxhdXNpYmxlIHZhbHVlcy4KCjIwMDAtMDgtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvY29kZXBhZ2UuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3gxMWZvbnQuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4ZWQgZm9yIERCQ1MoY3A5MzIvY3A5NDkpIGNvZGVwYWdlIGNvbnZlcnNpb24uCglJbXBsZW1lbnRlZCBjcDkzMiBoYW5kbGluZyBwYXJ0bHkoYnV0IHN0aWxsIGluY29tcGxldGUpLgoJQWRkZWQgc3VwcG9ydGluZyBtdWx0aXBsZSBmb250cyBmb3IgREJDUyBoYW5kbGluZy4KCgkqIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL3N0YWJzLmMsIGRvY3VtZW50YXRpb24vZGVidWdnZXIuc2dtbDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRW5oYW5jZWQgRUxGIGZpbGVzIGxvb2t1cCBmb3Igc3ltYm9saWMgaW5mby4KCgkqIGRlYnVnZ2VyL2JyZWFrLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJlZ3Jlc3Npb24gaW4gYnJlYWsgY29tbWFuZC4KCjIwMDAtMDgtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXggcmV0dXJuIHZhbHVlIHRvIDE2IGJpdHMgZm9yIDE2IGJpdCBob29rOyByZW1vdmUgbGVhZGluZyBzcGFjZSBmb3IKCWZpbGUgc3BlY2lmaWNhdGlvbi4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJVGhyZWFkcyB3aXRob3V0IGFjdGl2ZSBvciBmb2N1cyB3aW5kb3cgc2hvdWxkIG5vdCByZWNlaXZlIGtleWJvYXJkCgltZXNzYWdlcy4KCgkqIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWVtb3J5L3ZpcnR1YWwuYzoKCUltcGxlbWVudGVkIFNFQ19JTUFHRSBtYXBwaW5ncyBhbmQgc2hhcmVkIFBFIHNlY3Rpb25zICh3aXRoIHRoZSBoZWxwCglvZiBQZXRlciBHYW50ZW4pLgoKCSogaW5jbHVkZS9udGRkay5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1pc2MvbHN0ci5jLCBtaXNjL21haW4uYywgbXNkb3MvaW50MjEuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL3VzZXIvbHN0ci5jLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9wcm9maWxlLmM6CglNb3ZlZCBDaGFyVXBwZXIqIGFuZCBDaGFyTG93ZXIqIGZ1bmN0aW9ucyB0byBkbGxzL3VzZXIuCgoJKiBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9jb2RlcGFnZS5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFmb250Lmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lhbCB0cmVhdG1lbnRzICh1c2UgMiBvciBtb3JlIGZvbnRzLCBjb2RlcGFnZQoJY29udmVyc2lvbiwgZXRjLi4uKSBmb3IgREJDUyB0ZXh0LgoKCSogd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZWRlZmF1bHQucmVnOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGQgIkZ1bGxXaW5kb3dEcmFnIiBmZWF0dXJlIGZvciBub3QgbWFuYWdlZCB3aW5kb3dzLgoKCSogY29udHJvbHMvY29tYm8uYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglVcGRhdGUgdGhlIGVkaXQgYm94IGJlZm9yZSByb2xsaW5nIHVwIHRoZSBsaXN0Ym94LCBzbyB0aGUKCXNlbGVjdGlvbiBpc24ndCBsb3N0LgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyByZWZlcmVuY2VkIGRsbHMgZm9yIGxpYnRlc3QuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglOaWNsYXMgS2FybHNzb24gTUFURSA8bmthcmxzc29AcmEuYWJvLmZpPgoJTFBTVFJfVEVYVENBTExCQUNLIHdvdWxkbid0IHdvcmsgaWYgdGhlIGFwcGxpY2F0aW9uIHN1cHBsaWVkIHRoZSBpdGVtCgl0ZXh0IGluIGl0cyBvd24gYnVmZmVyLgoKCSogd2luMzIvTWFrZWZpbGUuaW4sIHdpbjMyL2Vycm9yLmMsIHdpbjMyL2ZpbGUuYywgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIGRsbHMvaW1tMzIvTWFrZWZpbGUuaW4sIGRsbHMvaW1tMzIvaW1tMzIuc3BlYywgZGxscy9rZXJuZWwvd293dGh1bmsuYywgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sIGRsbHMvb3BlbmdsMzIvb3BlbmdsMzIuc3BlYywgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9zZXR1cGFwaS5zcGVjLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmM6CglDbGVhbmVkIHVwIGEgZmV3IGludGVyLWRsbCBkZXBlbmRlbmNpZXMuIEFkZGVkIGEgZmV3IGltcG9ydHMuCgoJKiBvbGUvb2xlMm5scy5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3NweS5jLCBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgbG9hZGVyL25lL2NvbnZlcnQuYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L3JlZ2lzdHJ5LmMsIG9iamVjdHMvcGFsZXR0ZS5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9udGRsbC93Y3N0cmluZy5jLCBkbGxzL29sZTMyL2FudGltb25pa2VyLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9kZWZhdWx0aGFuZGxlci5jLCBkbGxzL29sZTMyL2ZpbGVtb25pa2VyLmMsIGRsbHMvb2xlMzIvaXRlbW1vbmlrZXIuYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlYXV0MzIvb2xlZm9udC5jLCBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYywgZGxscy9zaGx3YXBpL29yZGluYWwuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCVJlcGxhY2VkIGFsbCBsc3RyKiBjYWxscyBmcm9tIGluc2lkZSBXaW5lIGNvZGUgYnkgdGhlaXIgc3RyKiBlcXVpdmFsZW50LgoKCSogbXNkb3MvZHBtaS5jOgoJUmVwbGFjZWQgZ2xvYmFsIENhbGxiYWNrcyBzdHJ1Y3R1cmUgYnkgYXBwcm9wcmlhdGUgZ2x1ZSBjb2RlCglnZW5lcmF0aW9uLiBSZW1vdmVkIGEgZmV3IHVudXNlZCBlbnRyaWVzIGluIHRoZSBDYWxsb3V0IHN0cnVjdHVyZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGluY2x1ZGUvd2ludmVyc2lvbi5oLCBtaXNjL3ZlcnNpb24uYywgd2luMzIvZGV2aWNlLmMsIHdpbmRvd3Mvd2luaGVscC5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvbXNhY20vbXNhY20zMl9tYWluLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYzoKCVJlcGxhY2VkIFZFUlNJT05fKiBjYWxscyBieSBleHBvcnRlZCBBUEkgZXF1aXZhbGVudHMuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIGxvYWRlci9uZS8uY3ZzaWdub3JlLCBsb2FkZXIvbmUvTWFrZWZpbGUuaW4sIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1lbW9yeS8uY3ZzaWdub3JlLCBtZW1vcnkvTWFrZWZpbGUuaW4sIG1lbW9yeS9sb2NhbC5jLCBtaXNjL2NvbW0uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMxNi5jLCBjb250cm9scy8uY3ZzaWdub3JlLCBjb250cm9scy9NYWtlZmlsZS5pbiwgY29udHJvbHMvZWRpdC5jLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvdGh1bmsuYywgZGxscy9rZXJuZWwvdXR0aHVuay5jLCBkbGxzL3dpbmFzcGkvLmN2c2lnbm9yZSwgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9idWlsdGluMTYuaDoKCVJlcGxhY2VkIGdsb2JhbCBDYWxsYmFja3Mgc3RydWN0dXJlIGJ5IGFwcHJvcHJpYXRlIGdsdWUgY29kZQoJZ2VuZXJhdGlvbi4gUmVtb3ZlZCBhIGZldyB1bnVzZWQgZW50cmllcyBpbiB0aGUgQ2FsbG91dCBzdHJ1Y3R1cmUuCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFkZGVkIGxvYWQgYWRkcmVzcyBmb3IgdGhlIHNoYXJlZCBtZW1vcnkgb2YgQkRFIChCb3JsYW5kIGRhdGFiYXNlCgltYW5hZ2VyKS4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBmb3Igc3RhcnRpbmcgc2VydmVyIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgY2hlY2tpbmcgZm9yIGJyb2tlbiBmb250IGNhY2hlLgoJQWRkZWQgc3VwcG9ydGluZyBmb3IgaXNvMTA2NDYgZW5jb2RpbmcuCgoyMDAwLTA4LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvcmVxdWVzdC5jOgoJTWFkZSBzZXJ2ZXIgc3RhcnR1cCBtb3JlIHJvYnVzdCBhZ2FpbnN0IHJhY2VzIGNhdXNlZCBieSBhIHByZXZpb3VzCglzZXJ2ZXIgdGVybWluYXRpbmcgYXQgdGhlIHNhbWUgdGltZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCB0b29scy9jMm1hbi5wbDoKCU1pa2VfTWNDb3JtYWNrQGxvb2tzbWFydC5jb20uYXUKCUNyZWF0ZWQgZGVmYXVsdCBjMm1hbiBjb21wYXRpYmxlIHBlcmwgc2NyaXB0IGZvciBnZW5lcmF0aW5nCglkb2N1bWVudGF0aW9uLCBpbiBjYXNlIGMybWFuIGlzbid0IGluc3RhbGxlZC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBzZW5kaW5nIG9mIExWTl9JVEVNQ0hBTkdJTkcgYW5kIExWTl9JVEVNQ0hBTkdFRCBtZXNzYWdlcywKCWNsZWFuZWQgdXAgc29tZSBvZiB0aGUgZHJhd2luZywgaW1wbGVtZW50ZWQgdGhlIGlJbmRlbnQgZm9yIExWU19SRVBPUlQKCWFuZCBmaXhlZCBhIHByb2JsZW0gd2hlcmUgc3ViIGl0ZW1zIHdoZXJlIG5vdCBiZWluZyBwcm9wZXJseQoJYXNzb2NpYXRlZCB3aXRoIHRoZWlyIGl0ZW0gZm9yIHZpcnR1YWwgbGlzdCB2aWV3cy4KCgkqIG1lbW9yeS9jb2RlcGFnZS5jLCBtaXNjL2xzdHIuYywgb2xlL29sZTJubHMuYywgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS93Y3R5cGUuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIGRsbHMvbnRkbGwvd2NzdHJpbmcuYywgZGxscy91c2VyL2xzdHIuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS91bmljb2RlLmg6CglBZGRlZCBVbmljb2RlIGN0eXBlIHN1cHBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglNb3ZlZCBOTV9VUERPV04gZGVmaW5pdGlvbiB0byBjb21tY3RybC5oLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJVGhlIHVzZXIgZHJpdmVyIGZ1bmN0aW9ucyBtaWdodCBiZSBjYWxsZWQgd2l0aCB0aGUgd2luZG93IGxvY2sgaGVsZC4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBsb2FkZXIvcmVzb3VyY2UuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTWFrZSBGaW5kUmVzb3VyY2UgYW5kIEZpbmRSZXNvdXJjZUV4IGZ1bGx5IHdpbmRvd3MgY29tcGF0aWJsZS4KCgkqIGluY2x1ZGUvdGNoYXIuaDoKCURhbXlhbiBPZ255YW5vZmYgPERhbXlhbkByb2NrZXRtYWlsLmNvbT4KCVJlbW92ZSBzb21lIG9ic29sZXRlICNkZWZpbmUncyAtIHN0cmx3ciBhbmQgc3RydXByIGFyZSBpbiBOVERMTCBub3cuCgoJKiBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBtZW1vcnkvY29kZXBhZ2UuYywgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS91dGY4LmM6CglBZGRlZCBVVEYtOCBjb252ZXJzaW9uIHN1cHBvcnQuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW5zdGVhZCBvZiBub3QgZG9pbmcgdGhlIFogb3JkZXJpbmcgd2hlbiB0aGUgYXBwbGljYXRpb24gYXNrcyB0byBwbGFjZQoJdGhlIHdpbmRvdyB1bmRlciBhIHplcm8tc2l6ZWQgd2luZG93LCBub3cgdGhlIHdpbmRvdyBhYm92ZSB0aGUKCXplcm8tc2l6ZWQgd2luZG93LCBpcyB1c2VkIHRvIGRvIHRoZSBaIG9yZGVyaW5nLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglJbml0aWFsaXplIGxwc3RySW5pdGlhbERpciB0byByZWFsbHkgYm9ndXMgdmFsdWUgdG8gcmVzdG9yZSBvcmlnaW5hbAoJdmFsdWUgbGF0ZXIuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBhIGZldyBtb3JlIGFub255bW91cyB1bmlvbiBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvZ3VpZGRlZi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglGaXhlZCBDKysgb3BlcmF0b3JzIHJldHVybiB2YWx1ZS4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIGZvcGVuKCkgYXBwZW5kIG1vZGUsIGFuZCBhIHJlYWxseSBjaGVlc3kgZnNjYW5mKCkKCWltcGxlbWVudGF0aW9uLi4uCgoJKiBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCTEuIE1ha2UgYnVmZmVyIGZvciBtZXNzYWdlIGxhcmdlIGVub3VnaCB0byBob2xkIHZlcnkgbG9uZyBmaWxlIG5hbWVzLgoJMi4gUGFzcyBGT1JNQVRfTUVTU0FHRV9BUkdVTUVOVF9BUlJBWSBmb3IgRm9ybWF0TWVzc2FnZUEgdG8gbm90IGFzc3VtZQoJICAgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgYmVoYXZpb3VyLgoJMy4gU2hvdyBhY3R1YWwgbWVzc2FnZSB0byB1c2VyLCBub3Qgbm9uLWZvcm1hdHRlZCBvbmUuCgoyMDAwLTA4LTEwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIG1pc2MvbWFpbi5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGNvbnRyb2xzL2Rlc2t0b3AuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvdHR5ZHJ2L2JpdG1hcC5jLCBkbGxzL3R0eWRydi9kYy5jLCBkbGxzL3R0eWRydi9ncmFwaGljcy5jLCBkbGxzL3R0eWRydi9vYmplY3RzLmMsIGRsbHMvdHR5ZHJ2L3BhbGV0dGUuYywgZGxscy90dHlkcnYvdHR5ZHJ2LmgsIGRsbHMvdHR5ZHJ2L3R0eWRydi5zcGVjLCBkbGxzL3R0eWRydi90dHlkcnZfbWFpbi5jLCBkbGxzL3R0eWRydi91c2VyLmMsIGRsbHMvdHR5ZHJ2L3duZC5jLCBkbGxzL3VzZXIvZGlzcGxheS5jLCBkbGxzL3VzZXIvbW91c2UuYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnYuc3BlYzoKCU1lcmdlZCBjbGlwYm9hcmQgZHJpdmVyIGludG8gVVNFUiBkcml2ZXIuCglNb3ZlZCBhbGwgdHR5ZHJ2IHNvdXJjZSBmaWxlcyB0byBkbGxzL3R0eWRydi4KCUxvYWQgZnVuY3Rpb25zIHBvaW50ZXIgZm9yIHRoZSBVU0VSIGRyaXZlciBmcm9tIHRoZSBncmFwaGljcyBkcml2ZXIKCWRsbCB3aXRoIEdldFByb2NBZGRyZXNzLgoKMjAwMC0wOC0wOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvYml0bWFwLmMsIHByb2dyYW1zL25vdGVwYWQvc2VhcmNoLmMsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHdpbmRvd3MvY2FyZXQuYywgd2luZG93cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgaW5jbHVkZS9tc2FjbWRydi5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBtaXNjL2NvbW0uYywgbWlzYy9tYWluLmMsIG1zZG9zL2ludDA5LmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9tc2FjbS9tc2FjbWRydi5oLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL3dpZGdldHMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L21haW4uYzoKCVJlbW92ZWQgc29tZSB1bm5lY2Vzc2FyeSAjaW5jbHVkZXMgYW5kIGRsbCBkZXBlbmRlbmNpZXMuCgoJKiBtZW1vcnkvZW52aXJvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL2luaXQuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jOgoJTWFrZSBQREIsIEVOVkRCIGFuZCBTVEFSVFVQSU5GTyBnbG9iYWwgdmFyaWFibGVzLgoJQWRkZWQgJ21vZHVsZScgZmllbGQgaW4gUERCLCBhbmQgcmVtb3ZlZCBXaW5lLXNwZWNpZmljIGZpZWxkcy4KCgkqIG1pc2MvdmVyc2lvbi5jLCBzY2hlZHVsZXIvc2VydmljZXMuYzoKCVJlbW92ZWQgd2ludmVyIGFuZCBzZXJ2aWNlX3RhYmxlIGZyb20gdGhlIFBEQiBhbmQgbWFkZSB0aGVtIHN0YXRpYwoJdmFyaWFibGVzLgoKCSogaW5jbHVkZS9maWxlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgZmlsZXMvZmlsZS5jOgoJUmVtb3ZlZCB0aGUgRE9TIGhhbmRsZXMgdGFibGUgZnJvbSB0aGUgUERCIGFuZCBtYWRlIGl0IGEgc3RhdGljCgl2YXJpYWJsZS4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIGlmMTYzMi9idWlsdGluLmMsIGluY2x1ZGUvZ2xvYmFsLmgsIG1lbW9yeS9nbG9iYWwuYywgbXNkb3MvZG9zbWVtLmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKCVJlbW92ZWQgb2Jzb2xldGUgU0hNREFUQSBwYXJhbWV0ZXIgaW4gR0xPQkFMX0NyZWF0ZUJsb2NrLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIEF2b2lkIG51bGwtcG9pbnRlciBleGNlcHRpb25zIGJ5IHRlc3RpbmcgbGlzdG5vZGVzIHZhbGlkaXR5IGJlZm9yZSBkb2luZwoJICBhbnkgd29yayB3aXRoIHRob3NlLgoJLSBUTEJfUmVhZFR5cGVMaWIgbm93IHJldHJpZXZlcyB0aGUgbGVuZ3RoIG9mIHRoZSBUTEIgYW5kIHBhc3NlcyBpdCB0bwoJICB0aGUgVExCIGNvbnN0cnVjdG9yIHdoaWNoIGluaXRpYWxpemVzIFRMQkNvbnRleHQ6Omxlbmd0aCB0byB0aGF0CgkgIHZhbHVlLgoJLSBGb3Igbm9uLXN0YW5kYXJkIHBvaW50ZWQgdHlwZXMsIHRkWzNdIGlzIGFsd2F5cyAwLiBJIG9ic2VydmVkIHRoYXQKCSAgdGhlIHR5cGUgaXMgc3RvcmVkIGF0IHRkWzJdLzggYW5kIG5vdCB0ZFszXS84LgoJLSBOdWxsLXBvaW50ZXIgZXhjZXB0aW9uIG9jY3VycyB3aGVuIEdldFJlZlR5cGVPZkltcGxUeXBlIGlzIGNhbGxlZCBvbiBhCgkgIHR5cGUgd2l0aCBubyBpbmhlcml0ZWQgaW50ZXJmYWNlcy4gSWYgdGhlIGltcGxlbWVudGVkIHR5cGVzIGxpbmtlZCBsaXN0CgkgIGlzIGVtcHR5LCBzZXQgcFJlZlR5cGUgYXMgMCBhbmQgcmV0dXJuIFNfT0suCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdHlwbyBpbiB0aGUgSURpc3BhdGNoX0dldFR5cGVJbmZvIG1hY3JvLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJRml4IHNvbWUgcmVtYWluaW5nIHByb2JsZW1zIHdpdGggdG9vbHRpcHMuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgT3BlbkdMIGNvbmZpZ3VyZTogbW92ZSBIQVZFX09QRU5HTCBkZWZpbmUgdG8gd2hlcmUgaXQgYmVsb25ncywKCWZpeGVkIGdsZXh0LmggcHJlc2VuY2UgaW4gY29uZmlndXJlIGNoZWNrIGZvciBQRk5HTENPTE9SVEFCTEVFWFRQUk9DLgoKCSogaW5jbHVkZS9hdXRob3JzLmgsIGluY2x1ZGUvY3J0ZGxsLmgsIGluY2x1ZGUvZGV2aWNlLmgsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvdzMyc3lzLmgsIHRvb2xzL21ha2VfYXV0aG9ycywgd2luMzIvZmlsZS5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9zaGVsbDMyL2F1dGhvcnMuaCwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy93aW4zMnMvdzMyc3lzLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvbWV0YWZpbGVkcnYuaCwgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL2NydGRsbC9jcnRkbGwuaCwgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglNb3ZlZCBhIGZldyBub24tc3RhbmRhcmQgaGVhZGVycyBpbnRvIHRoZWlyIHJlc3BlY3RpdmUgZGxscy4KCgkqIGluY2x1ZGUvTWFrZWZpbGUuaW46CglJbnN0YWxsIGFsbCBzdGFuZGFyZCBXaW5kb3dzIGluY2x1ZGVzLCBwbHVzIHNvbWUgZnJvbSB0aGUgd2luZSBzdWJkaXIuCgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmgsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvYW5pbWF0ZS5oLCBpbmNsdWRlL2NvbWJvZXguaCwgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RhdGV0aW1lLmgsIGluY2x1ZGUvZmxhdHNiLmgsIGluY2x1ZGUvaGVhZGVyLmgsIGluY2x1ZGUvaG90a2V5LmgsIGluY2x1ZGUvaW1hZ2VsaXN0LmgsIGluY2x1ZGUvaXBhZGRyZXNzLmgsIGluY2x1ZGUvbGlzdHZpZXcuaCwgaW5jbHVkZS9tb250aGNhbC5oLCBpbmNsdWRlL25hdGl2ZWZvbnQuaCwgaW5jbHVkZS9wYWdlci5oLCBpbmNsdWRlL3Byb2dyZXNzLmgsIGluY2x1ZGUvcmViYXIuaCwgaW5jbHVkZS9zdGF0dXMuaCwgaW5jbHVkZS90YWIuaCwgaW5jbHVkZS90b29sYmFyLmgsIGluY2x1ZGUvdG9vbHRpcHMuaCwgaW5jbHVkZS90cmFja2Jhci5oLCBpbmNsdWRlL3RyZWV2aWV3LmgsIGluY2x1ZGUvdXBkb3duLmgsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJUmVtb3ZlZCBhbGwgbm9uLXN0YW5kYXJkIGNvbW1vbiBjb250cm9sIGhlYWRlcnMgZnJvbSB0aGUgaW5jbHVkZQoJZGlyZWN0b3J5LgoKCSogd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9zdHJ1Y3QzMi5jLCB3aW5kb3dzL3N0cnVjdDMyLmgsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBpbmNsdWRlL3N0cnVjdDMyLmgsIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi9zdHJ1Y3QzMi5jOgoJTW92ZWQgc3RydWN0MzIuYyB0byB3aW5kb3dzIGRpcmVjdG9yeS4KCjIwMDAtMDgtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJTWFrZSBzdXJlIGJ1aWx0aW4gZGxscyBhcmUgbmV2ZXIgZnJlZWQgc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBkbGNsb3NlCglwcm9wZXJseSB5ZXQuCgoJKiBkbGxzL3BzYXBpL01ha2VmaWxlLmluLCBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvcmljaGVkaXQvcmVhZGVyLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy90YXBpMzIvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9mb250ZGxnLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglTbWFsbCBkbGwgaW50ZXJmYWNlcyBjbGVhbnVwcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL3dpbmVfZ2wuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRWFzZWQgcmVzdHJpY3Rpb25zIG9uIE9wZW5HTC9NRVNBIHVzYWdlIGEgYml0LiBJdCBjb21waWxlcyBqdXN0IGZpbmUKCXVzaW5nIG1lc2EtMy4yIGV2ZW4gd2l0aG91dCBnbGV4dC5oLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJUmV3b3JrZWQgaG93IHNlbGVjdGlvbnMgYXJlIGtlcHQgdHJhY2sgb2YgaW4gdGhlIGxpc3Qgdmlldy4gU2VsZWN0aW9ucwoJYXJlIG5vdyBsaXN0ZWQgYXMgYSBzb3J0ZWQgcmFuZ2Ugb2YgcGFpcmVkIGludGVnZXJzLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJTG91aXMgUGhpbGlwcGUgR2Fnbm9uIDxsb3Vpc3BoaWxpcHBlQG1hY2FkYW1pYW4uY29tPgoJV2hlbiB1bnN1YmNsYXNzaW5nIHRvb2xzLCB1c2UgdG9vbFB0ci0+aHduZCBpbnN0ZWFkIG9mIHRvb2xQdHItPnVJZCBpZgoJdG9vbFB0ci0+ZmxhZ3MgZG9lcyBub3QgY29udGFpbiBUVEZfSURJU0hXTkQgKG1lYW5pbmcgdUlkIGlzIG5vdCBhCgl2YWxpZCB3aW5kb3cgaGFuZGxlKS4KCgkqIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYjoKCVdpbGJ1ciBOLiBEYWxlIDx3aWxidXIuZGFsZUBsdW1pbi5ubD4KCUFkZGVkIGRlc2NyaXB0aW9uIG9mIHVzaW5nIERMTHMgd2l0aCBXaW5lTGliLgoKCSogZG9jdW1lbnRhdGlvbi8qOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQ29udmVydGVkIFdpbmUgZG9jdW1lbnRhdGlvbiB0byBTR01MIGZvcm1hdC4KCjIwMDAtMDgtMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9pY29udGl0bGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW5pdGlhbGl6ZSAnc3RyJyBpbiBJQ09OVElUTEVfR2V0VGl0bGVQb3MuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jOgoJRml4ZWQgcmVzb3VyY2UgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aCAzMi1iaXQgbW9kdWxlcyB0aGF0IGRvbid0IGhhdmUgYQoJMTYtYml0IGNvdW50ZXJwYXJ0IChuZWNlc3NhcnkgZm9yIExPQURfTElCUkFSWV9BU19EQVRBRklMRSBzdXBwb3J0KS4KCgkqIHByb2dyYW1zL3VuaW5zdGFsbGVyL21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkIGFuIGVkaXQgY29udHJvbCBzaG93aW5nIHRoZSBjb21tYW5kIGxpbmUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZAoJZGVpbnN0YWxsIGl0ZW0uCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGhkYXZpZXNAY29kZXdlYXZlcnMuY29tPgoJV0lOUE9TX1dpbmRvd0Zyb21Qb2ludCBzaG91bGQgcmVzcGVjdCBocmduV25kLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglTZXQgdXAgZXhlX21vZHJlZiBiZWZvcmUgbG9hZGluZyBpbXBsaWNpdGx5IGxpbmtlZCBkbGxzLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglQcmV2ZW50IGVuZGxlc3MgbG9vcGluZyBpbiBsaW5lYnJlYWsgaGFuZGxpbmcuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJZiB3ZSBhcmUgbG9va2luZyBmb3IgYW4gZXhpc3RpbmcgcGl4bWFwIGZvcm1hdCwgd2UgZG8gbm90IG5lZWQgdGhlCglzYW1lIGJpdHNwZXJwaXhlbCAoZml4ZXMgZGVwdGggMTUvYml0c3BpeGVsIDE2IG1vZGUpLgoKCSogaW5jbHVkZS9kaW5wdXQuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgYSBmZXcgRGlyZWN0SW5wdXQgNyBkZWZpbml0aW9ucyBhbmQgQysrIGZpeGVzLgoKCSogZGxscy9rZXJuZWwvd293dGh1bmsuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUxvYWRMaWJyYXJ5RXgzMlcxNiBzaG91bGQgdXNlIHRoZSBzZWFyY2ggYWxnb3JpdGhtIG9mIDE2LWJpdCBsaWJyYXJpZXMuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIGxvY2FsIHZhcmlhYmxlIHNoYWRvd3Mgd2FybmluZ3MuCgoJKiB3aW4zMi9wcm9jZXNzLmMsIGluY2x1ZGUvZWxmZGxsLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBtaXNjL3ZlcnNpb24uYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvdHlwZXMuYzoKCS0gRml4ZWQgcmVzb3VyY2UgZnVuY3Rpb25zIHRvIHdvcmsgZGlyZWN0bHkgZnJvbSB0aGUgSE1PRFVMRSBpbnN0ZWFkIG9mCgkgIHJlcXVpcmluZyBhIG1vZHJlZi4KCS0gQXR0ZW1wdGVkIHRvIGdldCBMT0FEX0xJQlJBUllfQVNfREFUQUZJTEUgcmlnaHQgKGJhc2VkIG9uIHBhdGNoZXMgYnkKCSAgRXJpYyBQb3VlY2ggYW5kIER1c2FuIExhY2tvKS4KCS0gU2ltcGxpZmllZCBtb2RyZWYgc3RydWN0dXJlIGFuZCBoYW5kbGluZy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglQcm90ZWN0IHRoZSBwcm90b3R5cGVzIGluIGhlcmUgZnJvbSBDKysgbmFtZSBtYW5nbGluZy4uLgoKCSogZGxscy92ZXJzaW9uL2luc3RhbGwuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJVklGX09VVE9GU1BBQ0UgYW5kIFZJRl9PVVRPRk1FTSB3ZXJlIHJldmVyc2VkLgoKCSogaW5jbHVkZS92ZncuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJaW5saW5lIG11c3QgYmUgZmlyc3QgYXR0cmlidXRlIGluIGZ1bmN0aW9uIGRlZmluaXRpb24uCgoJKiBkbGxzL3VzZXIvbHN0ci5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBDaGFyTmV4dFcuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglYMTFEUlZfRElCX1NldEltYWdlQml0c19STEU4OiBicmVhayBpbWFnZSBsaW5lcy4KCjIwMDAtMDgtMDYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWMsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2lubW0uc3BlYywgZGxscy93aW5zb2NrL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW4sIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuZHJ2LnNwZWMsIGRsbHMvaWNtcC9NYWtlZmlsZS5pbiwgZGxscy9pY21wL2ljbXAuc3BlYywgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL2x6MzIuc3BlYywgZGxscy9tcHIvTWFrZWZpbGUuaW4sIGRsbHMvbXByL21wci5zcGVjLCBkbGxzL21zYWNtL01ha2VmaWxlLmluLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLCBkbGxzL3NlcmlhbHVpL01ha2VmaWxlLmluLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsIGRsbHMvc2V0dXBhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXBhcGkvc2V0dXBhcGkuc3BlYywgZGxscy93aW5hc3BpL01ha2VmaWxlLmluLCBkbGxzL3dpbmFzcGkvd25hc3BpMzIuc3BlYywgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL3dpbmVwcy5zcGVjLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYzoKCUFkZGVkIGltcG9ydHMgb2Yga2VybmVsMzIuZGxsIHdoZXJlIG5lY2Vzc2FyeS4KCgkqIE1ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW46CglMaW5rIFVTRVIgcmVzb3VyY2VzIGludG8gbGlidXNlci5zby4KCgkqIG9sZS9vbGUybmxzLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4IGZvciBjYWxsaW5nIGN0eXBlIGZ1bmN0aW9ucyB3aXRoIFVuaWNvZGUgY2hhcmFjdGVycy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglDb252ZXJ0ZWQgYWxsIGNhbGxzIHRvIFJlZHJhd1dpbmRvdyB0byBJbnZhbGlkYXRlUmVjdC4gIFByZXZpb3VzbHkKCVJlZHJhd1dpbmRvdyB3YXMgYmVpbmcgdXNlZCBmb3IgdGhlIFJEV19VUERBVEVOT1cgZmxhZyB3aGljaCBmb3JjZWQgYW4KCWltbWVkaWF0ZSBXTV9QQUlOVCBtZXNzYWdlLiAgTW92aW5nIHRvIEludmFsaWRhdGVSZWN0IHNob3VsZCBsZXQKCVdNX1BBSU5UcyBvY2N1ciBub3JtYWxseS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCByZXNldHRpbmcgdGhlIGJhY2tncm91bmQgY29sb3Igd2hlbiBjbGVhcmluZyBvdXQgYmxhbmsgYXJlYXMsIGFzCglpdCBtYXkgaGF2ZSBiZWVuIHNldCB0byBzb21ldGhpbmcgb3RoZXIgdGhhbiBDT0xPUl9XSU5ET1cgYnkgdGhlCglhcHBsaWNhdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglUb3AgbGV2ZWwgd2luZG93cyB3aXRoIDAgd2lkdGggb3IgaGVpZ2h0IGFyZSBjcmVhdGVkIHdpdGggYSBzaXplIG9mIDF4MSBpbgoJdGhlIFgxMSBkcml2ZXIuIEkndmUgYWRkZWQgc29tZSBjb2RlIHRvIG1ha2Ugc3VyZSB0aG9zZSB3aW5kb3dzIGFyZSBuZXZlcgoJbWFwcGVkIHdoaWxlIHRoZSBzaXplIDw9IDAuCgoJKiBtaXNjL2xzdHIuYywgbWlzYy9tYWluLmMsIHJlbGF5MzIvc25vb3AuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3VzZXIuc3BlYywgZGxscy91c2VyL3VzZXIzMi5zcGVjLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9kdW1teS5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW51c2VyLmgsIG1lbW9yeS9zdHJpbmcuYywgY29uc29sZS9pbnRlcmZhY2UuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglNb3ZlZCBtb3N0IFVTRVIgc3RyaW5nIGZ1bmN0aW9ucyB0byBkbGxzL3VzZXIuCglDbGVhbmVkIHVwIGEgZmV3IG1vcmUgaW50ZXItZGxsIGRlcGVuZGVuY2llcy4KCgkqIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2luaXQuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbi5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9uZS9jb252ZXJ0LmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1pc2MvcmVnaXN0cnkuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgZGxscy9zaGx3YXBpL3BhdGguYywgZGxscy91c2VyL3RleHQuYzoKCVJlcGxhY2VkIGxzdHJsZW4vbHN0cmNtcCBieSBsaWJjIGVxdWl2YWxlbnRzIGV2ZXJ5d2hlcmUgd2UgZG9uJ3QgbmVlZAoJdG8gdHJhcCBleGNlcHRpb25zLgoKMjAwMC0wOC0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbmF0aXZlYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY29tY3RsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvd3MyXzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzb2NrMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFdhcm4gYWJvdXQgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGluIG1vZHVsZXMuZGF0IHRoYXQgYXJlIG5vdCB1c2VkLgoJLSBFbGltaW5hdGVkIHRoZSB3YXJuaW5ncyBjYXVzZWQgYnkgdGhlIGNoYW5nZSBhYm92ZS4KCS0gTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIGRlYnVnZ2VyL3N0YWNrLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGEgZmV3IG1pc3NpbmcgaW1wb3J0cy4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jLCBvYmplY3RzL3RleHQuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvbmV3Zm5zLmMsIHdpbjMyL29yZGluYWxzLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy9zY3JvbGwuYywgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvY2FjaGUuYywgZGxscy91c2VyL2xzdHIuYywgZGxscy91c2VyL21pc2MuYywgZGxscy91c2VyL3Jlc291cmNlLmMsIGRsbHMvdXNlci90ZXh0LmMsIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9jYWNoZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9sc3RyLmMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWM6CglNb3ZlZCBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyBvdXQgb2YgbGlid2luZS9rZXJuZWwvZ2RpIGludG8gVVNFUi4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIG9iamVjdHMvbWV0YWZpbGUuYywgd2luZG93cy9jYXJldC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3dpbnBvcy5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvd2luZXBzL2luaXQuYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jOgoJUmVtb3ZlZCBhIGZldyBkZXBlbmRlbmNpZXMgb24gR0RJIGludGVybmFscyBmcm9tIFVTRVIgZGxsLgoKCSogZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaTMyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvd2luZWRiZy5zcGVjOgoJQWRkZWQgYSBmZXcgbWlzc2luZyBpbXBvcnRzLgoKMjAwMC0wOC0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbjMyL2NvbnNvbGUuYywgTWFrZWZpbGUuaW4sIGRsbHMvZ2RpLy5jdnNpZ25vcmUsIGRsbHMvZ2RpL01ha2VmaWxlLmluLCBkbGxzL2dkaS9wcmludGRydi5jLCBkbGxzL2tlcm5lbC90b29saGVscC5zcGVjLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvcHJpbnRkcnYuYywgbXNkb3MvaW50MDkuYywgbXNkb3MvaW50MTYuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJTWFrZSBVU0VSIGFuZCBHREkgc2VwYXJhdGUgZGxscy4KCgkqIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvd2luZS93aW5zb2NrMTYuaCwgaW5jbHVkZS93aW5zb2NrLmgsIGluY2x1ZGUvd2luc29jazIuaDoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgdGhlIFdpbjE2L1dpbjMyIHN0cnVjdHVyZSBzaXplL2FsaWdubWVudCBkaWZmZXJlbmNlcyBvZgoJd3NfaG9zdGVudCwgd3NfcHJvdG9lbnQsIHdzX3NlcnZlbnQsIHdzX25ldGVudC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgaW5jbHVkZS90b29sdGlwcy5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlZG8gdGhlIHNob3cvaGlkZSBsb2dpYyBhbmQgYWRkIGEgY29tbWVudCB0byBleHBsYWluIHdoYXQncyBnb2luZyBvbi4KCUZpeCBUVE1fe1N8R31FVERFTEFZVElNRSB0byB1c2UgdGhlIGRvdWJsZSBjbGljayB0aW1lIGFzIGRlZmF1bHQuCglGaXggaGFuZGxpbmcgb2YgVFREVF9BVVRPTUFUSUMuCglSZWxheWVkIG1vdXNlIG1lc3NhZ2VzIHNob3VsZCBleHRyYWN0IHRoZSBwb3NpdGlvbiBmcm9tIGxQYXJhbSBub3QKCW1zZy5wdAoJU3ViY2xhc3NQcm9jIG5vdyB1bmlmaWVkIHdpdGggVFRNX1JFTEFZRVZFTlQuCglDaGFuZ2UgYWxsIGxzdHJjcHl4dG94IHRvIHVzZSB3aW4zMiBBUElzLgoKCSogZGxscy93aW5lcHMvYWZtLmMsIGRsbHMvd2luZXBzL3BzZHJ2Lmg6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCUNoYW5nZWQgdGhlIEFGTSBtZXRyaWNzIHN0cnVjdHVyZSB0byB1c2UgYW4gYXJyYXkgaW5zdGVhZCBvZiBhIGxpbmtlZAoJbGlzdC4gVGhpcyBhdm9pZHMgZG9pbmcgdHdvIGhlYXAgYWxsb2NhdGlvbnMgZm9yIGV2ZXJ5IGNoYXJhY3RlciwgYW5kCglyZWR1Y2VzIHRoZSBtZXRyaWNzIHBhcnNpbmcgdGltZSBieSBhcHByb3ggMjUlLgoKCSogZGxscy93aW5pbmV0L2h0dHAuYzoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkICJNaW1lLVZlcnNpb24iIHRvIHN0YW5kYXJkIE1JTUUgaGVhZGVycyBwYXJzZWQgaW4KCUhUVFBfR2V0U3RkSGVhZGVySW5kZXgoKS4KCgkqIGRsbHMvb2xlMzIvZXJyb3JpbmZvLmMsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbmUvb2JqX2Vycm9yaW5mby5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglJbXBsZW1lbnRlZCB0aGUgRXJyb3JJbmZvIGludGVyZmFjZXMuCgoJKiBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbjoKCUFkZGVkIGV4cGxpY2l0IGRlcGVuZGVuY3kgb24gbWVzc2FnZSBmaWxlcyBmb3IgcGVvcGxlIHdobyBkb24ndCBydW4KCW1ha2UgZGVwZW5kLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsZ3VpZC5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIG9sZS9ndWlkLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGVhdXQzMi9vbGVhdXQuYzoKCU1vdmVkIEdVSUQgZGVmaW5pdGlvbnMgdG8gdGhlaXIgcmVzcGVjdGl2ZSBkbGwuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxsaW5rLmg6CglGaXhlZCBJU2hlbGxMaW5rQS9XIGRlZmluaXRpb25zLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBpbmNsdWRlL2d1aWRkZWYuaCwgaW5jbHVkZS9pbml0Z3VpZC5oLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29tbWRsZ2Jyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX2VudW1pZGxpc3QuaCwgaW5jbHVkZS93aW5lL29ial9leHRyYWN0aWNvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGx2aWV3LmgsIGluY2x1ZGUvd3R5cGVzLmg6CglBZGRlZCBndWlkZGVmLmggYW5kIG1vdmVkIGEgZmV3IEdVSUQgZGVmaW5pdGlvbnMgdG8gdGhlIGNvcnJlY3QgZmlsZS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglGaXhlZCBJc0VxdWFsR1VJRCBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS93aW5ubHMuaCwgb2xlL29sZTJubHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTE9DQUxFX05PVVNFUk9WRVJSSURFIG1lYW5zOiBkbyBub3QgZ2V0IHVzZXIgcmVkZWZpbmVkIHNldHRpbmdzIGZyb20KCXRoZSByZWdpc3RyeS4gSW5zdGVhZCwgdXNlIHN5c3RlbSBkZWZhdWx0IHZhbHVlcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIEZpeGVkIGJ1ZyB3aGVyZSBJbml0U3ViSXRlbSB3YXMgZG9pbmcgYSBaZXJvTWVtb3J5IG9uIHRoZSBpdGVtLgoJLSBDbGVhbmVkIHVwIGEgc2l0IG9mIGV4dHJhIGJsdWUgYXQgdGhlIGVuZCBvZiBhIEZVTExST1dTRUxFQ1QgbGlzdCB2aWV3CgkgIGlmIHRoZXJlIGlzIG9ubHkgb25lIGNvbHVtbi4KCS0gQ29ycmVjdGVkIGEgYnVnIEkgaW50cm9kdWNlZCB3aXRoIGFuIGVhcmxpZXIgcGF0Y2ggd2hpY2ggY2F1c2VkCgkgIHByb2JsZW1zIHdpdGggbXVsdGlwbGUgc2VsZWN0aW9ucy4KCgkqIGRsbHMvZGRyYXcvY29udmVydC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPbmUgb2YgdGhlIDI0LzMyIGNvbnZlcnQgY29sb3IgbWFza3Mgd2FzIHdyb25nLgoKCSogZGxscy91c2VyL3VzZXIzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXRQcm9wQS9XIGhhdmUgc3RyaW5nIGFyZ3MuCgoJKiBpZjE2MzIvdGh1bmsuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgZGxscy8qL01ha2VmaWxlLmluLCBkbGxzLyovKi5zcGVjOgoJQWRkZWQgaW1wb3J0cyBvZiB1c2VyMzIvZ2RpMzIva2VybmVsMzIgd2hlcmV2ZXIgbmVjZXNzYXJ5LgoKMjAwMC0wOC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAwMDgwMS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wOC0wMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglBZGRlZCBXTV9UQ0FSRCBhbmQgRFdPUkRMT05HLgoKCSogZGxscy9rZXJuZWwvZm9ybWF0X21zZy5jLCB0b29scy93bWMvd3JpdGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUEVfTUVTU0FHRV9IRUFERVIuTGVuZ3RoIGNvbnRhaW5zIHRoZSBoZWFkZXIgaXRzZWxmIHRvby4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUNvbW1pdHRpbmcgYSBwYWdlIG9mIGEgc2hhcmVkIG1hcHBpbmcgaW4gb25lIHByb2Nlc3MgbGV0cyBpdCBhcHBlYXIKCWNvbW1pdHRlZCBpbiBvdGhlciBwcm9jZXNzZXMsIHRvby4gVG8gZmFrZSB0aGlzLCB3ZSBjb21taXQgdGhlbSBhcwoJc29vbiBhcyB0aGV5IGFyZSBtYXBwZWQuCgoJKiBpbmNsdWRlL3dpbm50LmgsIG1lbW9yeS9oZWFwLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglNb3ZlZCBXaW5lIHByaXZhdGUgaGVhcCBjcmVhdGlvbiBmbGFncyB0byBvdGhlciB2YWx1ZXMuCglSZXR1cm4gc3lzdGVtIGhlYXAgd2hlbiBhIHNoYXJlZCBoZWFwIGlzIHJlcXVlc3RlZC4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOgoJT25seSBzZXQgQ09NU1BFQyBpZiBub3QgZGVmaW5lZCBhbHJlYWR5LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgaW5jbHVkZS93aW5lL3VuaWNvZGUuaDoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCB0aGUgd2luMzEgc3R5bGUgZmlsZSBkaWFsb2cgdG8gMzIgYml0cyBzdHJ1Y3R1cmVzIGFuZAoJbWVzc2FnZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFNlcmdlIEl2YW5vdgoJQW5kcmV3IExld3lja3kKCUltcHJvdmVkIGRyYXdpbmcgb2YgaXRlbSB0ZXh0LCBhZGRlZCBTSE9XU0VMQUxXQVlTIGNhcGFiaWxpdHkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglNYXR0aGV3IExha2UgPE1hc3RlclJfTEB5YWhvby5jb20+CglGaXhlZCBhIHNlZ2ZhdWx0IHByb2JsZW0gdXNpbmcgdGhlIHN0YW5kYXJkIGZpbGUgb3BlbiBkaWFsb2cgYm94LgoKCSogZmlsZXMvZG9zX2ZzLmMsIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy92Z2EuYywgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL3ZnYS5jLCBvYmplY3RzL2dkaW9iai5jOgoJTW92ZWQgTXVsRGl2KCkgYW5kIFZHQSByb3V0aW5lcyBvdXQgb2YgR0RJLgoKCSogcHJvZ3JhbXMvd2NtZC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvUkVBRE1FLCBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJQWRkZWQgc3VwcG9ydCBmb3IgRVJST1JMRVZFTC4KCU1vc3QgZXJyb3JzIHJlcG9ydGVkIHZpYSBGb3JtYXRNZXNzYWdlKCkuCglDT1BZIGNvbW1hbmQgbm93IHdvcmtzIGNvcnJlY3RseSBpZiBvdXRwdXQgc3BlY2lmaWVyIGlzIGEgZGlyZWN0b3J5LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCU1vcmUgY29uc2lzdGVudCBjYWxjdWxhdGlvbiBvZiBsaW5lIGhlaWdodCwgc2Nyb2xscyBhIGZ1bGwgaXRlbSBvbgoJbGluZSB1cC9kb3duLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgYSBmZXcgYnVncyBpbmNsdWRpbmcgb25lIHdpdGggc2V0dGluZyBleHRlbmRlZCBzdHlsZXMgYW5kCgllZGl0aW5nIGxhYmVscy4KCUltcGxlbWVudGVkIHRoZSBMVlNfRVhfRlVMTFJPV1NFTEVDVCBleHRlbmRlZCBzdHlsZS4KCUJlZ2luIGFuIGltcGxlbWVudGF0aW9uIG9mIHZpcnR1YWwgbGlzdCB2aWV3cyAoTFZTX09XTkVSREFUQSBzdHlsZQoJc2V0KS4KCgkqIGluY2x1ZGUvZGRyYXcuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBYMTEgaW5jbHVkZXMgZnJvbSBkZHJhdy5oLgoKCSogbG9hZGVyL21vZHVsZS5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglXaW5FeGVjMTYgc2hvdWxkIG5vdCBzcGxpdCBxdW90ZWQgZmlsZW5hbWVzIHdpdGggc3BhY2VzLgoKCSogZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC93aW5pbmV0LnNwZWM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSW1wbGVtZW50ZWQgSW50ZXJuZXRDaGVja0Nvbm5lY3Rpb25BLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhbm90aGVyIG5vbi1MaW51eCBidWlsZCBmYWlsdXJlLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIDIgZm9yd2FyZCBlbnRyaWVzLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBzb21lIGZsaWNrZXIgYnkgZGV0ZWN0aW5nIGlmIHdlIHNldCB0aGUgc2FtZSB2YWx1ZSBhZ2Fpbi4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDaGFuZ2UgbG9naWMgb2YgbGlzdGJveCByZXNpemluZyBmb3IgMTYgYml0cyBhcHBzIGZvciBsaXN0cyB3aXRob3V0CglMQlNfTk9JTlRFR1JBTEhFSUdIVCBzdHlsZS4KCgkqIG9iamVjdHMvZGMuYzogUGhpbGxpcCBFem9sdCA8ZXpvbHRAcGVyZi56a28uZGVjLmNvbT4KCUZpeGVkIENyZWF0ZURDIHRvIHdvcmsgcHJvcGVybHkgd2hlbiBpdCBpcyBjYWxsZWQgd2l0aCBhIGRldmljZS4KCgkqIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWQuaCwgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jOgoJSmFzb24gRWRtZWFkZXMgPGphc29uQHRoZS1lZG1lYWRlcy5mc25ldC5jby51az4KCS0gU3VwcG9ydCB3aGl0ZXNwYWNlIGFyb3VuZCBjb21tYW5kcyBiZXR0ZXIsIGFuZCBzdXBwb3J0IHRoZSBACgkgIHByZWZpeCBiZXR0ZXIKCS0gRW5oYW5jZSB0aGUgc2V0IHN1cHBvcnQgdG8gdW5zZXQsIGRpc3BsYXkgdmFsdWUgZXJyb3IgY29ycmVjdGx5CgktIEVuaGFuY2UgdGhlIGNvbW1hbmQgbGluZSBzdXBwb3J0IGZvciBwYXJtcywgYW5kIGVudiB2YXIgZXhwYW5zaW9uCgktIEVuaGFuY2UgdGhlIGVjaG8gY29tbWFuZCB0byBub3QgbG9vc2Ugd2hpdGVzcGFjZSwgYW5kIGRpc3BsYXkKCSAgb3V0cHV0IHdpdGggJSBzaWducyBiZXR0ZXIKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL3JlZ3N0ci5oLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3VuaW5zdGFsbGVyL1JFQURNRSwgcHJvZ3JhbXMvdW5pbnN0YWxsZXIvbWFpbi5jLCBwcm9ncmFtcy91bmluc3RhbGxlci9tYWluLmgsIHByb2dyYW1zL3VuaW5zdGFsbGVyL3JzcmMucmMsIHByb2dyYW1zL3VuaW5zdGFsbGVyL3VuaW5zdGFsbGVyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIGFuIHVuaW5zdGFsbGVyIGZvciBJbnN0YWxsU2hpZWxkLCBXSVNFIGV0Yy4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJSmVhbi1DbGF1ZGUgQmF0aXN0YSA8amNiQG1hY2FkYW1pYW4uY29tPgoJUHJvdmlkZSBwb3NpdGlvbiBoaW50cyBmb3Igd2luZG93IG1hbmFnZXJzLgoKMjAwMC0wNy0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvbW9uaXRvci5oLCBpbmNsdWRlL3N5c21ldHJpY3MuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgbWlzYy9tYWluLmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZ2RpL3dpbmcuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3R0eWRydi9kYy5jLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcveDExLmM6CglDbGVhbmVkIHVwIHNvbWUgbW9yZSBVU0VSIGRlcGVuZGVuY2llcy4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTW92ZWQgc3lzdGVtIG1ldHJpY3MgZGVmaW5pdGlvbnMgdG8gd2ludXNlci5oLgoKCSogZGVidWdnZXIvc3RhY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglUaWR5ZWQgdXAgc3RhY2sgYmFja3RyYWNlIGNvZGUgYSBiaXQsIGFuZCBhZGRlZCBhIHNpbXBsZSBzcGVjaWFsCgljYXNlIGZvciBiYWNrdHJhY2luZyBmcm9tIGEgbnVsbCBFSVAuCgoJKiBmaWxlcy9maWxlLmMsIHNlcnZlci9maWxlLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJRml4IGZvciA2NC1iaXQgbmVnYXRpdmUgc2VlayB2YWx1ZS4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIG1zZG9zL2ludDJmLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbW92ZWQgRE9TIHRhc2sgZmllbGRzIGZyb20gdGhlIE5FX01PRFVMRSBzdHJ1Y3R1cmUuCgoJKiBsb2FkZXIvdGFzay5jOgoJU2tpcCBxdW90ZWQgcHJvZ3JhbSBuYW1lIHdoZW4gYnVpbGRpbmcgY29tbWFuZCBsaW5lLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglET1MgYmluYXJ5IHN1cHBvcnQgaGFzIGJlZW4gcmVzdG9yZWQuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3Rvb2xoZWxwLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvdG9vbGhlbHAuYywgd2luZG93cy91c2VyLmM6CglNb3ZlZCB0b29saGVscCBpbXBsZW1lbnRhdGlvbiBpbnRvIGtlcm5lbDMyIGRsbC4KCgkqIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jOgoJQmFja2VkIG91dCBGaW5kUmVzb3VyY2UgbGFuZ3VhZ2UgcGF0Y2guCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1zZG9zL2ludDA5LmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgZmV3IHByb2JsZW1zLgoKCSogZGxscy9rZXJuZWwvbWVzc2FnZXMvd2luZXJyX2VudS5tYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJQWRkZWQgdGV4dCBmb3IgYWxsIG1lc3NhZ2VzIGluY2x1ZGVkIGluIHdpbjk1IGFuZCB3aW5OVC4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgeyB9IGFyb3VuZCBzdHVmZiBpbiBBRERfVE9fVCBtYWNyb3MuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDb252ZXJ0IERPUyAoTVopIGJpbmFyeSBsb2FkZXIgdG8gdGhlIG5ldyBET1MgcHJvY2VzcyBtb2RlbC4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglVc2UgTVpfQ3VycmVudCgpIGluc3RlYWQgb2YgcE1vZHVsZS0+bHBEb3NUYXNrLiBDbGVhbmVkIHVwIHRoZSBSTUNCMzIKCWFzc2VtYmx5IGNvZGUgYSBiaXQsIGFuZCB3cmFwcGVkIGl0IGluICNpZmRlZiBfX2kzODZfXy4KCjIwMDAtMDctMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbWlzYy9tYWluLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvcGFsZXR0ZS5jLCB3aW5kb3dzL2tleWJvYXJkLmM6CglDbGVhbmVkIHVwIGEgZmV3IFVTRVIgZGVwZW5kZW5jaWVzLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvZHBtaS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW1vdmVkIGhNb2R1bGUgcGFyYW1ldGVyIGZyb20gTVpfQWxsb2NEUE1JVGFzaygpLCBhbmQgcmVuYW1lZAoJTVpfS2lsbE1vZHVsZSgpIHRvIE1aX0tpbGxUYXNrKCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUNyZWF0ZSBkbGwva2VybmVsL21lc3NhZ2VzIGRpcmVjdG9yeS4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9kb3NtZW0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBET1NNRU1fSW5pdCgpIHRha2UgYSBCT09MIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGEgSE1PRFVMRTE2LCBhbmQKCWluaXRpYWxpemUgRE9TIG1lbW9yeSBwcm9wZXJseSBpbiB0aGUgbmV3IHByb2Nlc3MgbW9kZWwuIE1hZGUKCURPU01FTV9NZW1vcnlCYXNlKCkgdXNlIE1aX0N1cnJlbnQoKS0+aW1nIGluc3RlYWQgb2YgcE1vZHVsZS0+ZG9zX2ltYWdlLgoKCSogbG9hZGVyL3Rhc2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW1vdmVkIHVzYWdlIG9mIG9ic29sZXRlIHBNb2R1bGUtPmxwRG9zVGFzay4KCjIwMDAtMDctMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW51c2VyLmgsIGxvYWRlci9yZXNvdXJjZS5jLCBtZW1vcnkvYXRvbS5jLCBtZW1vcnkvZW52aXJvbi5jLCBtaXNjL2NvbW0uYywgbWlzYy9sc3RyLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3Nub29wLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9leGNlcHQuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGlmMTYzMi9zbm9vcC5jOgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IGluY2x1c2lvbnMgb2Ygd2luZ2RpLmggYW5kIHdpbnVzZXIuaAoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvbnRkbGwvdGltZS5jLCBpbmNsdWRlL250ZGRrLmgsIGxvYWRlci9tb2R1bGUuYzoKCVJlbW92ZWQgYSBmZXcgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIGZyb20gbnRkbGwuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIENyZWF0ZVR5cGVMaWIsTEhhc2hWYWxPZk5hbWVTeXMgc3R1YnMuCglDaGVjayBmb3IgY29ycmVjdCBzdHJ1Y3QgbWFnaWMgYmVmb3JlIHJlYWRpbmcgb3V0IG9mIGl0LgoKCSogZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL3Ntb290aHNjcm9sbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBTbW9vdGhTY3JvbGxXaW5kb3cuCgoJKiBtc2Rvcy9kb3NtZW0uYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaWxsIEJJT1Mgc2VnbWVudHMgdXNpbmcgcG9pbnRlcnMgZnJvbSBET1NNRU1fQmlvcyogZnVuY3Rpb25zLCBpbnN0ZWFkCglvZiBwb2ludGVycyBmcm9tIGdsb2JhbCBoZWFwIGZ1bmN0aW9ucy4KCgkqIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0IHJpZCBvZiBVU0VSMzIgZnVuY3Rpb25zIGluIEtFUk5FTDMyLgoKCSogaW5jbHVkZS9kb3NleGUuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgV2luMzIgQ29uc29sZSBpbnRlcmZhY2UgdG8gdGhlIG1haW4gRE9TVk0gZXZlbnQKCWxvb3AuIENsZWFuZWQgdXAgZXZlbnQgZGlzcGF0Y2hpbmcgY29kZSBhIGJpdC4KCgkqIG1zZG9zL2ludDIxLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFrZSBkaXJlY3QgY29uc29sZSBpbnB1dCByb3V0aW5lcyBnbyB0aHJvdWdoIGludDE2LCByYXRoZXIgdGhhbgoJcmVhZGluZyBkaXJlY3RseSBmcm9tIHRoZSBjb25zb2xlIGRyaXZlci4KCgkqIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIGxpYnRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglvbGUzMiBub3cgcmVxdWlyZXMgbGlua2luZyB3aXRoIGtlcm5lbDMyCglzaGVsbDMyIG5vdyByZXF1aXJlcyBsaW5raW5nIHdpdGgga2VybmVsMzIgYW5kIHNobHdhcGkKCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5zb2NrL3NvY2tldC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJV2UgYWx3YXlzIGhhdmUgc3RyZXJyb3IsIHNvIG5vIG5lZWQgdG8gaWZkZWYgSEFWRV9TVFJFUlJPUi4KCgkqIHdpbmRvd3Mvd2luLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglJbml0aWFsaXplIGhyZ25XbmQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglGaXggdGhlIEdMRVhUIGZ1bmN0aW9uIHByb3RvdHlwZSB0eXBlZGVmcyBkZXRlY3Rpb24uCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1zZG9zL2ludDA5LmMsIG1zZG9zL2lvcG9ydHMuYywgaW5jbHVkZS9taXNjZW11Lmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUxldCBJbnQwOSByb3V0aW5lcyByZW1lbWJlciBhIGtleXN0cm9rZSdzIEFTQ0lJIGNvZGUsIGlmIGF2YWlsYWJsZS4KCgkqIG1zZG9zL2ludDMzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc29tZSBpbnQzMyBmdW5jdGlvbiBzdHVicy4KCgkqIG1zZG9zL2ludDEwLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hhbmdlZCBhIGZldyBjb3JlIGludDEwIHJvdXRpbmVzIHRvIHVzZSB0aGUgQklPUyBkYXRhIHNlZ21lbnQgY3Vyc29yCglwb3NpdGlvbnMgYW5kIHRoZSBWR0Egcm91dGluZXMsIGluc3RlYWQgb2YgZGlyZWN0bHkgYWNjZXNzaW5nIHRoZQoJY29uc29sZSBkcml2ZXIuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBPbGVHZXRBdXRvQ29udmVydC4KCgkqIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRmluZFJlc291cmNlRXhBL1cgc2hvdWxkIHNlYXJjaCBmb3IgdGhlIHNwZWNpZmllZCBsYW5ndWFnZSByZXNvdXJjZSBvbmx5LgoJRmluZFJlc291cmNlQS9XIHNob3VsZCBzZWFyY2ggZm9yIGFueSBsYW5ndWFnZSByZXNvdXJjZS4KCgkqIGluY2x1ZGUvdHNfeGxpYi5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTm8gbG9uZ2VyIGNyYXNoIHdoZW4gcnVubmluZyB3aXRoIERpcmVjdERyYXcgd2l0aCBhIEREQ2xpcHBlciBpbgoJLWRlc2t0b3AgbW9kZS4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglOQ19Eb05DSGl0VGVzdCBub3cgcmV0dXJucyBIVE5PV0hFUkUgbGlrZSBXaW5kb3dzIGlzIGRvaW5nIHdoZW4KCWNsaWNraW5nIG9uIGEgd2luZG93IGhhdmluZyBhIGN1c3RvbWl6ZSBub24gY2xpZW50IGFyZWEuCgoyMDAwLTA3LTI4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGQgWDExRFJWX0RJQl9VcGRhdGVESUJTZWN0aW9uMiB0aGF0IHRha2VzIGEgSEJJVE1BUCBwYXJhbWV0ZXIuCgoJKiBtZW1vcnkvY29kZXBhZ2UuYzoKCVdvbGZnYW5nIFNjaHdvdHplciA8d29zY2h3b3RAZ214Lm5ldD4KCUFkZGVkIE5VTEwgcG9pbnRlciBjaGVja3MuCgoJKiBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvdHNfc2hhcGUuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4uaCwgaW5jbHVkZS94MTFkcnYuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfc2hhcGUuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi93bmQuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglGcmFuY29pcyBKYWNxdWVzIDxmcmFuY29pc2pAbWFjYWRhbWlhbi5jb20+CgktIGltcGxlbWVudGF0aW9uIG9mIFNldFdpbmRvd3NSZ24gYW5kIEdldFdpbmRvd1JnbgoJLSBYMTFEUlYgYW5kIFRUWURSViB1cGRhdGVkIHdpdGggbmV3IEFQSSBTZXRXaW5kb3dSZ24KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3dpbm50LmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1lbW9yeS9nbG9iYWwuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50ZXJydXB0cy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZW1vdmVkIHRoZSBoTW9kdWxlIHBhcmFtZXRlciBmcm9tIHZhcmlvdXMgRE9TTUVNIHJvdXRpbmVzLCB0aGUgRE9TTUVNCglyb3V0aW5lcyBub3cgYWx3YXlzIHVzZSB0aGUgY3VycmVudCBtZW1vcnkgc3BhY2UuCgoJKiBpbmNsdWRlL3NobHdhcGkuaDogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1pbm9yIEFQSSBmaWxlcyB1cGRhdGUuCgoJKiB0b29scy93bWMvbWN5Lnk6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBzcGVjaWZpYyBmaXhlcy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MvZGVmd25kLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCU5vdyB0aGUgc2VydmljZSB0aHJlYWQgaXMgbm8gbW9yZSBpbiBjaGFyZ2Ugb2YgZXJhc2luZyB0aGUgYmFja2dyb3VuZAoJb2YgdGhlIFdpbmRvdy4gU2VydmljZSB0aHJlYWQgaXMgZG9pbmcgdGhlIGludmFsaWRhdGlvbiBwYXJ0LCBhbmQgdGhlCglhcHBsaWNhdGlvbiB0aHJlYWQgaXMgZG9pbmcgdGhlIGVyYXNpbmcgcGFydC4gQWxsIHRoaXMgaGFzIGJlZW4KCWltcGxlbWVudGVkIHVzaW5nIFdNX1NZTkNQQUlOVCBtZXNzYWdlLgoKCSogZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBzdHViIGZvciBPTEUzMi5PbGVTZXRBdXRvQ29udmVydCBuZWVkZWQgYnkgQWRvYmUgUGhvdG9zaG9wIDQuMC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCURvIG5vdCBjcmFzaCBpZiB3aW5kb3cgd2FzIG5vdCBmb3VuZC4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvcGFpbnRpbmcuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBVcGRhdGVXaW5kb3cgc2hvdWxkIHJlZnJlc2ggYWxsIGNoaWxkcmVuIHRoYXQgaGF2ZSBhbiB1cGRhdGUgcmVnaW9uLgoJLSBJbiBESUFMT0dfQ3JlYXRlSW5kaXJlY3QgVXBkYXRlV2luZG93IHNob3VsZG4ndCBiZSBjYWxsZWQuIFdpbmUgd2lsbCBnZW5lcmF0ZQoJICBhIFdNX1BBSU5UIGV2ZW50dWFsbHkgZm9yIHRoZSBkaWFsb2csIG5vIG5lZWQgdG8gZm9yY2UgYSBwYWludCByaWdodCBhd2F5LgoJKGJhc2VkIG9uIGEgcGF0Y2ggZnJvbSBKYW1lcyBIYXRoZXdheSBpbiB0aGUgQ29yZWwgdHJlZSkKCgkqIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDJmLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUp1c3QgZ2V0IERPUyB0YXNrIHN0cnVjdHVyZSBmcm9tIE1aX0N1cnJlbnQoKSwgaW5zdGVhZCBvZiAoY2x1bXNpbHkpCgl0cnlpbmcgdG8gZmluZCBhbmQgcmVhZCBmcm9tIHRoZSBjdXJyZW50IHRhc2sncyBtb2R1bGUgc3RydWN0dXJlcy4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWtlIGEgZ2xvYmFsIGFzbSBoZWxwZXIgZnVuY3Rpb24gdG8gaGFuZGxlIDMyLWJpdCBSTUNCIGNhbGxzLCBzbyB3ZQoJZG9uJ3QgbmVlZCB0aG9zZSBjb21wbGV4IGNvbnN0cmFpbnRzIGVpdGhlci4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFsd2F5cyBnZXQgYSBoYXJkd2FyZSBtZXNzYWdlIGZyb20gdGhlIHN5c3RlbSBxdWV1ZSBpbiBQZWVrTWVzc2FnZSwKCWV2ZW4gaWYgbm8gc3VjaCB3YWtlIGJpdHMgYXJlIHNldCwgYmVjYXVzZSBpbiBhIFBlZWtNZXNzYWdlIGxvb3AsCgl0aGVyZSdzIG5vIHNsZWVwaW5nLCBzbyB0aGUgbmVjZXNzYXJ5IHdha2UgYml0cyBhcmUgbmV2ZXIgc2V0Li4uCgoJKiBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgaW5jbHVkZS9vbGVjdGwuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZCBDb25uZWN0aW9uIFBvaW50IHN1cHBvcnQgdG8gT0xFIGZvbnQgb2JqZWN0cy4KCUFkZCBzb21lIG1vcmUgVFJBQ0UoKXMuCgoJKiBkbGxzLyovKi5zcGVjOgoJQWRkZWQgJ293bmVyJyBmaWVsZCB0byAxNi1iaXQgc3BlYyBmaWxlcyB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZQoJMzItYml0IGRsbCB0aGF0IGNvbnRhaW5zIGl0LgoKMjAwMC0wNy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vc291bmQuc3BlYywgZGxscy93aW5tbS9zb3VuZDE2LmMsIGluY2x1ZGUvc3RyZXNzLmgsIGluY2x1ZGUvd2luZS93aW5lc291bmQuaCwgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC9zdHJlc3MuYywgZGxscy9rZXJuZWwvc3RyZXNzLnNwZWMsIGRsbHMvc2V0dXBhcGkvLmN2c2lnbm9yZSwgZGxscy9zZXR1cGFwaS9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS9zZXR1cHguc3BlYywgZGxscy9zZXR1cGFwaS9zZXR1cHhfbWFpbi5jOgoJTWVyZ2VkIHNldHVweC5kbGwgaW50byBzZXR1cGFwaS5kbGwuCglNZXJnZWQgc291bmQuZGxsIGludG8gd2lubW0uZGxsLgoJTWVyZ2VkIHN0cmVzcy5kbGwgaW50byBrZXJuZWwzMi5kbGwuCgoJKiBkbGxzL2RjaW1hbjMyL01ha2VmaWxlLmluLCBkbGxzL2RjaW1hbjMyL2RjaW1hbl9tYWluLmMsIGRsbHMvZHBsYXkvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXkvZHBsYXlfbWFpbi5jLCBkbGxzL21zbmV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvbXNuZXQzMi9tc25ldF9tYWluLmMsIGRsbHMvc2hmb2xkZXIvTWFrZWZpbGUuaW4sIGRsbHMvc2hmb2xkZXIvc2hmb2xkZXIuc3BlYywgZGxscy9zaGZvbGRlci9zaGZvbGRlcl9tYWluLmMsIGRsbHMvd293MzIvTWFrZWZpbGUuaW4sIGRsbHMvd293MzIvd293X21haW4uYzoKCUFkZGVkIGEgZmV3IGVtcHR5IHNvdXJjZSBmaWxlcyBzbyB0aGF0IGVhY2ggZGxsIGhhcyBhdCBsZWFzdCBvbmUgQwoJZmlsZS4KCgkqIGRsbHMvd2lubW0vbWNpc2VxL21jaW1pZGkuYywgZGxscy93aW5tbS9tY2l3YXZlL21jaXdhdmUuYywgZGxscy93aW5tbS9taWRpbWFwL21pZGltYXAuYywgZGxscy93aW5tbS93YXZlbWFwL3dhdmVtYXAuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbW1hdXguYywgZGxscy93aW5tbS93aW5lb3NzL29zcy5jLCBpbmNsdWRlL2RyaXZlci5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXNhY20uaCwgaW5jbHVkZS92ZncuaCwgcHJvZ3JhbXMvYXZpdG9vbHMvaWNpbmZvLmMsIHdpbmRvd3MvZHJpdmVyLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL21zYWNtL2RyaXZlci5jLCBkbGxzL21zYWNtL2ludGVybmFsLmMsIGRsbHMvbXN2aWRlby9kcmF3ZGliLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy93aW5tbS9qb3lzdGljay5jLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS9tY2lhbmltL21jaWFuaW0uYywgZGxscy93aW5tbS9tY2lhdmkvbWNpYXZpLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CgktIHJlbW92ZWQgKG5vdyBvYnNvbGV0ZSkgZHJpdmVyLmggZmlsZSAoaXQncyBjb250ZW50IGlzIG5vdyBpbiBtbXN5c3RlbS5oKQoJLSB1cGdyYWRlZCB2ZncuaCBjb250ZW50CgoJKiBtc2Rvcy9kcG1pLmM6IEF2b2lkIGNsb2JiZXJpbmcgJWVieC4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVJldHVybiB0aGUgcHJvcGVyIGVycm9yIGNvZGUgd2hlbiBhIDE2LWJpdCB0YXNrIGZhaWxlZCB0byBzdGFydAoJKHRoYW5rcyB0byBQZXRlciBHYW50ZW4pLgoKCSogZG9jdW1lbnRhdGlvbi9IT1dUTy13aW5lbGliOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGFwdGVkIHRvIHRoZSByZWNlbnQgd2luZWJ1aWxkIHJlbmFtZS4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgZGV0ZWN0aW9uIGNvZGUgZm9yIHZlcnkgb2xkIFdpbmRvd3MgKDEuMSwgMi4wLCAuLi4pIGJpbmFyaWVzIHRvCglNT0RVTEVfR2V0QmluYXJ5VHlwZSgpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscmVnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHN0cmluZy5jLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9wYXRoLmMsIGRsbHMvc2hsd2FwaS9yZWcuYywgZGxscy9zaGx3YXBpL3JlZ3N0cmVhbS5jLCBkbGxzL3NobHdhcGkvc2hsd2FwaS5zcGVjLCBkbGxzL3NobHdhcGkvc2hsd2FwaV9tYWluLmMsIGRsbHMvc2hsd2FwaS9zdHJpbmcuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCU1vdmVkIHNobHdhcGkgcm91dGluZXMgZnJvbSBzaGVsbDMyLmRsbCB0byBzaGx3YXBpLmRsbC4KCjIwMDAtMDctMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbiwgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvYXRvbS5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3VuaWNvZGUuYywgc2VydmVyL3VuaWNvZGUuaCwgdG9vbHMvd21jL01ha2VmaWxlLmluLCB1bmljb2RlLy5jdnNpZ25vcmUsIHVuaWNvZGUvTWFrZWZpbGUuaW46CglNYWtlIHVuaWNvZGUubyBpbnRvIGEgc2VwYXJhdGUgRUxGIGxpYnJhcnkgc28gdGhhdCB3ZSBjYW4gdXNlIGl0IGZyb20KCXRoZSB3aW5lc2VydmVyIHRvby4KCgkqIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvY2Ryb20uaCwgbWlzYy9jZHJvbS5jLCBtc2Rvcy9pbnQyZi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIGZpeGVkIGEgZ3Jvc3MgYnVnIGluIFNldEN1cnJlbnREaXJlY3RvcnlBICh3aGVyZSBjaGFuZ2luZyB0byBhIG5ldwoJICBub24tZXhpc3RlbnQgZGlyZWN0b3J5IHdvdWxkIGxlYXZlIHRoZSBuZXcgZHJpdmUgZW5hYmxlZCB1cG9uIGFib3J0aW5nCgkgIChmaXhlcyBDdXRlRlRQIGluc3RhbGwgYW5kIHNob3VsZCBmaXggTUFOWSBhcHBzKQoJICBUaGlzIGhhcyBwcm9iYWJseSBiZWVuIGNhdXNlZCBieSBteXNlbGYuICpicm93bnBhcGVyYmFnKgoJLSBhZGRlZCBHZXRWb2x1bWVJbmZvcm1hdGlvbiBzZXJpYWwgbnVtYmVyIGJ1Zy1mb3ItYnVnIGNvbXBhdGliaWxpdHkKCS0gY29ycmVjdGVkIFVuaWNvZGUgbGFiZWxzIChiZXR0ZXIgQ0QtUk9NIGhhbmRsaW5nIGluIGdlbmVyYWwpCgktIG1vdmVkIENELVJPTSBsYWJlbCBkZXRlY3Rpb24gY29kZSB0byBtaXNjL2Nkcm9tLmMKCS0gcG9zc2libGUgdG8gdXNlIGxvb3BiYWNrIG1vdW50ZWQgSVNPOTY2MCBmaWxlcwoJLSBpbml0IHNvbWUgdW5pbml0aWFsaXNlZCBkcml2ZSBmaWVsZHMKCS0gcmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgaGVhZGVyIGluY2x1ZGVzCgoJKiB3aW5kb3dzL3dpbnBvcy5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURvbid0IGRlc3Ryb3kgdGhlIGNhcmV0IG9uIFNXUF9ISURFV0lORE9XLgoKCSogZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2Zvcm1hdF9tc2cuYywgZGxscy9rZXJuZWwva2VybmVsLnJjLCBkbGxzL2tlcm5lbC9rZXJuZWwzMi5zcGVjLCBkbGxzL2tlcm5lbC9tZXNzYWdlcy8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9tZXNzYWdlcy93aW5lcnJfZW51Lm1jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9sc3RyLmM6CglEYXZlIFBpY2tsZXMgPGRhdmVwQGN5dy51a2xpbnV4Lm5ldD4KCUltcHJvdmVkIEZvcm1hdE1lc3NhZ2U6CgktIEFkZGVkIGZ1bGwgc3VwcG9ydCBmb3IgRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0KCS0gSW1wbGVtZW50ZWQgbGFuZ3VhZ2Ugc2VhcmNoIGFzIGRvY3VtZW50ZWQKCS0gSWxsZWdhbCBjb21iaW5hdGlvbnMgb2Ygb3B0aW9ucyB0cmFwcGVkLgoJLSBNZXNzYWdlIHRhYmxlIGZvciBzeXN0ZW0gbWVzc2FnZXMgYWRkZWQuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNb3ZlZCBGT1JNQVRfTUVTU0FHRSBmbGFncyBkZWZpbml0aW9uIHRvIHdpbmJhc2UuaC4KCgkqIE1ha2UucnVsZXMuaW46CglBZGRlZCBydWxlcyBmb3IgbWVzc2FnZSBjb21waWxlciAubWMgZmlsZXMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd3NvY2szMi9zb2NrZXQuYywgZGxscy93c29jazMyL3dzY29udHJvbC5oOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJUG9ydGFiaWxpdHkgZml4ZXMuCgoJKiBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLnNwZWMsIG1pc2MvY29tbS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3Jhc2FwaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3JwY3J0NC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zZXJpYWx1aS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9zZXR1cHguYXBpOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBBUEkgZmlsZXMgdXBkYXRlLgoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyYy5tYW46CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBJbXBsZW1lbnRlZCBhIGJ1Zy13b3JrLWFyb3VuZCBmb3IgQmVya2VsZXkgeWFjYyAoYnlhY2MpIHdoaWNoCgkgIGRvZXMgbm90IGdlbmVyYXRlIHByb3BlciBkZWZhdWx0IHRyYW5zaXRpb24gcnVsZXMgZm9yIG5vbi10ZXJtaW5hbHMuCgkgIFNlZSBjb21tZW50cyBpbiBwYXJzZXIueSBob3cgdGhlIGZpeCB3b3Jrcy4KCS0gQ2hhbmdlZCB0aGUgZXJyb3ItbGluZS9jaGFyIHBvc2l0aW9uIHRvIG1ha2UgZW1hY3MgaGFwcHkgcGFyc2luZwoJICB0aGUgcG9zaXRpb24gb2YgdGhlIGVycm9yLgoJLSBBZGRlZCBjb21tZW50cyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBpbiB3aGljaCBvcmRlciB0aGUgbGluZS1udW1lcgoJICBhbmQgY2hhcmFjdGVyLXBvc2l0aW9uIG9mIHRoZSBlcnJvciBpcyB3cml0dGVuLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSBsY2FsbCBvcGNvZGVzLCBzbyBhbGwgZ2FzLWVzIHVuZGVyc3RhbmQgaXQuLi4KCgkqIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvZmxhdHRodW5rLmgsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvdzMyc2NvbWIuYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi91dHRodW5rLmMsIHJlbGF5MzIvd293dGh1bmsuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvb3JkaW5hbHMuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2ZsYXR0aHVuay5oLCBkbGxzL2tlcm5lbC9rZXJuZWxfbWFpbi5jLCBkbGxzL2tlcm5lbC90aHVuay5jLCBkbGxzL2tlcm5lbC91dHRodW5rLmMsIGRsbHMva2VybmVsL3dvd3RodW5rLmMsIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCU1vdmVkIHRodW5raW5nIGZ1bmN0aW9ucyBvZmYgdG8ga2VybmVsMzIuZGxsLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9zZWMuYywgbWVtb3J5L01ha2VmaWxlLmluLCBtZW1vcnkvcmVnaXN0cnkuYzoKCVRlbXBvcmFyaWx5IG1vdmVkIGFkdmFwaTMyIHJlZ2lzdHJ5IHN1cHBvcnQgYmFjayBpbnRvIGxpYndpbmUuc28sIGFuZAoJbWFkZSBhZHZhcGkzMiBhIHNlcGFyYXRlIGRsbC4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWZpeGVkIGEgbnVtYmVyIG9mIGxvbmcgc3RhbmRpbmcgYnVnczoKCSAgICAtIHNlZ21lbnRlZCBleHByZXNzaW9ucyBkaWRuJ3QgZGlzcGxheSBjb3JyZWN0bHkKCSAgICAtIHVzaW5nIGR5bmFtaWMgc2l6ZSBhcnJheSBmb3IgbmVzdGVkIHR5cGVzIHBhcnNpbmcKCSAgICAtIGNvcnJlY3QgZGlzcGxheSBvZiBzb3VyY2UgY29kZSBhZnRlciBhIGNyYXNoCglmYWN0b3JpemVkIHNvbWUgY29kZQoKCSogZGxscy9nZGkvd2luZy5jLCBkbGxzL2dkaS93aW5nLnNwZWMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbjoKCU1lcmdlZCB3aW5nLmRsbCBpbnRvIGdkaTMyLmRsbC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglQcmV2ZW50IHRoZSBhdHRlbXB0IHRvIGRyYXcgaW52YWxpZCBpbWFnZSBpbmRleGVzLgoJUHJvdmlkZSB0aGUgdHdvIHBpeGVsIGJ1ZmZlciBiZXR3ZWVuIHRoZSBpbWFnZSBhbmQgdGhlIGxhYmVsLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9jb25ucHQuYywgZGxscy9vbGVhdXQzMi9jb25ucHQuaDoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCUEgZ2VuZXJpYyBpbXBsZW1lbnRpb24gb2YgSUNvbm5lY3Rpb25Qb2ludC9JRW51bUNvbm5lY3Rpb25zLgoKCSogdG9vbHMvZm50MmJkZi5jLCB0b29scy9mbnQyYmRmLmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNYWtlIGZudDJiZGYgcHJvZHVjZSBjb3JyZWN0IGZvbnRzLgoKCSogbXNkb3MvaW50MTYuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWtlIGludDE2IHJlYWQgZnJvbSB0aGUgQklPUyBrZXlib2FyZCBidWZmZXIsIG5vdCBkaXJlY3RseSBmcm9tIHRoZQoJY29uc29sZSBkcml2ZXIuCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYnJva2VuIGFzc2VtYmxlci4gUmVtb3ZlZCBzdXBwb3J0IGZvciBvbGQgcHJvdGVjdGVkLW1vZGUgaGFjawoJZm9yIHJ1bm5pbmcgcmVhbC1tb2RlIGNvZGUgb24gcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCB2bTg2OyB0aGUKCWN1cnJlbnQgQ2FsbFJNLT5STUNCIHNob3J0Y3V0IGNvZGUgc2hvdWxkIHRha2UgY2FyZSBvZiBhbGwKCVdpbmUtc3VwcGxpZWQgUk0gQVBJcyAoc3VjaCBhcyBET1NBU1BJKSBhbnl3YXkuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYzoKCVBlcmZvcm0gTkVfSW5pdFByb2Nlc3MgaW4gdGhlIGNvbnRleHQgb2YgdGhlIG5ldyB0YXNrLgoKMjAwMC0wNy0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9kcml2ZXIuYywgZGxscy9tc2FjbS9maWx0ZXIuYywgZGxscy9tc2FjbS9mb3JtYXQuYywgZGxscy9tc2FjbS9pbnRlcm5hbC5jLCBkbGxzL21zYWNtL21zYWNtMzIuc3BlYywgZGxscy9tc2FjbS9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbS9zdHJlYW0uYywgZGxscy9tc2FjbS93aW5lYWNtLmgsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvd2luODdlbS5jLCBkbGxzL2tlcm5lbC93aW44N2VtLnNwZWMsIGRsbHMva2VybmVsL3dpbmRlYnVnLmMsIGRsbHMva2VybmVsL3dpbmRlYnVnLnNwZWM6CglNZXJnZWQgbXNhY20gYW5kIG1zYWNtMzIgZGxscy4KCU1lcmdlZCB3aW44N2VtIGFuZCB3aW5kZWJ1ZyBpbnRvIGtlcm5lbDMyLmRsbC4KCjIwMDAtMDctMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9wcm9nbWFuL2dyb3VwLmMsIHByb2dyYW1zL3Byb2dtYW4vZ3JwZmlsZS5jLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dyYW0uYywgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCBwcm9ncmFtcy93aW5oZWxwL2hscDJzZ21sLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBpbnQvSEFORExFIG1pc21hdGNoZXMgcmV2ZWFsZWQgYnkgLURTVFJJQ1QuCglSZXBsYWNlZCB0aGUgV2luMTYgaG1lbWNweTE2IChvYnNvbGV0ZSkgd2l0aCBtZW1jcHkuCgoJKiBwcm9ncmFtcy9wcm9nbWFuL21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgV2luTWFpbidzIHNpZ25hdHVyZS4KCVJlcGxhY2VkIHRoZSBXaW4xNiBobWVtY3B5MTYgKG9ic29sZXRlKSB3aXRoIG1lbWNweS4KCVJlbW92ZWQgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byB0aGUgTGFuZ3VhZ2VzIGFycmF5LgoKCSogcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5jLCBwcm9ncmFtcy9wcm9nbWFuL3N0cmluZy5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gdGhlIExhbmd1YWdlcyBhcnJheS4KCgkqIHByb2dyYW1zL2Nsb2NrL21haW4uYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgV2luTWFpbidzIHNpZ25hdHVyZS4KCUZpeGVkIHBhcmFtZXRlciBvcmRlciBmb3IgdGhlIGNhbGwgdG8gQ3JlYXRlV2luZG93LgoKCSogbGlidGVzdC9oZWxsby5jLCBsaWJ0ZXN0L2hlbGxvMi5jLCBsaWJ0ZXN0L2hlbGxvMy5jLCBsaWJ0ZXN0L2hlbGxvNC5jLCBsaWJ0ZXN0L2hlbGxvNS5jLCBsaWJ0ZXN0L25ldy5jLCBsaWJ0ZXN0L3JvbGV4LmMsIGxpYnRlc3QvdmFydGVzdC5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvd2ludmVyL3dpbnZlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBXaW5NYWluJ3Mgc2lnbmF0dXJlLgoKCSogcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBsaWJ0ZXN0L01ha2VmaWxlLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCAtRFNUUklDVC4KCUFkZGVkIG1pc3NpbmcgbGlicmFyaWVzIGNvbWN0bDMyIGFuZCBycGNydDQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93czJfMzIuc3BlYywgZGxscy93c29jazMyL3NvY2tldC5jLCBkbGxzL3dzb2NrMzIvd3Njb250cm9sLmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglBZGRzIGFuIGluaXRpYWwgV1NBSW9jdGwgZnVuY3Rpb24gd2l0aCBzdXBwb3J0IGZvciBvbmx5IHRoZQoJU0lPX0dFVF9JTlRFUkZBQ0VfTElTVCBjb21tYW5kLiAgQWRkcyBpbml0aWFsIGNvZGUgdG8gV3NDb250cm9sCglmdW5jdGlvbiB0byBzdXBwb3J0IHRoZSBXU0NOVExfVENQSVBfUVVFUllfSU5GTyBjb21tYW5kLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29tcGlsYXRpb24gZml4ZXMgZm9yIE9wZW5HTC4KCgkqIE1ha2UucnVsZXMuaW46IE1pa2VfTWNDb3JtYWNrQGxvb2tzbWFydC5jb20uYXUKCUNvcnJlY3RlZCBjMm1hbiBmbGFncy4gSXQgc3RpbGwgY3Jhc2hlcyBhbnlob3cgOi0vCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRGV0ZWN0IGJyb2tlbiBnbGV4dC5oIGhlYWRlcnMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmg6CglNaWtlX01jQ29ybWFja0Bsb29rc21hcnQuY29tLmF1CglBZGRlZCBzb21lIGJhc2ljIHRleHQgZGlzcGxheSBhbmQgZWRpdGluZyBjYXBhYmlsaXRpZXMsIGN1cnNvcgoJcG9zaXRpb25pbmcsIGEgYml0IG9mIHNjcm9sbGluZyBhbmQgYSB0ZXh0IGZpbGUgbG9hZGVyLgoKCSogaW5jbHVkZS90YXBpLmg6IE1pa2VfTWNDb3JtYWNrQGxvb2tzbWFydC5jb20uYXUKCUltcGxlbWVudGVkIGxpbmVHZXRDb3VudHJ5LiAod29ya3Mgd2l0aCBIeXBlclRybS5leGUpCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywgZGxscy9jb21tZGxnL2NkbGdfQ3MucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRmkucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19IdS5yYywgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Lby5yYywgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsIGRsbHMvY29tbWRsZy9jZGxnX05vLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRm9jdXMgaGFuZGxpbmcsIHZpc3VhbCBjaGFuZ2VzICsgbWlzYyBmaXhlcy4KCgkqIGRsbHMvdGFwaTMyL2xpbmUuYzogTWlrZV9NY0Nvcm1hY2tAbG9va3NtYXJ0LmNvbS5hdQoJSW1wbGVtZW50ZWQgbGluZUdldENvdW50cnkuICh3b3JrcyB3aXRoIEh5cGVyVHJtLmV4ZSkKCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgZHVwbGljYXRlIGRlY2xhcmF0aW9uIG9mIEFkZEFjY2Vzc0FsbG93ZWRBY2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBmdW5jdGlvbiBTZXRJdGVtIGlzIGNhbGxlZCB0byBzZWxlY3QgYW4gaXRlbQoJb3Igc2V0IGl0cyBmb2N1cy4KCgkqIGRsbHMvZGRyYXcvZDNkbGlnaHQuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgaW5jbHVkZS9kM2R0eXBlcy5oLCBpbmNsdWRlL2QzZHZlYy5pbmw6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCUFkZGVkIGEgZmV3IEMrKyBvcGVyYXRvcnMgdG8gRGlyZWN0M0Qgc3RydWN0dXJlcywgYW5kIG1hZGUgc29tZSB1bmlvbnMKCSduYW1lbGVzcycuCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW5zdXJlZCB0aGF0IGFsbCBwYXJhbWV0ZXJzIG9mIGFzeW5jIGZ1bmN0aW9ucyBhcmUgY29waWVkIGJlZm9yZQoJcmV0dXJuaWcgZnJvbSByZXF1ZXN0LgoKCSogY29udHJvbHMvc2Nyb2xsLmMsIGRvY3VtZW50YXRpb24vZGlzdHJpYnV0b3JzLCBkb2N1bWVudGF0aW9uL3gxMWRydiwgdG9vbHMvd2luZWNvbmY6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeCBhIGZldyB0eXBvcyBhbmQgc3VjaC4KCgkqIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZGRyYXcuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJQWRkZWQgc29tZSBEaXJlY3REcmF3Ny1yZWxhdGVkIGRlZmluaXRpb25zLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1ha2Ugbm9uLWV4aXN0ZW5jZSBvZiAoZilsZXggYW4gZXJyb3IuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvZGdhLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUvbWFpbi5jLCBkbGxzL2RkcmF3L2RwYWxldHRlL3gxMS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJRGlyZWN0RHJhdyxJRGlyZWN0RHJhdzIsSURpcmVjdERyYXc0IGZpeGVkIHVwIGluIHJlZ2FyZCB0byBDT00gdXNhZ2UuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhIGZldyBXaW4zMiBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvd2luc3Bvb2wuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZWR1Y2Ugc2NvcGUgb2YgIlN0YXR1cyIgI2lmZGVmIGhhY2suCgoJKiBpZjE2MzIvcmVsYXkuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2F5IHRoYXQgIk5vIGhhbmRsZXIiIG1lc3NhZ2VzIGFzIGZhdGFsLgoKCSogd2luZWRlZmF1bHQucmVnOiBGaXhlZCBTaGFyZWREaXIgbG9jYXRpb24uCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG1zZG9zL2RwbWkuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpbmNsdWRlL3dpbm50Lmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoYW5nZSB0aGUgVjg2QkFTRSBtYWNybyB0byBjYWxsIERPU01FTV9NZW1vcnlCYXNlKCkgaW5zdGVhZCBvZiB1c2luZwoJdGhlIHVnbHkgRHI3IGhhY2suCgoJKiBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZpcnN0IHNlZWsgb24gTUVNIG1taW8gZmlsZXMuCgoJKiBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW1vdmUgY2FsbHMgdG8gRElBTE9HX0RvRGlhbG9nQm94IGFuZCBESUFMT0dfQ3JlYXRlSW5kaXJlY3QuCgoJKiBkbGxzL3dpbmluZXQvaHR0cC5jOgoJSm9obiBSLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJQWRkIGEgZmV3IG1vcmUgZmllbGRzIHRvIEhUVFBfR2V0U3RkSGVhZGVySW5kZXgoKSBhbmQgZml4IHNvbWUgdHlwb3MuCgoJKiBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCVB1dCB0aGUgVVJMIHBhcmFtZXRlciBsaXN0IGluIHdpdGggdGhlIFVSTCBwYXRoIGlmIHRoZSBFeHRyYUluZm8KCWJ1ZmZlciBpc24ndCBzcGVjaWZpZWQuCgoJKiBjb250cm9scy9pY29udGl0bGUuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4ZWQgY2FsY3VsYXRpb24gb2YgYnVmZmVyIGxlbmd0aCBhZnRlciBzd2l0Y2ggb2Ygd2luZG93IHRleHQgdG8KCXVuaWNvZGUuCgoJKiBkZWJ1Z2dlci9tZW1vcnkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDb21tZW50IG91dCBhIG5vbmZ1bmN0aW9uYWwgRE9TIHBhcnQgb2YgZGVidWdnZXIuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaTMyLnNwZWM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHN0dWIgZm9yIFJhc0hhbmdVcEEoKS4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRGVmV2luZG93UHJvYyBzaG91bGQgcGFzcyB1bmhhbmRsZWQgV01fTU9VU0VXSEVFTCB0byBwYXJlbnQsIGFjY29yZGluZwoJdG8gZG9jdW1lbnRhdGlvbi4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgZmV3IHByb2JsZW1zLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJLSBDaGFuZ2VkIHRoZSB0ZW1wb3JhcnkgYnVmZmVyIGZvciBsb2FkaW5nIHJlc291cmNlcyBmcm9tIDI1NiB0byA1MTIKCS0gRGVmaW5lIE1BWF9SRVNPVVJDRV9TVFJJTkdfTEVOR1RIIGluc3RlYWQgb2YgdXNpbmcgaXQgbWFnaWNhbGx5IHRocm91Z2hvdXQKCSAgdGhlIGZ1bmN0aW9uCgktIFVzZSBsc3RyY3B5blcgaW5zdGVhZCBvZiBsc3RyY3B5VwoKMjAwMC0wNy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOgoJUmVsZWFzZSAyMDAwMDcxNi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wNy0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJQWRkZWQgYXNzZW1ibHkgd3JhcHBlciBmb3IgY2FsbGluZyB3aW5kb3cgcHJvY2VkdXJlcy4KCgkqIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglHZXQgZnVsbCBwYXRoIG9mIGFyZ3ZbMF0gYmVmb3JlIHdlIGNoYW5nZSBkaXJlY3Rvcmllcy4KCU1ha2Ugc3VyZSBwcm9jZXNzIG5hbWVzIGFyZSBsb25nIHBhdGggbmFtZXMuCglDbGVhbmVkIHVwIGluaXRpYWxpc2F0aW9uIGEgYml0LgoKCSogc2VydmVyL3NvY2suYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW4gc2V0X3NvY2tldF9ldmVudCwgdGhlIGV2ZW50IHNob3VsZCBiZSBzaWduYWxlZCBpZiB0aGVyZSdzIGEgcGVuZGluZwoJbmV0d29yayBldmVudCBjb3JyZXNwb25kaW5nIHRvIHRoZSBldmVudHMgdGhlIGFwcGxpY2F0aW9uIHdhbnRlZCB0byBiZQoJbm90aWZpZWQuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgbG9hZGVyL3Rhc2suYywgd2luZG93cy9jbGFzcy5jLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGRsbHMvb2xlYXV0MzIvb2xlcGljdHVyZS5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZGl0LmMsIGRsbHMvcnBjcnQ0L3JwY3J0NF9tYWluLmMsIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJU3BlbGxpbmcgZml4ZXMuCgoJKiBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgdG9vbHMvd2luZWluc3RhbGwsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvd2ludXNlci5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglEb2MgYW5kIHRyYWNlIHVwZGF0ZXMuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcmFuc21pdCBjdXJyZW50IGRpcmVjdG9yeSBzZXR0aW5ncyB0byBuZXdseSBjcmVhdGVkIHByb2Nlc3Nlcy4KCgkqIGRvY3VtZW50YXRpb24vaW5zdGFsbGF0aW9uLXVuZC1rb25maWd1cmF0aW9uLmdlcm1hbjoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUFkZGVkIEdlcm1hbiBpbnN0YWxsYXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gbWFudWFsLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCVJhdWwgRmVybmFuZGVzIDxyZ2ZAaWVnLmNvbS5icj4KCUFkZGVkIEJyYXppbGlhbiBrZXlib2FyZC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXQgY2xpcHBpbmcgcmVnaW9uIHRvIGNsaWVudCB3aW5kb3cgYmVmb3JlIG93bmVyLWRyYXduIHBhaW50aW5nLgoKCSogd2luZWRlZmF1bHQucmVnOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCB0aGUgIlNoYXJlZERpciIgcmVnaXN0cnkga2V5LgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9kZHJhdy9kM2RfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21lc2EuYywgZGxscy9kZHJhdy9kM2RtYXRlcmlhbC5jLCBkbGxzL2RkcmF3L2QzZHRleHR1cmUuYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWVzYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBkbGxzL2RkcmF3L21lc2EuYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy94MTFfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4IERpcmVjdDNEIHN1cHBvcnQgYW5kIGEgbG90IG9mIHdhcm5pbmdzCgktIGFkZCBzdXBwb3J0IGZvciBERHJhdyBpbiBhIHdpbmRvdyAobm90IG9wdGltaXplZCB5ZXQpCgktIGNsZWFucyB1cCBPcGVuR0wgZXh0ZW5zaW9ucyBoYW5kbGluZyBmb3IgRDNECgoJKiBjb250cm9scy9zdGF0aWMuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglCYWNrZ3JvdW5kIG9mIFNTX1NJTVBMRSBzdGF0aWMgY29udHJvbCBpcyBub3QgZmlsbGVkICh1bmxlc3MgaXQgaGFzCglTU19OT1BSRUZJWCB0b28pLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURyb3AgVU5JWCBjd2QgdG8gLyBhZnRlciBjYWxjdWxhdGluZyBXSU5FIGN1cnJlbnQgZGlyZWN0b3J5ICh0byBhbGxvdwoJQ0QgdW5tb3VudHMpLgoKMjAwMC0wNy0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJTmV3IHZlcnNpb24gb2YgdGhlIHBhdGNoIGZyb20gRnJhbmNvaXMgSmFjcXVlcyB3aXRoIGEgbW9kaWZpY2F0aW9uIG9mCglteSBvd24gdGhhdCBtYWtlcyBldmVyeWJvZHkgaGFwcHkgOi0pCgoJKiBtaXNjL2NvbW0uYywgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSG9vayBzZXJpYWx1aSBkbGwgaW50byBleGlzdGluZyBjb21tIGZ1bmN0aW9ucy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3NlcmlhbHVpLy5jdnNpZ25vcmUsIGRsbHMvc2VyaWFsdWkvTWFrZWZpbGUuaW4sIGRsbHMvc2VyaWFsdWkvY29uZmRsZy5jLCBkbGxzL3NlcmlhbHVpL3NlcmlhbHVpLmgsIGRsbHMvc2VyaWFsdWkvc2VyaWFsdWkuc3BlYywgZGxscy9zZXJpYWx1aS9zZXJpYWx1aV9yYy5yYzoKCU1pa2UgTWNDb3JtYWNrIDxtaWtlX21jY29ybWFja0Bsb29rc21hcnQuY29tLmF1PgoJSW1wbGVtZW50ZWQgc2VyaWFsdWkgZGxsIGNvbnRhaW5pbmcgQ29tbUNvbmZpZ0RpYWxvZywKCUdldERlZmF1bHRDb21tQ29uZmlnIGFuZCBTZXREZWZhdWx0Q29tbUNvbmZpZy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3dpbmFzcGkvYXNwaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zZXR1cGFwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93czJfMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGVzIGZpeGVzLgoJLSBNaW5vciBidWcgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUFsbCBzdGFuZGFyZCB3aW5kb3cgY29udHJvbHMgc2hvdWxkIGhhdmUgQ1NfUEFSRU5UREMsIGJ1dCBzaG91bGQgc3RpbGwKCWNsaXAgdG8gdGhlIGNvbnRyb2wgd2luZG93LgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglKb2huIFIgLiBTaGVldHMgPGpzaGVldHNAY29kZXdlYXZlcnMuY29tPgoJV2UgYWxzbyBoYXZlIHRvIHZhbGlkYXRlIHRoZSBmcmFtZSB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wIHdoZW4gdGhlCglhcHAgZG9lc24ndCBjYWxsIEJlZ2luUGFpbnQuCgoJKiBzY2hlZHVsZXIvaGFuZGxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUV4dGVuZCB0aGUgV1NPQ0szMiB3YXJuaW5nIGluIGNlcnRhaW4gZnVuY3Rpb25zIHRvIG1lbnRpb24gV1MyXzMyIHRvby4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taXhlci5jOgoJRWQgU25vdyA8ZWRfc25vd0B0dG1lbmdpbmVlcmluZy5jb20+CglGaXhlcyB1bm11dGluZyB3aGVuIHVubXV0ZWQuCglVbmlmaWVzIHNjYWxlIHJlcG9ydGVkIHdpdGggc2NhbGUgdXNlZCBmb3Igdm9sdW1lIGNvbnRyb2wuCglIYWNrIGZvciBCYXNzL1RyZWJsZSB1bnRpbCBiZXR0ZXIgZml4IGlzIGNvbXBsZXRlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgREJDUy91bmljb2RlIGVuY29kaW5nIHRlbXBsYXRlcy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJRG9uJ3QgY2xlYXIgc2VsZWN0aW9uIHdoZW4gaW5pdGlhbCBlbnRyeSBpcyBub3QgaW4gdGhlIGxpc3QuCgoJKiBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG1pc2Mvb3B0aW9ucy5jLCBvbGUvb2xlMm5scy5jOgoJTWFkZSAtLWxhbmd1YWdlIGJlaGF2ZSB0aGUgc2FtZSBhcyBzZXR0aW5nIHRoZSBMQU5HVUFHRSBlbnZpcm9ubWVudAoJdmFyaWFibGUuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9ycGNydDQvLmN2c2lnbm9yZSwgZGxscy9ycGNydDQvTWFrZWZpbGUuaW4sIGRsbHMvcnBjcnQ0L3JwY3J0NC5zcGVjLCBkbGxzL3JwY3J0NC9ycGNydDRfbWFpbi5jLCBpbmNsdWRlL3JwYy5oLCBpbmNsdWRlL3d0eXBlcy5oLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglIdXcgRCBNIERhdmllcyA8aGRhdmllc0Bjb2Rld2VhdmVycy5jb20+CglDcmVhdGUgcnBjcnQ0LmRsbC4KCUltcGxlbWVudCBVdWlkQ3JlYXRlICh1c2luZyBleGlzdGluZyBjb2RlIGZyb20gQ29DcmVhdGVHdWlkKS4KCUNvQ3JlYXRlR3VpZCBjYWxscyBVdWlkQ3JlYXRlLgoKCSogbWVtb3J5L2hlYXAuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXggZm9yIHN1cHBvcnRpbmcgREJDUy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJUm9iIEZhcm51bSA8cmZhcm51bUBtaW5kc3ByaW5nLmNvbT4KCUlnbm9yZSBpQml0bWFwIHdpZHRoIHdoZW4gZHJhd2luZyBmbGF0IHRvb2xiYXIuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJRml4ZWQgYSBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiB0aGUgUEUgbG9hZGVyLgoKCSogd2luZG93cy93aW5wb3MuYzoKCUplYW4tQ2xhdWRlIEJhdGlzdGEgPGpjYkBtYWNhZGFtaWFuLmNvbT4KCUVuc3VyZSB0aGUgdmFsaWRpdHkgb2YgaE9sZEZvY3VzIGJlZm9yZSBjYWxsaW5nIFdJTl9HZXRUb3BQYXJlbnQuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCURyZXcgUm9ubmViZXJnIDxkcmV3QGNvZG9uLnByaW5jZXRvbi5lZHU+CglJZ25vcmUgYnJva2VuIGZvbnRzIHdoZW4gYnVpbGRpbmcgY2FjaGUgZmlsZS4KCgkqIHdpbmRvd3Mvd2luLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWxsb3cgU2V0V2luZG93TG9uZyguLi4gR1dMX1NUWUxFKSB0byBjaGFuZ2UgdmlzaWJsZSBiaXQuCgoJKiBkb2N1bWVudGF0aW9uL3JlZ2lzdHJ5OgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+RAoJVGV4dCBvZiBXV04gYXJ0aWNsZSAiVGhlIFJlZ2lzdHJ5Ii4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmg6CglEYXZpZCBFbGxpb3R0IDxkZmVAaW5maW5pdGUtaW50ZXJuZXQubmV0PgoJLSBOZXcgZnVuY3Rpb24gaW4gYXNwaS5jIFNDU0lfRml4X0NNRF9MRU4gd2hpY2ggZGV0ZXJtaW5lcyBpZiBMaW51eCBpcwoJICBndWVzc2luZyB0aGUgY29tbWFuZCBsZW5ndGggY29ycmVjdGx5LCBhbmQgaWYgbm90LCB0ZWxsJ3MgaXQgd2hhdCdzIHVwLgoJLSBDaGFuZ2VkIHN0cmNhdCB0byBzdHJjcHkgaW4gU2VuZEFTUEkzMkNvbW1hbmQgdG8gYXZvaWQgcmVxdWlyaW5nIHRoZQoJICBjYWxsZXIgdG8gY2xlYXIgdGhlIGZpZWxkcy4KCS0gQWRkZWQgYSBuZXcgZmllbGQgdG8gSEFfVW5pcXVlIGNvbnRlbnQgdG8gZml4IHNvbWUgYXBwbGljYXRpb25zLiAgV2lsbAoJICBmaXggdGhpcyBmb3IgZ29vZCBhdCBhIGxhdGVyIGRhdGUuCgktIEFkZGVkIFRSQUNFIHRvIEdldEFTUEkzMkRMTFZlcnNpb24gKGFuZCBGSVhNRSB3aGVuIG5vdCBydW5uaW5nIHVuZGVyCgkgIExpbnV4KQoJLSBBZGRlZCBzb21lIGNvbnN0YW50cyB0byB3aW5lc2NzaS5oCgkod2l0aCB0aGUgaGVscCBvZiBCZXJuZCBCZXJuaWUgTWV5ZXIgPGJtZXllckBjcy5tb25hc2guZWR1LmF1PikKCgkqIGRsbHMvdXNlci91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglTdHVicyBmb3IgQ3JlYXRlRGVza3RvcEEgYW5kIEVudW1EZXNrdG9wV2luZG93cy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgd3MyXzMyIGxvYWRvcmRlci4KCgkqIHRvb2xzL3dpbmVidWlsZC9tYWluLmM6CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglUcnkgdG8gdW5saW5rIG91dHB1dCBmaWxlIGJlZm9yZSBvcGVuaW5nIGl0LgoKCSogY29udHJvbHMvZWRpdC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCAlcyBieSAlcCBpbiBFRElUX1dNX1NldFRleHQuCgoJKiBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIFdTQVdhaXRGb3JNdWx0aXBsZUV2ZW50cyAoYWxpYXMgdG8gV2FpdEZvck11bHRpcGxlT2JqZWN0c0V4KS4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFkZCBhIHdhcm5pbmcgd2hlbiB0aGUgbm9ybWFsIGxvYWQgYWRkcmVzcyBmb3IgYSB3aW4zMiBwcm9ncmFtIGlzIG5vdAoJYXZhaWxhYmxlLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9vbGVwaWN0dXJlLmMsIGRsbHMvb2xlYXV0MzIvc3R1YnMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoZGF2aWVzQGNvZGV3ZWF2ZXJzLmNvbT4KCU9MRSBwaWN0dXJlIG9iamVjdCBpbXBsZW1lbnRhdGlvbi4KCgkqIG1pc2MvY29tbS5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBhbiBpbmNvcnJlY3QgZm9ybWF0IHN0cmluZy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgbG9hZG9yZGVyIGVudHJ5IGZvciB0aGUgTGludXggZ2xpZGUzeCBsaWJyYXJ5LgoKCSogd2luZWRlZmF1bHQucmVnOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgIkNvbW1vbkZpbGVzRGlyIj0iQzpcUHJvZ3JhbSBGaWxlc1xDb21tb24gRmlsZXMiLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUFkZGVkIFBlbnRpdW0gUHJvLzIvMy80IGNvbmRpdGlvbmFsIG1vdmUgaW5zdHJ1Y3Rpb25zLgoKMjAwMC0wNy0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMva2VybmVsL2tlcm5lbF9tYWluLmMsIG1lbW9yeS9jb2RlcGFnZS5jOgoJU2V0IGFuc2kvb2VtL21hYyBjb2RlIHBhZ2VzIGZyb20gY3VycmVudCBsb2NhbGUuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUJldHRlciBlcnJvciBtZXNzYWdlIGZvciByZWFsbHkgY2x1ZWxlc3MgbmV3Ymllcy4KCgkqIGRsbHMvbXNhY20zMi9tc2FjbTMyX21haW4uYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCVN0dWIgZm9yIHRoZSBBQ01fTUVUUklDX01BWF9TSVpFX0ZPUk1BVCBjb21tYW5kIG9mIGFjbU1ldHJpY3MuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgZm9yIE5VTEwgZmxpcGNoYWluIGFuZCBqdXN0IHJldHVybiB0aGUgY3VycmVudCBzdXJmYWNlIGlmIGl0CgloYXBwZW5zLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIF92c25wcmludGYgYnkgY2FsbGluZyB3dnNucHJpbnRmQS4KCgkqIG9iamVjdHMvZGliLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUluIENyZWF0ZURJQlNlY3Rpb24gZnVuY3Rpb24sIGlmIGhkYyBpcyBOVUxMIGl0IG5vdyB1c2VzIHRoZSBkZXNrdG9wIERDCglpbnN0ZWFkIG9mIGZhaWxpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4ZWQgVE9PTEJBUl9EcmF3U3RyaW5nKCkgdG8gb2Zmc2V0IGJ1dHRvbiB0ZXh0IGlmIGluZm9QdHItPmhpbWxEZWYKCWlzIG5vbi16ZXJvLiAgQmV0dGVyIGZpeCB0aGFuIG15IHByZXZpb3VzIHBhdGNoLgoKMjAwMC0wNy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzoKCUxhenkgaW5pdGlhbGlzYXRpb24gb2YgdGhyZWFkIGxvY2FsZS4KCgkqIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuaCwgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4X21lc3NhZ2VzLmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9tZXNzYWdlcy5oLCBkbGxzL2RwbGF5eC9kcGxheXhfcXVldWUuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5LCBpbmNsdWRlL2RwbG9iYnkuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIE1ha2UgcmVmIGNvdW50aW5nIGEgbGl0dGxlIG1vcmUgZWZmaWNpZW50CgktIENvcnJlY3Qgc3VzcGVuZGVkIHByb2Nlc3MgcmVzdW1wdGlvbgoJLSBEb24ndCB1c2Ugc3lzL3F1ZXVlLmggYW55bW9yZQoJLSBQcm9wZXJseSBpbml0aWFsaXplIHRoZSBnbG9iYWwgc2VtYXBob3JlIGFjcm9zcyBwcm9jZXNzZXMKCS0gQ3JlYXRlIGEgbWFwcGVkIGZpbGUgZm9yIHNoYXJlZCBkYXRhIHN0cnVjdHVyZXMKCS0gQ2hhbmdlIHNvbWUgdHJhY2UgbWVzc2FnZXMKCS0gQWxsb2NhdGUgZHluYW1pYyBzaGFyZWQgZGF0YSBmcm9tIHRoZSBtYXBwZWQgZmlsZQoJLSBSZXdvcmsgc2V0dGluZyBhbmQgcmV0cmlldmluZyBsb2JieSBzZXR0aW5ncyBmcm9tIHNoYXJlZCBtZW1vcnkKCS0gQWRkIGluZnJhc3RydWN0dXJlIGZvciBzeW5jcm9uaXphdGlvbiBhZnRlciBhcHAgbGF1bmNoCgktIFNtYWxsIGRvY3VtZW50YXRpb24gdXBkYXRlCgktIEluY2x1ZGUgc29tZSBzdHVmZiBtaXNzaW5nIGZyb20gaGVhZGVyCgktIFN0YXJ0IG9uIGRwIGFuZCBkcGwgbWVzc2FnZSBpbmZyYXN0cnVjdHVyZQoJLSBVbmljb2RlIHZlcnNpb25zIG9mIHBsYXllci9ncm91cCBjb21tYW5kcyBhZGRlZAoJLSBDb21iaW5lZCBDb25uZWN0L0Nvbm5lY3RFeCBhbmQgT3Blbi9TZWN1cmVPcGVuCgktIE1vcmUgaW1wbGVtZW50YXRpb24KCgkqIGRsbHMva2VybmVsL25scy8qLCBkbGxzL2tlcm5lbC8uY3ZzaWdub3JlLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgZGxscy9rZXJuZWwvbG9jYWxlX3JjLnJjOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglNb3ZlZCBhbGwgTkxTIGRlcGVuZGVudCBkYXRhIHRvIHRoZSBLRVJORUwgcmVzb3VyY2VzLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglNb3ZlZCBzZXR0aW5nIHRoZSBsb2NhbGUgdmFsdWUgdG8gdGhlIHJpZ2h0IHBvc2l0aW9uLgoKCSogbWlzYy9sc3RyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgRm9ybWF0TWVzc2FnZVtBfDE2XSBhZ2FpbnN0IHNvbWUgYnVmZmVyIG92ZXJmbG93IGNhc2VzLgoKCSogZGVidWdnZXIvaW5mby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgZXh0cmFuZW91cyB0cmFjZSBtZXNzYWdlLgoKCSogZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVbmNvbmRpdGlvbm5hbGx5IHByaW50IG1lc3NhZ2VzIG9uIERMTCBsb2FkIGJyZWFrcG9pbnQuCgoJKiBkZWJ1Z2dlci9icmVhay5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCB3aW5lZGJnIHdhdGNocG9pbnRzLgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJUHJldmVudCBTeXNBbGxvY1N0cmluZyBhbmQgU3lzQWxsb2NTdHJpbmcxNiB0byBwZXJmb3JtIGFueSBwcm9jZXNzaW5nCglvbiBOVUxMIHN0cmluZ3MuCgoJKiB0b29scy9mbnQyYmRmLmM6CglTdGFzIFNlcmdlZXYgPHN0YXMub3JlbEBtYWlsY2l0eS5jb20+CglNYWtlIGl0IHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgZW5jb2Rpbmcgb2YgZm9udHMgZnJvbSB0aGUgY29tbWFuZAoJbGluZSwgZXZlbiBpZiBhdXRvZGV0ZWN0ZWQuCgoJKiB3aW5kb3dzL3NweS5jLCB3aW5kb3dzL3R0eWRydi93bmQuYywgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvc3RhdGljLmMsIGluY2x1ZGUvbWRpLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmUuaW5pOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglDb252ZXJ0IFdORC50ZXh0IGZpZWxkIHRvIFVuaWNvZGUuCglBZGQgbmV3IGtleSB0byB3aW5lLmluaSBpbiB0aGUgc2VjdGlvbiBbeDExZHJ2XSAtIFRleHRDUCwgd2hpY2ggbWVhbnMKCWNvZGUgcGFnZSB1c2VkIGZvciB0ZXh0cyBwYXNzZWQgdG8gWC4KCUFjY29yZGluZ2x5IGZpeCBoYW5kbGVycyBvZiBXTV9TRVRURVhUL1dNX0dFVFRFWFQuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEJhY2tlZCBvdXQgcHJldmlvdXMgcGF0Y2guCgoJKiBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL3VzZXIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3R1YiBmb3IgUmVnaXN0ZXJEZXZpY2VOb3RpZmljYXRpb25BLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGYWtlcyBhIG5lZ290aWF0aW9uIG9mIHRoZSB3aW5zb2NrIHZlcnNpb24uCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBiZXR0ZXIgbG9hZGluZyBvZiAqLnRsYiBmaWxlcwoJLSBzZXBlcmF0ZWQgY29kZSBmb3IgbG9hZGluZyB0bGIgcmVzb3VyY2UgaW50byBtZW1vcnkgZnJvbSBjb2RlIGZvcgoJICBwYXJzaW5nIHRoZSB0bGIgcmVzb3VyY2UuCgoJKiBkbGxzL29sZTMyL29sZTJzdHVicy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglJbXBsZW1lbnRlZCBPbGVDcmVhdGUuCgoyMDAwLTA3LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9jbGFzcy5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUdldENsYXNzSW5mbyBzaG91bGQgcmV0dXJuIGdsb2JhbCBjbGFzc2VzIGV2ZW4gaWYgdGhlIGhJbnN0YW5jZQoJcGFyYW1ldGVyIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgcGFzc2VkIHRvIHRoZSBSZWdpc3RlckNsYXNzCglmdW5jdGlvbi4KCgkqIG1pc2MvY29tbS5jOiBTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCUZpeGVzIHRoZSBCdWlsZENvbW1EQ0JBIGZ1bmN0aW9uLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIG1pc2MvcG9ydC5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3IgbGlidXRpbC5oLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCU1ha2UgdGhlIGZvY3VzIGZvbGxvdyB0aGUgbGFzdCBzZWxlY3RlZCBpdGVtIGZvciBtdWx0aXNlbGVjdCBsaXN0Ym94ZXMuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBMSGFzaFZhbE9mTmFtZVN5c0EuCglEb24ndCBjcmFzaCBpZiB3ZSBlbmNvdW50ZXIgYSBCU1RSIHdpdGggbGVuZ3RoIDw9IDAuCglGaXggdHlwb3MgaW4gSVR5cGVMaWI6OkdldERvY3VtZW50YXRpb24uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJV2l0aCBzb21lIGFwcHMgYSBmYXVsdCB3YXMgcG9zc2libGUgaW4gRXh0cmFjdEFzc29jaWF0ZWRJY29uLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglEYXZlIEhhd2tlcyA8ZGF2ZWgtd2luZUBjYWRsaW5rLmNvbT4KCUdldEljb25JbmZvIGRpZCBubyBjb3JyZWN0bHkgaWRlbnRpZnkgaWNvbnMgZnJvbSBjdXJzb3JzLgoKCSogd2luZG93cy9tc2dib3guYzoKCUhhaXRoZW0gSG1pZGEgPGhhaXRoZW1AbWFjYWRhbWlhbi5jb20+CglVbmRlciBXaW5kb3dzIDk1Lzk4L05ULCBtZXNzYWdlIGJveGVzIGRvIG5vdCBoYXZlIGEgZGVmYXVsdCBpY29uLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJRml4ZWQgbHN0cmNweW5BdG9XIHVzYWdlIChyZXBvcnRlZCBieSBTdGFzIFNlcmdlZXYpLgoJU21hbGwgY2xlYW51cHMuCgoJKiBkbGxzL3dzb2NrMzIvLmN2c2lnbm9yZSwgZGxscy93c29jazMyL01ha2VmaWxlLmluLCBkbGxzL3dzb2NrMzIvc29ja2V0LmMsIGRsbHMvd3NvY2szMi93c29jazMyLnNwZWMsIGRsbHMvZHBsYXkvLmN2c2lnbm9yZSwgZGxscy9kcGxheS9NYWtlZmlsZS5pbiwgZGxscy9kcGxheS9kcGxheS5zcGVjLCBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXkuc3BlYywgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL3dvdzMyLnNwZWMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hmb2xkZXIuc3BlYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgZGxscy9zaGZvbGRlci8uY3ZzaWdub3JlLCBkbGxzL3NoZm9sZGVyL01ha2VmaWxlLmluLCBkbGxzL3NoZm9sZGVyL3NoZm9sZGVyLnNwZWMsIGRsbHMvc2hsd2FwaS8uY3ZzaWdub3JlLCBkbGxzL3NobHdhcGkvTWFrZWZpbGUuaW4sIGRsbHMvc2hsd2FwaS9vcmRpbmFsLmMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpLnNwZWMsIGRsbHMvc2hsd2FwaS9zaGx3YXBpX21haW4uYywgZGxscy93aW5zb2NrLy5jdnNpZ25vcmUsIGRsbHMvd2luc29jay9NYWtlZmlsZS5pbiwgZGxscy93aW5zb2NrL3NvY2tldC5jLCBkbGxzL3dpbnNvY2svd3MyXzMyLnNwZWMsIGRsbHMvd2luc29jay93c29jazMyLnNwZWMsIGRsbHMvd293MzIvLmN2c2lnbm9yZSwgZGxscy93b3czMi9NYWtlZmlsZS5pbiwgZGxscy93b3czMi93b3czMi5zcGVjLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCUNyZWF0ZWQgc2VwYXJhdGUgbGlicmFyaWVzIGZvciBkcGxheSwgc2hmb2xkZXIsIHNobHdhcGksIHdvdzMyIGFuZAoJd3NvY2szMiBzbyB0aGF0IHdlIGhhdmUgYXQgbW9zdCBvbmUgV2luMzIgZGxsIGluIGVhY2ggLnNvIGxpYnJhcnkuCgoyMDAwLTA3LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJVXBkYXRlZCBYMTFEUlZfRElCX0dldERJQml0cyB0byBwcm9wZXJseSBoYW5kbGUgYm90dG9tLXVwIERJQnMKCW1hbmlwdWxhdGlvbi4KCUNvcnJlY3RlZCBYR2V0U3ViSW1hZ2UgYXJndW1lbnRzIG9yZGVyLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmg6CglNYXR0aGV3IExha2UgPE1MYWtlQHN1bmJlbHQtcGxiLmNvbT4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9zYWZlYXJyYXkuYywgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaDoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFNhZmVBcnJheUdldFZhclR5cGUuCglBZGRlZCBhIFZUX1JFQ09SRCB2YXJpYW50IHR5cGUgZGVmaW5pdGlvbi4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIG1pc2MvY29tbS5jOgoJU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglTdGFydGVkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBmdW5jdGlvbnMgR2V0RGVmYXVsdENvbW1Db25maWdBL1cuCgoJKiBkbGxzL2RkcmF3L2NvbnZlcnQuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglDb3JyZWN0ZWQgMjQtPjMyIGNvbnZlcnNpb24uIFN0aWxsIG9ubHkgY29ycmVjdCBmb3IgbGl0dGxlIGVuZGlhbi4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQ2hlY2sgZm9yIFdTX0RJU0FCTEVEIHBhcmVudCBpbiBXaW5kb3dGcm9tUG9pbnQgZm9yIHVuLW1hbmFnZWQgd2luZG93cy4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJUmVuYW1lIE1PRFVMRV9Jbml0RGxsIHRvIE1PRFVMRV9Jbml0RExMIGZvciB0aGUgc2FrZSBvZiBjb25zaXN0ZW5jeS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXhlZCBUT09MQkFSX0RyYXdTdHJpbmcoKSB0byBvZmZzZXQgYnV0dG9uIHRleHQgaWYgdGhlIGhpbWwgcGFyYW1ldGVyCglpcyBub24temVybyBvciB0aGUgZGVmYXVsdCBoaW1sLCBoaW1sRGVmLCBpcyBub24temVyby4gIEZpeGVzIGEgYnVnIGluCglXaW5aaXAgOC4wIHdoZXJlIHRleHQgaXMgbm90IHNoaWZ0ZWQgZG93biBieSB0aGUgaGVpZ2h0IG9mIHRoZSBidXR0b24KCWltYWdlLgoKCSogd2luZG93cy9kaWFsb2cuYzogU2xhdmEgTW9uaWNoIDxTbGF2YV9Nb25pY2hAY250LmNvbT4KCUNoZWNrIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBESUFMT0dfR2V0Q2hhclNpemUuCgoJKiBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zZXR1cGFwaS8uY3ZzaWdub3JlLCBkbGxzL3NldHVwYXBpL01ha2VmaWxlLmluLCBkbGxzL3NldHVwYXBpL3NldHVwYXBpLnNwZWMsIGRsbHMvc2V0dXBhcGkvc3R1YnMuYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaDoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHNldHVwYXBpIHNoYXJlZCBsaWJyYXJ5IGFuZCBTZXR1cEl0ZXJhdGVDYWJpbmV0IHN0dWIuCgoJKiBkbGxzL21zdmlkZW8vLmN2c2lnbm9yZSwgZGxscy9tc3ZpZGVvL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vZHJhd2RpYi5jLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlby5zcGVjLCBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGluY2x1ZGUvdmZ3LmgsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi9tc3ZpZGVvLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL21zdmZ3MzIuYXBpLCB3aW5kb3dzL2RyaXZlci5jOgoJQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CglJbXBsZW1lbnRlZCBhIGxhcmdlIG51bWJlciBvZiB0aGUgbXN2aWRlbyBkbGwgcm91dGluZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWxsb3cgdGhlIHNpemUgb2YgYml0bWFwcyB0byBiZSBjaGFuZ2VkIGFmdGVyIHRvb2xiYXIgYnV0dG9ucyBoYXZlCgliZWVuIGFkZGVkLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzoKCVNsYXZhIE1vbmljaCA8U2xhdmFfTW9uaWNoQGNudC5jb20+CglPbiBXaW5kb3dzIHByb3BlcnR5IHNoZWV0IGhhcyBEV0xfVVNFUiBkd29yZCBwb2ludGluZyB0byBhIHN0cnVjdHVyZQoJdGhhdCBzdGFydHMgd2l0aCBIV05EIGFuZCBQUk9QU0hFRVRIRUFERVIgZmllbGRzLgoKCSogZGxscy9rZXJuZWwva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci90aHJlYWQuYzoKCVNsYXZhIE1vbmljaCA8U2xhdmFfTW9uaWNoQGNudC5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBHZXQvU2V0VGhyZWFkUHJpb3JpdHlCb29zdC4KCgkqIGRvY3VtZW50YXRpb24vcHNkcml2ZXI6CglTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCUFkZGVkIGRvY3VtZW50YXRpb24gb24gaG93IHRvIHNldHVwIHdpbmUncyBCdWlsZGluIFBvc3RzY3JpcHQgRHJpdmVyCgl3b3JraW5nIHdpdGggZ2hvc3RzY3JpcHQgKGFmbWZpbGVzLCBwcGRmaWxlKS4KCgkqIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvdHlwZXMuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEV4cGxpY2l0IGluaXQgb2YgcnRuLmNvb2tpZSBpbiBERUJVR19FdmFsRXhwciB0byBiYWQgdmFsdWUgdG8KCSAgZXhwb3NlIGZ1cnRoZXIgYmFkIGNvZGUKCS0gUHJpbnQgb2YgcG9pbnRlciB1c2VkIGFzIGFycmF5IG5vdyB3b3JrcwoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJSmFtZXMgSGF0aGV3YXkgPGphbWVzQG1hY2FkYW1pYW4uY29tPgoJT25seSB1c2UgdGhlIGNvbHVtbiBoZWFkZXJzIHRvIGNhbGN1bGF0ZSB0aGUgd2lkdGggb2YgYQoJTERTX1JFUE9SVC10eXBlIGxpc3Rib3ggaWYgaXQgYWN0dWFsbHkgaGFzIGNvbHVtbiBoZWFkZXJzLgoJKGllLiBMVlNfTk9DT0xVTU5IRUFERVIgYml0IGlzIG5vdCBzZXQuKQoKCSogd2luZG93cy93aW5wb3MuYzogU2xhdmEgTW9uaWNoIDxTbGF2YV9Nb25pY2hAY250LmNvbT4KCUJlZ2luRGVmZXJXaW5kb3dQb3Mgc2hvdWxkIGFsbG93IHplcm8gY291bnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHNlbWktc3R1Yi4KCgkqIGRsbHMvd2lubW0vbWNpLmM6CglCcmFkbGV5IEJhZXR6IDxiYmFldHpAc3R1ZGVudC51c3lkLmVkdS5hdT4KCUhhbmRsZSBtY2lTZW5kU3RyaW5nKCJvcGVuIDxtY2l0eXBlPiIsLi4uKQoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbjoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CgktIEJ1Z2ZpeDogTWFjcm8gZXhwYW5zaW9uIG9mIHN0cmluZ3Mgd291bGQgYXNzZXJ0IGFuIGludGVybmFsIGVycm9yCgkgIG9yIGEgc2VnZmF1bHQgZHVlIHRvIGEgbGFja2luZyAnXDAnIGluIHRoZSBleHBhbnNpb24uCgktIEJ1Z2ZpeDogUHJldmVudCBidWZmZXIgb3ZlcmZsb3cgaW4gcmVhbGxvY2F0aW9uIG9mIG1hY3JvIGV4cGFuc2lvbgoJICBidWZmZXJzLgoJLSBCdWdmaXg6IFdyYydzIHZlcnNpb24gaW5mb3JtYXRpb24gd2FzIG5vdCBwYXNzZWQgYXMgbnVtZXJpY2FsIHRvIHRoZQoJICBwcmVwcm9jZXNzb3IgZHVlIHRvIGFuIGVycm9yIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBtYWNyby4KCS0gUmVsYXhlZCB0aGUgbmV3bGluZSBjb25zdHJhaW50IGluIGdsb2JhbCBMQU5HVUFHRSBzdGF0ZW1lbnRzLCB3aGljaAoJICB3YXMgaW50cm9kdWNlZCBpbiB2ZXJzaW9uIDEuMS4zLCBzbyB0aGF0IHNvbWUgZmFuY3kgcHJlcHJvY2Vzc29yCgkgIGNvbnN0cnVjdHMgY2FuIHdvcmsuCgktIFJlbW92ZWQgdGhlIGdjYy1zdHlsZSAjbGluZSBoYW5kbGluZyBmcm9tIHRoZSByZXNvdXJjZS1wYXJzZXIgdG8gdGhlCgkgIHJlc291cmNlLXNjYW5uZXIgc28gdGhhdCBpdCBpcyBwb3NzaWJsZSB0byBpbmNsdWRlIGZpbGVzIGF0IGFueSBzdGFnZQoJICBvZiB0aGUgc291cmNlLCBpbmRlcGVuZGVudCBvZiB0aGUgcGFyc2VyLXN0YXRlLgoJLSBCdWdmaXg6IFN0cmluZ3RhYmxlcyB3ZXJlIG5vdCBjb3JyZWN0bHkgc2VhcmNoZWQgZm9yIGR1cGxpY2F0ZXMKCSAgYmVjYXVzZSB0aGUgbGFuZ3VhZ2UgY29tcGFyaXNvbiBkaXNyZWdhcmRlZCB0aGUgc3VibGFuZ3VhZ2UuCgktIEVsaW1pbmF0ZWQgYSByZXBldGl0aXZlIHdhcm5pbmcgd2hlbiB3cml0aW5nIHN0cmluZ3RhYmxlcyB3aXRoIHplcm8KCSAgbGVuZ3RoIHN0cmluZyBlbnRyaWVzLiBUaGVzZSBhcmUgcGVyZmVjdGx5IHZhbGlkIChidXQgbWFrZSBubyBzZW5zZTotKS4KCSAgV2FybmluZ3MgYXJlIG5vdyBvbmx5IGdlbmVyYXRlZCBkdXJpbmcgcGFyc2UgaW4gcGVkYW50aWMgbW9kZS4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlMmRpc3AuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBTeXNTdHJpbmdCeXRlTGVuIHRvIHJlYWxseSByZXR1cm4gdGhlIGxlbmd0aCBpbiBieXRlcy4KCgkqIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCVNsYXZhIE1vbmljaCA8U2xhdmFfTW9uaWNoQGNudC5jb20+CglDaGFuZ2VkIHRoZSBzaXplIG9mIHByb3BlcnR5IHNoZWV0IHRlbXBsYXRlIHRvIGJlIHRoZSBzYW1lIGFzIHRoZQoJb3JpZ2luYWwgb25lICh3YXMgMjkyeDE1OSwgbm93IDIyMHgxNDApLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlb2JqLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgSURhdGFBZHZpc2VIb2xkZXIuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCB0eXBvIGluIElUeXBlTGliOjpJc05hbWUuCgoJKiBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNyZWF0ZVN0cmVhbU9uSEdsb2JhbCBzaG91bGQgYWxsb2MgYSBzaGFyZWQgbWVtb3J5IGJsb2NrIGlmIHN1cHBsaWVkCgloYW5kbGUgaXMgMC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG8gbm90IGNyYXNoIGlmIHRoZXJlIHdhcyBubyBmaWxlcyBzZWxlY3RlZCBhbmQgT0sgYnV0dG9uIHdhcyBwcmVzc2VkLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4IGEgY291cGxlIG9mIHByb2JsZW1zIHdpdGggdW5kZXJydW5zIGFuZCBzdG9wcGluZy9yZXN0YXJ0aW5nLgoKCSogbWlzYy9tYWluLmM6CglKb2VyZyBNYXllciA8am1heWVyQHRlbGVzdW4yLnRlbGVtYXRpb24uZGU+CglGaXhlZCB0aGUgZGVidWdtc2cgaGVscC4KCgkqIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5lc2NzaS5oOgoJRGF2aWQgRWxsaW90dCA8ZGZlQGluZmluaXRlLWludGVybmV0Lm5ldD4KCU1hcCBlYWNoIGNoYW5uZWwgb24gZXZlcnkgaG9zdCB0byBhbiBBU1BJIGNvbnRyb2xsZXIgbnVtYmVyLgoJU3RvcmUgbWFwIGluIEhLRVlfRFlOX0RBVEEuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRFNBX0luc2VydEl0ZW0gcmV0dXJucyBuSW5kZXgsIG5vdCBuSXRlbUNvdW50LgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXhlZCBiYWNrZ3JvdW5kIHJlZHJhd2luZyB3aGVuIGNvbnRyb2wgaXMgY292ZXJlZC4gIEZpeGVkIGEgcmVhbGx5CglkdW1iIG1pc3Rha2UgSSBtYWRlIHdpdGggYm9yZGVyIGRyYXdpbmcgbWFueSBwYXRjaGVzIGFnby4gIEZpeGVkCglvZmZzZXQgYnkgMSBhbGlnbm1lbnQgaXNzdWVzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJUmVtb3ZlZCBhbm90aGVyIGJhZCBhc3NlcnQgYW5kIHR3byBubyBsb25nZXIgbmVlZGVkIG9uZXMuCgoyMDAwLTA2LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvZXhjZXB0LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYmFkIGV4Y2VwdGlvbiBoYW5kbGVyIGNoYWluIHRlcm1pbmF0aW9uLgoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIHdpbmRvd3Mvd2luLmM6CglMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglNb3ZlZCB6ZXJvLXNpemVkIHdpbmRvdyBoYWNrIHRvIHgxMWRydi4KCgkqIGRsbHMvbnRkbGwvbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmV0dXJuICJubyBkZWJ1Z2dlciBhdHRhY2hlZCIgaW4gTnRRdWVyeUluZm9ybWF0aW9uUHJvY2VzcyB0byBzYXRpc2Z5Cglzb21lIGNvcHkgcHJvdGVjdGlvbiBtZWNoYW5pc21zLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIHdoZW4gbHBUZW1wbGF0ZU5hbWUgaXMgZ290dGVuIGZyb20gTUFLRUlOVFJFU09VUkNFLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHR3byBhc3NlcnRzIGluIEJsdCgpLgoKCSogZGxscy9kZHJhdy9oZWxwZXIuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJUHJvcGVybHkgY2FzdCBhcmd1bWVudHMgdG8gcHJpbnRmIHRvIG1hdGNoIHRoZSBpbnRlbmRlZCBvdXRwdXQuCgoJKiBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS93aW5lbW0uaCwgaW5jbHVkZS9tbXN5c3RlbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTZXZlcmFsIGZpeGVzIHNwb3R0ZWQgYnkgQ29yZWwgKEplYW4tQ2xhdWRlIEJhdGlzdGEgJiBTZWFuIExhbmdsZXkpLgoJU2Vla2luZyBmcm9tIFNFRUtfRU5EIHdhcyB3cm9uZy4KCVNlZWtpbmcgb24gZW1wdHkgYnVmZmVyIHdhcyB3cm9uZy4KCVNvbWUgaW5zdGFsbGVkIGlvUHJvY3MgaGFkIHVuaW5pdGlhbGl6ZWQgZmllbGRzLgoJQSBmZXcgbW9yZSBiaXRzIGZvciByZW5hbWUgZnVuY3Rpb25zLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRvY3VtZW50YXRpb24vd2luZWRiZzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgQnJlYWtPbkRsbExvYWQgaW50ZXJuYWwgdmFyLCBjbGVhbmVkIHVwIHJlZ2lzdGVyIHZhbGlkYXRpb24gb24KCWV4Y2VwdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJTWlrZSBNY0Nvcm1hY2sgPE1pa2VfTWNDb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CglBZGQgd29ya2Fyb3VuZHMgZm9yIG51bGwgc3RyaW5ncyBpbiBUT09MQkFSX0luc2VydEJ1dHRvbkEgYW5kIGNhbGxpbmcKCVRPT0xCQVJfU2V0QnV0dG9uU2l6ZSBhZnRlciBidXR0b24gYWRkZWQgdG8gdGhlIHRvb2xiYXIgKGxhdHRlciBmb3IKCVdJTlpJUDMyLkVYRSkKCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0IHRoZSBtaW5pbXVtIGRyb3BwZWQgaGVpZ2h0IHRvIHRoZSBjb21ibyBsaXN0IGhlaWdodCBpZiBhbnkgaW4KCUNCRHJvcERvd24uCgoJKiBmaWxlcy9kb3NfZnMuYzogRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglJZiB3aGl0ZXNwYWNlIG9yIGRvdHMgYXJlIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgYW55IGNvbXBvbmVudCBpbiBhCglwYXRoIHRoZW4gaXQgc2hvdWxkIGJlIGlnbm9yZWQuCgoyMDAwLTA2LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBpbmNsdWRlL3Byb2Nlc3MuaDoKCU1ha2Ugc3VyZSB0aGUgY21kbGluZSBwYXNzZWQgdG8gQ3JlYXRlUHJvY2Vzc0EgaXMgd3JpdGVhYmxlICh0aGFua3MgdG8KCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4pLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRsbHMvd2lubW0vd2luZW9zcy9vc3MuYywgZGxscy93aW5tbS93aW5lb3NzL29zcy5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDbGVhbmVkIHVwIGxvYWRpbmcvaW5pdCBjb2RlIGluIE9TUy4KCUNsZWFuZWQgdXAgZ2V0RGV2Q2FwcyBpbiBtaWRpIHBhcnQuCglJbXBsZW1lbnRlZCBhc3luY2hyb25vdXMgd2F2ZUluIHJlY29yZGluZyB1c2luZyBhIHRocmVhZC4KCgkqIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2NvbnNvbGUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQSBmZXcgbWlzc2luZyBjb25zb2xlIHN0dWJzLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFuaW1hdGlvbiBsb2FkaW5nIGZvciBSTEUgZW5jb2RpbmcuCgoJKiBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSByZW1vdmVkIGhhY2sgdG8gZmluZCB0aGUgcmlnaHQgcmVzb3VyY2UKCS0gdXBkYXRlZCB0byB1c2UgdGhlIElDT00gbWFjcm9zCgktIGNsZWFuZWQgdXAgdXNlIHR5cGVsaWIgYW5kIHR5cGVsaWIyICh3YXMgbWl4ZWQgdXApCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBmaXhlZCByZXBvcnRlZCBidWdzCgktIGZpeGVkIGRlZmF1bHQgZXh0ZW5zaW9ucwoJLSBpbXBsZW1lbnRlZCAiYnJvd3NlIHRvIGRlc2t0b3AiIGJ1dHRvbgoKCSogbWVtb3J5L2Vudmlyb24uYywgdG9vbHMvd2luZWJ1aWxkL3NwZWMzMi5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglHZXRDb21tYW5kTGluZSBzaG91bGQgcmV0dXJuIG5vbi1jb25zdCBzdHJpbmdzLgoKCSogZGxscy9rZXJuZWwva2VybmVsLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUNhbGxQcm9jRXgzMlcgc2hvdWxkIGJlIG5hbWVkIF9DYWxsUHJvY0V4MzJXLgoKCSogZmlsZXMvY2hhbmdlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHNvbWUgc3R1ZmYgc2F5aW5nIHRoYXQgdGhpcyBpcyBOT1Qgc3VwcG9ydGVkLgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBdm9pZCBjYWxsaW5nIHRoZSBleGNlcHRpb24gaGFuZGxlciBpbiBzb21lIGNhc2VzLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBpbmNsdWRlL3NobHdhcGkuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbHZpZXcuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBtYW55IG5ldyBQYXRoKiBzdHVicwoJLSBtYW55IGJ1Z2ZpeGVzCgktIGNsYXNzIGZ1bmN0aW9ucyBleHBhbmRpbmcgZW52aXJvbm1lbnRzIHZhcmlhYmxlcyBub3cKCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJSW1wbGVtZW50ZWQgdGhlIERpcmVjdFNvdW5kIEhBTCBpbiB3aW5tbSdzIHdpbmVvc3MgKE9wZW4gU291bmQgU3lzdGVtKQoJZHJpdmVyLCBhbmQgd2lubW0ncyBpbnRlcmZhY2UgZm9yIERpcmVjdFNvdW5kIHRvIGFjY2VzcyBpdC4gSXQKCXJlcXVpcmVzIHRoZSBhYmlsaXR5IHRvIG1tYXAgL2Rldi9kc3AsIHRvIHRyaWdnZXIgcGxheWJhY2ssIGFuZAoJc2FtcGxlLWFjY3VyYXRlIHBvc2l0aW9uIHJlYWRvdXRzLiAoSWYgdGhlIHNvdW5kY2FyZCdzIGRldmljZSBkcml2ZXIKCWRvZXMgbm90IHJlcG9ydCB0aGVzZSBjYXBhYmlsaXRpZXMsIHdpbmVvc3Mgd2lsbCByZXBvcnQgdGhlIEhBTCBhcwoJdW5hdmFpbGFibGUgYW5kIGZvcmNlIERpcmVjdFNvdW5kIHRvIHVzZSBpdHMgSEVMIGluc3RlYWQuKQoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglJbXBsZW1lbnRlZCB0aGUgRGlyZWN0U291bmQgSEFMIG1vZGUgZm9yIERNQSBwcmltYXJ5IGJ1ZmZlcnMsIHdpdGggYQoJMTBtcyBsYXRlbmN5IChub3Qgbm90aWNlYWJsZSksIGFuZCBhYm91dCAzMDBtcyBvZiBwcmVidWZmZXJpbmcuIEZpeGVkCglhIGZldyBidWdzLiBBZGRlZCBhIFdpbmUtb25seSBXSU5NTSBmbGFnIGZvciB3YXZlT3V0T3BlbiBmb3IKCURpcmVjdFNvdW5kIHRvIHVzZSAoc28gZHJpdmVycyBsaWtlIHdpbmVvc3MgaGF2ZSBzb21lIHdheSBvZiBrbm93aW5nCgl3aGF0IHRvIHByZXBhcmUgaXRzZWxmIGZvcikuCgoJKiBkbGxzL3VzZXIvdXNlci5zcGVjLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3N5c3BhcmFtcy5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglJbXBsZW1lbnRlZC9zdHViYmVkIEljb25TaXplKCkgYW5kIENvbnRyb2xQYW5lbEluZm8oKSBuZWVkZWQgZm9yIFdpbgoJMi4wIGNvbnRyb2wuZXhlIGFuZCBwYWludC5leGUuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBJRElfV0lOTE9HTy4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRG9uJ3QgYmxvY2sgZW5kbGVzc2x5IGFmdGVyIGxhc3QgZGVidWdnZWQgcHJvY2VzcyBoYXMgZXhpdGVkLgoKCSogbWVtb3J5L3N0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIChiYWNrKSBjb3JyZWN0IGJlaGF2aW9yIGZvciBOVUxMIHB0cnMgaW4gQ2hhclRvT2VtIGZ1bmNzLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgT09NIGNvbmRpdGlvbnMgaW4gR2xvYmFsQWxsb2MuCgoJKiBkbGxzL250ZGxsL21pc2MuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJQWRkZWQgbWlzc2luZyAjaW5jbHVkZSA8bWF0aC5oPi4KCgkqIGluY2x1ZGUvd2lucmVzcmMuaDogUmVtb3ZlZCBNSU1FIGdhcmJhZ2UuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGUgeGxpYiBkZHN1cmZhY2VzIHdpdGggY29ycmVjdCByZWZlcmVuY2UgY291bnRzLgoKCSogZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2JpZGkxNi5jLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9iaWRpMTYuYywgZGxscy91c2VyL25ldHdvcmsuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9iaWRpMTYuYywgbWlzYy9uZXR3b3JrLmM6CglTcGxpdCBiaWRpMTYuYyBhbmQgbmV0d29yay5jIG91dCBvZiBtaXNjLyBpbnRvIHRoZWlyIHJlc3BlY3RpdmUgZGxscy4KCjIwMDAtMDYtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmMsIHRvb2xzL3dpbmVidWlsZC8uY3ZzaWdub3JlLCB0b29scy93aW5lYnVpbGQvTWFrZWZpbGUuaW4sIHRvb2xzL3dpbmVidWlsZC9SRUFETUUsIHRvb2xzL3dpbmVidWlsZC9idWlsZC5oLCB0b29scy93aW5lYnVpbGQvbWFpbi5jLCB0b29scy93aW5lYnVpbGQvcGFyc2VyLmMsIHRvb2xzL3dpbmVidWlsZC9yZWxheS5jLCB0b29scy93aW5lYnVpbGQvc3BlYzE2LmMsIHRvb2xzL3dpbmVidWlsZC9zcGVjMzIuYywgdG9vbHMvd2luZWJ1aWxkL3V0aWxzLmMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW46CglTcGxpdCB0aGUgYnVpbGQgcHJvZ3JhbSBpbiBzZXZlcmFsIGZpbGVzLgoJUmVuYW1lZCBpdCAnd2luZWJ1aWxkJyB0byBhdm9pZCBwb3NzaWJsZSBjb25mbGljdHMuCglDbGVhbmVkIHVwIGNvbW1hbmQtbGluZSBwYXJzaW5nLgoJTWFrZSBpdCB1bmRlcnN0YW5kIC1mUElDIGluc3RlYWQgb2YgLXBpYy4KCU1lcmdlZCBjYWxsMTYucyBhbmQgY2FsbDMyLnMgZ2VuZXJhdGVkIGZpbGVzLgoKCSogZGxscy9nZGkvZ2RpLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBkbGxzL2tlcm5lbC9zeXN0ZW0uc3BlYywgZGxscy9zb3VuZC9zb3VuZC5zcGVjLCBkbGxzL3VzZXIvdXNlci5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBtb3JlIG9yZGluYWxzIHRvIEtFUk5FTCwgR0RJLCBVU0VSIGFuZCBzeXN0ZW0gZHJpdmVycwoJKFdpbmRvd3MgMS4xLCAyLjApLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYzoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCV9jb21tb25fZGVwdGhfdG9fcGl4ZWxmb3JtYXQoKSByZXR1cm5zIC0xIGFuZCBub3QgemVybywgaWYgYSBtb2RlIGlzCglzdXBwb3J0ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJQXZvaWQgZ3JhdHVpdG91c2x5IGNoYW5naW5nIHRoZSBaT1JERVIuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RkcmF3X3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIGNvcnJlY3QgYnBwIGZvciB0aGUgWCBzaWRlIG9mIHRoZSBzdXJmYWNlIFhJbWFnZXMuCglDbGVhbmVkIHVwIFhsaWJfU3VyZmFjZV9SZWxlYXNlIHNvIGl0IGlzIGEgYml0IG1vcmUgcmVhZGFibGUuCgl1c2UgVmlydHVhbEFsbG9jIGZvciBjb252ZXJzaW9uLXByb2dyYW1zaWRlIGJ1ZmZlciB0byBzaW1wbGlmeQoJaGFuZGxpbmcuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJR2xvYmFsRnJlZTE2IHJldHVybnMgTlVMTCBvbiBzdWNjZXNzLCBidXQgRGVzdHJveUFjY2VsZXJhdG9yVGFibGUKCXNob3VsZCByZXR1cm4gVFJVRSBvbiBzdWNjZXNzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvaGVscGVyLmMsIGRsbHMvZGRyYXcveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUR1bXAgRm91ckNDIGNvcnJlY3RseSwgcHJpbnQgY29udmVyc2lvbiBtZXNzYWdlcywgYWRkIHJlZmVyZW5jZSB0bwoJZGRyYXcgaW4gRERTdXJmYWNlOjpHZXREREludGVyZmFjZS4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlc3RyaWN0IG5UaW1lb3V0IHRvIDAtMzI3NjcsIHNpbmNlIGl0IGlzIGEgMTZiaXQgdmFsdWUgaW4gWC4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCURhdmUgSGF3a2VzIDxkYXZlaC13aW5lQGNhZGxpbmsuY29tPgoJRXhjZXB0aW9uIGhhbmRsaW5nIGZvciBTSUdGUEUgbXVzdCBhbHdheXMgY2xlYXIgdGhlIEZQVSBpbnRlcnJ1cHQKCXN0YXR1cy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jcnRkbGwvLmN2c2lnbm9yZSwgZGxscy9jcnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL2NydGRsbC9tYnN0cmluZy5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCBkbGxzL250ZGxsL01ha2VmaWxlLmluLCBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3N0cmluZy5jLCBkbGxzL250ZGxsL3djc3RyaW5nLmMsIGluY2x1ZGUvY3J0ZGxsLmgsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluOgoJTW92ZWQgc2hhcmVkIGNydGRsbC9udGRsbCBmdW5jdGlvbnMgaW50byBudGRsbC4KCU1hZGUgY3J0ZGxsIGEgc2VwYXJhdGUgZGxsLgoKCSogZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywgZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgbWlzYy9sc3RyLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL29sZTIuYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmM6CglDbGVhbmVkIHVwIGEgZmV3IGludGVyLWRsbCBkZXBlbmRlbmNpZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL3dpbmluZXQvaHR0cC5jLCBkbGxzL3dpbmluZXQvaW50ZXJuZXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVjbGkzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vcGVuZ2wzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGx3YXBpLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VzZXIzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5pbmV0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dzMl8zMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9tc3ZmdzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgZml4ZXMuCgktIE1pbm9yIGJ1ZyBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogaW5jbHVkZS9kc2RyaXZlci5oLCBkbGxzL2Rzb3VuZC9NYWtlZmlsZS5pbiwgZGxscy9kc291bmQvZHNvdW5kLnNwZWMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQHRyYW5zZ2FtaW5nLmNvbT4KCVJlc3RydWN0dXJlIERpcmVjdFNvdW5kLiBSZW1vdmUgZHNvdW5kIHRocmVhZCwgdXNlIE1NIHRpbWVycwoJaW5zdGVhZC4gSW1wbGVtZW50ZWQgdGhlIERpcmVjdFNvdW5kIEhFTCwgd2l0aCB0aGUgYWJpbGl0eSB0bwoJcHJlYnVmZmVyIDMwMG1zIG9mIHNvdW5kLCB3aGlsZSBtYWludGFpbmluZyBwbGF5IGxhdGVuY3kgb2YgNDBtcywgYW5kCgl0aGUgZXhhY3QgcGxheXBvc2l0aW9uIChTdGFyY3JhZnQgY2luZW1hdGljcyBhcmUgbGlwLXN5bmNoZWQpLiAgU29tZQoJaW5pdGlhbCBIQUwgc3VwcG9ydC4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZXBsYWNlZCB0aGUgQlVJTFRJTjMyX2Rsb3BlbigpIEVSUigpIGJ5IGEgV0FSTigpLgoKCSogaW5jbHVkZS93aW5yZXNyYy5oOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGluY2x1ZGUvd2lucmVzcmMuaCBmb3IgcG9ydGluZyB3aXRoIHdpbmVsaWIuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYywgZGxscy93aW5zcG9vbC93aW5zcG9vbC5kcnYuc3BlYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTWVyZ2VkIERldmljZUNhcGFiaWxpdGllcyBhbmQgRGV2aWNlQ2FwYWJpbGl0aWVzQS4KCgkqIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgaW5jbHVkZS92ZncuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTWVyZ2VkIE1DSVduZENyZWF0ZSBhbmQgTUNJV25kQ3JlYXRlQS4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ0xTSURGcm9tU3RyaW5nIGFwcGFyZW50bHkgYWxzbyBhY2NlcHRzIFByb2dJRHMgYXMgYW4gaW5wdXQgc3RyaW5nLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgU0NfSUNPTi9TQ19aT09NIChvYnNvbGV0ZSBtYWNyb3MpLgoKCSogaW5jbHVkZS93aW5pbmV0Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIG5ldyBJbnRlcm5ldENoZWNrQ29ubmVjdGlvbiouCgoyMDAwLTA2LTIwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9vbGVjbGkvb2xlY2xpMzIuc3BlYywgZGxscy9vbGVjbGkvb2xlY2xpX21haW4uYywgZGxscy9vbGVzdnIvb2xlc3ZyX21haW4uYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJQ2xlYW5lZCB1cCBhIGZldyBpbnRlci1kbGwgZGVwZW5kZW5jaWVzLgoKCSogdG9vbHMvd21jL01ha2VmaWxlLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW46CglBbGV4YW5kZXIgVi4gTHVreWFub3YgPGxhdkBsb25nLnlhci5ydT4KCUZpeGVkIHByb2JsZW1zIHdpdGggY29tcGlsYXRpb24vaW5zdGFsbCBvdXQgb2Ygc291cmNlIHRyZWUuCgoJKiBpbmNsdWRlL3dpbmVycm9yLmgsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglPbGVDb252ZXJ0T0xFU1RSRUFNVG9JU3RvcmFnZSBmYWlscyAocmV0dXJucyBSRUdEQl9FX0NMQVNTTk9UUkVHKSB3aGVuCgl0aGUgQ0xTSUQgb2YgdGhlIE9MRSBvYmplY3QgaXMgbm90IGZvdW5kIGluIHRoZSByZWdpc3RyeS4gRml4ZWQuCgoJKiBmaWxlcy9wcm9maWxlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWtlIFdyaXRlUHJpdmF0ZVByb2ZpbGVTZWN0aW9uQSBjYXJlIGZvciAiIiBhbmQgTlVMTCBhcyB0aGUKCXN0cmluZyBhcmd1bWVudC4gTmV3IGZ1bmN0aW9uIFBST0ZJTEVfRGVsZXRlQWxsS2V5cy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmM6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIGZvcm1hdCBzdHJpbmdzLgoKCSogcHJvZ3JhbXMvd2luaGVscC9obHBmaWxlLmMsIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5sZXgubCwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4IGEgY3Jhc2ggaW4gd2luaGVscCBjYXVzZWQgYnkgaG1lbWNweTE2IHdpdGhvdXQgcHJvdG90eXBlLgoJRml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBkbGxzLyovTWFrZWZpbGUuaW46CglGb3IgZGxscywgZGVyaXZlIFNQRUNfU1JDUyBmcm9tIE1PRFVMRSBhbmQgQUxUTkFNRVMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAdHJhbnNnYW1pbmcuY29tPgoJRml4ZWQgV0hEUl9ET05FIHJhY2UgY29uZGl0aW9uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCBTdHJDYXRCdWZmLgoKCSogaW5jbHVkZS9zaGxvYmouaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCB0eXBlZGVmIG9mIERST1BGSUxFUy4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaDoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBSZXN1bHRGcm9tU2NvZGUvR2V0U2NvZGUgKG9ic29sZXRlIG1hY3JvcykuCgoJKiBncmFwaGljcy9wYWludGluZy5jOgoJRGF2ZSBIYXdrZXMgPGRhdmVoLXdpbmVAY2FkbGluay5jb20+CglNb3ZlVG9FeDogcmV0dXJuIFRSVUUgZXZlbiBpZiB0aGVyZSBpcyBubyBkcml2ZXIgaW1wbGVtZW50YXRpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglQcm90ZWN0IGFnYWluc3QgcHJvZ3JhbXMgY3JlYXRpbmcgcGFydHMgd2l0aCBuZWdhdGl2ZSB3aWR0aC4KCjIwMDAtMDYtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvcmVzb3VyY2UuYywgbXNkb3MvaW50MjEuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJVXNlIEdldFN5c3RlbURlZmF1bHRMYW5nSUQoKSBpbnN0ZWFkIG9mIFdJTkVfTGFuZ3VhZ2VJZC4KCgkqIGRvY3VtZW50YXRpb24vd2luZWRiZywgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvbW9kdWxlLmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gY2xlYW5lZC11cCBicmVhayBoYW5kbGluZwoJLSBiZXR0ZXIgaW50ZWdyYXRpb24gb2YgZGVidWdnZXIgaW5uZXIgbG9vcHMgKHBhcnNlciAmIGV2ZW50cykKCS0gYWRkZWQgYXR0YWNoIGNvbW1hbmQKCS0gaW1wcm92ZWQgcGFyc2VyIHNvIHRoYXQgaXQgY2FuIGJlIGVudGVyZWQgd2l0aG91dCBhbnkgcHJvY2VzcyBsb2FkZWQKCS0gYWRkZWQgQnJlYWtPbkZpcnN0Q2hhbmNlIGludGVybmFsIHZhcmlhYmxlCgktIGRpc2FibGVkIE5FIG1vZHVsZSBzeW1ib2wgbW9kdWxlICh3aGljaCBpcyBicm9rZW4gd2l0aCBBU1MpCgktIG1pc2MgcG9ydGFiaWxpdHkgY2xlYW51cHMKCgkqIGRsbHMvb2xlYXV0MzIvc2FmZWFycmF5LmMsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gRml4ZWQgYSBtZW1vcnkgY29ycnVwdGlvbiBpbiBzYWZlIGFycmF5cyB3aGVuIHVzaW5nIFNhZmVBcnJheUNvcHkoKQoJICBmdW5jdGlvbiB3aXRoIGEgU2FmZUFycmF5IGNyZWF0ZWQgd2l0aCBGQURGX0ZJWEVEU0laRS4KCS0gQWRkZWQgbW9yZSBGQURGIGZsYWdzIGluIHRoZSAuaCBmaWxlLgoJLSBGQURGIGZsYWdzIHdlcmUgZGVmaW5lZCB0d2ljZSwgY29ycmVjdGVkIHRoZSBzaXR1YXRpb24uCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEbyBub3QgYXNzdW1lIHRoYXQgZG91YmxlIGJ5dGUgZm9udCA9PSB1bmljb2RlIGZvbnQuCgoJKiBkbGxzL21zdmlkZW8vbXN2aWRlb19tYWluLmMsIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2ludXNlci5oLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvbXN2ZnczMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi91c2VyMzIuYXBpLCB3aW5kb3dzL3VzZXIuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nIHByb3RvdHlwZXMuCglEZWZpbmUgdGhlIEhEUkFXRElCIGhhbmRsZSB0eXBlLgoKCSogaW5jbHVkZS93aW5kb3dzeC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCWhtZW1jcHkxNiBpcyBhIFdpbjE2IEFQSSwgdGhlIG1hY3JvIGlzIGhtZW1jcHkuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzMl8zMi5zcGVjLCBpbmNsdWRlL3dpbnNvY2syLmg6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglDcmVhdGVkIGFuIGluaXRpYWwgV2luc29jayAyICh3czJfMzIpIERMTC4gTWFrZXMgdXNlIG9mIHRoZSBXaW5zb2NrIDEKCWZ1bmN0aW9ucyBhbHJlYWR5IGltcGxlbWVudGVkLgoKCSogZGxscy93aW5tbS9tY2lzZXEvbWNpbWlkaS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBwb3J0IHN0YXR1cyBxdWVyeS4KCgkqIGluY2x1ZGUvZHNkcml2ZXIuaDogT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglBZGRlZCBEaXJlY3RTb3VuZCBkZXZpY2UgZHJpdmVyIGhlYWRlciBmaWxlLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFrZSB0aGUgYmFzZSByZWxvY2F0aW9uIG1lc3NhZ2UgYSBXQVJOLCBub3QgYSBGSVhNRS4KCgkqIHRvb2xzL01ha2VmaWxlLmluOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglEaXN0aW5ndWlzaCBiZXR3ZWVuIFNVQkRJUlMgYW5kIElOU1RBTExTVUJESVJTLgoKCSogY29udHJvbHMvY29tYm8uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDQl9TRVRDVVJTRUwgc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbm90aGVyIGxpc3Rib3ggZXZlbnQgYWZ0ZXIgdXBkYXRpbmcKCXRoZSBlZGl0IGJveC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJV01fUEFJTlQgc2hvdWxkIGJlIHByb2Nlc3NlZCBvbmx5IGJ5IHRoZSBUUkVFVklFV19QYWludCBmdW5jdGlvbiwgc28KCXdlIGRvbid0IG5lZWQgdG8gY2FsbCBEZWZXaW5kb3dQcm9jQSBmdW5jdGlvbiB3aXRoaW4gVFJFRVZJRVdfUGFpbnQuCgoJKiB3aW5kb3dzL2NsYXNzLmM6CglKYW1lcyBIYXRoZXdheSA8amFtZXNAbWFjYWRhbWlhbi5jb20+CglXZSBtdXN0IHJldHVybiB0aGUgYXRvbSBvZiB0aGUgY2xhc3MgaW4gR2V0Q2xhc3NJbmZvRXggaW5zdGVhZCBvZiBqdXN0CglUUlVFLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUphbWVzIEhhdGhld2F5IDxqYW1lc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgc3R1YiBmb3IgQ29DcmVhdGVGcmVlVGhyZWFkZWRNYXJzaGFsZXIoKS4KCgkqIG1lbW9yeS9zdHJpbmcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZWltcGxlbWVudCBDaGFyVG9PZW1BL1csIENoYXJUb09lbUJ1ZmZBL1csIE9lbVRvQ2hhckEvVywKCU9lbVRvQ2hhckJ1ZmZBL1cgdXNpbmcgTXVsdGlCeXRlVG9XaWRlQ2hhci9XaWRlQ2hhclRvTXVsdGlCeXRlLgoKCSogY29udHJvbHMvbWVudS5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJR2V0U3lzdGVtTWVudSBjYWxsZWQgd2l0aCBiUmV2ZXJ0IGFyZ3VtZW50IHNldCB0byBUUlVFIG5vdyByZXR1cm5zCglOVUxMIGFzIHNwZWNpZmllZCBpbiBQbGF0Zm9ybSBTREsuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIG1lbW9yeSBhY2Nlc3Mgb3V0c2lkZSBvZiB0aGUgcmFuZ2UgZm9yIHNvdXJjZSBiaXRzIGluIDI0LWJpdCBiaXRtYXBzLgoKMjAwMC0wNi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUZyYW5jb2lzIEphY3F1ZXMgPGZyYW5jb2lzakBtYWNhZGFtaWFuLmNvbT4KCU1ha2UgSUlERnJvbVN0cmluZyBwb2ludCB0byBDTFNJREZyb21TdHJpbmcuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gYmV0dGVyIGVycm9yIGNoZWNrIHdoZW4gaW1wb3J0aW5nIGZ1bmN0aW9ucyB2aWEgR2V0UHJvY0FkcmVzcwoJLSByZXBsYWNlZCBTSEdldFNwZWNpYWxGb2xkZXJQYXRoIChub3QgYXZpYWJsZSBpbiBhbGwgc2hlbGwzMiB2ZXJzaW9ucykKCS0gY2hhbmdlZCBjYWxsIG9yZGVyIHdoZW4gYnJvd3NpbmcgdG8gZGlmZmVyZW50IGZvbGRlciAoY3Jhc2ggd2l0aCBuYXRpdmUgc2hlbGwpCgktIHJlbW92ZWQgTW92ZSBjYWxsIHNpbmNlIElTaGVsbHZpZXdfQ3JlYXRlVmlld1dpbmRvdyBjcmVhdGVzIGl0IGFscmVhZHkgaW4KCSAgdGhlIHJpZ2h0IHJlY3QKCgkqIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBmaXhlZCBudWxsLXBpZGwgZnJvbSBfSUxDcmVhdGVDb250cm9sCgktIHNvbWUgbW9yZSBuby1uYW1lIGZ1bmN0aW9ucyBpbiBzaGx3YXBpCgoJKiBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJRnJhbmNvaXMgSmFjcXVlcyA8ZnJhbmNvaXNqQG1hY2FkYW1pYW4uY29tPgoJS2VlcCBhbiBpbnRlcm5hbCBjb3B5IG9mIHRoZSBpY29uLgoKCSogaW5jbHVkZS9vYmpiYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVvcmRlciB0aGUgX19hdHRyaWJ1dGVfXyBkaXJlY3RpdmUgaW4gdGhlIGxlZ2FjeSBtYWNyb3MgZm9yCgljb21wYXRpYmlsaXR5IHdpdGggb2xkIGcrKyBjb21waWxlcnMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglLZW4gQ29sZW1hbiA8a2VuX2NvbGVtYW5AaW5hbWUuY29tPgoJRml4ZXMgdG8gQ3JlYXRlRElCU2VjdGlvbiBhbmQgb3RoZXIgYXJlYXMgd2hlcmUgYmlTaXplSW1hZ2UgaXMKCWluY29ycmVjdGx5IGFzc3VtZWQgdG8gYmUgY29ycmVjdCBpZiBpdCBub24temVyby4gIFRoaXMgZml4ZXMgYQoJY3Jhc2hpbmcgcHJvYmxlbSBpbiBTaWQgTWVpZXIncyBBbHBoYSBDZW50YXVyaS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wNi0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbWRpLmMsIGluY2x1ZGUvbWRpLmgsIHJlc291cmNlcy9zeXNyZXNfRW4ucmMsIHJlc291cmNlcy91c2VyMzIucmM6CglEYXZpZCBMYXNzb25kZSA8ZGF2aWRsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIE1vcmUgV2luZG93cy4uLiBtZW51IGl0ZW0gZm9yIE1ESS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6CglTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCUNoZWNrIGFnYWluIGZvciBHZXROZXh0RGxnVGFiSXRlbSBhZnRlciByZXR1cm4gZnJvbSBXTV9JTklURElBTE9HCgltZXNzYWdlIGluIGRpYWxvZyBjcmVhdGlvbi4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTZXQgY2xpcHBpbmcgcmVnaW9uIHRvIGNsaWVudCB3aW5kb3cgaW4gTElTVEJPWF9QYWludC4KCgkqIHNlcnZlci9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCU1vcmUgdmVyYm9zZSBlcnJvciBtZXNzYWdlLgoKCSogdW5pY29kZS9tYnRvd2MuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCWNwX21ic3Rvd2NzOiBjaGVjayBmdW5jdGlvbnMgcmV0dXJuIHplcm8gb24gc3VjY2Vzcy4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0RnVsbFBhdGhOYW1lOiBnZXQgImRyaXZlIiB2YWx1ZSB0b28gZm9yIGFic29sdXRlIHBhdGhzLgoKCSogbWlzYy9wcmludGRydi5jOgoJRnJlZGVyaWMgQm91bGFuZ2VyIDxmcmVkZXJpY0BtYWNhZGFtaWFuLmNvbT4KCUNyZWF0ZVNwb29sRmlsZSBpcyBjYWxsZWQgd2l0aCBhIGRvcyBuYW1lLCB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0Cgl3aGVuIHdlIGNyZWF0ZSB0aGUgc3Bvb2xmaWxlIHdlIHVzZSB0aGUgdW5peCBuYW1lIGFzc29jaWF0ZWQgdG8gdGhlCglkb3MgZmlsZSBuYW1lLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIG1pc2MvY29tbS5jOgoJTWlrZSBNY0Nvcm1hY2sgPG1pa2VfbWNjb3JtYWNrQGxvb2tzbWFydC5jb20uYXU+CgktIGFkZCBwcm90b3R5cGVzIGZvciBzZXJpYWwgQVBJIGZ1bmN0aW9ucwoJLSBjb3JyZWN0IGV4aXN0aW5nIHNlcmlhbCBBUEkgcHJvdG90eXBlcyBpbmNvcnJlY3RseSB1c2luZyBEV09SRAoJICBpbnN0ZWFkIG9mIEhBTkRMRQoJLSBkZWZpbmUgbW9yZSBzdHJ1Y3R1cmVzIGFuZCB2YWx1ZXMgaW4gc2VyaWFsIEFQSQoKCSogd2luZG93cy9kY2UuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIE5VTEwgcG9pbnRlciBjaGVjayB3aXRoaW4gRENFX0FkZENsaXBSZWN0cyBmdW5jdGlvbi4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglPcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2YgTG9hZFN0cmluZ0EuCgoJKiBkb2N1bWVudGF0aW9uL3gxMWRydjogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglUZXh0IG9mIFdXTiBhcnRpY2xlICJUaGUgWDExIGRyaXZlciIuCgoJKiBkb2N1bWVudGF0aW9uL0hPV1RPLXdpbmVsaWI6CglXaWxidXIgTi4gRGFsZSA8d2lsYnVyLmRhbGVAbHVtaW4ubmw+CglXaW5lTGliIGRvZXMgbm90IHN1cHBvcnQgV2luMTYuIFJlbW92ZWQgcmVmZXJlbmNlcyB0byBXaW4xNiBhbmQgV2luCgkzLnggaW4gdGhlIGludHJvZHVjdGlvbi4gU3RhbmRhcmRpemVkIGNhcGl0YWxpemF0aW9uIG9mIFdpbmUgYW5kCglXaW5lTGliLiBBZGRlZCBkb2N1bWVudGF0aW9uIGZvciBjb21waWxpbmcgYSBzaW1wbGUgIkhlbGxvIFdvcmxkIgoJV2luZUxpYiBwcm9ncmFtLgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHNldHRpbmcgb2YgY3Vyc29yIHBvc3RpdGlvbiB0byBNU0dfUG9zdFRvUXVldWUuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJV01fU0VUUkVEUkFXIHNob3VsZCByZXBhaW50IHRoZSBsaXN0Ym94IHdoZW4gc2V0IHRvIG9uIGlmIHNvbWV0aGluZwoJaGFzIGJlZW4gY2hhbmdlZC4KCjIwMDAtMDYtMTQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy9jdmR1bXAvTWFrZWZpbGUuaW4sIHRvb2xzL3dtYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJUmVtb3ZlZCBAUFJPR0VYVEAgKGl0IHdhcyBicm9rZW4gYW55d2F5KS4KCUltcHJvdmVkICdtYWtlIGluc3RhbGwnLgoJQ2xlYW5lZCB1cCB0aGUgbWFpbiBNYWtlZmlsZS4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJQ29udmVydFRvR2xvYmFsSGFuZGxlOiBmaXhlZCBoYW5kbGUgbGVhay4KCgkqIGluY2x1ZGUvb3B0aW9ucy5oOgoJRml4ZWQgb3B0aW9ucyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCU1hZGUgU2V0V2luZG93UG9zIGhhbmRsZSB0aGUgY2FzZSB3aGVuIGluc2VydGluZyBhIHdpbmRvdyBhZnRlciBpdHNlbGYKCShkb24ndCBuZWVkIHRvIGNoYW5nZSB0aGUgWm9yZGVyKS4KCgkqIGRvY3VtZW50YXRpb24vb3BlbmdsOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVVwZGF0ZWQgT3BlbkdMIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldCB0aGUgYmFzZSBmb3IgdGhlIG9yZGluYWxzIG9mIG9sZXBybzMyIHRvIDI0OC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDoKCU1hdHRoZXcgSi4gRnJhbmNpcyA8bWZyYW5jaXNAcGx1cy5uZXQudWs+CglBbGlhcyBOTVVQRE9XTiB0byBiZSBOTV9VUERPV04sIHJhdGhlciB0aGFuIG92ZXJ3cml0ZSBOTV9VUERPV04gd2l0aAoJTk1VUERPV04uCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCWppbXJlZ2FuQGxpdHN1LmllCglBZGRlZCBkaWZmdGltZSBmdW5jdGlvbi4KCjIwMDAtMDYtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvd21jLy5jdnNpZ25vcmUsIHRvb2xzL3dtYy9DSEFOR0VTLCB0b29scy93bWMvTWFrZWZpbGUuaW4sIHRvb2xzL3dtYy9sYW5nLmMsIHRvb2xzL3dtYy9sYW5nLmgsIHRvb2xzL3dtYy9sYW5ndWFnZS5jLCB0b29scy93bWMvbWNsLmMsIHRvb2xzL3dtYy9tY3kueSwgdG9vbHMvd21jL3V0aWxzLmMsIHRvb2xzL3dtYy91dGlscy5oLCB0b29scy93bWMvd21jLmMsIHRvb2xzL3dtYy93bWMuaCwgdG9vbHMvd21jL3dtYy5tYW4sIHRvb2xzL3dtYy93bWN0eXBlcy5oLCB0b29scy93bWMvd3JpdGUuYywgdG9vbHMvd21jL3dyaXRlLmgsIHVuaWNvZGUvd2N0b21iLmMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUluaXRpYWwgcmVsZWFzZSBvZiB0aGUgbWVzc2FnZSBjb21waWxlci4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy9zaGVsbDMyL3NoZm9sZGVyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gbmV3IGRsbCBzaGZvbGRlci5kbGwKCS0gc21hbGwgZml4ZXMKCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3BwbC5sLCB0b29scy93cmMvcHB5LnksIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbjoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEJ1Z2ZpeDogQ29ycmVjdGVkICJvZmYgYnkgb25lIiBlcnJvciBpbiB0aGUgbGluZW51bWJlciB3aGlsZSBwYXJzaW5nCgkgIHJlc291cmNlLgoJLSBCdWdmaXg6IEEgc2VnZmF1bHQgd291bGQgb2NjdXIgaWYgbWVzc2FnZXRhYmxlcyB3ZXJlIHBhcnNlZCB3aXRob3V0CgkgIG1lbW9yeSBvcHRpb25zIGF0dGFjaGVkLiBBbHNvIGFkZGVkIGJ1ZmZlci1vdmVyZmxvdyBzYWZlZ3VhcmQgd2hpbGUKCSAgY29udmVydGluZyBiZXR3ZWVuIGJ5dGVvcmRlcnMuCgktIEZpbmlzaGVkIHJlbWFwcGluZyB1c2VydHlwZSByZXNvdXJjZXMgb250byBzdGFuZGFycyB0eXBlcyBieSB0cmlja2luZwoJICB0aGUgcGFyc2VyIGludG8gYWNjZXB0aW5nIGEgZGlmZmVyZW50IHRva2VuLiBUaGUgcmVtYXBwaW5nIGNhbiBiZQoJICBkaXNhYmxlZCB3aXRoIGEgbmV3IGNvbW1hbmRsaW5lIG9wdGlvbiAnLW0nLgoJLSBSZXNvbHZlZCBzb21lIHdhcm5pbmcgYWJvdXQgY2hhcnMgdXNlZCBhcyBpbmRleCBvbiBTR0kgTzIgbWFjaGluZQoJICAodGhlIGN0eXBlIGlzWFhYKCkgcm91dGluZXMgYXJlIG1hY3JvcyB0aGVyZSkuCgoJKiBvbGUvb2xlMm5scy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUNvbW1lbnRlZCBvdXQgSXNCYWRXcml0ZVB0ciBjaGVjay4gTWFrZXMgd2luaGxwMzIuZXhlIGhhcHB5IGluCglleHRlbmRlZCBzZWFyY2guCgoJKiBkb2N1bWVudGF0aW9uL29wZW5nbDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglPcGVuR0wgZG9jdW1lbnRhdGlvbi4KCgkqIGZpbGVzL2RyaXZlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCURSSVZFX0dldEZyZWVTcGFjZSgpIGlzIHN1cHBvc2VkIHRvICphbHdheXMqIHJldHVybiAwIGZvciAiYXZhaWwiCglvbiBDRC1ST01zLCBldmVuIGlmIENELVJPTSBpcyAqbm90KiBtb3VudGVkIGFuZCB0aHVzIHRoZSBtb3VudCBwb2ludAoJbm9ybWFsbHkgcmV0dXJucyB0aGUgImF2YWlsIiBvZiB0aGUgY29ycmVzcG9uZGluZyBwYXJ0aXRpb24uCglDbGVhbmVkIHVwIEdldERpc2tGcmVlU3BhY2VBLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCURvIG5vdCBjaGFuZ2UgdGhlIFdTX0NISUxEIHN0eWxlIGluIFNldFBhcmVudC4KCgkqIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBvbGUvb2xlMm5scy5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9vbGUzMi9kYXRhY2FjaGUuYywgZGxscy9vbGUzMi9vbGUybmxzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHJlZy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxzdHJpbmcuYywgZGxscy92ZXJzaW9uL2luZm8uYzoKCVVzZSB0aGUgVW5pY29kZSBzdHJpbmcgZnVuY3Rpb25zIGZyb20gd2luZS91bmljb2RlLmggaW5zdGVhZCBvZiB0aGUKCWNydGRsbCBvbmVzLgoKCSogaW5jbHVkZS93aW5lL3VuaWNvZGUuaCwgdW5pY29kZS9NYWtlZmlsZS5pbiwgdW5pY29kZS9zdHJpbmcuYzoKCUFkZGVkIGEgY291cGxlIG9mIFVuaWNvZGUgc3RyaW5nIHJvdXRpbmVzLgoKCSogZGxscy9kZHJhdy9jb252ZXJ0LmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2hlbHBlci5jLCBkbGxzL2RkcmF3L3gxMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCAyNC0+MzIgcGFja2VkIHBpeGVsIG1hcHBpbmcgc3VwcG9ydCB0byBjb252ZXJ0LgoJU2xpZ2h0bHkgcmV3cm90ZSB0aGUgY29udmVyc2lvbiBpbml0aWFsaXNhdGlvbi4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3RyaXAgd2hpdGVzcGFjZSBmcm9tIGZyb250IG9mIHByb2ZpbGUgdmFsdWVzLgoKMjAwMC0wNi0xMiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2V4dGljb24uYywgd2luMzIvb3JkaW5hbHMuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJSW1wbGVtZW50YXRpb24gZm9yIFByaXZhdGVFeHRyYWN0SWNvbnMsIFByaXZhdGVFeHRyYWN0SWNvbkV4LgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL29sZTMyL2Vycm9yaW5mby5jLCBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGltcGxlbWVudGVkIEdldC9TZXRUaHJlYWRMb2NhbGUKCS0gYWRkZWQgY29tbWVudCBhYm91dCBPbGVFcnJvckluZm8gZmllbGQgaW4gVEVCCgoJKiBpbmNsdWRlL2RkcmF3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0cnVjdCBvZmZzZXRzIHNvIHVuZGVyc3RhbmRpbmcgZ2FtZSBkaXNhc3NlbWJseSBpcyBlYXNpZXIuCgoJKiBkbGxzL3dpbmVwcy9icnVzaC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSWYgcHJpbnRlciBvbmx5IHN1cHBvcnRzIGxldmVsIDEgUG9zdFNjcmlwdCB0aGVuIGNvbXBsYWluIHJhdGhlciB0aGFuCgl0cnlpbmcgdG8gdXNlIGEgcGF0dGVybiBjb2xvciBzcGFjZS4gIFRoYW5rcyB0byBEYXZpZCBHb29kZW5vdWdoLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvcnJlY3RlZCBJc0VxdWFsR1VJRCBwcm90b3R5cGUuCgoJKiBkbGxzL2RkcmF3L2RnYTIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglyZXBsYWNlZCBhIERQUklOVEYgYnkgYSBUUkFDRQoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gbW92ZWQgdGhlICdjb25zdHJ1Y3RvcicgaW50byBhIHJlYWwgRExMIGluaXQgZnVuY3Rpb24KCS0gbWFrZSBPcGVuR0wzMiBkZXBlbmRhbnQgb24gdGhlIFgxMSBkcml2ZXIKCgkqIG9iamVjdHMvZGMuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+Cglob29rVGh1bmsgd2FzIG5vdCBpbml0aWFsaXplZCBpbiBHZXREY1N0YXRlLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCVVzZSB0aGUgZm9udCBkZWZhdWx0IGNoYXIgZm9yIHVuZGVmaW5lZCBjaGFyYWN0ZXJzIHdoZW4gbWFwcGluZyBmcm9tCglVbmljb2RlLgoKCSogZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbCwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9leHQsIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfbm9ybSwgZGxscy9vcGVuZ2wzMi9tYWtlX29wZW5nbF9zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX2V4dC5jLCBkbGxzL29wZW5nbDMyL29wZW5nbF9ub3JtLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJTmV3IE9wZW5HTCB0aHVuayBnZW5lcmF0aW9uIHNjcmlwdC4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVtb3ZlZCB0aGUgUmVsZWFzZSBpbiBjYXNlIG9mIGVycm9yIGFzIHdlIGRvIG5vdCBBZGRSZWYgYW55bW9yZS4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglNYWRlIHRoZSBETEwgdmVyc2lvbiBjbGFzaCBlcnJvciBtZXNzYWdlIG1vcmUgdmVyYm9zZS4KCgkqIHVuaWNvZGUvY185MzIuYywgdW5pY29kZS9jXzkzNi5jLCB1bmljb2RlL2NfOTQ5LmMsIHVuaWNvZGUvY185NTAuYywgdW5pY29kZS9jYXNlbWFwLmMsIHVuaWNvZGUvY3BtYXAucGwsIHVuaWNvZGUvbWJ0b3djLmMsIHVuaWNvZGUvd2N0b21iLmMsIHVuaWNvZGUvY18wNDIuYywgdW5pY29kZS9jXzEwMDAwLmMsIHVuaWNvZGUvY18xMDAwNi5jLCB1bmljb2RlL2NfMTAwMDcuYywgdW5pY29kZS9jXzEwMDI5LmMsIHVuaWNvZGUvY18xMDA2LmMsIHVuaWNvZGUvY18xMDA3OS5jLCB1bmljb2RlL2NfMTAwODEuYywgdW5pY29kZS9jXzEwMjYuYywgdW5pY29kZS9jXzEyNTAuYywgdW5pY29kZS9jXzEyNTEuYywgdW5pY29kZS9jXzEyNTIuYywgdW5pY29kZS9jXzEyNTMuYywgdW5pY29kZS9jXzEyNTQuYywgdW5pY29kZS9jXzEyNTUuYywgdW5pY29kZS9jXzEyNTYuYywgdW5pY29kZS9jXzEyNTcuYywgdW5pY29kZS9jXzEyNTguYywgdW5pY29kZS9jXzIwODY2LmMsIHVuaWNvZGUvY18yODU5MS5jLCB1bmljb2RlL2NfMjg1OTIuYywgdW5pY29kZS9jXzI4NTkzLmMsIHVuaWNvZGUvY18yODU5NC5jLCB1bmljb2RlL2NfMjg1OTUuYywgdW5pY29kZS9jXzI4NTk2LmMsIHVuaWNvZGUvY18yODU5Ny5jLCB1bmljb2RlL2NfMjg1OTguYywgdW5pY29kZS9jXzI4NTk5LmMsIHVuaWNvZGUvY180MjQuYywgdW5pY29kZS9jXzQzNy5jLCB1bmljb2RlL2NfNTAwLmMsIHVuaWNvZGUvY183MzcuYywgdW5pY29kZS9jXzc3NS5jLCB1bmljb2RlL2NfODUwLmMsIHVuaWNvZGUvY184NTIuYywgdW5pY29kZS9jXzg1NS5jLCB1bmljb2RlL2NfODU2LmMsIHVuaWNvZGUvY184NTcuYywgdW5pY29kZS9jXzg2MC5jLCB1bmljb2RlL2NfODYxLmMsIHVuaWNvZGUvY184NjIuYywgdW5pY29kZS9jXzg2My5jLCB1bmljb2RlL2NfODY0LmMsIHVuaWNvZGUvY184NjUuYywgdW5pY29kZS9jXzg2Ni5jLCB1bmljb2RlL2NfODY5LmMsIHVuaWNvZGUvY184NzQuYywgdW5pY29kZS9jXzg3NS5jLCB1bmljb2RlL2NfODc4LmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGluY2x1ZGUvY2FzZW1hcC5oLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBtZW1vcnkvc3RyaW5nLmMsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY18wMzcuYzoKCVJlaW1wbGVtZW50ZWQgVW5pY29kZSBjYXNlIG1hcHBpbmcgaW4gYSBzbGlnaHRseSBtb3JlIGVmZmljaWVudCB3YXkuCglNb3ZlZCBjYXNlIG1hcHBpbmcgc3VwcG9ydCB0byB0aGUgdW5pY29kZSBkaXJlY3RvcnkuCglTb21lIGNsZWFudXBzIGluIGNwbWFwLnBsLCB1c2UgV0NIQVIgaW5zdGVhZCBvZiB1bnNpZ25lZCBzaG9ydC4KCjIwMDAtMDYtMTEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdlIHdlcmUgbm90IHByb3Blcmx5IG1hc2tpbmcgdGhlIGl0ZW0gdGhhdCB3YXMgc2VudCB3aXRoIHRoZSBtZXNzYWdlCglhbmQgYWxzbyB3ZSB3aGVyZSBub3Qgc2VuZGluZyB0aGUgbm90aWZpY2F0aW9uIGF0IHRoZSBwcm9wZXIgdGltZXMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6CglKYXNvbiBNYXdkc2xleSA8amFzb25AbWFjYWRhbWlhbi5jb20+CglUYWtlIGZvY3VzIGJlZm9yZSBzZXR0aW5nIHRoZSBjYXJldCBwb3NpdGlvbiBhbmQgc2VsZWN0aW9ucy4KCgkqIHJlbGF5MzIvc25vb3AuYzogSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXggZm9yIGNvbXBpbGVyIHdhcm5pbmcgKGR1ZSB0byBzZXRqbXAvbG9uZ2ptcCBiZWluZyB1c2VkIGZvcgoJZXhjZXB0aW9uIGhhbmRsaW5nKS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzYXZlIGFuZCByZXNldCBvZiBTZXRCS01vZGUgdmFsdWVzIGluIFdNX1BBSU5ULgoJQWRkZWQgaGFuZGxpbmcgb2YgbFBhcmFtIHZhbHVlIGluIEJNX1NFVFNUWUxFLgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmgsIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaCwgaW5jbHVkZS93aW5lL3dpbmRlZjE2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS9kaW5wdXQuaCwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS9kc291bmQuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9pbWFnZWhscC5oLCBpbmNsdWRlL2ltbS5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvbW1kZGsuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvbmV0c3BpLmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWRsZy5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvcmljaGVkaXQuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS90YXBpLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2luaW5ldC5oLCBpbmNsdWRlL3dpbm5ldHdrLmgsIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW5zdmMuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvYW5pbWF0ZS5oLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvY3J0ZGxsLmgsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZDNkY2Fwcy5oLCBpbmNsdWRlL2QzZHR5cGVzLmgsIGluY2x1ZGUvZGRlbWwuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJUmVvcmRlcmVkIHRoZSBDQUxMQkFDSyBhbmQgV0lOQVBJIGRpcmVjdGl2ZXMgc28gdGhhdCBpdCBjb21waWxlcyB3aXRoCglvbGQgZysrIHZlcnNpb25zLgoKCSogaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5kZWYuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSBEZWZpbmUgSElDIGluIHRoaXMgaGVhZGVyIHJhdGhlciB0aGFuIGluIHdpbmRlZi5oICh0aGlzIGlzIHRoZQoJICBjb3JyZWN0IHRoaW5nIHRvIGRvIGFsdGhvdWdoIGl0IGlzIHVucmVsYXRlZCB0byB0aGUgQysrIGlzc3VlcykuCgktIFdJTkVfSElDIGlzIGFuIGludGVybmFsIHN0cnVjdHVyZSBhbmQgaXQgd29uJ3QgY29tcGlsZSBpbiBDKysgYmVjYXVzZQoJICBpdCBjb250YWlucyBhIGZpZWxkIGNhbGxlZCAncHJpdmF0ZScuIEVuY2xvc2VkIGluIGEgX19XSU5FX18gaWZkZWYuCgktIFJlb3JkZXJlZCB0aGUgQ0FMTEJBQ0sgYW5kIFdJTkFQSSBkaXJlY3RpdmVzIHNvIHRoYXQgaXQgY29tcGlsZXMgd2l0aAoJICBvbGQgZysrIHZlcnNpb25zLgoKCSogaW5jbHVkZS93aW5zcG9vbC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIGEgdHlwbyBpbiB0aGUgbmFtZSBvZiBGcmVlUHJpbnRlck5vdGlmeUluZm8uCgoJKiBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2h0dHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJSFRUUCBwcm90b2NvbCBub3cgc3VwcG9ydGVkLCBJbnRlcm5ldENyYWNrVXJsIGZpeGVkLCBsb3RzIG9mIG90aGVyCglmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIHRvb2xzL2J1aWxkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL291dHB1dC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29sZWF1dDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBNaW5vciBBUEkgZmlsZXMgZml4ZXMKCS0gVXNlIG91dHB1dCBwcmVmaXggaW5zdGVhZCBvZiBoaWdoIG9yZGVyIGZ1bmN0aW9ucyB0aGF0LCBmb3Igc29tZQoJICByZWFzb24sIGxlYWtzIG1lbW9yeS4gVGhlIG1lbW9yeSB1c2FnZSBvZiB3aW5hcGlfY2hlY2sgaXMgbm93IGdyZWF0bHkKCSAgcmVkdWNlZC4gOi0pCgktIFR1cm5lZCBvbiBhcmd1bWVudCBraW5kIGNoZWNraW5nIG9mIGRvdWJsZXMgYnkgZGVmYXVsdAoKCSogZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglSZW1vdmUgc2Vjb25kIGltcG9ydCBvZiB3aW5zcG9vbC5kcnYuCgoJKiBjb250cm9scy9zdGF0aWMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBzdXBwb3J0IGZvciBpY29ucyBzZXQgYnkgU1RNX1NFVElNQUdFLgoKCSogZGxscy93aW5lcHMvYml0bWFwLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglUZXJtaW5hdGUgaW1hZ2UgZGF0YSB3aXRoIGEgJz4nIFtUaGUgUFNMUk0gaXMgcmF0aGVyIHZhZ3VlIGFib3V0IHRoaXNdLgoJVGhhbmtzIHRvIEJlcm5kIEhlcmQuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUpvaG4gRWxsaW90IDxqY2VAc2Vhc2lwLmRlbW9uLmNvLnVrPgoJU29tZSBmb250cyBtYXkgaGF2ZSBubyBjaGFyYWN0ZXJzIGF0IGFsbCBmb3Igc29tZSByZWFzb24sIGF2b2lkIGNyYXNoZXMuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglBZGQgYSBmZXcgbW9yZSBmbGFncyB0byB0aG9zZSByZWNvZ25pemVkIHdoZW4gZG9pbmcgdHJhY2UrZHNvdW5kLgoKCSogb2JqZWN0cy90ZXh0LmM6IEphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRG9uJ3QgcHJpbnQgdWlMZW5ndGhEcmF3biBpbiB0aGUgRklYTUUgaW4gRHJhd1RleHRFeEEuICBJdHMgYW4gb3V0cHV0Cgl2YXJpYWJsZSwgbm90IGFuIGlucHV0IHZhcmlhYmxlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglVc2UgWENyZWF0ZUltYWdlL1hHZXRTdWJJbWFnZSBpbnN0ZWFkIG9mIFhHZXRJbWFnZSBmb3IKCVgxMURSVl9ESUJfR2V0SW1hZ2VCaXRzLgoKMjAwMC0wNi0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHVuaWNvZGUvY185NTAuYywgdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9jcHRhYmxlLmMsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY18wNDIuYywgdW5pY29kZS9jXzEwMDAwLmMsIHVuaWNvZGUvY18xMDAwNi5jLCB1bmljb2RlL2NfMTAwNzkuYywgdW5pY29kZS9jXzEwMDgxLmMsIHVuaWNvZGUvY18xMjUzLmMsIHVuaWNvZGUvY18xMjU1LmMsIHVuaWNvZGUvY18xMjU3LmMsIHVuaWNvZGUvY18yODU5My5jLCB1bmljb2RlL2NfMjg1OTYuYywgdW5pY29kZS9jXzI4NTk3LmMsIHVuaWNvZGUvY18yODU5OC5jLCB1bmljb2RlL2NfNDI0LmMsIHVuaWNvZGUvY184NTYuYywgdW5pY29kZS9jXzg1Ny5jLCB1bmljb2RlL2NfODY0LmMsIHVuaWNvZGUvY184NzQuYywgdW5pY29kZS9jXzkzMi5jLCB1bmljb2RlL2NfOTM2LmMsIHVuaWNvZGUvY185NDkuYywgbWVtb3J5L2NvZGVwYWdlLmM6CglBZGRlZCBzdXBwb3J0IGZvciBzeW1ib2wgY29kZXBhZ2UuCglJbXByb3ZlZCBoYW5kbGluZyBvZiB1bmRlZmluZWQgY29kZXBhZ2UgY2hhcmFjdGVycy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCU1ha2Ugc3VyZSBHZXRNb2R1bGVGaWxlTmFtZTE2IGRvZXMgbm90IHJldHVybiBnYXJiYWdlIGV2ZW4gaWYgdGhlIHBhdGgKCWlzIG5vdCB2YWxpZCAodGhhbmtzIHRvIEFuZHJlYXMgTW9ocikuCgoJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFmb250Lmg6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFzc2lnbiBjb2RlcGFnZSBmb3IgZXZlcnkgWDExIGZvbnQgc3VmZml4LCBhbmQgdXNlIGl0IGZvciBjb252ZXJ0aW5nCgl0ZXh0IHRvIGRpc3BsYXkuCgoJKiB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvY29kZV9wYWdlLmMsIGRsbHMva2VybmVsL2tlcm5lbC5zcGVjLCBtZW1vcnkvTWFrZWZpbGUuaW4sIG1lbW9yeS9jb2RlcGFnZS5jLCBtZW1vcnkvc3RyaW5nLmM6CglSZXdyb3RlIGNvZGVwYWdlIHN1cHBvcnQgdG8gdXNlIHRoZSBuZXcgY29kZXBhZ2UgdGFibGVzLgoKCSogdW5pY29kZS9jcG1hcC5wbCwgdW5pY29kZS9tYnRvd2MuYywgdW5pY29kZS93Y3RvbWIuYywgdW5pY29kZS9jXzg1Ny5jLCB1bmljb2RlL2NfODYwLmMsIHVuaWNvZGUvY184NjEuYywgdW5pY29kZS9jXzg2Mi5jLCB1bmljb2RlL2NfODYzLmMsIHVuaWNvZGUvY184NjQuYywgdW5pY29kZS9jXzg2NS5jLCB1bmljb2RlL2NfODY2LmMsIHVuaWNvZGUvY184NjkuYywgdW5pY29kZS9jXzg3NC5jLCB1bmljb2RlL2NfODc1LmMsIHVuaWNvZGUvY184NzguYywgdW5pY29kZS9jXzkzMi5jLCB1bmljb2RlL2NfOTM2LmMsIHVuaWNvZGUvY185NDkuYywgdW5pY29kZS9jXzk1MC5jLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCBpbmNsdWRlL3dpbm5scy5oLCB1bmljb2RlL2NfMDM3LmMsIHVuaWNvZGUvY18xMDAwMC5jLCB1bmljb2RlL2NfMTAwMDYuYywgdW5pY29kZS9jXzEwMDA3LmMsIHVuaWNvZGUvY18xMDAyOS5jLCB1bmljb2RlL2NfMTAwNi5jLCB1bmljb2RlL2NfMTAwNzkuYywgdW5pY29kZS9jXzEwMDgxLmMsIHVuaWNvZGUvY18xMDI2LmMsIHVuaWNvZGUvY18xMjUwLmMsIHVuaWNvZGUvY18xMjUxLmMsIHVuaWNvZGUvY18xMjUyLmMsIHVuaWNvZGUvY18xMjUzLmMsIHVuaWNvZGUvY18xMjU0LmMsIHVuaWNvZGUvY18xMjU1LmMsIHVuaWNvZGUvY18xMjU2LmMsIHVuaWNvZGUvY18xMjU3LmMsIHVuaWNvZGUvY18xMjU4LmMsIHVuaWNvZGUvY18yMDg2Ni5jLCB1bmljb2RlL2NfMjg1OTEuYywgdW5pY29kZS9jXzI4NTkyLmMsIHVuaWNvZGUvY18yODU5My5jLCB1bmljb2RlL2NfMjg1OTQuYywgdW5pY29kZS9jXzI4NTk1LmMsIHVuaWNvZGUvY18yODU5Ni5jLCB1bmljb2RlL2NfMjg1OTcuYywgdW5pY29kZS9jXzI4NTk4LmMsIHVuaWNvZGUvY18yODU5OS5jLCB1bmljb2RlL2NfNDI0LmMsIHVuaWNvZGUvY180MzcuYywgdW5pY29kZS9jXzUwMC5jLCB1bmljb2RlL2NfNzM3LmMsIHVuaWNvZGUvY183NzUuYywgdW5pY29kZS9jXzg1MC5jLCB1bmljb2RlL2NfODUyLmMsIHVuaWNvZGUvY184NTUuYywgdW5pY29kZS9jXzg1Ni5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgV0NfTk9fQkVTVF9GSVRfQ0hBUiBhbmQgZGVmYXVsdCBjaGFyIHBhcmFtZXRlcnMgaW4KCWNwX3djc3RvbWJzLgoJTWlub3IgY29zbWV0aWMgZml4ZXMuCgoJKiBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jOgoJT3ZlIEthYXZlbiA8b3Zla0B0cmFuc2dhbWluZy5jb20+CglDYWxsIFRTWEZsdXNoIGFmdGVyIHNldHRpbmcgREdBIHBhbGV0dGUsIHNvIGl0IHVwZGF0ZXMgaW1tZWRpYXRlbHkuCgoyMDAwLTA2LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdW5pY29kZS9jXzI4NTkxLmMsIHVuaWNvZGUvY18yODU5Mi5jLCB1bmljb2RlL2NfMjg1OTMuYywgdW5pY29kZS9jXzI4NTk0LmMsIHVuaWNvZGUvY18yODU5NS5jLCB1bmljb2RlL2NfMjg1OTYuYywgdW5pY29kZS9jXzI4NTk3LmMsIHVuaWNvZGUvY18yODU5OC5jLCB1bmljb2RlL2NfMjg1OTkuYywgdW5pY29kZS9jXzQyNC5jLCB1bmljb2RlL2NfNDM3LmMsIHVuaWNvZGUvY181MDAuYywgdW5pY29kZS9jXzczNy5jLCB1bmljb2RlL2NfNzc1LmMsIHVuaWNvZGUvY184NTAuYywgdW5pY29kZS9jXzg1Mi5jLCB1bmljb2RlL2NfODU1LmMsIHVuaWNvZGUvY184NTYuYywgdW5pY29kZS9jXzg1Ny5jLCB1bmljb2RlL2NfODYwLmMsIHVuaWNvZGUvY184NjEuYywgdW5pY29kZS9jXzg2Mi5jLCB1bmljb2RlL2NfODYzLmMsIHVuaWNvZGUvY184NjQuYywgdW5pY29kZS9jXzg2NS5jLCB1bmljb2RlL2NfODY2LmMsIHVuaWNvZGUvY184NjkuYywgdW5pY29kZS9jXzg3NC5jLCB1bmljb2RlL2NfODc1LmMsIHVuaWNvZGUvY184NzguYywgdW5pY29kZS9jXzkzMi5jLCB1bmljb2RlL2NfOTM2LmMsIHVuaWNvZGUvY185NDkuYywgdW5pY29kZS9jXzk1MC5jLCB1bmljb2RlL2NwbWFwLnBsLCB1bmljb2RlL2NwdGFibGUuYywgdW5pY29kZS9kZWZhdWx0cywgdW5pY29kZS9tYnRvd2MuYywgdW5pY29kZS93Y3RvbWIuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL3dpbmUvdW5pY29kZS5oLCB1bmljb2RlLy5jdnNpZ25vcmUsIHVuaWNvZGUvTWFrZWZpbGUuaW4sIHVuaWNvZGUvY18wMzcuYywgdW5pY29kZS9jXzEwMDAwLmMsIHVuaWNvZGUvY18xMDAwNi5jLCB1bmljb2RlL2NfMTAwMDcuYywgdW5pY29kZS9jXzEwMDI5LmMsIHVuaWNvZGUvY18xMDA2LmMsIHVuaWNvZGUvY18xMDA3OS5jLCB1bmljb2RlL2NfMTAwODEuYywgdW5pY29kZS9jXzEwMjYuYywgdW5pY29kZS9jXzEyNTAuYywgdW5pY29kZS9jXzEyNTEuYywgdW5pY29kZS9jXzEyNTIuYywgdW5pY29kZS9jXzEyNTMuYywgdW5pY29kZS9jXzEyNTQuYywgdW5pY29kZS9jXzEyNTUuYywgdW5pY29kZS9jXzEyNTYuYywgdW5pY29kZS9jXzEyNTcuYywgdW5pY29kZS9jXzEyNTguYywgdW5pY29kZS9jXzIwODY2LmM6CglBZGRlZCBhIGJ1bmNoIG9mIGNvZGUgcGFnZSB0YWJsZXMgZm9yIG11bHRpYnl0ZTwtPndpZGUgY2hhcgoJY29udmVyc2lvbnMgKHdpdGggdGhlIGhlbHAgb2YgRG1pdHJ5IFRpbW9zaGtvdikuCgoyMDAwLTA2LTA4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS93aW5ubHMuaCwgbWVtb3J5L3N0cmluZy5jLCBtaXNjL2xzdHIuYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmM6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUltcGxlbWVudCBOVERMTC50b3d1cHBlciBhbmQgTlRETEwudG93bG93ZXIgdXNpbmcgYWxyZWFkeSBleGlzdGluZwoJY2FzZSBjb252ZXJzaW9uIHRhYmxlcy4gUmVwbGFjZSBhbGwgZGlyZWN0IGNhbGxzIHRvIHRvd3VwcGVyL3Rvd2xvd2VyCgllaXRoZXIgdG8gTlRETEwgZm9yIGNvcmUgb3IgdG8gQ1JURExMIGlmIGxhdHRlciBhbHJlYWR5IHVzZWQgaW4gdGhlCglub24gY29yZSBkbGwuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6IFNoaSBRdWFuIEhlIChvZiBDb3JlbCkKCVRoZSBpbXBsZW1lbnRhdGlvbiBvZiBTdHJldGNoQmx0IGluIFdJTkUgZG9lcyBub3QgdXNlIHRoZSBmb3JlZ3JvdW5kIGFuZAoJYmFja2dyb3VuZCBjb2xvciB3aGVuIGEgYml0bWFwIGlzIGNvcGllZCBmcm9tIG1vbm8gdG8gbW9uby4gIFRoaXMgaXMKCW5vdCB0aGUgY2FzZSBpbiB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIHVuZGVyIFdpbmRvd3MgYnV0IE1TRE4gZGlkCglub3QgZG9jdW1lbnQgaXQuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVdpbmRvd3MgbXVzdCB1cGRhdGUgdGhlIHJpZ2h0IGVkZ2UgKC0xKSBvZiB0aGUgbGFzdCBwYW5lbCB1cG9uIGRyYXdpbmcKCWluc3RlYWQgb2YgcmVseWluZyBvbiBXTV9TSVpFLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVByb3Blcmx5IGhhbmRsZSBJbnNlcnRJdGVtIHdpdGggYW4gaW52YWxpZCBIVFJFRUlURU0uIFdpbmRvd3MgaGFuZGxlcwoJdGhlc2UgbGlrZSBhIFRWSV9MQVNULgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVR1cmNoYW5vdiBTZXJnZWkgPHR1cmNoYW5vdkBvdHZwcmltLnJ1PgoJREdBIGNvbXBpbGUgZml4LgoKCSogZGxscy9NYWtlZmlsZS5pbjogQWRkZWQgbWlzc2luZyBkZXBlbmRlbmN5LgoKCSogZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCVJlbW92ZWQgdGhlIC54Y25sbmsgc2VjdGlvbiBoYWNrLCBhbmQgcmVwbGFjZWQgaXQgYnkgYW5vdGhlciBoYWNrIGluCgl0aGUgZGVidWdnZXIgQ1JFQVRFX1BST0NFU1MgZXZlbnQgaGFuZGxpbmcuCgoJKiBkbGxzL01ha2VmaWxlLmluOiBNZXJnZWQgbW91c2UgZGxsIGludG8gVVNFUi4KCgkqIHByb2dyYW1zL3dpbmhlbHAvbWFjcm8uYzogQ29tcGlsZSBmaXguCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvdGh1bmsuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2F0b20uYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9rZXJuZWwzMi5jOgoJUmVtb3ZlZCBhIGZldyB1bm5lY2Vzc2FyeSBpbmNsdWRlcy4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci9kaXNwbGF5LnNwZWMsIGRsbHMvdXNlci9tb3VzZS5jLCBkbGxzL3VzZXIvbW91c2Uuc3BlYywgZGxscy91c2VyL21vdXNlcmMucmMsIGRsbHMvdXNlci91c2VyX21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2RpbnB1dC9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGlucHV0LnNwZWM6CglNZXJnZWQgbW91c2UgZGxsIGludG8gVVNFUi4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkbGxzL3JpY2hlZGl0L01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGxpYnRlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCByZXNvdXJjZXMvTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW46CglTaW1wbGlmaWVkIHdyYyBmbGFncyBoYW5kbGluZy4KCgkqIHdpbmRvd3Mvd2luLmM6CglZZXQgYW5vdGhlciBhdHRlbXB0IGF0IGZpeGluZyBDV19VU0VERUZBVUxUIGhhbmRsaW5nLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJVXNlIEZJTEVfU0hBUkVfUkVBRCB0byBvcGVuIHRoZSBmaWxlIGluIEdldEJpbmFyeVR5cGVBLgoKCSogZGVidWdnZXIvbW9kdWxlLmM6CglTdHJpcCBwYXRoIG5hbWUgZnJvbSBkbGwgd2hlbiBhZGRpbmcgc3ltYm9scy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJU2VuZCBmdWxsIHBhdGggbmFtZSBhbmQgZGVidWcgaW5mb3JtYXRpb24gaW4gbG9hZF9kbGwgZXZlbnQuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvbW9kdWxlLmg6CglQYXNzIHRoZSBtYWluIGV4ZSBuYW1lIGluIHRoZSBDUkVBVEVfUFJPQ0VTUyBkZWJ1ZyBldmVudC4KCgkqIHNjaGVkdWxlci9zeXNkZXBzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1ha2UgYSBiZXR0ZXIgZ3Vlc3MgdG8gZmluZCB0aGUgdG9wIG9mIHRoZSBpbml0aWFsIHN0YWNrLgoJRml4ZWQgRnJlZUJTRCBjb21waWxlIHByb2JsZW0gKHRoYW5rcyB0byBHZXJhbGQgUGZlaWZmZXIpLgoKCSogd2luZG93cy9jdXJzb3JpY29uLmM6CglMb3Vpcy1QaGlsaXBwZSBHYWdub24gKG9mIE1hY2FkYW1pYW4gZm9yIENvcmVsKQoJU2VhcmNoIGZvciBhbHJlYWR5IGxvYWRlZCBDdXJzb3JJY29uIHdhcyBkb25lIHdpdGggdGhlIHdyb25nIGhhbmRsZSwKCXNvIGl0IHdhcyBsZWFraW5nIGljb25zLiBGaXhlZC4KCgkqIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvbmV3c3RydWMuaCwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9wcGwubCwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbiwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jLCB0b29scy93cmMvQ0hBTkdFUzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEltcGxlbWVudGVkIE1FU1NBR0VUQUJMRSByZXNvdXJjZSB0eXBlLgoJLSBVc2VydHlwZSByZXNvdXJjZXMgdGhhdCBjYXVzZSBhIHR5cGUtY2xhc2ggd2l0aCBkZWZpbmVkIHJlc291cmNlcwoJICBhcmUgbm93IGRldGVjdGVkIGFuZCBhIHdhcm5pbmcgaXMgZ2VuZXJhdGVkLiBTb21lIHR5cGVzIHNob3VsZCBiZQoJICByZXJvdXRlZCB0aHJvdWdoIG90aGVyIGNvZGUgc28gdGhhdCB0aGV5IHdpbGwgYmUgKHJlLSlpbnRlcnByZXRlZC4KCS0gQnVnZml4OiBMaW5lLWNvbnRpbnVhdGlvbiBpbiBzdHJpbmdzIGluIHJlc291cmNlcyBpbmNsdWRlIGEgbmV3bGluZS4KCSAgVGhpcyBgZmVhdHVyZScgZ290IGRlbGV0ZWQgd2l0aCB0aGUgYnVpbHRpbiBwcmVwcm9jZXNzb3IsIGJ1dCBoYXMgYmVlbgoJICBwdXQgYmFjayBpbnRvIHBsYWNlIChzZWUgbGFzdCBjaGFuZ2VzIGNvbW1lbnQgZnJvbSB2ZXJzaW9uIDEuMS4wKS4KCS0gQnVnZml4OiBUaGUgcHJlcHJvY2Vzc29yIG5vdyBjb3JyZWN0bHkgd2lsbCBzZWUgIlxcXHJcbiIgYXMgYSBsaW5lLQoJICBjb250aW51YXRpb24uCgktIEJ1Z2ZpeDogQXNzZW1ibGVycyBvbiBzb21lIHBsYXRmb3JtcyBkbyBub3QgdXNlIDE2Yml0IHF1YW50aXRpZXMKCSAgZm9yIGAud29yZCcuIFRoaXMgZGlyZWN0aXZlIGlzIG5vdyBjaGFuZ2VkIGludG8gYC5zaG9ydCcuCgktIEFsbCB0eXBlcyB0aGF0IGFjY2VwdCBpbmxpbmUgZGF0YSBkZWZpbml0aW9ucyAoYSBsYSBSQ0RBVEEpIG5vdwoJICBhbHNvIGFjY2VwdCBhIGZpbGUgc3BlY2lmaWNhdGlvbi4gVGhpcyB1bmlmaWVzIHRoZSBzdHJ1Y3R1cmUgYSBiaXQuCgoyMDAwLTA2LTA3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9kbGwtb3ZlcnJpZGVzOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglUZXh0IG9mIFdXTiBhcnRpY2xlICJETEwgb3ZlcnJpZGVzIi4KCgkqIGRvY3VtZW50YXRpb24vSE9XVE8td2luZWxpYjoKCVdpbGJ1ciBOLiBEYWxlIDx3aWxidXIuZGFsZUBsdW1pbi5ubD4KCUFkZGVkIHRvIHByb2plY3QuIEN1cnJlbnRseSBpbmNvbXBsZXRlIGJ1dCB3aWxsIHVwZGF0ZSB3ZWVrbHkuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCVNldHVwIHNpZ25hbCBoYW5kbGluZyBhbmQgZXhjZXB0aW9ucyBvbmx5IGFmdGVyIFJFUV9JTklUX1BST0NFU1NfRE9ORQoJaGFzIGJlZW4gc2VudCwgdG8gYXZvaWQgZGVhZGxvY2tpbmcgdGhlIGRlYnVnZ2VyLgoKCSogY29udHJvbHMvY29tYm8uYywgaW5jbHVkZS9jb21iby5oOgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CgktIENvbWJvTEJveCBpcyBhbHdheXMgY3JlYXRlZCBhcyBjaGlsZCBvZiBDb21ib0JveC4gSWYgQ29tYm9Cb3ggaGFzIHN0eWxlCgkgIG90aGVyIHRoYW4gQ0JTX1NJTVBMRSwgcGFyZW50IG9mIGxpc3Rib3ggaXMgc2V0IHRvIGRlc2t0b3AuCgktIEluIENCRHJvcERvd24uIENvbWJvQm94IHVzZXMgb25seSBmaXJzdCBpdGVtIHRvIGNhbGN1bGF0ZSBoZWlnaHQgb2YKCSAgZHJvcHBlZCBsaXN0Ym94LiBBbHNvIGlmIGxpc3Rib3ggaXMgZW1wdHkgaXRzIGhlaWdodCBpcyB1bm1vZGlmaWVkCgkgIChwcmV2aW91c2x5IGl0IHdhcyBzZXQgdG8gMCkuCgktIEFkZGVkIGNvcnJlY3QgaGFuZGxpbmcgb2YgV01fR0VURExHQ09ERSBhbmQgV01fKFNZUylLRVlET1dOIG1lc3NhZ2VzLgoJLSBHZW5lcmFsIGNsZWFuLXVwLiBNZXNzYWdlIG9yZGVyIGlzIG5vdyBtb3JlIHByZWNpc2UgKGF0IGxlYXN0CgkgIG5vdGlmaWNhdGlvbnMgdG8gY2xpZW50KTsgbGlzdGJveCAtIGNvbWJvYm94IGludGVyYWN0aW9uIGhhcyBzbGlnaHQKCSAgZGlmZmVyZW5jZXMgY29tcGFyaW5nIHRvIFdpbmRvd3MuCgoJKiBjb250cm9scy9lZGl0LmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJLSBSZW1vdmVkIGRlcGVuZGVuY3kgb2YgZWRpdCBjb250cm9sIGZyb20gY29tYm9ib3ggaW1wbGVtZW50YXRpb24uCgktIEVkaXQgY29udHJvbCB1c2VzIHVuZG9jdW1lbnRlZCB3aW5kb3cgc3R5bGUgMHgwMjAwIHRvIGRldGVjdCBpcyBpdCBhIHBhcnQKCSAgb2YgY29tYm9ib3guIElmIHNvIGl0IGNhbGxzIEdldERsZ0l0ZW0oaHduZENvbWJvLCAxMDAwKSB0byBnZXQgQ29tYm9MQm94CgkgIHdpbmRvdyBoYW5kbGUgKHNlZSBjb21tZW50cyBmb3IgY29tYm8uYyBiZWxvdykuCgktIEVESVRfQ2hlY2tDb21ibyAtIG1vZGlmaWVkIGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIGtleWJvYXJkIG1lc3NhZ2VzLgoJLSBQcm9jZXNzaW5nIG9mIFdNX0dFVERMR0NPREUgYW5kIFdNX0NIQVIgZm9yIFZLX1JFVFVSTiBhbmQgVktfRVNDQVBFCgkgIGRlcGVuZHMgb24gd2hldGhlciBsaXN0Ym94IGlzIGRyb3BwZWQgZG93bi4gVGhpcyBwcmV2ZW50cyBjbG9zaW5nIG9mIGRpYWxvZwoJICBpZiBsaXN0Ym94IGlzIGRyb3BwZWQgZG93biBhbmQgYWxsb3dzIGNvbWJvYm94IHRvIHByb2Nlc3MgdGhlc2Uga2V5Ym9hcmQKCSAgbWVzc2FnZXMgcHJvcGVybHkuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJLSBXZSBjYW4gdXNlIHduZC0+d0lEbWVudSBmb3IgQ29tYm9MQm94IChpdCBpcyBub3QgcmVzZXQgYW55bW9yZSBpbiBTZXRQYXJlbnQpCgktIFdoZW4gdXNlciBjbGlja3Mgb3V0c2lkZSBvZiBkcm9wcGVkIGxpc3Rib3gsIG9yaWdpbmFsIHNlbGVjdGlvbiBtdXN0IGJlCgkgIHJlc3RvcmVkLgoJLSBDb21ib0xCb3ggaGFzIGNhcmV0X29uID0gRkFMU0Ugb24gY3JlYXRpb24sIHRoYXQncyB3aHkgY29tYm9ib3ggc2VuZHMKCSAgTEJfQ0FSRVRPTiBtZXNzYWdlIGJlZm9yZSBkcm9wcGluZyBsaXN0Ym94IGRvd24gKGJ1dCBvbmx5IGZvcgoJICBDQlNfRFJPUERPV05MSVNUIC0gSSBkb24ndCBub3cgd2h5KS4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCVdlbGwsIFNldFBhcmVudCBkb2Vzbid0IHdvcmsgcHJvcGVybHkgYXQgYWxsLCBidXQgYXQgbGVhc3QgaXQgbXVzdCBwcmVzZXJ2ZQoJd2luZG93IElELiAgSW4gZmFjdCBpdCBhbHNvIG11c3QgcHJlc2VydmUgd2luZG93IHN0eWxlcywgZGVzdHJveSBYCgljb3VudGVycGFydCBpZiBwYXJlbnQgb2YgcG9wdXAgb3Igb3ZlcmxhcHBlZCB3aW5kb3cgaXMgc2V0IHRvIHNvbWV0aW5nCglkaWZmZXJlbnQgZnJvbSBEZXNrdG9wLCBhbmQgbG90IG9mIG90aGVyIHN0dWZmIHRoYXQgaXQgbXVzdCBhbmQgbXVzdG4ndCBkby4KCUJ1dCBwcmVzZXJ2aW5nIElEIGlzIGdvb2QgZW5vdWdoIGZvciBub3cuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglBZGRlZCB1bmRvY3VtZW50ZWQgd2luZG93IHN0eWxlLgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4X3F1ZXVlLmgsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXk6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBTbWFsbCB1cGRhdGUgdG8gZG9jdW1lbnRhdGlvbgoJLSBNb3JlIHBsYXllci9ncm91cCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gKG5vdCB0ZXN0ZWQpCgoJKiB3aW4zMi9leGNlcHQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY2FsbCBNZXNzYWdlQm94QSBiZWZvcmUgVVNFUiBpcyBpbml0aWFsaXplZC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogU3RlcGhhbmUgTHVzc2llcgoJU2hlcmkgU3RlZXZlcwoJSGFpdGhlbSBIbWlkYQoJLSBIZWlnaHQgb2YgdGhlIGxpc3Rib3ggc2hvdWxkIGJlIGFkanVzdCB3aGVuIExCU19PV05FUkRSQVdGSVhFRCBpcyBzZXQKCSAgYW5kIG5vdCBpZiBMQlNfT1dORVJEUkFXVkFSSUFCTEUgaXMgc2V0LCBwcmV2aW91c2x5IGl0IHdhcyBub3QgYWRqdXN0aW5nCgkgIHRoZSBzaXplIGluIGJvdGggY2FzZXMuCgktIFdoZW4gdGhlIGNhcmV0IGluZGV4IGNoYW5nZSwgaXRlbXMgcmVwYWludGluZyBuZWVkIHRwIGJlIGluIHRoaXMKCSAgb3JkZXIKCSAgYSkgUGFpbnQgb2xkIGNhcmV0IGl0ZW0gd2l0aG91dCB0aGUgZm9jdXMKCSAgYikgUGFpbnQgb2xkIGNhcmV0IGl0ZW0gd2l0aG91dCB0aGUgc2VsZWN0aW9uCgkgIGMpIFBhaW50IG5ldyBjYXJldCBpdGVtIHdpdGggdGhlIHNlbGVjdGlvbgoJICBkKSBQYWludCBuZXcgY2FyZXQgaXRlbSB3aXRoIHRoZSBmb2N1cy4KCS0gV2hlbiByZXBhaW50aW5nIHRoZSBsaXN0Ym94LCB3ZSBzaG91bGQgcGFpbnQgYWxsIGl0ZW1zIHJlZ2FyZGluZyBpZgoJICB0aGV5IGFyZSBzbGVjdGVkIG9yIG5vdCBhbmQgdGhlbiBwYWludCBhZnRlciB0aGUgZm9jdXMgaXRlbS4gU28gZm9jdXMKCSAgaXRlbSB3aWxsIGVuZCBvdXQgYmVpbmcgcGFpbnRlZCB0d2ljZS4gKFRoYXQncyB3aGF0IFdpbmRvd3MgZG9lcykuCgoJKiBmaWxlcy9maWxlLmM6IFN0YXMgU2VyZ2VldiA8c3Rhcy5vcmVsQG1haWxjaXR5LmNvbT4KCW1tYXAoKSBmYWlscyB3aXRoIEVOT0RFViBvbiBOVEZTIHVuZGVyIExpbnV4LgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglQYXRoRmluZE5leHRDb21wb25lbnQ6IHJldHVybiBwb2ludGVyIHRvIE5VTEwgYW5kIG5vdCBOVUxMLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgaGFuZGxpbmcgb2YgVEJTVFlMRV9BVVRPU0laRS4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGluY2x1ZGUvY3J0ZGxsLmgsIG1zZG9zL2lvcG9ydHMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvdXJsbW9uL3Vtb24uYywgaW5jbHVkZS91cmxtb24uaCwgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvY29tZGxnMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2RiYzMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2s6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgQVBJIGZpbGVzIHVwZGF0ZS4KCS0gVHVybmVkIG9uIGNhbGxpbmcgY29udmVudGlvbiBjaGVja2luZyBmb3IgV2luMzIgZnVuY3Rpb25zIGJ5CgkgIGRlZmF1bHQuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRPT0xCQVJfRHJhd1N0cmluZzogY2F0Y2ggaW5kZXg9PSAtMSAoYnV0IG5vdCB5ZXQgaGFuZGxlZCkuCgoJKiBtaXNjL29wdGlvbnMuYzoKCUZpeGVkIG9mZi1ieS1vbmUgZXJyb3IgaW4gc3RyaW5nIGFsbG9jYXRpb24uCgoJKiB3aW5kb3dzL3dpbi5jOgoJQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEBjb2Rld2VhdmVycy5jb20+IGZvciBDb3JlbAoJVGhlIHdpbmRvdyBkaW1lbnNpb25zIGhhdmUgdG8gYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHNlbmRpbmcgdGhlCglXTV9HRVRNSU5NQVhJTkZPIG1lc3NhZ2UuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZGV2aWNlcy5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIG1pcy1hbGlnbmVkIGFjY2Vzc2VzIGR1cmluZyBCSU9TL0RPUyBkYXRhIGluaXRpYWxpemF0aW9uLgoKCSogdG9vbHMvYnVpbGQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgc2l6ZSBvZiBwZV9oZWFkZXIgb24gbWFjaGluZXMgd2l0aCBub24tNEsgcGFnZXMuCgoJKiBpZjE2MzIvc25vb3AuYywgcmVsYXkzMi9zbm9vcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlICJDQUxMIiBhbmQgIlJFVCIgaW4gY2FwaXRhbCBsZXR0ZXJzIGZvciBkaXN0aW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVRoZSBhY3RpdmUgcGFnZSBzaG91bGQgYmUgdW5jaGFuZ2VkIHdoZW4gcmVtb3ZpbmcgYW4gYWN0aXZlIGZpcnN0IHBhZ2UKCWZyb20gYSBwcm9wZXJ0eSBzaGVldHMuCgoyMDAwLTA2LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYywgbWVtb3J5L3NlbGVjdG9yLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jb250ZXh0X3NwYXJjLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVwZGF0ZWQgc3VwcG9ydCBmb3IgU29sYXJpcy9TcGFyYyBhcmNoaXRlY3R1cmUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1pY2hhZWwgQ2FyZGVuYXMgPG1pY2hhZWxfY2FyZGVuYXNAZGVuZWJhLmNvbT4KCUNvcnJlY3RlZCBhIHBvdGVudGlhbCBjcmFzaC4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgc3RhY2sgc3dpdGNoIGhhbmRsaW5nIChsYXJnZSBzdGFjaykgdG8gc3lzZGVwcy5jCglFbmFibGUgZXhjZXB0aW9uIGRpc3BhdGNoIHdoaWxlIG9uIGxhcmdlIHN0YWNrLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaW5pc2hlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgTElTVFZJRVdfU2V0Q29sdW1uV2lkdGguICBUZXN0ZWQKCWFnYWluc3Qgd2luZG93cyB0aG9yb3VnaGx5LiAgRml4ZWQgYnVnIHJlc3VsdGluZyBpbiB1bnNpZ25lZCB2YWx1ZXMKCWJlaW5nIHBhc3NlZCBpbnRvIExJU1RWSUVXX1NldENvbHVtbldpZHRoIGZyb20gdGhlIGxpc3R2aWV3IHdpbmRvdwoJcHJvY2VkdXJlLiAgRml4ZWQgTElTVFZJRVdfR2V0SXRlbUhlaWdodCB0byBkaXNyZWdhcmQgdGhlIGhlaWdodCBvZgoJaWNvbnMgaWYgbm8gaWNvbnMgZXhpc3QuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJQWRkZWQgZGVmaW5lcyBmb3IgTFZTQ1dfQVVUT1NJWkUvX1VTRUhFQURFUi4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVJlcGxhY2VkIGNhbGxzIHRvIEhFQURFUl9SZWZyZXNoIHdpdGggSW52YWxpZGF0ZVJlY3QuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAcnotb25saW5lLmRlPgoJU3RhcnRlZCBzdXBwb3J0IGZvciBtZW51YmFyLWxpa2UgdG9vbGJhcnMuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvd2luZWRiZy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDb21waWxlIGZpeGVzIGZvciBub24taTM4NiBhcmNocy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy91aXRvb2xzLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJQXR0ZW1wdCB0byBwYWludCB0aGUgY2hlY2tib3ggYW5kIHJhZGlvIGJ1dHRvbnMgYmV0dGVyLgoKMjAwMC0wNi0wMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmM6IEZpeGVkIHdhcm5pbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUVyaWMgS29obCA8ZWtvaGxAcnotb25saW5lLmRlPgoJVXBkYXRlZCB0byBkbGwgdmVyc2lvbiA1LjgxIChJRSA1LjAxKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUVyaWMgS29obCA8ZWtvaGxAcnotb25saW5lLmRlPgoJSW1wbGVtZW50ZWQgVFZNX0dFVElURU1XLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglKYXNvbiBNYXdkc2xleSA8amFzb25AbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IGZvciB0eXBpbmcgdGhlIGZpbGVuYW1lIGluIHRoZSBsaXN0dmlldyBjb250cm9sIGFuZAoJaGF2aW5nIHRoZSBjb250cm9sIHNlbGVjdCBpdC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBpbmNsdWRlL21lc3NhZ2UuaCwgbWlzYy9tYWluLmM6CglSZW1vdmVkIE1TR19XaW5lU3RhcnRUaWNrcyAoZG9lcyBub3Qgd29yayBmb3IgbXVsdGlwbGUgYWRkcmVzcyBzcGFjZXMKCWFueXdheSkuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmM6CglSZXBsYWNlZCBHZXREQyBieSBDcmVhdGVEQy4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvZGliLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jOgoJTW92ZWQgRElCX0ZpeENvbG9yc1RvTG9hZGZsYWdzIHRvIGN1cnNvcmljb24uYy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglEb2N1bWVudGVkIHRoZSBuZXcgd2luZSBjb21tYW5kIGxpbmUgYW5kIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQoJV0lORVBSRUZJWC4KCgkqIG1zZG9zL2RwbWkuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93aW5lcHMxNi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9jb21kbGczMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9kc291bmQuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L3dpbmVwcy5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFQSSBmaWxlcyB1cGRhdGUuCgoJKiBtZW1vcnkvaW5zdHIuYywgbXNkb3MvaW50ZXJydXB0cy5jLCBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9idWlsdGluMTYuaDoKCURlbGF5IGxvYWRpbmcgb2YgaW50ZXJydXB0IHRhYmxlIGZ1bmN0aW9ucyB1bnRpbCB0aGV5IGFyZSBuZWVkZWQuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvaW9wb3J0cy5jOgoJRGVsYXkgaW5pdGlhbGl6YXRpb24gb2YgSS9PIHBlcm1pc3Npb25zIHVudGlsIHRoZXkgYXJlIGZpcnN0IHVzZWQuCgoJKiBsb2FkZXIvbWFpbi5jLCBkbGxzL2tlcm5lbC9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwva2VybmVsX21haW4uYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaWYxNjMyL3JlbGF5LmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNb3ZlZCBrZXJuZWwgaW5pdGlhbGl6YXRpb24gdG8ga2VybmVsX21haW4uYwoKCSogd2luZG93cy94MTFkcnYvd25kLmMsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy91c2VyLy5jdnNpZ25vcmUsIGRsbHMvdXNlci9NYWtlZmlsZS5pbiwgZGxscy91c2VyL2Rpc3AucmMsIGRsbHMvdXNlci9kaXNwbGF5LmMsIGRsbHMvdXNlci9kaXNwbGF5LnNwZWMsIGRsbHMvdXNlci91c2VyX21haW4uYywgaW5jbHVkZS9kaXNwbGF5LmgsIGxvYWRlci9tYWluLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlOgoJTWVyZ2VkIGRpc3BsYXkuZGxsIGludG8gVVNFUi4KCgkqIG1pc2Mvd3NwcmludGYuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZWQgY3Jhc2guCgoJKiByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi93b3czMi5zcGVjLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9rZXJuZWwvLmN2c2lnbm9yZSwgZGxscy9rZXJuZWwvTWFrZWZpbGUuaW4sIGRsbHMva2VybmVsL2NvbW0uc3BlYywgZGxscy9rZXJuZWwva2VybmVsLnNwZWMsIGRsbHMva2VybmVsL2tlcm5lbDMyLnNwZWMsIGRsbHMva2VybmVsL3N5c3RlbS5zcGVjLCBkbGxzL2tlcm5lbC90b29saGVscC5zcGVjLCBkbGxzL2tlcm5lbC93b3czMi5zcGVjLCBkbGxzL2tlcm5lbC93cHJvY3Muc3BlYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2NvbW0uc3BlYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvc3lzdGVtLnNwZWMsIGlmMTYzMi90b29saGVscC5zcGVjLCBpZjE2MzIvd3Byb2NzLnNwZWMsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVN0YXJ0IHRvIHNlcGFyYXRlIEtFUk5FTCBvdXQgb2YgbGlid2luZS4KCjIwMDAtMDYtMDIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3RzX3h1dGlsLmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeHV0aWwuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJUHJlc2VydmUgV00gaGludHMgdGhhdCB3ZXJlIHNldCBkdXJpbmcgd2luZG93IGNyZWF0aW9uIGJ5IGNhbGxpbmcKCVhHZXRXTUhpbnRzIHByaW9yIHRvIFhTZXRXTUhpbnRzLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6CglNaWNoYWVsIENhcmRlbmFzIDxtaWNoYWVsX2NhcmRlbmFzQGRlbmViYS5jb20+CglBZGRlZCBhIGZldyBtZXNzYWdlIGNyYWNrZXJzLgoKCSogdG9vbHMvd2luZWNvbmY6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkICJVbml4IGRyaXZlcyIgL3RtcCBhbmQgJHtIT01FfSwgYW5kIERldmljZSBhbmQgRmlsZXN5c3RlbQoJc3RhdGVtZW50cywgdG8gYXV0b2dlbmVyYXRlZCB3aW5lLmNvbmYuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIFJld3JpdGUgb2YgdGhlIHNoZWxsIHJlbGF0ZWQgcGFydHMgb2YgdGhlIGRpYWxvZyB0byB1c2UgdGhlIGFscmVhZHkKCSAgaW4gc2hlbGwzMmltcGxlbWVudGVkIGZ1bmN0aW9ucyAoU2hlbGxGb2xkZXIvUGF0aCopLiBFbGltaW5hdGVkIGRpcmVjdAoJICBmaWxlIGFjY2Vzcy4KCS0gUmVwbGFjZWQgTG9hZExpYnJhcnlBIHdpdGggR2V0TW9kdWxlSGFuZGxlQSBzaW5jZSBjb21kbGczMiBpcyBpbXBvcnRzCgkgIHNvbWUgZGxscyBwZXIgKi5zcGVjIGZpbGUKCS0gTW9zdCBPcGVuRmlsZSBGbGFncyAoT0ZOXyopIHNob3VsZCB3b3JrIHByb3Blcmx5IG5vdwoJLSBUaGUgZWRpdCBib3ggc2hvdWxkIHdvcmsgcmlnaHQgd2l0aCBhbGwgc3R1ZmYgZW50ZXJlZCBpbiBpdCBsaWtlCgkgIC4uXHRlbXBcZmlsZS50eHQgb3IganVzdCBjOiB0byBjaGFuZ2UgYSBkcml2ZQoJLSBPcHRpbWl6ZWQgRGF0YU9iamVjdCBoYW5kbGluZwoJLSBTb21lIGJ1Z3MgZml4ZWQsIHNob3VsZCB3b3JrIHdpdGggbmF0aXZlIHNoZWxsMzIgYWdhaW4uCgktIFN0dWJzIGZvciBQcmludERsZ0V4CgoyMDAwLTA2LTAxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2lubW0vd2luZW9zcy9taWRpLmMsIGRvY3VtZW50YXRpb24vY29uZmlnLCBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9ycywgZG9jdW1lbnRhdGlvbi9mb250cywgZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzLCBtaXNjL3JlZ2lzdHJ5LmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvZGRyYXcvZGRyYXcveDExLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglMb3RzIG9mIHNwZWxsaW5nIGZpeGVzIHRoYXQgYWNjdW11bGF0ZWQgaW4gbXkgdHJlZSBhZ2FpbiwgbWFkZSBzZXZlcmFsCgllcnJvciBtc2dzIG1vcmUgdmVyYm9zZSwgZG9jIHVwZGF0ZXMuCgoJKiBkb2N1bWVudGF0aW9uL3NoZWxsMzIsIGluY2x1ZGUvc2hsd2FwaS5oLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxyZWcuYywgZGxscy9zaGVsbDMyL3NoZWxsc3RyaW5nLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBOZXcgKHNvbWUgc3R1YnMpOiBTSEdldEZvbGRlckxvY2F0aW9uLCBQYXRoQWRkRXh0ZW5zaW9uLAoJICBQYXRoSXNVTkNTZXJ2ZXIsIFBhdGhJc1VOQ1NlcnZlclNoYXJlLCBQYXRoTWFrZVByZXR0eSwKCSAgU0hDcmVhdGVTaGVsbFBhbGV0dGUsIFNIT3BlblJlZ1N0cmVhbSwgU0hPcGVuUmVnU3RyZWFtMgoJLSBNYW55IHN0cmluZyBmdW5jdGlvbnMgaW1wbGVtZW50ZWQKCS0gU29tZSBzdHVicyBmb3IgZXhwb3J0cyBieSBvcmRpbmFsCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJR2l2ZSBhIGVycm9yIG1lc3NhZ2UgaWYgYSBmb3J3YXJkZWQgZXhwb3J0IGlzIG5vdCByZXNvbHZlZC4KCgkqIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglJbXBsZW1lbnRlZCBGaW5kRmlyc3RGaWxlRXgsIGNsZWFuZWQgb2xkIGltcGxlbWVudGF0aW9uIHVwLgoKCSogY29udHJvbHMvd2lkZ2V0cy5jOgoJTG91aXMtUGhpbGlwcGUgR2Fnbm9uIChvZiBNYWNhZGFtaWFuIGZvciBDb3JlbCkKCVN0YXRpYyBjb250cm9scyB3ZXJlbid0IHJlY2VpdmluZyBXTV9MQlVUVE9OREJMQ0xLIG1lc3NhZ2VzIGJlY2F1c2UgdGhlCglTdGF0aWMgd2luZG93IGNsYXNzIHdhcyByZWdpc3RlcmVkIHdpdGhvdXQgdGhlIENTX0RCTENMS1Mgc3R5bGUgKHdoaWNoIGl0CgloYXMgaW4gV2luZG93cykuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJTWFrZSBzdXJlIG1haW5fZXhlX25hbWUgaXMgYSBET1MgZmlsZW5hbWUgKHRoYW5rcyB0byBVd2UgQm9ubmVzKS4KCgkqIGluY2x1ZGUvZHNvdW5kLmgsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGluY2x1ZGUvZHBsYXkuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIERpcmVjdFNvdW5kQ2FwdHVyZSBhbmQgRGlyZWN0U291bmRDYXB0dXJlQnVmZmVyIGludGVyZmFjZXMKCS0gQWRkZWQgc29tZSBTb3VuZENhcHR1cmUgc3R1YnMKCS0gQ2hhbmdlZCBSRUZJSUQgdG8gTFBDR1VJRCBpbiBhIGZldyBwbGFjZXMgYXMgcGVyIE1TIGhlYWRlciBmaWxlCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvc2VjLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVN0dWIgZm9yIFJ0bENvbnZlcnRTaWRUb1VuaWNvZGVTdHJpbmcuCgoJKiBjb250cm9scy9zdGF0aWMuYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglNU0ROOiAiV01fTkNISVRURVNUIC0gUmV0dXJucyBIVENMSUVOVCBpZiB0aGUgY29udHJvbCBzdHlsZSBpcwoJU1NfTk9USUZZOyBvdGhlcndpc2UsIHJldHVybnMgSFRUUkFOU1BBUkVOVC4gIgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCB3YXJuaW5nLgoKMjAwMC0wNS0zMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3Mvd2luLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0IGEgZGVmYXVsdCBzaXplIGZvciB3aW5kb3dzIHdoZW4gQ1dfVVNFREVGQVVMVCBpcyB1c2VkLgoKMjAwMC0wNS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9ubHMvaHJ2Lm5scywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZG9jdW1lbnRhdGlvbi9sYW5ndWFnZXMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCVpvcmFuIER6ZWxhamxpamEgPGplbGx5QHNyay5mZXIuaHI+CglCYXNpYyBDcm9hdGlhbiBsYW5ndWFnZSBzdXBwb3J0LgoKCSogY29udHJvbHMvZWRpdC5jOiBTZXJnZSBJdmFub3YKCVJldHVybmluZyBETEdDX1dBTlRBTExLRVlTIGZvciBtdWx0aWxpbmUgZWRpdCBjb250cm9sIHdhcyBub3QgZ29vZCBiZWNhdXNlCglpdCBicmVha3MgbmF2aWdhdGlvbiBpbiBkaWFsb2dzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEZpeGVkIHNvbWUgaW5pdGlhbGl6YXRpb24vZGVzdHJ1Y3Rpb24gYW5kIHJlZmVyZW5jZSBjb3VudGluZwoJLSBBZGRlZCBhIGxpdHRsZSBtb3JlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgoKCSogdG9vbHMvZm9udF9jb252ZXJ0LnNoOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJQWRkZWQgYSBzaGVsbC1zY3JpcHQgZm9yIGVhc2llciBmb250LWluc3RhbGxhdGlvbi4KCgkqIGRsbHMvd2luZXBzL2JpdG1hcC5jLCBkbGxzL3dpbmVwcy9icnVzaC5jLCBkbGxzL3dpbmVwcy9jbGlwcGluZy5jLCBkbGxzL3dpbmVwcy9jb2xvci5jLCBkbGxzL3dpbmVwcy9kcml2ZXIuYywgZGxscy93aW5lcHMvZXNjYXBlLmMsIGRsbHMvd2luZXBzL2ZvbnQuYywgZGxscy93aW5lcHMvZ3JhcGhpY3MuYywgZGxscy93aW5lcHMvaW5pdC5jLCBkbGxzL3dpbmVwcy9vYmplY3RzLmMsIGRsbHMvd2luZXBzL3Blbi5jLCBkbGxzL3dpbmVwcy9wcGQuYywgZGxscy93aW5lcHMvcHMuYywgZGxscy93aW5lcHMvcHNkcnYuaCwgZGxscy93aW5lcHMvdGV4dC5jLCBkbGxzL3dpbmVwcy93aW5lcHMuc3BlYywgZGxscy93aW5lcHMvd2luZXBzMTYuc3BlYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL3dpbmVwcy5zcGVjLCBpbmNsdWRlL3BzZHJ2LmgsIGxvYWRlci9tYWluLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZ2RpX21haW4uYywgZGxscy93aW5lcHMvLmN2c2lnbm9yZSwgZGxscy93aW5lcHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luZXBzL2FmbS5jLCBkbGxzL3dpbmVwcy9iaXRibHQuYywgTWFrZS5ydWxlcy5pbjoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglTZXBhcmF0ZSB3aW5lcHMgb3V0IG9mIFdpbmUncyBjb3JlLgoKCSogZGxscy9kcGxheXgvZHBsYXl4X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4X3F1ZXVlLmgsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZGxscy9kcGxheXgvZHBsYXkuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIGEgbGl0dGxlIG1vcmUgZGxsIGxldmVsIGRlYnVnZ2luZyBhbmQgc21hbGwgY2hhbmdlcwoJLSBTdGFydCBvbiBncm91cCBhbmQgcGxheWVyIGludGVyZmFjZXMKCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZC5zcGVjLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBpbmNsdWRlL2Rzb3VuZC5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkIGFub3RoZXIgd2F5IHRvIGNyZWF0ZSBhIDNkIGxpc3RlbmVyIGludGVyZmFjZS4KCS0gRml4IHVwIHNvbWUgcmVmZXJlbmNlIGNvdW50aW5nIGJ1Z3MgYW5kIGludGVyZmFjZSBjcmVhdGlvbiBidWdzCgktIEFkZCBEaXJlY3RTb3VuZEVudW1lcmF0ZVcgc3R1YgoJLSBBZGQgRGlyZWN0U291bmRDYXB0dXJlRW51bWVyYXRle0EsV30gc3R1YnMKCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgaW5jbHVkZS9kYXRldGltZS5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglBZGRlZCAzRCBib3JkZXIgYXJvdW5kIGNvbnRyb2wuICBGaXhlZCBtb250aGNhbCBjb250cm9sIHBvcHVwLiAgQWRkZWQKCVdNX1NJWkUgc3VwcG9ydC4gIE9wdGltaXplZCBkcmF3aW5nLiAgQWRkZWQgV01fTEJVVFRPTlVQIGhhbmRsaW5nLgoJSGFuZGxlIERUU19SSUdIVEFMSUdOIHN0eWxlLiAgRml4ZWQgaGFuZGxpbmcgb2YgZm9ybWF0dGluZyBzdHlsZXMsCglkYXRlIGlzIG5vdyBkaXNwbGF5ZWQgcHJvcGVybHkgZm9yIERUU19TSE9SVERBVEVGT1JNQVQuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVJlbW92ZWQgYWxsIGRpcmVjdCBjYWxscyB0byBNT05USENBTF9SZWZyZXNoKCkgYW5kIHJlcGxhY2VkIHdpdGgKCWVpdGhlciBSZWRyYXdXaW5kb3cgb3IgSW52YWxpZGF0ZVJlY3QuIE9wdGltaXplZCBkcmF3aW5nIHVzaW5nCglSZWRyYVdpbmRvdyBhbmQgdXBkYXRlIHJlZ2lvbnMuICBGaXhlZCAiVG9kYXkiIGRhdGUgYnVnIHdoZXJlIHllYXIgd2FzCglvbmx5IG9uZSBkaWdpdC4gIEZpeGVkIGRyYXdpbmcgb2YgY2lyY2xlIGRyYXduIG5leHQgdG8gIlRvZGF5Ii4gIEZpeGVkCgltb3ZpbmcgdG8gcHJldmlvdXMgb3IgbmV4dCBtb250aCBieSBjbGlja2luZyBvbiBkYXlzIGJlbG9uZ2luZyB0bwoJcHJldmlvdXMgb3IgbmV4dCBtb250aHMuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2NvbnNvbGUuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jb20+CglBZGQgc3R1YiBmb3IgU2V0Q29uc29sZU91dHB1dENQLgoKCSogdG9vbHMvd3JjL3BweS55OgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgYSA7IG5lZWRlZCBieSBzb21lIFlBQ0NzLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglJbnN0YWxsIHRoZSBjb2xvcm1hcCBvbmx5IGlmIGl0IHdhcyBjcmVhdGVkLgoKCSogbXNkb3MvaW50MjEuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJSW1wbGVtZW50ZWQgaW50IDB4MjEgbG9uZyBmaWxlIG5hbWUgZnVuY3Rpb24gMHg3MWEwOiBHZXQgVm9sdW1lIEluZm8uCgoJKiBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudGVkIHdnbFNoYXJlTGlzdHMgYW5kIHdnbEdldEN1cnJlbnREQy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3F1ZXVlLmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCU1vdmVkIGlkbGUgZXZlbnQgaGFuZGxpbmcgdG8gdGhlIHNlcnZlci4KCgkqIHdpbmRvd3Mvd2luLmM6CglVc2UgR2V0U3RhcnR1cEluZm9BKCkgaW5zdGVhZCBvZiBhY2Nlc3NpbmcgcHJvY2VzcyBzdHJ1Y3R1cmUKCWRpcmVjdGx5LgoKCSogbG9hZGVyL3Rhc2suYzoKCU1ha2Ugc3VyZSBpbml0aWFsIHRhc2sgaXMgbm90IG1hcmtlZCBhcyAzMi1iaXQuCgoJKiBtaXNjL29wdGlvbnMuYzoKCU1ha2UgY2hpbGQgcHJvY2Vzc2VzIGluaGVyaXQgY29tbWFuZC1saW5lIG9wdGlvbnMgdGhyb3VnaCB0aGUKCVdJTkVPUFRJT05TIGVudmlyb25tZW50IHZhcmlhYmxlLgoKCSogd2luZG93cy93aW4uYzogU2VyZ2UgSXZhbm92CglTZXRQYXJlbnQ6IGNhbGwgU2V0V2luZG93UG9zIHdpdGggU1dQX05PQUNUSVZBVEUgZmxhZyBzZXQuCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2dkaS9NYWtlZmlsZS5pbiwgZGxscy9nZGkvZGlzcGRpYi5zcGVjLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9kaXNwZGliLnNwZWM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTW92ZWQgRElTUERJQiBvdXQgb2YgdGhlIGtlcm5lbCBpbnRvIEdESS4KCgkqIGNvbnRyb2xzL2NvbWJvLmMsIGluY2x1ZGUvY29tYm8uaDoKCURhdmlkIEdyYW50IDxkYXZpZGdyYUBjb3JlbC5jYT4KCS0gQ3JlYXRpbmcgY29tYm9ib3ggd2l0aCBDQlNfU0lNUExFIHN0eWxlIHNoYWxsIHNldCBpbnRlcm5hbCBmbGFnIENCRl9FRElULgoJLSBFZGl0IHRleHQgbXVzdCBiZSBzZWxlY3RlZCBvbmx5IGlmIENCIGlzIGluIGZvY3VzLgoJLSBJZiBDQiBoYXMgZWRpdCBjb250cm9sIHdlIGhhdmUgdG8gY2FsbCBDQlVwZGF0ZUVkaXQgdG8gdXBkYXRlIGl0cwoJICBjb250ZW50cy4gSW52YWxpZGF0aW5nIHRleHRSZWN0IHdpbGwgbm90IGZvcmNlIHVwZGF0aW5nIG9mIGNoaWxkCgkgIGVkaXQgY29udHJvbCwgb2J2aW91c2x5LgoJLSBXZSBoYXZlIHRvIHByb3RlY3Qgb3Vyc2VsdmVzIGZyb20gY2hhbmdpbmcgc2VsZWN0aW9uIGluIGxpc3Rib3ggd2hlbgoJICB3ZSByZWNlaXZlIGxpc3Rib3ggbm90aWZpY2F0aW9uLiBTbyBMQk5fU0VMQ0hBTkdFIC0+IENCVXBkYXRlRWRpdCAtPgoJICBFTl9DSEFOR0Ugd2lsbCBub3QgcmVzZWxlY3QgaXRlbSBpbiB0aGUgbGlzYm94LgoKCSogZGxscy9nZGkvZ2RpX21haW4uYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglBZGQgaW5jbHVkZSBmb3IgTG9hZExpYnJhcnkuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBtZW1vcnkvYXRvbS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNlcnZlci9hdG9tLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jOgoJVHVyY2hhbm92IFNlcmdlaSA8dHVyY2hhbm92QG90dnByaW0ucnU+CglJbXBsZW1lbnRlZCBsb2NhbCBhdG9tcyBpbiB0aGUgc2VydmVyLgoKCSogaWYxNjMyL2J1aWx0aW4uYzogRG8gbm90IGxvYWQgd2luZXBzIG9uIHN0YXJ0dXAuCgoJKiBtaXNjL2NvbW0uYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgd2FybmluZy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IE93ZW4gV2FuZwoJV2hlbiB5b3UgY2xpY2sgb24gYW4gaWNvbiB0byBvcGVuIGEgY29tYm8gYm94LCB5b3Ugd291bGQgZXhwZWN0IGl0IHRvCgliZSBlbmFibGVkIHNvIHlvdSBjYW4gY2hvb3NlIHNvbWV0aGluZyBpbiBpdC4gSW4gV2luZSB0aGlzIHdhcyBub3QKCWd1YXJhbnRlZWQgc2luY2UgeW91ciBkZWZhdWx0IGZsYWdzIGNvdWxkIGdldCBsb3N0IGluIHRoZSBwcm9jZXNzLWhlYXAKCW9mIHRoZSBhcHBsaWNhdGlvbi4KCjIwMDAtMDUtMjkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnQyMS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvZXhjZXB0LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy91c2VyLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIGxvYWRlci90YXNrLmMsIG1lbW9yeS9lbnZpcm9uLmMsIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgbWlzY2VtdS9tYWluLmMsIG1zZG9zL2ludDIwLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvbW9kdWxlLmM6CglFeGVjIGEgc2VwYXJhdGUgd2luZSBiaW5hcnkgZm9yIGV2ZXJ5IHdpbjMyIHByb2Nlc3Mgc28gdGhhdCB0aGV5IHJ1bgoJaW4gc2VwYXJhdGUgYWRkcmVzcyBzcGFjZXMuCglSdW4gMTYtYml0IHRhc2tzIGFzIFdpbjMyIHRocmVhZHMsIG5vdCBwcm9jZXNzZXMuCgoyMDAwLTA1LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZXJzaW9uLmgsIEFOTk9VTkNFLCBDaGFuZ2VMb2c6CglSZWxlYXNlIDIwMDAwNTI2LgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBTZXJnZSBJdmFub3YKCS0gQWRkZWQgaGFuZGxpbmcgb2YgV01fTU9VU0VBQ1RJVkFURSBtZXNzYWdlCgktIEFkZGVkIGluX2ZvY3VzIGZpZWxkIHRvIGludGVybmFsIGxpc3Rib3gncyBzdHJ1Y3R1cmUuIFRoaXMgZmxhZyBpcyBzZXQgb24KCSAgcmVjZWl2aW5nIFdNX1NFVEZPQ1VTIG1lc3NhZ2UgYW5kIGlzIHJlc2V0ZWQgb24gV01fS0lMTEZPQ1VTLiBBbGwgY2FsbHMgdG8KCSAgR2V0Rm9jdXMgZnVuY3Rpb24gd2VyZSByZXBsYWNlZCB3aXRoIGNoZWNrcyBvZiB0aGlzIGZsYWcuCgktIEluIExJU1RCT1hfSGFuZGxlTEJ1dHRvbkRvd246IGZvY3VzIGlzIHNldCBvbmx5IGlmICdpbl9mb2N1cycgZmxhZyBpcwoJICBjbGVhcgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJU3RhcnRlZCBsb2NhbCBuYW1lIHNlcnZlciBmcmFtZXdvcmsuCgoJKiBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jb21tZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBQcmludFNldHVwIGRpYWxvZyBhbmQgc3VwcG9ydCBmb3IgaG9va3MgYW5kIHRlbXBsYXRlcy4KCU1vdmUgMTYgYml0IGFwaSBkZWZpbml0aW9ucyBvdXQgb2YgY29tbWRsZy5oIHRvIGNkbGcuaAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTA1LTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBTZXJnZSBJdmFub3YKCS0gQWRkZWQgaGFuZGxpbmcgb2YgV01fTU9VU0VBQ1RJVkFURSBtZXNzYWdlCgktIEFkZGVkIGluX2ZvY3VzIGZpZWxkIHRvIGludGVybmFsIGxpc3Rib3gncyBzdHJ1Y3R1cmUuIFRoaXMgZmxhZyBpcyBzZXQgb24KCSAgcmVjZWl2aW5nIFdNX1NFVEZPQ1VTIG1lc3NhZ2UgYW5kIGlzIHJlc2V0ZWQgb24gV01fS0lMTEZPQ1VTLiBBbGwgY2FsbHMgdG8KCSAgR2V0Rm9jdXMgZnVuY3Rpb24gd2VyZSByZXBsYWNlZCB3aXRoIGNoZWNrcyBvZiB0aGlzIGZsYWcuCgktIEluIExJU1RCT1hfSGFuZGxlTEJ1dHRvbkRvd246IGZvY3VzIGlzIHNldCBvbmx5IGlmICdpbl9mb2N1cycgZmxhZyBpcwoJICBjbGVhcgoKCSogZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmMsIGRsbHMvZHBsYXl4L25hbWVfc2VydmVyLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJU3RhcnRlZCBsb2NhbCBuYW1lIHNlcnZlciBmcmFtZXdvcmsuCgoJKiBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jb21tZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY29tZGxnMzIuc3BlYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBQcmludFNldHVwIGRpYWxvZyBhbmQgc3VwcG9ydCBmb3IgaG9va3MgYW5kIHRlbXBsYXRlcy4KCU1vdmUgMTYgYml0IGFwaSBkZWZpbml0aW9ucyBvdXQgb2YgY29tbWRsZy5oIHRvIGNkbGcuaAoKCSogY29udHJvbHMvZWRpdC5jOiBIZW5uaW5nIEhvZmZtYW5uCglEb24ndCBzZW5kIEVOX0NIQU5HRSBhZnRlciBwYWludGluZyB0aGUgZWRpdC4KCVNlbmQgaXQgd2hlcmV2ZXIgdGV4dCBpcyBjaGFuZ2VkLgoKCSogY29udHJvbHMvZWRpdC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY29tPgoJTW92ZWQgdGhlIEVOX1VQREFURSBub3RpZmljYXRpb24gb3V0IG9mIHRoZSBwYWludCBoYW5kbGVyLiBJbnN0ZWFkLAoJdGhlIG5vdGlmaWNhdGlvbiBpcyBzZW50IHdoZW4gYW4gSW52YWxpZGF0ZVJlY3QgaXMgbWFkZSBhZnRlcgoJbW9kaWZ5aW5nIHRoZSB0ZXh0LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJRnJhbmNvaXMgTWV0aG90IChNYWNhZGFtaWFuKQoJRml4ZWQgdGhlIGJsYW5rIGNvbG9yIHBhbGV0dGUgdG9vbHRpcCBidWcgYnkgdHJpZ2dlcmluZyBhIHJlZnJlc2ggb2YKCXRoZSB0b29sdGlwIHdpdGggVXBkYXRlV2luZG93IGZ1bmN0aW9uIGluc3RlYWQgb2YgY2FsbGluZyBkaXJlY3RseSB0aGUKCXJlZnJlc2ggZnVuY3Rpb24uCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvZXh0ZXJuYWwuYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9leHRfZGVidWdnZXIuYzoKCUphbWVzIEp1cmFuIDxqdXJhbkBjc2UucHN1LmVkdT4KCURFQlVHX0V4dGVybmFsRGVidWdnZXIoKSBuZWVkcyB0byBiZSBhIHBhcnQgb2Ygd2luZSwgbm90IHdpbmVkYmcuCgoyMDAwLTA1LTI1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZS5ydWxlcy5pbjoKCURvIG5vdCBjbGVhciBzdWZmaXhlcyBsaXN0IChicmVha3MgQlNEIG1ha2UpLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGluY2x1ZGUvd2luc3Bvb2wuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU1vdmUgd2luc3Bvb2wgdG8gdW5pY29kZS4KCU1pbm9yIGJ1ZyBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZXdvcmtlZCB0aGUgdGh1bWIgZHJhd2luZyBjb2RlLCB0aHVtYiBjYWxjdWxhdGlvbiBjb2RlLCBjaGFubmVsCgljYWxjdWxhdGlvbiBjb2RlLCBhbmQgY29ycmVjdGVkIHNvbWUgYnVncyBpbiBob3cgdGljcyBhcmUgZHJhd24gYW5kCglob3cgY2xpY2tzIGFyZSBoYW5kbGVkLgoKCSogY29udHJvbHMvZWRpdC5jOgoJTG91aXMtUGhpbGlwcGUgR2Fnbm9uIChvZiBNYWNhZGFtaWFuIFRlY2hub2xvZ2llcyBmb3IgQ29yZWwpCglBZGRlZCBldmVudCBoYW5kbGVyIGZvciBXTV9NQlVUVE9ORE9XTiAoc2VuZHMgV01fUEFTVEUgbWVzc2FnZSkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJVXNlIGNsaXBwaW5nIHJlZ2lvbnMgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2YgcHJvY2Vzc2luZyBwZXJmb3JtZWQgd2hlbiB0aGUKCXRvb2xiYXIgaXMgcmVwYWludGluZy4gIFJlZHVjZXMgcHJvY2Vzc2luZyBieSBhcHByb3hpbWF0ZWx5IDg1LTk1JSBpbiBtb3N0CgljYXNlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRml4ZXMgY3Jhc2ggd2hlbiBjYWxsaW5nIFRyZWV2aWV3X0VuZEVkaXRMYWJlbE5vdyBhbmQgbm8gbm9kZSBpcwoJY3VycmVudGx5IGVkaXRlZC4KCjIwMDAtMDUtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURlZmVyIHRvIHN0YW5kYXJkIHNjcm9sbGluZyBBUElzIGZvciBub24tZmxhdFNCIHNwZWNpZmljIGZ1bmN0aW9ucyBzbwoJdGhhdCBmbGF0U0JzIHNob3cgdXAgYW5kIGJlaGF2ZSBwcm9wZXJseSwganVzdCBub3Qgd2l0aCBmbGF0IHByb3BlcnRpZXMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglSb2IgRmFybnVtIDxyb2JmQGNvZGV3ZWF2ZXJzLmNvbT4KCVNlcGFyYXRlIG91dCB0aGUgMzJiaXQgY2FzZSBmcm9tIHRoZSAyNGJpdCBjYXNlLCBhbmQgY29weSAzYnl0ZXMgb2YKCXNvdXJjZSBmb3IgZXZlcnkgNGJ5dGVzIG9mIGlucHV0LCBpbnRvIHRoZSBkZXN0aW5hdGlvbiBmb3IgdGhlIDI0Yml0CgljYXNlLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwgd2luMzIvZmlsZS5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglTb3J0ZWQgb3V0IGEgZmV3IG1pc3BsYWNlZCBkZWZpbml0aW9ucy4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGZpbGUgaGFuZGxpbmcgYW5kIHZpcnR1YWwKCW1lbW9yeSBtYW5pcHVsYXRpb24uCglBZGRlZCBJc1RleHRVbmljb2RlLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIGhhbmRsaW5nIGZvciBUVlNfU0lOR0xFRVhQQU5ELgoKCSogZGxscy9jb21jdGwzMi90YWIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0ZWQgdGhlIHByb2JsZW0gd2hlcmUgYSB0YWIgY29udHJvbCBtYXJrZWQgbXVsdGlsaW5lIGJ1dCBoYXMKCW9ubHkgb25lIHRhYiB3YXMgYmVpbmcganVzdGlmaWVkIHRvIGZpbGwgdGhlIHdob2xlIHRhYiBzcGFjZS4KCgkqIG1zZG9zL2RwbWkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb21tZW50ZWQgb3V0IGJyb2tlbiBfX2FzbV9fLCBhZGRlZCBjb21tZW50cyB3aGVyZSBpdCBpcyBicm9rZW4uCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJSW5zZXJ0ZWQgYSBtaXNzaW5nIGNhbGwgdG8gU2V0V2luZG93UG9zKCkuIFdpdGggdGhpcyBjaGFuZ2UgdGhlIGhlYWRlcgoJY29udHJvbCBpcyB2aXNpYmxlIGFnYWluIGluIGxpc3Qgdmlld3Mgd2l0aCByZXBvcnQgc3R5bGUuCgoJKiBNYWtlLnJ1bGVzLmluLCB0b29scy93cmMvTWFrZWZpbGUuaW46CglSZXZpdmVkIHRoZSBHRU5fQ19TUkNTIHZhcmlhYmxlIHRvIHN1cHBvcnQgd3JjIGxleC95YWNjIHNvdXJjZXMuCgoyMDAwLTA1LTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9tZXNzYWdlLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4gKGZvciBDb3JlbCkKCVNlbmQgYSBub3JtYWwgbW91c2UgbWVzc2FnZSBjb2RlIGluIFdNX1BBUkVOVE5PVElGWSwgZXZlbiBpZiB0aGUKCWFjdHVhbCBtZXNzYWdlIHdhcyBhIG5vbi1jbGllbnQgb25lLgoKCSogc2VydmVyL3JlZ2lzdHJ5LmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL29wZW5nbDMyL3dnbC5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBpbmNsdWRlL3gxMWRydi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vcGVuZ2wzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBVcGRhdGVkIEFQSSBmaWxlcwoJLSBCZXR0ZXIgaGVhZGVycyBhbmQgcHJvdG90eXBlIGNoZWNraW5nCgktIFByb3RvdHlwZSBjaGVja2luZyBub3cgY2FsbGVkIC0tcHJvdG90eXBlIGluc3RlYWQgb2YgLS1oZWFkZXJzCgktIE5ldyBvcHRpb25zIC0taGVhZGVycy17ZHVwbGljYXRlZCxtaXNwbGFjZWR9IGZvcgoJICBkdXBsaWNhdGVkL21pc3BsYWNlZCBmdW5jdGlvbnMgY2hlY2tpbmcgb2YgdGhlIGhlYWRlcnMuCgktIE1pbm9yIGJ1ZyBmaXhlcy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUlmIHN5c3RlbSBkb2Vzbid0IGhhdmUgT3BlbkdMLCBkb24ndCByZWZlciB0byBsaWJvcGVuZ2wzMi5zby4KCgkqIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYzoKCUFiZXkgR2VvcmdlIChvZiBNYWNhZGFtaWFuL0NvcmVsKQoJV2hlbiB5b3Ugb3BlbiBmaWxlcyB3aXRoIEVtYmVkZGVkIG9iamVjdHMsIHRoZXkgd2VyZSBub3QgZ2V0dGluZyBkcmF3bgoJY29ycmVjdGx5LiAgV2hlbiB5b3UgcGFzdGUgT0xFIG9iamVjdHMgd2l0aCBwcmVzZW50YXRpb24gZGF0YSwgdGhleQoJd2VyZSBub3QgZ2V0dGluZyBkcmF3biBjb3JyZWN0bHkuCgoJKiBjb250cm9scy9tZW51LmM6IFJvYiBGYXJudW0gPHJvYmZAY29kZXdlYXZlcnMuY29tPgoJUG9zdCBhIFdNX0NBTkNFTE1PREUgbWVzc2FnZSB0byB3YWtlIHVwIHRoZSBpbnRlcm5hbCBtZW51IGhhbmRsaW5nCgljb2RlLiBUaGlzIGZpeGVzIHRoZSBwcm9ibGVtIG9mIGEgbWVudSBiZWluZyBvcnBoYW5lZCB3aGVuIHRoZSBwYXJlbnQKCXdpbmRvdyBkaXNhcHBlYXJzLCBvciBpZiB0aGUgcGFyZW50IGxvc2VzIGZvY3VzLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXggYSBtaXNtYXRjaCBiZXR3ZWVuIGZvcm1hdCBzdHJpbmcgYW5kIHBhcmFtZXRlci4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglTdXNhbiBGYXJsZXkgPHNmYXJsZXlAY29kZXdlYXZlcnMuY29tPgoJU2V0QnVkZHkgbm8gbG9uZ2VyIG92ZXJ3cml0ZXMgaXRzIHN1cGVyY2xhc3MnIFduZFByb2MgcHJvcGVydHkgd2hlbgoJdGhlIGJ1ZGR5IGhhcyBhbHJlYWR5IGJlZW4gc3ViY2xhc3NlZCwgZWxpbWluYXRpbmcgdGhlIGluZmluaXRlIGxvb3AKCXRoYXQgcmVzdWx0ZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuZWQgdXAgWDExIGV4dGVuc2lvbiB0ZXN0cy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNvbT4KCUNhcHR1cmUgXlYsXlgsXkMgYW5kIHRyYW5zbGF0ZSBpdCB0byB0aGUgY29ycmVzcG9uZGluZyBtZXNzYWdlIGZvcgoJcGFzdGUsIGN1dCwgY29weS4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZml4ZWQgdGhlIE9wZW5HTDMyIHNwZWMgZmlsZSAoYW5kIHRoZSBtYWtlX29wZW5nbF9zcGVjIHRvb2wpCgktIHByZXZlbnQgSGFsZkxpZmUgZnJvbSBjcmFzaGluZyB3aGVuIGl0IGZyZWVzIHRocmVlIHRpbWVzIHRoZSBzYW1lCgkgIHJlbmRlcmluZyBjb250ZXh0CgoJKiBncmFwaGljcy92Z2EuYywgaW5jbHVkZS92Z2EuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wcm92ZWQgRGlyZWN0RHJhd1BhbGV0dGUgaGFuZGxpbmcgKHNldCBpdCBvbiBpbml0LCBub3QgZXZlcnkgdGltZSBpdAoJY2hhbmdlcykuIEFkZGVkIFZHQV9Xcml0ZUNoYXJzKCkgZnVuY3Rpb24uCgoJKiBtc2Rvcy9pbnQzMy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNjYWxlIG1vdXNlIGNvb3JkaW5hdGVzIHRvIGRlZmF1bHQgd2lkdGggNjQwLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgV0lORV9EaXJlY3REcmF3IGEgZGVjb3JhdGlvbmxlc3MgcG9wdXAgd2luZG93LiBGaXhlcyBtb3VzZQoJY29vcmRpbmF0ZXMgcHJldmlvdXNseSBvZmZzZXQgYnkgdGhlIGludmlzaWJsZSBkZWNvcmF0aW9ucy4KCgkqIGluY2x1ZGUvd2lubnQuaDoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJI3VuZGVmIERFTEVURSBiZWZvcmUgKHJlKWRlZmluaW5nIGl0LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXhlZCB0b29sdGlwcy4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglSZWR1Y2UgdG9vbGJhciByZWRyYXdpbmcgYW5kIGZsaWNrZXIgYnkgY2FsbGluZyBSZWRyYXdXaW5kb3coKSBpbgoJVE9PTEJBUl9Nb3VzZU1vdmUoKSBvbmx5IGlmIGhvdCBlZmZlY3QgYXBwbGllcyB0byB0aGUgY3VycmVudCBob3QKCWJ1dHRvbi4gIFJlc3RvcmUgYkhvdCBmbGFnIG9mIGhvdCBidXR0b24gaW4gVE9PTEJBUl9MQnV0dG9uVXAoKSB0bwoJcmVzdG9yZSBob3QgZWZmZWN0IHByb3Blcmx5LgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBTZXJnZSBJdmFub3YKCUZpeGVkIFdNX0xCVVRUT05EQkxDTEsgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglTZXQgYW5kIHJldHJpZXZlIHRoZSB3aW5kb3cgaWNvbiB0aGF0IGlzIGRyYXduIHVuZGVyIG1hbmFnZWQgbW9kZQoJKGJhc2VkIG9uIHRoZSB3b3JrIG9mIEFuZHJldyBMZXd5Y2t5IGZvciBDb3JlbCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglDb3JyZWN0ZWQgYSBwcm9ibGVtIG9mIHdoZW4gb2xkSGl0IGlzIG5lZ2F0aXZlIGFuZCB3ZSB0cnkgdG8gdXNlIGl0IGFzCglhbiBpbmRleCBpbnRvIHRoZSBidXR0b25zIGFycmF5LgoKCSogaW5jbHVkZS93aW5kb3dzLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJU2hvdWxkIGluY2x1ZGUgY29tbWRsZy5oLgoKCSogaW5jbHVkZS93aW5kZWYuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglEZWZpbmUgdGhlIF9YODZfIG1hY3JvIG9uIEludGVsIHByb2Nlc3NvcnMuCgoJKiBjb250cm9scy9lZGl0LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVNvbWUgcGFydCBvZiBFRElUX0VNX0xpbmVMZW5ndGggY29kZSB3YXMgY29tbWVudGVkIChicm9rZW4pLiBSZXN0b3JlZAoJdGhlIGNhcGFiaWxpdHkgdG8gY2FsY3VsYXRlIHRoZSByZW1haW5pbmcgbm9uLXNlbGVjdGVkIGNoYXJzIG9mIGEKCXNlbGVjdGlvbiBhcmVhLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZW1vdmUgdGhlIFBSSU1BUllTVVJGQUNFIGF0dHJpYnV0ZSBmcm9tIGJhY2sgYnVmZmVycy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglJZiBhIGxpc3R2aWV3IGlzIGNyZWF0ZWQgd2l0aCBMVlNfTk9DT0xVTU5FSEVBREVSIHRoZW4gd2luZSBjcmVhdGVzIHRoZQoJaGVhZGVyIGxpa2Ugbm9ybWFsIGJ1dCBqdXN0IHNldHMgaXQgbm90IHZpc2libGUuIFRoaXMgZml4IGxheXMgb3V0Cgl0aG9zZSBzdXBwb3NlZGx5IG5vbmV4aXN0ZW50IGhlYWRlcnMgdG8gc2l6ZSAwLDAuIFNvIHRoYXQgZXZlbiBpZiB0aGV5CgliZWNvbWUgdmlzaWJsZSB0aGV5IGFyZSBub3QgZHJhd24uCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZW1vdmUgdGhlIGRpcmVjdCBjYWxsIGludG8gY29yZSAoRElBTE9HX0RvRGlhbG9nQm94KS4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJSW5pdGlhbGl6ZSB0aGUgYmFjay1idWZmZXIgd2l0aCB0aGUgY29ycmVjdCBWVGFibGUuCgoJKiBkbGxzL29wZW5nbDMyL29wZW5nbDMyLnNwZWMsIGRsbHMvb3BlbmdsMzIvd2dsLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfc3BlYywgd2luZS5pbmk6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCBvcHRpb24gdG8gZ2V0IGRvdWJsZS1idWZmZXJlZCBkZXNrdG9wCgktIGltcGxlbWVudGVkIHdnbFVzZUZvbnRCaXRtYXBzQSBhbmQgd2dsRGVsZXRlQ29udGV4dAoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9SRUFETUUud3JjLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZHVtcHJlcy5oLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvbmV3c3RydWMuaCwgdG9vbHMvd3JjL3BhcnNlci5oLCB0b29scy93cmMvcGFyc2VyLmwsIHRvb2xzL3dyYy9wYXJzZXIueSwgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy91dGlscy5oLCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cmMubWFuLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBJbXBsZW1lbnRlZCBhbmltYXRlZCBjdXJzb3JzIGFuZCBpY29ucyByZXNvdXJjZSB0eXBlcy4KCS0gQWRkZWQgcGFydGlhbCBzdXBwb3J0IGZvciBmb250IHJlc291cmNlcyAodXNlciBzdXBwbGllZCBmb250ZGlyIGlzCgkgIHJlcXVpcmVkKS4KCS0gQWxsIHJlc291cmNlcyB3aXRoIGlubGluZSBkYXRhIChhIGxhIFJDREFUQSkgbm93IHN1cHBvcnQgbGFuZ3VhZ2UsCgkgIHZlcnNpb24gYW5kIGNoYXJhY3RlcmlzdGljcyBkYXRhLgoJLSBJbXBsZW1lbnRlZCByZXNvdXJjZSBuYW1lIGR1cGxpY2F0ZSBjaGVja3MuIEl0IGlzIG5vdyBhbiBlcnJvciBpZgoJICB0d28gcmVzb3VyY2VzIG9mIHRoZSBzYW1lIHR5cGUgaGF2ZSB0aGUgc2FtZSBuYW1lLgoJLSBCdWdmaXg6IExhbmd1YWdlIHByb3BhZ2F0aW9uIHdhcyBub3QgY29ycmVjdCB3aGVuIC5yZXMgZmlsZXMgd2VyZQoJICBnZW5lcmF0ZWQuCgktIEJ1Z2ZpeDogVkVSU0lPTklORk8gbm93IGhhbmRsZXMgbWVtb3J5IG9wdGlvbnMuCgktIEJ1Z2ZpeDogcmVzb3VyY2UgbmFtZXMgYW5kIHRoZSByZXNvdXJjZSB0eXBlIG1heSBiZSBlcXVhbCAoZS5nLiBNRU5VCgkgIE1FTlUgey4uLn0pLiBUaGlzIHN1cHBvcnQgd2FzIG1pc3Rha2luZ2x5IGRlbGV0ZWQgaW4gdGhlIHVwZ3JhZGUgdG8KCSAgdGhlIGJ1aWx0aW4gcHJlcHJvY2Vzc29yLgoJICBUaGUgc3RhbmRhbG9uZSBMQU5HVUFHRSBzZXR0aW5nIGJlY2FtZSBjb250ZXh0IHNlbnNpdGl2ZSBhcyBhIGNvbnNlcXVlbmNlCgkgIG9mIHRoaXMuIE5vdyBpdCAqbXVzdCogZW5kIHdpdGggYSBuZXdsaW5lICphZnRlciogYm90aCBleHByZXNzaW9ucyBhbmQKCSAgbm8gbmV3bGluZXMgYXJlIGFsbG93ZWQgd2l0aGluIHRoZSBsaW5lICh0aGUgc3RhdGVtZW50IG11c3QgZml0IG9uIG9uZQoJICBsaW5lKS4gVGhpcyBpcyBubyBwcmFjdGljYWwgcHJvYmxlbSB0aG91Z2guCgoJKiB0b29scy93aW5hcGlfY2hlY2svb3V0cHV0LnBtOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglTZW5kIHJlZ3VsYXIgbWVzc2FnZXMgdG8gc3Rkb3V0IHNvIHRoYXQgdGhleSBhcmUgc2VwYXJhdGUgZnJvbQoJcHJvZ3Jlc3MgbWVzc2FnZXMuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlZ3Jlc3Npb24gdGVzdGluZyB1c2luZyBDVlMuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXk6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBTbWFsbCBmaXhlcy91cGRhdGVzCgktIEFkZCBzdXBwb3J0IGZvciB0aGUgRFBDT05ORUNUSU9OX0RJUkVDVFBMQVlMT0JCWSBmbGFnCgoJKiBkb2N1bWVudGF0aW9uL3dpbmVkYmc6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUEgYml0IG9mIGRvY3VtZW50YXRpb24gb24gbmV3IGRlYnVnZ2luZyBmZWF0dXJlcy4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBKYW1lcyBKdXJhbiA8anVyYW5AY3NlLnBzdS5lZHU+CglTZWFyY2hQYXRoQSBuZWVkcyB0byBzZXQgdGhlIGxhc3QgZXJyb3IgdG8gRVJST1JfRklMRV9OT1RfRk9VTkQgd2hlbgoJaXQgZG9lcyBub3QgZmluZCB0aGUgZmlsZS4KCgkqIHNjaGVkdWxlci9kZWJ1Z2dlci5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglVc2UgV0FSTigpIGluc3RlYWQgb2YgVFJBQ0UoKSBpbiBEZWJ1Z091dHB1dEEoKS4KCgkqIG1lbW9yeS9oZWFwLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglIZWFwRnJlZSBvbiBhIE5VTEwgcHRyIHNob3VsZCByZXR1cm4gVFJVRS4KCjIwMDAtMDUtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCVVwZGF0ZSBuSXRlbVdpZHRoIGluIExJU1RWSUVXX1NldEl0ZW0oKSBpZiBMVlNfTElTVCBvciBMVlNfU01BTExJQ09OCgltb2RlIGFuZCBpdGVtIHRleHQgaXMgd2lkZXIgdGhhbiB0aGUgY3VycmVudCBuSXRlbVdpZHRoLgoKCSogbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPlUKCUZpeGVkIGluaXRpYWxpemF0aW9uIG9mIElOU1RBTkNFREFUQSBpbiBJbml0VGFzaygpLgoKCSogZGxscy9vbGUzMi9zdG9yYWdlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTdGdPcGVuU3RvcmFnZTE2OiBjb3JyZWN0IGFyZ3VtZW50cyB0byB0aGUgQ3JlYXRlRmlsZSBjYWxsLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglET1NGU19Eb0dldEZ1bGxQYXRoTmFtZTogdGVybWluYXRlIHN0cmluZyB3ZWggY2FsbGVkIGxpa2UgLlxcZmlsZQoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZXBsYWNlIHRoZSBjYWxscyB0byBtYWxsb2MgYnkgY2FsbHMgdG8gSGVhcEFsbG9jIGFuZCBmcmllbmRzLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglBcmljIFN0ZXdhcnQgPGFyaWNAY29kZXdlYXZlcnMuY29tPgoJRml4ZXMgdGhlIGxpbmUgb2YgZ2FyYmFnZSBhdCB0aGUgYm90dG9tIG9mIGltYWdlcyBhbmQgdGhlIGZhY3QgdGhhdAoJdGhlIGJ1dHRvbnMgaW4gdGhlIG9wZW4gZGlhbG9nIGJveCB3aGVyZSB0b28gdGFsbC4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvb2xlMmNvbnYuc3BlYywgZGxscy9vbGUzMi9vbGUycHJveC5zcGVjLCBkbGxzL29sZTMyL29sZTJ0aGsuc3BlYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL29sZTJjb252LnNwZWMsIGlmMTYzMi9vbGUycHJveC5zcGVjLCBpZjE2MzIvb2xlMnRoay5zcGVjLCBkbGxzL01ha2VmaWxlLmluOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCU1vdmVkIGlmMTYzMi9vbGUye2NvbnYscHJveCx0aGt9LnNwZWMgaW50byBkbGxzL29sZTMyLgoKMjAwMC0wNS0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZDNkY2Fwcy5oLCBpbmNsdWRlL2QzZHR5cGVzLmgsIGluY2x1ZGUvZHNvdW5kLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCByZW1haW5pbmcgRGlyZWN0WCAzRDMgNiY3IDNEIGludGVyZmFjZXMuCgktIEFkZGVkIGQzZGNhcHMuaCwgZDNkdHlwZXMuaCBhbmQgcmVhcnJhbmdlZCBjb250ZW50cyBhY2NvcmRpbmcgdG8KCSAgRGlyZWN0WCA3IGhlYWRlcnMuCgktIEZpeGVkIGRzb3VuZC5oIGluY2x1ZGUgbGlzdCAoZDNkLmgtPmQzZHR5cGVzLmgpLgoKCSogcHJvZ3JhbXMvcmVnYXBpL1JFQURNRToKCUp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCU1pbm9yIHVwZGF0ZS4KCgkqIG1pc2MvcHJpbnRkcnYuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX3Rlc3QuCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJR2V0UmVsQWJzIGZvciBzb21lIHJlYXNvbiB0YWtlcyAyIHBhcmFtZXRlcnMsIGV2ZW4gdGhvdWdoIHRoZSBzZWNvbmQKCW9uZSBpcyBpZ25vcmVkIGF0IGxlYXN0IG9uIFdpbmRvd3MgTlQgMy41MSBhY2NvcmRpbmcgdG8gTWFyY3VzIE1laXNzbmVyLgoKCSogY29udHJvbHMvZWRpdC5jOiBTaGVyaSBTdGVldmVzCglUaGUgZWRpdCBpcyBub3cgZGV0ZWN0ZWQgY29ycmVjdGx5IGlmIHRoZSBwYXJlbnQgaXMgYSBjb21ibyBib3guIEl0Cgl3YXNuJ3Qgd29ya2luZyB3aGVuIHRoZSBjb21ib2JveCB3YXMgc3VwZXJjbGFzc2VkLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogRnJhbmNvaXMgQm9pc3ZlcnQKCVN5c3RlbSBpY29ucyBpbiB0aGUgc21hbGwgY2FwdGlvbiBiYXJzIGFyZSBkaXNwbGF5ZWQgd2l0aCB0aGUgcmlnaHQgc2l6ZS4KCgkqIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfbm9ybSwgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfbm9ybS5jLCBkbGxzL29wZW5nbDMyL3dnbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL21vZHVsZXMuZGF0LCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb3BlbmdsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBidWcgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglDb252ZXJ0IEMrKyBjb21tZW50cyB0byByZWd1bGFyIEMgY29tbWVudHMuCgoJKiBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhMi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgSURpcmVjdERyYXdTdXJmYWNlOjpTZXRQYWxldHRlIHNldCB0aGUgc3VyZmFjZSdzIERJQlNlY3Rpb24gY29sb3IKCW1hcCB0byBwb2ludCB0byB0aGUgSURpcmVjdERyYXdQYWxldHRlJ3Mgb3duIGRlcHRoIGNvbnZlcnNpb24gY29sb3IgbWFwLgoKCSogZGxscy9kZHJhdy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbml0aWFsaXplIGFuIGlkZW50aXR5IG1hcHBpbmcgaW4gQ3JlYXRlUGFsZXR0ZSBpZiBubyBkZXB0aCBjb252ZXJzaW9uCglpcyBuZWNlc3NhcnkuIEFsc28gZml4ZWQgYSB3YXJuaW5nLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgWDExRFJWX0RJQl9NYXBDb2xvciBtYXAgYmFjayB0byB0aGUgb3JpZ2luYWwgY29sb3IgaW5kZXggaWYgdGhlCglYSW1hZ2UgcGl4ZWwncyBwaHlzaWNhbCBjb2xvciBpcyBzdGlsbCB0aGUgc2FtZS4KCjIwMDAtMDUtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVVzZSB0aGUgY29ycmVjdCBkaXNwbGF5IGZvciBjYWNoZWQgbWV0cmljcyBmaWxlIG5hbWUuCglTdG9yZSBtZXRyaWNzIGluIHNwZWNpZmllZCBjb25maWcgZGlyLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgaW5jbHVkZS9vcHRpb25zLmgsIHdpbmUuaW5pOgoJTWFrZSBzdXJlIGFsbCBXaW5lIHByb2Nlc3NlcyBzaGFyZSB0aGUgc2FtZSBYIGRpc3BsYXkuCglJbmhlcml0IC0tbWFuYWdlZCBvcHRpb24gYWNyb3NzIHByb2Nlc3Nlcy4KCUFkZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGRpc3BsYXkgYW5kIG1hbmFnZWQgbW9kZSBpbiBjb25maWcgZmlsZS4KCgkqIGRsbHMvZGRyYXcvY29udmVydC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSB1bnNpZ25lZCBpbnQgaW5zdGVhZCBvZiB1bnNpZ25lZCBzaG9ydCBpbiBEaXJlY3REcmF3CglkZXB0aC1jb252ZXJzaW9uIGNvbG9yIG1hcC4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzoKCVN1c2FuIEZhcmxleSA8c2ZhcmxleUBjb2Rld2VhdmVycy5jb20+CglBdm9pZCBjYWxscyB0byBTZXRGb2N1cyB3aGVuIHRoZXkgYXJlIHVubmVjZXNzYXJ5LgoKMjAwMC0wNS0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCURhdmlkIEJsYWNrIDxkYmxhY2tAYnRpbnRlcm5ldC5jb20+CglJbXBsZW1lbnRlZCBUVk1fRURJVExBQkVMQSwgcGx1cyBzb21lIGltcHJvdmVtZW50cyB0byBFbmRMYWJlbEVkaXROb3cuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglNb3JlIHZlcmJvc2UgZXJyb3JzLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglGaXhlZCBib3JkZXJzIG9mIHdpbmRvd3Mgd2hpbGUgZHJhZ2dpbmcgb3Igc2l6aW5nIHRvIG1hdGNoCglUV0VBS19XaW5lTG9vayBzZXR0aW5nLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCUdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJI2luY2x1ZGUgPHN5cy90eXBlcy5oPiBiZWZvcmUgPHN5cy9tbWFuLmg+LgoKCSogbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9kZGVtbC5jLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9kZGVtbC5jLCBkbGxzL3VzZXIvZGRlbWwuc3BlYywgaWYxNjMyLy5jdnNpZ25vcmUsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2RkZW1sLnNwZWMsIGlmMTYzMi9vbGUybmxzLnNwZWM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTW92ZWQgRERFTUwgaW50byBkbGxzL3VzZXIuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvc2VydmVyLmgsIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgcmVnaXN0cnkgdmFsdWVzIGxhcmdlciB0aGFuIHRoZSBzZXJ2ZXIgYnVmZmVyLgoJV2hlbiBsb2FkaW5nIGEgcmVnaXN0cnkgZmlsZSwgYXV0b21hdGljYWxseSBkZXRlcm1pbmUgb3ZlcmxhcCBiZXR3ZWVuCglrZXkgbmFtZSBhbmQgZmlsZSBjb250ZW50cyBiYXNlZCBvbiB0aGUgZmlyc3Qga2V5IG5hbWUuCglSZW1vdmVkIHYxIHNhdmluZyBjb2RlLgoJU2F2ZSBVU0VSXC5EZWZhdWx0IHNlcGFyYXRlbHkgaW50byB+Ly53aW5lL3VzZXJkZWYucmVnLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZHJhdy9kZ2EyLmMsIGRsbHMvZGRyYXcvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9tYWluLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcHJvdmVkIERJQlNlY3Rpb24gc3VwcG9ydCBmb3IgSURpcmVjdERyYXdTdXJmYWNlOjpHZXREQy4KCgkqIGdyYXBoaWNzL3gxMWRydi9vcGVuZ2wuYywgZGxscy9vcGVuZ2wzMi93Z2wuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHNldCBkZWJ1ZyBtZXNzYWdlcyBhZnRlciBhIFRSQUNFX09OIHRlc3QKCS0gcHJldmVudCBjcmFzaCB3aGVuIG1ha2luZyB0aGUgTlVMTCBjb250ZXh0IGN1cnJlbnQKCgkqIGNvbnRyb2xzL21lbnUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglXaGVuIG5ldyBtZW51IElkIGlzIG5vdCBmb3VuZCBvciBpbmRleCA+IG5pdGVtcywgaW5zZXJ0IHRoZSBuZXcgbWVudQoJYXQgZW5kIG9mIGN1cnJlbnQgbWVudS4KCjIwMDAtMDUtMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RkcmF3L2QzZF9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGRyYXcuc3BlYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kaXJlY3QzZC9tZXNhLmMsIGRsbHMvZGRyYXcvbWFpbi5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBpbmNsdWRlL2RkcmF3Lmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBhYmlsaXR5IHRvIGNyZWF0ZSAzRDMgaW50ZXJmYWNlcyBmb3IgWGxpYgoJLSBDaGFuZ2VkIEREX09LIHRvIEQzRF9PSyBpbiBzb21lIHBsYWNlcyBmb3IgY29uc2lzdGVuY3kKCS0gQ2xlYW5lZCB1cCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzIHByZXNlbnQgd2l0aG91dCBER0EyCgktIENoYW5nZWQgb3JkZXIgZm9yIERpcmVjdERyYXdFbnVtZXJhdGVFeEEgdG8gZW51bWVyYXRlIGF0IGxlYXN0CgkgIHdoYXQgYWJpbGl0aWVzIGFyZSBrbm93biByYXRoZXIgdGhhbiBiYWlsaW5nIG9uIHVuc3VwcG9ydGVkIGZsYWdzCgktIEFkZGVkIERpcmVjdERyYXdDcmVhdGVFeCBzdHViCgoyMDAwLTA1LTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbWVudS5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCURpc3Rpbmd1aXNoIFJBRElPQ0hFQ0sgc3R5bGUgbWVudSBpdGVtcyBmcm9tIHN0YW5kYXJkIGNoZWNrbWFyayBtZW51CglpdGVtcy4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOgoJU3VzYW4gRmFybGV5IDxzZmFybGV5QGNvZGV3ZWF2ZXJzLmNvbT4KCUxpa2UgdGhlIEFVVE9SQURJT0JVVFRPTiwgdGhlIHBhcmVudCBvZiBhIFJBRElPQlVUVE9OIHN0eWxlIGJ1dHRvbgoJc2hvdWxkIGJlIHNlbnQgYSBCTl9DTElDS0VEIHdoZW4gaXQgcmVjZWl2ZXMgdGhlIGZvY3VzLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXRGdWxsUGF0aG5hbWU6IGFkZCBtaXNzaW5nIHRlcm1pbmF0aW9uIHRvIHRoZSBzdHJpbmcuCgoJKiB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgYnl0ZSBvcmRlciBvbiBTb2xhcmlzIGFuZCBGcmVlQlNELgoKCSogZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb3BlbmdsLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS93aW5lX2dsLmgsIGluY2x1ZGUveDExZHJ2LmgsIGxvYWRlci9sb2Fkb3JkZXIuYywgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9kM2R2aWV3cG9ydC5jLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBkbGxzL29wZW5nbDMyLy5jdnNpZ25vcmUsIGRsbHMvb3BlbmdsMzIvTWFrZWZpbGUuaW4sIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfZXh0LCBkbGxzL29wZW5nbDMyL21ha2Vfb3BlbmdsX25vcm0sIGRsbHMvb3BlbmdsMzIvbWFrZV9vcGVuZ2xfc3BlYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2wzMi5zcGVjLCBkbGxzL29wZW5nbDMyL29wZW5nbF9leHQuYywgZGxscy9vcGVuZ2wzMi9vcGVuZ2xfZXh0LmgsIGRsbHMvb3BlbmdsMzIvb3BlbmdsX25vcm0uYywgZGxscy9vcGVuZ2wzMi93Z2wuYywgZGxscy9vcGVuZ2wzMi93Z2wuaCwgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9wYWludGluZy5jLCBNYWtlLnJ1bGVzLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBzdXBwb3J0IGZvciBPcGVuR0wuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGFic29sdXRlIHBhdGggdG8gcGlkbCBnZW5lcmF0aW9uLgoKMjAwMC0wNS0xMSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJRml4ZWQgYnVmZmVyIG92ZXJmbG93LgoKCSogZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9pbWFnZWhscC9pbnRlZ3JpdHkuYywgZGxscy9pbWFnZWhscC9zeW1ib2wuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3RhcGkzMi9waG9uZS5jLCB3aW5kb3dzL2RyaXZlci5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGRlYnVnIG1lc3NhZ2VzLgoKCSogZGxscy9yaWNoZWRpdC9yaWNoZWRpdC5jLCBpbmNsdWRlL3JpY2hlZGl0LmgsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L29sZTJkaXNwLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2FkdmFwaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NydGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9pbWFnZWhscC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9rZXJuZWwzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9yaWNoZWQzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZnVuY3Rpb24ucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQ2hlY2sgZm9yIG1pc3NpbmcgbW9kdWxlcyBpbiBtb2R1bGVzLmRhdC4KCS0gTmV3IG9wdGlvbnMgLS1kZWJ1Zy1tZXNzYWdlcyBmb3IgZGVidWcgbWVzc2FnZSBjaGVja2luZyAodHVybmVkIG9mZgoJICBieSBkZWZhdWx0KQoJLSBEbyBub3QgZGlzY2FyZCB0aGUgYXJndW1lbnQgbmFtZSAodXNlIGluIGRlYnVnIG1lc3NhZ2UgY2hlY2tpbmcpCgktIEltcHJvdmVkIHBhcnNpbmcKCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJRml4ZWQgYXNtKCkgY29uc3RyYWludHMuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWdnZXIuaCwgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9pbnR2YXIuaCwgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCAlcCBpbiBwcmludGYgKG5vdyB1c2luZyB3c3ByaW50ZiB3aGljaCBkb2Vzbid0IHN1cHBvcnQgaXQpLgoJQWRkZWQgVGhyZWFkSWQgYW5kIFByb2Nlc3NJZCBpbnRlcm5hbCB2YXJzLgoJQWxsb3cgYXQgc3RhcnR1cCB0byBwaWNrIHVwIGEgcHJvY2VzcyB0byBkZWJ1Zy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBkaXZpc2lvbiBieSB6ZXJvLgoKCSogZGxscy9jb21jdGwzMi90cmFja2Jhci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIHF1aXJrcyAocmFuZ2UgaXMgMzIgYml0LCBwYWdlIHVwL2RuIG1pc21hdGNoIG9uIEhaIHRyYWNrYmFycykuCgoJKiB3aW5kb3dzL3Njcm9sbC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNjcm9sbCBvZmYtc2NyZWVuIGNvbnRyb2xzIHdoZW4gc2Nyb2xsIHJlY3RhbmdsZSBpcyBOVUxMLgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgaW5jbHVkZS90YWIuaDoKCUtlbiBUaG9tYXNlcyA8a2VuQGNvZGV3ZWF2ZXJzLmNvbT4KCUltcGxlbWVudGVkIHRhYiBjb250cm9sIHN0eWxlIFRDU19IT1RUUkFDSyAodGFicyBhcmUgaGlnaGxpZ2h0ZWQgb24KCW1vdXNlLW92ZXIpLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglSZW1vdmUgdGhlIGJhY2tncm91bmQgZnJvbSB0aGUgbmV3IGltYWdlIHdoZW4gaXQgaXMgYmVpbmcgcmVwbGFjZWQKCXdpdGggYSBSZXBsYWNlSW1hZ2UuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci90YXNrLmM6CglCZXJuZCBIZXJkIDxpbmZvQGhlcmRzb2Z0LmNvbT4KCU1ha2Ugc3VyZSBoSW5zdGFuY2UgaXMgYSBwcm9wZXIgZ2xvYmFsIGhhbmRsZSBhbmQgbm90IGEgc2VsZWN0b3IKCXZhbHVlLgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6IEplYW4tQ2xhdWRlIEJhdGlzdGEKCVByaW50RGlhbG9nIG5vdyBjcmVhdGVzIGEgREMgd2hlbiByZWNlaXZpbmcgYSBQRF9SRVRVUk5EQyBmbGFnLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUNsZWFuIHVwIHRoZSBkcmF3aW5nIGNvZGUgYWZ0ZXIgYSBsYWJlbCB1cGRhdGUuIFRoZXJlIHdlcmUgcHJvYmxlbXMgaWYKCXRoZSBuZXcgbGFiZWwgaXMgc2hvcnRlciB0aGF0IHRoZSBvbGQgbGFiZWwgZnJhZ21lbnRzIG9mIHRoZSBvbGQgbGFiZWwKCXdlcmUgbGVmdCBkcmF3bi4KCgkqIHdpbmRvd3Mvd2luLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglDbGVhciBtZW51IGhhbmRsZSBhZnRlciBkZXN0cm95aW5nIG1lbnUuCgoJKiBjb250cm9scy9tZW51LmM6CglHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJUmV2YWxpZGF0ZSBtZW51IGhhbmRsZSBpbiBtdC5oVG9wTWVudSBhZnRlciBEaXNwYXRjaE1lc3NhZ2UuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBCZXJuZCBIZXJkIDxpbmZvQGhlcmRzb2Z0LmNvbT4KCVBhc3MgQ1RMREFUQSBhcyBTRUdQVFIgZm9yIDE2LWJpdCBwcm9ncmFtcy4KCgkqIGRsbHMvdmVyc2lvbi92ZXIxNi5jOgoJQWxleGFuZGVyIEZyaW5rIDxBbGV4YW5kZXIuRnJpbmtAVW5pLU1haW56LkRFPgoJUHJldmVudCBwb3NzaWJsZSBOVUxMIHBvaW50ZXIgYWNjZXNzLgoKMjAwMC0wNS0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYzogQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCS0gV2luZSB3YXMgcGFzc2luZyB0aGUgd3JvbmcgaHduZCBhcyB0aGUgb3duZXIgd2hlbiBwcm9jZXNzaW5nIG93bmVyCgkgIGRyYXduIG1lbnViYXJzLgoJLSBXaGVuIGRvaW5nIE1FTlVfQ2FsY0l0ZW1TaXplIGZvciB0aGUgbWVudSBiYXIgd2Ugd2VyZSBub3QgcHJvcGVybHkKCSAgcGFkZGluZyB0aGUgcmV0dXJuZWQgcmVjdC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBbGxvdyB0aGUgdXNlciB0byBjYW5jZWwgbGFiZWwgZWRpdGluZyB3aXRoIGVzYyBhbmQgY29uZmlybSB3aXRoIHJldHVybi4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6CglLZW4gVGhvbWFzZXMgPGtlbkBjb2Rld2VhdmVycy5jb20+CglSZXN0b3JlIGFjY2lkZW50YWxseSB1bmRvbmUgY2hhbmdlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIFdpbmUgd2FzIG5vdCBwcm9wZXJseSByZXBvcnRpbmcgYmFjayB0aGUgZWRpdGVkIGxhYmVsIHRvIHRoZQoJICBhcHBsaWNhdGlvbiBpbiBhIHRyZWV2aWV3IHdoZW4gdGhlIGxhYmVsIGlzIGEgY2FsbGJhY2suCgktIEJlY2F1c2Ugd2luZG93cyBhcHBsaWNhdGlvbnMgYXNzdW1lIHRoZXkgZ2V0IGEgbmV3IGVkaXQgY29udHJvbAoJICBldmVyeSB0aW1lIHRoZXkgb2Z0ZW4gc3ViY2xhc3MgdGhhdCBlZGl0IGJveCB3aWxseS1uaWxseSBhbmQgZG8gbm90CgkgIGNsZWFuIHVwLiBTbyBpdCBpcyBuZWNlc3NhcnkgdG8gYWN0dWFsbHkgZ2l2ZSB0aGVtIGEgbmV3IGVkaXQgY29udHJvbAoJICBlYWNoIHRpbWUuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CgktIENsZWFuZWQgdXAgc29tZSBvZiB0aGUgZHJhd2luZyBjb2RlLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoCgkgIGF2b2lkaW5nIHRyeWluZyB0byBkcmF3IGludmFsaWQgYml0bWFwcy4KCS0gQXZvaWQgZGlyZWN0bHkgY2FsbGluZyBkcmF3aW5nIGZ1bmN0aW9ucyBpbnN0ZWFkIGludmFsaWRhdGluZyByZWN0cwoJICBhbmQgcmVseWluZyBvbiBXTV9QQUlOVC4KCS0gRm9yIHRoZSBkcm9wZG93biBldmVudCBjaGVjayB0aGUgYnV0dG9uIHN0eWxlIGFzIG9wcG9zZWQgdG8gdGhlCgkgIHRvb2xiYXIgc3R5bGUuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWtlIGludGVybmFsIGJ1ZmZlcnMgc2l6ZSBtdWx0aXBsZSBvZiA0LgoKCSogd2luZG93cy9tZGkuYzoKCUd1eSBMLiBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglWZXJpZnkgdGhlIG1lbnUgaGFuZGxlIGlzIG5vbi16ZXJvIHByaW9yIHRvIHVzZS4KCgkqIGNvbnRyb2xzL21lbnUuYzogS2VuIFRob21hc2VzIDxrZW5AY29kZXdlYXZlcnMuY29tPgoJRml4ZWQgdG8gZGlzcGxheSBwb3B1cC1tZW51IGFycm93IG9uIG93bmVyLWRyYXduIHBvcHVwIG1lbnVzLgoJRml4ZWQgcG9zaXRpb25pbmcgb2Ygc3VibWVudXMgcmVsYXRpdmUgdG8gcGFyZW50IG1lbnVzLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGRsbHMvd2lubW0vdGltZS5jLCBncmFwaGljcy92Z2EuYywgbWlzYy9zeXN0ZW0uYywgc2NoZWR1bGVyL3NlcnZpY2VzLmMsIHdpbmRvd3MvdGltZXIuYzoKCVNwZWNpZnkgdGhlIHNlcnZpY2UgdGhyZWFkIHRpbWVycyBpbiBtcyBpbnN0ZWFkIG9mIHVzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCB0b29scy9idWlsZC5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCBpbmNsdWRlL3dpbm50LmgsIG1pc2MvbWFpbi5jOgoJUmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIFBFIGhlYWRlciBhdCB0aGUgc3RhcnQgb2YgdGhlIC5zbyBmaWxlLgoJU3RvcmUgdGhlIGV4cG9ydCB0YWJsZSBpbnNpZGUgdGhlIGRhdGEgc2VjdGlvbiBzbyB0aGF0IHNlY3Rpb25zIGNhbiBiZQoJcHJvcGVybHkgYWxpZ25lZC4KCUJ1aWxkIHRoZSByZWxheSBmdW5jdGlvbiB0YWJsZSBkaXJlY3RseSBpbiB0aGUgLnNwZWMuYyBmaWxlLgoJTW92ZWQgcmVsYXkgZGVidWdnaW5nIGZ1bmN0aW9ucyB0byByZWxheTM4Ni5jLgoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVByb3RlY3QgYWdhaW5zdCB1c2Ugb2YgY29tY3RsMzIgcHJpdmF0ZSBjb250cm9sIG1lbW9yeSBhZnRlciBpdCBoYXMKCWJlZW4gZnJlZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCVNvbWUgcHJvZ3JhbXMgc3dpdGNoIHRoZWlyIHN0YXR1cyBiYXIgYmFjayBhbmQgZm9ydGggZnJvbSBzaW1wbGUgbW9kZQoJd2hpbGUgcnVubmluZy4gVGhpcyBmaXggY29ycmVjdHMgZHJhd2luZyBhbmQgdGV4dCBzZXR0aW5nIHByb2JsZW1zIHRoYXQKCXJlc3VsdCBmcm9tIHRoaXMgYmVoYXZpb3IuCgoyMDAwLTA1LTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2hlYXAuYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJRml4ZWQgSGVhcEFsbG9jKEhFQVBfWkVST19NRU1PUlkpIHRvIGNsZWFyIHRoZSB3aG9sZSBhbGxvY2F0ZWQgYmxvY2suCglWYXJpb3VzIG9wdGltaXphdGlvbnMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBXQVZFSERSIG5vdGlmaWNhdGlvbiBoZXVyaXN0aWMuCglBZGRlZCBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBsb29wcyBpbiBXQVZFSERScy4KCUZpeGVkIGlzc3VlcyB3aGVuIG1peGluZyBvcGVuIGFuZCBnZXRDYXBzIGNhbGxzLgoKCSogdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9wYXJzZXIuaCwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9yZWFkcmVzLmMsIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjLm1hbiwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQGFraHBoZC5hdS5kaz4KCS0gQnVnZml4OiBDb3JyZWN0ZWQgYSBTRUdWIGluIHRoZSByYXdkYXRhIGhhbmRsaW5nLiBNaXN0YWtpbmdseSB0b29rIHRoZQoJICBhZGRyZXNzIG9mIGEgcG9pbnRlciBpbnN0ZWFkIG9mIGl0cyB2YWx1ZS4gVGhpcyBwcm9iYWJseSBzbGlwcGVkIGluCgkgIGR1cmluZyB0aGUgbWVyZ2Ugb2YgbXkgdHJlZSBpbnRvIHRoZSB3aW5ldHJlZS4KCSAgTGVzc29uIGxlYXJuZWQ6IGFsd2F5cyBkb3VibGUgY2hlY2suCgktIFZlcmlmaWVkIG1vc3QgcmVzb3VyY2VzIHNvIHRoYXQgd2luMTYgY29tcGlsZSBhbHNvIGdlbmVyYXRlcyBjb3JyZWN0CgkgIG91dHB1dCBmb3IgcmV2ZXJzZWQgZW5kaWFuLgoJLSBJbXBsZW1lbnRlZCBieXRlLW9yZGVyaW5nIGZvciByZXNvdXJjZXMuIEFsbCByZXNvdXJjZXMgY2FuIGJlIGZvcmNlZAoJICB0byBiZSBsaXR0bGUtLCBiaWctIG9yIG5hdGl2ZSBlbmRpYW4gd2l0aCBjb21tYW5kLWxpbmUgb3B0aW9uIC1CLgoJLSBSZWFkaW5nIHJlc291cmNlcyBmcm9tIC5yZXMtZmlsZXMgYXJlIG9ubHkgYWNjZXB0ZWQgaW4gbmF0aXZlIGJ5dGUtCgkgIG9yZGVyaW5nIHNvIHRoYXQgbm8gYWRkaXRpb25hbCBzZW1hbnRpYyBhbmFseXNpcyBpcyByZXF1aXJlZC4KCS0gUmVzb3VyY2UgZGlyZWN0b3J5IGlzIHN0aWxsIHdyaXR0ZW4gaW4gbmF0aXZlLW9ubHkgZm9ybWF0LCBpbmNsdWRpbmcKCSAgdGhlIHN0cmluZ3MuCgktIFdyYyBpcyBub3cgaW5zdGFsbGVkIHRocm91Z2ggdGhlIG1ha2VmaWxlIHdpdGggJ21ha2UgaW5zdGFsbCcgYW5kIGFsc28KCSAgdW5pbnN0YWxsZWQgd2l0aCAnbWFrZSB1bmluc3RhbGwnLgoJLSBXcm90ZSBhIG1hbi1wYWdlIGZvciBiZXR0ZXIgcmVmZXJlbmNlLiBUaGUgbWFucGFnZSBhbHNvIGdldHMgaW5zdGFsbGVkCgkgIGFuZCB1bmluc3RhbGxlZC4KCS0gQ2xlYW5lZCB1cCB0aGUgbmFtZXNwYWNlIGEgYml0IGJ5IG1vcmUgYWdyZXNzaXZlIHVzZSBvZiBzdGF0aWMuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBpbmNsdWRlL3RhYi5oOgoJQXJpYyBTdGV3YXJ0IDxhcmljQGNvZGV3ZWF2ZXJzLmNvbT4KCUFkZGVkIHRoZSBhYmlsaXR5IHRvIHVzZSBtdWx0aWxpbmUgdGFiIGNvbnRyb2xzIHRvIHdpbmUuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYywgZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTnVtYmVyIG9mIHN1cmZhY2UgTG9jay9VbmxvY2tzIG11c3QgTk9UIG1hdGNoLCBzbyBkbyBOT1QgdXNlIGl0IGZvcgoJcmVmZXJlbmNlIGNvdW50aW5nLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXBkYXRlIGZvciBuZXcgV2luZSBmZWF0dXJlczsgdXNlIHR0eWRydiBpbnN0ZWFkIG9mIHgxMWRydiB3aGVuCglydW5uaW5nIHJlZ2FwaSwgYW5kIHNldCBjb3JyZWN0IHdpbmVkYmcgcGF0aCBpbiB0aGUgcmVnaXN0cnkuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGp1bXBfYWxpYXMgZm9yIG5vbi1QSUMsIGFuZCBkaXNhYmxlZCBpdCBmb3IgUElDLCBzaW5jZSBpdAoJZG9lc24ndCB3b3JrIGZvciBQSUMgcmlnaHQgbm93LiBUaGlzIGZpeGVzIGN1cnJlbnQgY3Jhc2hpbmcgc2lnYWN0aW9uCgljYWxscy4KCgkqIGRlYnVnZ2VyL21lbW9yeS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB4IC9zIGNvbW1hbmQuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIHNvbWUgcmVnIHRlbXAgZmlsZSBjbHV0dGVyIGNoZWNrIChtb3JlIHRoYW4gMTAwIHRlbXAgZmlsZXMgaW4KCX4vLndpbmUpLgoKMjAwMC0wNS0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2V0SW1hZ2VCaXRzXzg6IGFkZGVkIC0+MTUgY29udmVyc2lvbiBpbiBvcHRpbWl6ZWQgYXNzZW1ibGVyLgoKCSogZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9hbnNpX2dlbi5oLCBkbGxzL3JpY2hlZGl0L2Fuc2lfc3ltLmgsIGRsbHMvcmljaGVkaXQvY2hhcmxpc3QuYywgZGxscy9yaWNoZWRpdC9jaGFybGlzdC5oLCBkbGxzL3JpY2hlZGl0L3JlYWRlci5jLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyLmgsIGRsbHMvcmljaGVkaXQvcmljaGVkMzIuc3BlYywgZGxscy9yaWNoZWRpdC9yaWNoZWQzMl9tYWluLmMsIGRsbHMvcmljaGVkaXQvcmljaGVkaXQuYywgZGxscy9yaWNoZWRpdC9ydGYuaCwgZGxscy9yaWNoZWRpdC9ydGYydGV4dC5oLCBkbGxzL3JpY2hlZGl0L3N0ZGNoYXJuYW1lcy5oLCBkbGxzL3JpY2hlZGl0L3RleHQtd3JpdGVyLmMsIGRsbHMvcmljaGVkaXQvdGV4dF9tYXAuaCwgaW5jbHVkZS9yaWNoZWRpdC5oOgoJSmVhbi1DbGF1ZGUgQmF0aXN0YQoJV3JhcHMgc29tZSBSaWNoRWRpdCBjb250cm9sIGZ1bmN0aW9uYWxpdHkgb24gYW4gRWRpdCBjb250cm9sLiBJdCB1c2VzCglhIGZyZWUgaW1wbGVtZW50YXRpb24gb2YgYW4gUlRGIHBhcnNlciB3cml0dGVuIGJ5IFBhdWwgRHVCb2lzCglodHRwOi8vd3d3LnByaW1hdGUud2lzYy5lZHUvc29mdHdhcmUvUlRGLyB3aGljaCBJIG1vZGlmaWVkIGEgYml0IHRvCgl3b3JrIHdpdGggdGhlIGNvbnRyb2wuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzoKCURvIG5vdCBzZW5kIFdNX1NJWklORyB0byAxNi1iaXQgd2luZG93cy4KCgkqIGRsbHMvZ2RpL2dkaV9tYWluLmMsIGRsbHMvdXNlci91c2VyX21haW4uYzoKCUNsZWFuZWQgdXAgbG9jYWwgaGVhcCBpbml0aWFsaXNhdGlvbi4KCgkqIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9vbGUzMi9vbGUyLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2LmgsIGxvYWRlci9wZV9pbWFnZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCB3aW5kb3dzL2RyaXZlci5jOgoJTW92ZWQgTG9hZC9GcmVlTGlicmFyeTE2IGRlZmluaXRpb24gdG8gd2luYmFzZTE2LmguCgoJKiBkbGxzL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL01ha2VmaWxlLmluLCBkbGxzL29sZTMyL29sZTJubHMuYywgZGxscy9vbGUzMi9vbGUybmxzLnNwZWMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgb2xlL29sZTJubHMuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglTZXBhcmF0ZSBPTEUyTkxTIG91dCBvZiBLRVJORUwuCgoJKiB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIENoZWNrIGZvciBtaXNzaW5nIG1vZHVsZXMgaW4gbW9kdWxlcy5kYXQuCgktIE1pbm9yIGJ1ZyBmaXhlcwoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJSmVhbi1DbGF1ZGUgQmF0aXN0YSAoTWFjYWRhbWlhbi9Db3JlbCkKCVRvcC1kb3duIGltYWdlcyBoYXZlIGEgbmVnYXRpdmUgYmlIZWlnaHQsIHRoZSBzY2FubGluZXMgb2YgdGhlc2VzCglpbWFnZXMgd2VyZSBpbnZlcnRlZCBpbiBYMTFEUlZfRElCX0dldEltYWdlQml0c194eC4gVG8gcHJldmVudCB0aGlzIEkKCXNpbXBseSBjaGFuZ2VkIHRoZSBzaWduIG9mIGxpbmVzLCB0aGUgc2NhbmxpbmVzIHdlcmUgY29ycmVjdGx5IGhhbmRsZWQKCWFmdGVyd2FyZHMKCgkqIGRlYnVnZ2VyL3N0YWJzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9sZCB2ZXJzaW9ucyBvZiBnbGliYyBtaWdodCBub3QgaGF2ZSBTVE5fVU5ERUYgZGVmaW5lZC4KCgkqIGZpbGVzL2ZpbGUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZXZlcnQgdGhlIHRlc3QgZm9yIFZpcnR1YWxfSGFuZGxlRmF1bHQgaW4gUmVhZEZpbGUvV3JpdGVGaWxlLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJU2V0IHRoZSBpdGVtSUQgbWVtYmVyIG9mIHRoZSBEUkFXSVRFTVNUUlVDVCB0byB0aGUgbnVtYmVyIG9mIHRoZQoJc3RhdHVzIHBhcnQgcGFpbnRlZC4KCgkqIHdpbmRvd3MvbWRpLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWx3YXlzIGNhbGxzIFNldE1lbnUgaW4gTURJU2V0TWVudS4KCgkqIGRsbHMvdGFwaTMyL2xpbmUuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglTbWFsbCBkZWJ1ZyBjaGFubmVsIGNsZWFudXAuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJRml4ZWQgc2Nyb2xsaW5nIGJ1Zy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBMaXN0Vmlld19TZXRIb3ZlclRpbWUoKSwgTGlzdFZpZXdfR2V0SG92ZXJUaW1lKCksIGluaXRpYWwKCXN1cHBvcnQgZm9yIHRoZSBMVlNfRVhfVFJBQ0tTRUxFQ1QgZmxhZy4gIEFkZGVkIGNvZGUgdG8gZGVsZXRlIGl0ZW1zCglpbiBMSVNUVklFV19TZXRJdGVtQ291bnQoKS4KCjIwMDAtMDUtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9ub25jbGllbnQuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBXTV9TSVpJTkcgbWVzc2FnZSBzdXBwb3J0LgoKCSogZ3JhcGhpY3MvcGF0aC5jOiBSb2IgRmFybnVtIDxyb2JmQHR3aW51eC5jb20+CglSZW1vdmVkIHdhcm5pbmdzIGZyb20gZnJlZWluZyBwYXRoIGluIERlbGV0ZURDLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzoKCUFyaWMgU3Rld2FydCA8YXJpY0Bjb2Rld2VhdmVycy5jb20+CglGaXhlZCBhIGJ1ZyB3aXRoIHRoZSBwcm9jZXNzaW5nIG9mIEhpdFRlc3QuCgoJKiBjb250cm9scy9lZGl0LmM6IFN1c2FuIEZhcmxleSA8c3VzYW5AY29kZXdlYXZlcnMuY29tPgoJSGFuZGxlIF5DLCBeViBhbmQgXlggaW4gYW4gZWRpdCBjb250cm9sIHByb3Blcmx5LgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3RyaXAgdGhlICQkJFBST1RPLkhJViBiaXQgZnJvbSB3aW4yayBTWVNURU0gYW5kIFNPRlRXQVJFIGhpdmVzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgREMgbGVhay4KCgkqIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJZiB3ZSBkbyBub3QgZmluZCBhIHJlc291cmNlIGZvciBib3RoIChwcmltYXJ5IGxhbmd8c3ViIGxhbmcpLCB3ZSB0cnkKCWp1c3QgKHByaW1hcnkgbGFuZykgYmVmb3JlIHVzaW5nIHRoZSBkZWZhdWx0LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglXb3JrZWQgYXJvdW5kIHNvbWUgdG9vbHRpcHMgaGlkZSBwcm9ibGVtcyBieSBjaGVja2luZyB0aGUgY3VycmVudCB0b29sdGlwLgoKCSogZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhIGNvbmZpZ3VyYXRpb24gaGludCBmb3IgdGhlIENELVJPTSAidW5oaWRlIiBvcHRpb24uCgoJKiBvbGUvb2xlMm5scy5jOgoJSGVubmluZyBIb2ZmbWFubiAob2YgTWFjYWRhbWlhbiBmb3IgQ29yZWwpCglJbXBsZW1lbnRlZCBTZXRMb2NhbGVJbmZvKCkuIEl0IHJlcXVpcmVkIGEgY2hhbmdlIHRvIEdldExvY2FsZUluZm8oKQoJYXMgd2VsbCwgYmVjYXVzZSBHZXRMb2NhbGVJbmZvKCkgaGFzIHRvIGdldCBhbnkgdmFsdWVzIHNhdmVkIGJ5CglTZXRMb2NhbGVJbmZvKCkgaW4gdGhlIHJlZ2lzdHJ5LgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvd2luZWRiZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJ1ZmZlciBvdmVyZmxvd3MuCglNYWRlIHN0YWIgcGFyc2luZyBtb3JlIHJvYnVzdCAobm93IGlnbm9yZXMgQysrIHN0YWJzKS4KCURpc3BsYXkgY29ycmVjdCBiYWNrdHJhY2UgYXQgZmlyc3Qgd2hlbiBpbnZva2VkIG9uIHVuaGFuZGxlZCBleGNlcHRpb24uCglMb2FkcyBzdGFicyBmcm9tIC5zbyBmaWxlcyB3aGVuIHRob3NlIGFyZSBsb2FkZWQuCgoyMDAwLTA1LTAzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kZWJ1Z2RlZnMuaDogR2VuZXJhdGVkIGFnYWluLgoKCSogaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVBFX0xvYWRJbWFnZTogcmVtb3ZlZCB2ZXJzaW9uIHBhcmFtZXRlciwgc2V0IGxhc3QgZXJyb3IgY29ycmVjdGx5LgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oOgoJU3RvcmUgcHJvY2VzcyBmaWxlIG5hbWUgaW4gc3RhcnR1cCBpbmZvLgoJRml4ZWQgZXhlX2ZpbGUgaGFuZGxpbmcuCgoJKiBkbGxzL01ha2VmaWxlLmluOiBGaXhlZCB0eXBvLgoKCSogTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvcmljaGVkaXQvLmN2c2lnbm9yZSwgZGxscy9yaWNoZWRpdC9NYWtlZmlsZS5pbiwgZGxscy9yaWNoZWRpdC9yaWNoZWQzMi5zcGVjLCBkbGxzL3JpY2hlZGl0L3JpY2hlZDMyX21haW4uYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglBZGRlZCBzdHVicyBmb3IgcmljaGVkMzIuZGxsLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDYWxsIFhPcGVuSU0gb24gdGhlIGxhcmdlIHN0YWNrLgoKCSogaW5jbHVkZS93aW5zb2NrLmg6CglCYW5nIEp1bi1Zb3VuZyA8YmFuZ2p5QGRyZWFtd2l6LmNvbT4KCUZyZWVCU0QgMy40IGNvbXBpbGUgZml4LgoKCSogZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvd2luZWRiZy5jLCBncmFwaGljcy92Z2EuYywgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luY29uLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2VydmVyL2NvbnNvbGUuYywgd2luMzIvY29uc29sZS5jOgoJRml4ZWQgQ09PUkQgc3RydWN0dXJlIGRlZmluaXRpb24uCglGaXhlZCBHZXRMYXJnZXN0Q29uc29sZVdpbmRvd1NpemUgdG8gbm90IHJldHVybiBhIHN0cnVjdHVyZSB3aGVuCgljYWxsZWQgZnJvbSB0aGUgV2luZG93IGJpbmFyeS4KCgkqIHNlcnZlci9vYmplY3QuYzogU21hbGwgb3B0aW1pemF0aW9uLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jOiBGaXhlZCBkZWZhdWx0IHRocmVhZCBzdGFjayBzaXplLgoKCSogb2JqZWN0cy90ZXh0LmM6IEZpeGVkIERyYXdUZXh0VyBsZW5ndGggaGFuZGxpbmcuCgoJKiBkbGxzL2RkcmF3L2RzdXJmYWNlL21haW4uYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglSZW1vdmUgdGhlIGFzc2VydGlvbiB3aGVuIHRoZXJlIGlzIG5vIHNvdXJjZSBzdXJmYWNlLgoKCSogaW5jbHVkZS9vbGVhdXRvLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgRG9zRGF0ZVRpbWVUb1ZhcmlhbnRUaW1lIHByb3RvdHlwZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglNYXAgU3RyQ2hyQSB0byBzdHJjaHIuICBGaXggU3RyQ2hyVyBhcmcgbGlzdC4KCgkqIGluY2x1ZGUvd2ludXNlci5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgSFdORF9NRVNTQUdFLgoKCSogZGxscy9vbGUzMi9zdGdfc3RyZWFtLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBbGxvdyBJU2VxdWVudGlhbFN0cmVhbV9Xcml0ZSB0byB3b3JrIGlmIGFjY2VzcyBtb2RlIGlzIFNUR01fUkVBRFdSSVRFLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCU1tYXAgZG9lcyBub3QgZmFpbCBvbiB6ZXJvLWxlbmd0aCBmaWxlcy4KCjIwMDAtMDUtMDEgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJVXNlIGV4Y2VwdGlvbiBoYW5kbGluZyB0byBpbXBsZW1lbnQgdGhlIElzQmFkKiBmdW5jdGlvbnMuCglSZW1vdmVkIC9wcm9jL3NlbGYvbWFwcyBwYXJzaW5nIGFzIGl0IGlzIG5vdCB2ZXJ5IHVzZWZ1bCB3aXRoIC5zbyBsaWJzLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglTZXR1cCB0aGUgaW5pdGlhbCB0aHJlYWQgJWZzIGZyb20gYSBjb25zdHJ1Y3Rvci4KCgkqIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L3gxMS5jLCBpbmNsdWRlL3dpbm50Lmg6CglBZGRlZCBERUNMX0dMT0JBTF9DT05TVFJVQ1RPUiBtYWNyby4KCgkqIHJlc291cmNlcy91c2VyMzIucmMsIHRvb2xzL01ha2VmaWxlLmluLCB0b29scy93cmMvLmN2c2lnbm9yZSwgdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgdG9vbHMvd3JjL1JFQURNRS53cmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLmgsIHRvb2xzL3dyYy9wYXJzZXIubCwgdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvcHBsLmwsIHRvb2xzL3dyYy9wcHkueSwgdG9vbHMvd3JjL3ByZXByb2MuYywgdG9vbHMvd3JjL3ByZXByb2MuaCwgdG9vbHMvd3JjL3V0aWxzLmMsIHRvb2xzL3dyYy91dGlscy5oLCB0b29scy93cmMvd3JjLmMsIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjLCBkbGxzL2Rpc3BsYXkvZGlzcC5yYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvcnNyYy5yYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEltcGxlbWVudGVkIGEgbmV3IHByZXByb2Nlc3NvciB0aGF0IGlzIChuZWFybHkpIEFOU0ktQyBjb21wbGlhbnQuIFRoZQoJICBvbGQgcGFyc2VyIGhhcyBiZWVuIHN0cmlwcGVkIGZyb20gdGhlIG9sZCBwcmVwcm9jZXNzb3ItY29kZSB3aGljaAoJICBjbGVhbmVkIHVwIGJvdGggcmVzb3VyY2Utc2Nhbm5lciBhbmQgLXBhcnNlci4KCS0gU3RhbmRhcmQgZGVmaW5lcyBoYXZlIGJlZW4gaW50cm9kdWNlZCAoc2VlIFJFQURNRS53cmMpCgktIEJvdGggcHJlcHJvY2Vzc29yLSBhbmQgcmVzb3VyY2Utc2Nhbm5lciBoYXZlIGJlZW4gb3B0aW1pemVkIHNsaWdodGx5CgkgIHNvIHRoYXQgbm8gYmFja2luZyB1cCBpcyByZXF1aXJlZCAob25lIGNoYXIgbG9va2FoZWFkIGlzIGVub3VnaCkuCgktIEZpbGVuYW1lLXNjYW5uaW5nIGhhcyBiZWVuIGNsZWFuZWQgdXAsIHRob3VnaCBub3QgcGVyZmVjdCB5ZXQuCgktIFVzZXItdHlwZSByZXNvdXJjZXMgYXJlIGNvbXBhdGlibGUgbm93LgoJLSBMaW5lLWNvbnRpbnVhdGlvbiBpbiBzdHJpbmdzIGlzIGNvcnJlY3RlZCBzbyB0aGF0IGl0IGRvZXMgbm90CgkgIGludHJvZHVjZSBhIG5ld2xpbmUgaW4gdGhlIG91dHB1dC4KCgkqIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIGxvYWRlci9tb2R1bGUuYywgbWVtb3J5L2Vudmlyb24uYywgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbWFpbi5jOgoJUmV3cm90ZSBVbml4IHByb2Nlc3MgbGF1bmNoaW5nIHRvIGFsbG93IHBhc3Npbmcgc3RhcnR1cCBpbmZvcm1hdGlvbiB0bwoJV2luZWxpYiBhcHBzLiBJbXByb3ZlZCBoYW5kbGluZyBvZiBleGVjdmUoKSBmYWlsdXJlcy4KCgkqIGZpbGVzL2ZpbGUuYzogQWRkZWQgRU5PRVhFQyBlcnJvciBjb2RlLgoKCSogc2NoZWR1bGVyL3B0aHJlYWQuYzogQWRkZWQgYXRmb3JrIHN1cHBvcnQuCgoJKiBjb25maWd1cmUuaW4sIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGRyYXcvZGdhMi5jLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYTIuYywgZGxscy9kZHJhdy9kZ2EyX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kZ2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RwYWxldHRlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYS5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL2RnYTIuYywgY29uZmlndXJlOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkIERHQTIgZHJpdmVyIHRvIERpcmVjdERyYXcuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDT01ETEczMl9EbGxFbnRyeVBvaW50LENPTURMRzMyX1NldENvbW1EbGdFeHRlbmRlZEVycm9yOiBkZWxheQoJYWxsb2NhdGlvbiBvZiBUbHMgZm9yIENvbW1EbGdFeHRlbmRlZEVycm9yIHVudGlsIGl0IGlzIG5lZWRlZC4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc2VndiB3aGVuIGRlYnVnZ2VyIHJlZ2lzdHJ5IGtleSBkb2Vzbid0IGV4aXN0LgoKCSogZGxscy9pY21wL2ljbXBfbWFpbi5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglVc2UgPHN0ZGxpYi5oPiBpbnN0ZWFkIG9mIHRoZSBkZXByZWNhdGVkIGFuZCBub24tcG9ydGFibGUgPG1hbGxvYy5oPi4KCjIwMDAtMDQtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBBTk5PVU5DRSwgQ2hhbmdlTG9nLCBpbmNsdWRlL3ZlcnNpb24uaDoKCVJlbGVhc2UgMjAwMDA0MzAuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJWDExRFJWX1NldEZvY3VzOiByZWFsbHkgZG9uJ3QgbWVzcyB3aXRoIGZvY3VzIGZvciBtYW5hZ2VkIHdpbmRvd3MuCgoJKiBncmFwaGljcy93aW4xNmRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGluY2x1ZGUvaGVhcC5oLCBtZW1vcnkvaGVhcC5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZW1vdmVkIEhFQVBfeGFsbG9jLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBFbmhhbmNlZCBpbnRlcm5hbCB2YXJpYWJsZXMgZnJhbWV3b3JrIChpbmNsdWRpbmcgcmVhZC9zYXZlIHRvCgkgIHJlZ2lzdHJ5IGFuZCB0eXBpbmcpCgktIEZpbmFsaXplZCB1c2Ugb2YgV2luZG93cycgQ29uc29sZSBJL08gaW50ZXJmYWNlIChpbnN0ZWFkIG9mIFVuaXggc3RkCgkgIHN0cmVhbXMpCgktIE5vdyBoYW5kbGluZyByZWdpc3RlcnMgYXMgaW50ZXJuYWwgdmFyaWFibGVzICh0aGV5IGFyZSBubyBsb25nZXIKCSAgc2VlbiBhcyBhIHNwZWNpZmljIHR5cGUpCgoJKiB3aW4zMi9leGNlcHQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbnN1cmUgd2UgYWx3YXlzIHRyeSB0byBsYXVuY2ggYSBkZWJ1Z2dlci4KCgkqIHJlbGF5MzIvd293dGh1bmsuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBUaHJlYWQgcHNldWRvIGhhbmRsZSBhbmQgbm90IFRocmVhZCBJZCBhcyBhcmd1bWVudCBmb3IgdGhlIGNhbGwgdG8KCUdldFRocmVhZFNlbGVjdG9yRW50cnkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMDAtMDQtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJWDExRFJWX1NldEZvY3VzOiByZWFsbHkgZG9uJ3QgbWVzcyB3aXRoIGZvY3VzIGZvciBtYW5hZ2VkIHdpbmRvd3MuCgoJKiBncmFwaGljcy93aW4xNmRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGluY2x1ZGUvaGVhcC5oLCBtZW1vcnkvaGVhcC5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZW1vdmVkIEhFQVBfeGFsbG9jLgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL2ludHZhci5oLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkZWJ1Z2dlci93aW5lZGJnLmMsIGRlYnVnZ2VyL3dpbmVkYmcuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBFbmhhbmNlZCBpbnRlcm5hbCB2YXJpYWJsZXMgZnJhbWV3b3JrIChpbmNsdWRpbmcgcmVhZC9zYXZlIHRvCgkgIHJlZ2lzdHJ5IGFuZCB0eXBpbmcpCgktIEZpbmFsaXplZCB1c2Ugb2YgV2luZG93cycgQ29uc29sZSBJL08gaW50ZXJmYWNlIChpbnN0ZWFkIG9mIFVuaXggc3RkCgkgIHN0cmVhbXMpCgktIE5vdyBoYW5kbGluZyByZWdpc3RlcnMgYXMgaW50ZXJuYWwgdmFyaWFibGVzICh0aGV5IGFyZSBubyBsb25nZXIKCSAgc2VlbiBhcyBhIHNwZWNpZmljIHR5cGUpCgoJKiB3aW4zMi9leGNlcHQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbnN1cmUgd2UgYWx3YXlzIHRyeSB0byBsYXVuY2ggYSBkZWJ1Z2dlci4KCgkqIHJlbGF5MzIvd293dGh1bmsuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVzZSBUaHJlYWQgcHNldWRvIGhhbmRsZSBhbmQgbm90IFRocmVhZCBJZCBhcyBhcmd1bWVudCBmb3IgdGhlIGNhbGwgdG8KCUdldFRocmVhZFNlbGVjdG9yRW50cnkuCgoyMDAwLTA0LTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglDbGVhciB0aGUgcmVtYWluZGVyIG9mIHRoZSBwYWdlIHdoZW4gbWFwcGluZyBhIHNlY3Rpb24gd2hvc2Ugc2l6ZSBvbgoJZGlzayBpcyBub3QgYSBmdWxsIHBhZ2UgbXVsdGlwbGUuCglUZW1wb3JhcmlseSBjb21tZW50ZWQgb3V0IHRoZSBWaXJ0dWFsRnJlZSBjYWxsIGluIFBFX1VubG9hZExpYnJhcnkuCgoJKiBkbGxzL2RkcmF3L2RkcmF3L3gxMS5jLCBpbmNsdWRlL3RzX3hsaWIuaCwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBhZGRlZCB0aHJlYWQtc2FmZXR5IHByb3RlY3Rpb24gdG8gWExpc3RQaXhtYXBGb3JtYXRzCgktIG1vdmVkIHBpeG1hcCAvIGltYWdlIGZvcm1hdCBtYXRjaGluZyBFUlJzIHRvIFdBUk5zCgoJKiB3aW4zMi9jb25zb2xlLmMsIGluY2x1ZGUvd2luYmFzZS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBHZXRMYXJnZXN0Q29uc29sZVdpbmRvd1NpemUgcHJvdG90eXBlLgoKCSogZGxscy93aW5pbmV0L2Z0cC5jOgoJR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGcmVlQlNEIGNvbXBpbGUgZml4LgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RpYi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBESUJfQ3JlYXRlRElCU2VjdGlvbiB3aXRoIGV4dHJhIHBhcmFtZXRlciBvdnJfcGl0Y2gsIGFkZGVkCglvdnJfcGl0Y2ggdG8gcENyZWF0ZURJQlNlY3Rpb24gaW4gRENfRlVOQ1MuIElmIG92cl9waXRjaCBpcyBub256ZXJvLAoJaXQgaXMgYSBwaXRjaCBvdmVycmlkZSAoc3BlY2lmaWVzIGJ5dGVzIHBlciBsaW5lKSwgYW5kIHRlbGxzIHRvIHRyZWF0Cgl0aGUgb2Zmc2V0IHBhcmFtZXRlciBhcyBhbiBhbHJlYWR5LW1hcHBlZCB2aXJ0dWFsIG1lbW9yeSBhZGRyZXNzIChpZgoJdGhlIHNlY3Rpb24gcGFyYW1ldGVyIGlzIHplcm8pLiBGaXhlZCBhIERJQiBzdGF0dXMgaW5pdCBidWcgaW4KCWNyZWF0aW5nIERJQiBzZWN0aW9ucyBmcm9tIGZpbGUgbWFwcGluZ3MgKGlmIGNyZWF0ZWQgZnJvbSBtYXBwaW5nLCB0aGUKCURJQiBpcyAqbm90KiByZWFsbHkgSW5TeW5jKS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBtZW1vcnkvdmlydHVhbC5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGQgV2luZS1pbnRlcm5hbCBhbGxvY2F0aW9uIHR5cGUgTUVNX1NZU1RFTSBmb3IgVmlydHVhbEFsbG9jIHRvCglyZWdpc3RlciBleHRlcm5hbCBtYXBwaW5ncyAobGlrZSB2aWRlbyBmcmFtZSBidWZmZXJzKS4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgc2NoZWR1bGVyL3B0aHJlYWQuYywgY29uZmlndXJlOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglFbmhhbmNlZCBsaWJjJ3MgcHRocmVhZCBjb25maWd1cmF0aW9uIGRldGVjdGlvbi4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgbXNkb3MvZG9zYXNwaS5jLCB3aW5kb3dzL211bHRpbW9uLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgZmV3IGNvbXBpbGF0aW9uIHdhcm5pbmdzLgoKCSogZGxscy9jb21tZGxnL2NvbG9yZGxnLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy91cmxtb24vdXJsbW9uLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbl9tYWluLmMsIG1pc2MvY29tbS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGVzIHVwZGF0ZQoJLSBNaW5vciBidWcgZml4ZXMuCgktIEFkZGVkIG5ldyBvcHRpb24gLS1jcm9zcy1jYWxsLXVuaWNvZGUtYXNjaWkgZm9yIGNoZWNraW5nIGlsbGVnYWwKCSAgVW5pY29kZSB0byBBU0NJSSBjYWxscy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUFkZGVkICctLWVuYWJsZS1vcGVuZ2wnIGZsYWcgdG8gYnlwYXNzIHRoZSB0aHJlYWQtc2FmZXR5IGNoZWNrLgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgZGxscy9semV4cGFuZC9semV4cGFuZF9tYWluLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVtb3ZlZCBzb21lIEhFQVBfeGFsbG9jIGNhbGxzLgoKCSogZGxscy93aW5tbS9tY2kuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYnVnIHdoZW4gZmlsZSBkb2Vzbid0IGV4aXN0IGluIE1DSV9PUEVOIGhhbmRsaW5nLgoJUmVkdWNlZCB0aW1lIHNwZW50IHdpdGggY3JpdCBzZWN0IGxvY2tlZC4KCgkqIHRvb2xzL2J1aWxkLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYXJndiBoYW5kbGluZyBmb3IgY3VpZXhlIHdpbmVsaWIgcHJvZ3JhbXMuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgcHRocmVhZF9raWxsX290aGVyX3RocmVhZHNfbnAgYW5kIHB0aHJlYWRfYXRmb3JrIGZpeG1lcyBsZXNzCglvYnRydXNpdmUuCgoJKiB3aW5kb3dzL3dpbmhlbHAuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVdpbkhlbHAgbXVzdCBhY2NlcHQgYSBOVUxMIHBvaW50ZXIgdG8gdGhlIGhlbHAga2V5IHN0cmluZy4KCjIwMDAtMDQtMjggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmluZGRsZzMyLmM6CglHdXkgTC4gQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBDb3JyZWN0IGNoZWNrIGZvciBtaW5pbXVtIGJ1ZmZlciBsZW5ndGguCgktIENvcnJlY3QgY2FzZXMgd2hlcmUgU2hvd1dpbmRvdyBpcyBkb25lL25vdCBkb25lLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+LCBKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUltcGxlbWVudGVkIFRNRV9RVUVSWSBhbmQgVE1FX0hPVkVSIGZsYWdzIGluIF9UcmFja01vdXNlRXZlbnQgYW5kCglUcmFja01vdXNlRXZlbnRQcm9jLiAgQWRkZWQgY29kZSB0byBhbGxvdyBhZGRpdGlvbi9jYW5jZWxhdGlvbiBvZgoJdHJhY2tpbmcgZmxhZ3Mgb24gZXhpc3RpbmcgZW50cmllcyByYXRoZXIgdGhhbiBjcmVhdGUgZXh0cmEgZW50cmllcy4KCUZpeGVkIHRpbWVyLiAgQWRkZWQgY2hlY2sgdG8gX1RyYWNrTW91c2VFdmVudCB0byBzdG9wIHRpbWVyIGlmIHRoZQoJdHJhY2tpbmcgbGlzdCBpcyBlbXB0eS4gIEZpeGVkIFRNRV9DQU5DRUwuICBGaXhlZCBUTUVfTEVBVkUvVE1FX0hPVkVSCgl3aGVuIGh3bmRUcmFjayBpc24ndCB0aGUgY3VycmVudCBod25kLgoKCSogZmlsZXMvZG9zX2ZzLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglET1NGU19Eb0dldEZ1bGxQYXRoTmFtZTogcmV3cml0ZSB0byByZXR1cm4gcmVzdWx0cyBsaWtlIE9TUjIuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvdmlydHVhbC5jOgoJR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY29tPiwgVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIG1lbW9yeSBtYXBwaW5nIG9mIDRrIGFsaWduZWQgUEUgYmluYXJpZXMuICBUaGlzIGNhbgoJc3BlZWQgdXAgbG9hZCB0aW1lcyBzaWduaWZpY2FudGx5IGZvciBzb21lIGFwcGxpY2F0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NoZWxsZ3VpZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmaWxlb3AuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS9zaGx3YXBpLmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxicm93c2VyLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUNvbXBsZXRlIGNsZWFudXAsIGJ1Z2ZpeGVzLgoJTmV3OiBQYXRoU3RyaXBQYXRoLCBQYXRoTWFrZVVuaXF1ZU5hbWUsIFBhdGhTdHJpcFRvUm9vdCwKCVBhdGhHZXRTaG9ydFBhdGgsIFBhdGhQYXJzZUljb25Mb2NhdGlvbiwgUGF0aFJlbW92ZUV4dGVuc2lvbiwKCVBhdGhSZW1vdmVBcmdzLCBQYXRoQXBwZW5kLCBQYXRoQnVpbGRSb290LCBQYXRoQ2Fub25pY2FsaXplLAoJUGF0aEZpbmROZXh0Q29tcG9uZW50LCBQYXRoUmVtb3ZlRmlsZVNwZWMuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBpbmNsdWRlL3dpbmUvb2JqX3F1ZXJ5YXNzb2NpYXRpb25zLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVN0dWJzIGZvciBJUXVlcnlBc3NvY2lhdGlvbnMuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9kaWFsb2dzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hwb2xpY3kuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTW92ZWQgcG9saWN5IHJlbGF0ZWQgZnVuY3Rpb25zIHRvIHNocG9saWN5LmMKCU1vdmVkIGRpYWxvZyByZWxhdGVkIGZ1bmN0aW9ucyB0byBkaWFsb2dzLmMKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUV4cGxpY2l0IGltcG9ydCB1c2VyMzIuZGxsLgoJTWFueSBjb3JyZWN0aW9ucywgZXhwb3J0ZWQgc29tZSBmdW5jdGlvbnMgYnkgbmFtZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU2VwYXJhdGVkIDMyIGJpdCBmdW5jdGlvbnMgdG8gc2hlbGxvbGUuYy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNtYWxsIGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlZDogZXh0cmFjdCB0aGUgaWNvbiBieSByZXNvdXJjZSBpZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNtYWxsIGZpeGVzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVzLgoJVXNlIEdldE1vZHVsZUhhbmRsZUEgaW5zdGVhZCBvZiBMb2FkTGlicmFyeSBmb3IgZGxscyBpbXBvcnRlZCBieQoJdGhlIHNwZWMgZmlsZS4KCgkqIHdpbmUuaW5pOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCU1ha2UgV2luZUxvb2s9V2luOTUgdGhlIGRlZmF1bHQgc2V0dGluZy4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgbGVhdmluZyBvZiBjcml0aWNhbCBzZWN0aW9uIG9uIGFsbCByZXR1cm4gY2FzZXMuCgoJKiBzY2hlZHVsZXIvcHRocmVhZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlbW92ZWQgaW5pdF9zZWN0LiBVc2UgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucyBpbnN0ZWFkLgoKCSogbWlzYy9yZWdpc3RyeS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTbWFsbCBmaXhlcywgcmVtb3ZlZCBhc3NlcnRzLgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluOgoJQ2hhbmdlZCBpbXBvcnRzIG9mIHdpbnNwb29sIHRvIHdpbnNwb29sLmRydi4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci9NYWtlZmlsZS5pbjoKCUFkZGVkIGxpYmtleWJvYXJkLnNvIGNyZWF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYywgaW5jbHVkZS9oZWFkZXIuaDoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CgktIFJldHVybiBtb2RpZmllZCByZWN0YW5nbGUgYWZ0ZXIgbGF5b3V0aW5nIGhlYWRlciBjb250cm9sCgktIE91dHB1dCB0ZXh0IGluIGhlYWRlciBjb250cm9sIHdoZW4gbm8gb3RoZXIgRmxhZyBzcGVjaWZpZWQKCS0gRGVsYXkgYm91bmRpbmcgcmVjdGFuZ2xlIGNhbGN1bGF0aW9uIGZvciBoZWFkZXIgY29udHJvbCBpdGVtcwoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUltcGxlbWVudGVkIFRPT0xCQVJfTW91c2VMZWF2ZSB0byBoYW5kbGUgV01fTU9VU0VMRUFWRSBtZXNzYWdlcy4KCUFkZGVkIFRyYWNrTW91c2VFdmVudCBjYWxscyB0byBUT09MQkFSX01vdXNlTW92ZS4gIEhvdCBidXR0b25zIG5vdwoJbG9vay9iZWhhdmUgYWxtb3N0IGV4YWN0bHkgdGhlIHNhbWUgYXMgbmF0aXZlIHdpbmRvd3MuCgoJKiB3aW5kb3dzL3N5c3BhcmFtcy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUFkZGVkIGRlZmF1bHQgdmFsdWVzIGZvciBTUElfR0VUTU9VU0VIT1ZFUkhFSUdIVCwgU1BJX0dFVE1PVVNFSE9WRVJXSURUSCBhbmQKCVNQSV9HRVRNT1VTRUhPVkVSVElNRSB0byBTeXN0ZW1QYXJhbWV0ZXJzSW5mbzE2KCkuCgoJKiBtaXNjL2NvbW0uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUltcGxlbWVudCBtYXJrIGFuZCBzcGFjZSBwYXJpdHkgZ2VuZXJhdGlvbi4gQWNjZXB0IG9uZS1hbmQtIGEtaGFsZgoJc3RvcGJpdHM6IHRoZSBtb3N0IGNvbW1vbiB1YXJ0cyB3aWxsIGdlbmVyYXRlIHRoaXMgYXV0b21hdGljYWxseSB3aGVuCgl0aGVyZSBhcmUgNSBkYXRhYml0cy4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJT3ZlcnJpZGUgZm9yaygpLgoKCSogZGVidWdnZXIvZGVidWdnZXIuaCwgaW5jbHVkZS9oZWFwLmgsIG1lbW9yeS9oZWFwLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJR2V0IHJpZCBvZiBIRUFQX3hyZWFsbG9jLgoKMjAwMC0wNC0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDb21waWxlIGZpeCBmb3IgLS13aXRob3V0LXguCgoJKiBsb2FkZXIvbWFpbi5jLCB3aW5lLmluaToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgbmV3IGNvbmZpZ3VyYXRpb24gZmlsZSBvcHRpb24gZm9yIHNlbGVjdGluZyBncmFwaGljcyBkcml2ZXIuCgoJKiBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTGluayB0aGUgVFRZIGRyaXZlciB3aXRoIHRoZSBzdGFuZGFyZCBsaWJzLgoKCSogTWFrZS5ydWxlcy5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sLy5jdnNpZ25vcmUsIGRsbHMvd2luc3Bvb2wvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHdpbnNwb29sKC5kcnYpIGxvYWRpbmcuCgoJKiB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3RzX3hmODZkZ2EuaCwgaW5jbHVkZS90c194Zjg2ZGdhMi5oLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS90c194cG0uaCwgaW5jbHVkZS90c194cmVzb3VyY2UuaCwgaW5jbHVkZS90c194c2htLmgsIGluY2x1ZGUvdHNfeHV0aWwuaCwgaW5jbHVkZS94MTFkcnYuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvdHNfeGY4NmRnYS5jLCB0c3gxMS90c194Zjg2ZGdhMi5jLCB0c3gxMS90c194Zjg2dm1vZGUuYywgdHN4MTEvdHNfeGxpYi5jLCB0c3gxMS90c194cG0uYywgdHN4MTEvdHNfeHJlc291cmNlLmMsIHRzeDExL3RzX3hzaG0uYywgdHN4MTEvdHNfeHV0aWwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVtb3ZlZCBYX0RJU1BMQVlfTUlTU0lORy4KCgkqIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL21zYy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXByb3ZlZCBDb2RlVmlldyB0eXBlIGluZm9ybWF0aW9uIGxvYWRlci4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEb24ndCB1c2UgdGhlIHRlbXBsYXRlIG1lbWJlciB1bmxlc3MgdGhlIGNvcnJlc3BvbmRpbmcgZmxhZyBpcyBzZXQuCgoyMDAwLTA0LTI0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTElDRU5TRSwgV0FSUkFOVFk6CglTd2l0Y2hlZCB0byB0aGUgWDExIGxpY2Vuc2UuCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYywgaWYxNjMyL3JlbGF5LmMsIG1pc2MvZGRlbWwuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvd2luaW5ldC9NYWtlZmlsZS5pbiwgZGxscy93aW5pbmV0L3dpbmluZXQuc3BlYywgZGxscy93aW5pbmV0L3dpbmluZXRfbWFpbi5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9kaW5wdXQvZGlucHV0LnNwZWMsIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi91cmxtb24uc3BlYywgZGxscy91cmxtb24vdXJsbW9uX21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNi93cHJvY3MuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZGlucHV0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3VybG1vbi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi93aW5pbmV0LmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svbW9kdWxlcy5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9tb2R1bGVzLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2NoZWNrOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFVwZGF0ZWQgQVBJIGZpbGVzLgoJLSBJbXByb3ZlZCBtaXNwbGFjZWQgZnVuY3Rpb24gY2hlY2tpbmcuCgktIEZpeGVkIG1pbm9yIGJ1Z3MuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJSW5jbHVkZSBzdHJpbmcuaCB0byBtYWtlIHdpbm50Lmggc2VsZi1zdWZmaWNpZW50LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBQYXRyaWNrIFlhbmcgKENvcmVsKQoJaW5mb1B0ciBzb21ldGltZXMgY2FuIGJlIE5VTEwuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19DYS5yYywgZGxscy9jb21tZGxnL2NkbGdfQ3MucmMsIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EZS5yYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRmkucmMsIGRsbHMvY29tbWRsZy9jZGxnX0ZyLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19IdS5yYywgZGxscy9jb21tZGxnL2NkbGdfSXQucmMsIGRsbHMvY29tbWRsZy9jZGxnX0phLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Lby5yYywgZGxscy9jb21tZGxnL2NkbGdfTmwucmMsIGRsbHMvY29tbWRsZy9jZGxnX05vLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19QbC5yYywgZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIGRsbHMvY29tbWRsZy9jZGxnX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Tay5yYywgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgaW5jbHVkZS9jb21tZGxnLmg6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCTMyIGJpdHMgbWVzc2FnZSBwcm9jZXNzaW5nIGZvciBjb2xvciBkaWFsb2cuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCUZpeGVkIHRvb2xiYXIgYml0bWFwIHNpemUgaGFuZGxpbmcuCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0IHRlc3QgZm9yIGxpbnV4IDIuMiBqb3lzdGljayBBUEksIHdoaWNoIHJldHVybmVkIHRydWUgaW4gZXZlcnkKCWNhc2UuCgoJKiBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGluY2x1ZGUveG1hbGxvYy5oLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3htYWxsb2MuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglSZW1vdmVkIHRoZSBsYXN0IHhtYWxsb2MgY2FsbHMuCgoJKiBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5lbWluZS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgZGxscy9jb21tZGxnL2NvbWRsZzMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9tb2R1bGUuaCwgbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC9oZWxsbzNyZXMucmMsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgY29uZmlndXJlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGxscy9NYWtlZGxsLnJ1bGVzLmluLCBkbGxzL01ha2VmaWxlLmluLCB3aW5lLmluaSwgLmN2c2lnbm9yZSwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUltcGxlbWVudGVkIG9uLWRlbWFuZCBsb2FkaW5nIG9mIGJ1aWx0aW4gZGxscyB1c2luZyBkbG9wZW4oKS4KCjIwMDAtMDQtMjMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBNYWtlZmlsZS5pbiwgZGxscy94MTFkcnYvTWFrZWZpbGUuaW46CglCdWlsZCB3aW5lY2xpcHNydiBhcyBwYXJ0IG9mIHRoZSB4MTFkcnYgZGxsLgoKCSogZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglSZW1vdmVkIGEgZmV3IGludGVyLWRsbCBkZXBlbmRlbmNpZXMuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglNYWtlIFJEV19WYWxpZGF0ZVBhcmVudCgpIG1vZGlmeSB0aGUgdXBkYXRlIHJlZ2lvbiBvZiBhbGwgcGFyZW50cywgbm90CglqdXN0IHRoZSBkaXJlY3QgcGFyZW50LgoKCSogcmVsYXkzMi9zbm9vcC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU05PT1BfUHJpbnRBcmc6IHJlcGxhY2VkIElzQmFkKiBmdW5jdGlvbnMgYnkgZXhjZXB0aW9uIGhhbmRsZXIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgLS13aXRob3V0LWN1cnNlcyBjb21waWxlIG9wdGlvbi4KCgkqIHNjaGVkdWxlci9wdGhyZWFkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgc29tZSBtb3JlIHB0aHJlYWQgb3ZlcnJpZGVzLgoKCSogd2luZWRlZmF1bHQucmVnOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGRlYnVnZ2VyIHJlZ2lzdHJ5IGtleSBsb2NhdGlvbi4KCgkqIGluY2x1ZGUvZGRlbWwuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVc2UgREVDTEFSRV9IQU5ETEUgdG8gZGVjbGFyZSBoYW5kbGVzLgoKCSogaW5jbHVkZS93aW5kZWYuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglERUNMQVJFX0hBTkRMRSBzaG91bGQgbm90IGJlIHVuZGVmJ2VkIGFmdGVyIHVzZS4KCgkqIGNvbnRyb2xzL2VkaXQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXggZWRpdCBjb250cm9sJ3MgV01fR0VUVEVYVCBiZWhhdmlvdXIuCgoJKiBtaXNjL2NvbW0uYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEbyBub3QgaW5pdGlhbGl6ZSBkY2IgaW4gQnVpbGRDb21tRENCW0FuZFRpbWVvdXRzXS4KCgkqIGluY2x1ZGUvY2FzZW1hcC5oLCB0b29scy91bmltYXAucGw6CglEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkYXB0ZWQgdW5pbWFwLnBsIHNjcmlwdCBhbmQgZ2VuZXJhdGVkIGJ5IGl0IGNhc2VtYXAuaCB0byB0aGUgVW5pY29kZQoJU3RhbmRhcmQsIFZlcnNpb24gMy4wLgoKCSogd2luZG93cy9kaWFsb2cuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDaGVjayBpZiBkaWFsb2cgaXMgdmlzaWJsZSBiZWZvcmUgc2V0dGluZyB0aGUgZm9jdXMuCgoJKiB3aW5kb3dzL2RlZnduZC5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZW1vdmVkIHRoZSBsb25nc3RhbmRpbmcgaGFjayBpbiByZXNwb25zZSB0byBXTV9BQ1RJVkFURSBtZXNzYWdlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6CglNYXJ0aW4gRnVjaHMgPG1hcnRpbi1mdWNoc0BnbXgubmV0PgoJRml4ZWQgR2V0TnVtYmVyRm9ybWF0IGRlY2xhcmF0aW9uLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJUmVkcmF3IHRvb2xiYXIgYnV0dG9uIGluc2lkZSBUT09MQkFSX0VuYWJsZUJ1dHRvbigpIG9ubHkgaWYgdGhlIHN0YXRlCglvZiB0aGUgYnV0dG9uIGNoYW5nZXMuICBTdG9wcyBmbGlja2VyaW5nIGluIHRvb2xiYXJzIGNhdXNlZCBieQoJZXhjZXNzaXZlIHJlZHJhd2luZy4KCgkqIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglTdHViIGZvciBJbnRlcm5ldEdldENvbm5lY3RlZFN0YXRlLgoKCSogaW5jbHVkZS93aW5iYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgR2V0UHJvY2Vzc0hlYXAoKSBmb3IgdGhlIFNUUklDVCBtb2RlLgoKCSogZGxscy9kZHJhdy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsc28gY2hlY2sgZm9yIGVtcHR5IEdVSUQgaW4gRGlyZWN0RHJhd0NyZWF0ZS4KCjIwMDAtMDQtMTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLnNwZWMsIGRsbHMvd2lubW0vbWNpYW5pbS9tY2lhbmltLnNwZWMsIGRsbHMvd2lubW0vbWNpYXZpL21jaWF2aS5zcGVjLCBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuc3BlYywgZGxscy93aW5tbS9tY2lzZXEvbWNpc2VxLnNwZWMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLnNwZWMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLnNwZWMsIGRsbHMvd2lubW0vd2F2ZW1hcC9tc2FjbS5zcGVjLCBkbGxzL3dpbm1tL3dpbmVvc3Mvd2luZW9zcy5zcGVjLCBkbGxzL2F2aWZpbDMyL2F2aWZpbDMyLnNwZWMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3LnNwZWMsIGRsbHMvZHBsYXl4L2RwbGF5eC5zcGVjLCBkbGxzL21zdmlkZW8vbXN2ZnczMi5zcGVjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjOgoJQWRkZWQgc29tZSBtaXNzaW5nIGltcG9ydCBkaXJlY3RpdmVzLgoKCSogZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW46CglSZW1vdmVkIHdpbm1tIGZyb20gaW1wb3J0IGxpc3QuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgaW5jbHVkZS9hbmltYXRlLmg6CglVc2UgR2V0UHJvY0FkZHJlc3MgZm9yIG1taW8qIGZ1bmN0aW9ucyB0byBhdm9pZCBpbXBvcnRpbmcgd2lubW0uZGxsLgoKCSogcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL3djbWQuc3BlYzoKCUZpeGVkIHJlc291cmNlIGxvYWRpbmcuCgoJKiB0b29scy9jdmR1bXAvY3ZjcnVuY2guYywgdG9vbHMvY3ZkdW1wL2N2ZHVtcC5jLCB0b29scy9jdmR1bXAvY3ZpbmNsdWRlLmgsIHRvb2xzL2N2ZHVtcC9jdmxvYWQuYzoKCUpvaG4gUi4gU2hlZXRzIDxqc2hlZXRzQGNvZGV3ZWF2ZXJzLmNvbT4KCU1pbm9yIGNsZWFudXBzLCBwbHVzIGZpeGVkIGEgY291cGxlIGJ1Z3MgaW4gLkRCRyBwYXJzaW5nIGNvZGUuCglBZGRlZCBkdW1wIGZvciBNSVNDIHNlY3Rpb24uCgoJKiB3aW5lZGVmYXVsdC5yZWc6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIERpcmVjdFBsYXkgcmVnaXN0cnkga2V5cyB0byB3aW5lZGVmYXVsdC5yZWcuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCU1vdXNld2hlZWwgc3VwcG9ydC4KCjIwMDAtMDQtMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9jdmR1bXAvY3ZjcnVuY2guYywgdG9vbHMvY3ZkdW1wL2N2ZHVtcC5oLCB0b29scy9mbnQyYmRmLmMsIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS9uZWV4ZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcGVleGUuaCwgaW5jbHVkZS93aW5udC5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3Rhc2suYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9zbm9vcC5jLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL21vZHVsZS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvdHlwZXMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmM6CglNb3ZlZCBQRSBoZWFkZXIgZGVmaW5pdGlvbnMgdG8gd2lubnQuaCB3aGVyZSB0aGV5IGJlbG9uZy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbGlzdGJveC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS93aW51c2VyLmgsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9zcHkuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgTW91c2V3aGVlbCBzdXBwb3J0LgoKCSogZGxscy93aW5zb2NrL2FzeW5jLmM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQ29udmVydCBzZXJ2aWNlIGFuZCBwcm90b2NvbCBuYW1lcyB0byBsb3dlcmNhc2UgYmVmb3JlIGNhbGxpbmcKCWdldHNlcnZieXtuYW1lfHBvcnR9IGFuZCBnZXRwcm90b2J5e25hbWV8cG9ydH0uCgoJKiBvYmplY3RzL3JlZ2lvbi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IHJldHVybiB2YWx1ZSBmb3IgT2Zmc2V0UmduIGlmIHggYW5kIHkgYXJlIDAuCgoJKiBncmFwaGljcy9wYXRoLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgU3Ryb2tlQW5kRmlsbFBhdGguCglDYWxsIERlbGV0ZU9iamVjdCB3aGVuIGZpbmlzaGVkIHdpdGggaHJnbiBpbiBQQVRIX0ZpbGxQYXRoLgoKCSogaW5jbHVkZS93aW5pbmV0Lmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCB0eXBvLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvb2JqZWN0cy5jOgoJU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglFTVJfU0VMRUNUT0JKRUNUIHJlY29yZHMgc3RvY2sgb2JqZWN0cyB3aXRoIHRoZWlyIGlkIGFzIHRoZSBvYmplY3QKCWhhbmRsZSBhbmQgdGhlIGhpZ2ggYml0IHNldC4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVRpZHkgdXAgb2YgUGxheUVuaE1ldGFGaWxlUmVjb3JkIC0gZml4ZXMgUG9seVBvbHkqIGZ1bmN0aW9ucy4KCjIwMDAtMDQtMTYgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzoKCVJlbW92ZWQgcGVybWlzc2lvbiBjaGVja3MgaW4gY3JlYXRlX2tleSBhbmQgZGVsZXRlX2tleS4gSXQgc2VlbXMKCVdpbmRvd3MgZG9lc24ndCBjaGVjayBhbnl0aGluZy4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOgoJUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglXcmFwIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGFyb3VuZCBGaW5kUmVzb3VyY2UuCgoJKiBwcm9ncmFtcy9yZWd0ZXN0L3JlZ3Rlc3QuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNvcnJlY3RlZCBXaW5NYWluLgoJQWRkZWQgdGVzdCBjYXNlIGZvciBSZWdDcmVhdGVLZXlFeCBzaG93aW5nIHdpbjk1IGJlaGF2aW91ci4KCgkqIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9pbmZvLmM6CglJbXBsZW1lbnRlZCAnd2FsayBwcm9jZXNzJyBhbmQgJ3dhbGsgdGhyZWFkcycgY29tbWFuZHMgdXNpbmcgdG9vbGhlbHAKCXNuYXBzaG90cy4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGxoZWxwMzIuaCwgaW5jbHVkZS90b29saGVscC5oLCBtaXNjL3Rvb2xoZWxwLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmM6CglJbXBsZW1lbnRlZCB0aHJlYWQgYW5kIChwYXJ0aWFsKSBtb2R1bGUgc25hcHNob3RzLCBiYXNlZCBvbiB0aGUgd29yawoJb2YgQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+LgoKCSogc2VydmVyL21haW4uYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90cmFjZS5jLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2hlbGwuaCwgbG9hZGVyL21haW4uYywgbWlzYy9yZWdpc3RyeS5jLCB3aW5lLmluaToKCVNhdmUgdGhlIHJlZ2lzdHJ5IG9uIHNlcnZlciBleGl0IHdpdGhvdXQgY2xpZW50IGludGVydmVudGlvbi4KCVJlbW92ZWQgImFsdCIgcmVnaXN0cnkgZmlsZXMgc2luY2Ugd2Ugbm93IGhhdmUgc3ltbGlua3MgYW5kCglXSU5FUFJFRklYIHRvIHJlcGxhY2UgdGhlbS4KCgkqIGluY2x1ZGUvdHNfeGxpYi5oLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJU3VwcG9ydCBzd2l0Y2hpbmcgdGhlIGtleWJvYXJkIGxheW91dCB3aXRoIFdJTkUgcnVubmluZy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglmZ2V0czogRG9uJ3Qgc3dhbGxvdyBcbiwgdHJlYXQgRU9GCglmZW9mOiBDcnVkZSBpbXBsZW1lbnRhdGlvbgoJc2lnbmFsOiBSZXR1cm4gZXJyb3IKCgkqIHdpbmVkZWZhdWx0LnJlZzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBtaXNzaW5nIGJhY2tzbGFzaCBpbiB0aGUgZGVidWdnZXIgZGVmaW5pdGlvbi4KCgkqIHdpbjMyL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVNldExvY2FsVGltZSgpIGFuZCBTZXRTeXN0ZW1UaW1lKCkgYnVnZml4ZXMuIEFkZGVkIGEgbWF4aW11bSBjbG9jawoJYWRqdXN0bWVudCBvZiAyIG1pbnV0ZXMganVzdCBpbiBjYXNlLi4uCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEU09VTkRfTWl4ZXJOb3JtOiBkbyBub3QgY29tcGFyZSB1bnJlbGF0ZWQgcG9pbnRlcnMuCgoyMDAwLTA0LTE1ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21vZHVsZS5jOgoJUmV3cm90ZSBjb21tYW5kLWxpbmUgcGFyc2luZyBvZiBDcmVhdGVQcm9jZXNzQSB0byBiZSBtb3JlIGNvbXBhdGlibGUuCgoJKiBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgdG9vbHMvYnVpbGQuYywgcHJvZ3JhbXMvY21kbGd0c3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5jLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9vc3ZlcnNpb25jaGVjay5zcGVjLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3JlZ3Rlc3QvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3ZpZXcvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvd2NtZC5zcGVjLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL3dpbmVtaW5lL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS90aHJlYWQuaCwgbGlidGVzdC9NYWtlZmlsZS5pbiwgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy9vcHRpb25zLmMsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbjoKCUltcHJvdmVkIFdpbmVsaWIgYXBwcyBpbml0aWFsaXNhdGlvbiBjb2RlLiBObyBsb25nZXIgbmVlZCB0byBsaW5rCgl3aW5lc3R1Yi5vIHdpdGggV2luZWxpYiBhcHBzLgoKCSogaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCByZWxheTMyL3V0dGh1bmsuYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYywgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvaWNtcC9pY21wX21haW4uYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3dpbjg3ZW0vZW11bGF0ZS5jLCBkbGxzL3dpbmluZXQvZnRwLmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5jLCBkbGxzL3dpbm1tL21jaWFuaW0vbWNpYW5pbS5jLCBncmFwaGljcy90dHlkcnYvcGFsZXR0ZS5jLCBkbGxzL2RkcmF3L21haW4uYywgZGxscy9kZHJhdy94MTEuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQVBJIGZpbGVzIHVwZGF0ZS4KCS0gQWRkIG5ldyBvcHRpb25zIC0tYWxsIGFuZCAtLW5vbmUgdGhhdCBlbmFibGUvZGlzYWJsZXMgYWxsIGNoZWNrCgkgIHJlc3BlY3RpdmVseS4KCS0gRml4ZWQgYW5kIGltcHJvdmVkIHN0dWIgc3RhdGlzdGljcy4KCS0gRml4ZWQgYnVnIHRoYXQgcHJldmVudGVkIGNoZWNraW5nIG9mIHRoZSBmaXJzdCBmdW5jdGlvbiBpbiB0aGUgLnNwZWMgZmlsZXMuCgktIFBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgYSBtb3JlIGFkdmFuY2VkIG1pc3BsYWNlZCBmdW5jdGlvbiBjaGVja2luZy4KCS0gTWlub3IgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCU1hcnRpbiBGdWNocyA8bWFydGluLWZ1Y2hzQGdteC5uZXQ+CglJbXBsZW1lbnQgQ0NTX05PTU9WRVkgZm9yIHRvb2wgYmFycy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVN5bWxpbmsgcm9vdCdzIHJlZ2lzdHJ5IHRvIGdsb2JhbCByZWdpc3RyeS4gTWlub3IgY2xlYW51cHMuCgoJKiBvbGUvb2xlMm5scy5jOiBPd2VuIFdhbmcgPG93ZW53QGNvcmVsLmNhPgoJQWRkZWQgZnVydGhlciBpbXBsZW1lbnRhdGlvbiBvZiBXSU5BUEkgRW51bURhdGVGb3JtYXRzKCkgdG8gc3VwcG9ydAoJdGhyZWUgbW9yZSBsb2NhbGVzOiBHZXJtYW4oc3RhbmRhcmQpLCBGcmVuY2goc3RhbmRhcmQpIGFuZCBGcmVuY2gKCShjYW5hZGlhbikuIEFsbCBkYXRlIGZvcm1hdHMgZm9sbG93IGNvbnZlbnRpb25zIGZyb20gV2luZG93cyBOVCA0LjAKCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJQWRkZWQgcHJvcGVyIGhhbmRsaW5nIFRWSVNfT1ZFUkxBWU1BU0sgZmxhZyBhbmQgYWxsb3dzIHRvIGRpc3BsYXkKCW92ZXJsYXkgaW1hZ2VzLiBGaXhlZCBvZmYgYnkgb25lIGVycm9yIHdpdGggbGlzdGl0ZW0gaW4KCVRSRUVWSUVXX0luc2VydEl0ZW1BICh1TnVtSXRlbXMgaXMgMCBiYXNlZCwgY0NoaWxkcmVuIGlzIGEgY291bnQpLgoKMjAwMC0wNC0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL3B0aHJlYWQuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUE9TSVggdGhyZWFkcyBlbXVsYXRpb24sIHRyaWNrcyBnbGliYyBpbnRvIGJlaW5nIHRocmVhZHNhZmUuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9yZXF1ZXN0LmM6CglNYWRlIHNlcnZlciBsYXVuY2hpbmcgc29tZXdoYXQgY2xlYW5lciBhbmQgZmFzdGVyLgoKCSogZGxscy9kZHJhdy9kZHJhdy9kZ2EuYywgZGxscy9kZHJhdy9kZ2EuYywgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglEZXR5cG9lZCBYMTFEUlZfRVZFTlRfU2V0SW5wdXRNZXRob2QuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglXaGVuIGRlYWxpbmcgd2l0aCBYS0IgZXh0ZW5zaW9ucywgZm9yY2UgdGhlIEFsdEdyIGtleSBtYXNrIHRvIHVzZSB0aGUKCWdyb3VwIGluZGV4IGluc3RlYWQgb2YgdGhlIG1vZGlmaWVyLgoKCSogaW5jbHVkZS93aW5kZWYuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCURlZmluZSBfX2Zhc3RjYWxsLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgYSBmZXcgdG9vbGJhciBkZWZpbmVzLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQSBmZXcgY29ycmVjdGlvbnMgdG8gYm91bmRpbmcgYm94ZXMuCgoJKiBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCURvbid0IGNsb3NlIGdyb3VwcyBvZiBwb2x5bGluZXMuCgoJKiBtaXNjL2NvbW0uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgZGVyZWZlcmVuY2UgYSBwdHIgd2UganVzdCBjaGVja2VkIGJlaW5nIE5VTEwuCgoJKiBkbGxzL2RkcmF3L2QzZGRldmljZS9tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21haW4uYywgZGxscy9kZHJhdy9tZXNhX3ByaXZhdGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQ2hhbmdlZCB0aGUgcGxhY2VtZW50IG9mIFdJTkVfVU5VU0VEIHRvIG1ha2UgZ2NjIDIuNy4yIGhhcHB5LgoKCSogbWlzYy9yZWdpc3RyeS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZvbGxvdyBzeW1saW5rcyB3aGVuIHNhdmluZyByZWdpc3RyeS4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluOgoJQWRkZWQgbWlzc2luZyB3aW5lc3R1YiBkZXBlbmRlbmN5LgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUxvYWQgZG9uZSBldmVudCBub3cgY3JlYXRlZCBieSB0aGUgc2VydmVyLgoKMjAwMC0wNC0xMyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyLy5jdnNpZ25vcmUsIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvaW50dmFyLmgsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBkZWJ1Z2dlci9zb3VyY2UuYywgZGVidWdnZXIvc3RhYnMuYywgZGVidWdnZXIvc3RhY2suYywgZGVidWdnZXIvdHlwZXMuYywgZGVidWdnZXIvd2luZWRiZy5jLCBkZWJ1Z2dlci93aW5lZGJnLnNwZWMsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBNYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTWFkZSB0aGUgd2luZWRiZyBhbiBleHRlcm5hbCBhbmQgV2luZUxpYiBwcm9ncmFtLgoJQ2VudHJhbGl6ZWQgb3V0cHV0IGhhbmRsaW5nIChwcmVwYXJhdGlvbiBmb3IgY29uc29sZSB1c2FnZSkuCglGaXhlZCBhIGZldyBkZWJ1ZyBpbmZvcm1hdGlvbiByZWFkaW5nIG9wdGlvbnMgKHN0YWJzIGFuZCBzeW0pLgoJU3RhcnRlZCBhIGZyYW1ld29yayB0byBob2xkIGRlYnVnZ2VyJ3MgaW50ZXJuYWwgdmFyaWFibGVzLgoKCSogbWlzY2VtdS9tYWluLmMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgbWlzYy9vcHRpb25zLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUdvdCByaWQgb2YgLWRlYnVnIHdpbmUncyBvcHRpb24gKHdpbmUgbm93IHJlcXVpcmVzIGFuIGV4dGVybmFsIGRlYnVnZ2VyKS4KCgkqIHdpbjMyL2V4Y2VwdC5jLCB3aW5lZGVmYXVsdC5yZWc6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGxhdW5jaGluZyBvZiBhIGRlYnVnZ2VyIHdoZW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiBvY2N1cnMuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBhIC54Y25sbmsgc2VjdGlvbiB0byBidWlsdGluIEtFUk5FTDMyIFBFIGhlYWRlci4KCgkqIGxvYWRlci9tb2R1bGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglMZXQgQ3JlYXRlUHJvY2VzcyBsYXVuY2ggdW5peCBleGVjdXRhYmxlIHdpdGhvdXQgYSAuZXhlIGV4dGVuc2lvbi4KCUZpeGVkIGFyZ3VtZW50cyBwYXNzZWQgd2hlbiBjcmVhdGluZyBhIHVuaXggcHJvY2Vzcy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUZpeGVkIHNpZ25hbCBzdGFjayBoYW5kbGluZyBvbiBMaW51eCB3aGVuIHNpZ2FsdHN0YWNrIGlzIGF2YWlsYWJsZS4KCUFkZGVkIGEgZGlyZWN0IHNpZ2FsdHN0YWNrIHN5c2NhbGwgdG8gd29yay1hcm91bmQgdGhlIGdsaWJjIGJ1Zy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS9nbG9iYWwuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCUltcGxlbWVudGVkIGd1YXJkIHBhZ2VzIGFuZCBzdGFjayBvdmVyZmxvdyBleGNlcHRpb25zLgoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJQ2xlYW51cCB0aHJlYWQgc3RhY2sgYWxsb2NhdGlvbi4gVXNlIGEgc2luZ2xlIFZpcnR1YWxBbGxvYyBmb3IgVEVCIGFuZAoJdGhlIHZhcmlvdXMgc3RhY2tzLgoKCSogZmlsZXMvcHJvZmlsZS5jOgoJTWFrZSBzdXJlIEhLTE1cU29mdHdhcmVcV2luZVxXaW5lIGlzIGEgbm9uLXZvbGF0aWxlIGtleS4KCgkqIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIEFsdEdyIGtleSBoYW5kbGluZy4KCgkqIGRsbHMvZGRyYXcvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhLmMsIGRsbHMvZGRyYXcvZGdhX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kc3VyZmFjZS9kZ2EuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglNYWtlIERpcmVjdERyYXcgY29tcGlsZSB3aXRoIERHQTIgcHJlc2VudC4KCgkqIGZpbGVzL2ZpbGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRklMRV9DcmVhdGVGaWxlKCkncyByZWFkL3dyaXRlLWNoZWNrIHdhcyBicm9rZW4gZHVlIHRvIGNoZWNraW5nIG9mCglFUlJPUl94eHggaW5zdGVhZCBvZiBTVEFUVVNfeHh4LgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgYW5kIGNsZWFucyB1cCBzb21lIG9mIHRoZSBHZXRFbmhNZXRhRmlsZSogZnVuY3Rpb25zLgoJRml4ZXMgc2NhbGluZyBvZiBFTUZzIGluIHBsYXliYWNrLiAgV2lsbCBwcm9iYWJseSBiZSByaWdodAoJd2hlbiBXb3JsZCBUcmFuc2Zvcm1zIHdvcmsgcHJvcGVybHkuLi4KCgkqIG1lbW9yeS9nbG9iYWwuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUdsb2JhbFJlQWxsb2MgcmV0dXJucyAwIG9uIGZhaWx1cmUuCgoJKiBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvb20uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJU3R1YiBmb3IgTnRBbGxvY2F0ZVV1aWRzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ2xlYXIgVG9wUm9vdEl0ZW0gd2hlbiB3aG9sZSB0cmVlIGlzIGRlbGV0ZWQuCglGaXggb2ZmIGJ5IG9uZSBsc3RyY3B5bi4KCUNsZWFuIHVwIGFuZCBmaXggR2V0TmV4dEl0ZW0uCgoyMDAwLTA0LTExICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi8uY3ZzaWdub3JlOiBJZ25vcmUgYWxsIG91dHB1dCBmaWxlcy4KCgkqIGRsbHMvd2luaW5ldC8uY3ZzaWdub3JlLCBkbGxzL3dpbmluZXQvTWFrZWZpbGUuaW4sIGRsbHMvd2luaW5ldC9mdHAuYywgZGxscy93aW5pbmV0L2ludGVybmV0LmMsIGRsbHMvd2luaW5ldC9pbnRlcm5ldC5oLCBkbGxzL3dpbmluZXQvdXRpbGl0eS5jLCBkbGxzL3dpbmluZXQvd2luaW5ldC5zcGVjLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3VybG1vbi5oLCBpbmNsdWRlL3dpbmluZXQuaCwgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdXJsbW9uLy5jdnNpZ25vcmUsIGRsbHMvdXJsbW9uL01ha2VmaWxlLmluLCBkbGxzL3VybG1vbi91bW9uLmMsIGRsbHMvdXJsbW9uL3VybG1vbi5zcGVjOgoJTWVyZ2VkIHVybG1vbi5kbGwgYW5kIHdpbmluZXQuZGxsIGZyb20gdGhlIENvcmVsIHRyZWUgKGltcGxlbWVudGF0aW9uCglieSBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+KQoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9xdWV1ZS5jOgoJTWFkZSBHZXRQcm9jZXNzSGVhcCgpLCBHZXRDdXJyZW50UHJvY2Vzc0lkKCksIEdldEN1cnJlbnRUaHJlYWQoKSBhbmQKCUdldEN1cnJlbnRQcm9jZXNzKCkgaW5saW5lLgoKCSogQVVUSE9SUywgaW5jbHVkZS9hdXRob3JzLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1lcmdlZCBpbiBDb3JlbCdzIEFVVEhPUnMuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9ubHkgY29weSBkc3R3aWR0aCozIGJ5dGVzIGluIHRoZSAyNGJpdCBjYXNlLgoKCSogZGxscy9kZHJhdy9kc3VyZmFjZS94MTEuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRnJlZSBwcml2YXRlIHN0cnVjdHVyZSBpbiBYbGliX0REU19SZWxlYXNlLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCU1TR19Qcm9jZXNzS2JkTXNnIGNhbiBiZSBjYWxsZWQgZnJvbSBwZWVrLCBzbyBvbmx5IHByb2Nlc3Mgd2hlbiByZW1vdmUgaXMgc2V0LgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglUcmVlVmlldyAtIG1pbm9yIGJ1Z2ZpeCBhbmQgb3B0aW1pemF0aW9uOgoJICAgLSBHZXREQyBjYWxsIG1vdmVkIGRvd24gdG8gYXZvaWQgcG9zc2libGUgcmVzb3VyY2UgbGVhay4KCSAgIC0gSW52YXJpYW50IGNvZGUgaXMgbW92ZWQgb3V0IG9mIGxvb3AuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJX0lMR2V0RmlsZURhdGUgc2hvdWxkIGNvbnZlcnQgdGhlIGRhdGUgdG8gbG9jYWwgdGltZSBiZWZvcmUgZ2VuZXJhdGluZwoJdGhlIHN0cmluZyAoX0lMR2V0RmlsZURhdGVUaW1lIGRvZXMgbm90KS4KCgkqIGRsbHMvd2lubW0vbW1pby5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCBvdGhlciBidWdzIHdpdGhpbiBNTUlPIGltcGxlbWVudGF0aW9uLiBOb3csIGl0J3MgcG9zc2libGUgdG8KCWNvcHkvY3V0IGZyb20gUGhvdG9QYWludCBhbmQgcGFzdGUgdG8gQ29yZWxEcmF3LgoKMjAwMC0wNC0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZGRyYXcvZDNkZGV2aWNlL21haW4uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWVzYS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVVzZSBkM2RleGVjdXRlYnVmZmVyX2NyZWF0ZSBvbmx5IHdoZW4gY29tcGlsaW5nIHdpdGggTUVTQS4KCjIwMDAtMDQtMDkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGdyYXBoaWNzL3R0eWRydi9wYWxldHRlLmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJUmVwbGFjZWQgeG1hbGxvYyBjYWxscyB3aXRoIG1hbGxvYy9IZWFwQWxsb2MgY2FsbHMuCgoJKiBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUveHRlcm0uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29zbWV0aWNzLgoKCSogbWVtb3J5L2hlYXAuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJSW1wbGVtZW50ZWQgSGVhcFdhbGsoKS4KCgkqIGRsbHMvZGRyYXcvZHN1cmZhY2UveDExLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVR3byBsZWZ0IG92ZXIgSGVhcFZhbGlkYXRlIGFzc2VydGlvbnMgcmVtb3ZlZC4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDbGVhciBzdGF0dXMgZm9yIHNlbmRpbmcgZXhjZXB0aW9uIGV2ZW50LgoKCSogdG9vbHMvZ2VucGF0Y2g6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYWJpbGl0eSB0byBwdXQgbmV3LWxpbmVzIGluIGNoYW5nZWxvZyBlbnRyeS4KCUFkZGVkIC1wIHRvIGxvY2F0ZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCUdldEl0ZW0gd2FzIHJldHVybmluZyB0aGUgaXRlbSBpbnN0ZWFkIG9mIHN1Yml0ZW0gaW5mby4KCgkqIHByb2dyYW1zL3dpbmVtaW5lL21haW4uYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAY3l3LnVrbGludXgubmV0PgoJUmVnaXN0cnkga2V5IHVzZWQgaW4gTG9hZEJvYXJkKCkgd2FzIG5vdCB0aGUgc2FtZSBhcyB0aGUgb25lIHVzZWQgaW4KCVNhdmVCb2FyZCgpLiBBbHNvIGZpeGVkIGEgdHlwbyBpbiB0aGUgcG9zaXRpb24gc2F2aW5nIGNvZGUuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUNyZWF0ZSBkaXJlY3RvcmllcyB0aGF0IGRvbid0IGNvbnRhaW4gYSBNYWtlZmlsZS4KCgkqIHRvb2xzL3dyYy9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L01ha2VmaWxlLmluLCBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBpbmNsdWRlL01ha2VmaWxlLmluLCBvbGUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCB0b29scy9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RkcmF3L01ha2VmaWxlLmluOgoJSW1wcm92ZWQgc3VwcG9ydCBmb3IgTWFrZWZpbGVzIHRoYXQgbmVlZCB0byByZWN1cnNlIGluIHN1YmRpcmVjdG9yaWVzLgoKCSogZGxscy9kZHJhdy9kcGFsZXR0ZS9kZ2EuYywgZGxscy9kZHJhdy9kcGFsZXR0ZS9tYWluLmMsIGRsbHMvZGRyYXcvZHBhbGV0dGUveDExLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvZGdhLmMsIGRsbHMvZGRyYXcvZHN1cmZhY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2RzdXJmYWNlL3gxMS5jLCBjb25maWd1cmUuaW4sIGRsbHMvZGRyYXcvLmN2c2lnbm9yZSwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9jb252ZXJ0LmMsIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2Rjb21tb24uYywgZGxscy9kZHJhdy9kM2RkZXZpY2UvbWFpbi5jLCBkbGxzL2RkcmF3L2QzZGRldmljZS9tZXNhLmMsIGRsbHMvZGRyYXcvZDNkZGV2aWNlcy5jLCBkbGxzL2RkcmF3L2QzZGV4ZWN1dGVidWZmZXIuYywgZGxscy9kZHJhdy9kM2RsaWdodC5jLCBkbGxzL2RkcmF3L2QzZG1hdGVyaWFsLmMsIGRsbHMvZGRyYXcvZDNkdGV4dHVyZS5jLCBkbGxzL2RkcmF3L2RjbGlwcGVyL21haW4uYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RkcmF3L21haW4uYywgZGxscy9kZHJhdy9kZHJhdy94MTEuYywgZGxscy9kZHJhdy9kZHJhd19tYWluLmMsIGRsbHMvZGRyYXcvZGRyYXdfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L2RnYS5jLCBkbGxzL2RkcmF3L2RnYV9wcml2YXRlLmgsIGRsbHMvZGRyYXcvZGlyZWN0M2QvbWFpbi5jLCBkbGxzL2RkcmF3L2RpcmVjdDNkL21lc2EuYywgZGxscy9kZHJhdy9oZWxwZXIuYywgZGxscy9kZHJhdy9tYWluLmMsIGRsbHMvZGRyYXcvbWVzYS5jLCBkbGxzL2RkcmF3L21lc2FfcHJpdmF0ZS5oLCBkbGxzL2RkcmF3L3gxMS5jLCBkbGxzL2RkcmF3L3gxMV9wcml2YXRlLmgsIGNvbmZpZ3VyZToKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVzdHJ1Y3R1cmVkIERpcmVjdERyYXcuIFNwbGl0IGludG8gWDExIGFuZCBER0EgZHJpdmVyLCBhbmQgbXVsdGlwbGUKCWZpbGVzL2RpcnMgZm9yIGVhc2llciBtYWludGVuYW5jZS4gQ2xlYW5lZCB1cCBzdHJ1Y3RzIGFuZCBpbmNsdWRlCglmaWxlcy4gUmVpbmRlbnRlZCB0aGUgY29kZS4gU3RhcnRlZCB0aGUgc2FtZSBmb3IgRGlyZWN0M0QuICBEcml2ZXIKCWluY2x1c2lvbiBub3cgZG9uZSBieSB1c2luZyBjb25maWd1cmUvTWFrZWZpbGUvRUxGIGNvbnN0cnVjdG9yIHRyaWNrcy4KCjIwMDAtMDQtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBmaWxlcy9wcm9maWxlLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL2N1cnNvcmljb24uaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbWVtb3J5L2hlYXAuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL3RpbWVyLmMsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3VzZXIvdXNlcl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmM6CglSZW1vdmVkIGEgbnVtYmVyIG9mIGdsb2JhbCBoYW5kbGUgYWxsb2NhdGlvbnMgYW5kIGNyaXRpY2FsIHNlY3Rpb24KCWluaXRpYWxpemF0aW9ucy4KCgkqIHNlcnZlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglUZW1wb3JhcnkgaGFjayB0byBzaGFyZSBoYW5kbGVzIGJldHdlZW4gcHJvY2Vzc2VzIHNoYXJpbmcgdGhlIHNhbWUKCWFkZHJlc3Mgc3BhY2UuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmM6CglBZGRlZCBsYXp5IGluaXRpYWxpemF0aW9uIG9mIGNyaXRpY2FsIHNlY3Rpb25zLCBiYXNlZCBvbiBhIHBhdGNoIGJ5CglBbmRyZXcgTGV3eWNreS4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFl1eGkgWmhhbmcgPHl1eGlAY29yZWwuY2E+CglTdGVwaGVuIE1lcmV1CglUYWJDdHJsIGxlZnRtb3N0VmlzaWJsZSBpcyBub3QgdXBkYXRlZCBwcm9wZXJseS4gSXQgY2F1c2VkIHRoZSBRUAoJYXBwbGljYXRpb24gYmFyIG9uIHRoZSBib3R0b20gZmFpbCB0byBicmluZyBiYWNrIHRoZSBpdGVtcyB3aGVuIHRoZXJlCglpcyBubyBuZWVkIHRvIHNjcm9sbGluZy4gQWxzbyBmaXhlZCBhIGJ1ZyB0aGF0IHdoZW4gYW4gaXRlbSBpcyBpbnNlcnRlZCwKCXNldEl0ZW1Cb3VuZHMgc2hvdWxkIGJlIGNhbGxlZCBmaXJzdCwgdGhlbiBpdCdzIHRpbWUgdG8gaW52YWxpZGF0ZS4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvbmV3Zm5zLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIFBlZWtOYW1lZFBpcGUgc3R1Yi4KCgkqIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeGVkIHBpeG1hcCBsZWFrIHdpdGggdGhlIDF4MSBiaXRtYXAgaW4gbWVtb3J5IERDcy4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCXdpbmVpbnN0YWxsIG5vdyBwcm9wZXJseSBjb25maWd1cmVzIG5vLXdpbmRvd3MgaW5zdGFsbHMsIGFuZCBzaG91bGQgbm93CgliZSBlYXNpZXIgdG8gYWRhcHQgZm9yIGJpbmFyeSBwYWNrYWdlcyB0b28uCgoJKiBkb2N1bWVudGF0aW9uL3NhbXBsZXMvc3lzdGVtLmluaToKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRGVmYXVsdCBzeXN0ZW0uaW5pIChmcm9tIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWEpLgoKMjAwMC0wNC0wNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCURvIG5vdCBzZW5kIGEgZGVidWcgZXZlbnQgZm9yIGEgdGhyZWFkIHVudGlsIHRoZSBwcmV2aW91cyBldmVudCBmb3IKCXRoZSBzYW1lIHRocmVhZCBoYXMgYmVlbiBjb250aW51ZWQuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIHdpbmUuaW5pOgoJTW92ZWQgU2F2ZU9ubHlVcGRhdGVkS2V5cyB0byB3aW5lLmluaS4KCVVzZSBnZXRfY29uZmlnX2RpcigpIGluc3RlYWQgb2YgaGFyZGNvZGluZyB+Ly53aW5lCglTaW1wbGlmaWVkIGxvYWRpbmcgYW5kIHNhdmluZyByb3V0aW5lcy4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2VydmVyL3JlcXVlc3QuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIFdJTkVQUkVGSVggZW52aXJvbm1lbnQgdmFyaWFibGUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjL2xzdHIuYywgbWlzYy9uZXR3b3JrLmMsIG1zZG9zL2ludDIxLmMsIG9iamVjdHMvZm9udC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIGRsbHMvd2luMzJzL3czMnN5cy5jLCBkbGxzL3dpbjg3ZW0vZW11bGF0ZS5jLCBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLnNwZWMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGxvYWRlci9tb2R1bGUuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9nZGkvZ2RpLnNwZWMsIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZWF1dDMyL3N0dWJzLmMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogaW5jbHVkZS93aW51c2VyLmgsIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCU93ZW4gV2FuZyA8b3dlbndAY29yZWwuY2E+CglJbXBsZW1lbnRlZCBBUEkgRW51bVRpbWVGb3JtYXRzQSgpLiBJdCBzdXBwb3J0cyBub3cgYWxsIGRpZmZlcmVudAoJRW5nbGlzaCBsb2NhbGVzLCBhcyB3ZWxsIGFzIEdlcm1hbihzdGFuZGFyZCksIEZyZW5jaChzdGFuZGFyZCkgYW5kCglGcmVuY2goQ2FuYWRpYW4pLiAgQWxsIHRpbWUgZm9ybWF0cyBmb2xsb3cgY29udmVudGlvbnMgaW4gV2luZG93cyBOVCA0LjAKCglIYWl0aGVtIEhtaWRhIChvZiBNYWNhZGFtaWFuIGZvciBDb3JlbCkKCUltcGxlbWVudGVkIEdldEN1cnJlbmN5Rm9ybWF0QSgpIEFQSToKCS0gR2V0Q3VycmVuY3lGb3JtYXRBKCkgY2FsbHMgR2V0TnVtYmVyRm9ybWF0QSgpIHRvIGZvcm1hdCB0aGUgbnVtYmVyCgkgIChhcyBhIHBvc2l0aXZlIG9uZSksIHRoZW4gZm9ybWF0cyB0aGUgbnVtYmVyIGRlcGVuZGluZyBvbgoJICBOZWdhdGl2ZU9yZGVyL1Bvc2l0aXZlT3JkZXIgZmllbGRzLgoJLSBHZXROdW1iZXJGb3JtYXRBKCkgaGFzIGJlZW4gc2xpZ2h0bHkgbW9kaWZpZWQuCgoJKiBvYmplY3RzL3RleHQuYzoKCUp1bmljaGkgS3VjaGluaXNoaSA8amt1Y2hpQG1haG9yb2JhLm5lLmpwPgoJQWRkZWQgY29udmVyc2lvbiBmcm9tIERCQ1MgbHBEeCB0byBXQ0hBUiBscER4LgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2FkdmFwaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3NoZWxsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvc2hsd2FwaS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gSW1wbGVtZW50ZWQgc3R1YiBzdGF0aXN0aWNzLiBUdXJuZWQgb2ZmIGJ5IGRlZmF1bHQuIChSZXF1ZXN0ZWQgYnkgRnJhbmNvaXMKCUdvdWdldCkuCgktIEltcGxlbWVudGVkIG1pc3NpbmcgcHJvdG90eXBlIGNoZWNraW5nLiBUdXJuZWQgb2ZmIGJ5IGRlZmF1bHQgKFJlcXVlc3RlZAoJYnkgRGltaXRyeSBUaW1vc2hrb3YpLgoJLSBJbXBsZW1lbnRlZCAuc3BlYyBmaWxlIG5hbWUgc2FuaXR5IGNoZWNraW5nLiBUdXJuZWQgb2ZmIGJ5IGRlZmF1bHQuCgktIEltcGxlbWVudGVkIGRvY3VtZW50YXRpb24gd2lkdGggY2hlY2tpbmcuIFR1cm5lZCBvZmYgYnkgZGVmYXVsdC4KCS0gTWlub3IgYnVnIGZpeGVzLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6CglBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jYT4KCUZpeCBTdHJpbmdGcm9tR1VJMiByZXR1cm4gdmFsdWUgYXMgcGVyIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCU1ha2UgYXVkaW9kZXZpY2UgYmxvY2tpbmcgZGlyZWN0bHkgYWZ0ZXIgdGhlIG5vbi1ibG9ja2luZyBvcGVuLCBzaW5jZQoJd2UgdXNlIHRoZSB3cml0ZSgyKSBhbHNvIGZvciBzeW5jaHJvbml6YXRpb24uCgoJKiBkbGxzL3dpbnNvY2svYXN5bmMuYywgZGxscy93aW5zb2NrL3NvY2tldC5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3RlZCBlcnJvciBoYW5kbGluZyBmb3Igd3NfZ2V0cHJvdG9ieW5hbWUvbnVtYmVyLgoJTWFkZSB0aGUgQXN5bmMgZXJyb3IgcmV0dXJucyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsIGZ1bmN0aW9ucy4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0U2hvcnRQYXRoTmFtZTogYWx3YXlzIGVyYXNlIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCBvZiB0aGUgbmV3CglzdHJpbmcsIGFuZCByZXR1cm4gb25seSBzaW5nbGUgYmFja3NsYXNoZXMuCgoyMDAwLTA0LTA0ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9kcml2ZS5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgbWlzYy9yZWdpc3RyeS5jLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglBZGRlZCBhIHBlci1kcml2ZSBGYWlsUmVhZE9ubHkgZmxhZywgYW5kIHJlbW92ZWQgdGhlIGdsb2JhbAoJLS1mYWlscmVhZG9ubHkgb3B0aW9uLgoKCSogZGxscy94MTFkcnYveDExZHJ2X21haW4uYywgZmlsZXMvZmlsZS5jLCBzY2hlZHVsZXIvY2xpZW50LmM6CglGaXhlZCBmaWxlIGRlc2NyaXB0b3IgbGVha3MuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglDYWxsIFBST0ZJTEVfR2V0V2luZUluaUJvb2wgYmVmb3JlIHN0YXJ0aW5nIHRvIGZpbGwgdGhlIHJlcXVlc3QKCWJ1ZmZlci4gTWFkZSBuZXcgcmVnaXN0cnkgZm9ybWF0IHRoZSBkZWZhdWx0LgoKCSogc2VydmVyL3B0cmFjZS5jOgoJSW5jcmVtZW50IHN1c3BlbmQgY291bnQgYmVmb3JlIGF0dGVtcHRpbmcgYXR0YWNoIGluIHN1c3BlbmRfZm9yX3B0cmFjZS4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdGltZXIuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHNlcnZlci9hdG9tLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9ldmVudC5jOgoJTWFkZSByZXF1ZXN0IHRyYWNpbmcgbW9yZSByb2J1c3QgYWdhaW5zdCBib2d1cyBsZW5ndGhzLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLmNvbmYubWFuLmluLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluOgoJUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJQWRhcHRlZCB0aGUgbWFudWFsIHBhZ2VzIHRvIHRoZSBuZXcgbG9uZyBvcHRpb25zLCB1cGRhdGVkIHRoZQoJLWRlYnVnbXNnIGNoYW5uZWxzIGFuZCBhZGRlZCBhIHNtYWxsIGhhY2sgdG8gZ2V0IHRoZSBAc3lzY29uZmRpckAKCXN0dWZmIGluIHRoZSBtYW51YWwgcGFnZXMgcmlnaHQuCgoJKiBkbGxzL3dpbm1tL21taW8uYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdHdvIHNtYWxsIGJ1Z3Mgd2l0aGluIE1NSU9fSW5zdGFsbElPUHJvYyBhbmQgTU1JT19EZXN0cm95LgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvbWFpbi5jLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmg6CglKb3NodWEgVGhpZWxlbiA8Zm96ZXlAbmV0emVyby5jb20+CglBZGRlZCBEZXN0cm95Qm9hcmQgZnVuY3Rpb24gdG8gZGVsZXRlIGJpdG1hcCBoYW5kbGVzLgoJTW92ZWQgU2VsZWN0T2JqZWN0IG91dHNpZGUgb2YgRHJhd01pbmUuCglTZWxlY3RlZCBvbGQgb2JqZWN0J3MgYmFjayBpbnRvIGhNZW1EQy4KCgkqIG1zZG9zL2ludDIxLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJSW1wbGVtZW50ZWQgRkFUMzIgZnVuY3Rpb24gNzMwMiAoR2V0IEV4dGVuZGVkIERQQikuCgoJKiB3aW4zMi9kZXZpY2UuYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglJbXBsZW1lbnRlZCBEZXZpY2VJb0NvbnRyb2wgVldJTjMyX0RJT0NfRE9TX0RSSVZFSU5GTywgbmVlZGVkIGJ5CglJbnRlcm5ldCBFeHBsb3Jlci4KCgkqIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNhPgoJVGhpcyBwYXRjaCBhZGRzIHRoZSBhYmlsaXR5IGZvciByZWdhcGkgdG8gY2FsbCB0aGUgRGxsUmVnaXN0ZXJTZXJ2ZXIgb3IKCURsbFVucmVnaXN0ZXJTZXJ2ZXIgZm9yIGEgbGlzdCBvZiBETExzLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNhPgoJT2xlUmVnR2V0VXNlclR5cGUgZGlkIHJldHVybiBhbiB1bnRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nIGluc3RlYWQgb2YgYW4KCU9MRVNUUiAod2lkZSBjaGFyYWN0ZXJzKS4KCgkqIG1pc2MvbWFpbi5jLCBvbGUvbmxzL2VuYS5ubHMsIG9sZS9ubHMvZW5iLm5scywgb2xlL25scy9lbmMubmxzLCBvbGUvbmxzL2VuZy5ubHMsIG9sZS9ubHMvZW5pLm5scywgb2xlL25scy9lbmoubmxzLCBvbGUvbmxzL2VubC5ubHMsIG9sZS9ubHMvZW5zLm5scywgb2xlL25scy9lbnQubmxzLCBvbGUvbmxzL2VudS5ubHMsIG9sZS9ubHMvZW56Lm5scywgb2xlL25scy9pcmwubmxzLCBvbGUvb2xlMm5scy5jOgoJTWljaGFlbCBBYmQtRWwtTWFsZWsgKENvcmVsKQoJQ2hhbmdlZCBpcmwubmxzIHRvIGVuaS5ubHMuIFJldmlld2VkIGFuZCBmaXhlZCBhIGxvdCBvZiB0aGUgTkxTIGZpbGVzCgl0byBiZSBtb3JlIGNvbXBhdGlibGUgdG8gV2luZG93cy4KCUFkZGVkIGVuX0dCICh1c2VkIGJ5IENvcmVsIExpbnV4IDEuMCwxLjEpIGFzIGFsaWFzIGZvciBlbl9VSy4KCglKZWZmIFRyYW50ZXIgPGplZmZ0QGNvcmVsLmNhPgoJVGhlIG1lYXN1cmVtZW50IHVuaXQgZm9yIENhbmFkaWFuIEVuZ2xpc2ggc2hvdWxkIGJlIG1ldHJpYy4KCUxBTkdfU1VCX0VOVFJZIGRpZCBhbHdheXMgcmV0dXJuIHRoZSBmaXJzdCBsYW5ndWFnZSBkdWUgdG8gbWlzc2luZyB7fS4KCjIwMDAtMDMtMzAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9yczoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXBkYXRlZCBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9ycyBpbiByZWdhcmRzIHRvIHNoYXJlZCBsaWJyYXJpZXMgYW5kCglzb21lIG1vcmUgd2luZG93cyBzcGVjaWZpYyBkaXJzLgoKCSogcHJvZ3JhbXMvd2luZW1pbmUvUkVBRE1FLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEZpeCBwYWludGluZyBidWcgd2l0aCBtaWRkbGUgYnV0dG9uIGRvd24gd2hlbiBkcmFnZ2luZyBtb3VzZQoJLSBTcGVlZCB1cCBkcmF3aW5nIGFuZCBoZW5jZSBvdmVyYWxsIHNwZWVkCgktIEZpeCBjb21waWxlciB3YXJuaW5ncwoJLSBBZGRlZCBzb21lIG9wdGlvbmFsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgoJLSBBZGRlZCBhIG5ldyBrbm93biBidWcgdG8gdGhlIGxpc3QKCgkqIG1pc2MvY29tbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgQ1RTLCBEU1IgYW5kIFJpbmdJbmRpY2F0b3Igc3RhdGVzIHRvIFdpbmRvdydzIHNlbWktZG9jdW1lbnRlZAoJbW9kZW0gbGluZSBzdGF0dXMgcmVnaXN0ZXIuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglEZWxldGUgb2JqZWN0cyBhZnRlciB1c2UgaW4gRW51bUVuaE1ldGFGaWxlLgoJTWFrZSBQbGF5RW5oTWV0YUZpbGUgY2FsbCBFbnVtRW5oTWV0YUZpbGUuCglNb3ZlIEVudW1FbmhNZXRhRmlsZSBwcm90b3R5cGUgdG8gd2luZ2RpLmguCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglvcGVuKCkgdGhlIE9TUyBzb3VuZGRldmljZSBub24tYmxvY2tpbmcgaW4gY2FzZSBhbm90aGVyIHByb2Nlc3MgaGFzIGl0CglvcGVuIGFscmVhZHkuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQ29tbWVudGVkIG91dCBleGl0KCkgY2FsbCBvbiBFeGl0UHJvY2VzcyBmb3Igbm93LgoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCVNldCB0aHJlYWQgc3RhcnQgYWRkcmVzcyB0byAwIG9uIGV2ZW50cyBnZW5lcmF0ZWQgYnkKCURlYnVnQWN0aXZlUHJvY2Vzcy4KCVJldHVybiBhIGNvcnJlY3QgYWRkcmVzcyBpbiB0aGUgc2ltdWxhdGVkIGV4Y2VwdGlvbiBldmVudC4KCgkqIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGdyYXBoaWNzL3R0eWRydi9kYy5jLCBncmFwaGljcy90dHlkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvdHR5ZHJ2L3RleHQuYywgaW5jbHVkZS90dHlkcnYuaCwgd2luZG93cy90dHlkcnYvd25kLmM6CglGaXhlZCB0dHlkcnYgY29tcGlsZSB3aGVuIHVzaW5nIGN1cnNlcy4gQ2xlYW5lZCB1cCBhIGZldyAjaWZkZWZzLgoKMjAwMC0wMy0yOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZ3JhcGhpY3MvcGF0aC5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLnlhY2MueToKCU5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJLSBGaXggc29tZSBjb21waWxlciB3YXJuaW5ncy4KCS0gUmVtb3ZlIHN1cGVyZmx1b3VzICNpbmNsdWRlIHN0YXRlbWVudC4KCgkqIGluY2x1ZGUvd2luZS93aW5uZXQxNi5oLCBtaXNjL25ldHdvcmsuYzoKCVJvbiBHYWdlIDxyb25nYWdlQGF0dC5uZXQ+CglGaXhlZCBidWcgcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogKi8qLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkL2ZpeGVkIHNvbWUgZG9jdW1lbnRhdGlvbiByZXBvcnRlZCBieSB3aW5hcGlfY2hlY2suCgoJKiBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBvYmplY3RzL3BhbGV0dGUuYzoKCUZpeGVkIG1lbW9yeSBhbGxvY2F0aW9ucy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBkbGxzL3VzZXIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL2lucHV0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gQWRkZWQvZml4ZWQgc29tZSBkb2N1bWVudGF0aW9uIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjawoJLSBSZW5hbWVkIE1hcFZpcnR1YWxLZXlFeDMyQSB0byBNYXBWaXJ0dWFsS2V5RXhBCgktIFJlbmFtZWQgQ1JURExMX19kbGxvbmV4aXQgdG8gQ1JURExMX19fZGxsaW5pdAoKCSogZGxscy9vbGUzMi9pZnMuYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgbWlzYy9wcmludGRydi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIHdhcm5pbmdzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2tlcm5lbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIFVwZGF0ZWQgdGhlIEFQSSBmaWxlcy4KCS0gTWlub3IgYnVnIGZpeGVzCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRG8gYSBMb2FkTGlicmFyeUEgb2YgV0lOTU0gdXBvbiBBTklNQVRFX0NyZWF0ZSBhbmQgYSBGcmVlTGlicmFyeSB1cG9uCglBTklNQVRFX0Rlc3Ryb3kuCgoJKiB0b29scy93cmMvcGFyc2VyLmw6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgZml4IGluIHdyYyB0byBzdXBwb3J0IHRoZSBTb2xhcmlzIHByZXByb2Nlc3Nvci4KCgkqIGRlYnVnZ2VyL21zYy5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgQU5TSSBDIHZpb2xhdGlvbnMuCgoJKiBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3M6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZCBzdGFydCBtZW51IGRpcmVjdG9yaWVzLgoKCSogc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJUHV0IENMT05FX0ZJTEVTIGJhY2sgaW4sIGl0IGlzIHN0aWxsIGJyZWFraW5nIHRvbyBtYW55IHRoaW5ncy4KCgkqIG9iamVjdHMvYml0bWFwLmMsIGdyYXBoaWNzL3R0eWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglNZXJnZWQgRERCaXRtYXAgYW5kIHBoeXNCaXRtYXAgaW50byB0aGUgZ2VuZXJpYyBiaXRtYXAgc3RydWN0dXJlCgkoc3VnZ2VzdGVkIGJ5IEFuZHJldyBMZXd5Y2t5KS4KCgkqIGZpbGVzL2Rvc19mcy5jOgoJSWdub3JlIHRyYWlsaW5nIHNwYWNlcyBpbiBET1NGU19Ub0Rvc0ZDQkZvcm1hdC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzoKCUZpeGVkIHNtYWxsIGJ1ZyBpbiBXU09DSzMyX2FjY2VwdAoKMjAwMC0wMy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdmVyc2lvbi5oLCBBTk5PVU5DRSwgQ2hhbmdlTG9nOgoJUmVsZWFzZSAyMDAwMDMyNi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wMy0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2Rvc19mcy5jOiBTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCURPU0ZTX1RvRG9zRkNCRm9ybWF0OiBmYWlsIGlmIGV4dGVuc2lvbiBsb25nZXIgdGhhbiAzIGNoYXJhY3RlcnMuCgoJKiB0b29scy9jdmR1bXAvLmN2c2lnbm9yZSwgdG9vbHMvY3ZkdW1wL01ha2VmaWxlLmluLCB0b29scy9jdmR1bXAvY3ZjcnVuY2guYywgdG9vbHMvY3ZkdW1wL2N2ZHVtcC5jLCB0b29scy9jdmR1bXAvY3ZkdW1wLmgsIHRvb2xzL2N2ZHVtcC9jdmluY2x1ZGUuaCwgdG9vbHMvY3ZkdW1wL2N2bG9hZC5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglKb2huIFIuIFNoZWV0cyA8anNoZWV0c0Bjb2Rld2VhdmVycy5jb20+CglBZGRlZCBjdmR1bXAgdG9vbCB0byBkdW1wIENvZGVWaWV3IHN5bWJvbCBpbmZvcm1hdGlvbi4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUhhbmRsZSBQT0xMSFVQIGJldHRlciAoZGVsYXkgRkRfQ0xPU0Ugbm90aWZpY2F0aW9uIHVudGlsIGFsbCBkYXRhIGhhcwoJYmVlbiByZWFkKS4gTWFkZSBXU0FFbnVtTmV0d29ya0V2ZW50cyBhdG9taWMuIENvbnZlcnQgc29ja2V0IGV2ZW50CgllcnJvciBjb2RlcyBwcm9wZXJseS4gTWFkZSBhY2NlcHQoKS1lZCBzb2NrZXRzIGluaGVyaXQgdGhlIGxpc3RlbmluZwoJc29ja2V0J3MgV1NBQXN5bmNTZWxlY3QoKS4KCgkqIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIGRlYnVnIGZvcm1hdHRpbmcuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6IEZpeGVkIGVycm9yIGNoZWNraW5nIGluIHJlZ2lzdHJ5IHNhdmluZy4KCgkqIG1pc2MvY2Ryb20uYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIHN0cmVycm9yIGluIGRlYnVnIG91dHB1dC4KCgkqIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNIQ2hhbmdlTm90aWZ5W0F8V106IGZyZWUgb25seSBpdGVtcyB3ZSBhbGxvY2F0ZWQuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy90ZXh0LmMsIHdpbjMyL2NvbnNvbGUuYzoKCUhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXhlcyBmb3IgaTE4bi4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHJlYWQgLnNvIGxpc3QgZnJvbSBkZWJ1Z2dlZSdzIGFkZHJlc3Mgc3BhY2UuCgoJKiBpbmNsdWRlL3dpbmRvd3N4Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgbWlzc2luZyBtYWNyb3MuCgoJKiBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmgsIHNlcnZlci9yZWdpc3RyeS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglNb3ZlZCBzb21lIHJlZ2lzdHJ5IGRlZmluaXRpb25zIHRvIHdpbm50LmguCgoJKiBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuc3BlYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3Quc3BlYywgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnNwZWMsIHByb2dyYW1zL3Byb2dtYW4vcHJvZ21hbi5zcGVjOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGltcG9ydCBvZiBjb21kbGczMi5kbGwgaW4gc3BlYyBmaWxlLgoKCSogd2luZG93cy93aW5wb3MuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBY3RpdmF0ZSBhIGhpZGRlbiB3aW5kb3cgb25seSB3aGVuIGV4cGxpY2l0ZWx5IGFza2VkIGJ5IHRoZQoJYXBwbGljYXRpb24uCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvaW5mby5jLCBkZWJ1Z2dlci9tb2R1bGUuYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJaW1wcm92ZWQgZXhjZXB0aW9uIGhhbmRsaW5nCgltZXJnZWQgYWxsIG1vZHVsZSBoYW5kbGluZyBjb2RlIGluIG5ldyBtb2R1bGUuYyBmaWxlCglyZWVuYWJsZWQgJ3dhbGsgbW9kdWxlJyBhbmQgJ2luZm8gbW9kdWxlJyBjb21tYW5kcwoJYWRkZWQgYWJpbGl0eSB0byBkcml2ZSBicmVhayBvbiB0aHJlYWQgc3RhcnR1cAoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQuYywgZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHVicyBmb3IgRGxsUmVnaXN0ZXJTZXJ2ZXIvRGxsVW5yZWdpc3RlclNlcnZlci4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCByZXR1cm4gdmFsdWUgZm9yIFNDX0dFVF9ERVZfVFlQRS4KCjIwMDAtMDMtMjUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL2J1aWxkLmMsIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3JlY3QuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW5wb3MuYywgd2luZG93cy93aW5wcm9jLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2xvY2FsLmMsIG1pc2MvdmVyc2lvbi5jLCBtc2Rvcy9pbnQyMS5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvcmVnaW9uLmMsIHByb2dyYW1zL3dpbmhlbHAvaGxwZmlsZS5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmRlZi5oLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3VwZG93bi5jLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmMsIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGRsbHMvd2lubW0vdGltZS5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVzZSBtaW4vbWF4IGluc3RlYWQgb2YgTUlOL01BWC4KCgkqIHNlcnZlci9zb2NrLmM6IE92ZSBLYWF2ZW4gPG92ZWhrQHBpbmcudWlvLm5vPgoJSGFuZGxlIHNvY2tldCBQT0xMRVJSL1BPTExIVVAgY29uZGl0aW9ucyBwcm9wZXJseS4KCUNsZWFyIGVycm9yIGZpZWxkIGZvciBPT0Igbm90aWZpY2F0aW9ucy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU2VuZCB0aGUgY29ycmVjdCBPREFfIGNvZGUgd2hlbiBkZXNlbGVjdGluZyBhbiBpdGVtLgoKCSogd2luZG93cy91c2VyLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUZpeGVkIGEgY291cGxlIG9mIGZpbGUgZGVzY3JpcHRvciBsZWFrcy4KCUFsd2F5cyBjYWxsIFVTRVIgc2lnbmFsIHByb2MgaW4gdGhlIHJpZ2h0IGNvbnRleHQuCglDbGVhbmVkIHVwIFRIUkVBRF9DcmVhdGUuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOgoJRG8gbm90IGVyYXNlIGxvY2FsIGZpbGVzIG9uIHVuaW5zdGFsbCBpZiBpbnN0YWxsIGRpciBkb2VzIG5vdCBleGlzdC4KCgkqIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy9zeXNwYXJhbXMuYywgd2luZG93cy90dHlkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MvdHR5ZHJ2L2Rlc2t0b3AuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9tb25pdG9yLmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCBjb250cm9scy9kZXNrdG9wLmMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3R0eWRydi9kYy5jLCBpbmNsdWRlL2Rlc2t0b3AuaCwgaW5jbHVkZS9tb25pdG9yLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3gxMWRydi5oLCBtaXNjL21haW4uYywgd2luZG93cy9kY2UuYzoKCVN0b3JlIG1vbml0b3Igc2l6ZSBhbmQgZGVwdGggaW4gdGhlIGdlbmVyaWMgc3RydWN0dXJlLgoJTWVyZ2VkIG1vbml0b3IgZHJpdmVyIGludG8gVVNFUiBkcml2ZXIuCgoJKiB3aW5kb3dzL3R0eWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy90dHlkcnYvbWFpbi5jLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvZGRyYXcvZGRyYXdfbWFpbi5jLCBkbGxzL3gxMWRydi94MTFkcnZfbWFpbi5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGluY2x1ZGUveDExZHJ2Lmg6CglBIGZldyBzaW1wbGlmaWNhdGlvbnMgYW5kIG9wdGltaXphdGlvbnMgaW4gdGhlIHgxMSBkcml2ZXIuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgZGxscy9kZHJhdy9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvTWFrZWZpbGUuaW4sIGRsbHMveDExZHJ2L01ha2VmaWxlLmluOgoJTGluayB0dHlkcnYgYW5kIHgxMWRydiBvYmplY3RzIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBkbGwuCgoJKiBkbGxzL3VzZXIvTWFrZWZpbGUuaW46IEFkZGVkIG1pc3Npbmcga2V5Ym9hcmQuc3BlYy4KCjIwMDAtMDMtMjQgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL21zZ2JveC5jLCBtaXNjL2NvbW0uYywgbWlzYy9wcmludGRydi5jLCB3aW4zMi9leGNlcHQuYzoKCU1vdmVkIEZhdGFsQXBwRXhpdCBmdW5jdGlvbnMgdG8gd2luMzIvZXhjZXB0LmMuCglBZGRlZCBhIGZldyB1c2VzIG9mIENhbGxvdXQgaW5zdGVhZCBvZiByZWZlcmVuY2luZyBVU0VSIGZ1bmN0aW9ucwoJZGlyZWN0bHkuCgoJKiB3aW5kb3dzL2N1cnNvcmljb24uYywgaW5jbHVkZS9iaXRtYXAuaCwgb2JqZWN0cy9iaXRtYXAuYzoKCU1vdmVkIExvYWRJbWFnZSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgdG8gY3Vyc29yaWNvbi5jLgoKCSogZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaS5zcGVjLCBkbGxzL2dkaS90aHVuay5jLCBkbGxzL3VzZXIvLmN2c2lnbm9yZSwgZGxscy91c2VyL01ha2VmaWxlLmluLCBkbGxzL3VzZXIva2V5Ym9hcmQuc3BlYywgZGxscy91c2VyL3RodW5rLmMsIGRsbHMvdXNlci91c2VyLnNwZWMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9rZXlib2FyZC5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBvYmplY3RzL2xpbmVkZGEuYywgd2luZG93cy93aW4uYzoKCU1vdmVkIGdkaS91c2VyIHRodW5raW5nIGZ1bmN0aW9ucyBpbnRvIHRoZWlyIHJlc3BlY3RpdmUgZGxscy4KCU1vdmVkIGtleWJvYXJkLnNwZWMgaW50byB1c2VyIGRsbC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRGlzYWJsZSBPcGVuR0wgc3VwcG9ydCBpZiB0aGUgbGF0dGVyIGlzIHRocmVhZCBzYWZlLgoKCSogZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL21lbW9yeS5jLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmMsIGdyYXBoaWNzL2Rpc3BkaWIuYywgaW5jbHVkZS9hbmltYXRlLmgsIGluY2x1ZGUvYnV0dG9uLmgsIGluY2x1ZGUvY3J0ZGxsLmgsIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvZGlzcGRpYi5oLCBpbmNsdWRlL2VuaG1ldGFmaWxlLmgsIGluY2x1ZGUvaW1hZ2VsaXN0LmgsIGluY2x1ZGUvbWV0YWZpbGUuaCwgaW5jbHVkZS9yZWdpb24uaCwgaW5jbHVkZS9zcWx0eXBlcy5oLCBpbmNsdWRlL3dpbmUvaWNtcGFwaS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbW1kbGdicm93c2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udGV4dG1lbnUuaCwgaW5jbHVkZS93aW5lL29ial9kb2NraW5nd2luZG93ZnJhbWUuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIGluY2x1ZGUvd2lucG9zLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgdGhlIGluY2x1ZGUgZmlsZXMgc2VsZiBzdWZmaWNpZW50LgoKCSogZGxscy93aW4zMnMvdzMyc2tlcm5lbC5jLCBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vbW1zeXN0ZW0uYywgZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgZGxscy93aW5zb2NrL3dzb2NrMzIuc3BlYywgbWlzYy9kZGVtbC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL3NhZmVhcnJheS5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy9vbGVwcm8zMi9vbGVwcm8zMnN0dWJzLmMsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgZGxscy90YXBpMzIvYXNzaXN0ZWQuYywgZGxscy90YXBpMzIvbGluZS5jLCBkbGxzL3RhcGkzMi9waG9uZS5jLCBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvbXByL21wcl9tYWluLmMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2xlMzIvY29tcG9zaXRlbW9uaWtlci5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvZHJhZ2xpc3QuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21tZGxnL2ZpbmRkbGczMi5jLCBkbGxzL2RkcmF3L2RkcmF3X21haW4uYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQvZml4ZWQgc29tZSBkb2N1bWVudGF0aW9uIHJlcG9ydGVkIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHdpbjMyL25ld2Zucy5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS93aW5nZGkuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpX2NoZWNrLgoKCSogaW5jbHVkZS93aW5udC5oLCBvbGUvb2xlMm5scy5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgQU5TSSBDIHZpb2xhdGlvbnMuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jLCBwcm9ncmFtcy9ub3RlcGFkL0RhLnJjLCBwcm9ncmFtcy9ub3RlcGFkL0RlLnJjLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmMsIHByb2dyYW1zL3JlZ3Rlc3QvcmVndGVzdC5jLCBwcm9ncmFtcy92aWV3L3ZpZXcuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIEFOU0kgQyByZWxhdGVkIGNvbXBpbGUgcHJvYmxlbXMuCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMzIvZ2RpMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIva2VybmVsMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlMzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvb2xlYXV0MzIuYXBpLCB0b29scy93aW5hcGlfY2hlY2svd2luMzIvdXNlcjMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL3dpbm1tLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2L2RkZW1sLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBVcGRhdGVkIEFQSSBmaWxlcwoJLSBEb24ndCBjaGVjayB0aGUgKi5zcGVjLmMgZmlsZXMKCS0gQmV0dGVyIHBhcnNpbmcgb2Ygc3RyaW5ncwoJLSBCZXR0ZXIgZG9jdW1lbnRhdGlvbiBjaGVja2luZwoJLSBNaW5vciBidWcgZml4ZXMKCgkqIGRsbHMvZGlucHV0L2RpbnB1dF9tYWluLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIGFkZGVkIHNvbWUgZGVidWcgY29kZSBhbmQgY2xlYW5lZC11cCB0aGUgbW91c2Ugd2FycGluZyBjb2RlCgktIGJlIHJlYWR5IG9uY2UgbW91c2Ugd2lsbCBiZSByZXBvcnRlZCByZWxhdGl2ZWx5CgoJKiB3aW5kb3dzL21kaS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBjb3B5aW5nIG9mIHRoZSBNREkgJ1dpbmRvd3MnIG1lbnUgaXRlbXMgaWYgdGhlIGl0ZW1zIGFyZSBub3Qgb2YKCXR5cGUgTUZUX1NUUklORy4KCgkqIGNvbnRyb2xzL21lbnUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU2V0IHRoZSBjb3JyZWN0IHZhbHVlIGZvciB0aGUgY2NoIGVsZW1lbnQgb2YgTUVOVUlURU1JTkZPIGluCglHZXRNZW51SXRlbUluZm8uCgoJKiBkbGxzL2dkaS9nZGkzMi5zcGVjOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggc3BlYyBmaWxlIGVudHJpZXMgZm9yIEVudW1Gb250RmFtaWxpZXNFeCouCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZ1cnRoZXIgY29kZSBzaW1wbGlmaWNhdGlvbnMgYW5kIGludGVyZmFjZSAoY29uc2lzdGVuY3kpIGltcHJvdmVtZW50cy4KCUZpeCBzZWxlY3Rpb24gb2YgdGhlIFdpbmUgYmluYXJ5IHdoaWNoIHdhcyBicm9rZW4gYnkgYSByZWNlbnQgY2hhbmdlLgoKCSogd2luZG93cy9zeXNwYXJhbXMuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBwcm9wZXIgdGVybWluYXRpb24gdXBvbiBmYWlsdXJlLgoKCSogZGVidWdnZXIvdHlwZXMuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBiYXNpYyB0eXBlIGV2YWx1YXRpb24uCgoJKiBzZXJ2ZXIvcmVnaXN0cnkuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRW5zdXJlIHRoYXQgbm9uLU5VTEwgdGVybWluYXRlZCBzdGluZ3MgYXJlIHNhdmVkIGNvcnJlY3RseS4KCgkqIHdpbmRvd3MvaW5wdXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3QgdGhlIE5vdGlmeUNvZGUgaW4gdGhlIFdNX0NPTU1BTkQgbWVzc2FnZSBzZW50IGJ5CglLQkRfdHJhbnNsYXRlX2FjY2VsZXJhdG9yKCkuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTMyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2xpZ2h0bHkgYmV0dGVyIFJFUVVFU1QgU0VOU0UgZHVtcGluZywgZml4ZWQgR0VUX0RFVl9UWVBFIHJldHVybnMsCgl3b3JrIGFyb3VuZCBFWEVDIFNDU0kgY29tbWFuZHMgd2hpY2ggZG8gbm90IHNldCB0aGUgaG9zdDwtPnRhcmdldCBkYXRhCglmbGFncywgaWdub3JlIGVycm9ycyBvbiBEVkQgUkVQT1JUIEtFWS9EVkQgU0VORCBLRVkuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglDaGFuZ2VkIFBUUkFDRV9QRUVLVVNFUiB0byBQVFJBQ0VfUEVFS1VTUiBhbmQgUFRSQUNFX1BPS0VVU0VSIHRvCglQVFJBQ0VfUE9LRVVTUiBmb3IgbGliYzUoPykgY29tcGlsZS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0b3AgYSBXTV9TRVRURVhUIG1lc3NhZ2UgKGFuZCBmcmllbmRzKSB0byBhIGNvbWJvIHNlbmRpbmcgQ0JOX0VESVQqCgltZXNzYWdlcyB0byB0aGUgcGFyZW50LgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIG1lbW9yeS9oZWFwLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgKGNvcnJlY3QpIHByb3RvdHlwZSBmb3IgSGVhcFdhbGsuCgoJKiBkbGxzL29sZTMyL2lmcy5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJLSBUaGUgSUNPTV9DTUVUSE9EeHh4IGNhdXNlIHByb2JsZW1zIGJlY2F1c2UgdGhlICdjb25zdCcgY2hhbmdlcyB0aGUKCSAgc2lnbmF0dXJlLiBUaGVyZSdzIG5vIHN1Y2ggdGhpbmcgb24gV2luZG93cyBhbnl3YXkgKGl0J3MgYSBzaGFtZSkgc28KCSAganVzdCByZW1vdmUgdGhlbSBhbHRvZ2V0aGVyLgoJLSBIZWFwTWluaW1pemUgcmV0dXJucyBhIHZvaWQsIG5vdCBhICd2b2lkKicKCjIwMDAtMDMtMjAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvZGVza3RvcC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3MvdHR5ZHJ2L2Rlc2t0b3AuYywgd2luZG93cy93aW4uYywgY29udHJvbHMvZGVza3RvcC5jLCBkbGxzL2RpbnB1dC9kaW5wdXRfbWFpbi5jLCBkbGxzL2Rpc3BsYXkvZGlzcGxheV9tYWluLmMsIGRsbHMvbW91c2UvbW91c2VfbWFpbi5jLCBkbGxzL3R0eWRydi90dHlkcnYuc3BlYywgZGxscy90dHlkcnYvdHR5ZHJ2X21haW4uYywgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGluY2x1ZGUvZGVza3RvcC5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL21vbml0b3IuaCwgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3VzZXIuaCwgaW5jbHVkZS94MTFkcnYuaDoKCU1vdmVkIGdyYXBoaWNzIGluaXRpYWxpc2F0aW9uIHRvIHRoZSB4MTFkcnYvdHR5ZHJ2IGRsbCBpbml0IGNvZGUuCglNZXJnZWQgZXZlbnQsIGtleWJvYXJkIGFuZCBtb3VzZSBkcml2ZXJzIGludG8gVVNFUiBkcml2ZXIuCgoyMDAwLTAzLTE5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL29sZTJubHMuYzogQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY29tPgoJSW1wcm92ZWQgQ29tcGFyZVN0cmluZ0EgcGVyZm9ybWFuY2UuCgoJKiBsaWJyYXJ5L3dpbmVzdHViLmM6IEFkZGVkIG1pc3NpbmcgZGVidWd0b29scy5oIGluY2x1ZGUuCgoJKiBwcm9ncmFtcy93aW5oZWxwL2hscGZpbGUuYywgcHJvZ3JhbXMvd2luaGVscC9tYWNyby5jLCBwcm9ncmFtcy93aW5oZWxwL21hY3JvLmxleC5sLCBwcm9ncmFtcy93aW5oZWxwL3dpbmhlbHAuYywgcHJvZ3JhbXMvY2xvY2svbGFuZ3VhZ2UuYywgcHJvZ3JhbXMvY2xvY2svbWFpbi5oLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jLCBwcm9ncmFtcy9ub3RlcGFkL2RpYWxvZy5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9zZWFyY2guYywgcHJvZ3JhbXMvcHJvZ21hbi9kaWFsb2cuYywgcHJvZ3JhbXMvcHJvZ21hbi9ncm91cC5jLCBwcm9ncmFtcy9wcm9nbWFuL21haW4uYywgcHJvZ3JhbXMvcHJvZ21hbi9wcm9ncmFtLmMsIHByb2dyYW1zL3ZpZXcvaW5pdC5jLCBwcm9ncmFtcy92aWV3L3ZpZXcuYzoKCU5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJRml4ZWQgc29tZSBjb21waWxlciBlcnJvcnMgYW5kIHdhcm5pbmdzLgoKCSogb2xlL29sZTJubHMuYzogU3RldmVuIEVsbGlvdHQgPGVsbGlvdHNsQG1pbmRzcHJpbmcuY29tPgoJVGVtcG9yYXJpbHkgaW1wbGVtZW50ZWQgdGhlIExDTUFQX1NPUlRLRVkgZmxhZyBpbiB0aGUgTENNYXBTdHJpbmdXKCkKCWZ1bmN0aW9uIHBlbmRpbmcgYSBtb3JlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mIGxvY2FsZXMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglIYWNrOiBhbHdheXMgdHJ5IGJ1aWx0aW4gbW9kdWxlIGJlZm9yZSBlbGYgb3IgZWxmZGxsIHRvIGF2b2lkIGxvYWRpbmcKCWEgYnVpbHRpbiBkbGwgLnNvIGZpbGUgaW4gdGhlIHdyb25nIG1vZGUuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgb2JqZWN0cy9mb250LmM6CglNb3ZlZCBmb250IHJlc291cmNlIGZ1bmN0aW9ucyBvdXQgb2YgdGhlIFgxMSBkcml2ZXIuCgoJKiB0b29scy9tYWtlZGVwLmM6CglBZGRlZCBzdXBwb3J0IGZvciBzb3VyY2UgZmlsZXMgc3RvcmVkIGluIHN1YmRpcmVjdG9yaWVzLgoKCSogZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kYy5jOgoJQWRkZWQgR2V0RENPcmdFeCBpbiBncmFwaGljcyBkZXZpY2UgaW50ZXJmYWNlIGFuZCByZW1vdmVkIFgxMSBjb2RlCglmcm9tIGRjLmMuCgoJKiBkbGxzL3dpbm1tL21taW8uYywgZGxscy93aW5tbS9tbXN5c3RlbS5zcGVjLCBkbGxzL3dpbm1tL3dpbmVtbS5oLCBkbGxzL3dpbm1tL3dpbm1tLnNwZWMsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc2VnbWVudGVkL2xpbmVhciBidWZmZXJzIG1hbmlwdWxhdGlvbi4KCUJldHRlciBJTyBidWZmZXJpbmcuCglBZGRlZCBzb21lIG1pc3NpbmcgcHJvdG90eXBlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglFeHBsaWNpdGx5IHVzZSB0aGUgVFZOX3h4eEEgdmVyc2lvbiBvZiB0aGUgbWFjcm9zLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gQWRkZWQgdGhlIFRWTl94eHhBIG1hY3JvcwoJLSBBZGRlZCBtaXNzaW5nIFRCTk9USUZZIG1hY3JvcyBhbmQgdHlwZXMKCS0gQWRkZWQgU05ETVNHCgoJKiBpbmNsdWRlL3dpbnVzZXIuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBXTV9BUFAuCgoJKiBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmMsIGluY2x1ZGUveDExZHJ2LmgsIGxpYnJhcnkvd2luZXN0dWIuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9tYWluLmMsIG1pc2MvcHJpbnRkcnYuYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3htYWxsb2MuYywgb2JqZWN0cy9wYWxldHRlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCVJlbW92ZWQgbW9zdCBjYWxscyB0byB4bWFsbG9jL3hyZWFsbG9jLgoKCSogaW5jbHVkZS93aW5kZWYuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIEFkZGVkIG1pc3NpbmcgZGVmaW5pdGlvbiBmb3IgR0xPQkFMSEFORExFIGFuZCBMT0NBTEhBTkRMRQoJLSBGaXhlZCB0aGUgcHJvdG90eXBlIG9mIFdOREVOVU1QUk9DCgoJKiBpbmNsdWRlL2RkZW1sLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jb20+CglQcm9wYWdhdGUgSXNEaWFsb2dNZXNzYWdlIHRvIHRoZSBwYXJlbnQgaWYgdGhlIGRpYWxvZyBoYXMgdGhlCglEU19DT05UUk9MIGZsYWcuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgYW4gZXhjZXB0aW9uIGZyYW1lIGZvciBsc3RyY3B5MTYuCgoJKiBsb2FkZXIvbWFpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyBhdHRhY2hpbmcgaW1wb3J0ZWQgRExMcyBvZiBhIHdpbmVsaWIgZXhlY3V0YWJsZS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlPbGVJdGVtQ29udGFpbmVyIGhhcyBPTEVHVUlEKDB4MTFjKSwgbm90IDB4MTFhLgoKCSogZGxscy9vbGUzMi9jb21wb2JqLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgbWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBDb1Rhc2tNZW1SZWFsbG9jLgoKCSogdG9vbHMvZ2VucGF0Y2g6IFN0ZXZlbiBFbGxpb3R0IDxlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbT4KCU1hZGUgdmFyaW91cyBjaGFuZ2VzIHRvIHRvb2xzL2dlbnBhdGNoIGluY2x1ZGluZyBzdWdnZXN0aW9ucyBmcm9tIE92ZQoJS2FhdmVuIChQbGFjZSBhZGRlZCBmaWxlcyBsYXN0IGluIHRoZSBwYXRjaC4gIEFkZCBhIHN3aXRjaCB0aGF0CglzcGVjaWZpZXMgbW9kaWZpZWQgZmlsZXMuKQoKCSogaW5jbHVkZS90Y2hhci5oLCBpbmNsdWRlL3dpbm50Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTW92ZWQgdGhlIGRlZmluaXRpb24gb2YgUFRTVFIgYW5kIExQVFNUUiBmcm9tIHRjaGFyLmggdG8gd2lubnQuaC4KCgkqIGluY2x1ZGUvd2luZG93cy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVNob3VsZCBpbmNsdWRlICd3aW5zcG9vbC5oJy4KCgkqIHRvb2xzL3dyYy9wYXJzZXIuaCwgdG9vbHMvd3JjL3BhcnNlci5sOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIEFuIGV4dGVybiBzdGF0ZW1lbnQgZmluaXNoZXMgd2l0aCB0aGUgZmlyc3QgY2xvc2luZyAnfScgb3IgdGhlIGZpcnN0CgkgIG91dGVyICc7JwoJLSBIYW5kbGUgJyNlcnJvcicsICcjbGluZScgYW5kICcjcHJhZ21hJyBldmVuIHdoZW4gaW4gdGhlICdwcF9zdHJpcHMnLAoJICAncHBfc3RyaXBlJywgJ3BwX3N0cmlwcCcgb3IgJ3BwX2ZhbHNlJyBjb250ZXh0cyAoanVzdCBsaWtlICcjaWYnIGFuZAoJICBjbykuICBCdXQgc3RpbGwgZG9uJ3QgaXNzdWUgYW4gZXJyb3IgaWYgJyNlcnJvcicgaXMgZm91bmQgd2hlbiBpbiB0aGUKCSAgJ3BwX2ZhbHNlJyBzdGF0ZS4KCgkqIHRvb2xzL3dyYy9wYXJzZXIueTogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNYWtlIHRoZSBmaXJzdCBjb21tYSBpbiB0aGUgY29udHJvbCdzIGRlZmluaXRpb24gb3B0aW9uYWwuCgoJKiBkbGxzL29sZTMyL2RhdGFjYWNoZS5jOiBBbmRyZXcgTGV3eWNreSA8YW5kcmV3bEBjb3JlbC5jb20+CglTdXBwb3J0IGxvYWRpbmcgYW55IHByZXNlbnRhdGlvbiBhc3BlY3QuCgoJKiBkbGxzL3dpbmFzcGkvYXNwaS5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUF2b2lkIGEgbGluayBlcnJvciBmcm9tIGFub3RoZXIgRExMIG9uIEZyZWVCU0QuCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgam95c3RpY2sgSUQvZGV2aWNlSUQvZHJpdmVyIGhhbmRsZS9pbnN0YW5jZSBJRCBtaXh1cC4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY29tPgoJRGVsZXRlIHRoZSBzaG0gc2VnbWVudCBhcyBzb29uIGFzIHdpbmUgYW5kIFggaGF2ZSBhdHRhY2hlZCBpdC4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogTGFycyBIZWV0ZSA8aGVsQGFkbWluLmRlPgoJQ29ycmVjdGVkIGhhbmRsaW5nIG9mIHByb3RvPT1OVUxMIGluIFdJTlNPQ0tfZ2V0c2VydmJ5bmFtZSBhbmQKCVdJTlNPQ0tfZ2V0c2VydmJ5cG9ydC4KCgkqIHdpbmRvd3MvZXZlbnQuYywgaW5jbHVkZS9tYWluLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvbWFpbi5jLCBtaXNjZW11L21haW4uYywgb2JqZWN0cy9nZGlvYmouYywgcmVsYXkzMi8uY3ZzaWdub3JlLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2dkaTMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9nZGkvLmN2c2lnbm9yZSwgZGxscy9nZGkvTWFrZWZpbGUuaW4sIGRsbHMvZ2RpL2dkaS5zcGVjLCBkbGxzL2dkaS9nZGkzMi5zcGVjLCBkbGxzL2dkaS9nZGlfbWFpbi5jLCBkbGxzL3R0eWRydi8uY3ZzaWdub3JlLCBkbGxzL3R0eWRydi9NYWtlZmlsZS5pbiwgZGxscy90dHlkcnYvdHR5ZHJ2LnNwZWMsIGRsbHMvdHR5ZHJ2L3R0eWRydl9tYWluLmMsIGRsbHMvdXNlci8uY3ZzaWdub3JlLCBkbGxzL3VzZXIvTWFrZWZpbGUuaW4sIGRsbHMvdXNlci91c2VyLnNwZWMsIGRsbHMvdXNlci91c2VyMzIuc3BlYywgZGxscy91c2VyL3VzZXJfbWFpbi5jLCBkbGxzL3gxMWRydi8uY3ZzaWdub3JlLCBkbGxzL3gxMWRydi9NYWtlZmlsZS5pbiwgZGxscy94MTFkcnYveDExZHJ2LnNwZWMsIGRsbHMveDExZHJ2L3gxMWRydl9tYWluLmMsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9nZGkuc3BlYywgaWYxNjMyL3VzZXIuc3BlYywgTWFrZS5ydWxlcy5pbiwgY29uZmlndXJlOgoJQ3JlYXRlZCBzZXBhcmF0ZSBkbGxzIGZvciB1c2VyLGdkaSx0dHlkcnYseDExZHJ2LgoJRml4ZWQgV2luZWxpYiBhcmdjIGhhbmRsaW5nICh0aGFua3MgdG8gRXJpYyBQb3VlY2gpLgoKMjAwMC0wMy0xOCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3BzZHJ2L2VzY2FwZS5jLCBpbmNsdWRlL2RpbnB1dC5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvdHdlYWsuaCwgaW5jbHVkZS91c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIGxvYWRlci9tYWluLmMsIG1pc2MvdHdlYWsuYywgb2xlL29sZTJubHMuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvbWFpbi5jOgoJTWlzYyBzbWFsbCBjbGVhbnVwcy4KCgkqIHdpbmRvd3Mvc3B5LmMsIHdpbmRvd3Mvc3lzcGFyYW1zLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgbG9hZGVyL2Rvcy9kb3N2bS5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL21haW4uYywgbWlzYy9zcHkuYywgb2JqZWN0cy9NYWtlZmlsZS5pbiwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9yZWdpb24uYywgb2JqZWN0cy90ZXh0LmMsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCUF2b2lkIGNhbGxpbmcgdGhlICpSZWN0IFVTRVIgZnVuY3Rpb25zIGZyb20gaW5zaWRlIEdESS4KCU1vdmVkIGEgZmV3IFVTRVIgZnVuY3Rpb25zIHRvIGEgbW9yZSBhcHByb3ByaWF0ZSBsb2NhdGlvbi4KCgkqIGxvYWRlci9tYWluLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvbWFpbi5jLCBtaXNjL29wdGlvbnMuYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3ZlcnNpb24uYywgbWlzY2VtdS9tYWluLmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCBkbGxzL2RkcmF3L2RkcmF3X21haW4uYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvcGFsZXR0ZS5jLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9vcHRpb25zLmgsIGluY2x1ZGUvc2hlbGwuaCwgd2luZS5pbmk6CglNb3ZlZCBjb21tYW5kLWxpbmUgb3B0aW9uIGhhbmRsaW5nIG91dCBvZiB0aGUgWDExIGRyaXZlci4KCUFkZGVkIHN1cHBvcnQgZm9yICItLSIgcHJlZml4IG9uIG9wdGlvbnMuCglSZXBsYWNlZCBhIGZldyBYMTEgY29tbWFuZC1saW5lIG9wdGlvbnMgYnkgd2luZS5jb25mIHBhcmFtZXRlcnMuCgoyMDAwLTAzLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGdyYXBoaWNzL3ZnYS5jLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2RkcmF3LnNwZWMsIHJlbGF5MzIvZGlucHV0LnNwZWMsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIHdpbmRvd3MvZGlucHV0LmMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2RkcmF3Ly5jdnNpZ25vcmUsIGRsbHMvZGRyYXcvTWFrZWZpbGUuaW4sIGRsbHMvZGRyYXcvZDNkX3ByaXZhdGUuaCwgZGxscy9kZHJhdy9kM2Rjb21tb24uYywgZGxscy9kZHJhdy9kM2RkZXZpY2VzLmMsIGRsbHMvZGRyYXcvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBkbGxzL2RkcmF3L2QzZGxpZ2h0LmMsIGRsbHMvZGRyYXcvZDNkbWF0ZXJpYWwuYywgZGxscy9kZHJhdy9kM2R0ZXh0dXJlLmMsIGRsbHMvZGRyYXcvZDNkdmlld3BvcnQuYywgZGxscy9kZHJhdy9kZHJhdy5zcGVjLCBkbGxzL2RkcmF3L2RkcmF3X21haW4uYywgZGxscy9kZHJhdy9kZHJhd19wcml2YXRlLmgsIGRsbHMvZGlucHV0Ly5jdnNpZ25vcmUsIGRsbHMvZGlucHV0L01ha2VmaWxlLmluLCBkbGxzL2RpbnB1dC9kaW5wdXQuc3BlYywgZGxscy9kaW5wdXQvZGlucHV0X21haW4uYzoKCU1hZGUgZGRyYXcgYW5kIGRpbnB1dCBzZXBhcmF0ZSBkbGxzLgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJSGF2ZSB0aHJlYWRzIGFuZCBwcm9jZXNzZXMgZXhpdCBtb3JlIGNsZWFubHkgd2hlbmV2ZXIgcG9zc2libGUuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOgoJSW5jbHVkZSBzcGFjZSBmb3IgcmVzb3VyY2VzIGluIHRoZSBtb2R1bGUgaGVhZGVyIGluc3RlYWQgb2YgZG9pbmcgYQoJc2VwYXJhdGUgYWxsb2NhdGlvbi4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21wci8uY3ZzaWdub3JlLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgbWlzYy9uZXR3b3JrLmM6CglNYWRlIE1QUiBhIHNlcGFyYXRlIGRsbC4KCgkqIGRsbHMvb2xlMzIvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oOgoJQW5kcmV3IExld3lja3kgPGFuZHJld2xAY29yZWwuY29tPgoJUmV3cml0ZSB0aGUgQklHQkxPQ0tGSUxFIGltcGxlbWVudGF0aW9uIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZ1cnRoZXIgc2ltcGxpZnkgdGhlIGNvZGUgYW5kIHJlbW92ZSBzb21lIHJlZHVuZGFudCBjb2RlLgoJTWFrZSB0aGUgdXNlciBpbnRlcmZhY2UgbW9yZSBjb25zaXN0ZW50IGFuZCBhcHBlYWxpbmcuCgoJKiBkbGxzL29sZTMyL2RlZmF1bHRoYW5kbGVyLmM6IEFuZHJldyBMZXd5Y2t5IDxhbmRyZXdsQGNvcmVsLmNvbT4KCUF2b2lkIGEgcmVmY291bnQgbGVhayBpbiBRdWVyeUludGVyZmFjZSB3aGVuIGRlbGVnYXRpbmcuCglBbmQgYSBjb3VwbGUgb2YgbWlub3IgYnVncy4KCjIwMDAtMDMtMTUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmgsIGRlYnVnZ2VyL2Rpc3BsYXkuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUludHJvZHVjZWQgREJHX1ZBTFVFIHN0cnVjdCB0byBtYW5pcHVsYXRlIGRlYnVnZ2VyL2RlYnVnZ2VlIGFkZHJlc3Mgc3BhY2UuCglBZGRlZCB3YXRjaCAoaGFyZHdhcmUgYXNzaXN0ZWQgZGVidWdnaW5nKSBhbmQgd2hhdGlzICh0eXBlIG9mIGV4cHIpIGNvbW1hbmRzLgoJRml4ZWQgc29tZSBpc3N1ZXMgaW4gbG9jYWwgdmFycyBoYW5kbGluZyAoc3RhYnMgcGFyc2luZyAmIHJlZ2lzdGVycyBvcHRpbWl6YXRpb24pLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmM6CglLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNhPgoJVXBkYXRlIERJQiBzZWN0aW9ucyBpbiB0ZXh0IG91dHB1dCBhbmQgZm9yIGdyYXBoaWNzIHByaW1pdGl2ZXMuCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJTWljaGFlbCBBYmQtRWwtTWFsZWsgKG9uIGJlaGFsZiBvZiBDb3JlbCkKCVdoZW4gd2Ugd2VyZSBzd2l0Y2hpbmcgdG8gYW5vdGhlciBkZXNrdG9wLCB0aGUgcG9wdXAgd2luZG93cyBsb3N0Cgl0aGVpciBXU19WSVNJQkxFIGZsYWcuCgoJKiBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6CglBdm9pZCBTSUdTVE9QL1NJR0NPTlQgcmFjZSB3aGVuIHB0cmFjZSBpcyBkaXNhYmxlZC4KCUZpeGVkIGNvbnRleHQgZmxhZ3MgaGFuZGxpbmcgKHRoYW5rcyB0byBFcmljIFBvdWVjaCkuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJQXZvaWQgU0lHU1RPUC9TSUdDT05UIHJhY2Ugd2hlbiBwdHJhY2UgaXMgZGlzYWJsZWQuCgoJKiBzZXJ2ZXIvZGVidWdnZXIuYzogRml4ZWQgYnVnIGluIGdlbmVyYXRlX3N0YXJ0dXBfZGVidWdfZXZlbnRzKCkuCgoJKiBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luZW1pbmUvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luZW1pbmUvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmVtaW5lL1JFQURNRSwgcHJvZ3JhbXMvd2luZW1pbmUvZGlhbG9nLmMsIHByb2dyYW1zL3dpbmVtaW5lL2RpYWxvZy5oLCBwcm9ncmFtcy93aW5lbWluZS9tYWluLmMsIHByb2dyYW1zL3dpbmVtaW5lL21haW4uaCwgcHJvZ3JhbXMvd2luZW1pbmUvcmVzb3VyY2UuaCwgcHJvZ3JhbXMvd2luZW1pbmUvcnNyYy5yYywgcHJvZ3JhbXMvd2luZW1pbmUvd2luZW1pbmUuc3BlYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglKb3NodWEgVGhpZWxlbiA8Zm96ZXlAbmV0emVyby5jb20+CglBZGRlZCB3aW5lbWluZSBhcHAuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUltcHJvdmVkIHRoZSB2aXN1YWwgYXBwZWFyZW5jZSBvZiB0aGUgdXNlciBpbnRlcmZhY2UuIE1hZGUgdGhlIGNvZGUKCXNvbWV3aGF0IHNpbXBsZXIuCgoyMDAwLTAzLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWM6CglXYWxkZWsgSGViaXNjaCA8aGViaXNjaEBtYXRoLnVuaS53cm9jLnBsPgoJSW1wbGVtZW50ZWQgX3JlYWQgYW5kIF9sc2Vlay4KCgkqIGRsbHMvd2luc29jay9zb2NrZXQuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3QgY29udmVyc2lvbiBvZiBsZXZlbCBwYXJhbWV0ZXIgaWYgV0lOU09DS19zZXRzb2Nrb3B0IGlzIGNhbGxlZAoJZm9yIG9wdGlvbiBXU19TT19ET05UTElOR0VSLgoKCSogb2JqZWN0cy9nZGlvYmouYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3Qgcm91bmRpbmcgb2YgdGhlIHJlc3VsdCBpbiBNdWxEaXYxNigpLgoKCSogZGxscy93aW5hc3BpL2FzcGkuYywgZGxscy93aW5hc3BpL3dpbmVzY3NpLmg6CglHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIEZyZWVCU0QgY29tcGlsYXRpb24uCgoJKiBkbGxzL2RwbGF5eC9NYWtlZmlsZS5pbiwgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5jLCBkbGxzL2RwbGF5eC9uYW1lX3NlcnZlci5oLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3RwbGF5OgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gTWFrZSByZWdpc3RyeSB1c2FnZSBhIGxpdHRsZSBtb3JlIGNvcnJlY3QgYW5kIG1vZGVybgoJLSBDcmVhdGUgaG9tZSBmb3IgYWxsIGRwbGF5IG5hbWUgc2VydmVyIGZ1bmN0aW9uYWxpdHkKCS0gQWRkIHRoZSBmcmFtZXdvcmsgZm9yIEVudW1TZXNzaW9ucwoJLSBEb2N1bWVudGF0aW9uIHVwZGF0ZQoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2F2aWZpbDMyL2F2aWZpbGUuYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaDoKCURpbWl0cmllIFBhdW4gPGRpbWlAYmlnZm9vdC5jb20+CglDbGVhbmVkIHVwIGRlYnVnIGNoYW5uZWxzIGEgYml0LgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUltcGxlbWVudGVkIHN0cmV0Y2hlZCBibHRzIGZvciBkZXB0aCAyNCAodW5vcHRpbWl6ZWQpLgoKMjAwMC0wMy0xMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYzogRml4ZWQgT1VUUFVUX0RFQlVHX1NUUklORyBwb2ludGVyIGhhbmRsaW5nLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIG1lbW9yeS92aXJ0dWFsLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglSZW1vdmVkIFBST0NFU1NfSXNDdXJyZW50KCkuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHMsIHdpbjMyL2V4Y2VwdC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJQWRkZWQgc3BlY2lmaWMgcm91dGluZXMgZm9yIE9VVFBVVF9ERUJVR19TVFJJTkcgYW5kIEVYQ0VQVElPTiBkZWJ1ZyBldmVudHMuCglHZW5lcmF0ZSBhIGJyZWFrcG9pbnQgZXZlbnQgb24gcHJvY2VzcyBhdHRhY2guCglNaXNjIGNsZWFudXBzIGluIHJlcXVlc3QgaGFuZGxpbmcuCgoyMDAwLTAzLTA5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL2RlYnVnZ2VyLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyByZWx5aW5nIG9uIGV4Y2VwdGlvbiBjb2RlcyB0byBrbm93IHdoZW4gZGVidWdnZXIgaXMgZW50ZXJlZCBmb3IgYQoJc2luZ2xlIHN0ZXAgdHJhcC4KCgkqIGRlYnVnZ2VyL3dpbmVkYmcuYywgbWlzY2VtdS9tYWluLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHByb2MgdG8gc3RhcnQgZGVidWdnaW5nIHByb2Nlc3MgZnJvbSBpdHMgY29tbWFuZCBsaW5lIChieSBsYXVuY2hpbmcgaXQpLgoKCSogZGVidWdnZXIvZXhwci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNsZWFudXAuCgoJKiBncmFwaGljcy9wc2Rydi9hZm0uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIEJsYWNrIGFzIGEgdmFsaWQgZm9udCB3ZWlnaHQuCglDb3BlIHdpdGggYWZtIGZpbGVzIHRoYXQgZG8gbm90IGNvbnRhaW4ge0ZhbWlseXxGdWxsfU5hbWUgZW50cmllcy4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMzIuYzogRGF2aWQgRWxsaW90dCA8ZGZlQG5ldG5pdGNvLm5ldD4KCS0gR290IHJpZCBvZiBQUk9GSUxFIGZ1bmN0aW9ucy4KCS0gVXNlIGZ1bmN0aW9uYWxpdHkgb2YgYXNwaS5jLgoJLSBBdXRvbWFnaWNhbGx5IHJlYWQgL3Byb2Mvc2NzaS9zY3NpIChwYXJ0IG9mIGFzcGkuYyB3aGljaCBpcyBhbHJlYWR5CgkgIGluIHRyZWUpLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglIYW5kbGUgMjQgYml0IERJQnMgPC0+IDI0IGJpdCBkZWVwLzI0IGJpdHMgcGVyIHBpeGVsIFhJbWFnZXMuCgoJKiBwcm9ncmFtcy92aWV3L2dsb2JhbHMuaDogTWlrZSBDYXN0bGUgPGRhbGdvZGFAaXgubmV0Y29tLm5ldD4KCUFkZGVkIHJlc291cmNlLmggaW5jbHVkZS4KCgkqIHdpbmRvd3MvcmVjdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlzUmVjdEVtcHR5IGFsc28gcmV0dXJucyB0cnVlIGZvciBuZWdhdGl2ZSB3aWR0aC9oZWlnaHRzICh2ZXJpZmllZAoJYWdhaW5zdCBXaW5kb3dzKSwgZm91bmQgYnkgQnJhZCBPbGl2ZXIgPGJyYWRtYW5AcG9ib3guY29tPi4KCgkqIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jOiBMYXdzb24gV2hpdG5leSA8bGF3c29uX3doaXRuZXlAanVuby5jb20+CglUYWtlIHR5cGUgZnJvbSByZWZlcmVuY2VkIHZhcmlhbnQgZm9yIFZUX0JZUkVGICYmIFZUX1ZBUklBTlQuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcHRyYWNlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvZWxmZGxsLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jOgoJU3RvcmUgdGhlIGxpc3Qgb2YgbG9hZGVkIGRsbHMgaW4gdGhlIHNlcnZlciwgYW5kIGdlbmVyYXRlIGRlYnVnIGV2ZW50cwoJaW50ZXJuYWxseS4KCjIwMDAtMDMtMDggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmM6CglBZGRlZCBzZXJ2ZXIgcHJvdG9jb2wgdmVyc2lvbiBjaGVjay4KCgkqIGluY2x1ZGUvYXNwaS5oLCBpbmNsdWRlL3dpbmFzcGkuaCwgaW5jbHVkZS93bmFzcGkzMi5oLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvZG9zYXNwaS5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS8uY3ZzaWdub3JlLCBkbGxzL3dpbmFzcGkvTWFrZWZpbGUuaW4sIGRsbHMvd2luYXNwaS9hc3BpLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93aW5hc3BpL3dpbmFzcGkzMi5jLCBkbGxzL3dpbmFzcGkvd2luZXNjc2kuaCwgZGxscy93aW5hc3BpL3duYXNwaTMyLnNwZWM6CglEYXZpZCBFbGxpb3R0IDxkZmVAbmV0bml0Y28ubmV0PgoJLSBTbGlnaHRseSByZXdvcmtlZCBpbmNsdWRlIGZpbGVzIChsZXNzIG1lc3N5LCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCkuCgktIE1vdmVkIERPUyBBU1BJIGZ1bmN0aW9uYWxpdHkgdG8gbXNkb3MvZG9zYXNwaS5jLgoJLSBHb3QgcmlkIHVzaW5nIFBST0ZJTEUgdG8gZ2V0IFNDU0kgaW5mbyBmcm9tIHdpbmUuY29uZi4KCS0gUmVhZCBzY3NpIGluZm8gZnJvbSAvcHJvYy9zY3NpL3Njc2kuCgktIEFkZGVkIHNldHRpbmcgb2YgYSByZWFzb25hYmxlIHRpbWVvdXQgd2hlbiBvcGVuaW5nIGEgU0NTSSBkZXZpY2UgKDUKCSAgbWludXRlcywgZGVmaW5lZCBpbiB3aW5lc2NzaS5oKS4KCS0gRXhlY1Njc2lDb21tYW5kIG5vdyBBTFdBWVMgcG9zdHMsIGV2ZW4gb24gZXJyb3IgKHdoaWNoIGlzIHRoZSBjb3JyZWN0CgkgIGJlaGF2aW9yKS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX1NrLnJjLCBkbGxzL2NvbW1kbGcvcnNyYy5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfU2sucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCByZXNvdXJjZXMvc3lzcmVzX1NrLnJjLCByZXNvdXJjZXMvdXNlcjMyLnJjOgoJU2ltZW4gWmFtZWNuaWsgPHNpbWVuQG5leHRyYS5zaz4KCUFkZGVkIFNsb3ZhayBsYW5ndWFnZSBzdXBwb3J0LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfSmEucmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCByZXNvdXJjZXMvLmN2c2lnbm9yZSwgcmVzb3VyY2VzL3N5c3Jlc19KYS5yYywgcmVzb3VyY2VzL3VzZXIzMi5yYywgZGxscy9jb21tZGxnL2NkbGdfSmEucmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjOgoJSnVuaWNoaSBLdWNoaW5pc2hpIDxqa3VjaGlAbWFob3JvYmEubmUuanA+CglBZGRlZCBzb21lIEphcGFuZXNlIHJlc291cmNlcy4KCgkqIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvb2xlMmltcGwuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYywgZGxscy9vbGUzMi9vbGVzdGQuaCwgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvd2luZXJyb3IuaDoKCUFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgT0xFIGNsaXBib2FyZCBmdW5jdGlvbmFsaXR5IGZvciBFbWJlZCBTb3VyY2UgZm9ybWF0LgoJSXQgaGVscHMgeW91IGN1dCBhbmQgcGFzdGUgZGF0YSB3aXRoIEVtYmVkIFNvdXJjZSBmb3JtYXQgYmV0d2VlbgoJYXBwbGljYXRpb25zLiAgSXQgYWxzbyBpbXBsZW1lbnRzIE9sZUNyZWF0ZUZyb21EYXRhIGFuZAoJT2xlUXVlcnlDcmVhdGVGcm9tRGF0YSBhbmQgZml4ZXMgc29tZSBidWdzIGluIGRhdGFjYWNoZS5jLgoKCSogbG9hZGVyL21vZHVsZS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+Cgl3bS0+bW9kbmFtZSBtaWdodCBiZSBpbnZhbGlkIGF0IHRoZSBlbmQgb2YgRnJlZUxpYnJhcnkuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIG1pc2MvZGVidWdzdHIuYywgbWlzYy9lcnJvci5jLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbWVudS5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGluY2x1ZGUvZGNlLmgsIGluY2x1ZGUvbWVudS5oLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS9ub25jbGllbnQuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgaW5jbHVkZS9zdHJ1Y3QzMi5oLCBpbmNsdWRlL3RocmVhZC5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnBvcy5oLCBsb2FkZXIvbW9kdWxlLmMsIGNvbnRyb2xzL2J1dHRvbi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIGEgbG90IG9mIHVubmVjZXNzYXJ5IGluY2x1ZGVzIGFuZCBmaXhlZCB0aGUgY29tcGlsZSBlcnJvcnMuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYywgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvc2hlbGwuaCwgbWVtb3J5L2dsb2JhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1pc2Mvd3NwcmludGYuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgd2FybmluZ3MuCgoJKiBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYzogTGF3c29uIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJQ29ycmVjdGVkIHZhbHVlIGZvciBEQVlTX0lOX09ORV9ZRUFSLgoKCSogZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJQ2xlYW5lZCB1cCBDUlRETExfX3VubGluay4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglUaGUgc3RhdGljIGNvbnRyb2wgb25seSBuZWVkcyB0byBpbnZhbGlkYXRlIGl0cyByZWN0IHdoZW4gd2UgU2V0VGV4dC4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCBtaXNjL3NweS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFkZGVkIGEgZmV3IG1lc3NhZ2VzIGZvciBJTUUuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kaXNwbGF5LmMsIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL21lbW9yeS5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGRlYnVnZ2VyL3dpbmVkYmcuYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9kZWJ1Z2dlci5oLCBtaXNjZW11L21haW4uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIGRpcmVjdGx5IGFjY2Vzc2luZyBkZWJ1Z2dlZSBtZW1vcnkuCglFeGVjdXRpb24gY29udGV4dCAobW9kZSwgc3RlcHMuLi4pIGFyZSBub3cgbGlua2VkIHRvIGEgdGhyZWFkLgoJUmVtb3ZlZCBzb21lIFgxMSBjcnN0IGhhY2tzLgoJUmV3cm90ZSBpbmZvL3dhbGsgY29tbWFuZHMuCglSZW1vdmVkIGRpcmVjdCBkZWJ1Z2dlciBpbnZvY2F0aW9uIGNvZGUgKGFuZCBtb3ZlZCB0aGUgcmVzdCB0byB0aGUgbmV3Cgl3aW5lZGJnLmMgZmlsZSkuCgoJKiBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2V4Y2VwdC5jLCB3aW4zMi9uZXdmbnMuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgbG9hZGVyL21vZHVsZS5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jOgoJUmVtb3ZlZCBQREIzMl9ERUJVR0dFRCBmbGFnIGFuZCBzZW5kIGFsbCBkZWJ1ZyBldmVudHMgdW5jb25kaXRpb25hbGx5LgoJSW1wbGVtZW50ZWQgSXNEZWJ1Z2dlclByZXNlbnQoKS4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUdlbmVyYXRlIENSRUFURV9QUk9DRVNTL1RIUkVBRCBkZWJ1ZyBldmVudHMgaW50ZXJuYWxseSBpbiB0aGUgc2VydmVyLgoKMjAwMC0wMy0wNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbjMyL01ha2VmaWxlLmluLCB3aW4zMi90aHJlYWQuYywgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglCZXR0ZXIgaW1wbGVtZW50YXRpb24gb2YgaW5saW5lIGZ1bmN0aW9ucyBTZXRMYXN0RXJyb3IgYW5kCglHZXRDdXJyZW50VGhyZWFkSWQuICBBZGRlZCBhc20gaW5saW5lcyBmb3IgSW50ZXJsb2NrZWQqIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgaW5jbHVkZS9udGRkay5oLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglBZGRlZCBEYmdCcmVha1BvaW50LiBGaXhlZCBleGNlcHRpb24gcmVjb3JkIGNvbnRlbnRzIG9uIFNJR1RSQVAuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUZpeGVkIHNlY29uZCBpbnN0YW5jZSBER1JPVVAgbG9hZGluZy4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCBtaXNjL21haW4uYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBTUElfR0VUSUNPTk1FVFJJQ1MuCglDaGFuZ2UgV0FSTiAtPiBGSVhNRSBmb3IgdW5pbXBsZW1lbnRlZCBTUElfcyBhbmQgc2V0IGFwcHJvcHJpYXRlIGVycm9yLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFjdHVhbCB3cml0ZSB0aGUgY2FjaGVkIHN0cnVjdCBpbiBHbG9iYWxNZW1vcnlTdGF0dXMuCgoJKiBkb2N1bWVudGF0aW9uL2ZvbnRzLCBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglJbmNsdWRlIGluIHRoZSBBZGRGb250UmVzb3VyY2VBL1cgZml4bWUgbWVzc2FnZSBhIHBvaW50ZXIgdG8gdGhlIGZvbnRzCglkb2N1bWVudC4gSW4gdGhpcyBkb2N1bWVudCB0ZWxsIHRoZSB1c2VyIGhvdyB0byBmaW5kIHRoZSBuZWVkZWQgdG9vbHMuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGQgYSBtZXNzYWdlIGFuZCBmaXggZXJyb3IgY29kZSBpZiBfX3dzX2dldHNlcnZieW5hbWUoKSBhbmQKCV9fd3NfZ2V0c2VydmJ5cG9ydCgpIGNhbm5vdCBmaW5kIHRoZSByZXF1ZXN0ZWQgc2VydmljZS4KCUZpeCBXSU5TT0NLX3NldHNvY2tvcHQoKSB3aGVuIGNhbGxlZCB3aXRoIG9wdHZhbCBwb2ludGluZyB0byAxNiBiaXQgaW50LgoKCSogZGxscy93aW5tbS9tbWlvLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUNoZWNrIGZvciBleGlzdGVuY2UgaWYgTU1JT19FWElTVCBpcyBwYXNzZWQgdG8gTU1JT19PcGVuLgoKCSogZGxscy9vbGUzMi9maWxlbW9uaWtlci5jOiBKZWZmIFRyYW50ZXIgPGplZmZ0QGNvcmVsLmNhPgoJVGhlIHBhdGhuYW1lIHdhcyBzdG9yZWQgaW4gYSBzdHJpbmcgb2Ygc2l6ZSAxMDAsIHdoaWNoIHdhcyBub3QgYWx3YXlzCglsYXJnZSBlbm91Z2guIEl0IHNob3VsZCBiZSBzZXQgdG8gTUFYX1BBVEggKDI1NSkuCgoJKiBsb2FkZXIvdGFzay5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVNldmVyYWwgZml4ZXMgdG8gTWFrZVByb2NJbnN0YW5jZS4KCjIwMDAtMDMtMDUgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvb2xlMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlY2xpL01ha2VmaWxlLmluLCBkbGxzL29sZXN2ci9NYWtlZmlsZS5pbiwgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2x6ZXhwYW5kL01ha2VmaWxlLmluLCBkbGxzL21zdmlkZW8vTWFrZWZpbGUuaW4sIGRsbHMvTWFrZWRsbC5ydWxlcy5pbjoKCUFkZGVkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGV4dHJhIHN5bWxpbmtzIGZvciAuc28gZmlsZXMgdGhhdCBjb250YWluCgltdWx0aXBsZSBkbGxzLgoKMjAwMC0wMy0wNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqICovTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy8uY3ZzaWdub3JlLCBkbGxzL01ha2VkbGwucnVsZXMuaW46CglNb3ZlZCBkbGwtc3BlY2lmaWMgbWFrZSBydWxlcyB0byBhIHNlcGFyYXRlIE1ha2VkbGwucnVsZXMgZmlsZS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogRml4ZWQgZXJyb3IgY2hlY2tpbmcgaW4gcmVnaXN0cnkgc2F2aW5nLgoKCSogZGxscy93aW5zb2NrL3NvY2tldC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdTQUNsZWFudXAgc2hvdWxkIHNldCBsYXN0IGVycm9yIHRvIFdTQU5PVElOSVRJQUxJU0VEIGlmIGZhaWxpbmcKCWJlY2F1c2UgV2luc29jayB3YXMgbm90IGluaXRpYWxpemVkLi4uCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvTG9hZExpYnJhcnkgZ2V0cyBVTklDT0RFLCBub3QgQVNDSUkgc3RyaW5ncy4gKHNwb3R0ZWQgYnkgTGF3c29uCglXaGl0bmV5KSwgcmVtb3ZlZCB0aGUgZGxsTmFtZSBjb21wb25lbnQgb2YgdGhlIG9wZW5EbGxzLiAgQWRkZWQgc29tZQoJZGVidWdzdHJfZ3VpZCgpLgoKCSogZGxscy9udGRsbC9udC5jOiBEYW4gU2NvdHQgPGRhbi5zY290dEBob21lLmNvbT4KCUZpeGVkIHR5cG9zIGluIF9hbGxkaXYoKSBhbmQgX2FsbG11bCgpLgoKCSogY29uZmlndXJlLmluLCBjb25maWd1cmU6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWVzc2FnZSBmb3IgbWlzc2luZyB4cG0gZGV2ZWwgbGlicyBmb3IgZGViaWFuL2NvcmVsLgoKCSogZGxscy9vbGUzMi9vbGUyLmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCU9sZVJlZ0dldFVzZXJUeXBlIGRpZCBxdWVyeSB3cm9uZyByZWdpc3RyeSBrZXkuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBhcHBsaWNhdGlvbnMgY2FsbCBHbG9iYWxNZW1vcnlTdGF0dXMoKSB2ZXJ5IG9mdGVuLiBDYWNoZSB0aGUKCXJlc3VsdHMgb2YgdGhlIGNhbGwgZm9yIDEgc2Vjb25kIChzcG90dGVkIGJ5IENvcmVsKS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJR2V0Q2xpcGJvYXJkRGF0YTE2IG1pZ2h0IHJldHVybiBhbiBpbnZhbGlkIGdsb2JhbCBoYW5kbGUgKHNwb3R0ZWQgYnkKCUNvcmVsKS4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogTGlsaWEgUm91bWlhbnRzZXZhCgljYkNvdW50U2l6ZU9mRW5oTWV0YWZpbGUgY2FsbGJhY2sgZnVuY3Rpb24gaW5zdGVhZCBvZiBpbmNyZWFzaW5nIGEKCWNvbnRlbnRzIG9mIHRoZSBwb2ludGVyIHRvIHRoZSBzaXplIGluY3JlYXNlZCB0aGUgcG9pbnRlciBpdHNlbGYuCgoJKiBkb2N1bWVudGF0aW9uL3BzZHJpdmVyOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggZG9jcyB0byByZWZsZWN0IGNoYW5nZSB0byAud2luZXJjIHByb2Nlc3NpbmcuCgoJKiB0b29scy93aW5laW5zdGFsbDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGNvdXBsZSBvZiBjb25maWcuY2FjaGUgcHJvYmxlbXMuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IFZhaGlkIFBvdXJsb3RmYWxpCglUcmFja2JhciBjb250b2wgZGlkIG5vdCBoYXZlIHByb3BlciBwb3NpdGlvbiB2YWx1ZSBpbiBjYXNlIG9mCglTQl9USFVNQlRSQUNLIG5vdGlmaWNhdGlvbiBtZXNzYWdlOiBpdCB3YXMgYWx3YXlzIHNlbmRpbmcgMC4KCglKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglNYWRlIHRoZSBzbGlkZXIgY29udHJvbCBhIHJlY3QuICBJdCBoYWQgYmVlbiB0cnlpbmcgdG8gZHJhdyBhIG5vdGNoZWQKCXNsaWRlciwgYnV0IHRoZSByZXN1bHQgZGlkbid0IGxvb2sgcmlnaHQuCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglNYWRlIFdJTlNPQ0tfc2V0c29ja29wdCBoYW5kbGUgb3B0aW9uIFNPX0RPTlRMSU5HRVIgY29ycmVjdGx5LgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJQ1VSU09SSUNPTl9JY29uVG9DdXJzb3I6IGluY29uc2lzdGVudCBMb2NrL1VubG9jawoKCSogZmlsZXMvcHJvZmlsZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglQUk9GSUxFX0dldFN0cmluZzogb25seSBhY2NlcHQgTlVMTCBmb3Iga2V5bmFtZSB0byByZXR1cm4gdGhlIGxpc3Qgb2YKCWtleXMgYXMgV2luOTUgZG9lcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogSm9lcmcgTWF5ZXIgPGptYXllckB0ZWxlc3VuMi50ZWxlbWF0aW9uLmRlPgoJRml4IGEgc2lnbiBidWcgd2hlcmUgbWVtY3B5IHdhcyBjYWxsZWQgd2l0aCBuZWdhdGl2ZSBsZW5ndGguCgoyMDAwLTAyLTI5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvcHJvZmlsZS5jOiBNYWtlIHByb2ZpbGUga2V5IGEgZ2xvYmFsIGhhbmRsZS4KCgkqIGRsbHMvd2luMzJzLy5jdnNpZ25vcmUsIGRsbHMvd2luMzJzL01ha2VmaWxlLmluLCBkbGxzL3dpbjMycy93MzJza2VybmVsLmMsIGRsbHMvd2luMzJzL3czMnNrcm5sLmMsIE1ha2UucnVsZXMuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglSZW5hbWVkIGxpYndpbjMycyB0byB1c2UgdGhlIHByb3BlciBkbGwgbmFtZSAobGlidzMyc2tybmwpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvaW1tMzIvaW1tLmMsIGRsbHMvbXNhY20zMi9kcml2ZXIuYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIG1zZG9zL2ludDIxLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CglSZW1vdmVkIHN1cGVyZmx1b3VzICNpbmNsdWRlIHN0YXRlbWVudHMgZm9yIGhlYWRlciBmaWxlcyBpbmNsdWRlZCB0d2ljZS4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJTWFrZSB1cGRvd24gY29udHJvbCB3b3JrLiBVcERvd24gY29udHJvbCBhbHdheXMgc2VuZHMgV01fKlNDUk9MTAoJbWVzc2FnZSBhbmQgdXNlcyBTQl9USFVNQlBPU0lUSU9OIGNvZGUgKG5vdCBTQl9MSU5FW1VQfERPV05dKS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgYmVoYXZpb3Igb2Ygc2VuZGluZyBXTV9DT05URVhUTUVOVSB3aGVuIHJlY2VpdmluZyBhCglXTV9SQlVUVE9OVVAuCgoJKiBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jOiBNdXJhbGkgUGF0dGF0aGUKCglUaGlzIGlzIHRoZSBwYXRjaCBmb3IgdGhlIE9sZUNvbnZlcnRPTEVTVFJFQU1Ub0lTdG9yYWdlIHdpbmUgQVBJLgoJVGhpcyBBUEkgY2FsbHMgYW5vdGhlciBmdW5jdGlvbiBjYWxsZWQgT0xFQ09OVkVSVF9Mb2FkT0xFMTAgd2hpY2gKCWJhc2ljYWxseSByZWFkIHRoZSBPTEUgc3RyZWFtIGZyb20gdGhlIGZpbGUgdGhyb3VnaCB0aGUgY2FsbGJhY2sKCWZ1bmN0aW9uICh0aGlzIGlzIHBhc3NlZCBieSB0aGUgYXBwbGljYXRpb24pLgoKCVRoZSByZWFkaW5nIGZvcm1hdCB3YXMgd3JvbmcuIFN0aWxsIEkgYW0gbm90IHZlcnkgc3VyZSB0aGlzIGlzIDEwMCAlCgljb3JyZWN0IGZvcm1hdC4gSSBkaWQgc29tZSByZXZlcnNlIGVuZ2luZWVyaW5nIGFuZCBmb3VuZCB0aGUgZm9ybWF0LiBJCgloYXZlIHRyaWVkIHdpdGggZGlmZmVyZW50IE9MRSBvYmplY3QgYW5kIGl0cyB3b3JrZWQgaW4gcGFyYWRveC4gSQoJaGF2ZW4ndCB0ZXN0ZWQgd2l0aCBhbnkgb3RoZXIgYXBwcy4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYywgZGxscy9vbGVhdXQzMi9zdHVicy5jLCBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBzb21lIHN0dWJzIGFuZCBhZGRlZCBmb3J3YXJkcyBpbiBvcmRlciB0byBtYWtlIGJvdGggd2luYXBpX2NoZWNrCglhbmQgY2hlY2tsaW5rIGhhcHB5LgoKCSogdG9vbHMvd2luYXBpX2NoZWNrLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIHRoZSByZXN0IG9mIHRoZSBBUEkgc3BlY2lmaWNhdGlvbiBmcm9tIHRoZSBnbG9iYWwgZmlsZSB0byB0aGUKCWxvY2FsIGZpbGVzLgoKMjAwMC0wMi0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIEFOTk9VTkNFLCBDaGFuZ2VMb2csIGluY2x1ZGUvdmVyc2lvbi5oOiBSZWxlYXNlIDIwMDAwMjI3LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoyMDAwLTAyLTI3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvaW5pdC5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXRDb21wdXRlck5hbWVBKCk6IGFkZGVkIHBhcmFtZXRlciBjaGVjayBsaWtlIFdpbjk1IGRvZXMuCgoJKiB0b29scy9idWlsZC5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gRml4ZWQgc29tZSBTb2xhcmlzIHNwZWNpZmljIGFzc2VtYmxlciBwcm9ibGVtcwoJLSBGaXhlZCBzb21lIG1pc3NpbmcgLnR5cGUgQGZ1bmN0aW9uIChoZWxwcyBkZWJ1Z2dpbmcgd2l0aCBkYngpCgktIEZpeGVkIGNvZGUgbmVlZGluZyBfX2F0dHJpYnV0ZV9fKChjb25zdHJ1Y3RvcikpX18gZm9yIG5vbi1HQ0MgRUxGIGNvbXBpbGVycwoJLSBGaXhlZCB1c2Ugb2YgemVybyB3aWR0aCBhcnJheXMgKEFOU0kgQyB2aW9sYXRpb24pCgktIEBHT1RPRkYgb24gU29sYXJpcyBkb2Vzbid0IHdvcmsgLSB1c2UgQEdPVCBhbmQgcmVkaXJlY3Rpb24gaW5zdGVhZAoKCSogbWVtb3J5L3NlbGVjdG9yLmMsIGluY2x1ZGUvc2VsZWN0b3JzLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgU29sYXJpcyBzcGVjaWZpYyBhc3NlbWJsZXIgcHJvYmxlbXMuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9udGRsbC5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGUzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9vbGVhdXQzMi5hcGk6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVwZGF0ZWQgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvZ2VucGF0Y2g6IFN0ZXZlbiBFbGxpb3R0IDxlbGxpb3RzbEBtaW5kc3ByaW5nLmNvbT4KCUFkZGVkIHV0aWxpdHkgdGhhdCBnZW5lcmF0ZXMgcGF0Y2hlcyBmb3Igc3VibWlzc2lvbiB0bwoJd2luZS1wYXRjaGVzQHdpbmVocS5jb20uCgoJKiBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglvbGVhdXQzMiBzaG91bGQgbm90IGltcG9ydCBmdW5jdGlvbnMgZnJvbSBvbGVwcm8zMi4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgaW5jbHVkZS9saXN0dmlldy5oOgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRG9uJ3QgZGlzcGxheSB0aGUgY29udGV4dCBtZW51IG9uIGEgZG91YmxlIGNsaWNrLgoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVNldCB0aGUgZm9udCBvbiB0aGUgZWRpdCBsYWJlbCBjb250cm9sIHRvIHRoYXQgdXNlZCBieSB0aGUgbGlzdHZpZXcKCWNvbnRyb2wuIEl0IGFsc28gdXNlcyB0ZXh0IG1ldHJpY3MgdG8gc2V0IGEgbW9yZSByZWFzb25hYmxlIGluaXRpYWwKCWVkaXQgY29udHJvbCBzaXplLgoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUhhbmRsZSBNX1NFVFJFRFJBVyBpbiBMaXN0Vmlldy4KCUZpeCB0byBFbnN1cmVWaXNpYmxlIHRvIGhhbmRsZSBzbWFsbCBhbmQgbGFyZ2UgaWNvbiBjb3JyZWN0bHkuCglBZGQgZWRpdCBsYWJlbCBmdW5jdGlvbm5hbGl0eSB0byB0aGUgbGlzdHZpZXcgYW5kIHRoZSBmaWxlIG9wZW4gZGlhbG9nLgoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVJlbGFzZURDIGluIENyZWF0ZUVkaXRMYWJlbC4KCglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglBZGQgZnVuY3Rpb25uYWxpdHkgdG8gY3JlYXRlIG5ldyBmb2xkZXIgaW4gdGhlIG9wZW4gZGlhbG9nLgoJQWRkIHN1cHBvcnQgZm9yIHJpZ2h0IGNsaWNrIG1lbnUgaW4gY29tbW9uIGZpbGUgZGlhbG9nLgoJTElTVFZJRVdfRW5kRWRpdGxhYmVsIGlzIG5vdyBoYW5kbGluZyBOT05MUFNUUl9URVhUQ0FMTEJBQ0sgbGlzdHZpZXcgaXRlbXMuCgoJU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglMSVNUVklFV19HZXRDb2x1bW5BIGZpeCAoZG8gbm90IGNvcHkgc3RyaW5nLCBwYXNzIHBvaW50ZXJzKS4KCglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJUHJldmVudGluZyBhIGRpdmlkZSBieSB6ZXJvIHdoZW4gaGFuZGxpbmcgTFZXX0VOU1VSRVZJU0lCTEUgbWVzc2FnZS4KCglEb24gS2VsbHkKCS1JbXBsZW1lbnRlZCB0aGUgc29ydGluZyBvbiBpbnNlcnQgb2YgaXRlbXMgaW50byBhIExpc3RWaWV3IGNvbnRyb2wKCSB3aXRoIGVpdGhlciBMVlNfU09SVEFTQ0VORElORyBvciBMVlNfU09SVERFU0NFTkRJTkcgc2V0LgoJLShoZWxwaW5nIGV2aWwgYXBwbGljYXRpb25zKTogc29tZXRpbWVzIG5vdCBzbyB3ZWxsIHN0cnVjdHVyZWQgYXBwcwoJIChQRlBJOTAsIGluIHRoaXMgY2FzZSkgd2lsbCBub3QgZnVsbHkgaW5pdGlhbGl6ZSBzdHJ1Y3RzLiAgSW4gdGhlIGNhc2UKCSBvZiB0aGUgTFZNX0dFVElURU0gbWVzc2FnZSB0aGUgYXBwIG1heSBoYXZlIG9ubHkgaW5pdGlhbGl6ZWQgdGhlIG1hc2sKCSBhbmQgaUl0ZW0gbWVtYmVycyBvZiB0aGUgc3RydWN0LiAgQWRkZWQgcHJvY2Vzc2luZyBvZiB0aGUgTFZJRl9QQVJBTQoJIG1hc2sgaW4gdGhlIGNhc2UgdGhhdCBpU3ViSXRlbSB3YXMgc2V0IGJ1dCBpcyBpbnZhbGlkL3VuaW5pdGlhbGl6ZWQuCgoJUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRml4IGZvciBoYW5kbGluZyBjb3JyZWN0bHkgdGhlIGNhbmNlbGxpbmcgbW9kZSBvZiB0aGUgRWRpdCBsYWJlbC4KCUZpeCB3aWR0aCBjYWxjdWxhdGlvbiBvZiB0aGUgZWRpdCBsYWJlbC4KCglQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIGJlaGF2aW9yIG9mIHNlbmRpbmcgV01fQ09OVEVYVE1FTlUgd2hlbiByZWNlaXZpbmcgYQoJV01fUkJVVFRPTlVQLgoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUZpeGVkIGEgcGFpbnRpbmcgcHJvYmxlbSB3aXRoIGxpc3R2aWV3IHdoZW4gdGhlIHZpZXcgY2hhbmdlcyBhbmQgYW4KCWVkaXQgbGFiZWwgaXMgYWN0aXZlLgoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUZpeGVkIGEgbm90aWZpY2F0aW9uIHByb2JsZW0gd2l0aCBsaXN0dmlldy4gT24gY3JlYXRpb24gaWYgdGhlIHVzZXIKCXNwZWNpZmllcyBhbiBpdGVtIHdpdGggZm9jdXMgYW5kL29yIHNlbGVjdGlvbiB3ZSBzaG91bGQgc2VuZCB0aGUKCXByb3BlciBub3RpZmljYXRpb24uIEluc2VydCB3YXMgcHJldmVudGluZyBMSVNUVklFV19TZXRJdGVtIGZyb20KCXNlZWluZyB0aGUgY2hhbmdlcyBhbmQgc2VuZGluZyB0aGUgbm90aWZpY2F0aW9uLgoKCU1ha2UgdGhlIGRyYXcgaXRlbSByZWN0YW5nbGUgY29uc2lzdGVudCB3aXRoIHRoZSBzZWxlY3Rpb24KCXJlY3RhbmdsZS4gVGhpcyBhbGxvd3MgdXMgdG8gY2xpY2sgb24gdGhlIGZvbGRlcnMgYW5kIGljb25zIGluIHRoZQoJZmlsZSBvcGVuIGRpYWxvZyBib3ggYW5kIHRoZSBpdGVtIGFjdHVhbGx5IGdldHMgc2VsZWN0ZWQuCgoJKiBmaWxlcy9kcml2ZS5jOiBQZXRyIFRvbWFzZWsgPHRvbWFzZWtAZXRmLmN1bmkuY3o+CgktIFdyaXRlIHNlcmlhbCBudW1iZXJzIHRvIHRoZSBkZXZpY2UgKEZBVCkKCS0gRFJJVkVfUmVhZFN1cGVyYmxvY2s6IGJldHRlciBjaGVja2luZyBmb3IgdGhlIEZBVCBmcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglHZXRGdWxsUGF0aE5hbWUgZml4ZXMuCgoyMDAwLTAyLTI2ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaCwgbWVtb3J5L3N0cmluZy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVkIGRlZmluaXRpb24gb2YgdGhlIFJ0bE1lbW9yeSBmdW5jdGlvbnMuIFVzZSBtYWNyb3MgaW50ZXJuYWxseSBhbmQKCWZvciBXaW5lbGliLCB1c2UgcmVhbCBmdW5jdGlvbnMgZm9yIGV4cG9ydHMgZnJvbSBudGRsbC4KCgkqIGluY2x1ZGUvb2xlMi5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVByb3RvdHlwZXMgT2xlSW5pdGlhbGl6ZSwgT2xlVW5pbml0aWFsaXplLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUFycmFuZ2VDdHJsUG9zaXRpb25zOiBmaXggZm9yIHVzZXItZGVmaW5lZCB0ZW1wbGF0ZSB3aXRoIG5vIHN0YzMyLgoKCSogY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lbnUuaCwgd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY29tPgoJU2VuZCBXTV9IRUxQIG1lc3NhZ2Ugd2hlbiBGMSBpcyBwcmVzc2VkLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBZdXhpIFpoYW5nIDx5dXhpQGNvcmVsLmNhPgoJSW4gdGhlIGxpc3Rib3gsIHdoZW4gdGhlIGxhc3QgaXRlbSBpcyBzZWxlY3RlZCBhbmQgZGVsZXRlZCwgaXQgc3RpbGwKCWFwcGVhcmVkIGluIHRoZSB3aW5kb3cuCgoJU2hlcmkgU3RlZXZlcyA8c2hlcmlAbWFjYWRhbWlhbi5jb20+CglJbiBMSVNUQk9YX1VwZGF0ZVNjcm9sbCgpLCBpZiB0aGUgbGlzdGJveCBkaWQgbm90IGhhdmUgdGhlIFdTX1NDUk9MTAoJc3R5bGUgaXQgd291bGQganVzdCByZXR1cm4uICBUaGlzIGxlZnQgdGhlIGhvcml6b250YWwgc2Nyb2xsIGJhcgoJdW5pbml0aWFsaXplZCBhbmQgaXQgd2FzIGFwcGVhcmluZyBhdCB0aGUgYm90dG9tIG9mIHRoZSBsaXN0Ym94IHdoZW4KCWl0IGRpZCBub3QgaGF2ZSB0by4KCglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jb20+CglMSVNUQk9YX1NldENvbHVtbldpZHRoIGFkZHMgZXh0cmEgMiBwaXhlbHMgdG8gdGhlIHBhc3NlZCBjb2x1bW4gd2lkdGgKCShpdCBzYXlzIGl0IGlzIGZvciBjb2x1bW4gbWFyZ2lucykuIE9idmlvdXNseSBpdCBpcyB3cm9uZywgYmVjYXVzZQoJbWFyZ2lucyBtdXN0IGJlIGludGVybmFsLgoKCSogZGxscy9vbGUzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGUzMi9lcnJvcmluZm8uYywgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9lcnJvcmluZm8uYzoKCUVycm9ySW5mbyBmdW5jdGlvbnMgbmVlZCB0byBiZSBpbiBvbGUzMiwgbm90IG9sZWF1dDMyLgoKCSogZGxscy9jcnRkbGwvd2NzdHJpbmcuYzogTW9yZSBwb3J0YWJsZSBDUlRETExfaXN3Y3R5cGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGRsbHMvc2hlbGwzMi9zaHZfaXRlbV9jbWVudS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hsZmlsZW9wLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJTW92ZWQgZmlsZSBmdW5jdGlvbnMgdG8gc2hsZmlsZW9wLmMKCU5ldyBTSEVMTF9EZWxldGVEaXJlY3RvcnlBCglVc2Ugc2hlbGwgbm90aWZpY2F0aW9ucy4KCUVuYWJsZWQgZmlsZSBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXggZm9yIE9wZW5JY29uLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTdHViIFBhdGhJc0RpcmVjdG9yeS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlcyBmb3IgU2hlbGxFeGVjdXRlRXguCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIGRsbHMvc2hlbGwzMi9jaGFuZ2Vub3RpZnkuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglCYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiBzaGVsbCBub3RpZmljYXRpb25zLgoKCSogZG9jdW1lbnRhdGlvbi9zaGVsbDMyOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVVwZGF0ZWQuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBXaW5lbGliIHR5cGVzLgoKCSogZGxscy9zaGVsbDMyL3NocmVzLnJjOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIGljb24gbm8gNCAob3BlbiBmb2xkZXIpLgoKCSogZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZWF1dDMyL01ha2VmaWxlLmluLCBkbGxzL29sZWF1dDMyL2Vycm9yaW5mby5jLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGluY2x1ZGUvb2xlYXV0by5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzdHVicyBmb3Ige0NyZWF0ZSxHZXQsU2V0fUVycm9ySW5mby4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJUmV0dXJuIGFuIGVycm9yIGluc3RlYWQgb2YgYSBzdWNjZXNzIGNvZGUgaW4gT2xlQ3JlYXRlIHN0dWIgZnVuY3Rpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBpbmNsdWRlL3RhYi5oOiBEb24gS2VsbHkKCUluIFdpbmRvd3MgUHJvcGVydHkgU2hlZXQgY2FuIGhhdmUgYW55IG1peCBvZiBpY29uLWxlc3MgdGFicyBhbmQgdGFicwoJd2l0aCBpY29ucy4gIEFkZHMgYSBjaGVjayB0byBzZWUgaWYgdGhlIGljb24gd2UncmUgYWRkaW5nIGlzIG5vbi1OVUxMCgkob3RoZXJ3aXNlIHJhbmRvbSBqdW5rIGZyb20gbWVtb3J5IGNhbiBiZSByZW5kZXJlZCkgd2hlbiB0aGUgYXBwbGljYXRpb24KCWhhcyBzcGVjaWZpZWQgdGhlIFBTUF9VU0VJQ09OSUQgZmxhZyBpcyBzZXQuICBDaGFuZ2VzIHRvIHRoZSBUYWIgY29udHJvbAoJdG8gb25seSByZW5kZXIgaWNvbnMgZm9yIHRhYnMgdGhhdCBoYXZlIHRoZSBUQ0lGX0lNQUdFIGZsYWcgc2V0CgkocHJldmlvdXNseSwgaWYgdGhlIGZsYWcgd2FzIHNldCB0aGUgZW50aXJlIGltYWdlIGxpc3Qgb2YgaWNvbnMgd2FzCglyZW5kZXJlZCkuCgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglGaXhlcyBmb3Igc29tZSB0YWIgY29udHJvbCBidWdzCgoJSGVubmluZyBIb2ZmbWFubgoJRml4ZWQgc29tZSB3aWR0aCBwcm9ibGVtIHdpdGggT1dORVJEUkFXIHRhYi4KCglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJVENNX0FESlVTVFJFQ1QgaXMgbm93IHJldHVybmluZyBjb25zaXN0YW50IGNvbXBhcmUgdG8gV2luZG93cy4KCglTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUZpeGVkIHByb2JsZW0gd2l0aCB0YWIgc2VsZWN0aW9uLiBXaGVuIHlvdSBzZWxlY3QgdGFiIGl0IGJlY2FtZXMgZmlyc3QKCXZpc2libGUgdGFiLiBOb3cgbGVmdG1vc3QgdmlzaWJsZSB0YWIgaXMgY2FsY3VsYXRlZCBwcm9wZXJseS4KCS0gQWRkZWQgY29kZSBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiB1cGRvd24gY29udHJvbC4KCS0gRm9yY2VkIHJlY2FsY3VsYXRpb24gb2YgdGFicycgY29vcmRpbmF0ZXMgd2hlbjoKCWEpIGFsbCBpdGVtcyBhcmUgZGVsZXRlZCwKCWIpIHdpbmRvdyBzdHlsZSBpcyBjYW5nZWQKCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglBZGRlZCBuZWNlc3NhcnkgZGVmaW5lcyBhbmQgc3RydWN0dXJlcyB0byBjb21waWxlIFdpbmVMaWIgYXBwcyB1c2luZwoJTUZDIDYuMCBoZWFkZXJzLgoJRml4ZWQgdHlwbyBpbiBUQ01fU0VUTUlOVEFCV0lEVEggY29uc3RhbnQuCgoJKiBjb250cm9scy9idXR0b24uYzogQmlsbCBKaW4gPGJpbGxqQGNvcmVsLmNhPgoJQml0bWFwIGJ1dHRvbnMgd2VyZSBub3QgcmVmcmVzaGVkIGNvcnJlY3RseS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCVRoaXMgcmV2ZXJ0cyBNYXR0cyBwYXRjaC4gIFRoZSBtZXNzYWdpbmcgbmVlZHMgZG91YmxlIGNoZWNraW5nLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy93MzJzY29tYi5jLCBtc2Rvcy9kcG1pLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHRvb2xzL2J1aWxkLmMsIHdpbjMyL2tlcm5lbDMyLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvbGlzdGJveC5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvc2VsZWN0b3JzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL21haW4uYzoKCUltcHJvdmVkIHRoZSBzZWxlY3RvciBnZXQvc2V0IGZ1bmN0aW9ucy4KCVN1cHBvcnQgQU5TSS1jb21wYXRpYmxlIGlubGluZSBhc20gKHdpdGggdGhlIGhlbHAgb2YgUGF0cmlrIFN0cmlkdmFsbCkuCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWFuaW0vTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpYXZpL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL21jaWNkYS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9tY2lzZXEvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWNpd2F2ZS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS9taWRpbWFwL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2F2aWZpbDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvbXN2aWRlby9NYWtlZmlsZS5pbiwgZGxscy9vbGVhdXQzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vTWFrZWZpbGUuaW4sIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluOgoJTWFkZSB3aW5tbSBhIHNlcGFyYXRlIHNoYXJlZCBsaWJyYXJ5LgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgdG9vbHMvYmluMnJlcy5jLCBpbmNsdWRlL3dpbmUvd2luZGVmMTYuaCwgbG9hZGVyL25lL3Jlc291cmNlLmMsIG1pc2MvcmVnaXN0cnkuYywgb2JqZWN0cy9kaWIuYywgb2xlL29sZTJubHMuYywgcHJvZ3JhbXMvY2xvY2svd2luY2xvY2suYywgZGxscy9zaGVsbDMyL2NoYW5nZW5vdGlmeS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2RwbG9iYnkuaCwgaW5jbHVkZS93aW5nZGkuaCwgZGxscy9kcGxheXgvZHBsb2JieS5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvb2RiYzMyL3Byb3h5b2RiYy5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBBTlNJIEMgdmlvbGF0aW9ucy4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBTb2xhcmlzIHNwZWNpZmljIGNvbXBpbGVyIGlzc3VlLgoKCSogZmlsZXMvZG9zX2ZzLmMsIHdpbjMyL2luaXQuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGRlYnVnIG1lc3NhZ2UgY3Jhc2hlcy4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBpbXBsZW1lbnQgRW51bU9iamVjdHMgYW5kIEdldFByb3BlcnR5IGZvciBNb3VzZSBhbmQgSm95c3RpY2sgZHJpdmVycwoJLSBpbXBsZW1lbnQgU2V0RGF0YUZvcm1hdCBmb3IgdGhlIE1vdXNlIGRyaXZlcgoKCSogZGxscy93aW5tbS9qb3lzdGljay8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL2pveXN0aWNrL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2pveXN0aWNrL2pveXN0aWNrLmMsIGRsbHMvd2lubW0vam95c3RpY2svam95c3RpY2suc3BlYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvbW1kZGsuaCwgd2luZG93cy9tZXNzYWdlLmMsIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL2pveXN0aWNrLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIGhhcmR3YXJlIHJlbGF0ZWQgaGFuZGxpbmcgdG8gZGxscy93aW5tbS9qb3lzdGljayBkcml2ZXIuCglHb3QgcmlkIG9mIGpveVNlbmRNZXNzYWdlcygpIGhhY2sgKG5vdyBpbXBsZW1lbnRhdGlvbiB3aXRoIGEgdGltZXIpLgoKMjAwMC0wMi0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvZGVidWdzdHIuYzoKCVJlbGVhc2UgdW51c2VkIHNwYWNlIGluIGRlYnVnIHN0cmluZ3MgdG8gYXZvaWQgdG9vIGZyZXF1ZW50Cgl3cmFwLWFyb3VuZHMgaW4gdGhlIGNpcmN1bGFyIGJ1ZmZlci4KCgkqIGRsbHMvb2xlYXV0MzIvTWFrZWZpbGUuaW46IEFkZGVkIGltcG9ydCBvZiBvbGVwcm8zMi4KCgkqIHdpbmVkZWZhdWx0LnJlZzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBPTEUgZW50cmllcyBhbmQgY29tbWVudHMuCgoJKiBvbGUvbmxzL2pwbi5ubHM6IEhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglKYXBhbmVzZSBzdXBwb3J0IGltcGxlbWVudGVkLgoKCSogb2xlL29sZTJubHMuYzogU3RldmVuIEVsbGlvdHQgPGVsbGlvdHNsQG1pbmRzcHJpbmcuY29tPgoJU3R1YmJlZCBvdXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIExDTUFQX1NPUlRLRVkgaW4gTENNYXBTdHJpbmdXKCkgaW4KCW9yZGVyIHRvIGFsbG93IFdpbmRvd3MgOXggUGVybCB0byBzdGFydC4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglUaGlzIHBhdGNoIGluaXRpYWxpemVzIHRoZSByZXR1cm4gYnVmZmVyIHVzZWQgaW4gR2V0UHJpbnRlckRyaXZlckEgdG8KCXplcm9zLiBUaGlzIHByZXZlbnRzIGJ1ZmZlciBvdmVycnVucyBjYXVzZWQgYnkgYWNjZXNzaW5nIGdhcmJhZ2UgZGF0YS4KCVNvbWUgaW1wcm92ZW1lbnRzIHRvIHRoZSBOVUxMIGNoZWNrIHBhdGNoLgoKCUdhdXRhbSBKYWluCglFbnVtUHJpbnRlcnMgaXMgbm90IHJldHVybmluZyB0aGUgbnVtYmVyIG9mIHByaW50ZXJzIGZvdW5kIGluIGNhc2UgdGhlCglwYXJhbWV0ZXIgZHdMZXZlbCBpcyAxLgoKCSogZGxscy9udGRsbC9yZWcuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglEbyBub3Qgb3ZlcndyaXRlIHRoZSB2YWxpZCBPYmplY3RBdHRyaWJ1dGVzLT5Sb290RGlyZWN0b3J5LgoJUGVyZm9ybSBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gZm9yIHRoZSByZWdpc3RyeSBwYXRocy4KCgkqIGluY2x1ZGUvbnRkZGsuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGRlZCBwcm90b3R5cGVzIGZvciByZWdpc3RyeSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5ubHMuaDoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTW92ZSBkZWZpbml0aW9uIG9mIENQSU5GTyBzdHJ1Y3R1cmUgZnJvbSB3aW5iYXNlLmggdG8gd2lubmxzLmgKCUFkZCBkZWZpbml0aW9uIG9mIENQSU5GT0VYIHN0cnVjdHVyZSB0byB3aW5ubHMuaAoKCSogaW5jbHVkZS9jcnRkbGwuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGQgcHJvdG90eXBlIGZvciBDUlRETExfd2NzdG9sLgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEhpZGVub3JpIFRha2VzaGltYSA8aGlkZW5vcmlAYTIuY3RrdHYubmUuanA+CglGaXggZm9yIHRvb2xiYXIgYnV0dG9uIHNpemUuCgoJKiBtaXNjL2xzdHIuYzogSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCUZpeGVkIENoYXJOZXh0QS9DaGFyTmV4dEV4QSBmb3IgREJDUy4KCgkqIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy94MTFkcnYvbW9uaXRvci5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIG1pc2MvY29tbS5jLCBvbGUvb2xlMm5scy5jLCByZWxheTMyL3Nub29wLmMsIHRvb2xzL2J1aWxkLmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsIGdyYXBoaWNzL2RkcmF3LmM6CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAV1BJLkVEVT4KCU1pc2MuIGZpeGVzIGZvciBjb21waWxlciB3YXJuaW5ncy4KCgkqIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5jLCBkbGxzL29sZTMyL3N0b3JhZ2UzMi5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZXJyb3IuaDoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIE9sZUNvbnZlcnQgcm91dGluZXMuCgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglEb24ndCBhbGxvdyB0byByZXNpemUgc3RyZWFtIG9wZW4gaW4gcmVhZCBvbmx5IG1vZGUKCUFsbG93IHdyaXRlIGFjY2VzcyBmb3Igc3RyZWFtL3N0b3JhZ2Ugb3BlbiB3aXRoIFNUR01fUkVBRFdSSVRFLgoJU3RnT3BlblN0b3JhZ2UgcmV0dXJuIHZhbHVlcyBhcmUgbm93IG1vcmUgZGV0YWlsZWQuCglEb24ndCByZWx5IG9uIFNUR01fQ1JFQVRFIGZsYWcgaW4gdGhlIFN0b3JhZ2UgY29uc3RydWN0b3IuCglQcmV2ZW50aW5nIHRvIHdyaXRlIG91dCBvZiBkYXRlIHByb3BlcnR5LgoKCU93ZW4gV2FuZyA8b3dlbndAY29yZWwuY2E+CglBbGxvdyBib3RoIHBvc2l0aXZlICYgbmVnYXRpdmUgMzItYml0IGludGVnZXJzIGFzIHdpdGggTUZDIGFzc3VtcHRpb24uCglUaGlzIHBhdGNoIGltcHJvdmVzIHRoZSAzMmJpdCBsaW1pdCBvbiBJU3RyZWFtOjoqX1NlZWsgb3BlcmF0aW9ucy4KCglKb2huIExpIDxqb2hubEBjb3JlbC5jYT4KCVdoZW4gV1Agb3BlbnMgYSBsaW5rZWQgZmlsZSwgdGhlIG1hbGxvYyBmdW5jdGlvbiBpbgoJT0xFQ09OVkVSVF9Mb2FkT0xFMTAoLi4uKSByZXR1cm5zIGEgTlVMTC4gVGhpcyBjYXVzZXMgYSBsYXRlciBXaW5lCgljcmFzaC4gVGhlIGFjdHVhbCBwcm9ibGVtIGlzIHRoZSBmdW5jdGlvbiByZWFkaW5nIGEgbGFyZ2UgZGF0YSBsZW5ndGguCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgc29tZSBsb2NhbCBmdW5jdGlvbnMgc3RhdGljLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3ZlZCBzb21lIG9mIHRoZSBBUEkgc3BlY2lmaWNhdGlvbiBmcm9tIHRoZSBnbG9iYWwgZmlsZSB0byB0aGUgbG9jYWwKCWZpbGVzLgoKCSogZGxscy9tb3VzZS9tb3VzZV9tYWluLmMsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy90dHlkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvbW91c2UuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akBXUEkuRURVPgoJQmV0dGVyIHRocmVhZCBzYWZldHkgZm9yIFdhcnBQb2ludGVyIGhhY2suCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgQWRkQWNjZXNzQWxsb3dlZEFjZS4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTb21lIG1vcmUgTGlzdFZpZXdfIG1hY3Jvcywgd2luZWxpYiBmaXhlcy4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZpeGVkIGFsbG9jYXRpb24gb2YgMTZ4MTYgaWNvbnMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUZvciB1bmljb2RlOiBnaXZlIHRoZSBzZWxlY3RlZCBmaWxlbmFtZSBiYWNrLgoKCSogdG9vbHMvd2luZWluc3RhbGw6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2hlY2sgZm9yIFhwbSBoZWFkZXJzIGFuZCBhZGQgL3Vzci9sb2NhbC9saWIgdG8gL2V0Yy9sZC5zby5jb25mIGlmCgluZWNlc3NhcnkuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IFNlcmdlIEl2YW5vdiA8c2VyZ2VpQGNvcmVsLmNhPgoJV2UgZG9uJ3QgbmVlZCB0byBjYWxsIExQdG9EUCBpbiBoZXJlIGFzIGZhciBhcyBQYXRCbHQgZG9lcyBpdCBpbnRlcm5hbGx5LgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY2E+CglJbiBXaW5kb3dzLCBpZiBQcm9wZXJ0eVNoZWV0IGNhbid0IGNyZWF0ZSBzb21lIHBhZ2UgaXQganVzdCBza2lwcyBpdC4gVGhpcwoJcGF0Y2ggYWRkcyBzaW1pbGFyIGJlaGF2aW91ciB0byBXaW5lLiBJdCBhbHNvIGFkZHMgc29tZSBOVUxMIGNoZWNrcy4KCgk8eXV4aUBjb3JlbC5jb20+CglGaXggcHJvcGVydHkgc2hlZXQgaW5pdGlhbGl6YXRpb24gYnVncy4KCglNYXR0aGV3IFJvYmVydHNvbgoJVGhlIHRlbXBsYXRlIHdhcyBjYWxsaW5nIEdldEFjdGl2ZUluZGV4IHdoaWNoIHdhcyBub3QgYmVpbmcgc2V0IGluIHRoZQoJcHJvcHNoZWV0IGNvZGUsIGFuZCB0aGUgY2FsbCB3YXMgbW92ZWQgYmVmb3JlIHdlIGNhbGwgU2V0QWN0aXZlIC0KCWJlY2F1c2UgdGhhdCdzIHdoZXJlIHdlIHF1ZXJ5IGZvciB0aGUgQWN0aXZlIEluZGV4LgoKCU5vb21lbiBIYW16YQoJUmVzaXplIHByb3BlcnR5IHNoZWV0IHRvIHRoZSBsYXJnZXN0IGRpYWxvZyBzaXplLgoKCURvbiBLZWxseQoJSW4gdGhlIFdNX0lOSVRESUFMT0cgaGFuZGxlciBmb3IgdGhlIHByb3Agc2hlZXQsIHRoZXJlIGlzIGEgY2FsbCB0bwoJUFJPUFNIRUVUX0lzVG9vU21hbGwoKSB3aGljaCwgaWYgaXQgcmV0dXJucyBUUlVFLCBjYWxscwoJUFJPUFNIRUVUX0FkanVzdFNpemUoKS4gIENvbnRyYXJ5IHRvIGl0cyBjb21tZW50LCAuLl9BZGp1c3RTaXplKCkgYWN0dWFsbHkKCWFsaWducyB0aGUgc2l6ZXMgb2YgdGhlICJsYXJnZXN0IiBwcm9wLiBzaGVldCBkaWFsb2cgdGVtcGxhdGUgYW5kIHRoZSB0YWIKCWNvbnRyb2wuICBUaGUgSXNUb29TbWFsbCgpIGNhbGwgZG9lc24ndCBwcm9wZXJseSBjYXRjaCB0aGlzIG1pc21hdGNoLgoJTW9kaWZpZWQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBUUlVFIGlmIHRoZSBzaXplcyBtaXNtYXRjaCBhbmQgcmVuYW1lZCBpdCB0bwoJUFJPUFNIRUVUX1NpemVNaXNtYXRjaCgpIHRvIHJlZmxlY3QgaXRzIHByb3BlciB1c2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdlIGRlZmluZSBQYXRoSVNVUkxBLCBzbyB1c2UgaXQuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBTZXJnZSBJdmFub3YgPHNlcmdlaUBjb3JlbC5jYT4KCUluIGZ1bmN0aW9uIElNQUdFTElTVF9JbnRlcm5hbERyYXdNYXNrIHdlIGhhdmUgdG8gbWFzayBvdXQgb3ZlcmxheSBtYXNrIGluCglmU3R5bGUuIE90aGVyd2lzZSBjb21wYXJpc29uIGZTdHlsZSA9PSBJTERfTk9STUFMIHdpbGwgbm90IHdvcmssIHdoaWNoIGxlYWRzCgl0byBpbXByb3BlciBkaXNwbGF5IG9mIG92ZXJsYXkgaW1hZ2VzLgoKCSogd2luZG93cy93aW4uYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJQVRPTXMgYXJlIGNvbnNpZGVyZWQgdW5pcXVlLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIGNsYXNzCglwb2ludGVycyBpbiBGaW5kV2luZG93LgoKCSogb2JqZWN0cy9yZWdpb24uYzogU2VyZ2UgSXZhbm92IDxzZXJnZWlAY29yZWwuY29tPgoJTm90IGFsbCByZWdpb24gZnVuY3Rpb25zIHVwZGF0ZWQgJ3R5cGUnIGZpZWxkIHRvIHJlZmxlY3QgY3VycmVudAoJcmVnaW9uIHN0YXRlLgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLnJjLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOgoJRXJpYyBXaWxsaWFtcyA8ZXdpbGxAbmNhbC52ZXJpby5jb20+CglNaW5vciBmaXh1cHMgYW5kIHR3ZWFraW5nLCBhbmQgYSBkdW1teSBob29rLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglGaXhlZCBoYW5kbGluZyBvZiBmaWxlZGxnIGZsYWdzLgoKMjAwMC0wMi0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgRklYTUUgY29tbWVudCBmb3IgZW50cnkgcG9pbnQgcGFyYW1ldGVyLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBzdHViIGZvciBPTEUzMi5Na1BhcnNlRGlzcGxheU5hbWUKCS0gc3BlbGxpbmcgZml4ZXMKCgkqIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3Mvd2luLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gZml4ZWQgbXkgc2xpZ2h0bHkgaW5jb3JyZWN0IEVuZERpYWxvZyBwYXRjaAoJLSBjbGVhbmVkIHVwIHdpbi5jCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9jb21jdGwzMi90YWIuYywgd2luZG93cy93aW5wcm9jLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVNwZWxsaW5nIGZpeGVzLgoKCSogZGxscy9kc291bmQvZHNvdW5kX21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIHRoZSBidWZmZXIgbGlzdCBpbiB0aGUgZGlyZWN0c291bmQgb2JqZWN0IHRocmVhZC1zYWZlLgoKCSogbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUl0IHNlZW1zIHRvIGJlIEdldE1vZHVsZUZpbGVOYW1lMTYgdGhhdCBjaGVja3MgZXhlIHZlcnNpb24gb24gd2hldGhlcgoJdG8gcmV0dXJuIGxvbmcgb3Igc2hvcnQgcGF0aHMsIG5vdCBHZXRNb2R1bGVGaWxlTmFtZUEuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUF2b2lkIHRvbyBtdWNoIHJlZnJlc2hpbmcgd2hlbiBjaGFuZ2luZyB0aGUgZHJpdmUgaW4gdGhlIDE2IGJpdHMgZmlsZQoJZGlhbG9nLgoKCSogZmlsZXMvZG9zX2ZzLmM6IFBldHIgVG9tYXNlayA8dG9tYXNla0BldGYuY3VuaS5jej4KCUdldExvbmdQYXRoTmFtZSByZXdyaXRlLgoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBkbGxzL2NvbW1kbGcvZmlsZXRpdGxlLmM6CglDb3JlbCBtZXJnZToKCglQaWVycmUgTWFnZWF1CglEb24ndCB1cGRhdGUgdGhlIGNvbWJvIGJveCBzZWxlY3Rpb24gd2hlbiBjbG9zaW5nIHRoZSBkaWFsb2cgb25seSB3aGVuCgljbGlja2luZyBvbiBPSyBidXR0b24uICBBZGp1c3QgZmlsZSBkaWFsb2cgc2l6ZSB3aGVuIGhlbHAgYnV0dG9uIGlzbid0CglwcmVzZW50LgoKCURvbiBLZWxseS4KCUZpeGVzIHByb2JsZW1zIHdpdGggb3BlbiBkaWFsb2cgYm94IGZpbHRlcnMuCgoJVWxyaWNoIEN6ZWthbGxhCglQcmV2ZW50cyB0aGUgaGVscCBidXR0b24gZnJvbSBkaXNwbGF5aW5nIG9uIE9wZW5GaWxlIGRpYWxvZ3MgdW5sZXNzCgl0aGUgcHJvcGVyIGZsYWcgaXMgc2V0IGluIHRoZSBPUEVORklMRU5BTUUgc3RydWN0LgoKCVl1eGkgWmhhbmcKCUZpeGVkIG1lbW9yeSBsZWFrLgoKCUplYW4tQ2xhdWRlIEJhdGlzdGEKCUFkZCB0b29sdGlwcyB0byB0aGUgZmlsZSBEaWFsb2cgdG9vbGJhci4KCglTeWx2YWluIEJvdWNoYXJkLCBCaWxsIEppbgoJVGhyZWUgbmV3IGZ1bmN0aW9ucwoJRW51bVNlbGVjdGVkUGlkbHMsIEdldE51bVNlbGVjdGVkLCBGSUxFRExHOTVfT25PcGVuVXNpbmdWaWV3OiBjb3JyZWN0aW9ucwoJSW5zdGVhZCBvZiBwYXNzaW5nIGluIGEgY29weSBvZiBvZm4sIHBhc3NpbmcgaW4gdGhlIHBvaW50ZXIgb2Ygb2ZuLgoKCURhdmlkIEdvbGRpbmcKCUEgIiEiIHdhcyBtaXNzaW5nIGluIGEgY2hlY2sgYWdhaW5zdCBscHN0ckluaXRpYWxEaXIuCgoJUmljayBNdXR6a2UKCUZpeGVkIGNyYXNoOiBpZiBkaWFsb2cgaGFzIG5vIGZpbGV0eXBlcyBhcHBlYXJpbmcgaW4gdGhlIGRyb3Bkb3duIGxpc3QuCgoJTWF0dCBSb2JlcnRzb24sIFVscmljaCBDemVrYWxsYQoJRml4ZWQgcHJvYmxlbXMgb2NjdXJyaW5nIHdpdGggc2VsZWN0aW9uIG9mIGZpbGVzIGluc2lkZSBvcGVuZmlsZWRsZy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBhY3RpdmF0ZWQgdXNlIG9mIHRlbXBsYXRlcwoJLSBtb3ZlZCB0aGUgY3JlYXRpbmcgb2YgbmV3IGZvbGRlcnMgdG8gdGhlIHNoZWxsdmlldwoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVN0YXJ0ZWQgd2l0aCBzaGVsbC1jbGlwYm9hcmQgaGFuZGxpbmcgKGNvbnRleHQgbWVudSBjdXQmcGFzdGUsCglkcmFnJmRyb3ApLgoKCSogZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJUmVtb3ZlZCBJdGVtSURMaXN0TGlzdCwgcmVvcmdhbmlzYXRpb24sIG1vcmUgZm9ybWF0cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBpbXBsZW1lbnRlZCByZW5hbWUsIGNvcHkgYW5kIGRlbGV0ZSBmaWxlCgktICJuZXcgZmlsZSIgaXMgYWN0aXZhdGluZyBsYWJlbCBlZGl0IGZvciByZW5hbWUKCS0gaW1wbGVtZW50ZWQgSVNoZWxsVmlld19TZWxlY3RJdGVtCgoJKiBkbGxzL3NoZWxsMzIvc2hyZXMucmMsIGRsbHMvc2hlbGwzMi9zaHJlc2RlZi5oLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUJldHRlciBjb250ZXh0IG1lbnVzLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY2xpcGJvYXJkLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvc2h2X2l0ZW1fY21lbnUuYywgaW5jbHVkZS93aW5lL29ial9jb250ZXh0bWVudS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBpbmNsdWRlL3dpbmUvdW5kb2NzaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIG5ldyBmaWxlcyByZWxhdGVkIHRvIGNvbnRleHQgbWVudSBhbmQgZHJhZyBkcm9wIGZpbGUgb3BlcmF0aW9ucwoJLSByZW5kZXIgZnVuY3Rpb25zIGZvciBjbGlwYm9hcmRmb3JtYXRzCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOiBTdGVwaGFuZSBMdXNzaWVyCglJbXBsZW1lbnRlZCBQYXRoSXNVUkxBIGFuZCBtb2RpZmllZCBTaGVsbEV4ZWN1dGUxNiB0byBiZSBhYmxlIHRvIGxvYWQgVVJMCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvY2hhbmdlbm90aWZ5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hlbGxhcGkuaCwgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU3RhcnRlZCBpbXBsZW1lbnRhdGlvbiBvZiBzaGVsbCBub3RpZmljYXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3NobGZpbGVvcC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglOZXcgZmlsZSAoU0hGaWxlT3BlcmF0aW9uKS4KCgkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJRml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxmb2xkZXIuaCwgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIG5ldyBpbnRlcm5hbCBpbnRlcmZhY2UgZm9yIGl0ZW0gbWFuaXB1bGF0aW9uIChjdXQvcGFzdGUvbmV3IGZvbGRlci9kZWxldGUvcmVuYW1lKQoJLSBpbXBsZW1lbnRlZCBJUGVyc2lzdEZvbGRlcjIgaW50ZXJmYWNlCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglOZXcgYVBpZGwgaGFuZGxpbmcgZnVuY3Rpb25zLgoKCSogbWlzYy9tYWluLmM6IEF2b2lkIGNyYXNoIG9uIHVzYWdlIG1lc3NhZ2UuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6IEF2b2lkIGNyYXNoIG9uIE5VTEwgZGF0YSBwb2ludGVyLgoKCSogZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBzdHViIGZvciBSdGxBc3NlcnQoKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglIaWRlbm9yaSBUYWtlc2hpbWEgPGhpZGVub3JpQGEyLmN0a3R2Lm5lLmpwPgoJQWRkZWQgSmFwYW5lc2UganAxMDYgYW5kIHBjOTh4MSBrZXlib2FyZCBsYXlvdXQuCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUdvdCByaWQgb2YgUFJPRklMRV8gZnVuY3Rpb25zLCBub3cgYWNjZXNzaW5nIFdpbmUgY29uZmlnIG9wdGlvbnMKCXRocm91Z2ggdGhlIHJlZ2lzdHJ5LgoKCSogZmlsZXMvcHJvZmlsZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdoaWxlIGNyZWF0aW5nIHRoZSB3aW5lIGNvbmZpZyBrZXksIG1ha2Ugc3VyZSB0aGF0IG9ubHkgV2luZSdzIHN1YmtleXMKCWFyZSB2b2xhdGlsZS4KCgkqIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBOVUxMIHB0ciBpbiBQU0RSVl9HZXREZXZpY2VDYXBhYmlsaXRpZXMuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgYSBiaXQgbWFnaWMgdG8gQ09OU09MRV9nZXRfaW5wdXQgc28gd2UgZG9uJ3QgZ2V0IHNpbmdsZSBFc2NhcGVzCglmcm9tIGZ1bmN0aW9uIGtleSBlc2NhcGUgc2VxdWVuY2VzLgoKMjAwMC0wMi0xOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9hdG9tLmM6IEJ1ZyBmaXggZm9yIG5hdGl2ZSBVU0VSLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jLCB3aW5lLmluaToKCUhhcmQtY29kZWQgRGxsUGFpcnMgY29uZmlndXJhdGlvbjsgdGhlcmUgaXMgbm8gbmVlZCBmb3IgdGhlIHVzZXIgdG8KCWNoYW5nZSBpdC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2FmbS5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS9jb25zb2xlLmgsIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG1pc2MvdmVyc2lvbi5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb25zb2xlL2ludGVyZmFjZS5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLmluLCBmaWxlcy9wcm9maWxlLmM6CglTdG9yZSBjb25maWcgZmlsZSBjb250ZW50cyBpbiB0aGUgcmVnaXN0cnkgc28gd2Ugb25seSBoYXZlIHRvIGxvYWQgaXQKCW9uY2UgcGVyIHNlc3Npb24uCglSZXBsYWNlZCBQUk9GSUxFX0VudW1lcmF0ZVdpbmVJbmlTZWN0aW9uIGJ5IFBST0ZJTEVfRW51bVdpbmVJbmlTdHJpbmcuCglSZW1vdmVkIGEgZmV3IHVubmVjZXNzYXJ5L3VudXNlZCBjb21tYW5kLWxpbmUgb3B0aW9ucy4KCjIwMDAtMDItMTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvc2VydmVyLmg6CglTdG9yZSB0aGUgaGFuZGxlIG9mIHRoZSBwcm9jZXNzIGV4ZSBmaWxlIGluIHRoZSBzZXJ2ZXIuCglSZW1vdmVkIFBST0NFU1NfSW5pdGlhbCgpLgoKCSogZGxscy9vbGVhdXQzMi92YXJpYW50LmM6IE93ZW4gV2FuZyA8b3dlbndAY29yZWwuY29tPgoJU2V0IHRoZSB0eXBlIG9mIFZhckJzdHJGcm9tRGF0ZSB0byBkd0ZsYWdzLCBpbnN0ZWFkIG9mIGxjaWQuCgoJVWxyaWNoIEN6ZWthbGxhICA8dWxyaWNoY0Bjb3JlbC5jYT4KCUZpeGVkIHRoZSBwcm9ibGVtIHdpdGggdGhlIGRhdGUgYmVpbmcgb2ZmIGJ5IG9uZS4KCglQZXRhciBEanVraWMKCVZhcmlhbnRDb3B5IHdhcyBpZ25vcmluZyBWVF9ESVNQQVRDSCxWVF9VTktOT1dOLCBhbmQgVlRfVkFSSUFOVC4gU2FtZQoJd2l0aCBWYXJpYW50Q2xlYXIuCglDb2VyY2UgZnVuY3Rpb24gZG9lc24ndCBpbXBsZW1lbnQgY29lcmNpb24gZm9yIFZUX0RJU1BBVENIIHR5cGUuCgoJKiBpZjE2MzIvZ2RpLnNwZWMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3VzZXIuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQvY29ycmVjdGVkIG9yZGluYWxzIG9mIGtlcm5lbCwgZ2RpLCB1c2VyLgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglQb3B1cCB3aW5kb3dzIHdpbGwgYmUgaGlkZGVuIHdoZW4gbWluaW1pemluZyB0aGUgbWFpbiBmcmFtZS4KCgkqIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuaDoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPiAoZm9yIENvcmVsKQoJQ2hhbmdlZCB0aGUgbG9hZGluZyBvZiB0eXBlbGliIGZpbGVzIHRvIHVzZSBhIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQKCW9mIHJlYWRpbmcgdGhlIGZpbGUgYml0IGJ5IGJpdC4KCgkqIGZpbGVzL2RyaXZlLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRFJJVkVfRmluZERyaXZlUm9vdCgpIGFsd2F5cyBjaGVja2VkIGZyb20gZHJpdmUgQTogdG8gWjogZm9yIGVhY2gKCXBhdGggY29tcG9uZW50IGV2ZW4gaWYgYSBtYXRjaCBhbHJlYWR5IG9jY3VycmVkLgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHByb3RvdHlwZSBmb3IgT2xlVHJhbnNsYXRlQ29sb3IuCgoJKiBmaWxlcy9maWxlLmM6IE1hdHRoZXcgQ2xpbmUgPG1hdHRAbmlnaHRyZWFsbXMuY29tPgoJQWRkZWQgV0FSTiBtZXNzYWdlcyBvbiBvcGVuIGVycm9ycy4KCgkqIG1pc2Mvd3NwcmludGYuYzogSGlkZW5vcmkgVGFrZXNoaW1hIDxoaWRlbm9yaUBhMi5jdGt0di5uZS5qcD4KCVRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGJ1ZmZlciBpcyAxMDI0IGJ5dGVzIGluIFdpbjMyLgoKMjAwMC0wMi0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvc25vb3AuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvcmVnaW9uLmgsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL25lL21vZHVsZS5jLCBtaXNjL2RkZW1sLmMsIG1pc2MvdG9vbGhlbHAuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL21ldGFmaWxlLmMsIG9iamVjdHMvcmVnaW9uLmMsIGZpbGVzL2RyaXZlLmMsIGZpbGVzL2ZpbGUuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9kcml2ZXIuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL21wci9tcHJfbWFpbi5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd2lubW0vbG9sdmxkcnYuYywgZGxscy93aW5tbS9tY2kuYywgZGxscy93aW5tbS93aW5lb3NzL21pZGkuYywgZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgZmlsZXMvZG9zX2ZzLmMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCU1vdmVkIFN5c3RlbUhlYXAgYWxsb2NhdGlvbnMgdG8gdGhlIHByb2Nlc3MgaGVhcC4KCgkqIHdpbmRvd3Mvd2luLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRG8gbm90IHVzZSBHbG9iYWxGaW5kQXRvbSB3aXRoIGF0b20gaGFuZGxlcyBpbiBDcmVhdGVXaW5kb3cqIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVNlbmQgV01fSEVMUCBtZXNzYWdlIHdoZW4gRjEgaXMgcHJlc3NlZC4KCgkqIG9sZS9ubHMvYnJmLm5scywgb2xlL25scy9jb3IubmxzLCBvbGUvbmxzL2N5bS5ubHMsIG9sZS9ubHMvZ2FlLm5scywgb2xlL25scy9nZGgubmxzLCBvbGUvbmxzL2dkdi5ubHMsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3dpbm5scy5oLCBtaXNjL21haW4uYywgb2xlL29sZTJubHMuYzoKCUFsYXN0YWlyIE1jS2luc3RyeSA8QWxhc3RhaXIuTWNLaW5zdHJ5QGRpZ2l0YWwuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZyBjZWx0aWMgbGFuZ3VhZ2VzOiBJcmlzaCBHYWVsaWMsIFNjb3RzCglHYWVsaWMsIE1hbnggR2FlbGljLCBCcmV0b24sIFdlbHNoLCBDb3JuaXNoLgoKMjAwMC0wMi0xNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIHN0dWIgZm9yIENvUmVzdW1lQ2xhc3NPYmplY3RzLgoKCSogd2luZG93cy9kaW5wdXQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgYXJndW1lbnQgcHJpbnRpbmcgdG8gc3R1YnMKCS0gcmVwbGFjZWQgbWVtY21wIGJ5IElzRXF1YWxHVUlECgktIGltcGxlbWVudGVkIEdldENhcGFiaWxpdGllcyBmb3IgTW91c2UgYW5kIEtleWJvYXJkCgoJKiBkbGxzL3dpbnNvY2svc29ja2V0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJaW9jdGxzb2NrZXQoKSBub3cgcmV0dXJucyBzdWNjZXNzIGlmIHRoZSBhcHAgc2V0cyBub25ibG9ja2luZyBtb2RlIGZvcgoJV1NBQXN5bmNTZWxlY3QoKS1lZCBzb2NrZXRzLgoKCSogZGxscy9jcnRkbGwvd2NzdHJpbmcuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBGcmVlQlNEIGNvbXBpbGUuCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gZml4ZWQgY3Jhc2ggb24gbWNpIGNoYW5uZWwgdHJhY2luZwoJLSBmaXhlZCAxNiB0byAzMiBiaXQgdHJhbnNsYXRpb24gZm9yIE1DSV9CUkVBSyBhbmQgTUNJX1NZU0lORk8gbWVzc2FnZXMKCjIwMDAtMDItMTMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6IEphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJTW92ZWQgQ0xJUFBJTkdfVXBkYXRlR0NDbGlwcGluZyBjYWxsIG91dHNpZGUgb2YgdGhlIFgxMSBzZWN0aW9uLgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jOgoJRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglBZGRlZCBkZWZpbml0aW9uIGZvciBTVElMTF9BQ1RJVkUuCgoJKiBzZXJ2ZXIvcmVxdWVzdC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgc2NoZWR1bGVyL2NsaWVudC5jOgoJSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciB0aGUgdW5peCBkb21haW4gc29ja2FkZHIgbGVuZ3RoLgoKCSogbWlzYy9jZHJvbS5jOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglGaXhlZCBDRFJPTV9BdWRpb19TZWVrIGZvciBub24tbGludXggc3lzdGVtcy4KCgkqIG9iamVjdHMvZ2Rpb2JqLmMsIGluY2x1ZGUvZ2RpLmg6IE1hdHRoZXcgQ2xpbmUgPG1hdHRAbmlnaHRyZWFsbXMuY29tPgoJR2V0T2JqZWN0QSgpIG5vdyByZWplY3RzIEdESSBoYW5kbGVzIHdoaWNoIGFyZSBpbnZhbGlkLgoKCSogbWlzYy92ZXJzaW9uLmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCVZFUlNJT05fR2V0U3lzdGVtRExMVmVyc2lvbiBjcmFzaGVkIHdoZW4gYmVpbmcgY2FsbGVkIG9uIGEgLnNvLgoKCSogd2luZG93cy9kZWZ3bmQuYzogTWFydGluIEZ1Y2hzIDxtYXJ0aW4tZnVjaHNAZ214Lm5ldD4KCURpc3BsYXkgdGhlIHN5c3RlbSBwb3B1cCBtZW51IHdoZW4gY2xpY2tpbmcgd2l0aCB0aGUgcmlnaHQgbW91c2UKCWJ1dHRvbiBpbiB0aGUgd2luZG93IGNhcHRpb24uCgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jOiBSZW1vdmVkIGNoZWNrIGZvciBjbGFzcyBleGlzdGVuY2UuCgoJKiBkbGxzL2NvbWN0bDMyL2FuaW1hdGUuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9oZWFkZXIuYywgZGxscy9jb21jdGwzMi9ob3RrZXkuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcHJvZ3Jlc3MuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQGNvZGV3ZWF2ZXJzLmNvbT4KCVJlbW92ZWQgc3VwZXJmbHVvdXMgR2xvYmFsRmluZEF0b20gY2FsbHMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJUmVhZGluZyBvZiByaSBibG9ja3MuCglCZXR0ZXIgZXJyb3IgaGFuZGxpbmcuCgoJKiB3aW5kb3dzL21kaS5jOiBNYXR0aGV3IENsaW5lIDxtYXR0QG5pZ2h0cmVhbG1zLmNvbT4KCUNoZWNrIHRoYXQgY2ktPmhXaW5kb3dNZW51IGlzIG5vdCB6ZXJvIGJlZm9yZSB1c2luZyBpdC4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC93Y3N0cmluZy5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglEYXZpZCBIb3dlbGxzIDxEYXZpZC5Ib3dlbGxzQG5leG9yLmNvLnVrPgoJSW1wbGVtZW50ZWQgaXN3KigpIHdjdHlwZS5oIGZ1bmN0aW9ucy4KCgkqIG1pc2NlbXUvbWFpbi5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUJldHRlciBlcnJvciBtZXNzYWdlcy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZpeGVkIG9mZi1ieS1vbmUgZXJyb3IuCgoJKiBtZW1vcnkvYXRvbS5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9hdG9tLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmMsIHNlcnZlci91bmljb2RlLmgsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2Lmg6CglNb3ZlZCBnbG9iYWwgYXRvbXMgdG8gdGhlIHNlcnZlciAoYmFzZWQgb24gdGhlIHdvcmsgb2YgU2VyZ2VpCglUdXJjaGFub3YgPHR1cmNoYW5vdkBvdHZwcmltLnJ1PikuCgoyMDAwLTAyLTEyICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5nZGkuaDogTWF0dGhldyBDbGluZSA8bWF0dEBuaWdodHJlYWxtcy5jb20+CglBZGRlZCBhIFBURVhUTUVUUklDW0F8V10gZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvd2luZGVmLmg6IE1hdHRoZXcgQ2xpbmUgPG1hdHRAbmlnaHRyZWFsbXMuY29tPgoJQWRkZWQgdHlwZWRlZnMgZm9yIFBTSE9SVCBhbmQgUFVTSE9SVC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJUHJvdGVjdCBFbmREaWFsb2coKSBmcm9tIGludmFsaWQgd2luZG93IGhhbmRsZXMuCgoJKiBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJUmVwbGFjZWQgZnByaW50ZnMgYnkgcHJvcGVyIGRlYnVnIG1hY3JvcyBhbmQgZml4ZWQgc29tZSBjb21waWxhdGlvbiB3YXJuaW5ncy4KCjIwMDAtMDItMTAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2RkcmF3Lmg6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQWRkZWQgR1VJRHMsIGRlZmluZXMsIGFuZCBzdHJ1Y3R1cmVzIGZvciBEaXJlY3RYNy4KCgkqIGRsbHMvd2lubW0vd2lubW1fUnUucmMsIGRsbHMvd2lubW0vd2lubW1fcmVzLnJjOgoJT2xlZyBLb3JkYSA8b2xlZ0Bpc3AubnNjLnJ1PgoJQWRkZWQgUnVzc2lhbiB0cmFuc2xhdGlvbi4KCgkqIHdpbmRvd3MvY2xhc3MuYzogUGhpbGxpcCBFem9sdCA8ZXpvbHRAcGVyZi56a28uZGVjLmNvbT4KCUFkZGVkIG1pc3NpbmcgZ290byBpbiBzd2l0Y2ggc3RhdGVtZW50LgoKCSogbWlzYy9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW5pdGlhbGl6ZSB0aGUgTk9OQ0xJRU5UTUVUUklDUyB3aXRoIDAgKGhlbHBzIG1vb3JodWhuLmV4ZSkuCgoJKiB3aW4zMi9rZXJuZWwzMi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGdyYXBoaWNzL3BzZHJ2L2FmbS5jLCBncmFwaGljcy9wc2Rydi9wcGQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9oZWFwLmMsIG1lbW9yeS9sZHQuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jcHUuYywgbWlzYy9kZWJ1Z3N0ci5jLCBtaXNjL2Vycm9yLmMsIG1pc2MvbWFpbi5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MmEuYywgbXNkb3MvaW50M2QuYywgbXNkb3MvaW50NDEuYywgbXNkb3MvaW50NGIuYywgbXNkb3MvaW9wb3J0cy5jLCByZWxheTMyL3Nub29wLmMsIHRvb2xzL21ha2VfZGVidWcsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5jLCBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmMsIGRsbHMvd2lubW0vbW1pby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy9kZHJhdy5jLCBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9jb21wb3NpdGVtb25pa2VyLmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvbHpleHBhbmQvbHpleHBhbmRfbWFpbi5jLCBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzoKCU9wdGltaXplZCBkZWJ1Z2dpbmcgQVBJIHRvIHJlZHVjZSBjb2RlIHNpemUuCgoJKiBsaWJyYXJ5L3dpbmVzdHViLmMsIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MmYuYywgb2JqZWN0cy9saW5lZGRhLmMsIGRsbHMvb2xlYXV0MzIvdmFyaWFudC5jLCBkbGxzL29sZWNsaS9vbGVjbGlfbWFpbi5jLCBkbGxzL29sZXN2ci9vbGVzdnJfbWFpbi5jLCBncmFwaGljcy9jYWNoZS5jLCBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3MvdHR5ZHJ2L3RleHQuYywgaW5jbHVkZS9jb2xvci5oLCBpbmNsdWRlL2VuaG1ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUvd2luZ2RpLmgsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2RhdGFjYWNoZS5jLCBkbGxzL29sZTMyL3N0b3JhZ2UuYzoKCVJlbW92ZWQgZXh0cmEgaW5jbHVkZXMgZnJvbSBvbGUuaCBhbmQgd2luZ2RpLmguCgoJKiAqLyo6CglKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglSZW1vdmVkICNpbmNsdWRlIG9mIHdpbmdkaS5oIGFuZCB3aW5kZWYuaCBmcm9tIHdpbnVzZXIuaCAoYW5kIHJlc29sdmVkCgl0aGUgcmVzdWx0aW5nIGNvbXBpbGF0aW9uIGZhaWx1cmVzKS4KCjIwMDAtMDItMDcgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogT3dlbiBXYW5nIDxvd2Vud0Bjb3JlbC5jYT4KCU1ha2UgQ0xTSURGcm9tU3RyaW5nIHJldHVybiBhIENMU0lEIG9mIHplcm9zIGluc3RlYWQgb2YgY3Jhc2hpbmcgd2hlbgoJcGFzc2VkIGEgbnVsbCBwb2ludGVyLgoKCSogZGxscy93aW5tbS9qb3lzdGljay5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeGVkIHVuY29uZGl0aW9uYWwgdXNlIG9mIEpPWURFVi4KCgkqIGluY2x1ZGUvY29tbWRsZy5oLCBpbmNsdWRlL3dpbmRvd3N4LmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTWljaGFlbCBDYXJkZW5hcyA8bWljaGFlbF9jYXJkZW5hc0BkZW5lYmEuY29tPgoJQWRkZWQgYSBidW5jaCBvZiBtYWNyb3MgbmVlZGVkIGZvciBjb21waWxpbmcgV2luZWxpYiBhcHBzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIExpc3RWaWV3X0VkaXRMYWJlbCBtYWNyb3MuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZzMyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQ2hhbmdlZCBpbXBvcnQgdG8gb3JkaW5hbC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQWRkZWQgSVBlcnNpc3RGb2xkZXIyIGludGVyZmFjZS4KCgkqIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MmYuYywgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRsbHMvd2lubW0vbWNpY2RhL21jaWNkYS5zcGVjLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2Nkcm9tLmgsIGluY2x1ZGUvZGVidWdkZWZzLmg6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gaW1wbGVtZW50ZWQgc2VyaWFsIG51bWJlcnMgZm9yIGF1ZGlvIENEcyBhbmQgZGF0YSBDRHMKCS0gYmlnIGNsZWFuIHVwIG9mIG1pc2MvY2Ryb20uYyBhbmQgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMgZnVuY3Rpb24KCSAgbmFtaW5nIGFuZCBzdWNoCgktIHNwbGl0IGRlYnVnIGNoYW5uZWwgY2RhdWRpbyBpbnRvIGNkcm9tIGFuZCBtY2ljZGEKCS0gZml4ZWQgc29tZSB0eXBvcwoKCSogZGxscy9vbGVhdXQzMi9vbGVmb250LmMsIGluY2x1ZGUvb2xlY3RsLmg6CglTZWFuIExhbmdsZXkgPHNlYW5sQGNvcmVsLmNhPgoJTWFkZSBPbGVDcmVhdGVGb250SW5kaXJlY3QgaGF2ZSB0aGUgc2FtZSBzaWduYXR1cmUgKGV4YWN0bHkpIGFzIHRoZQoJaGVhZGVyIGZpbGUuIEFkZGVkIG9sZXBybzMyIGRsbCBzdHVicy4KCgkqIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL29sZXBybzMyLy5jdnNpZ25vcmUsIGRsbHMvb2xlcHJvMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2xlcHJvMzIvUkVBRE1FLCBkbGxzL29sZXBybzMyL29sZXBybzMyLnNwZWMsIGRsbHMvb2xlcHJvMzIvb2xlcHJvMzJzdHVicy5jOgoJU2VhbiBMYW5nbGV5IDxzZWFubEBjb3JlbC5jYT4KCU9MRVBSTzMyIHN0dWJzLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBDRl9IRFJPUC4KCgkqIGRsbHMvd2lubW0vam95c3RpY2suYzogV29sZmdhbmcgU2Nod290emVyIDx3b3NjaHdvdEBnbXgubmV0PgoJRXh0ZW5kZWQgdGhlIHdpbm1tIGpveXN0aWNrIEFQSSBjYWxscyB0byBzdXBwb3J0IHRoZSBuZXcgTGludXgKCWpveXN0aWNrIGRyaXZlci4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJQWRkZWQgY29udGV4dCBmdW5jdGlvbnMgZm9yIEZyZWVCU0QuCgoJKiBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOiBTaGVyaSBTdGVldmVzIDxzaGVyaUBtYWNhZGFtaWFuLmNvbT4KCUZpeCBmb3IgdGhlIHN5c3RlbSB0cmF5LCBJY29uIGFuZCBwb3B1cCBtZW51J3Mgbm93IHdvcmsuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSB3aW5kb3cgcHJvcGVydGllcyBpbnN0ZWFkIG9mIHdpbmRvdyBsb25nLCBhbHNvIHVzZSB0aGVtIHRvCglkZXRlcm1pbmUgaWYgd2UgcmVhbGx5IG93biBhIHdpbmRvdyBhbmQgY2FuIGRlc3Ryb3kgaXQuCglUaGUgcGl4ZWxmb3JtYXQgZm9yIDI1NiBjb2xvcnMgaGFzIFBBTEVUVEV8UkdCIGZsYWdzIChUb21iIFJhaWRlciAyKQoJU2V0IHBhaW50YWJsZSBmbGFnIGZvciBhcHBsaWNhdGlvbiBwYXNzZWQgY29vcGVyYXRpdmUvZHJhd2luZyB3aW5kb3cuCglHZXREaXNwbGF5TW9kZTogV2UgbWlnaHQgaGF2ZSBhbmQgZG8gc3VwcG9ydCAyIGJhY2tidWZmZXJzLgoKCSogZGxscy9vbGUzMi9tb25pa2VyLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJUnVubmluZyBvYmplY3QgdGFibGUgYXJlIG5vdCB1c2luZyAwIGFzIGEgdmFsaWQgaW5kZXggYW55bW9yZS4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgU3RhdGljIE93bmVyRHJhdy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGVpZ2h0IGNhbGN1bGF0aW9uIHdhcyAxIG9mZiBpbiBJbWFnZUxpc3RfUmVhZC4KCjIwMDAtMDItMDMgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy92aWV3L2luaXQuYywgcHJvZ3JhbXMvdmlldy92aWV3LmMsIHRvb2xzL3dyYy93cmMuYywgd2luZG93cy9tZGkuYywgY29udHJvbHMvZWRpdC5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBpbmNsdWRlL3Jlc291cmNlLmgsIGxvYWRlci9uZS9yZXNvdXJjZS5jOgoJUmVtb3ZlZCByZXNvdXJjZS5oLgoKCSogcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LnNwZWMsIHByb2dyYW1zL3ZpZXcvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy92aWV3LnNwZWMsIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2NtZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2NtZC93Y21kLnNwZWMsIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC93aW5oZWxwLnNwZWMsIHByb2dyYW1zL3dpbnZlci8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW52ZXIvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci93aW52ZXIuc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL2F2aWluZm8uc3BlYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5zcGVjLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uc3BlYywgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2Nsb2NrL2Nsb2NrLnNwZWMsIHByb2dyYW1zL2NtZGxndHN0Ly5jdnNpZ25vcmUsIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5zcGVjLCBwcm9ncmFtcy9jb250cm9sLy5jdnNpZ25vcmUsIHByb2dyYW1zL2NvbnRyb2wvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5zcGVjLCBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvbm90ZXBhZC5zcGVjLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9vc3ZlcnNpb25jaGVjay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svb3N2ZXJzaW9uY2hlY2suc3BlYywgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL3Byb2dtYW4uc3BlYywgcHJvZ3JhbXMvcmVnYXBpLy5jdnNpZ25vcmUsIHByb2dyYW1zL3JlZ2FwaS9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5zcGVjLCBwcm9ncmFtcy9yZWd0ZXN0Ly5jdnNpZ25vcmUsIGxpYnRlc3QvLmN2c2lnbm9yZSwgbGlidGVzdC9NYWtlZmlsZS5pbiwgbGlidGVzdC9leHBhbmQuc3BlYywgbGlidGVzdC9oZWxsby5zcGVjLCBsaWJ0ZXN0L2hlbGxvMi5zcGVjLCBsaWJ0ZXN0L2hlbGxvMy5zcGVjLCBsaWJ0ZXN0L2hlbGxvNC5zcGVjLCBsaWJ0ZXN0L2hlbGxvNS5zcGVjLCBsaWJ0ZXN0L25ldy5zcGVjLCBsaWJ0ZXN0L3JvbGV4LnNwZWMsIGxpYnRlc3QvdmFydGVzdC5zcGVjLCBsaWJ0ZXN0L3ZvbGluZm8uc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgLnNwZWMgZmlsZXMgZm9yIGFsbCBsaWJ0ZXN0LyBhbmQgcHJvZ3JhbXMvIFdpbmVMaWIgYXBwcy4KCVVwZGF0ZWQgYWxsIE1ha2VmaWxlcyB0byB1c2UgLnNwZWMgZmlsZXMgYW5kIG5ldyByZXNvdXJjZSBoYW5kbGluZy4KCgkqIGxvYWRlci9saWJyZXMuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZXNvdXJjZXMvc3lzcmVzLmMsIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvYnVpbHRpbjMyLmgsIGluY2x1ZGUvbGlicmVzLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9yZXNvdXJjZS5oLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9lbGYuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgLnNwZWMga2V5d29yZCAnbW9kZScgdG8gYWxsb3cgY3JlYXRpbmcgYnVpbHQtaW4gRVhFIG1vZHVsZXMuCglVc2UgYnVpbHQtaW4gRVhFIG1vZHVsZXMgZm9yIFdpbmVMaWIgYXBwcyAoaW5zdGVhZCBvZiBFTEYgbW9kdWxlcykuCglSZW1vdmVkIGR1bW15IEVMRiBtb2R1bGUgY3JlYXRpb24uCglSZW1vdmVkIExJQlJFUyBoYW5kbGluZy4KCgkqIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBtZW1vcnkgb3ZlcndyaXRlIGJ1Zy4KCgkqIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS93aW5kZWYxNi5oOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJTW92ZWQgZGVmaW5pdGlvbnMgc3VjaCBhcyBCT09MMTYgYW5kIElOVDE2IGZyb20gd2luZGVmLmggaW50bwoJd2luZS93aW5kZWYxNi5oLgoKCSogb2xlL29sZTJubHMuYzogSnVsaW8gQ+lzYXIgR+F6cXVleiA8amdhenF1ZXpAZGxkLm5ldD4KCUdldE51bWJlckZvcm1hdEEgaW1wbGVtZW50YXRpb24gYWRkZWQuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglTYXZlIGFuZCByZXN0b3JlIGN1cnNvciBpbiBXcml0ZUNvbnNvbGVPdXRwdXRBLgoKCSogaW5jbHVkZS9kYXRldGltZS5oLCBpbmNsdWRlL21vbnRoY2FsLmgsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gSW1wbGVtZW50YXRpb24gb2YgV01fU0VURk9STUFUCgktIFJld29ya2VkIGRyYXdpbmcvc2VsZWN0aW9uCgktIEltcGxlbWVudGF0aW9uIG9mIFdNX0tFWURPV04KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnQxNi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBJTlRfSW50MTZSZWFkQ2hhciBhbmQgbWFkZSBpbnQwOSBoYW5kbGUgc3BlY2lhbCBrZXlzLgoKCSogZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvdmdhLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYWxwaGFudW1lcmljIG1vZGUgdG8gdGhlIFZHQSBlbXVsYXRpb24uCglVc2Ugc2VydmljZSB0aHJlYWQgZm9yIHRoZSBwZXJpb2RpYyByZWZyZXNoLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDbGVhbnVwIFZHQSByZWZyZXNoIHdoZW4gdGVybWluYXRpbmcuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSGFuZGxlIGJhY2tzcGFjZSBjb3JyZWN0bHkuCgoyMDAwLTAxLTMxICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBNYWtlLnJ1bGVzLmluLCAqL01ha2VmaWxlLmluOgoJQnVpbGQgbW9zdCBkbGxzIGFzIHNlcGFyYXRlIHNoYXJlZCBsaWJyYXJpZXMuCgoyMDAwLTAxLTMwICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBzZXJ2ZXIvY29udGV4dF9pMzg2LmMsIGNvbmZpZ3VyZToKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgY29uZmlndXJlIGNoZWNrIGZvciBzeXMvcmVnLmguCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBpbmNsdWRlL2ltYWdlbGlzdC5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglPdmVybGF5IGluZGljZXMgYXJlIHNpZ25lZCBzaG9ydHMgKC0xIG1lYW5zIG5vIG92ZXJsYXkpCgkoSW1hZ2VMaXN0X1NldE92ZXJsYXlJbmRleCkgc2hvdWxkIGFjY2VwdCAtMSBhcyBvdmVybGF5aW5kZXguCgkoSW1hZ2VMaXN0X1JlYWQpIFdlIGNhbiByZWFkIGEgTnhNIGJpdG1hcCBmcm9tIHRoZSBzdHJlYW0gYW5kIGhhdmUKCXRvIGNvbnZlcnQgaXQgaW50byBhIDF4KE0qTikgYml0bWFwLCBzZXQgY0N1ckltYWdlLGNNYXhJbWFnZS4gQWRkZWQKCWRvY3VtZW50YXRpb24uCgkob3RoZXJzKSByZW1vdmVkIHNvbWUgcG90ZW50aWFsIG9wZXJhdG9yIHByZWNlbmRlbmNlIHByb2JsZW1zLgoKCSogb2JqZWN0cy9kYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldERldmljZUNhcHM6IHNwb3QgeWV0IHVuc3VwcG9ydGVkIGFjY2Vzc2VzIHRvIHRoZSBEZXZpY2VDYXBzIHN0cnVjdC4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgbWlzY2VtdS9tYWluLmMsIHdpbjMyL2V4Y2VwdC5jLCBNYWtlZmlsZS5pbiwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2V4dGVybmFsLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS90aHJlYWQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgZGVidWdnZXIgdG8gbGlid2luZSB0byBtYWtlIGl0IGF2YWlsYWJsZSB0byBXaW5lTGliIGFwcHMuCglUcnkgdG8gaW52b2tlIGV4dGVybmFsIGRlYnVnZ2VyIGlmIGludGVybmFsIGRlYnVnZ2VyIGNyYXNoZXMuCglUcnkgdG8gaGFuZGxlIGVhcmx5IGludm9jYXRpb24gb2YgZGVidWdnZXIgbW9yZSBncmFjZWZ1bGx5LgoKCSogaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNYXJrIGluaXRpYWwgcHJvY2VzcyBhcyAzMi1iaXQgZm9yIFdpbmVMaWIgYXBwcy4KCVVzZSB0ZWItPnRpYmZsYWdzIGluc3RlYWQgb2YgdGViLT5mbGFncyAoZm9yIFdpbjk1IFVTRVIzMiBjb21wYXRpYmlsaXR5KS4KCVJlbW92ZWQgdW51c2VkIHRocmVhZCBldmVudC4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIFdpbmRvd3Mgc2tpcHMgdGhlICdcdCcgYW5kICcgJyBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2Ygc2VjdGlvbgoJICBrZXkgbmFtZXMgb2YgLklOSSBmaWxlcy4KCS0gRml4ZWQgR2V0L1dyaXRlUHJpdmF0ZVByb2ZpbGVTdHJ1Y3RBKCk6CgkgIC0gKHJlLSl0cmFuc2xhdGUgdGhlIGJpbmFyeSBkYXRhIGludG8gQVNDSUkgaGV4IGNoYXJzCgkgIC0gYWRkIGNoZWNrc3VtIC8gY2hlY2tpbmcgb2YgaXQKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KMjAwMC0wMS0zMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBjb25maWd1cmU6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIGNvbmZpZ3VyZSBjaGVjayBmb3Igc3lzL3JlZy5oLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgaW5jbHVkZS9pbWFnZWxpc3QuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT3ZlcmxheSBpbmRpY2VzIGFyZSBzaWduZWQgc2hvcnRzICgtMSBtZWFucyBubyBvdmVybGF5KQoJKEltYWdlTGlzdF9TZXRPdmVybGF5SW5kZXgpIHNob3VsZCBhY2NlcHQgLTEgYXMgb3ZlcmxheWluZGV4LgoJKEltYWdlTGlzdF9SZWFkKSBXZSBjYW4gcmVhZCBhIE54TSBiaXRtYXAgZnJvbSB0aGUgc3RyZWFtIGFuZCBoYXZlCgl0byBjb252ZXJ0IGl0IGludG8gYSAxeChNKk4pIGJpdG1hcCwgc2V0IGNDdXJJbWFnZSxjTWF4SW1hZ2UuIEFkZGVkCglkb2N1bWVudGF0aW9uLgoJKG90aGVycykgcmVtb3ZlZCBzb21lIHBvdGVudGlhbCBvcGVyYXRvciBwcmVjZW5kZW5jZSBwcm9ibGVtcy4KCgkqIG9iamVjdHMvZGMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXREZXZpY2VDYXBzOiBzcG90IHlldCB1bnN1cHBvcnRlZCBhY2Nlc3NlcyB0byB0aGUgRGV2aWNlQ2FwcyBzdHJ1Y3QuCgoJKiBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIG1pc2NlbXUvbWFpbi5jLCB3aW4zMi9leGNlcHQuYywgTWFrZWZpbGUuaW4sIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9leHRlcm5hbC5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvdGhyZWFkLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIGRlYnVnZ2VyIHRvIGxpYndpbmUgdG8gbWFrZSBpdCBhdmFpbGFibGUgdG8gV2luZUxpYiBhcHBzLgoJVHJ5IHRvIGludm9rZSBleHRlcm5hbCBkZWJ1Z2dlciBpZiBpbnRlcm5hbCBkZWJ1Z2dlciBjcmFzaGVzLgoJVHJ5IHRvIGhhbmRsZSBlYXJseSBpbnZvY2F0aW9uIG9mIGRlYnVnZ2VyIG1vcmUgZ3JhY2VmdWxseS4KCgkqIGluY2x1ZGUvbWFpbi5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90YXNrLmgsIGxvYWRlci9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWFyayBpbml0aWFsIHByb2Nlc3MgYXMgMzItYml0IGZvciBXaW5lTGliIGFwcHMuCglVc2UgdGViLT50aWJmbGFncyBpbnN0ZWFkIG9mIHRlYi0+ZmxhZ3MgKGZvciBXaW45NSBVU0VSMzIgY29tcGF0aWJpbGl0eSkuCglSZW1vdmVkIHVudXNlZCB0aHJlYWQgZXZlbnQuCgoJKiBmaWxlcy9wcm9maWxlLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBXaW5kb3dzIHNraXBzIHRoZSAnXHQnIGFuZCAnICcgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHNlY3Rpb24KCSAga2V5IG5hbWVzIG9mIC5JTkkgZmlsZXMuCgktIEZpeGVkIEdldC9Xcml0ZVByaXZhdGVQcm9maWxlU3RydWN0QSgpOgoJICAtIChyZS0pdHJhbnNsYXRlIHRoZSBiaW5hcnkgZGF0YSBpbnRvIEFTQ0lJIGhleCBjaGFycwoJICAtIGFkZCBjaGVja3N1bSAvIGNoZWNraW5nIG9mIGl0CgoJKiBmaWxlcy9kaXJlY3RvcnkuYywgbWlzYy9yZWdpc3RyeS5jLCBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIHdpbmUuaW5pOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGZpeGVzLCBsb2FkaW5nIG9mIHNldHRpbmdzIHBlciB1c2VyCgktIGF1dG9kZXRlY3Rpbmcgb2Ygd2luZG93cyByZWdpc3RyeSB2ZXJzaW9uCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9kcGxheXgvZHBjbGFzc2ZhY3RvcnkuYywgZGxscy9kc291bmQvZHNvdW5kX21haW4uYywgZGxscy9vbGUzMi9vbGVvYmouYywgZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglUaGUgQ09NIHZpcnR1YWwgdGFibGVzIG11c3QgdXNlIHRoZQoJJ0lDT01fTVNWVEFCTEVfQ09NUEFUX0R1bW15UlRUSVZBTFVFJyBtYWNybyB0byBwcm92aWRlIHBhZGRpbmcgaW4gQysrLgoKCSogbXNkb3MvaW50MDkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIGludDkgaGFuZGxlciBhZGQga2V5c3Ryb2tlIHRvIEJJT1Mga2V5Ym9hcmQgYnVmZmVyLgoKCSogbG9hZGVyL2Rvcy9kb3Ntb2QuYywgbG9hZGVyL2Rvcy9kb3Ntb2QuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJZG9zbW9kIHByb3RvY29sIHJldmlzaW9uIDMsIGZlYXR1cmluZyBNUFJPVEVDVCBhbmQgRU5URVJJRExFLgoKCSogaW5jbHVkZS93aW5jb24uaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhIGNvdXBsZSBvZiBwcm90b3R5cGVzLgoKCSogd2luZWRlZmF1bHQucmVnOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFkZCBpbmZvcm1hdGlvbiBhYm91dCBjb2RlIHBhZ2VzIHRvIGRlZmF1bHQgcmVnaXN0cnkuCgoJKiBjb25maWd1cmUuaW4sIE1ha2UucnVsZXMuaW4sIGNvbmZpZ3VyZToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBVbml4d2FyZSAoU29sYXJpcykgbGlua2VyIHR5cG8gZml4ZWQKCS0gU29sYXJpcyAoYW5kIHBvc3NpYmx5IFVuaXh3YXJlKSBzcGVjaWZpYyBsaW5rZXIgc3VwcG9ydCBmb3IgdGhlCgkgIEdOVTppc20gLS1bbm8tXXdob2xlLWFyY2hpdmUKCS0gU29sYXJpcyBtYWtlIHNwZWNpZmljIG1ha2VmaWxlIGZpeAoKCSogc2VydmVyL2NvbnRleHRfaTM4Ni5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVNvbGFyaXMgc3VwcG9ydCBmb3Ige3NldCxnZXR9X3RocmVhZF9jb250ZXh0IGFkZGVkLgoKMjAwMC0wMS0yOSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9jb250ZXh0X2kzODYuYzoKCUFkZGVkIG91ciBvd24gdXNlcl9yZWdzX3N0cnVjdCBkZWZpbml0aW9uIGZvciBiZXR0ZXIgY29tcGF0aWJpbGl0eS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCB3aW5kb3dzL2RpYWxvZy5jOgoJRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglDb3JyZWN0IHRoZSBiZWhhdmlvdXIgb2YgdGhlIGFjY2VsZXJhdG9yIGtleXMgaW4gZGlhbG9ncyBhY2NvcmRpbmcgdG8KCXRoZSBXaW5kb3dzJyBvbmUuCgoJKiBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvZGlhbG9nLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uaCwgcHJvZ3JhbXMvbm90ZXBhZC9ub3RlcGFkLnJjLCBwcm9ncmFtcy9ub3RlcGFkL3JzcmMucmMsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9YeC5yYywgcHJvZ3JhbXMvcHJvZ21hbi9hY2NlbC5yYywgcHJvZ3JhbXMvcHJvZ21hbi9tYWluLmMsIHByb2dyYW1zL3Byb2dtYW4vcnNyYy5yYywgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlLCBwcm9ncmFtcy93aW5oZWxwL01ha2VmaWxlLmluLCBwcm9ncmFtcy93aW5oZWxwL1B0LnJjLCBwcm9ncmFtcy93aW5oZWxwL1h4LnJjLCBwcm9ncmFtcy93aW5oZWxwL3JzcmMucmMsIHByb2dyYW1zL3dpbmhlbHAvd2luaGVscC5jLCBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svY2xvY2sucmMsIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvY2xvY2svcnNyYy5yYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTGluayBvbmx5IGEgc2luZ2xlIC5yYyBmaWxlIHdpdGggYXBwbGljYXRpb24uCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3MsIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW4sIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgaWYxNjMyL3Nub29wLmMsIGxvYWRlci9sb2Fkb3JkZXIuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgQlVHUywgUkVBRE1FLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gYWRkIHNvbWUgZG9jdW1lbnRhdGlvbiBpdGVtcwoJLSBmaXggc29tZSBzcGVsbGluZwoJLSBmaXggc29tZSB3YXJuaW5ncwoKCSogZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmMsIGRvY3VtZW50YXRpb24vY2Ryb20tbGFiZWxzLCBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL2Nkcm9tLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZHJpdmUuaCwgbGlidGVzdC92b2xpbmZvLmMsIG1pc2MvY2Ryb20uYywgbXNkb3MvaW50MmYuYywgd2luZS5pbmk6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCS0gc3VwcG9ydCBmb3IgcmVhZGluZyBsYWJlbHMgYW5kIHNlcmlhbCBudW1zIGZyb20gZGV2aWNlCgktICJyZWFzb25hYmxlIiBtaXNjL2Nkcm9tLmMgZGV2aWNlIGhhbmRsaW5nCgktIG11Y2ggaW1wcm92ZWQgYXVkaW8gQ0Qgc3VwcG9ydAoJLSBzZXJpYWwgbnVtYmVyIG92ZXJ3cml0ZSBidWcgZml4CgktIHNwZWxsaW5nIGZpeGVzCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvc2V0dXB4Ly5jdnNpZ25vcmUsIGRsbHMvc2V0dXB4L01ha2VmaWxlLmluLCBkbGxzL3NldHVweC9zZXR1cHguc3BlYywgZGxscy9zZXR1cHgvc2V0dXB4X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgU0VUVVBYIGRsbC4KCgkqIGRsbHMvb2xlMzIvb2xlMi5zcGVjLCBzZXJ2ZXIvcHJvY2Vzcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBtaW5vciBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgZml4ZXMuCgktIE1vdmVkIHNvbWUgb2YgdGhlIEFQSSBzcGVjaWZpY2F0aW9ucyBmcm9tIHRoZSBnbG9iYWwgZmlsZSB0byB0aGUKCSAgbG9jYWwgZmlsZXMuCgoJKiBpbmNsdWRlL2ltYWdlbGlzdC5oLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBJbWFnZUxpc3RfUmVhZCAobm90IDEwMCUgY29ycmVjdCBpbiByZWdhcmRpbmcgdG8gc2V0dGluZwoJdGhlIGJpdG1hcCkuCglGaWxsZWQgb3V0IHVua25vd24gbWVtYmVycyBvZiBJTEhFQUQuCglTdGFydGVkIHJlb3JkZXJpbmcgSU1BR0VMSVNUIHRvIG1ha2UgaXQgV2luZG93cyBiaW5hcnkgY29tcGF0aWJsZS4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgluSWNvbkluZGV4ID09IC0xIHNob3VsZCByZXR1cm4gbnIgb2YgYXZhaWxhYmxlIGljb25zLCBub3QgMC4KCgkqIE1ha2VmaWxlLmluOiBGaXhlZCBidWlsZGluZyBvZiBkb3Ntb2QgYW5kIHdpbmVjbGlwc3J2LgoKCSogbWlzYy9kZWJ1Z3N0ci5jOgoJQnVnIGZpeDogYWRkZWQgdGVtcCBzdHJ1Y3R1cmUgdG8gY29wZSB3aXRoIGRlYnVnIHRyYWNlcyBkdXJpbmcgdGhyZWFkCglzdGFydHVwLgoKCSogd2luMzIvbmV3Zm5zLmMsIHdpbmRvd3MvbXNnYm94LmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL250ZGxsL21pc2MuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3N5bmMuYywgaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvZGVidWdzdHIuaCwgbGlidGVzdC92YXJ0ZXN0LmMsIGxvYWRlci9yZXNvdXJjZS5jLCBvYmplY3RzL3RleHQuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmMsIHJlbGF5MzIvdXR0aHVuay5jOgoJUmVtb3ZlZCBkZWJ1Z3N0ci5oLgoKCSogbWlzYy9kZWJ1Z3N0ci5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgaW5jbHVkZS90aHJlYWQuaDoKCVVzZSBhIHBlci10aHJlYWQgYnVmZmVyIGFuZCB3cml0ZSgyKSBmb3IgZGVidWcgdHJhY2VzLgoJUmVtb3ZlZCBkZWJ1Z19kdW1wc3RyLgoKMjAwMC0wMS0yNyAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU21hbGwgZml4LgoKCSogc2VydmVyL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJR2V0IEhDVSBuYW1lIGZyb20gdW5peCB1c2VyIG5hbWUuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCBpbmNsdWRlL3NlcnZlci5oLCBtZW1vcnkvc2VsZWN0b3IuYzoKCUltcGxlbWVudGVkIEdldFRocmVhZFNlbGVjdG9yRW50cnkgdGhyb3VnaCB0aGUgc2VydmVyLgoKMjAwMC0wMS0yNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vbG9sdmxkcnYuYzoKCUR5bmFtaWNhbGx5IGxvYWQgdmVyc2lvbi5kbGwgaW4gTU1EUlZfR2V0RGVzY3JpcHRpb24zMi4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOgoJVXNlIGEgbGlua2VkIGxpc3QgaW5zdGVhZCBvZiBhIERQQSBmb3IgdGhlIGhvb2sgbGlzdC4KCgkqIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jOgoJVXNlIGEgbGlua2VkIGxpc3QgaW5zdGVhZCBvZiBhIERQQSB0byBtYW5hZ2UgcGl4bWFwcy4KCgkqIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsIGRsbHMvb2xlMzIvc3RnX3N0cmVhbS5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZXR1cm5zIGFuIGVycm9yIGlmIHRyeWluZyB0byB3cml0ZSB0byBhIHN0cmVhbSBvcGVuZWQgZm9yIHJlYWQuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglBZGQgYSBuZXdiaWUgd2FybmluZyBmb3Igc2xhc2hlcyBpbiB0aGUgc2VhcmNoIFBhdGg9IG9mIHdpbmUuY29uZi4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV2FpdCBmb3IgU2htQ29tcGxldGlvbiBkdXJpbmcgRmxpcC4KCgkqIGNvbmZpZ3VyZS5pbiwgbGlidGVzdC9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCU1hZGUgLS1lbmFibGUtZGxsIHRoZSBkZWZhdWx0LgoJVXNlICQoTUFLRSkgaW5zdGVhZCBvZiAkKFNVQk1BS0UpIGZvciByZWN1cnNpdmUgbWFrZXMuCglDbGVhbmVkIHVwIGluc3RhbGwgdGFyZ2V0cyBpbiBtYWluIE1ha2VmaWxlLgoKCSogZGxscy9udGRsbC9zeW5jLmM6IERvbid0IGNyYXNoIHdoZW4gT2JqZWN0QXR0cmlidXRlcyBpcyBOVUxMLgoKMjAwMC0wMS0yNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgZGVidWdnZXIvZGJnbWFpbi5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jLCBpbmNsdWRlL29wdGlvbnMuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmMsIG1pc2NlbXUvbWFpbi5jLCBzY2hlZHVsZXIvY2xpZW50LmM6CglVc2UgYXJndlswXSB0byBsb2NhdGUgdGhlIHNlcnZlciBleGVjdXRhYmxlLgoKCSogbWVtb3J5L2hlYXAuYywgaW5jbHVkZS9oZWFwLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3dpbm50LmgsIG1lbW9yeS9lbnZpcm9uLmMsIG1lbW9yeS9nbG9iYWwuYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPgoJU2hhcmUgdGhlIHN5c3RlbSBoZWFwIGJldHdlZW4gZGlmZmVyZW50IGFkZHJlc3Mgc3BhY2VzLiBNYWRlIHByb2Nlc3MKCWhlYXAgcGVyLWFkZHJlc3Mgc3BhY2UgaW5zdGVhZCBvZiBwZXItcHJvY2Vzcy4KCgkqIHNlcnZlci90aHJlYWQuaCwgc2VydmVyL3RyYWNlLmMsIE1ha2VmaWxlLmluLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvbWFpbi5jLCBtaXNjL3JlZ2lzdHJ5LmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9tYWluLmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci90aHJlYWQuYzoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPgoJTWFkZSB0aGUgc2VydmVyIGxpc3RlbiBmb3IgbmV3IGNsaWVudHMgb24gYSBVbml4IHNvY2tldCBpbgoJJEhPTUUvLndpbmUuIE5ld2x5IHN0YXJ0ZWQgd2luZSBwcm9jZXNzZXMgbm93IGF0dGFjaCB0byBhbiBleGlzdGluZwoJc2VydmVyIGlmIG9uZSBpcyBydW5uaW5nLgoKCSogZmlsZXMvcHJvZmlsZS5jLCBpbmNsdWRlL29wdGlvbnMuaDoKCUFkZGVkIFBST0ZJTEVfR2V0Q29uZmlnRGlyIGZ1bmN0aW9uLgoKMjAwMC0wMS0yNCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9zeW5jLmMsIGRsbHMvd2luc29jay9zb2NrZXQuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvKi5jOgoJQ2hhbmdlZCB0aGUgc2VydmVyIHRvIHJldHVybiBTVEFUVVNfKiBlcnJvciBjb2Rlcy4KCgkqIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZXJyb3IuYywgZGxscy9udGRsbC9ydGwuYzoKCUJ1aWx0IGEgY29tcGxldGUgdHJhbnNsYXRpb24gdGFibGUgZm9yIFJ0bE50U3RhdHVzVG9Eb3NFcnJvci4KCgkqIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5udC5oOiBBZGRlZCBzb21lIGVycm9yIGNvZGVzLgoKCSogd2luZG93cy9ub25jbGllbnQuYzoKCVVzZSBHZXRQcm9jQWRkcmVzcyBpbnN0ZWFkIG9mIGNhbGxpbmcgU2hlbGxBYm91dEEgZGlyZWN0bHkuCgoyMDAwLTAxLTIzICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL3ZlcnNpb24vTWFrZWZpbGUuaW4sIGRsbHMvdmVyc2lvbi92ZXIuc3BlYywgZGxscy92ZXJzaW9uL3ZlcjE2LmM6CglNZXJnZWQgZGxscy92ZXIgaW50byBkbGxzL3ZlcnNpb24uCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbWlzYy5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbF9taXNjLmgsIGRsbHMvbnRkbGwvb20uYywgZGxscy9udGRsbC9yZWcuYywgZGxscy9udGRsbC9ydGwuYywgZGxscy9udGRsbC9ydGxzdHIuYywgZGxscy9udGRsbC9zZWMuYywgZGxscy9udGRsbC9zeW5jLmMsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL250c2VjYXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGltcGxlbWVudGF0aW9uIG9mIFJ0bFJlZyogKHJlYWQgYWNjZXNzKSwgUnRsRXZlbnQqLCBSdGxTZW1hcGhvcmUqLAoJICBOdEFsbG9jYXRlTG9jYWxseVVuaXF1ZUlkCgktIGltcGxlbWVudGF0aW9uIG9yIHN0dWJzIGZvciBOdEFjY2Vzc0NoZWNrLCBOdFNldFNlY3VyaXR5T2JqZWN0LAoJICBSdGxDbGVhckJpdHMsIFJ0bEVxdWFsUHJlZml4U2lkLCBSdGxGaW5kQ2xlYXJCaXRzLAoJICBSdGxGb3JtYXRDdXJyZW50VXNlcktleVBhdGgsIFJ0bEdldENvbnRyb2xTZWN1cml0eURlc2NyaXB0b3IsCgkgIFJ0bElkZW50aWZpZXJBdXRob3JpdHlTaWQsIFJ0bEltcGVyc29uYXRlU2VsZiwgUnRsSW5pdGlhbGl6ZUJpdE1hcCwKCSAgUnRsSW5pdGlhbGl6ZUdlbmVyaWNUYWJsZSwgUnRsTWFrZVNlbGZSZWxhdGl2ZVNELAoJICBSdGxQcmVmaXhVbmljb2RlU3RyaW5nLCBSdGxTZXRCaXRzLCBSdGxVbmljb2RlVG9NdWx0aUJ5dGVOLAoJICBSdGxVcGNhc2VVbmljb2RlU3RyaW5nVG9PZW1TdHJpbmcsIFJ0bFVwY2FzZVVuaWNvZGVUb09lbU4sCgkgIFJ0bFZhbGlkU2lkLCBSdGx4VW5pY29kZVN0cmluZ1RvT2VtU2l6ZQoJLSBjb3JyZWN0ZWQgbW9zdCBSdGxTdHJpbmcqIGZ1bmN0aW9ucywgYWRkZWQgZG9jdW1lbnRhdGlvbgoJLSBtb3JlIGZpeGVzIGFuZCBwYXJ0aWFsIGltcGxlbWVudGF0aW9ucwoKCSogbWlzYy9tYWluLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L21haW4uYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9vcHRpb25zLmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIC1keGdyYWIgY29tbWFuZCBsaW5lIG9wdGlvbiwgd2hpY2ggY29uZmluZXMgY3Vyc29yIG1vdGlvbiB0byB0aGUKCURpcmVjdFggcHJpbWFyeSBzdXJmYWNlLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlcGxhY2VkIHNvbWUgd2VpcmQgQyBjb25zdHJ1Y3RzIChjaGFyW109IiIgKSB3aXRoIG1vcmUgY29tcGF0aWJsZSBvbmVzLgoJQWRkZWQgYW5vdGhlciBOVUxMIHB0ciBjaGVjayBpbiBfT25PcGVuLgoKCSogbWlzYy93aW5zb2NrX2FzeW5jLmMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHJlbGF5MzIvd3NvY2szMi5zcGVjLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay8uY3ZzaWdub3JlLCBkbGxzL3dpbnNvY2svTWFrZWZpbGUuaW4sIGRsbHMvd2luc29jay9hc3luYy5jLCBkbGxzL3dpbnNvY2svc29ja2V0LmMsIGRsbHMvd2luc29jay93aW5zb2NrLnNwZWMsIGRsbHMvd2luc29jay93c29jazMyLnNwZWMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL3dpbnNvY2suc3BlYywgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy93aW5zb2NrLmM6CglNb3ZlZCB3aW5zb2NrIGltcGxlbWVudGF0aW9uIHRvIGRsbHMvd2luc29jay4KCgkqIGRsbHMvKi8uY3ZzaWdub3JlOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCAqLnNwZWMuYywgKi5zcGVjLmdsdWUucywgKi5nbHVlLmMgdG8gLmN2c2lnbm9yZSB0aGF0IG5lZWQgdGhlbS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb3JyZWN0ZWQgYXJndW1lbnRzIHRvIFZpcnR1YWxGcmVlKCkuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIG1lbW9yeS9zdHJpbmcuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVwbGFjZWQgTG9jYWxUb1dpZGVDaGFyKCkgYnkgbHN0cmNweW5BdG9XKCksIFdpZGVDaGFyVG9Mb2NhbCgpIGJ5Cglsc3RyY3B5bld0b0EoKS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCU1hcCBXTV9NRU5VU0VMRUNUIDMyLT4xNiBiaXRzIGZvciBjbG9zaW5nIG1lbnUuCgoJKiB3aW5kb3dzL21kaS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeCBwYXJhbWV0ZXJzIGZvciBNRElfUmVzdG9yZUZyYW1lTWVudSBpbiBXTV9ERVNUUk9ZIG1zZy4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgKFJlZ2lzdGVyfEdldHxSZXZva2UpQWN0aXZlT2JqZWN0IGZyb20gdGhlIGRvY3MuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTdXBlcmNoYXJnZWQgWFNobSBpbXBsZW1lbnRhdGlvbiBmb3IgRGlyZWN0RHJhdy4KCgkqIGRlYnVnZ2VyL21zYy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogbWlzc2luZyBOVUxMIHBvaW50ZXIgY2hlY2tzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDaGVjayBmb3IgTVogaGVhZGVyIGJlZm9yZSB0cnlpbmcgdG8gZGVjaXBoZXIgdGhlIFBFIGhlYWRlci4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUV4cG9ydCBHZXRMb25nUGF0aE5hbWVbQXxXXS4KCgkqIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggcHJvYmxlbXMgd2l0aCBHbG9iYWxIYW5kbGUgYW5kIEdsb2JhbEZyZWUgc28gcmVzdWx0cyBtYXRjaCBXaW45OC4KCVJlc3RydWN0dXJlIEhFQVBfVmFsaWRhdGVJblVzZUFyZW5hLCBIZWFwVmFsaWRhdGUsIGFuZCBhZGQKCUhFQVBfSXNSZWFsQXJlbmEgdG8gZWxpbWluYXRlICpib2d1cyogZXJyb3IgbWVzc2FnZXMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWN0dWFsbHkgcHJpbnQgcmV0dXJuIHZhbHVlIG9mIG1lc3NhZ2UuCgoJKiBvYmplY3RzL2RpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNvcnJlY3RlZCBhcmd1bWVudHMgaW4gRElCX0RlbGV0ZURJQlNlY3Rpb24uCgoJKiBmaWxlcy9maWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIFxcLlw8ZG9zZGV2aWNlPiBsaWtlIDxkb3NkZXZpY2U+IGluIENyZWF0ZUZpbGUuIFRlc3RlZCB3aXRoCgloZWxwIG9mIEphbWVzIEZlZW5leSA8amFtZXNAbnVyZWFsbS5uZXQ+LgoKMjAwMC0wMS0yMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9kZWJ1Z2dlci5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NvbnRleHRfaTM4Ni5jLCBzZXJ2ZXIvZGVidWdnZXIuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgaW5jbHVkZS9zZXJ2ZXIuaDoKCUFsZXhhbmRyZSBKdWxsaWFyZCA8anVsbGlhcmRAY29kZXdlYXZlcnMuY29tPgoJQWRkZWQgR2V0L1NldFRocmVhZENvbnRleHQgc3VwcG9ydCB0aHJvdWdoIHRoZSBzZXJ2ZXIuCgoyMDAwLTAxLTE4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaW5wdXQuYywgZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jLCBkbGxzL29sZWF1dDMyL29sZWF1dC5jLCBkbGxzL29sZWF1dDMyL29sZWZvbnQuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywgZGxscy9zaGVsbDMyL3JlZ3N0cmVhbS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZGxpZ2h0LmMsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZWJ1Z3N0ci5oLCBtaXNjL2RlYnVnc3RyLmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvb2xlMzIvY2xpcGJvYXJkLmMsIGRsbHMvb2xlMzIvZGF0YWNhY2hlLmMsIGRsbHMvb2xlMzIvZGVmYXVsdGhhbmRsZXIuYywgZGxscy9vbGUzMi9pZnMuYywgZGxscy9vbGUzMi9zdG9yYWdlLmM6CglBZGRlZCBkZWJ1Z3N0cl9ndWlkIGZ1bmN0aW9uIGFuZCB1c2VkIGl0IHRvIHJlcGxhY2UKCVdJTkVfU3RyaW5nRnJvbUNMU0lEIGluIGFsbCBkZWJ1Z2dpbmcgbWVzc2FnZXMuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFsd2F5cyBpbml0aWFsaXplIGxwV2F2ZUhkci0+bHBOZXh0IHRvIE5VTEwuCglEb24ndCBmYWlsIG9uIHN0cmFuZ2UgZnJhZ21lbnQgc2l6ZXMuCgoyMDAwLTAxLTE3ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5ubHMuaDogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglBZGQgc29tZSBkZWZpbmVzIG5lZWRlZCBmb3IgVW5pY29kZSB0byBBc2NpaSBjb252ZXJzaW9ucy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglCZXR0ZXIgZXJyb3IgaGFuZGxpbmcsIGxlc3Mga2V5cyBoZWxkIG9wZW4uCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVudW1EaXNwbGF5TW9kZXMgbXVzdCBwYXNzIGxQaXRjaC4KCgkqIGNvbnRyb2xzL21lbnUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglWYWxpZGF0ZSB0aGUgbWVudSBoYW5kbGVzLgoKCSogZGxscy93aW44N2VtL2VtdWxhdGUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSb3VuZHMgdG8gdGhlIGxvd2VzdCBpbnRlZ2VyLCBub3QgdGhlIG5lYXJlc3QuCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHJhY2UgYmV0d2VlbiBXaW4xNiBwYXJlbnQgYW5kIGNoaWxkIGZvciBmaXJzdCByZXNjaGVkdWxpbmcKCW9mIGNoaWxkIHByb2Nlc3MuIFRoaXMgZml4ZXMgV2luRXhlYyByZXR1cm5pbmcgdG9vIGVhcmx5LgoKMjAwMC0wMS0xNiAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVzZSAtLXdob2xlLWFyY2hpdmUgdG8gZm9yY2UgbGlua2luZyBhbGwgb2YgbGlid2luZS5hLiBpbnRvIHdpbmUuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy9idWlsZC5jOgoJQWRkZWQgYXV0b21hdGljIHJlZ2lzdHJhdGlvbiBvZiBidWlsdC1pbiBETExzLgoKMjAwMC0wMS0xNSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOiBBYXJvbiBIb3BlIDxlZGhAbWFpbC5icmlvZm9yZ2UuY29tPgoJRml4ZWQgSVBYIGRldGVjdGlvbi4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglOZXcgaW1wbGVtZW50YXRpb24gb2YgdGhlIHdpbjk1IHJlZ2lzdHJ5IGxvYWRlci4KCgkqIGRsbHMvYWR2YXBpMzIvcmVnaXN0cnkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJSWYgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGluIHRoZSBidWZmZXIgYW5kIHRoZSB0eXBlIGlzIFJFR19TWiBhbmQgdGhlCglzdHJpbmcgaXMgbm90IDAtdGVybWluYXRlZCBSZWdRdWVyeVZhbHVlIGFuZCBSZWdFbnVtVmFsdWUgYXJlIGFwcGVuZGluZyBhIDAuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRGlzcGxheSB0aGUgZXh0ZXJuYWwgbW9kdWxlcyBhZnRlciB0aGUgaW50ZXJuYWwgbW9kdWxlcyBpbiBjcmFzaCByZXBvcnQuCgoJKiBmaWxlcy9kcml2ZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgU2V0Vm9sdW1lTGFiZWwgcmVwb3J0IGZhaWx1cmUgb24gQ0QtUk9NIGRyaXZlcy4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdHBsYXk6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJVXBkYXRlZCBkb2N1bWVudGF0aW9uLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21jaS5jLCBpbmNsdWRlL2RyaXZlci5oLCB3aW5kb3dzL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZXBsYWNlZCBXaW5lIHNwZWNpZmljIERSSVZFUl9HZXRUeXBlIGJ5IGEgY29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZgoJR2V0RHJpdmVyRmxhZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL3dpbmVfZ2wuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktICh1Z2x5KSBmaXggZm9yIHRoZSAnWG1kLmgnIHByb2JsZW0KCS0gZml4IHRoZSBkZXRlY3Rpb24gb2YgREdBIDIgaW4gY29uZmlndXJlIHNjcmlwdAoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3RocmVhZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIGFkZGVkIE5UIGZpZWxkcyB0byBURUIKCS0gbW92ZWQgdGxzLWZpZWxkcyBhbmQgc29tZSB3aW5lIHNwZWNpZmljIGZpZWxkcyB0byBhIGhpZ2hlciBvZmZzZXQKCS0gYWRkZWQgc29tZSBkb2N1bWVudGF0aW9uCgktIGluaXRpYWxpc2F0aW9uIG9mIHRoZSBVbmljb2RlU3RyaW5nCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBUb2RkIFQuIEZyaWVzIDx0b2RkQGZyaWVzLm5ldD4KCUFkZCBIQVZFX1NPVU5EQ0FSRF9IIHRvIHN1cHBvcnQgT3BlbkJTRC4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgc29tZSBtaXNzaW5nIEVNUiByZWNvcmQgdHlwZXMgYW5kIHVwZGF0ZWQgYW5kIGZpeGVkIG90aGVycwoJLSBBZGRlZCBzdHVicyBhbmQgaGVhZGVycyBmb3IgQ3JlYXRlQ29sb3JTcGFjZSxEZWxldGVDb2xvclNwYWNlIGFuZCBTZXRDb2xvclNwYWNlCgktIEFkZGVkIGhlYWRlciBmb3IgU2V0SUNNTW9kZQoJLSBBZGRlZCBhYmlsaXR5IHRvIHBsYXkgbW9yZSBlbmhhbmNlZCBtZXRhZmlsZSByZWNvcmRzCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJU3RvcmUgcmVmZXJlbmNlIGhkYyBzaXplIGludG8gZW5oYW5jZWQgbWV0YWZpbGUgaGVhZGVyIHdoZW4gY3JlYXRpbmcuCgoJKiBkbGxzL29sZTMyL21vbmlrZXIuYywgZGxscy9vbGUzMi9vbGUyc3R1YnMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgT2xlUnVuLgoKCSogb2JqZWN0cy9kYy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlbW92ZWQgRGVsZXRlT2JqZWN0IGNhbGwgbGVmdCBvdmVyIGZyb20gcHJldmlvdXMgcGF0Y2guCgoJKiB3aW4zMi90aHJlYWQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBiYWQgcmVnaXN0ZXIgY29uc3RyYWludCBpbiBJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIHRoZSBOVCBzeW5jaHJvbml6YXRpb24gZnVuY3Rpb25zCglJbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZSBhbmQgSW50ZXJsb2NrZWRFeGNoYW5nZUFkZC4KCgkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBhY2Nlc3MgJ3dtLT5tb2RuYW1lJyBhZnRlciB0aGUgbW9kcmVmIGhhcyBiZWVuIGZsdXNoZWQuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCBudWxsIGNoZWNrIGluIEdsb2JhbEhhbmRsZS4KCjIwMDAtMDEtMTIgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9vbGVhdXQzMi9wYXJzZWR0LmMsIGluY2x1ZGUvbW9udGhjYWwuaDoKCVJlbW92ZWQgYSBkZXBlbmRlbmN5IGJldHdlZW4gb2xlYXV0MzIgYW5kIGNvbWN0bDMyLgoKCSogaW5jbHVkZS93aW5udC5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU1vcmUgU1RBVFVTXyBjb2Rlcy4KCgkqIGluY2x1ZGUvZGRyYXcuaDogU3RldmUgTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglGaXhlZCBtYWNybyBkZWZpbml0aW9uIG9mIElEaXJlY3REcmF3U3VyZmFjZV9SZXN0b3JlLgoJQWRkZWQgZGVmaW5lcyBmb3IgRGRyYXcncyBXYWl0Rm9yVmVydGljYWxEaXNwbGF5KCkuCgoJKiBpbmNsdWRlL2Rzb3VuZC5oOiBTdGV2ZSBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCUZpeGVkIHR5cG9zIGluIG1hY3JvIGRlZmluaXRpb25zIGZvciBJRGlyZWN0U291bmRCdWZmZXJfR2V0U3RhdHVzLAoJSURpcmVjdFNvdW5kQnVmZmVyX1VubG9jay4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogU3RldmUgTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglNaXNzaW5nIFdpbmVsaWIgZGVjbGFyYXRpb25zIGZvciBBVVhDQVBTLgoKCSogdG9vbHMvYnVpbGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXggKGhhcm1sZXNzKSBhc3NlbWJsZXIgd2FybmluZ3MuCgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJRml4IHByb2JsZW0gd2l0aCBpbml0aWFsaXphdGlvbiAocmVwb3J0ZWQgYnkgQW5kcmVhcyBNb2hyKS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUluZm9QdHIgY2hlY2tpbmcgbWl4ZWQgdXAgV01fREVTVFJPWSBhbmQgV01fQ1JFQVRFLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gSmFuICA5IDIxOjQyOjQyIDIwMDAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU5vbi1MaW51eCBjb21waWxlIGZpeC4KCgkqIGZpbGVzL2Rvc19mcy5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCURPU0ZTX0RvR2V0RnVsbFBhdGhOYW1lIHdvdWxkIHVuZGVyZmxvdyAocCB3b3VsZCBnZXQgcGFzdCB0aGUKCWJlZ2lubmluZyBvZiBidWZmZXIpIGlmIGdpdmVuIHRoZSBuYW1lICIvLy4uIi4KCVJlZ3JvdXBlZCB0aGUgaGFuZGxpbmcgb2YgdGhlIGRpcmVjdG9yeSBzZXBhcmF0b3JzLgoJRGlyZWN0b3J5IHNlcGFyYXRvcnMgaW4gdGhlIHJldHVybmVkIHBhdGggYXJlIG5vdyBhbHdheSBhIHNpbmdsZSAiXCIKCXdoaWNoIHNpbXBsaWZpZXMgdGhlIGhhbmRsaW5nIG9mICIuLiIgaW4gdGhlIG5hbWUuCgoJKiBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUNvcnJlY3RlZCBiZWhhdmlvdXIgb2YgUmVnT3BlbktleSBpbiBjYXNlIG9mIGZhaWx1cmUuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSByZW1vdmVkIGNvcHlpbmcgb2YgSEtFWV9VU0VSUyB0byBIS0VZX0NVUlJFTlRfVVNFUgoJLSBIS0VZX0NVUlJFTlRfVVNFUiBpcyBub3cgc3Via2V5IG9mIEhLRVlfVVNFUlMKCS0gY2hhbmdlZCBxdWVyeV9rZXlfaW5mb19yZXF1ZXN0IHRvIHJldHVybiB0aGUga2V5IG5hbWUgdG9vIChOdFF1ZXJ5S2V5IG5lZWRzIHRoaXMpCgktIHRoZSByb290a2V5cyAoTUFDSElORSBhbmQgVVNFUikgZG8gaGF2ZSBuYW1lcwoKCSogaW5jbHVkZS9nZGkuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jOgoJR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglBdm9pZCBkZWxldGluZyBvZiB0aGUgZGVmYXVsdCAxeDEgYml0bWFwIGZvciBtZW1vcnkgRENzLgoKCSogaW5jbHVkZS9idWlsdGluMTYuaCwgaW5jbHVkZS9idWlsdGluMzIuaCwgbG9hZGVyL25lL21vZHVsZS5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3VzZXIzMi5zcGVjLCB0b29scy9idWlsZC5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tbWRsZy9jb21kbGczMi5zcGVjLCBkbGxzL2Rpc3BsYXkvZGlzcGxheS5zcGVjLCBkbGxzL21vdXNlL21vdXNlLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgaWYxNjMyL2J1aWx0aW4uYzoKCUJ1aWx0LWluIERMTHMgcmVzb3VyY2VzIGFyZSBub3cgc3BlY2lmaWVkIGluIHNwZWMgZmlsZS4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgZmxhZ3MgaW4gYnVpbHQtaW4gRExMcyB0YWJsZXMuCgoJKiBpZjE2MzIvZHVtbXkuYywgaWYxNjMyL2dkaS5zcGVjLCBpZjE2MzIvdXNlci5zcGVjLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL2JpZGkxNi5jOgoJRXJleiBWb2xrIDxlcmV6QGdteC5uZXQ+CglBZGRlZCBzdHVicyBmb3Igc29tZSBCaURpIEFQSSBmdW5jdGlvbnMuCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOgoJQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CglGaXhlZCByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIGFwcCBhbmQgd2luZSBpbiBXQVZFX21jaVBsYXkuCgoJKiBjb250cm9scy9tZW51LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglTdG9wIG1lbnUgdHJhY2tpbmcgd2hlbiBjbGlja2luZyBvbiB0aGUgbWVudSBiYXIgd2hlcmUgdGhlcmUgaXMgbm8KCW1lbnUgaXRlbS4KCgkqIHdpbjMyL25ld2Zucy5jOiBFcmV6IFZvbGsgPGVyZXpAZ214Lm5ldD4KCUJldHRlciBlcnJvciByZXBvcnRpbmcuCgpTYXQgSmFuICA4IDIyOjI3OjMxIDIwMDAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCUJhY2tlZCBvdXQgc2NhbGFibGUgYml0bWFwIGNoYW5nZSAoZ2l2ZXMgdWdseSByZXN1bHRzKS4KCgkqIGNvbnRyb2xzL21lbnUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglHZXRNZW51U3RyaW5nIHNob3VsZCByZXR1cm4gaXRlbWxlbmd0aCBvbiAwIG5NYXggb3IgTlVMTCBzdHIKCUluc2VydEl0ZW0gcG9zPS0xLCBmbGFncyA9IDAgc2hvdWxkIGFwcGVuZCBpdGVtCgkodGhhbmtzIHRvIFNhbmRlciB2YW4gTGVldXdlbikKCgkqIGluY2x1ZGUvYXNwaS5oLCBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jLCBkbGxzL3duYXNwaTMyL3duYXNwaTMyLnNwZWM6CglEYXZpZCBFbGxpb3R0IDxkZmVAbmV0bml0Y28ubmV0PgoJUmVtb3ZlZCBtYWxsb2MvZnJlZSBoYWNrIGFuZCByZXBsYWNlZCB3aXRoIEhlYXBBbGxvYy9IZWFwRnJlZSB0aHJvdWdob3V0IGNvZGUuCglBZGRlZCBjcml0aWNhbCBzZWN0aW9uIGFyb3VuZCBjb2RlIGRlYWxpbmcgd2l0aCBnbG9iYWwgdmFyaWFibGVzLgoJQWRkZWQgYSBmZXcgY29tbWVudHMgYWJvdXQgaG93IEFTUEkgaXMgc3VwcG9zZWQgdG8gd29yay4KCUNvcHkgc2Vuc2UgaW5mbyBpbnRvIHRoZSBjb3JyZWN0IHBsYWNlIChyaWdodCBhZnRlciB0aGUgZml4ZWQgMTYtYnl0ZSBDREIpLgoJTm93IHJldHVybnMgdGFyZ2V0IHN0YXR1cyAobWFueSBXaW5kb3dzIGFwcHMgd29uJ3QgZXZlbiBsb29rIGF0IHRoZQoJc2Vuc2UgYXJlIHVubGVzcyB0aGV5IGdldCBhbiBlcnJvciBjb2RlKS4KCUFkZGVkIFNDX0FCT1JUX1NSQiBGSVhNRS4KCUFkZGVkIFNDX0dFVF9ESVNLX0lORk8gcGxhY2UgaG9sZGVyIGZvciBjbGFyaXR5LgoJVXBkYXRlZCBMaW51eCBTRyBpbnRlcmZhY2Ugc3RydWN0dXJlIHRvIGluY2x1ZGUgbmV3IGtlcm5lbCAyLjIKCXN0YXR1cyBmaWVsZHMuCgoJKiBNYWtlLnJ1bGVzLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxvb2sgZm9yIG91ciBoZWFkZXIgZmlsZXMgZmlyc3QsIHRoZW4gZm9yIHN5c3RlbXMgaGVhZGVycy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVGhlIG5ldyBmaWxlZGlhbG9nIHN0dWZmIGRvZXMgbm90IGhhbmRsZSB0ZW1wbGF0ZS4gU28gZG8gbm90IGNhbGwgaWYKCXRoZXJlIGFyZSBhbnkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQXZvaWQgcHJvYmxlbXMgZHVyaW5nIGNoYW5naW5nIHRoZSBaLW9yZGVyIGlmIHRoZSB3aW5kb3cgYW5kIHRoZQoJd2luZG93IHRvIGluc2VydCBhZnRlciBhcmUgdGhlIHNhbWUuCgoJKiBsaWJ0ZXN0L2V4cGFuZC5jLCBsaWJ0ZXN0L2hlbGxvNS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlbW92ZWQgR1VJIGp1bmsgZnJvbSBleHBhbmQuYywgc28geW91IGNhbiB1c2UgaXQgaW4gY29tbWFuZGxpbmUgbW9kZS4KCUZpeGVkIGhlbGxvNS5jLgoKCSogZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgaXNzdWVzIGZvdW5kIGJ5IHdpbmFwaV9jaGVjay4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMi9zaGVsbDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9sb2NhbC5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCBzdXBwb3J0IGZvciBhdXRvIGFsbG9jYXRlZCBvcmRpbmFscwoJLSBGaXhlZCB2YXJhcmdzICgxNiBiaXQpIGJ1ZwoJLSBNaW5vciBmaXhlcwoKCSogZGxscy92ZXJzaW9uL2luZm8uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgYWxpZ25tZW50IHByb2JsZW0gd2l0aCBWRVJTSU9OX0lORk8gbWVtYmVycy4KCldlZCBKYW4gIDUgMDM6MjQ6NTIgMjAwMCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZCAkWF9FWFRSQV9MSUJTIHRvIGFueSBYIGRlcGVuZGVuZCBjaGVja3Mgb3IgdGhleSB3aWxsIGZhaWwgaWYgc29tZQoJb2YgdGhlICRYX0VYVFJBX0xJQlMgYXJlIHJlcXVpcmVkLgoKCSogd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9wYWludGluZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIE1hZGUgRmlsbFJlY3QgYmVoYXZlIGxpa2UgaXQgZG9lcyBvbiBXaW5kb3dzCgktIENsZWFuZWQgdXAgV01feyxJQ09OfUVSQVNFQkFDS0dST1VORCBkZWZhdWx0IGhhbmRsaW5nCgktIEFkZGVkIHNvbWUgY29tbWVudHMgb24gaG93IFdpbmRvd3MgYmVoYXZlcwoKCSogd2luZG93cy93aW5oZWxwLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUNoZWNrIGlmIHdpbmhlbHAgaXMgYWxyZWFkeSBydW5uaW5nOyB1c2Ugd2luaGxwMzIuZXhlIG9yIHdpbmhlbHAuZXhlCglkZXBlbmRpbmcgb24gdGhlIGVtdWxhdGVkIHZlcnNpb24sIHJlbGFzZSB3aW4xNmxvY2sgYmVmb3JlIGNhbGxpbmcKCVdpbkhlbHBBLgoKCSogQVVUSE9SUywgaW5jbHVkZS9hdXRob3JzLmg6CglVcGRhdGVkIGF1dGhvcnMgbGlzdCBmcm9tIHRoZSBDaGFuZ2Vsb2cuIFBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3UKCWhhdmUgYmVlbiBsZWZ0IG91dC4KCgkqIGRvY3VtZW50YXRpb24vZm9udHM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJ1ZVR5cGUgY2xhcmlmaWNhdGlvbi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZGV0ZWN0IGlmIHRoZSBPcGVuR0wgaW1wbGVtZW50YXRpb24gZGVmaW5lcyB0aGUgcGFsZXR0ZWQgdGV4dHVyZSBhbmQKCSAgY29sb3IgdGFibGUgZXh0ZW5zaW9ucwoJLSBzbWFsbCB3YXJuaW5nIGZpeGVzCgktIGZpeCB0aGUgZG91YmxlICctbFh4Zjg2ZGdhJyB3aGVuIGhhdmluZyBER0EgMi4wCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIGNvbW0gY2xlYW4gdXAsIG11Y2ggbW9yZSBlcnJvciBtZXNzYWdlcywgb25seSB1c2UgVElPQ09VVFEgaWYKCWRlZmluZWQgW3dpbmUtYnVncy8xMDRdLCB0cmllZCBpbXBsZW1lbnRpbmcgU2V0Q29tbVRpbWVvdXRzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSBXaGVuIHByb2Nlc3NpbmcgV01fUEFJTlQgbWVzc2FnZXMsIHRoZSB0cmVldmlldyBtaWdodCBzb21ldGltZXMgdXNlCgkgIHRoZSB3cm9uZyBoZGMuIEZpeGVkLgoJLSBCZXR0ZXIgY2hlY2tpbmcgZm9yIFRSRUVWSUVXX0lORk8gKmluZm9QdHI9TlVMTC4KCSAgU2ltaWxhciB0byBjb2RlIGluIHRvb2xiYXIuYwoJLSBPdGhlciBzbWFsbCBmaXhlcyAoc3ViY2xhc3NlZCBlZGl0IGNvbnRyb2wpLgoKCSogZGVidWdnZXIvbXNjLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiB1bmluaXRpYWxpemVkIHBvaW50ZXIgY2F1c2VkIGNyYXNoZXMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIHZpcnVzIHdhcm5pbmcgYSBiaXQgbW9yZSBkcmFzdGljLCBzaW5jZSBzb21lIHBlb3BsZSBkb24ndCBiZWxpZXZlIHVzLgoKCSogbWlzYy9jb21tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBjb21tIGNsZWFuIHVwLCBtdWNoIG1vcmUgZXJyb3IgbWVzc2FnZXMsIG9ubHkgdXNlIFRJT0NPVVRRIGlmCglkZWZpbmVkIFt3aW5lLWJ1Z3MvMTA0XSwgdHJpZWQgaW1wbGVtZW50aW5nIFNldENvbW1UaW1lb3V0cy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUltcGxlbWVudCBXcml0ZVByaXZhdGVQcm9maWxlU2VjdGlvbkEoKS4KCgkqIGRsbHMvbnRkbGwvcnRsLmM6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglGaXggZm9yIGNvbXBpbGVycyB0aGF0IGRvbid0IHN1cHBvcnQgJ2xvbmcgbG9uZycgKEZyb20gT3ZlIEthYXZlbikuCgpUdWUgSmFuICA0IDAyOjQwOjIyIDIwMDAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuYzoKCU1vdmVkIGFsbG9jYXRpb24gb2YgdGhlIHNvY2tldCBwYWlyIGZvciBhIG5ldyB0aHJlYWQgdG8gdGhlIHNlcnZlci4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOiBNYWRlIGRlYnVnIGV2ZW50cyBhbmQgY29udGV4dHMgc3RhbmRhcmQgb2JqZWN0cy4KCVVzZSBzbGVlcF9vbiB0byB3YWl0IG9uIGRlYnVnIGV2ZW50cy4KCgkqIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYzoKCU1hZGUgc2xlZXBfb24gdXNhYmxlIGZyb20gYWxsIHJlcXVlc3RzLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL21tc3lzdGVtLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbW9yZSBNSURJIG1lc3NhZ2VzIDE2PD0+MzIgbWFwcGluZy4KCUZpeGVzIHNvbWUgYnVncyBpbiBidWZmZXJzIGhhbmRsaW5nIGFuZCBpbmRleCBmb3IgTUFQUEVSLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBpZjE2MzIvdGh1bmsuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCB0aGUgb2Jzb2xldGVkIENhbGxUaW1lRnVuY1Byb2MsIENhbGxEcml2ZXJQcm9jLAoJQ2FsbERyaXZlckNhbGxiYWNrLgoKCSogZGxscy93aW5tbS8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL01ha2VmaWxlLmluLCBkbGxzL3dpbm1tL3RpbWUuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHV0IGJhY2sgdmlzaWJsZSBtaW5pbXVtIHRpbWVyIHJlc29sdXRpb24gdG8gMSBtcy4KCURlY29ycmVsYXRlIHRoZSBzZXJ2aWNlIHRocmVhZCByZXNvbHV0aW9uIGZyb20gdGhlIHVzZXIgcmVxdWlyZWQgdGltZXIKCSYgdmlzaWJsZSBtaW5pbXVtIHJlc29sdXRpb25zLgoJUmVtb3ZlZCB0aGUgQ2FsbGJhY2suVGltZUZ1bmNQcm9jIGVudHJ5LgoKCSogd2luZG93cy94MTFkcnYvbW9uaXRvci5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJR2l2ZSArMCswIGFzIGEgZGVmYXVsdCBwb3NpdGlvbiBmb3IgdGhlIGRlc2t0b3Agd2luZG93LgoKCSogZGxscy93aW5tbS9tbWlvLmM6IEJyYWRsZXkgQmFldHogPGJiYWV0ekBzdHVkZW50LnVzeWQuZWR1LmF1PgoJQ29udmVydCBtbWlvIHRvIGFsbG93IHRoZSB1c2Ugb2YgMzIgYml0IG1taW8gcHJvY2VkdXJlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsbWVudS5jLCBkbGxzL3NoZWxsMzIvc3lzdHJheS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglTbWFsbCBmaXhlcy4KCgkqIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLCBtaXNjL3JlZ2lzdHJ5LmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBpc3N1ZXMgZm91bmQgYnkgd2luYXBpX2NoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2FkdmFwaTMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL2NvbWN0bDMyLmFwaSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyL29kYmMzMi5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVVwZGF0ZWQgd2luYXBpX2NoZWNrIHRvIGhhbmRsZSB0aGUgbmV3IGFkZGl0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgaW5jbHVkZS9tb250aGNhbC5oOgoJQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUltcGxlbWVudGVkIFdNX1NJWkUgbWVzc2FnZSBzdXBwb3J0LiBPcHRpbWl6ZWQgZHJhd2luZyB0byB1c2UKCXByZWNhbGN1bGF0ZWQgc2l6ZSB2YWx1ZXMgcmF0aGVyIHRoYW4gcmVjYWxjdWxhdGluZyBkdXJpbmcgZWFjaCBjYWxsCglvZiBNT05USENBTF9SZWZyZXNoLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9kaWFsb2cuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQ29ycmVjdGVkIHBhcmFtZXRlciBjb3VudCBmb3IgRGlhbG9nQm94SW5kaXJlY3RQYXJhbUFvclcuCgoJKiBjb250cm9scy9zY3JvbGwuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCURvbid0IHNob3cgdGhlIHNjcm9sbGJhciBpZiBTZXRTY3JvbGxpbmZvKCkgaXMgY2FsbGVkIHdpdGggb25seSB0aGUKCVNJRl9ESVNBQkxFTk9TQ1JPTEwgZmxhZy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgZXh0cmEgVVMga2V5bWFwIHdpdGggdGhlIGluZmFtb3VzIHBoYW50b20ga2V5LgoKCSogTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXNlIGEgdW5pZm9ybSBuYW1pbmcgc2NoZW1lIGZvciBkcml2ZXIgbW9kdWxlcy4KCgkqIGluY2x1ZGUvZHJpdmVyLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRW5jYXBzdWxhdGVkIFdpbmUgaW50ZXJuYWwgZGF0YSBpbnRvIGFuIGlmZGVmIF9fV0lORV9fLgoKCSogd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy8uY3ZzaWdub3JlOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCB0aGUgMTYgYml0IGRyaXZlciBmdW5jdGlvbnMgY2FsbG91dCBpbnRvIHRoZSBkaXIuCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIFdPRE1fQlJFQUtMT09QIG1lc3NhZ2UuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGV4dHJhbmVvdXMgRVJSIG1lc3NhZ2UuCgoJKiBkbGxzL3dpbm1tL21jaXNlcS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3VwcG9ydCBmb3IgTUNJX0lORk9fQ09QWVJJR0hUIGFuZCBNQ0lfSU5GT19OQU1FLgoKCSogZGVidWdnZXIvaGFzaC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVzZSBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gd2hpbGUgc2VhcmNoaW5nIGZvciBuZXcgbW9kdWxlcy4KCgkqIGRsbHMvbnRkbGwvbnRkbGwuc3BlYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgc3BlYyBlbnRyeSBmb3IgX2l0b2EuCgoJKiB0b29scy93cmMvQ0hBTkdFUywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JpdGVyZXMuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglHZW5lcmF0ZWQgbGFiZWxzIG9mIHJlc291cmNlIG5hbWVzIG11c3QgYmUgdW5pcXVlIHRocm91Z2hvdXQgdGhlCglnZW5lcmF0ZWQgY29kZS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCSJyZXN1bHRwIiBjYW4gYmUgTlVMTCBpbiBTZW5kTWVzc2FnZVRpbWVvdXQqKCkuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsX21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJLSBwcmV2ZW50IG1lbSBsZWFrIG9mIENSVERMTF9hY21kbG5fZGxsCgktIGJldHRlciBhcmd1bWVudCBwYXJzaW5nCgktIGxhc3QgeGFyZ3YgZW50cnkgaGFzIHRvIGJlIE5VTEwKCS0gcmV0dXJuIHZhbHVlIGlzIGVudmlyb25tZW50IHBvaW50ZXIgaW5zdGVhZCBvZiBOVUxMCgktIGFkZGVkIGEgc3BlYyBlbnRyeSBmb3IgYnNlYXJjaCgpCgpTYXQgSmFuICAxIDIyOjM4OjIxIDIwMDAgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvdXNlci5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3Byb2Nlc3MuaDoKCVBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUltcGxlbWVudGVkIFdhaXRGb3JJbnB1dElkbGUuCgoJKiBtaXNjL2RkZW1sLmMsIHdpbmRvd3Mvd2luLmM6CglGaXhlZCBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cyAoc3BvdHRlZCBieSBGcmFuY29pcyBHb3VnZXQpLgoKCSogcmVsYXkzMi93b3czMi5zcGVjLCBkbGxzL21wci9tcHIuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL3BzYXBpL3BzYXBpLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGx3YXBpLnNwZWMsIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy90YXBpMzIvdGFwaTMyLnNwZWMsIGRsbHMvdmVyc2lvbi92ZXJzaW9uLnNwZWMsIGRsbHMvd2lubW0vd2lubW0uc3BlYywgcmVsYXkzMi9kZHJhdy5zcGVjLCByZWxheTMyL2RpbnB1dC5zcGVjLCByZWxheTMyL2dkaTMyLnNwZWMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsMzIuc3BlYywgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvZGNpbWFuMzIvZGNpbWFuMzIuc3BlYywgZGxscy9kcGxheXgvZHBsYXkuc3BlYywgZGxscy9pY21wL2ljbXAuc3BlYywgZGxscy9pbWFnZWhscC9pbWFnZWhscC5zcGVjLCBkbGxzL2ltbTMyL2ltbTMyLnNwZWMsIGRsbHMvbHpleHBhbmQvbHozMi5zcGVjLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWM6CglNYWtlIHVzZSBvZiBhdXRvbWF0aWMgb3JkaW5hbCBhbGxvY2F0aW9uLgoKCSogc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvZGV2aWNlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZWxlY3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvc25hcHNob3QuYywgc2VydmVyL3NvY2suYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90aW1lci5jLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvY2hhbmdlLmMsIHNlcnZlci9jb25zb2xlLmM6CglNb3ZlZCBwb2xsIGhhbmRsaW5nIHRvIHRoZSBnZW5lcmljIHBhcnQgb2YgdGhlIHNlcnZlciBvYmplY3RzLgoJRml4ZWQgYnVzeSB3YWl0aW5nIG9uIFBPTExFUlIgZXZlbnRzLgoJTWVyZ2VkIHN0cnVjdCBjbGllbnQgaW50byBzdHJ1Y3QgdGhyZWFkLgoKTW9uIERlYyAyNyAwNToyNjowMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvcHJvY2Vzcy5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2hnbG9iYWxzdHJlYW0uYywgZ3JhcGhpY3MvdHR5ZHJ2L2JpdG1hcC5jLCBtaXNjL2RkZW1sLmMsIG1pc2MvdmVyc2lvbi5jOgoJQ29zbWV0aWNzLgoKCSogbWVtb3J5L2F0b20uYywgbWVtb3J5L2Vudmlyb24uYywgbWlzYy9sc3RyLmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy93aW5zb2NrLmMsIHByb2dyYW1zL3JlZ2FwaS9yZWdhcGkuYywgcmVsYXkzMi9idWlsdGluMzIuYywgd2luZG93cy9kcml2ZXIuYywgd2luZG93cy9tZGkuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgZGxscy93aW5tbS9sb2x2bGRydi5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZmlsZXMvcHJvZmlsZS5jLCBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgZ3JhcGhpY3MvcHNkcnYvZm9udC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQnVmZmVyIG92ZXJmbG93cyBhbmQgc3RybmNweSBmaXhlcy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJUEVfRmluZEV4cG9ydGVkRnVuY3Rpb246IHVzZSBhIGJpbmFyeSBzZWFyY2ggZm9yIGZ1bmN0aW9uIG5hbWVzLgoKU3VuIERlYyAyNiAyMzoxMjozOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL29kYmMzMi9vZGJjMzIuc3BlYzoKCUZpeGVkL2NvbW1lbnRlZCBvdXQgZHVwbGljYXRlIGVudHJ5IHBvaW50IG5hbWVzLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYywgdG9vbHMvYnVpbGQtc3BlYy50eHQsIHRvb2xzL2J1aWxkLmM6CglBZGRlZCBzdXBwb3J0IGZvciBhdXRvbWF0aWMgb3JkaW5hbCBhbGxvY2F0aW9uLgoJT3V0cHV0IGxpc3Qgb2YgZnVuY3Rpb24gbmFtZXMgaW4gc29ydGVkIG9yZGVyLgoJQWRkZWQgc3VwcG9ydCBmb3IgbmFtZWxlc3MgKG9yZGluYWwtb25seSkgZW50cnkgcG9pbnRzLgoJQ2xlYW5lZCB1cCBlcnJvciBoYW5kbGluZy4KCgkqIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS93aW4xNmRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy90ZXh0LmMsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jLCBncmFwaGljcy9tZXRhZmlsZWRydi90ZXh0LmMsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgZ3JhcGhpY3MvcHNkcnYvdGV4dC5jLCBncmFwaGljcy90dHlkcnYvZm9udC5jLCBncmFwaGljcy90dHlkcnYvdGV4dC5jLCBncmFwaGljcy93aW4xNmRydi9mb250LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglNb3ZlIERDRnVuY3MgRXh0VGV4dE91dCBhbmQgR2V0VGV4dEV4dGVudFBvaW50IHRvIFVuaWNvZGUuCglNYXAgYSBmZXcgVW5pY29kZSBjaGFycyB0byB0aGUgZmlyc3QgMHhmZiBpbiBwc2Rydi4KCURvbid0IGV4cGVjdCB4MTFkcnYgdG8gZGlzcGxheSBVbmljb2RlIGNoYXJzIHlldC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBtZW1vcnkvc3RyaW5nLmMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglXcmFwcGVkIHNvbWUgc3RyaW5ncyBpbiBhIGRlYnVnc3RyXyogY2FsbC4KCVJlcGxhY2VkIHNvbWUgY2FsbHMgdG8gZGVidWdzdHJfe2Esd30gYnkgZGVidWdzdHJfe2Esd31uLgoJUmVtb3ZlZCByZWR1bmRhbnQgJ0wncyBmb3IgVW5pY29kZSBzdHJpbmdzLgoJVHJpZWQgdG8gaGFybW9uaXplIHRoZSB0cmFjZXMgYSBsaXR0bGUgYml0LgoKCSogbWlzYy9kZWJ1Z3N0ci5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCWRlYnVnc3RyX3cgbm93IHJldHVybnMgc29tZXRoaW5nIGxvb2tpbmcgbGlrZSAnTCJ4eHh4Ii4uLicKCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGSUxFRExHOTVfSGFuZGxlQ3VzdG9tRGlhbG9nTWVzc2FnZXM6CgktIGZvciB0aGUgdGhyZWUgaGFuZGxlZCBtZXNzYWdlcyB3ZSBtdXN0IHJldHVybiB0aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUKCS0gZm9yIENETV9HRVRGSUxFUEFUSCBwYXRocyBsaWtlICJkaXJcZmlsZSIgd2VyZSBoYW5kbGVkIGluY29ycmVjdGx5CgktIGZpeGVkIG11bHRpcGxlIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3dzLgoJRklMRURMRzk1X09uT3BlbjogZml4ZWQgYSB1c2Ugb2Ygc3RybmNweSB3aXRob3V0ICdcMCcuCglGSUxFRExHOTVfU0hFTExfTmV3Rm9sZGVyOiB0aGUgc2l6ZSBvZiBscHN0ckNhcHRpb24gd2FzIGluY29ycmVjdAoJbGVhZGluZyB0byBhIGJ1ZmZlciBvdmVyZmxvdy4KClNhdCBEZWMgMjUgMjI6NTg6NTkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHBsYXlpbmcgbW9yZSByZWNvcmQgdHlwZXMgKHN0aWxsIG1vcmUgdG8gY29tZSkuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQmV0dGVyIHN1cHBvcnQgdmVyeSBsb25nIHN0cmluZ3MgYnkgYXZvaWRpbmcgdG8gY29weSB0aGVtIGluIGEgZml4ZWQKCXNpemUgYnVmZmVyIChvbmUgZXhjZXB0aW9uIHBhcnRseSByZW1haW5zOiBjYWxsYmFjayBzdHJpbmdzKS4KCVJhaXNlIHRoZSBidWZmZXIgc2l6ZSB0byA1MTIgY2hhcmFjdGVycy4KCU1lcmdlIHRoZSBoYW5kbGluZyBvZiBpdGVtIDAgYW5kIG90aGVyIGl0ZW1zIHRvZ2V0aGVyIGluIEdldEl0ZW1BIHRvCglyZWR1Y2UgY29kZSBkdXBsaWNhdGlvbi4KCgkqIGdyYXBoaWNzL3BzZHJ2L2JpdG1hcC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXggUFNEUlZfU3RyZXRjaERJQml0cyBmb3Igbm9uLWludGVnZXIgYnl0ZSBzcmMgd2lkdGhzICgxICYgNGJwcCkuCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDYXN0IHRoZSB1bnNpZ25lZCBpbnQgdG8gc2lnbmVkLCBvciBORUFSX01BVENIIHdpbGwgbm90IHdvcmsuCgoJKiBtaXNjL2Nkcm9tLmMsIG1zZG9zL2ludDJmLmMsIGluY2x1ZGUvY2Ryb20uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgZmlyc3QvbGFzdCBwbGF5YWJsZSBmcmFtZSByZWZlcmVuY2luZy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgZGxscy93aW5tbS9tY2ljZGEvbWNpY2RhLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYm9ndXMgdmFsdWVzIGluIE1DSV9TVEFUVVMgaGFuZGxpbmcgKHBvc2l0aW9uICYgbGVuZ3RoIG9mIHRyYWNrcykuCglBZGRlZCBzdXBwb3J0IGZvciBNQ0lfSU5GTyBvbiBNRURJQV9VUEMgJiBNRURJQV9JREVOVElUWSBjb21tYW5kcy4KCgkqIHdpbmRvd3MvcmVjdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVRlc3QgcG9pbnRlcnMgcGFzc2VkIHRvIGNvcHlyZWN0IGZvciBOVUxMLgoKCSogd2luZG93cy9kaWFsb2cuYzogRG1pdHJ5IFRpbW9zaGtvdiA8ZG1pdHJ5QHNsb2JvZGEucnU+CglSZXN0b3JlIGVycm9uZW91c2x5IGRlbGV0ZWQgbGluZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCURQQV9EZWxldGVQdHIgd2FzIHJlc2l6aW5nIHRoZSBhcnJheSB0byBhIHRvbyBzbWFsbCBzaXplLgoKCSogd2luZG93cy93aW5wb3MuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQXZvaWQgaW5maW5pdGUgbG9vcCBpbiBXSU5QT1NfRmluZEljb25Qb3MgaWYgdGhlIHdpZHRoIG9mIHRoZSBwYXJlbnQKCWNsaWVudCBhcmVhIGlzIGxlc3MgdGhhbiB0aGUgaWNvbiBzcGFjaW5nLgoKCSogZG9jdW1lbnRhdGlvbi9saW51eC1mYXQtcGVybWlzc2lvbnM6CglTdGV2ZW4gRWxsaW90dCA8ZWxsaW90c2xAbWluZHNwcmluZy5jb20+CglBZGRlZCBhIGRvY3VtZW50IHRoYXQgZGVzY3JpYmVzIGNvbmZpZ3VyaW5nIEZBVCBmaWxlc3lzdGVtIHBlcm1pc3Npb25zCglmb3IgV2luZS4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglOVCBhbGxvY2F0ZXMgb25lIHBhZ2UgYXMgVEVCLiBTb21lIG5hdGl2ZSBOVC1kbGxzIGFyZSB1c2luZyB0aGlzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRG9uJ3Qgc2tpcCB1c2FibGUgWCBmb250cy4gQWRkIHN1cHBvcnQgZm9yIGtvaTggZm9udHMuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTW9kaWZpZWQgSWNtcENsb3NlSGFuZGxlIGFuZCBJY21wU2VuZEVjaG9SZXF1ZXN0IHNvIHRoYXQgd2UgZG9uJ3QKCWNyYXNoIGlmIHRoZSBoYW5kbGUgaXMgSU5WQUxJRF9IQU5ETEVfVkFMVUUuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBTdGV2ZW4gRWxsaW90dCA8ZWxsaW90c2xAbWluZHNwcmluZy5jb20+CglDaGFuZ2VkIHRoZSAidGhpc19pc19hX3N5bnRheF9lcnJvciIgZXJyb3IgbWVzc2FnZSB0byBhIG1vcmUgc3BlY2lmaWMKCWVycm9yIG1lc3NhZ2UuCgpNb24gRGVjIDIwIDA0OjE0OjQ4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9tZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3MvdHR5ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvcGF0aC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTW92ZSBCZXppZXIgY29kZSBvdXQgb2YgeDExZHJ2IGludG8gY29tbW1vbiBHREkgY29kZTsgaWYgYW55IGRyaXZlcgoJZG9lcyBub3QgaW1wbGVtZW50IFBvbHlCZXppZXJbVG9dIHRoZSBjdXJ2ZSBpcyBhcHByb3hpbWF0ZWQgdG8gbGluZXMKCWFuZCBkcmF3biB3aXRoIFBvbHlsaW5lLgoJSW1wbGVtZW50IG1hbnkgR0RJLVBhdGggcmVjb3JkaW5nIGZ1bmN0aW9ucyAoYXQgbGVhc3QgdGhlIHdpbjl4IHN1YnNldCkuCglJbXBsZW1lbnQgRmxhdHRlblBhdGggYW5kIEZpbGxQYXRoLgoKCSogZGxscy9kcGxheXgvZHBsYXl4LnNwZWM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglGaXhlZCBvcmRpbmFsIG51bWJlcmluZyBhbmQgYWRkZWQgbmV3IHNwZWMgc3R1Yi4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlYWRkZWQgWHBtIGF1dG9jb25mIGNoZWNrcy4KCgkqIG9sZS9vbGUybmxzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglFbnVtU3lzdGVtTG9jYWxlc0Egc2hvdWxkIGxvb2sgZm9yIHJlZ2lzdHJ5IHZhbHVlcywgbm90IHN1YmtleXMuCgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIGZpeCB0byBnZXQgR0VUX0RFVklDRV9UWVBFIHdvcmtpbmcgKHZlcmlmaWVkIGJ5IERhbiBLZWdlbCkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IElhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQ29ycmVjdGVkIGJhY2tncm91bmQgY29sb3IgYW5kIGZpeGVkIGxlYWtpbmcgR0RJIGJydXNoLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCU5UIGxvYWRlcjogZG9uJ3Qgc3RvcCBsb2FkaW5nIGEgaGl2ZSB3aGVuIGFuIGVycm9yIG9jY3Vycy4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJUGxheU1ldGFGaWxlIGFuZCBFbnVtTWV0YUZpbGUgc2hvdWxkIHdvcmsgaWYgdGhlIGhkYyBpcyBhCgkoZW5oKW1ldGFmaWxlIERDLgoKCSogUkVBRE1FOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglVcGRhdGVkIHRoZSBGcmVlQlNEIG5vdGVzLCB0aGUgTERUIHBhdGNoIGZpbmFsbHkgbWFkZSBpdCBpbnRvIC1jdXJyZW50LgoKCSogZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUlmIGxwVGl0bGU9PU5VTEwgYW5kIGNiQnVmPT0wIHRoZW4gd2UgbXVzdCByZXR1cm4gdGhlIHJlcXVpcmVkIGJ1ZmZlcgoJc2l6ZS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglTaGF1biBNb3JyaXMgPHNoYXVuQGJsdWVuZXB0dW5lLmNvbT4KCUltcGxlbWVudGVkIF9UcmFja01vdXNlRXZlbnQgZm9yIHRoZSBUTUVfTEVBVkUgZmxhZy4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaDoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRzIHJlc29sdXRpb24gLyBkZXB0aCBzd2l0Y2hpbmcgd2l0aCBER0EgMi4wLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gRGVjIDEyIDIxOjI4OjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJRml4ZWQgaGFuZGxpbmcgb2YgREdBMi4wIGtleWJvYXJkIGV2ZW50cy4KCgkqIGRsbHMvbXNhY20zMi9kcml2ZXIuYywgZGxscy9tc2FjbTMyL2ludGVybmFsLmMsIGRsbHMvbXNhY20zMi9tc2FjbTMyX21haW4uYywgZGxscy9tc2FjbTMyL3dpbmVhY20uaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdGhlIGFiaWxpdHkgdG8gb3BlbiBzZXZlcmFsIHN0cmVhbXMgb24gdGhlIHNhbWUgZHJpdmVyLgoJQWRkZWQgYSBmZXcgYWNtTWV0cmljcyBvcHRpb25zLgoKCSogZGxscy9vbGVhdXQzMi9vbGUyZGlzcC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN5c1N0cmluZ0xlbiBjYW4gZ2V0IGEgTlVMTCBwb2ludGVyIChhbmQgc2hhbGwgcmV0dXJuIDApLgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vdyB1c2luZyBub3RpZmljYXRpb24gZm9yIGRldGVjdGluZyB3aGVuIGEgV0FWRUhEUiBoYXMgYmVlbiBwbGF5ZWQKCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRW5oYW5jZWQgc3luY2hyb25pemF0aW9uIGJldHdlZW4gcGxheWJhY2sgdGhyZWFkIGFuZCBzdG9wL2Nsb3NlIGNvbW1hbmRzCglOb3cgdXNpbmcgbm90aWZpY2F0aW9uIGZvciBkZXRlY3Rpbmcgd2hlbiBhIFdBVkVIRFIgaGFzIGJlZW4gcGxheWVkCgoJKiBjb250cm9scy9jb21iby5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUNvbWJvQm94IHNob3VsZCBub3Qgc2VuZCBib2d1cyBtZXNzYWdlcyB0byBlZGl0IGJ1ZGR5IGFuZCB0byBpdHNlbGYuCgoJKiBmaWxlcy9kb3NfZnMuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJRml4ZWQgR2V0U2hvcnRQYXRoTmFtZUEuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNb3NlcyBEZUpvbmcgPGRlam9uZ0Bjcy51bW4uZWR1PgoJRml4ZWQgbWlzc2luZyBsaWJ3aW5lLnNvIHN5bWxpbmsgZHVyaW5nIGluc3RhbGwuIFNldCB0aGUgcnVudGltZQoJbGlua2VyIHBhdGguCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBNdXJhbGkgUGF0dGF0aGUKCUdldE5leHREbGdHcm91cEl0ZW06IG5lZWRzIHRvIGNoZWNrIHRoZSBjb250cm9sIHBhcmVudCBpcyB0aGUgbWFpbiBkaWFsb2cuCglHZXROZXh0VGFiSXRlbTogbWFrZSBzdXJlIHRoaXMgY29udHJvbCBpcyB2aXNpYmxlIGFuZCBub3QgZGlzYWJsZWQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBjbWQgbGluZSBsZW5ndGggY2FsY3VsYXRpb24uCgoJKiBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBncmFwaGljcy9kZHJhdy5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gYWRkZWQgc3VwcG9ydCBvZiBER0EtMi4wIGV2ZW50cwoJLSBmaXhlZCB0aGUgbGVhdmluZyBvZiBER0EtMi4wIG1vZGUKCgkqIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZW51LmgsIHdpbmRvd3Mvd2lucHJvYy5jOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUluIHdpbjMyIGEgV01fTUVOVVNFTEVDVCBtZXNzYWdlIHNob3VsZCBjb250YWluIHRoZSBwb3NpdGlvbiB3aGVuIHRoZQoJaXRlbSByZWZlcnMgdG8gYSBzdWJtZW51LCBub3QgdGhlIHN1Ym1lbnUncyBoYW5kbGUgYXMgaW4gd2luMTYuCgoJKiBmaWxlcy90YXBlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGFyZyB0eXBlcyBvZiBGSVhNRXMuCgoJKiB3aW5kb3dzL21kaS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBwYXNzZWQgaW52YWxpZCB3aW5kb3cgaGFuZGxlIGluIERlZk1ESUNoaWxkUHJvYyouCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBuby4gb2YgYXJndW1lbnRzIGluIGEgV0FSTiBzdGF0ZW1lbnQuCgoJKiBvYmplY3RzL3RleHQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBbGxvd3MgRHJhd1RleHQoMTZ8QXxXKSB0byBnZXQgYSBOVUxMIHN0cmluZyBhcyBwYXJhbWV0ZXIuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBncmFwaGljcy90dHlkcnYvb2JqZWN0cy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBjb250cm9scy9saXN0Ym94LmMsIG1pc2MvcmVnaXN0cnkuYywgbWlzYy92ZXJzaW9uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgMiB1c2VsZXNzIGluY2x1ZGUgd2ludmVyc2lvbi5oCglEbyBub3QgbWFrZSBhdXRvZGV0ZWN0ZWQgdmVyc2lvbiBmaXggb24gZmlyc3QgY2FsbHMgaWYgaXQgaXMgV2luMzEuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBTdHJOQ3B5QSwgU3RyTkNweVcuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglNZXNzYWdlIHRyYW5zbGF0aW9uIFdNX0NSRUFURSBmaXhlZC4KClNhdCBEZWMgMTEgMjM6NTY6NDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9vZGJjMzIvLmN2c2lnbm9yZSwgZGxscy9vZGJjMzIvTWFrZWZpbGUuaW4sIGRsbHMvb2RiYzMyL29kYmMzMi5zcGVjLCBkbGxzL29kYmMzMi9wcm94eW9kYmMuYywgZGxscy9vZGJjMzIvcHJveHlvZGJjLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvc3FsLmgsIGluY2x1ZGUvc3FsZXh0LmgsIGluY2x1ZGUvc3FsdHlwZXMuaCwgbG9hZGVyL2xvYWRvcmRlci5jOgoJWGlhbmcgTGkKCUltcGxlbWVudGF0aW9uIG9mIGEgcHJveHkgT0RCQzMyIGRsbC4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jLCBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3N5c3RyYXkuYywgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUveDExZHJ2LmgsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglLYWkgTW9yaWNoIDxrYWkubW9yaWNoQGJpZ2Zvb3QuZGU+CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN5c3RyYXkgc3VwcG9ydC4KCVN3YWxsb3cgdGhlIHdpbmRvd3Mgc3lzdHJheSBpY29ucyBpbnRvIGtwYW5lbCBzeXN0cmF5IGlmIEtERS9LV00gaXMKCXJ1bm5pbmcuCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUuY29uZi5tYW4uaW4sIG1pc2MvcmVnaXN0cnkuYywgd2luZS5pbmk6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUFkZGVkIGxvYWRlciBmb3IgTlQgcmVnaXN0cnkgZmlsZXMuCgoJKiBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvbnRzZWNhcGkuaCwgaW5jbHVkZS93aW5udC5oLCBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJU3R1YnMgZm9yIExzYUZyZWVNZW1vcnksIExzYVF1ZXJ5SW5mb3JtYXRpb25Qb2xpY3ksIExzYUNsb3NlLgoJU21hbGwgZml4ZXMuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvcmVnaW9uLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEltcGxlbWVudGVkIEdldEVuaE1ldGFGaWxlUGFsZXR0ZUVudHJpZXMKCS0gQWRkZWQgZml4bWUgc3R1YnMgZm9yIFNldE1ldGFSZ24gYW5kIEdldE1ldGFSZ24KCS0gQWRkZWQgc3VwcG9ydCBmb3IgcGxheWluZyBzZXZlcmFsIGVuaGFuY2VkIG1ldGFmaWxlIHJlY29yZHMKCS0gQWRkZWQgYmVnaW5uaW5ncyBvZiBpbXBsZW1lbnRhdGlvbiBmb3IgcGxheWluZyB0aGUgcmVzdCBvZiB0aGUKCSAgZW5oYW5jZWQgbWV0YWZpbGUgcmVjb3JkcwoKCSogZ3JhcGhpY3MvdHR5ZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy90dHlkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3R0eWRydi9icnVzaC5jLCBncmFwaGljcy90dHlkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MvdHR5ZHJ2L2RjLmMsIGdyYXBoaWNzL3R0eWRydi9kaWIuYywgZ3JhcGhpY3MvdHR5ZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3R0eWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MvdHR5ZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MvdHR5ZHJ2L3Blbi5jLCBncmFwaGljcy90dHlkcnYvdGV4dC5jLCBpbmNsdWRlL3R0eWRydi5oLCB3aW5kb3dzL3R0eWRydi9tYWluLmMsIHdpbmRvd3MvdHR5ZHJ2L21vbml0b3IuYywgd2luZG93cy90dHlkcnYvd25kLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUltcHJvdmVkIHRoZSBUVFkgZHJpdmVyLgoKCSogZmlsZXMvZmlsZS5jOiBQZXRlciBHYW50ZW4gPHBldGVyQGdhbnRlbi5vcmc+CglSZXR1cm4gYW4gZXJyb3IgaWYgbHBPdmVybGFwcGVkIGlzIHByb3ZpZGVkIHRvIFJlYWRGaWxlIC8gV3JpdGVGaWxlLgoKCSogbWlzYy93c3ByaW50Zi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBjb25mdXNlIHRoZSAwIGZpbGwgbWFnaWMgb2Ygd3NwcmludGYgd2l0aCB0aGUgIjB4IiBoZXggcHJlZml4LgoKCSogZGxscy93aW5tbS9tbXN5c3RlbS5jLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOgoJQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CglUaGUgd2F2ZW1hcCBkcml2ZXIgd2Fzbid0IHBhc3NpbmcgdGhlIGNhbGxiYWNrIHR5cGUgdG8gdGhlCglEcml2ZXJDYWxsYmFjayByb3V0aW5lIGNvcnJlY3RseS4KCgkqIGZpbGVzL3RhcGUuYzogQWRkZWQgbWlzc2luZyBXSU5BUElzLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUlmIHdlIGhhdmUgcmVnaXN0cnkgZW50cmllcywgdXNlIHRoZW0uIE5ldmVyIG1pbmQgd2hpY2ggdmVyc2lvbiB3ZQoJYXV0b2RldGVjdGVkLgoKCSogZGxscy9vbGVhdXQzMi9vbGVhdXQzMi5zcGVjLCBtaXNjL3BvcnQuYywgdG9vbHMvYmluMnJlcy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIGlzc3VlcyBmb3VuZCBieSB3aW5hcGlfY2hlY2suCgoJKiB0b29scy93aW5hcGlfY2hlY2svd2luMTYvZGlzcGxheS5hcGksIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBmaXhlcyBhbmQgYWRkaXRpb25zLgoKCSogbG9hZGVyL25lL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQWRkZWQgbWlzc2luZyAncmV0dXJuJyBzdGF0ZW1lbnQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCVNtYWxsIGZpeGVzLgoKRnJpIERlYyAxMCAwMzo0NzoxNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9xdWV1ZS5jLCBjb250cm9scy9tZW51LmMsIGluY2x1ZGUvbWVzc2FnZS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglQZXJmb3JtIDE2LzMyQS8zMlcgbWVzc2FnZSBtYXBwaW5nIGZvciBwb3N0ZWQgbWVzc2FnZXMuCgoJKiBmaWxlcy9NYWtlZmlsZS5pbiwgZmlsZXMvdGFwZS5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQWRkZWQgc3R1YnMgZm9yIHRoZSBXaW5OVCB0YXBlIGJhY2t1cCBmdW5jdGlvbnMuCgoJKiBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVBhcnNlIENvZGVWaWV3IHR5cGUvc3ltYm9sIGluZm8gd2l0aCAzMi1iaXQgdHlwZSBpbmRpY2VzLgoJQWRkZWQgKHBhcnRpYWwpIHN1cHBvcnQgZm9yIFZDIDUvNiAuUERCIGZpbGVzLgoJRml4ZWQgdHJlYXRtZW50IG9mIHNvdXJjZSBmaWxlIG5hbWVzIGNvbnRhaW5pbmcgcGF0aC4KCgkqIHNlcnZlci9yZWdpc3RyeS5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglGaXhlZCBvZmYtYnktb25lIGVycm9yLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBTaG93IG1haW4gd2luZG93IGlmIENyZWF0ZVByb2Nlc3Mgd2FzIGNhbGxlZCB3aXRob3V0IHRoZQoJU1RBUlRGX1VTRVNIT1dXSU5ET1cgZmxhZy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBQRV9VbmxvYWRMaWJyYXJ5KCkuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gZG8gbm90IGxvb3NlIGluaXRpYWwgYXV0by1yZXBlYXQgc3RhdHVzIHdoZW4gYWNxdWlyaW5nIHRoZSBrZXlib2FyZCBtb3JlCgkgIHRoYW4gb25lIHRpbWUKCS0gc3VwcG9ydCBvZiBEaXJlY3RYIDcncyBESU1PVVNFU1RBVEUyIHN0cnVjdHVyZQoKCSogZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBsc3QuZGU+CglBZGRlZCBOdFBvd2VySW5mb3JtYXRpb24gc3R1Yi4KCgkqIGRsbHMvb2xlMzIvYmluZGN0eC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVRyYW5zZmVyIG9ubHkgY2JTdHJ1Y3Qgc2l6ZSBpbiBCaW5kQ3R4SW1wbF9TKEcpZXRPcHRpb25zLgoKV2VkIERlYyAgOCAwMzo1NjozNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy93aW4uYywgd2luZG93cy9rZXlib2FyZC5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL25ld2Zucy5jLCBtc2Rvcy9kb3NtZW0uYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2ZvbnQuYywgb2xlL29sZTJubHMuYywgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2luc3RyLmMsIG1lbW9yeS9sb2NhbC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIGdyYXBoaWNzL2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgaWYxNjMyL3RodW5rLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZHJpdmUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvdGFwaTMyL2xpbmUuYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBjb250cm9scy9lZGl0LmM6CglEaW1pdHJpZSBPLiBQYXVuIDxkaW1pQGNzLnRvcm9udG8uZWR1PgoJTWFrZSB1c2Ugb2YgdGhlIERFRkFVTFRfREVCVUdfQ0hBTk5FTCB3aGVyZSBhcHByb3ByaWF0ZS4KCVVzZSB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIEZJWE1FLCBFUlIsIFdBUk4sIFRSQUNFIGZvciB0aGUgZGVmYXVsdAoJY2hhbm5lbC4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRGVsYXkgc2VuZGluZyBkZWJ1ZyBldmVudHMgdW50aWwgcHJvY2VzcyBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZS4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWE6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCwgYWRkZWQgY2hhcHRlciBvbiBjb25maWd1cmF0aW9uIGFuZCBhcmNoaXRlY3R1cmUuCgoJKiBkbGxzL3dpbm1tL21taW8uYzogQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CgktIEZpeCBNTUlPX3tPcGVuLFJlbmFtZX0gdG8gY2hlY2sgdGhlIGZpbGVuYW1lIChvZiB0aGUgZm9ybQoJICBmaWxlLmV4dCtBQkMpIGZvciB0aGUgY29ycmVjdCBtbWlvIHByb2NlZHVyZSB0byB1c2UuCgktIG1taW9TdHJpbmdUb0ZPVVJDQyBub3cgY29udmVydHMgdG8gdXBwZXJjYXNlIGlmIGFza2VkIHRvLCBhbmQgaGFuZGxlcwoJICBzdHJpbmdzIG9mIGxlbmd0aCA8IDQuCgoJKiBjb250cm9scy9lZGl0LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJRml4IHByb2JsZW0gd2l0aCBFTl9VUERBVEUgbm90aWZpY2F0aW9uIHNlbnQgYnkgZWRpdCBjb250cm9sLgoKTW9uIERlYyAgNiAwMToyMDowMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9tb3VzZS8uY3ZzaWdub3JlLCBkbGxzL21vdXNlL01ha2VmaWxlLmluLCBkbGxzL21vdXNlL21vdXNlLnNwZWMsIGRsbHMvbW91c2UvbW91c2VfbWFpbi5jLCBkbGxzL21vdXNlL21vdXNlcmMucmMsIGRvY3VtZW50YXRpb24vcmVzb3VyY2VzLCBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL2Rpc3BsYXkuc3BlYywgaWYxNjMyL21vdXNlLnNwZWMsIGlmMTYzMi9NYWtlZmlsZS5pbiwgaWYxNjMyL2J1aWx0aW4uYywgbG9hZGVyL25lL3Jlc291cmNlLmMsIHdpbmRvd3MvZGlzcGxheS5jLCB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3MvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy9kaXNwbGF5Ly5jdnNpZ25vcmUsIGRsbHMvZGlzcGxheS9NYWtlZmlsZS5pbiwgZGxscy9kaXNwbGF5L2Rpc3AucmMsIGRsbHMvZGlzcGxheS9kaXNwbGF5LnNwZWMsIGRsbHMvZGlzcGxheS9kaXNwbGF5X21haW4uYzoKCUFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgLnJjIGZpbGUgc3VwcG9ydCBmb3IgV2luMTYgTkUgbW9kdWxlcy4KCU1vdmVkIGRpc3BsYXkuYyBhbmQgbW91c2UuYyB0byBzZXBhcmF0ZSBkbGwgZGlyZWN0b3JpZXMuCgoJKiBjb250cm9scy9jb21iby5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCUFsbG93IHRvIGRlc2VsZWN0IGFsbCBpdGVtcyBieSBzZW5kaW5nIENCX1NFVENVUlNFTCgtMSkgdG8gdGhlIGNvbWJvLgoKU3VuIERlYyAgNSAyMzo1NDowNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9wYWludGluZy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9kYy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2RjLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvdHR5ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS9lbmhtZXRhZmlsZWRydi5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIGluY2x1ZGUvcGF0aC5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVzIHNldmVyYWwgYnVncyBpbiBnZGkgcGF0aCBoYW5kbGluZy4KCUFkZHMgKlBhdGggZnVuY3Rpb25zIHRvIGRjIGZ1bmNzIHRhYmxlICsgYWRkIEVuaE1ldGFGaWxlIHJlY29yZGluZy4KCVNlcGFyYXRlIG91dCBQb2x5bG5lL1BvbHlsaW5lVG8gYW5kIFBvbHlCZXppZXIvUG9seUJlemllclRvIGluIGRjCglmdW5jcyB0YWJsZSB0byBlbmFibGUgcHJvcGVyIGVuaG1ldGFmaWxlIHJlY29yZGluZy4KCVRoZSBjdXJyZW50IHBvc2l0aW9uIHVwZGF0ZSBpbiAqVG8gZnVuY3Rpb25zIGlzIG5vdyBoYW5kbGVkIGJ5IHRoZQoJbWFpbiBmdW5jdGlvbiBhbmQgbm90IGluIHRoZSBkcml2ZXJzLgoJTW92ZSBVU0VSIGZ1bmN0aW9ucyBmcm9tIGdyYXBoaWNzL3BhaW50aW5nLmMgLT4gd2luZG93cy9wYWludGluZy5jCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYywgZGxscy9vbGUzMi9vbGUyLmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuc3BlYywgaW5jbHVkZS9vbGUydmVyLmgsIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CgktIHRoZSBPTEUgdmVyc2lvbiByZXR1cm5lZCB3YXMgdG9vIGxvdwoJLSByZW5hbWVkIE9BQnVpbGRWZXJzaW9uMTYgdG8gT2FCdWlsZFZlcnNpb24xNgoJLSBzcGVsbGluZyBmaXhlcwoKCSogZmlsZXMvZHJpdmUuYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJRml4IEdldEN1cnJlbnREaXJlY3RvcnlBIGFuZCBXIHRvIHJldHVybiB0aGUgbmVlZGVkIHNwYWNlIGZvciB0aGUgQ1dELAoJaWYgdGhlIGJ1ZmZlciBzaXplIGlzIG5vdCBsYXJnZSBlbm91Z2guCgoJKiBjb250cm9scy9idXR0b24uYywgd2luZG93cy9kaWFsb2cuYzoKCURtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJUmVtb3ZlIGhhY2sgZm9yIGtleWJvYXJkIG1lc3NhZ2VzIGluIGRpYWxvZ3MuCgoJKiB3aW4zMi9kZXZpY2UuYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglTdHVicyBmb3IgVk1NIEdldERlbWFuZFBhZ2VJbmZvIGZ1bmN0aW9uIGFuZCBWV2luMzIgIkdldCBWTUNQRCBWZXJzaW9uIi4KCUltcGxlbWVudGF0aW9uIGZvciBWV2luMzIgSW50MzEvRFBNSSBkaXNwYXRjaCBjYWxsLgoJRml4ZWQgImRhbmdsaW5nIGVsc2UiIGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJV2hlbmV2ZXIgd2UgZG8gYW4gc3RybmNweSB3ZSBzaG91bGQgbWFrZSBzdXJlIHdlIHB1dCBhICdcMCcgYXQgdGhlIGVuZAoJb2YgdGhlIGJ1ZmZlci4KCgkqIGluY2x1ZGUvdG9vbGhlbHAuaCwgbWlzYy90b29saGVscC5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIFRocmVhZDMyRmlyc3QvTmV4dCBzdHVicy4KCgkqIGluY2x1ZGUvdGhyZWFkLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgd2luZXNlcnZlcidzIGJ1ZmZlciAmIGJ1ZmZlcl9zaXplIGF0IHRoZSBlbmQgb2YgVEVCIHNvIHRoYXQgSUUKCWRvZXNuJ3Qgb3ZlcndyaXRlIHRoZW0uCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1jaUluZm8uCgoJKiBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIFdBVkVfRk9STUFUX1FVRVJZIGZsYWcgaW4gd29kT3Blbi4KCgkqIGRsbHMvbXNhY20zMi9zdHJlYW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb3JyZWN0bHkgaW1wbGVtZW50IEFDTV9TVFJFQU1PUEVORl9RVUVSWSBmbGFnIGluIGFjbU9wZW5TdHJlYW0uCgoJKiBkbGxzL3dpbm1tL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIE1DSV9PUEVOIGNvbW1hbmQgZm9yIHR5cGVzIGxpa2UgIkNEQVVESU8hSDoiLgoKCSogZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBncmFwaGljcy9kZHJhdy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNZXJnZWQgX2FsbF8gbHBDbGlwcGVyIGludG8gY29tbW9uX3N1cmZhY2UuCglBZGQgTlVMTCBwdHIgY2hlY2sgdG8gU2V0Q2xpcHBlci4KCVNvbWUgbW9yZSBkZWJ1ZyBvdXRwdXQuCgoJKiBpbmNsdWRlL2NvbmZpZy5oLmluLCBtaXNjL3BvcnQuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSB0aGUgcmVhbCBnbGliYyBvcGVucHR5IGlmIHByZXNlbnQuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHR5cGVkZWYgdG8gaW5zdXJlIGNvbXBpbGF0aW9uIG9uIGFsbCBnY2MmZWdjcyB2ZXJzaW9ucy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBfY29weV9yZWdpc3RyeSgpLgoKCSogaW5jbHVkZS93aW5ubHMuaCwgb2xlL25scy9lc2EubmxzLCBvbGUvbmxzL2VzYy5ubHMsIG9sZS9ubHMvZXNkLm5scywgb2xlL25scy9lc2cubmxzLCBvbGUvbmxzL2VzbS5ubHMsIG9sZS9ubHMvZXNuLm5scywgb2xlL25scy9lc3AubmxzOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglBZGRlZCBzb21lIGNvbnN0YW50cyBmb3IgU3BhbmlzaC4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBDYWxsIERsbEVudHJ5UG9pbnQgZm9yICpldmVyeSogcHJvY2VzcyB0aGF0IGxvYWRzIHRoZSBETEwsIG5vdAoJanVzdCBmb3IgdGhlIGZpcnN0IG9uZS4KCUJ5cGFzcyAzMi0+MTYtPjMyIHRyYW5zaXRpb24gd2hlbiBjYWxsaW5nIERsbEVudHJ5UG9pbnQgb2YgYnVpbHQtaW4uCgoJKiBpZjE2MzIvdXNlci5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgVVNFUi5EbGxFbnRyeVBvaW50KCkuCgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbCAxNi1iaXQgaW5zdGVhZCBvZiAzMi1iaXQgVXNlclNpZ25hbFByb2MgZW50cnkgcG9pbnQuCglEb24ndCBsb2FkIFVTRVIzMi5ETEwgdW5sZXNzIHJlcXVlc3RlZCBieSB0aGUgcHJvZ3JhbS4KCUJ1Z2ZpeDogUGFzcyB0aGUgY29ycmVjdCB0aHJlYWQgSUQgdG8gVXNlclNpZ25hbFByb2MuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjcmFzaCB3aGVuIG1hcCBmYWlscy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJU2hvdyB1c2Ugb2YgdW5kb2N1bWVudGVkIG1lc3NhZ2VzLgoKCSogaW5jbHVkZS9rZXlib2FyZC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CgktIHJlbW92ZWQga2V5Ym9hcmQgYXV0by1yZXBlYXQgd2hlbiBESW5wdXQgYWNxdWlyZXMgaXQKCS0gcmVtb3ZlZCBzb21lIChub3cpIG9ic29sZXRlIGZpeG1lJ3MKCgkqIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgZ3JhcGhpY3MvZGRyYXcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW92ZWQgbHBDbGlwcGVyIGludG8gY29tbW9uX2RpcmVjdGRyYXdzdXJmYWNlIHN0cnVjdAoJUmVsZWFzZSBvbGQgY2xpcHBlciBvbiBuZXcgc2V0CgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBpbmNsdWRlL21tc3lzdGVtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZha2UgTUlESV9JT19TVEFUVVMgc3VwcG9ydCBpbiBtaWRpIGluIG9wZW4KCUZpeGVkIGJ1ZyBpbiBtaWRpIGluIHdoaWxlIHJlYWRpbmcgZGF0YQoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaW5maW5pdGUgbG9vcCBmb3IgMC1sZW5ndGggd2F2ZWhkcnMuCgoJKiBkbGxzL3dpbm1tL21jaXdhdmUvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1Z2d5IHBsYXliYWNrIGZvciBub24gUENNIGZpbGVzCglBZGRlZCBzdXBwb3J0IGZvciBmcm9tICYgdG8gaW5kZXhlcyBmb3IgcGxheWJhY2sKCU5vdyB1c2luZyBkb3VibGUgd2F2ZWhkciBmb3IgYmV0dGVyIG91dHB1dAoJQ2xlYW5lZC11cCBpbnRlcm5hbCBzdHJ1Y3RzIGFuZCByZW1vdmVkIGxhc3QgMTYgYml0IEFQSSBhZGhlcmVuY2UKCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglUcmllZCB0byByZWR1Y2UgZWNobyBpbiBwbGF5U291bmQgQVBJICh1c2luZyB0d28gd2F2ZWhkciBpbnN0ZWFkIG9mCglvbmUpLgoKCSogZGxscy93aW5tbS9sb2x2bGRydi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIGNhbGxiYWNrIG1lY2hhbmlzbXMgZm9yIE1JREkgSU4uCgoJKiBkbGxzL21zYWNtMzIvc3RyZWFtLmMsIGRsbHMvbXNhY20zMi93aW5lYWNtLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGltcHJvcGVyIGFjbSBzdHJlYW1zIGNsb3NpbmcuCgoJKiBkbGxzL21zYWNtMzIvZHJpdmVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRGVidWcgdHJhY2VzIGNvc21ldGljIGZpeGVzLgoKCSogREVWRUxPUEVSUy1ISU5UUzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGVycm9ycyAodGhhbmtzIHRvIEYgR291Z2V0IGZvciByZXBvcnRpbmcgdGhlbSkuCglBZGRlZCBzb21lIGJpdHMgb24gdGh1bmtpbmcgYW5kIHJlc291cmNlcyBmb3IgRExMcy4KClNhdCBEZWMgIDQgMDQ6MjI6MDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgaW5jbHVkZS90c194bGliLmgsIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGxpYi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUZpcnN0IHN1cHBvcnQgb2YgREdBIDIuMCBmb3IgRGlyZWN0RHJhdy4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW4zMi9uZXdmbnMuYzoKCUVyZXogVm9sayA8ZXJlekBnbXgubmV0PgoJU3R1YnMgZm9yIEdldC9TZXRQcm9jZXNzRGVmYXVsdExheW91dC4KCgkqIGZpbGVzL3Byb2ZpbGUuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViIGZvciBDbG9zZVByb2ZpbGVVc2VyTWFwcGluZy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglVc2UgRElucHV0J3MgaW50ZXJuYWwgbW91c2UgZXZlbnQgaGFuZGxlciB0byBoYW5kbGUgdGhlIEdldERldmljZVN0YXRlCglmdW5jdGlvbi4KCgkqIGRsbHMvd2lubW0vbW1zeXN0ZW0uYzogUGV0ZXIgR2FudGVuIDxwZXRlckBnYW50ZW4ub3JnPgoJd2F2ZUhkci5scERhdGEgd2FzIGV2ZW50dWFsbHkgSGVhcEZyZWUoKWVkIHVuaW5pdGlhbGl6ZWQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFNlcmdlaSBUdXJjaGFub3YgPHR1cmNoYW5vdkBvdHZwcmltLnJ1PgoJRml4IGZvciBHZXRCaW5hcnlUeXBlIHRvIHJldHVybiBTQ1NfRE9TX0JJTkFSWSBpZiBleHRlbmRlZCBzaWduYXR1cmUKCWlzIHVua25vd24uCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvZWxmZGxsLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIDMyLWJpdCBtb2R1bGUgbmFtZSBoYW5kbGluZyB0byBjb25mb3JtIGJldHRlciB0byBXaW45eC4KCVJlbW92ZWQgT0ZTVFJVQ1QgcGFzc2luZyBkdXJpbmcgcHJvY2VzcyBjcmVhdGlvbiBzZXF1ZW5jZS4KCUJ1Z2ZpeDogZG9uJ3Qgc2V0IGV4ZV9tb2RyZWYgd2hlbiBMT0FEX0xJQlJBUllfQVNfREFUQUZJTEUgaXMgc2V0LgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmMsIGluY2x1ZGUvd2luc3ZjLmgsIGRsbHMvYWR2YXBpMzIvYWR2YXBpMzIuc3BlYzoKCU1pY2hhZWwgTWNDb3JtYWNrIDxtY2Nvcm1hY0BhYWxzMjcuYWxjYXRlbC5jb20uYXU+CglBZGRlZCBjb2RlIHRvIHNvbWUgc2VydmljZSBmdW5jdGlvbnMgKHNvbWUgdW50ZXN0ZWQpLCBmaXhlZAoJZGVjbGFyYXRpb24gb2Ygc2VydmljZSBtYWluIGZ1bmN0aW9uLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaDoKCVBpZXJyZSBNYWdlYXUKCU11cmFsaSBQYXR0YXRoZQoJRnJhbmNvaXMgQm9pc3ZlcnQKCUZyYW5jaXMgQmF1ZGV0CglIZW5uaW5nIEhvZmZtYW5uCglNYW55IGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIHN0dWJzIGZvciBzZXZlcmFsIE1SVSBsaXN0IGZ1bmN0aW9ucyBhbmQgZG9jdW1lbnRlZCBzb21lIG90aGVycy4KCgkqIHNlcnZlci9maWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRmx1c2ggaGFuZGxlIGluIGFueSBhY2Nlc3MgbW9kZS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVzIG9mZiBieSBvbmUgZXJyb3IgaW4gaXRlbSBpbnNlcnRpb24uCgoJKiBkbGxzL3dpbm1tL3dpbmVvc3MvYXVkaW8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbGxvdyAxJSBkZXZpYXRpb24gZnJvbSBzcGVjaWZpZWQgc2FtcGxpbmcgcmF0ZSBmb3Igc29tZSBzb3VuZGNhcmRzLgoKCSogaW5jbHVkZS9kM2QuaDogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCVN1cHByZXNzZWQgdGhlIGluY2x1c2lvbiBvZiBPcGVuR0wgaGVhZGVycy4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgc3R1YiBmb3IgY29udmVyc2lvbiBmcm9tIG1ldGEgdG8gZW5oYW5jZSBtZXRhIGZpbGVzLgoJLSBJbXBsZW1lbnRlZCBHZXRFbmhNZXRhRmlsZUJpdHMgZm9yIGVuaGFuY2VkIG1ldGEgZmlsZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmg6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJSW1wcm92ZWQgc3R1YnMgZm9yIHRoZSBkZHJhdyBjbGlwcGVyIHJvdXRpbmVzLgoKTW9uIE5vdiAyOSAwMjo0ODo0MyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvdGltZS5jOiBNYWRlIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lIHJldHVybiB2YWx1ZSBtb3JlIHByZWNpc2UuCgoJKiBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYzoKCUZpeGVkIGdldF9ldmVudF9vYmovZ2V0X2ZpbGVfb2JqIHRvIHVzZSB0aGUgcHJvY2VzcyBwYXJhbWV0ZXIgKHRoYW5rcwoJdG8gRXJpYyBQb3VlY2gpLgoKCSogc2VydmVyL3Byb2Nlc3MuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYzoKCUZpeGVkIERFQlVHX09OTFlfVEhJU19QUk9DRVNTIGFnYWluICh0aGFua3MgdG8gVWxyaWNoIFdlaWdhbmQpLgoKCSogc2NoZWR1bGVyL3RpbWVyLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RpbWVyLmMsIHNlcnZlci90cmFjZS5jLCBkbGxzL250ZGxsL250LmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9NYWtlZmlsZS5pbjoKCUltcGxlbWVudGVkIHdhaXRhYmxlIHRpbWVycy4KClN1biBOb3YgMjggMjE6MDM6NDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHRvb2xzL2JpbjJyZXMuYzogQnVnIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGluY2x1ZGUvcHJzaHQuaDoKCVNlcmdlIEl2YW5vdgoJUGllcnJlIE1hZ2VhdQoJVGh5IE5ndXllbgoJRG9uIEtlbGx5CglOb29tZW4gSGFtemEKCUxvdHMgb2YgYnVnIGZpeGVzIGFuZCBuZXcgZmVhdHVyZXMgaW4gcHJvcGVydHkgc2hlZXRzLgoKCSogd2luMzIvbmV3Zm5zLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGdyYXBoaWNzL3BzZHJ2L2ZvbnQuYywgZGxscy9jb21jdGwzMi90YWIuYzoKCU5pZWxzIEtyaXN0aWFuIEJlY2ggSmVuc2VuIDxua2JqQGltYWdlLmRrPgoJQ29tcGlsZXIgd2FybmluZ3MgZml4ZWQuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogQnJhZGxleSBCYWV0eiA8YmJhZXR6QHN0dWRlbnQudXN5ZC5lZHUuYXU+CglHaXZlIHRoZSBhcHAgYmFjayB0aGUgZXhhY3QgZm9udCBuYW1lIGl0IGFza2VkIGZvci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCVByZXZlbnQgYSBjcmFzaCBpZiBtZXNzYWdlcyBhcmUgc2VudCB0byBhIHRvb2xiYXIgd2luZG93IGJlZm9yZQoJV01fTkNDUkVBVEUgb3IgYWZ0ZXIgV01fREVTVFJPWS4KCgkqIGRsbHMvd2lubW0vd2lubW1fRXMucmM6IEp1bGlvIENlc2FyIEdhenF1ZXogPGpnYXpxdWV6QGRsZC5uZXQ+CglVcGRhdGVkIFNwYW5pc2ggTU0gZXJyb3Igc3RyaW5nIHRyYW5zbGF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3RyZWV2aWV3Lmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSAoZmluYWw/KSB1cGRhdGUgb2YgVHJlZVZpZXdfKiBtYWNybydzLgoJLSBpbXBsZW1lbnRhdGlvbiBvZiBUVk1fU0VUSU5TRVJUTUFSSyAmIFRWTV9TRVRJTlNFUlRNQVJLQ09MT1IKCS0gZml4ZWQgc29tZSB0eXBvJ3MKCS0gY3VzdG9tIGRyYXcgZW5oYW5jZW1lbnRzCgktIGltcGxlbWVudGF0aW9uIG9mIHN0YXRlIGltYWdlcwoJLSBpbXBsZW1lbnRhdGlvbiBvZiBUVlNfQ0hFQ0tCT1hFUwoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBzb21lIHZpc3VhbCB0b29sYmFyIGJ1Z3MuCgoJKiBSRUFETUU6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUFkZGVkIG5vdGVzIGFib3V0IFdpbmUtcmVsYXRlZCBGcmVlQlNEIGtlcm5lbCBwYXRjaGVzLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVVzZSBSZWdRdWVyeUluZm9LZXkgdG8gY291bnQgbnVtYmVyIG9mIHByaW50ZXJzLgoKCSogc2VydmVyL3VuaWNvZGUuaDogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJRG9uJ3QgdHJ5IHRvIGNhbGwgdG93dXBwZXIoKSB3aGVuIHRoZXJlJ3Mgbm8gd2N0eXBlLmguCgoJKiBjb250cm9scy9jb21iby5jOiBEbWl0cnkgVGltb3Noa292IDxkbWl0cnlAc2xvYm9kYS5ydT4KCVdoZW4gY29tYm9ib3ggc2VsZWN0aW9uIGNoYW5nZXMsIHVwZGF0ZSBpdHMgZWRpdCBib3ggYWNjb3JkaW5nbHkuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IERtaXRyeSBUaW1vc2hrb3YgPGRtaXRyeUBzbG9ib2RhLnJ1PgoJTm90aWZ5IHBhcmVudCBvZiBsaXN0Ym94IGlmIHJlcXVlc3RlZC4KClRodSBOb3YgMjUgMjM6NDI6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9wdHJhY2UuYzogTW9yZSBwb3J0YWJpbGl0eSBmaXhlcyAodGhhbmtzIHRvIEp1ZXJnZW4gTG9jaykuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCVNldC91c2UgZnMvZ3MgZnJvbSB0aGUgc2lnY29udGV4dCBzdHJ1Y3QsIHRoZSBjb3JyZXNwb25kaW5nIGtlcm5lbAoJY2hhbmdlIG5vdyBmaW5hbGx5IGhhcyBiZWVuIE1GQydkIHRvIC1zdGFibGUuCgoJKiBkb2N1bWVudGF0aW9uL2ZvbnRzOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglNZW50aW9uIGZyZWUgVHJ1ZXR5cGUgZm9udCBzZXJ2ZXJzIChYZnN0dCBhbmQgeGZzZnQpLgoKCSogd2luZWRlZmF1bHQucmVnOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglOb3RlIHdoYXQgdG8gZG8gd2l0aCB0aGUgd2luZWRlZmF1bHQucmVnIGluIHRoZSBmaWxlLgoKCSogd2luMzIvZGV2aWNlLmM6IFBldGVyIEdhbnRlbiA8cGV0ZXJAZ2FudGVuLm9yZz4KCUltcGxlbWVudGVkIHBhcnRzIG9mIF9QYWdlUmVzZXJ2ZSgpIF9QYWdlQ29tbWl0KCkgX1BhZ2VEZWNvbW1pdCgpCglfUGFnZUNoYW5nZVBlcm1pc3Npb25zKCkgYW5kIF9QYWdlRnJlZSgpIHVzaW5nIHRoZQoJVmlydHVhbCooKS1GdW5jdGlvbnMgKHdpdGggdGhlIGdyZWF0IGhlbHAgb2YgVWxyaWNoIFdlaWdhbmQpLgoKCSogbWVtb3J5L2F0b20uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglSZW1vdmVkIGZpeG1lLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBTZXZlcmFsIGJ1ZyBmaXhlcyBpbiBzYXZlX2tleSgpLgoKCSogZGxscy9hZHZhcGkzMi9yZWdpc3RyeS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYm9ndXMgZXJyb3IgZGV0ZWN0aW9uIGZvciBSZWdFbnVtVmFsdWVbQVddIGFuZAoJUmVnUXVlcnlWYWx1ZUV4W0FXXS4KCgkqIGRsbHMvZHBsYXl4L2RwbGF5LmMsIGRsbHMvZHBsYXl4L2RwbGF5eF9nbG9iYWwuYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5oLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBBZGRlZCBnbG9iYWwgZGF0YSBtdXR1YWwgZXhjbHVzaW9uCgktIFJlbW92ZWQgaGFjayBmb3IgY3JlYXRpbmcgcHJvY2Vzc2VzIHN1c3BlbmRlZCBub3cgdGhhdCBpdCdzIGltcGxlbWVudGVkCgktIEZpeGVkIG9yZGluYWwgbnVtYmVyaW5nIGFuZCBhZGRlZCBzcGVjIHN0dWJzCgktIEZpeGVkIEVudW1Db25uZWN0aW9ucyBjYWxsYmFjayB0byBmaWxsIGluIGFsbCBwYXJhbWV0ZXJzIHdpdGggdmFsaWQgZGF0YQoJLSBNYWRlIGRpcmVjdCBwbGF5IGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIGZvbGxvdyB0aGUgc2FtZSBwYXR0ZXJuIGFzCgkgIGRpcmVjdCBwbGF5IGxvYmJ5CgoJKiBkbGxzL3dpbjg3ZW0vZW11bGF0ZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU2V2ZXJhbCBpbXByb3ZlbWVudHMuCgoJKiBvbGUvb2xlMm5scy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgaW52YWxpZCBMQ01hcFN0cmluZyBmaXhtZSBmb3IgTk9STV9JR05PUkVLQU5BVFlQRSBjYXNlLgoKCSogaW5jbHVkZS9jb21tLmgsIG1pc2MvY29tbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgd2luMTYgc2VyaWFsIGNvbW1zIGxlc3Mgb2YgYSBDUFUgaG9nLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgbWVtb3J5L3ZpcnR1YWwuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90cmFjZS5jLCBzZXJ2ZXIvdW5pY29kZS5jLCBzZXJ2ZXIvdW5pY29kZS5oOgoJU3RvcmUgYWxsIG9iamVjdCBuYW1lcyBhcyBVbmljb2RlIGluIHRoZSBzZXJ2ZXIuCgpXZWQgTm92IDI0IDE5OjM0OjMyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3NlcnZlci5oLCBtaXNjL3JlZ2lzdHJ5LmMsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvdHJhY2UuYywgd2luZS5pbmk6CglBZGRlZCB3aW5lLmNvbmYgb3B0aW9uIGZvciBuZXcgZm9ybWF0IHJlZ2lzdHJ5IGZpbGVzLgoJQWRkZWQgb3B0aW9uYWwgcGVyaW9kaWMgc2F2aW5nIG9mIHRoZSByZWdpc3RyeS4KCgkqIG1pc2MvcmVnaXN0cnkuYywgc2VydmVyL3JlZ2lzdHJ5LmM6CglBZGRlZCBzdXBwb3J0IHRvIHRoZSBzZXJ2ZXIgZm9yIGxvYWRpbmcgbmV3IGZvcm1hdCAodmVyc2lvbiAyKSBmaWxlcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogQnVnIGZpeGVzICh0aGFua3MgdG8gSnVlcmdlbiBTY2htaWVkKS4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgZGxscy9udGRsbC9leGNlcHRpb24uYzoKCUFkZGVkIGN1cnJlbnQgY29udGV4dCB0byB0aGUgZXhjZXB0aW9uIGRlYnVnIGV2ZW50IHNlbnQgdG8gdGhlIHNlcnZlci4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCUZpeGVkIGhhbmRsaW5nIG9mIGRlYnVnIGV2ZW50cyBvbiB0aHJlYWQvcHJvY2VzcyBleGl0LgoKCSogZGVidWdnZXIvZGJnLnksIGluY2x1ZGUvd2luYmFzZS5oLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKCVJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIGEgY3JpdGljYWwgc2VjdGlvbiB3YWl0IGZhaWxlZC4KClR1ZSBOb3YgMjMgMjM6NDM6MjkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3R0eWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvdHR5ZHJ2L2JpdGJsdC5jLCBncmFwaGljcy90dHlkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3R0eWRydi9icnVzaC5jLCBncmFwaGljcy90dHlkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MvdHR5ZHJ2L2ZvbnQuYywgZ3JhcGhpY3MvdHR5ZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIGdyYXBoaWNzL3R0eWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3R0eWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MvdHR5ZHJ2L3BhbGV0dGUuYywgZ3JhcGhpY3MvdHR5ZHJ2L3Blbi5jLCBncmFwaGljcy90dHlkcnYvdGV4dC5jLCBpbmNsdWRlL3R0eWRydi5oLCB3aW5kb3dzL3R0eWRydi9kZXNrdG9wLmMsIHdpbmRvd3MvdHR5ZHJ2L21haW4uYywgd2luZG93cy90dHlkcnYvbW9uaXRvci5jLCB3aW5kb3dzL3R0eWRydi93bmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJSW1wcm92ZWQgdGhlIHN0dWJzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgaW5jbHVkZS9pbWFnZWxpc3QuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CgktIGZpcnN0ICdkdW1teScgaW1wbGVtZW50YXRpb24gb2YgSW1hZ2VMaXN0X1JlYWQKCgkqIGluY2x1ZGUvcmViYXIuaCwgZGxscy9jb21jdGwzMi9yZWJhci5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCS0gYWRkZWQgdmVyc2lvbiBtZXNzYWdlcwoKCSogZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJLSBpbXBsZW1lbnRlZCBMQkl0ZW1Gcm9tUHQKCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgZGxscy9jb21jdGwzMi9saXN0dmlldy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCS0gaW1wbGVtZW50ZWQgc2ltcGxlIGNvbHVtbiBvcmRlciBhcnJheSBmdW5jdGlvbmFsaXR5CgktIGltcGxlbWVudGVkIHNvbWUgdmlydHVhbCBsaXN0dmlldyBub3RpZmljYXRpb25zCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCS0gbWlub3IgdXBkYXRlIHRvIG1ydSBsaXN0IGZ1bmN0aW9ucwoJLSBzdHVicyBmb3IgQ09NQ1RMMzJfNDExIHRvIENPTUNUTDMyXzQxMwoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGluY2x1ZGUvdG9vbGJhci5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCS0gYWRkZWQgdmVyc2lvbiBtZXNzYWdlcyBhbmQgc29tZSBzaW1wbGUgZ2V0L3NldCBtZXNzYWdlcy4KCS0gYWRkZWQgdW5pY29kZSBtZXNzYWdlcwoKCSogaW5jbHVkZS9zaGxndWlkLmgsIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSBtYWRlIElTaGVsbEZvbGRlciBhIGFnZ3JlZ2FibGUgb2JqZWN0CgktIFNIQ29DcmVhdGVJbnN0YW5jZSBjYW4gY3JlYXRlIENTSURMX0ZTRm9sZGVyIG5vdwoJLSBicm93c2luZyBpbnRvIGZvbGRlcnMgb24gdGhlIGRlc2t0b3AgaW1wbGVtZW50ZWQKCS0gY29ycmVjdGVkIHJldHVybnZhbHVlIG9mIEljb19FeHRyYWN0SWNvbkV4CgktIGZpeGVkIFNIR2V0RGF0YUZyb21JRExpc3QgdG8gcmV0dXJuIGRhdGEgb2Ygc2ltcGxlIHBpZGxzCgoJKiByZWxheTMyL3dzb2NrMzIuc3BlYywgaWYxNjMyL3dpbnNvY2suc3BlYywgaW5jbHVkZS93aW5zb2NrLmgsIG1pc2Mvd2luc29jay5jOgoJTW9zZXMgRGVKb25nIDxkZWpvbmdAY3MudW1uLmVkdT4KCUFkZGVkIGltcGxlbWVudGF0aW9uIGZvciBXU0FSZWN2RXggZnVuY3Rpb24uIFRoaXMgaXMgYSBNaWNyb3NvZnQKCXNwZWNpZmljIGV4dGVuc2lvbiB0byB0aGUgd2luc29jayBBUEkuCgoJKiBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tcHIvcHdjYWNoZS5jLCBpbmNsdWRlL3dpbm5ldHdrLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCUNvcnJlY3RlZCB3cm9uZyBwYXJhbWV0ZXIgY291bnRzIGZvciBXTmV0Q2FjaGVQYXNzd29yZCBhbmQKCVdOZXRFbnVtQ2FjaGVkUGFzc3dvcmRzLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglBZGRlZCBzdHViIGZvciBEbGxJbnN0YWxsKCkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oLCBkbGxzL2FkdmFwaTMyL01ha2VmaWxlLmluLCBkbGxzL2FkdmFwaTMyL3JlZ2lzdHJ5LmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5zcGVjLCBpZjE2MzIva2VybmVsLnNwZWM6CglDaGFuZ2VkIHRvIHVzZSBuZXcgc2VydmVyLXNpZGUgcmVnaXN0cnkgc3VwcG9ydC4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9yZWdpc3RyeS5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdHJhY2UuYywgc2VydmVyL3VuaWNvZGUuaDoKCUFkZGVkIHJlZ2lzdHJ5IHN1cHBvcnQgdG8gdGhlIHNlcnZlci4KCgkqIHRvb2xzL21ha2VfcmVxdWVzdHM6CglEaWZmZXJlbnRpYXRlIHRyYWNpbmcgZnVuY3Rpb25zIGJldHdlZW4gcmVxdWVzdCBhbmQgcmVwbHkuCglBZGRlZCBwb3NzaWJpbGl0eSB0byBoYXZlIGR1bXBpbmcgZnVuY3Rpb25zIGZvciBzcGVjaWZpYyB0eXBlcy4KClN1biBOb3YgMjEgMjE6MDI6MDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9jbGllbnQuYzoKCUFkZGVkIHNlcnZlcl9jYWxsX25vZXJyIGZ1bmN0aW9uIHRoYXQgYXZvaWRzIHRvdWNoaW5nIHRoZSBsYXN0IGVycm9yLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOiBBZGRlZCBhIGZldyByZWdpc3RyeSBlcnJvciBjb2Rlcy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBvYmplY3RzL2ZvbnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBzb21lIHVuYWxpZ25lZCBhY2Nlc3Nlcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJLSB0aGUgZm9kSW5mb3Mgd2VyZSB1c2VkIGJlZm9yZSBpbml0aWFsaXplZAoJLSBscFRlbXBsYXRlTmFtZSBjYW4gYmUgYSByZXNvdXJjZSBpZAoJLSBpZiBscFRlbXBsYXRlTmFtZSBpcyBhIHN0cmluZyBkb24ndCBmcmVlIHRoZSBvcmlnaW5hbCBvbmUKCgkqIHdpbjMyL2NvbnNvbGUuYywgd2luMzIva2VybmVsMzIuYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCBsb2FkZXIvbmUvY29udmVydC5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIG1pc2MvY3B1LmMsIG1zZG9zL2lvcG9ydHMuYywgb2xlL2d1aWQuYywgcHJvZ3JhbXMvbm90ZXBhZC9tYWluLmMsIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvc29ja2V0LmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCBkbGxzL3dpbm1tL21jaS5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgbG9hZGVyL2xvYWRvcmRlci5jLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBkZWJ1Z2dlci9kYmdtYWluLmMsIGRlYnVnZ2VyL2VkaXRsaW5lLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci90eXBlcy5jLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYywgZGxscy93aW5nL3dpbmdfbWFpbi5jOgoJTmllbHMgS3Jpc3RpYW4gQmVjaCBKZW5zZW4gPG5rYmpAaW1hZ2UuZGs+CglSZW1vdmVkIGV4dHJhICNpbmNsdWRlIHN0YXRlbWVudHMuCgoJKiBmaWxlcy9maWxlLmM6CglGaXhlZCBNb3ZlRmlsZUV4QSBiZWhhdmlvciB3aGVuIHRhcmdldCBmaWxlIGRvZXMgbm90IGV4aXN0LgoKCSogZGxscy9jb21tZGxnL2NkbGdfUHQucmMsIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9QdC5yYzoKCUd1c3Rhdm8gSnVuaW9yIEFsdmVzIDx0d2luZm9AYmVzdHdheS5jb20uYnI+CglBZGRlZCBQb3J0dWd1ZXNlIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGluY2x1ZGUvbW9udGhjYWwuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBjdXJyZW50IGRheSBjaXJjbGluZy4gIEZpeGVkIG1hbnkgYnVncyBpbiB0aGUgbW9udGgKCWNhbGVuZGVyIGNvbnRyb2wgaW5jbHVkaW5nIGNvbnRyb2wgc3BhY2luZyBhbmQgYWxpZ25tZW50LiAgRml4ZWQKCWRlZmluZXMgbW9udGhjYWwuaC4gIE9wdGltaXplZCBjb250cm9sIGRyYXdpbmcgYW5kIHJlbW92ZWQgbWFueQoJZXh0cmFuaW91cyByZWRyYXdzLiAgSW1wcm92ZWQgY29udHJvbCBiZWhhdmlvci4gIEZpeGVkIGluY29uc2lzdGVudAoJZm9ybWF0dGluZyBpbiBib3RoIC5jIGFuZCAuaCBmaWxlcy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZsdXNoIGN1cnJlbnQgcHJvZmlsZSBiZWZvcmUgdXNpbmcgYSBuZXdseSBvcGVuZWQgb25lLgoKCSogbWVtb3J5L3NlbGVjdG9yLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogR2V0VGhyZWFkU2VsZWN0b3JFbnRyeSgpIHNldHMgcmVhZC13cml0ZSBmbGFnIGluY29ycmVjdGx5LgoKCSogaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIG9iamVjdHMvZm9udC5jLCBpZjE2MzIvZ2RpLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHViIGZvciBHZXRGb250RGF0YTE2LgoKCSogd2luZG93cy9kaXNwbGF5LmMsIGlmMTYzMi9kaXNwbGF5LnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzb21lIG9yZGluYWxzIGFuZCBHZXREcml2ZXJSZXNvdXJjZUlEKCkuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHRyYWNlLmM6IFBvcnRhYmlsaXR5IGZpeGVzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzogRml4ZWQgbWVhbmluZyBvZiBERUJVR19PTkxZX1RISVNfUFJPQ0VTUyBmbGFnLgoKCSogdG9vbHMvYmluMnJlcy5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJRml4ZWQgY29tcGlsZSBlcnJvci4KCgkqIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOiBQZXRlciBTY2hsYWlsZSA8dWRiekByei51bmkta2FybHNydWhlLmRlPgoJSW1wbGVtZW50ZWQgU3RhcnRTZXJ2aWNlQ3RybERpc3BhdGNoZXJBIGFjY29yZGluZyB0byBEaXNwYXRjaGVyVy4KCgkqIE1ha2VmaWxlLmluOiBNYWtlIHN1cmUgd2UgY2xlYW4gZGxscy8gdG9vLgoKCSogZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglNaWNoYWVsIE1jQ29ybWFjayA8bWNjb3JtYWNAYWFsczI3LmFsY2F0ZWwuY29tLmF1PgoJSW1wbGVtZW50ZWQgT3BlblNDTWFuYWdlclcsIENsb3NlU2VydmljZUhhbmRsZSwgT3BlblNlcnZpY2VXLCBhbmQgc29tZQoJb2YgUXVlcnlTZXJ2aWNlU3RhdHVzLgoKCSogdG9vbHMvd3JjL3BhcnNlci55OiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgJzsnLgoKCSogdG9vbHMvd3JjL3BhcnNlci5sOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUVycm9yIHJlcG9ydGluZyBmaXguCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQ2hhbmdlZCBkZWZhdWx0IHJlbGF5IGxpbmUgbnVtYmVyIGZyb20gMTAwIHRvIDIwMC4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHVuZG9jdW1lbnRlZCBmZWF0dXJlIHRvIEluc2VydEJ1dHRvbkEuCglBZGRlZCBkcm9wZG93biBidXR0b24gc3VwcG9ydC4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHBsYXkgYmFjayBvZiB1bmNvbXByZXNzZWQgQVZJIGZpbGUuCglGaXhlZCBleGl0aW5nIGNvbmRpdGlvbnMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGEgY3Jhc2ggaW4gSURpcmVjdERyYXdTdXJmYWNlOkJsdEZhc3QuCgoJKiBkbGxzL3dpbm1tL2xvbHZsZHJ2LmMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGRsbHMvd2lubW0vd2F2ZW1hcC93YXZlbWFwLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGZvcndhcmRpbmcgYW5kIGhhbmRsaW5nIG1lc3NhZ2VzIGRpcmVjdGVkIHRvIHRoZSBtYXBwZXJzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBpbmNsdWRlL21vZHVsZS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTaW1wbGlmaWVkIGhJbnN0YW5jZSBjcmVhdGlvbi9oYW5kbGluZy4KCUZpeGVzIHByb2JsZW1zIHdpdGggc2VsZi1sb2FkZXJzIGNyZWF0aW5nIERHUk9VUCB0aGVtc2VsdmVzLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kYy5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgc3R1YnMgZm9yIEdldC9TZXRMYXlvdXQoKS4KCgkqIGRsbHMvb2xlMzIvb2xlMzIuc3BlYywgZGxscy9vbGUzMi9zdG9yYWdlMzIuYzoKCUppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUFkZGVkIHN0dWIgZm9yIFN0Z1NldFRpbWVzLgoKCSogZGxscy9zaGVsbDMyL3NobG1lbnUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNIRmluZF9Jbml0TWVudVBvcHVwIGlzIHN1cHBvc2VkIHRvIHJldHVybiBhIHBvaW50ZXIuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCXVfaW50WzE2fDMyXV90IG1pZ2h0IG5vdCBiZSBkZWZpbmVkLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSBmaXhlZCBjcmFzaCB3aGVuIGFkZGluZyBpdGVtcyB3aXRoIFRWSV9TT1JUIGFuZCB3aW5lSXRlbS0+cHN6VGV4dCBpcwoJICBzZXQgdG8gTFBTVFJfVEVYVENBTExCQUNLLgoJLSBkaXR0byBmb3IgVFJFRVZJRVdfRGVsZXRlSXRlbSwgVFJFRVZJRVdfQ3JlYXRlRHJhZ0ltYWdlLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpNb24gTm92IDE1IDAwOjQ2OjMwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvdmlydHVhbC5jOiBGaXhlZCBhbGxvY2F0aW9uIHJvdW5kaW5nIGZvciBNRU1fUkVTRVJWRS4KCgkqIHNlcnZlci9maWxlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgaGFzaCBmdW5jdGlvbi4KClN1biBOb3YgMTQgMjM6NTk6MDEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2lubW0vbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVRoZSBhZHdJbmZvWzBdIGZpZWxkIHdhcyBubyBsb25nZXIgdXNlZCBvbiBtbWlvT3BlbiAobWF5IGNvbnRhaW4gZmlsZQoJaGFuZGxlKS4KCgkqIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvb2xlMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc3R1YnMgZm9yIFNldEVycm9ySW5mbywgUHJvcFZhcmlhbnRDbGVhciwgUHJvcFZhcmlhbnRDb3B5LAoJRnJlZVByb3BWYXJpYW50QXJyYXkuCgoJKiBkbGxzL2Rzb3VuZC9kc291bmRfbWFpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgc3VpY2lkZSBjb2RlIHdoZW4gcGxheWJhY2sgdGhyZWFkJ3MgZmF0aGVyIGRpZXMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSB0aGUgY29sdW1zIGluIHRoZSBzaGVsbHZpZXcgYXJlIG5vdyBjcmVhdGVkIGRlcGVuZGluZyBvbiB0aGUKCSAgYXR0cmlidXRlcyBvZiB0aGUgZm9sZGVyIG9iamVjdCBzaG93bgoJLSBnZXQgYWxsIGF0dHJpYnV0ZXMgZnJvbSB0aGUgc2hlbGxmb2xkZXIgaW5zdGVhZCBkaXJlY3RseSBmcm9tIHRoZSBpZGxpc3QKCS0gaGVhZGVyIGZpZWxkcyBsb2NhbGl6ZWQgKG9ubHkgZW5nbC4gYW5kIGdlcm1hbiB0aWxsIG5vdykKCS0gc21hbGwgZml4ZXMKCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gY29ycmVjdGVkIGNvbnRyb2wgcG9zaXRpb25zCgktIHVzZSB0aGUgaWNvbnMgZnJvbSBjb21jdGwzMiBmb3IgdGhlIGJ1dHRvbnMKCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9yZWxheTM4Ni5jLCByZWxheTMyL3Nub29wLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogcmVsYXkvc25vb3AgZGVidWdnaW5nIHdhcyBicm9rZW4gYnkgbGFzdCBwYXRjaCAuLi4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3B0cmFjZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCU1vdmVkIHB0cmFjZSBzdXBwb3J0IHRvIHB0cmFjZS5jLiBUcmllZCB0byBpbXByb3ZlIHBvcnRhYmlsaXR5LgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6IEJ1ZyBmaXhlcy4KCgkqIGlmMTYzMi9yZWxheS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHNvbWUgdW5yZXNvbHZlZCBleHRlcm5hbHMgb24gbm9uLUludGVsIGFyY2hzLgoKCSogcmVsYXkzMi9zbm9vcC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgbWlzc2luZyBXSU5BUEkgYXR0cmlidXRlIHRvIHR3byBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KCgkqIGRsbHMvaWNtcC9pY21wX21haW4uYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIGxlZnRvdmVyICN1bmRlZnMuCgoJKiBkbGxzL3dpbm1tL21jaWNkYS9tY2ljZGEuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUlnbm9yZSBNQ0lfT1BFTl9FTEVNRU5UIGluIENEQVVESU9fbWNpT3Blbi4KCgkqIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV29yayBhcm91bmQgZ2xpYmMgYnVnLCB0aGF0IGRvZXMgbm90IGhhbmRsZSBsYXRpbi0xIHVtbGF1dHMuCgpTYXQgTm92IDEzIDIzOjU0OjA1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvb3JkaW5hbHMuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmMsIGRsbHMvbnRkbGwvc2lnbmFsX3NwYXJjLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIGxvYWRlci9kb3MvZG9zdm0uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBuZXcgcmVnaXN0ZXIgZnVuY3Rpb24gaGFuZGxpbmcuCgoJKiB0b29scy9idWlsZC5jLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgaW5jbHVkZS93aW5udC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb2RpZmllZCBXaW4zMiByZWdpc3RlciBmdW5jdGlvbiBoYW5kbGluZy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGRsbHMvaWNtcC9pcC5oLCBkbGxzL2ljbXAvaXBfaWNtcC5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVc2UgQlNEIGhlYWRlcnMgZm9yIElDTVAgcG9ydGFiaWxpdHkuCgoJKiBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tbWRsZy9jZGxnX3h4LnJjLCBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBkZWJpdGVsLm5ldD4KCS0gaW5zZXJ0ZWQgbWFya2VycyBmb3IgdGhlIGJpbjJyZXMgdG9vbAoJLSByZWZvcm1hdGVkIGhleGR1bXAgaW4gc2hyZXMucmMKCgkqIGRvY3VtZW50YXRpb24vcmVzb3VyY2VzLCB0b29scy8uY3ZzaWdub3JlLCB0b29scy9NYWtlZmlsZS5pbiwgdG9vbHMvYmluMnJlcy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglOZXcgdG9vbCB0byBjb252ZXJ0IHRoZSBiaW5hcnkgcmVzb3VyY2VzIGluICoucmMgZmlsZXMgKGhleGR1bXBzKSBmcm9tCglhbmQgdG8gYSBiaW5hcnkuCgoJKiBpbmNsdWRlL3dpbmUvcG9ydC5oLCBtaXNjL3BvcnQuYywgbWlzYy93aW5zb2NrLmMsIG1pc2Mvd2luc29ja19hc3luYy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9jb25maWcuaC5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgYmV0dGVyIG1pc3NpbmcgZnVuY3Rpb24gZW11bGF0aW9uLgoKCSogaW5jbHVkZS9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9kYl9kaXNhc20uYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2V4cHIuYywgZGVidWdnZXIvaGFzaC5jLCBkZWJ1Z2dlci9tZW1vcnkuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFjay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNYWRlIGRlYnVnZ2VyIGNvbXBpbGUgYW5kIG1hcmdpbmFsbHkgd29yayBvbiBub24tSW50ZWwgYXJjaHMuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL3dpbm50Lmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIEdFVF9JUCBtYWNybyB0byB3aW5udC5oCgoJKiBkb2N1bWVudGF0aW9uL3ByaW50aW5nLCBkb2N1bWVudGF0aW9uL3BzZHJpdmVyLCBkb2N1bWVudGF0aW9uL3BzZHJ2LnJlZywgZ3JhcGhpY3MvcHNkcnYvUkVBRE1FOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJTW92ZSBQb3N0U2NyaXB0IGRyaXZlciBkb2NzIHRvIGRvY3VtZW50YXRpb24vIC4gIEFkZCBpbnN0cnVjdGlvbnMgb24KCWhvdyB0byB1c2UgcmVnYXBpIHRvIGdldCBpbmZvcm1hdGlvbiBpbnRvIHRoZSByZWdpc3RyeS4gIFN1cHBseSBzYW1wbGUKCWlucHV0IHRvIHJlZ2FwaS4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJSW1wbGVtZW50ZWQgdGhlIFByaW50U2V0dXAgZGlhbG9nIGJveCBmb3IgdGhlIFByaW50RGxnQS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jb20+CglBZGRlZCB2YWxpZGF0aW9ucyBmb3IgcGFnZSBpbmRleCBiZWZvcmUgdXNpbmcgaXQuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jb20+CgktIGZpeGVkIHRoZSBpbmRleCBvZiB0aGUgaXRlbSBjaG9zZW4gaW4gdGhlIGZpbHRlciBjb21ibyBib3gKCS0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIE9GTl9PVkVSV1JJVEVQUk9NUFQgZmxhZwoJLSBmaXhlZCBwb3NpdGlvbmluZyBvZiBjb250cm9scyBpbiB0aGUgdXNlci1kZWZpbmVkIHRlbXBsYXRlcwoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzdXBwb3J0IGZvciBXcml0ZVByb2Nlc3NNZW1vcnkgdGhyb3VnaCB0aGUgc2VydmVyLgoKCSogc2VydmVyL21hcHBpbmcuYywgc2VydmVyL29iamVjdC5oOiBBZGRlZCBnZXRfcGFnZV9zaXplIGZ1bmN0aW9uLgoKRnJpIE5vdiAxMiAyMTozOToxNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgUmVhZFByb2Nlc3NNZW1vcnkgdGhyb3VnaCB0aGUgc2VydmVyLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgc3VwcG9ydCBmb3IgQ1JFQVRFX1NVU1BFTkRFRCBmbGFnIGluIENyZWF0ZVByb2Nlc3MuCgoJKiB3aW4zMi9kZXZpY2UuYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglJbXBsZW1lbnRlZCBWV2luMzIgVnhEQ2FsbCBtZWNoYW5pc20gYW5kIDIgY2FsbHMuCgoJKiBkbGxzL3dpbm1tL2pveXN0aWNrLmM6IDxqb2RhbWFuQGNlZ3QyMDEuYnJhZGxleS5lZHU+CglGaXhlZCBqb3lzdGljayBzY2FsaW5nLgoKCSogZGxscy9jb21tZGxnL2NkbGdfQ2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX0NzLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19EYS5yYywgZGxscy9jb21tZGxnL2NkbGdfRGUucmMsIGRsbHMvY29tbWRsZy9jZGxnX0VvLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Fcy5yYywgZGxscy9jb21tZGxnL2NkbGdfRmkucmMsIGRsbHMvY29tbWRsZy9jZGxnX0h1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19JdC5yYywgZGxscy9jb21tZGxnL2NkbGdfS28ucmMsIGRsbHMvY29tbWRsZy9jZGxnX05sLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19Oby5yYywgZGxscy9jb21tZGxnL2NkbGdfUGwucmMsIGRsbHMvY29tbWRsZy9jZGxnX1B0LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYywgZGxscy9jb21tZGxnL2NkbGdfU3YucmMsIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9DYS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfQ3MucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0RhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9EZS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfRW4ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0VzLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9GaS5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfSHUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX0l0LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9ObC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfTm8ucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1BsLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9QdC5yYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfUnUucmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1N2LnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9XYS5yYzoKCUd1c3Rhdm8gSnVuaW9yIEFsdmVzIDx0d2luZm9AYmVzdHdheS5jb20uYnI+CglVc2UgY29uc3RhbnRzIElET0sgYW5kIElEQ0FOQ0VMIGluIC5yYyBmaWxlcy4KCgkqIHNlcnZlci90aHJlYWQuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglQb3J0YWJpbGl0eSBmaXg6IHJlbmFtZWQgUFRSQUNFXyogaW50byBQVF8qLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9kZXZpY2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgZm9yIGJ1Z2d5IGFwcHMgdGhhdCBjYWxsIHRoZSB3cm9uZyBWeERDYWxsIHJvdXRpbmUuCgoJKiBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNvbXBsZXRlIHN0dWIgZm9yIFJhc0VudW1FbnRyaWVzIGJ5IHNheWluZyB3ZSBoYXZlIDAgZW50cmllcy4KCgkqIGluY2x1ZGUvZGVidWdzdHIuaCwgbWlzYy9kZWJ1Z3N0ci5jOgoJSmVyZW15IFdoaXRlIDxqd2hpdGVAY29kZXdlYXZlcnMuY29tPgoJQWRkIGRlYnVnc3RyX2hleF9kdW1wIHRvIGFsbG93IGRpc3BsYXkgaGV4IGR1bXBzIG9mIGRhdGEgaW4gYW55CglkZWJ1Z2dpbmcgbWVzc2FnZS4KCgkqIHNlcnZlci90aHJlYWQuYzoKCUFkZGVkIHVzZV9wdHJhY2UgZmxhZyB0byBkaXNhYmxlIHB0cmFjZSB1c2FnZS4gU2hvdWxkIGV2ZW50dWFsbHkgYmUKCW1hZGUgaW50byBhbiBvcHRpb24uCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgZGxscy9jb21tZGxnL3JzcmMucmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvZGxncy5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CglNYWRlIHRoZSBidXR0b25zIGluIHRoZSBmaWxlZGxnIGNoYW5nZSB3aGVuIHNlbGVjdGluZyBhIGRpZmZlcmVudAoJdmlldyB0eXBlIGJ5IHRoZSBjb250ZXh0IG1lbnUsIGNsZWFudXAuCgoJKiBkbGxzL3dpbm1tL3dpbm1tX0VzLnJjLCBkbGxzL3dpbm1tL3dpbm1tX3Jlcy5yYzoKCUp1bGlvIENlc2FyIEdhenF1ZXogPGpnYXpxdWV6QGRsZC5uZXQ+CglBZGRlZCBTcGFuaXNoIChwdXJlIENhc3RpbGxhbikgTU0gZXJyb3Igc3RyaW5nIHRyYW5zbGF0aW9uLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9zaWduYWxfc3BhcmMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgc2lnbmFsIGhhbmRsaW5nIGZvciBTUEFSQyAvIFNvbGFyaXMuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNvbW1lbnQgb3V0IGV4cGxpY2l0IGNhbGwgdG8gU0hFTExfU2F2ZVJlZ2lzdHJ5IHNpbmNlIHdpbmVsaWIgcHJvZ3JhbXMKCW5vdyBleGl0IHByb3Blcmx5LiAgQ2hhbmdlIHNldmVyYWwgTlVMTHMgdG8gJ1wwJ3MuICBGaXggc29tZSBzcGVsbGluZy4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgWFNobSBjb21wbGV0aW9uIGV2ZW50IGxlYWsuCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmVjdXJzaW9uIGNvdW50IHdoaWxlIGNhbGxpbmcgbWlkaVN0cmVhbShQYXVzZXxSZXN0YXJ0KS4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IHNhdmVfY2hlY2tfdGFpbnRlZCB0byBwcm9wZXJseSBzY2FuIHRoZSB0cmVlIHNvIHRoYXQgYWxsIHRhaW50ZWQKCWJyYW5jaGVzIGdldCBzYXZlZC4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJQmVybmQgUGF5c2FuIDxiZXJuZC5wYXlzYW5AZ214LmRlPgoJQWRkZWQgYSBzdHViIGZvciBzZXRqbXAuCgpXZWQgTm92IDEwIDIwOjI1OjE5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvdGhyZWFkLmM6CglEb24ndCBjcmFzaCB3aGVuIHdlIGdldCBhIFNJR0NITEQgZm9yIGEgcmVtb3ZlZCB0aHJlYWQuCgoJKiBkbGxzL2ljbXAvaWNtcF9tYWluLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBjb21waWxlIGZpeGVzLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS93aW5udC5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgkoUHJlbGltaW5hcnkpIENPTlRFWFQgc3RydWN0dXJlIGZvciBTUEFSQyBhZGRlZC4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbW9kdWxlLmMsIHNjaGVkdWxlci9kZWJ1Z2dlci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IExPQURfRExMX0RFQlVHX0VWRU5UIGxwSW1hZ2VOYW1lIHBhcmFtZXRlciB3YXMgaW5jb3JyZWN0LgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXaGVuIGRlY29tbWl0dGluZywgcmVtYXAgemVybyBwYWdlcyB1c2luZyBNQVBfRklYRUQuCgoJKiBkbGxzL29sZTMyL2NvbXBvYmouYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvR2V0Q2xhc3NPYmplY3Qgc2hvdWxkIGNvbXBsYWluIGFib3V0IG5vdCBiZWluZyBhYmxlIHRvIGRvCglvdXQtb2YtcHJvY2VzcyBzZXJ2ZXJzICpvbmx5KiBpZiB0aGUgYXBwbGljYXRpb24gZG9lc24ndCBpbmNsdWRlIHRoZQoJaW4tcHJvY2VzcyBvcHRpb25zLgoKCSogbWlzYy92ZXJzaW9uLmMsIGNvbnRyb2xzL2VkaXQuYywgaW5jbHVkZS93aW52ZXJzaW9uLmg6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJU2VuZCBXTV9DVExDT0xPUkVESVQgbm90IFdNX0NUTENPTE9SU1RBVElDIG1lc3NhZ2VzIHRvIHBhcmVudCBvZiBhCglkaXNhYmxlZCBlZGl0IGNvbnRyb2wgaWYgdGhlIGFwcGxpY2F0aW9uIGV4cGVjdHMgYSB3aW5kb3dzIHZlcnNpb24KCWJlZm9yZSBXSU45NSBhbmQgTlQ0MC4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIGZpbGVzL2ZpbGUuYzoKCU1vc2hlIFZhaW5lciA8bW9zaGV2QGVhc3liYXNlLmNvbT4KCVN0dWIgZm9yIEdldE92ZXJsYXBwZWRSZXN1bHQuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCB0b29scy9idWlsZC5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRGV0ZXJtaW5lIGV4cGVjdGVkX3ZlcnNpb24gb2YgUEUgYnVkZGllcyBmcm9tIHRoZSBTdWJzeXN0ZW1WZXJzaW9uLgoKCSogZGxscy9udGRsbC9leGNlcHRpb24uYywgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBpbmNsdWRlL3dpbm50LmgsIHdpbjMyL2V4Y2VwdC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgKm5vdCogV0lOQVBJLgoKTW9uIE5vdiAgOCAwNTozMTo0NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90aHJlYWQuaDoKCVByZWxpbWluYXJ5IHB0cmFjZSBzdXBwb3J0LgoKCSogbWVtb3J5L3ZpcnR1YWwuYzoKCVJlbWFwIHplcm8tcGFnZXMgd2hlbiBkZWNvbWl0dGluZyBhIHBhZ2UgcmFuZ2UgKGJhc2VkIG9uIGEgcGF0Y2ggYnkKCUdlcmFyZCBQYXRlbCkuCgoJKiBNYWtlZmlsZS5pbiwgc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9tYWluLmM6CglJbnN0YWxsIHRoZSB3aW5lIHNlcnZlciBpbiAkKGJpbmRpcikgYW5kIGV4ZWMgaXQgZnJvbSB0aGVyZS4KClN1biBOb3YgIDcgMjM6NTk6MDggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9kZWJ1Z2dlci5jOgoJRG8gbm90IGZyZWUgdGhlIGhhbmRsZXMgb25jZSB0aGV5IGhhdmUgYmVlbiBzZW50IHRvIHRoZSBjbGllbnQgKHRoYW5rcwoJdG8gSmVyZW15IFdoaXRlKS4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2ggd2hlbiBhc2tlZCB0byB1c2Ugc3RyaW5ncyBpZGVudGlmaWVkIGJ5IHJlc291cmNlIGlkCglpbnN0ZWFkIG9mIHBvaW50ZXIuCgoJKiB3aW5kb3dzL2RjZS5jOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglXaGVuIHdpbmRvdyBjbGFzcyBoYXMgQ1NfQ0xBU1NEQyBzdHlsZSB3ZSBzaG91bGQgbm90IHJlbW92ZSB0aGUgREMKCXdoZW4gZGVzdHJveWluZyB0aGUgd2luZG93LgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkzMi5zcGVjLCBkbGxzL3dpbjMycy93MzJza3JubC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNaW5vciBmaXhlcy4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9vdXRwdXQucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTWlub3IgZml4ZXMgYW5kIHJlb3JnYW5pemF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9pZl9tYWNyb3MuaCwgaW5jbHVkZS9iaXRfYXJyYXkuaCwgaW5jbHVkZS9udGRsbC5oLCBpbmNsdWRlL29sZW9iai5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIG9ic29sZXRlIGZpbGVzIG5vIGxvbmdlciBpbiB1c2UuCgoJKiB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oLCBpbmNsdWRlL3RzX3hsaWIuaCwgaW5jbHVkZS94MTFkcnYuaDoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRGlyZWN0WC1YU2htIG5vdyB3YWl0cyBmb3IgdGhlIFggc2VydmVyIHRvIGZpbmlzaCB0aGUgcHJldmlvdXMgZnJhbWUKCWJlZm9yZSBzZW5kaW5nIGFub3RoZXIgZnJhbWUgZG93biBpdHMgcGlwZSwgYXZvaWRpbmcgdGhlIFggc2VydmVyCglvdmVybG9hZCBhbmQgcmVzdWx0aW5nIHNsb3duZXNzIHRoYXQgdXNlZCB0byBiZS4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmgsIGluY2x1ZGUvZGxncy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIHVuaWZpZWQgdGVtcGxhdGVzIGZvciB0aGUgb3BlbiBhbmQgdGhlIHNhdmUgZGxnCgktIHJlcGxhY2VkIGJ1dHRvbnMgd2l0aCBhIHRvb2xiYXIKCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAZGViaXRlbC5uZXQ+CgktIG5ldyBpbnRlcmZhY2UgZGVjbGFyYXRpb24gZm9yIElTaGVsbGZvbGRlcjIKCS0gYWRkZWQgdGhpcyBpbnRlcmZhY2UgdG8gYWxsIHNoZWxsIGZvbGRlcnMKCS0gc21hbGwgZml4ZXMgdG8gc2hlbGx2aWV3IChjcmFzaCB3aXRoIG5hdGl2ZSBjb21kbGczMikKCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHRoZSByZWxvY2F0aW9uIGhhY2sgaW4gUEVfSW5pdFRscy4gQWRkZWQgc29tZSBtb3JlIGZvciB0aGUgb3RoZXIKCXBvaW50ZXJmaWVsZHMgaW4gdGhlIFRMUyBlbnRyeS4gKFdpdGggdGVzdGluZyBoZWxwIGZyb20gSnVzc2kKCUp1bXBwYW5lbiA8anVzc2lqQHpldXNlZGl0LmNvbT4pLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmMsIGluY2x1ZGUvd2ludXNlci5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBDaGFuZ2VEaXNwbGF5U2V0dGluZ3NFeEEgc3R1YiBhbmQgc29tZSBmbGFnIGRlZmluZXMuCgoJKiBpbmNsdWRlL2NvbnNvbGUuaDogUm9iZXJ0ICdBZG1pcmFsJyBDb2V5bWFuIDxhZG1pcmFsQGNvcm5lci5uZXQ+CglBZGRlZCB0aGUgaGV4IHRyaXBsZXRzIHRvIHRoZSBjb25zb2xlIGNvbG9yIGRlZmluaXRpb25zLgoKCSogd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmMsIHdpbmRvd3MveDExZHJ2L21vdXNlLmMsIGluY2x1ZGUvaW5wdXQuaCwgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvbW91c2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlucHV0LmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQWRkZWQgdGhlIHBvc3NpYmlsaXR5IHRvIGhhdmUgbW91c2UgbW92ZW1lbnRzIHJlcG9ydGVkIHJlbGF0aXZlIHRvCglXaW5lJ3MgbW91c2UgZHJpdmVyLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL2ljbXAvLmN2c2lnbm9yZSwgZGxscy9pY21wL01ha2VmaWxlLmluLCBkbGxzL2ljbXAvaWNtcC5zcGVjLCBkbGxzL2ljbXAvaWNtcF9tYWluLmMsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvd2luZS9pY21wYXBpLmgsIGluY2x1ZGUvd2luZS9pcGV4cG9ydC5oLCBsb2FkZXIvbG9hZG9yZGVyLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHdpbmUuaW5pOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBJQ01QIERMTCBpbXBsZW1lbnRhdGlvbi4KCgkqIHRvb2xzL3dyYy9kdW1wcmVzLmMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5oLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy9DSEFOR0VTOgoJSnVlcmdlbi5TY2htaWVkQGRlYml0ZWwubmV0CgktIEJ1Z2ZpeDogU3R5bGVzIHdlcmUgZXZhbHVhdGVkIGFzIGV4cHJlc3Npb25zLiBUaGUgTk9UIGluIGNvbWJpbmF0aW9uCgkgIHdpdGggc3R5bGUgZmxhZ3Mgd2FzIG5vdCBvdmVyd3JpdGluZyB0aGUgZGVmYXVsdCBzdHlsZXMgbGlrZSBXU19WSVNJQkxFLgoJICBTb2x2ZWQgYnkgaW50cm9kdWNpbmcgb3duIHJ1bGVzIGZvciBwYXJzaW5nIHN0eWxlcy4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUZpeGVkIHRoZSBoZWlnaHQgb2YgdGhlIENvbWJvQm94IGRyb3AgbGlzdC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IERhdmlkIEdyYW50IDxkYXZpZGdyYUBjb3JlbC5jYT4KCVdpbmRvd3Mgc2VuZHMgV01fR0VURExHQ09ERSBvbmx5IGluIHJlc3BvbnNlIHRvIGtleWJvYXJkIG1lc3NhZ2VzCgkoV01fS0VZRE9XTiwgV01fQ0hBUiwgV01fU1lTQ0hBUikuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gQWRkZWQgbWlzc2luZyBfX2F0dHJpYnV0ZV9fICgoY29tX2ludGVyZmFjZSkpIGZvciBJVW5rbm93biB3aXRoLgoJICBJQ09NX1VTRV9DT01fSU5URVJGQUNFX0FUVFJJQlVURQoJLSBTbWFsbCBhZGRpdGlvbiB0byBjb21tZW50cyBzdXJyb3VuZGluZwoJICBJQ09NX1VTRV9DT01fSU5URVJGQUNFX0FUVFJJQlVURSAib3B0aW9uIi4KCgkqIG9sZS9vbGUybmxzLmMsIGlmMTYzMi9vbGUybmxzLnNwZWM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBSZWdpc3Rlck5MU0luZm9DaGFuZ2VkLgoKCSogc2NoZWR1bGVyL2NyaXRzZWN0aW9uLmMsIHdpbmRvd3MvcXVldWUuYywgbWVtb3J5L2hlYXAuYzoKCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQWRkcmVzc2VzIGlzc3VlcyB3aXRoIG11bHRpcGxlIHByb2Nlc3NlcyBhY2Nlc3Npbmcgbm9uLWdsb2JhbCBjcml0aWNhbAoJc2VjdGlvbnMuCgoJKiBzZXJ2ZXIvc29jay5jOiBKZXJlbXkgV2hpdGUgPGp3aGl0ZUBjb2Rld2VhdmVycy5jb20+CglGaXhlZCBidWcgaW4gV0lOU09DS19hY2NlcHQgd2hlbiBubyBldmVudCBpcyBwcmVzZW50LgoKCSogZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgaW5jbHVkZS9sbWNvbnMuaCwgaW5jbHVkZS9yYXMuaDoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGRlZCBzdHVicyBmb3IgUmFzRW51bUVudHJpZXNBIGFuZCBSYXNHZXRFbnRyeURpYWxQYXJhbXNBLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmg6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglJbXBsZW1lbnRhdGlvbiBvZiBjdXN0b20gZGlhbG9nIG1lc3NhZ2VzIGFuZCBub3RpZmljYXRpb25zLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBEYXZpZCBHcmFudCA8ZGF2aWRncmFAY29yZWwuY2E+CgktIFByb3BlciBpbml0aWFsaXphdGlvbiBvZiBjY2hUZXh0TWF4IGZpZWxkIHdhcyBhZGRlZCBmb3IKCSAgVFZOX0dFVERJU1BJTkZPIG5vdGlmaWNhdGlvbiBtZXNzYWdlLgoJLSBUVk1fU0VUSVRFTSBzaG91bGQgdXBkYXRlICdtYXNrJyBmaWVsZCB0byBzeW5jaHJvbml6ZSBpdCB3aXRoCgkgIGN1cnJlbnQgaXRlbSBzdGF0ZS4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BwZC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJZiBQYWdlU2l6ZS9JbnB1dFNsb3QgZW50cnkgZG9lc24ndCBjb250YWluIGFuIG9wdGlvbnMgdHJhbnNsYXRpb24KCXN0cmluZyB1c2UgdGhlIG9wdGlvbiBuYW1lIGluc3RlYWQuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIFNldFRpdGxlQSB3aGVuIHN0cmluZyByZXNvdXJjZXMgd2VyZSB0byBiZSBsb2FkZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCS0gRml4ZWQgYW4gZXJyb3IgZm9yIHNjcm9sbGluZyBpbiBMaXN0dmlldyAoc29tZXRpbWVzIGEgY29sdW1uIHdvdWxkCgkgIG5vdCBiZSB2aXNpYmxlKSBkdWUgdG8gbXkgbGFzdCBjaGVja2luLgoJLSBGaXhlZCBhbiBlcnJvciBmb3IgdGhlIGhlYWRlciBjb250cm9sIHdoZW4gdGhlIExpc3R2aWV3IGlzIHJlc2l6ZWQgd2l0aCBXTV9TSVpFCgktIEZpeGVkIHRoZSBzY3JvbGxpbmcgZm9yIHNtYWxsIGFuZCBsYXJnZSBpY29uICh0aGlzIGJyb2tlIGJlY2F1c2Ugb2YKCSAgdGhlIHVzZSBvZiBTQl9QQUdFIGluIHNjcm9sbEluZm8pCgktIEFkZGVkIGEgcGF0Y2ggbWFkZSBieSBOb29tZW4gSGFtemEgdG8gdXBkYXRlIHRoZSBpdGVtIHdpZHRoIHdoZW4KCSAgYWRkaW5nIGEgbmV3IGl0ZW0KCgkqIHNlcnZlci9zb2NrLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSGFuZGxlIHNvY2tldCBjcmVhdGlvbiBlcnJvcnMuCgoJKiBjb250cm9scy9tZW51LmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJV2hlbiBhIHBvcHVwbWVudSBpcyBjdXJyZW50bHkgYWN0aXZlIG9uIHRoZSBzY3JlZW4sIGl0IHNob3VsZG4ndAoJcmVtb3ZlIG1vdXNlIGNsaWNrIG1lc3NhZ2VzIHRoYXQgZG9uJ3QgYmVsb25nIHRvIGl0IGZyb20gdGhlIHF1ZXVlLgoKCSogd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUV4ZWMgYHdpbmVjbGlwc3J2JyBub3QgYHdpbmVjbGlwc3ZyJywgYW5kIGRvbid0IGluaGVyaXQgd2luZSdzIFgKCXNvY2tldHMgdG8gaXQgKG90aGVyd2lzZSB3aW5kb3dzIHN0YXkgYXJvdW5kIHdoZW4gd2luZSBoYW5ncykuCgpUaHUgTm92ICA0IDAyOjUxOjI0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbWFpbi5jOiBGaXhlZCAtZGVidWdtc2cgK3NlcnZlci4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYzoKCUFkZGVkIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZSBzdGRpbyBoYW5kbGVzIGluIENsb3NlSGFuZGxlLgoKCSogc2VydmVyL2hhbmRsZS5jOgoJTWFkZSBhbGwgaGFuZGxlcyBtdWx0aXBsZSBvZiA0LiBGaXhlZCBzZW1hbnRpY3MgZm9yIHBzZXVkby1oYW5kbGVzLgoKCSogc2VydmVyL2RlYnVnZ2VyLmM6CglGcmVlIHRoZSBoYW5kbGVzIG9mIHRoZSBldmVudCBzdHJ1Y3R1cmUgaW4gdGhlIHJpZ2h0IHByb2Nlc3MgKHRoYW5rcwoJdG8gSmVyZW15IFdoaXRlKS4KCgkqIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxheXguc3BlYywgZGxscy9kcGxheXgvZHBsYXl4X2dsb2JhbC5jLCBkbGxzL2RwbGF5eC9kcGxheXhfZ2xvYmFsLmgsIGRsbHMvZHBsYXl4L2RwbGF5eF9tYWluLmMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheSwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaDoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIEFkZGVkIGRwbGF5eCBMaWJNYWluIGZvciBpbml0aWFsaXphdGlvbiBvZiBhbGwgZHBsYXl4ICdnbG9iYWwnIGRhdGEKCS0gQWRkZWQgc3RhcnQgZm9yIGdsb2JhbCBkYXRhIG1hbmlwdWxhdGlvbgoJLSBUT0RPIGxpc3QgdXBkYXRlZAoJLSBBZGRlZCBzb21lIG1pc3NpbmcgaGVhZGVyIGZpbGUgZGVmaW5pdGlvbnMKCS0gQWRkZWQgdGhlIGFuc2kgdmVyc2lvbnMgb2YgZHBsYXkgYW5kIGRwbG9iYnkKCS0gRml4ZWQgaW52YWxpZCBtYWNybyBmb3IgSURpcmVjdFBsYXk0CgktIENsZWFuZWQgdXAgY29tcGlsZXIgd2FybmluZ3MKCS0gTW9yZSBpbXBsZW1lbnRhdGlvbiwgYnVnIGZpeGVzIGFuZCBjcml0aWNhbCByZWdpb24gcHJvdGVjdGlvbgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglOZXZlciBzZW5kIGEgV01fQ0xPU0UgbWVzc2FnZSAgdG8gYSBwb3B1cCB3aW5kb3cuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglDaGVjayBpZiB0aGUgd2luZG93IGlzIG1hbmFnZWQgYmVmb3JlIHRyeWluZyB0byBnaXZlIGl0IGZvY3VzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW5oYW5jZWQgbGludXggam95c3RpY2sgYXBpIGRldGVjdGlvbiBzbGlnaHRseS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglKYXJvc2xhdyBQaW90ciBTb2JpZXN6ZWsgPGpzb2JpZXN6QGVsa2EucHcuZWR1LnBsPgoJQWRkZWQgUG9saXNoIGtleWJvYXJkIHN1cHBvcnQuCgoJKiBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZCBEQ19WRVJTSU9OIGFuZCBEQ19UUlVFVFlQRSB0byB3aW4xNmRydiBEZXZpY2VDYXBhYmlsaXRpZXMuCgoJKiBncmFwaGljcy9wc2Rydi9wcGQuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkIGBDYXNzZXR0ZScgdG8gUFBEIC0+IHdpbmRvd3MgcHJpbnRlci1iaW4gbWFwcGluZy4KCgkqIG1lbW9yeS9zdHJpbmcuYzogTWljaGFlbCBNY0Nvcm1hY2sgPG1jY29ybWFjQGFhbHMyNy5hbGNhdGVsLmNvbS5hdT4KCU1vZGlmaWVkIGxzdHJjcHluV3RvQSB0byBwdXQgdGVybWluYXRpbmcgbnVsbCBhdCBlbmQgb2Ygc3RyaW5nLCBub3QKCWVuZCBvZiBidWZmZXIuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIGR1cGxpY2F0ZSBtYWNybyBkZWZpbml0aW9ucyBmb3IgdGhlIElTdG9yYWdlIGFuZCBJU3RyZWFtIENPTQoJaW50ZXJmYWNlcy4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJRml4ZWQgQ09MT1JfTUFYIGRlZmluaXRpb24gZm9yIG5ldyBXaW4zMiB2YWx1ZXMuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCVJlbW92ZWQgdW5uZWNlc3NhcnkgVVNFUiBjYWxsIGZyb20gR2V0Rm9udE1ldHJpY3MuIEZpeGVzIG5hdGl2ZSBVU0VSLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglTZXQgcHJvcGVyIGl0ZW0gZm9jdXMgb24gRGVsZXRlSXRlbS4KCUNsZWFuIHVwIGVkaXQgbGFiZWwgaW1wbGVtZW50YXRpb24uCgoJKiBmaWxlcy9kcml2ZS5jOiBQZXRlciBTY2hsYWlsZSA8dWRiekByei51bmkta2FybHNydWhlLmRlPgoJRml4ZWQgYSBsb25nIHN0YW5kaW5nIChhbmQgYW5ub3lpbmcpIHR5cG8sIHRoYXQgcHJldmVudGVkCglHZXREaXNrRnJlZVNwYWNlQSBmcm9tIHdvcmtpbmcuLi4KCgkqIG1pc2MvcmVnaXN0cnkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglFbmFibGUgc2FmZSByZWFkaW5nIG9mIHJlZ2lzdHJ5IGZpbGUsIGV2ZW4gaWYgZmlsZSBpcyBicm9rZW4uCgoJKiB3aW4zMi9uZXdmbnMuYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglDaGFuZ2VkIE9wZW5EZXNrdG9wIHN0dWIgdG8gV2luOXggYmVoYXZpb3IgZm9yIFF1aWNrVGltZSA0LgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gT2N0IDMxIDIyOjI2OjM1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvY2xpZW50LmM6IFNldCBjbG9zZS1vbi1leGVjIGZsYWcgb24gc2VydmVyIHNvY2tldC4KCgkqIERFVkVMT1BFUlMtSElOVFM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgZXhwbGFuYXRpb24gb24gY3JlYXRpbmcgYSBuZXcgRExMLgoKCSogbWlzYy92ZXJzaW9uLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQGRlYml0ZWwubmV0PgoJQmV0dGVyIHZlcnNpb24gYXV0b2RldGVjdGlvbi4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUltcGxlbWVudGVkIHN1cHBvcnQgb2YgRFNfQ09OVFJPTCBhbmQgV1NfRVhfQ09OVFJPTFBBUkVOVCBzdHlsZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBJdmFuIGRlIFNhZWRlbGVlciA8SXZhbmRzQHN5bXBhdGljby5jYT4KCUZhaWwgd2hlbiBMUFJFQ1QgY29udGFpbnMgbmVnYXRpdmUgdmFsdWVzLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJT24gQ29uZmlndXJlTm90aWZ5LCBmaW5kIHRoZSBmaXJzdCB2aXNpYmxlIHdpbmRvdyBhYm92ZSB0aGUgY3VycmVudCBvbmUuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3RlZCBvcGVyYW5kIHNpemVzIGZvciB0aGUgImVudGVyIiBpbnN0cnVjdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJUFNNX0FERFBBR0UgcmV0dXJucyBUUlVFIG9yIEZBTFNFLgoKCSogZGxscy9tc2FjbTMyL2J1aWx0aW4uYywgZGxscy9tc2FjbTMyL01ha2VmaWxlLmluLCBkbGxzL21zYWNtMzIvZHJpdmVyLmMsIGRsbHMvbXNhY20zMi9pbnRlcm5hbC5jLCBkbGxzL21zYWNtMzIvbXNhY20zMl9tYWluLmMsIGRsbHMvbXNhY20zMi9zdHJlYW0uYywgZGxscy9tc2FjbTMyL3dpbmVhY20uaCwgaW5jbHVkZS9tc2FjbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIG1zYWNtMzIgcmVhbGx5IGxvYWQgQUNNIGRyaXZlcnMuCgoJKiBncmFwaGljcy9wYWludGluZy5jOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglQcmV2ZW50IEZpbGxSZ24gZnJvbSB1c2luZyBhIE5VTEwgcG9pbnRlci4KCgkqIG1pc2MvcmVnaXN0cnkuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgYSBmZXcgcHJvYmxlbXMgd2l0aCBSZWdFbnVtS2V5Ki4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJSW1wbGVtZW50YXRpb24gb2YgdXNlciBkZWZpbmVkIHRlbXBsYXRlcy4KCgkqIGRsbHMvb2xlMzIvaWZzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSU1hbGxvYzE2X0NvbnN0cnVjdG9yOiBtb3ZlZCBJQ09NX1ZUQkwoVGhpcykgd2hlcmUgaXQgYmVsb25ncy4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBjbGVhciB0aGUgZHJhd2luZyBhcmVhIGZvciBldGNoZWQgc3RhdGljIGNvbnRyb2xzLgoJUmVwbGFjZWQgb3VyIG93biBkcmF3aW5nIHN0dWZmIGluIGV0Y2hlZCBzdGF0aWMgY29udHJvbHMgYnkgRHJhd0VkZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUluIHJlcG9ydCB2aWV3IG1vZGUgb2YgdGhlIGxpc3R2aWV3IGNvbnRyb2wsIGltcGxlbWVudGVkIHRoZQoJaG9yaXpvbnRhbCBzY3JvbGxiYXIgZnVuY3Rpb25hbGl0eS4KCgkqIHdpbmRvd3MvbWRpLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgc21hbGwgYnVnIGluIHRoZSBiZWhhdmlvciBvZiBtYXhpbWl6ZWQgTURJIGNoaWxkcmVuLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVJld3JpdGUgb2YgRW51bVByaW50ZXJzLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglGaWxsIGluIHRoZSBod25kRnJvbSBmaWVsZCBvZiB0aGUgTk1IRFIgc3RydWN0dXJlIHdoZW4gc2VuZGluZwoJbm90aWZpY2F0aW9ucy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXaGVuIHJlYWRpbmcgYSBwcm9maWxlIGVudHJ5IHJlbW92ZSB0cmFpbGluZyBxdW90ZSB3aGVuIHRoZXJlJ3MgYW4KCW9wZW5pbmcgb25lLgoKCSogb2JqZWN0cy9nZGlvYmouYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJUmV0dXJuIGNvcnJlY3QgaGVpZ2h0IGFuZCB3aWR0aCBmb3Igc3RvY2sgZm9udHMgaW4gR2V0T2JqZWN0LgoKCSogcHJvZ3JhbXMvYXZpdG9vbHMvYXZpcGxheS5jOiBDb21waWxlIGZpeC4KCgkqIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZTogQWRkZWQgd21jZHJjLmgKCgkqIGRsbHMvd2lubW0vbW1pby5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgYWRkaXRpb24gYW5kIHJlbW92YWwgb2YgY3VzdG9tIEkvTyBwcmVvY2VkdXJlcy4KCgkqIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL29sZTMyLnNwZWM6CglBYmV5IEdlb3JnZTxhYmV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgUHJvZ0lERnJvbUNMU0lELgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgZGxscy9jb21jdGwzMi9yc3JjLnJjOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglXaXphcmQgbW9kZSBwcm9wZXJ0eSBzaGVldHMgaGF2ZSBhIHRhYiBjb250cm9sLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWlkaW1hcC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL21pZGltYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLmMsIGRsbHMvd2lubW0vbWlkaW1hcC9taWRpbWFwLnNwZWMsIGRsbHMvd2lubW0vd2F2ZW1hcC8uY3ZzaWdub3JlLCBkbGxzL3dpbm1tL3dhdmVtYXAvTWFrZWZpbGUuaW4sIGRsbHMvd2lubW0vd2F2ZW1hcC9tc2FjbS5zcGVjLCBkbGxzL3dpbm1tL3dhdmVtYXAvd2F2ZW1hcC5jLCB3aW5lLmluaToKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYnVpbHQtaW4gbXNhY20uZHJ2IGFuZCBtaWRpbWFwLmRydiBkcml2ZXJzLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9mdW5jdGlvbi5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9nbG9iYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfbG9jYWwucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfb3B0aW9ucy5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9wYXJzZXIucG06CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCS0gTWlub3IgZml4ZXMgYW5kIHJlb3JnYW5pemF0aW9ucy4KCS0gQWRkZWQgY2hlY2tzIGZvciBkb2N1bWVudGF0aW9uIGluY29uc2lzdGVuY2llcy4KCgkqIGRsbHMvd2lubW0vd2luZW9zcy9hdWRpby5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWlkaS5jLCBkbGxzL3dpbm1tL3dpbmVvc3MvbWl4ZXIuYywgZGxscy93aW5tbS93aW5lb3NzL21tYXV4LmMsIG1pc2MvcG9ydC5jLCBtaXNjL3dpbnNvY2suYywgbWlzYy93aW5zb2NrX2FzeW5jLmMsIGRsbHMvd2lubW0vam95c3RpY2suYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgbWlzc2luZyBjb25maWd1cmF0aW9uICNpZjpzIGFuZCAjaW5jbHVkZXM6cy4KCgkqIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGZpbGVzL2Rvc19mcy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgZG9jdW1lbnRhdGlvbi4KCgkqIGRsbHMvd2lubW0vbWNpd2F2ZS9NYWtlZmlsZS5pbjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIG1ha2UgZG9lc24ndCBsaWtlIHVubmVjZXNzYXJ5IFwuCgoJKiBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHdpbmRvd3MvZGlucHV0LmMsIGRsbHMvb2xlMzIvbWVtbG9ja2J5dGVzLmMsIGRsbHMvb2xlMzIvbW9uaWtlci5jLCBkbGxzL29sZTMyL29sZW9iai5jLCBkbGxzL29sZTMyL3N0Z19zdHJlYW0uYywgZGxscy9vbGUzMi9zdG9yYWdlLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmMsIGRsbHMvb2xlMzIvc3RvcmFnZTMyLmgsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWZfbWFjcm9zLmgsIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmMsIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvZHBsYXl4L2RwY2xhc3NmYWN0b3J5LmMsIGRsbHMvZHNvdW5kL2Rzb3VuZF9tYWluLmMsIGRsbHMvb2xlMzIvYmluZGN0eC5jLCBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCBkbGxzL29sZTMyL2NvbXBvc2l0ZW1vbmlrZXIuYywgZGxscy9vbGUzMi9oZ2xvYmFsc3RyZWFtLmMsIGRsbHMvb2xlMzIvaWZzLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUdlbmVyYWxpemVkIHRoZSB1c2Ugb2YgdGhlIG5ldyBJQ09NX1ZGSUVMRCBhbmQgSUNPTV9WVEJMIG1hY3Jvcy4KCgkqIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L3dpbmVjbGlwc3J2LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBhIGNvdXBsZSBvZiBjb21waWxlciB3YXJuaW5ncy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUEgY3Jhc2ggd291bGQgb2NjdXIgaWYgdGhlIGZpbGUgdHlwZSBpbiByZXBvcnQgbW9kZSB3YXMgZW1wdHkuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglDaGFuZ2VkIHRoZSBpbml0aWFsaXNhdGlvbiBvZiB0aGUgS2V5U3RhdGUgYXJyYXkuCgoJKiBtaXNjL2xzdHIuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQmV0dGVyIGhhbmRsaW5nIG9mIG5ld2xpbmVzIGluIEZvcm1hdE1lc3NhZ2UqLgoKCSogZGxscy93aW5tbS93aW5lb3NzL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4IChzb21lKSBiYWQgYmVoYXZpb3Igd2l0aCBidWZmZXIgdW5kZXJydW4uCgoJKiBkbGxzL3dpbm1tL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgUGxheVNvdW5kIHByb2MgZm9yIG5vbiBQQ00gY29udGVudC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJLSBUcmVldmlldyB1c2VzIENPTE9SX1dJTkRPVyBjb2xvciBpbnN0ZWFkIG9mIGNsckJrIHRvIGZpbGwgYmFja2dyb3VuZC4KCS0gVHJlZXZpZXc6IGNvbG9ycyByZXR1cm5lZCBieSBUVk1fR0VUKipDT0xPUiBhcmUgbWl4ZWQgdXAuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUNsaWNraW5nIHRoZSBjb21ibyBib3ggd291bGQgY2F1c2UgYSBjcmFzaCBpZiBpdCB3YXMgZW1wdHkuCgoJKiBncmFwaGljcy9lc2NhcGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgbWlzYy9wcmludGRydi5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSXQgYXBwZWFycyB0aGF0IFN0YXJ0RG9jIHNlbmRzIHRoZSBTVEFSVERPQyBlc2NhcGUgd2l0aCB0aGUgRE9DSU5GTwoJc3RydWN0dXJlIHBvaW50ZWQgdG8gd2l0aCB0aGUgb3V0cHV0IGRhdGEgcGFyYW1ldGVyLgoKCSogZ3JhcGhpY3MvZm9udGVuZ2luZS5jLCBpZjE2MzIvZ2RpLnNwZWM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHViIGZvciBFbmdpbmVSZWFsaXplRm9udEV4dCAodXNlZCBieSB0aGUgd2luOTggcHNjcmlwdCBkcml2ZXIpLgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglTZWxlY3RlZCBidXR0b24gd2l0aGluIHRhYiBjb250cm9sIHdpbGwgYmUgcGFpbnRlZCB3aXRoIHRoZSByaWdodAoJY29sb3IgYnJ1c2guCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglEbyBub3Qgc2VuZCB0d28gUFNOX0tJTExBQ1RJVkUgbWVzc2FnZXMuCgoJKiB3aW5lLmluaTogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglpbmkgdmFyaWFibGVzIGRvIG5vdCBsaWtlIDsgY29tbWVudHMgYWZ0ZXIgdGhlbSAodGhleSBhcmUgbm90IHNoZWxsCglzY3JpcHRzKS4gRml4ZWQgYSB0eXBvIGluIG9uZSBvZiB0aGUgbmFtZXMuCgpNb24gT2N0IDI1IDE1OjQzOjM2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZTMyL2lmcy5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgdHdvIG1hY3JvcywgSUNPTV9WRklFTEQgYW5kIElDT01fVlRCTCwgc28gdGhhdCB3aGVuIGltcGxlbWVudGluZwoJYSBDT00gaW50ZXJmYWNlIG9uZSBuZXZlciBoYXMgdG8gbmFtZSB0aGUgbHBWdGJsIGZpZWxkIGV4cGxpY2l0bHkuCgoJKiBkbGxzL29sZWF1dDMyL29sZTJkaXNwLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTeXNBbGxvY1N0cmluZ0xlbjE2IG5lZWRzIHRvIGhhbmRsZSBOVUxMIHBvaW50ZXJzLCB0b28uCgoJKiBtZW1vcnkvbG9jYWwuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUJ1ZyBmaXguCgoJKiB0b29scy9maW5kX2RlYnVnX2NoYW5uZWxzOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIHNtYWxsIHR5cG9zIGFuZCBzbGlnaHRseSBvdXRkYXRlZCBjb21tZW50cy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTaGVsbDMyIGNhbGwgV2luMzJEZWxldGVGaWxlKCksIHJlcXVpcmVkCglieSBJRTUncyBFeHBsb3Jlci4KCgkqIHByb2dyYW1zL3dpbmhlbHAvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbnZlci9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWd0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy92aWV3L01ha2VmaWxlLmluLCBwcm9ncmFtcy93Y21kL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9wcm9nbWFuL01ha2VmaWxlLmluLCBNYWtlLnJ1bGVzLmluLCBwcm9ncmFtcy9hdml0b29scy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL2NtZGxndHN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jb250cm9sL01ha2VmaWxlLmluOgoJQWRkZWQgZGVwZW5kZW5jeSBvbiB3aW5lc3R1Yi5vCgpTdW4gT2N0IDI0IDIyOjEzOjU1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpbnB1dC5jLCB0b29scy9idWlsZC5jLCB0b29scy9mbnQyYmRmLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL2ZpbGUuYywgd2luMzIvcHJvY2Vzcy5jLCByZWxheTMyL3Nub29wLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvc29jay5jLCBzZXJ2ZXIvc29ja2V0LmMsIG1zZG9zL2ludDIxLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIGluY2x1ZGUvY29uZmlnLmguaW4sIGxvYWRlci9kb3MvZG9zbW9kLmMsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1lbW9yeS9sZHQuYywgZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgZmlsZXMvZGlyZWN0b3J5LmMsIGZpbGVzL2Rvc19mcy5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGRsbHMvb2xlMzIvY29tcG9iai5jLCBkbGxzL29sZWF1dDMyL3ZhcmlhbnQuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBjb25maWd1cmUuaW4sIGRlYnVnZ2VyL3N0YWJzLmMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGNvbmZpZ3VyZToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCBtaXNzaW5nIGNvbmZpZ3VyYXRpb24gI2lmOnMgYW5kICNpbmNsdWRlczpzLgoJLSBNaW5vciBjb25maWd1cmF0aW9uIHJlbGF0ZWQgY2hhbmdlcy4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIExvYWRIb21lUmVnaXN0cnlGaWxlcyBkZWZhdWx0IHRvIFRSVUUuCgoJKiBpbmNsdWRlL2F1dGhvcnMuaCwgaW5jbHVkZS9jb21tLmgsIGluY2x1ZGUvZGF0ZXRpbWUuaCwgaW5jbHVkZS9tb250aGNhbC5oLCBpbmNsdWRlL25ldHNwaS5oLCBpbmNsdWRlL250c2VjYXBpLmgsIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS93aW5lL29ial9jb25uZWN0aW9uLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldW5kby5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwgaW5jbHVkZS93aW5lL29ial9wcm9wZXJ0eS5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZXh0aW5pdC5oLCBpbmNsdWRlL3dpbmUvd2lubmV0MTYuaCwgaW5jbHVkZS93aW5zcG9vbC5oLCBpbmNsdWRlL3htYWxsb2MuaCwgdG9vbHMvbWFrZV9hdXRob3JzOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIHRoZSBpbmNsdWRlIGZpbGVzIHNlbGYtc3VmZmljaWVudC4KCgkqIHRvb2xzL3dpbmFwaV9jaGVjay8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgktIEZpeGVkIHRoZSBsb25nIGxvbmcgcHJvYmxlbS4KCS0gQWRkZWQgY29uZmlndXJlIGluY2x1ZGUgY29uc2lzdGFuY3kgY2hlY2tpbmcuCgktIEFkZGVkIHByb2dyZXNzIGluZGljYXRvci4KCS0gQmVnYW4gc3BsaXR0aW5nIHVwIHRoZSB3aW4xNmFwaS5kYXQgYW5kIHdpbjMyYXBpLmRhdCBmaWxlcy4KCS0gQWRkZWQgdmFyaW91cyBtaW5vciBjaGVja3MuCgktIE1pbm9yIGZpeGVzLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjLCBkbGxzL3dpbjMycy93MzJza3JubC5zcGVjLCBkbGxzL3dpbnNwb29sL3dpbnNwb29sLnNwZWMsIGRsbHMvd25hc3BpMzIvd25hc3BpMzIuc3BlYywgZGxscy9vbGUzMi9vbGUzMi5zcGVjLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWMsIGRsbHMvb2xlY2xpL29sZWNsaTMyLnNwZWMsIGRsbHMvcHNhcGkvcHNhcGkuc3BlYywgZGxscy9hdmlmaWwzMi9hdmlmaWwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NydGRsbC9jcnRkbGwuc3BlYywgZGxscy9udGRsbC9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3JlZy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBzcGVjIGZpbGUgZGVjbGFyYXRpb25zIGZvciBhbHJlYWR5IGltcGxlbWVudGVkIGZ1bmN0aW9ucy4KCgkqIGdyYXBoaWNzL3BhdGguYywgaWYxNjMyL2dkaS5zcGVjLCBvYmplY3RzL2NsaXBwaW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIFdpbjE2IHZhcmlhbnRzIG9mIGV4aXN0aW5nIFdpbjMyIGZ1bmN0aW9ucy4KCgkqIGRsbHMvbnRkbGwvc2lnbmFsX2kzODYuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTb2xhcmlzIGNvbXBpbGUgZml4LgoKCSogZmlsZXMvZmlsZS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlbW92ZSBwcmVmaXhpbmcgYnkgYSB0aWxkZSBmb3IgR2V0VGVtcEZpbGVOYW1lIDMyYml0cy4KCgkqIGRlYnVnZ2VyL2V4cHIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIGluY2x1ZGUuCgoJKiB3aW5kb3dzL3dpbi5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglXYXJuIHVzZXJzIHRvIHVzZSAtdGhlIC1kZXNrdG9wIG9wdGlvbiB0b2dldGhlciB3aXRoIHRoZSBuYXRpdmUgdXNlciBETExzLgoKCSogbG9hZGVyL3Jlc291cmNlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZXR1cm4gdGhlIHNpemUgb2YgdGhlIG5lZWRlZCByZXNvdXJjZSB3aGVuIGJ1ZmZlciBpcyBOVUxMIGZvciBMb2FkU3RyaW5nKCkuCgoJKiBkbGxzL29sZTMyL2NsaXBib2FyZC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy94MTFkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi93aW5lY2xpcHNydi5jLCB3aW5lLmluaToKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUVuYWJsZWQgdGhlIHBlcnNpc3RlbnQgY2xpcGJvYXJkIHNlcnZlci4KCgkqIG1pc2MvcmVnaXN0cnkuYywgd2luZS5pbmk6IE5hdGhhbmllbCA8d2ZpbGFyZG9AZnVzZS5uZXQ+CglJbXByb3ZlZCByZWdpc3RyeSBpc29sYXRpb24gcG9zc2liaWxpdGllcy4KCgkqIG11bHRpbWVkaWEvKi5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTcGxpdCB0aGUgbXVsdGltZWRpYS8gZGlyZWN0b3J5IGludG8gZGxscy8gc3ViZGlyZWN0b3JpZXMuCgoJKiBtdWx0aW1lZGlhL3dpbm1tLnJjLCBtdWx0aW1lZGlhL3dpbm1tX1B0LnJjLCBwcm9ncmFtcy9jbG9jay9DaGFuZ2VMb2csIHByb2dyYW1zL2Nsb2NrL1B0LnJjLCBwcm9ncmFtcy9ub3RlcGFkL0NoYW5nZUxvZywgcHJvZ3JhbXMvbm90ZXBhZC9Gci5yYywgcHJvZ3JhbXMvbm90ZXBhZC9QdC5yYywgcHJvZ3JhbXMvbm90ZXBhZC9XYS5yYywgcHJvZ3JhbXMvcHJvZ21hbi8uY3ZzaWdub3JlLCBwcm9ncmFtcy9wcm9nbWFuL0NoYW5nZUxvZywgcHJvZ3JhbXMvcHJvZ21hbi9QdC5yYywgcHJvZ3JhbXMvd2luaGVscC8uY3ZzaWdub3JlOgoJR3VzdGF2byBKdW5pb3IgQWx2ZXMgPGFsdmVzQGNvcnJlaW9uZXQuY29tLmJyPgoJTW9yZSBQb3J0dWd1ZXNlIGxhbmd1YWdlIHN1cHBvcnQuCgoJKiBvYmplY3RzL2RpYi5jOiBNYXR0aGV3IEouIEZyYW5jaXMgPGFzYmVsQGRpYWwucGlwZXguY29tPgoJRml4ZWQgdG9wLWRvd24gRElCIGhhbmRsaW5nIGluIFN0cmV0Y2hESUJpdHMzMigpLgoKCSogaW5jbHVkZS93aW5kb3dzeC5oOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgbWFjcm8gZGVmaW5pdGlvbnMgZm9yIG1lbW9yeSBhbGxvY2F0aW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZm9udC5oLCBvYmplY3RzL2ZvbnQuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCU1ha2Ugc3VyZSB0aGF0IGFsbCBjYWxscyB1c2UgdGhlIGV4dGVuZGVkIHN0cnVjdHVyZXMgd2hpY2ggYXJlIGEKCXN1cGVyc2V0IG9mIHRoZSByZWd1bGFyIHN0cnVjdHVyZXMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0aHVtYiB0cmFjay4KCgkqIHdpbmRvd3MvZm9jdXMuYzogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNvbT4KCURvIG5vdCBzZXQgZm9jdXMgdG8gYSBkaXNhYmxlZCB3aW5kb3cuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhbiBlbnRyeSBpbiB0aGUga2V5Ym9hcmQgdHJhbnNsYXRpb24gdGFibGUgZm9yIEN0cmwtQnJlYWsuCgoJKiBpbmNsdWRlL2RlYnVnZGVmcy5oLCBzY2hlZHVsZXIvZGVidWdnZXIuYzoKCVVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCU5ldyBjaGFubmVsICdkZWJ1Z3N0cicgdXNlZCB0byBwcmludCBPdXRwdXREZWJ1Z1N0cmluZyBBUEkgY2FsbHMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglQb3B1cCB3aW5kb3dzIHdpbGwgYmUgaGlkZGVuIHdoZW4gd2UgbWluaW1pemUgYSBtYWluIGZyYW1lIG9yIHNob3duCgl3aGVuIHdlIG1heGltaXplIG9yIHJlc3RvcmUgYSBtaW5pbWl6ZWQgbWFpbiBmcmFtZS4KClNhdCBPY3QgMjMgMjM6NTk6NDcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCVByb3BlcnR5U2hlZXQgZGlkbid0IGRlc3Ryb3kgcGFnZSBkaWFsb2cncyB3aW5kb3cgd2hpbGUgcmVtb3ZpbmcgcGFnZS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJVXBkYXRlIHRoZSBpdGVtIHdpZHRoIHVwb24gYSBuZXcgY29sdW1uIGluIHRoZSBoZWFkZXIgY29udHJvbC4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVvcmRlciBwYXJhbWV0ZXJzIHRvIGZpeCBwb3NpdGlvbiBvZiBiYXNlIHJlZyByZWxhdGl2ZSB0byBleGNlcHRpb24KCWZyYW1lLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjogRml4ZWQgdHlwby4KCgkqIGluY2x1ZGUvKi5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglEZWZpbmUgdGhlIENPTSBtYWNyb3MgZXZlbiBpbiBDKysuCgoJKiBjb250cm9scy9tZW51LmMsIHdpbmRvd3MvbWRpLmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGxvb3Agd2l0aCBXTV9TWVNDSEFSLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwZXJzb24ubmV0PgoJRml4ZWQgdG9vbHRpcHMgcG9zaXRpb25pbmcuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IFJlLWFwcGxpZWQgbG9zdCBjaGFuZ2UuCgoJKiBsb2FkZXIvdGFzay5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJZ25vcmUgd3JvbmcgaEluc3RhbmNlLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludGVycnVwdHMuYzoKCVJvYmVydCAnQWRtaXJhbCcgQ29leW1hbiA8YWRtaXJhbEBjb3JuZXIubmV0PgoJUmVwb3J0IG5vbi1oZXJjdWxlcyB2aWRlby4gVHVybmVkIG9uIGludCAyYS4KCgkqIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgbG9hZGVyL21vZHVsZS5jLCBmaWxlcy9maWxlLmM6CglKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglGaXhlZCBjb21waWxpbmcgd2l0aCBTVFJJQ1QuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY29tPgoJUHJvcGVyIHJlc291cmNlIHN1cHBvcnQgZm9yIGRpYWxvZyB0aXRsZS4KCgkqIGluY2x1ZGUvZGxncy5oOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglGaXhlZCBzb21lIHdyb25nIGRlZmluZXMuCgoJKiBvYmplY3RzL2JydXNoLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUNvcHkgYml0bWFwcyBwcm9wZXJseS4KCgkqIGluY2x1ZGUvZGVidWdnZXIuaCwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbXNjLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFsbG93IGxvYWRpbmcgb2YgbW9kdWxlcyBkZWJ1ZyBpbmZvcm1hdGlvbiBhZnRlciBmaXJzdCBpbnZvY2F0aW9uIG9mCglkZWJ1Z2dlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYzoKCUppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUFkZGVkIGEgZmV3IHN0dWJzLgoKCSogaW5jbHVkZS9saXN0dmlldy5oLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglJbXBsZW1lbnRhdGlvbiBvZiBlZGl0IGxhYmVscy4KCgkqIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kZHJhdy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBzb21lIGFub255bW91cyB1bmlvbiBhY2Nlc3Nlcy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglEcmF3IHRoZSBpdGVtIHRleHQgZnJvbSB0aGUgdG9wIG9mIHRoZSBpdGVtIHJlY3QuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCVBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBhc2NlbmRpbmcgYW5kIGRlc2NlbmRpbmcgc29ydCBvcmRlciBmb3IgdGhlIEZpbGUgRGlhbG9nLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJLSBhZGRzIGNhbGxpbmcgYXBwbGljYXRpb24gZGVmaW5lZCBjYWxsYmFjayBmdW5jdGlvbiBvbmNlIFByb3BlcnRTaGVldAoJICBEaWFsb2dib3ggaGFzIGJlZW4gaW5pdGlhbGl6ZWQganVzdCBhZnRlciBjcmVhdGluZyB0aGUgdGFiIGNvbnRyb2wKCS0gaGFuZGxlIHRoZSBjYXNlIHdoZW4gcHN6Q2FwdGlvbiBzcGVjaWZpZXMgYSByZXNvdXJjZSBpbnN0ZWFkIG9mIGEgc3RyaW5nCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaHZfYmdfY21lbnUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSByZW1vdmVkIGFsbCB1bm5lY2Vzc2FyeSAid2luYXBpIiBmcm9tIGludGVybmFsIF9JTCogZnVuY3Rpb25zCgktIGJldHRlciBwYXJhbWV0ZXIgY2hlY2tpbmcgZm9yIHNoZWxsZm9sZGVyCgktIHJlbW92ZWQgZGVhZCBjb2RlIGZyb20gc2h2X2JnX2NvbnRleHRtZW51CgoJKiBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy92Z2EuYywgaW5jbHVkZS9kZHJhdy5oOgoJSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJQWRkZWQgYW5vdGhlciBhbm9ueW1vdXMgdW5pb24gdXNpbmcgdGhlIERVTU1ZVU5JT05OQU1FIHN0eWxlLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglQcm9wZXJseSBjb3B5IHRleHQgaW50byB1c2VyIHN1cHBsaWVkIGJ1ZmZlci4KCgkqIG1pc2Mvd2luc29jay5jLCByZWxheTMyL3dzb2NrMzIuc3BlYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvc29jay5jLCBpZjE2MzIvd2luc29jay5zcGVjLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS93aW5zb2NrLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIG1pc2MvbWFpbi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglXaW5zb2NrIHJld3JpdGUuIFNvY2tldHMgYXJlIG5vdyBwcm9wZXIgd2luMzIgaGFuZGxlcy4KCUludGVybmFsIHN0cnVjdHVyZXMgYXJlIG5vdyByZWFsbHkgaW50ZXJuYWwuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglUYWIgY29udHJvbCBkb2Vzbid0IHJlZnJlc2ggdGFiIGFyZWEgb24gVENNX1NFVENVUlNFTC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsd2FwaS5zcGVjOgoJVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJSW1wbGVtZW50ZWQgU3RyUkNockEuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZXhwci5jLCBpbmNsdWRlL2RlYnVnZ2VyLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogUGVyZm9ybSBwcm9wZXIgcHJvY2VzcyBzaHV0ZG93biBvbiAncXVpdCcgYW5kIGVycm9yLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVN0dWIgT3BlblRocmVhZFRva2VuICYgT3BlblByb2Nlc3NUb2tlbiBmb3IgZmFpbHVyZSBpbiBXaW45eCBtb2RlLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEppbSBBc3RvbiA8amltYUBjb3JlbC5jYT4KCUZpeGVkIGEgc21hbGwgdHlwby4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jb20+CglQcm90ZWN0IGFnYWluc3Qgd3JvbmcgcmV0dXJuIHZhbHVlIGZyb20gV01fSU5JVERJQUxPRy4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCBhbiBpbGxlZ2FsIGNoYXJhY3Rlci4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglOb3cgaW5pdHMgdGhlIHBvbGljeSBjYWNoZSB3aGVuIHNoZWxsMzIgaXMgZmlyc3QgaW5zdGFudGlhdGVkLgoJTWF0Y2hlcyBXaW5kb3plIGJlaGF2aW9yLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NocG9saWN5LmMsIGRsbHMvc2hlbGwzMi9zaHBvbGljeS5oOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglSZWFsIGltcGxlbWVudGF0aW9uIG9mIFNIUmVzdHJpY3RlZCgpLCBjbGFyaWZpZWQgU0hJbml0UmVzdHJpY3RlZCgpJ3MKCXJvbGUgYSBsaXR0bGUsIGFkZGVkIHBvbGljeSBkYXRhIHRhYmxlLgoKCSogZGxscy9vbGUzMi9pZnMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2Ugc2VnbWVudGVkIGxwdnRibCBwb2ludGVyIGZvciBJTWFsbG9jMTYgaW50ZXJmYWNlLCBub3QgbGluZWFyIG9uZS4KCgkqIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVJlcGxhY2VkIGEgWCBjYWxsIHdpdGggYSBUU1ggY2FsbCBpbiBYRFJWX01PVVNFX1NldEN1cnNvcigpLgoKCSogZGxscy9jb21jdGwzMi9yc3JjLnJjOiBVbHJpY2ggQ3pla2FsbGEgPHliaWN1YnVrQHVtYWlsLmNvcmVsLmNvbT4KCVRoZSBwcm9wZXJ0eSBzaGVldCBkaWFsb2cgbmVlZHMgZmxhZyBXU19WSVNJQkxFLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglTZXQgdGhlIGRlZmF1bHQgdmlldyBidXR0b24gdG8gTGlzdCBpbiB0aGUgRmlsZURpYWxvZy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBkb24ndCB1c2UgR2V0TW9kdWxlSGFuZGxlMTYgaW4gTG9hZE1vZHVsZTE2L05FX0NyZWF0ZVByb2Nlc3MuCgoJKiBkZWJ1Z2dlci90eXBlcy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHBvdGVudGlhbCBjcmFzaCBpbiBzdHJpbmcgdmFyaWFibGUgcHJpbnRpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBXTV9HRVRGT05UIHN1cHBvcnQuCgoJKiBpbmNsdWRlL21haW4uaCwgbG9hZGVyL21haW4uYywgbWlzY2VtdS9tYWluLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogZG9uJ3QgY2FsbCBFeGl0UHJvY2VzcygpIGJlZm9yZSBTWVNMRVZFTF9Jbml0KCkuCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJ1Z3MgKG1taW9PcGVuIHdpdGggMTYvMzIgYml0IHN0cmFuZ2VuZXNzLCBtbWlvQXNjZW5kICYKCW1taW9EZXNjZW5kIG9mZnNldCBhbmQgYWxpZ25tZW50IGlzc3VlcykuCgoJKiB3aW5kb3dzL2NsaXBib2FyZC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglXZSBhcmUgc3VwcG9zZWQgdG8gZGVsZXRlIHRoZSBwYWxldHRlIG9iamVjdCB3aXRoIHRoZSBEZWxldGVPYmplY3QKCWZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUxpc3R2aWV3IGl0ZW1zIHdpbGwgYmUgZHJhd24gd2l0aCB0aGUgcmlnaHQgaXRlbSBkaW1lbnNpb25zLgoKCSogZ3JhcGhpY3MvcHNkcnYvdGV4dC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJU29tZSBzbWFsbCBjb3JyZWN0aW9ucyB0byB0aGUgRXh0VGV4dE91dCBmdW5jdGlvbi4KCgkqIGRsbHMvb2xlMzIvb2xlMi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIHN1cmUgdGhhdCB0aGUgZHJvcCBlZmZlY3Qgb2YgYSBEbkQgb3BlcmF0aW9uIGlzIHNldCB0bwoJRFJPUEVGRkVDVF9OT05FIGlmIHRoZSB1c2VyIGNhbmNlbGxlZCB0aGUgb3BlcmF0aW9uLgoKCSogZGxscy9jb21jdGwzMi9hbmltYXRlLmMsIGluY2x1ZGUvYW5pbWF0ZS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXJzdCB3b3JraW5nIHZlcnNpb24uCgoJKiBtdWx0aW1lZGlhL21peGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgdGhlIG11dGUgY2FwYWJpbGl0eSB0byBtb3N0IGNvbnRyb2wgbGluZXMuCgoJKiB3aW5kb3dzL3dpbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJVXNlIHRoZSBtb2R1bGUgaGFuZGxlLCBpZiBDcmVhdGVXaW5kb3dFeCBpcyBjYWxsZWQgd2l0aAoJaEluc3RhbmNlPT1OVUxMLgoKCSogaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIHByb3RvdHlwZXMgZm9yIFN0clJldFRvQnVmKEF8VykuCgpXZWQgT2N0IDEzIDE2OjE3OjIzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZToKCUFkZGVkIFB0LnMuCgoJKiBvYmplY3RzL2RpYi5jOiBCYWNrZWQgb3V0IHByZXZpb3VzIGNoYW5nZSAoYnJlYWtzIHdpdGggbWV0YWZpbGVzKS4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3NvY2suYywgc2VydmVyL3RyYWNlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvd2luc29jay5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBzb2NrZXQgaW50ZXJmYWNlIHRvIHdpbmVzZXJ2ZXIuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIGxvYWRlci9tYWluLmMsIG1pc2NlbXUvbWFpbi5jLCB3aW5lLmluaToKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29ycmVjdCBmaWxlbmFtZSBmb3Iga2VybmVsIG1vZHVsZSBpcyBLUk5MMzg2LkVYRS4KCgkqIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuc3BlYywgZGxscy93aW5tbS93aW5lb3NzL3dpbmVvc3Muc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyAoYW5kIG5vdyByZXF1aXJlZCkgZmlsZW5hbWUgZGlyZWN0aXZlLgoKCSogdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9idWlsdGluMzIuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgZmlsZW5hbWUgdG8gMzIgYml0IGJ1aWx0aW4gbW9kdWxlIGRlc2NyaXB0b3JzLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4IGxvYWRpbmcgb2YgbW9kdWxlczogbm93IHNlYXJjaCBrZXkgaXMgbW9kdWxlJ3MgZmlsZW5hbWUsIG5vdAoJbW9kdWxlJ3MgbmFtZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvdGFiLmM6CglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglXaGVuIGFuIGVycm9yIG9jY3VycmVkIGluIGEgcHJvcGVydHkgc2hlZXQgYmVjYXVzZSBvZiBpbnZhbGlkIGRhdGEsCgljbGlja2luZyBvbiBhbm90aGVyIHRhYiwgd291bGQgYWN0aXZhdGUgdGhlIG5ldyB0YWIgYnV0IGtlZXAgdGhlCglvcmlnaW5hbCBwcm9wZXJ0eSBzaGVldC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gaW1wbGVtZW50ZWQgc29ydGluZyB0aGUgbGlzdHZpZXcgYnkgY2xpY2tpbmcgb24gdGhlIGNvbHVtbiBoZWFkZXIKCS0gaW1wbGVtZW50ZWQgdGhlIGNvbnRleHQgbWVudSBlbnRyeXMgZm9yIHNvcnRpbmcKCS0gc29tZSBtb3JlIGZ1bmN0aW9ucyB0byBnYXRoZXIgZGF0YSBmb3JtIHBpZGxzCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVJlbW92ZWQgbGlua2luZyBieSBHZXRQcm9jQWRkcmVzcyBmb3IgU3RyUmV0VG9CdWYgc2luYyBub3QgYWxsCgl2ZXJzaW9ucyBvZiBzaGx3YXBpIGV4cG9ydGluZyB0aGlzIGZ1bmN0aW9uLgoKCSogbG9hZGVyL21vZHVsZS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJUmVtb3ZlcyBleHRyYW5lb3VzIGNvbXBhcmlzb24gb2YgZGF0YSBwb2ludGVkIHRvIGJ5IHRoZSByZWxvY2F0aW9uCglvZmZzZXQgd2hlbiBubyByZWxvY2F0aW9uIGVudHJpZXMgZXhpc3QuCgoJKiBpZjE2MzIvd3Byb2NzLnNwZWMsIGxvYWRlci9uZS9tb2R1bGUuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGxzdC5kZT4KCVdQUk9DUy5FTlRSWUFERFJQUk9DIG5lZWRzIHRvIHJldHVybiBzb21ldGhpbmcgaW4gQ1ggdG9vIChmaXhlcwoJQkxJTktFUiBzZWxmZXh0cmFjdGluZyBleGVjdXRhYmxlcykuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgRW5kRGlhbG9nIHRvIGJlaGF2ZSBsaWtlIGFzIGluIFdpbmRvd3MuCglDYWxsIFNldFdpbmRvd1BvcyBpbnN0ZWFkIG9mIFNob3dXaW5kb3cgaW4gRW5kRGlhbG9nLgoKCSogd2luZG93cy93aW5wb3MuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIFdJTlBPU19DYW5BY3RpdmF0ZSB0byBub3QgdG8gY29uc2lkZXIgV1NfVklTSUJMRSBzdHlsZS4KCUNvZGUgZm9yIGFjdGl2YXRpbmcgYW5kIHNldHRpbmcgZm9jdXMgdG8gb3RoZXIgd2luZG93cyB3aGVuIGEgd2luZG93CglpcyBoaWRkZW4sIGlzIG1vdmVkIHRvIFNob3dXaW5kb3cgZnJvbSBTZXRXaW5kb3dQb3MuCglBY3RpdmF0ZSB0aGUgdG9wIGxldmVsIHdpbmRvdyBpZiBpdCdzIG5vdCBhY3RpdmUgaW4gU2hvd1dpbmRvdyhTV19TSE9XKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9kaWIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBYMTFEUlZfRElCX1NldEltYWdlQml0cyB3aGVuIGNhbGxlZCBmb3IgUkxFIGVuY29kZWQgZGlicy4KCgkqIG9iamVjdHMvZGliLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJT3B0aW1pemVkIFN0cmV0Y2hESUJpdHMgdG8gY2FsbCBTZXRESUJpdHNUb0RldmljZSAod2hlbiBzcmMgJiBkc3QKCWRpbWVuc2lvbnMgYXJlIGVxdWFsKS4KCgkqIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvUHQucmMsIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3Byb2dtYW4vUHQucmMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9QdC5yYzoKCUd1c3Rhdm8gSnVuaW9yIEFsdmVzIDxhbHZlc0Bjb3JyZWlvbmV0LmNvbS5icj4KCUFkZGVkIFBvcnR1Z3Vlc2UgbGFuZ3VhZ2Ugc3VwcG9ydC4KCgkqIGRsbHMvYXZpZmlsMzIvYXZpZmlsZS5jLCBkbGxzL2RwbGF5eC9kcGxheS5jLCBkbGxzL2RwbGF5eC9kcGxvYmJ5LmMsIGRsbHMvb2xlYXV0MzIvdHlwZWxpYi5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVc2UgdGhlIENPTSBtYWNyb3MgcmF0aGVyIHRoYW4gZGlyZWN0bHkgYWNjZXNzaW5nIHRoZSBscHZ0YmwgZmllbGQuCgoJKiBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIG1pc2MvbHN0ci5jLCBpZjE2MzIvdXNlci5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIExvYWRTdHJpbmcxNiBmb3IgRm9ybWF0TWVzc2FnZTE2IGFuZCBoYW5kbGUKCUZPUk1BVF9NRVNTQUdFX0FMTE9DQVRFX0JVRkZFUiBmbGFnLgoKCSogZ3JhcGhpY3MvcHNkcnYvdGV4dC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJU29tZSBhZGp1c3RtZW50cyB0byBFeHRUZXh0T3V0LgoKCSogaW5jbHVkZS9wc2Rydi5oLCBncmFwaGljcy9wc2Rydi9jbGlwcGluZy5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBjbGlwcGluZyBmb3IgdGhlIHBvc3RzY3JpcHQgZHJpdmVyIGFuZCB0dXJuZWQgaXQgb24gKGJ5IHNldHRpbmcKCVBTRFJWX1NldERldmljZUNsaXBwaW5nIGluIHRoZSBmdW5jdGlvbiB0YWJsZSkuCgoJKiBmaWxlcy9kcml2ZS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBY2NvdW50IGZvciB0aGUgdHJhaWxpbmcgTlVMTCBpbiBHZXRMb2dpY2FsRHJpdmVTdHJpbmdzQS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgYSB0eXBvIGluIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBab2x0YW4gS292YWNzIDxvcml0ZWxlQGFsYXJtaXgubmV0PgoJQWRkZWQgSHVuZ2FyaWFuIGtleWJvYXJkIHN1cHBvcnQuCgoJKiB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL3dpbnBvcy5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVdlIGhhdmUgdG8gYWN0aXZhdGUgTURJIGNoaWxkIHdpbmRvd3MuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVXNlIEdldHxTZXRQcm9wQSB0byBzdG9yZSBsUGFyYW0gdG8gcmV0cmlldmUgdGhlIE9QRU5GSUxFTkFNRTE2IGZvciBhCgloV25kLgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0IHVzYWdlIG9mIGEgc2NyYXRjaCBhcnJheSBpbiBYMTFEUlZfUG9seUJlemllci4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJTWFrZSBXTV9HRVRURVhUTEVOR1RIIHJldHVybiBsZW5ndGggZm9yIGRyb3Bkb3dubGlzdCBjb21ib3MuCgoJKiBjb250cm9scy9idXR0b24uYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJUmVtb3ZlZCBGaWxsUmVjdCBpbiB0aGUgb3duZXJkcmF3biBidXR0b24gcHJvY2VkdXJlLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglNYWtlIHN1cmUgdGhlIEZvY3VzIE91dCB3aW5kb3cgaXMgc3RpbGwgdGhlIEZvcmVncm91bmQgd2luZG93IGJlZm9yZQoJZG9pbmcgU2V0Rm9yZWdyb3VuZFdpbmRvdygwKSBpbiBFdmVudF9Gb2N1c091dC4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlcyBwcm9ibGVtcyB3aXRoIGNvbG9yIGRyaWZ0IHdoZW4gc3dpdGNoaW5nIHRvL2Zyb20KCWxvZ2ljYWwvcGh5c2ljYWwgY29sb3JzLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglNb3VzZSBwb3NpdGlvbiBpcyBzaWduZWQuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJU2V0IHRoZSBDT0xPUl8zRExJR0hUIHN5c3RlbSBjb2xvciB0byB0aGUgcmlnaHQgd2luZG93IGRlZmF1bHQgdmFsdWUuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVNtYWxsIGhhY2sgdG8gY2hlY2sgaWYgd2UgbmVlZCB0byByZWxvY2F0ZSB0aGUgVExTIGRpcmVjdG9yeSBvciBub3QKCShzb21lIHNlZW0gdG8gbmVlZCB0aGlzIHBvaW50ZXIgcmVsb2NhdGVhYmxlLCBzb21lIGFscmVhZHkgZG8gcmVsb2NhdGUKCWl0IGJ5IHRoZW1zZWx2ZXMpLgoKCSogTWFrZS5ydWxlcy5pbjogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlbGluayBzdWJkaXJlY3Rvcnkgb2JqZWN0cyBvbiBNYWtlZmlsZS5pbi9NYWtlLnJ1bGVzLmluIGNoYW5nZS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGxzdC5kZT4KCUNoZWNrIGZvciBOVUxMIHB0ciBpbiBQcm9wc2hlZXRfUmVtb3ZlUGFnZSAoWGluZyBEVkQgUGxheWVyKS4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGxzdC5kZT4KCURvbid0IHJlZiBOVUxMIHB0cnMgaW4gZGVidWcuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBsc3QuZGU+CglJZiB0aGUgam95ZGV2aWNlIGlzIG5vdCBwcmVzZW50LCBkbyBub3QgY3JlYXRlIGEgRGlyZWN0SW5wdXREZXZpY2UuCgoJKiBkbGxzL2NvbW1kbGcvY29tbWRsZy5zcGVjLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaW5jbHVkZS9jb21tZGxnLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglNYXAgUHJpbnREbGcxNiB0byBQcmludERsZ0EuCgoJKiBkbGxzL3NoZWxsMzIvc2hsbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzLgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hZGUgVHJhY2tQb3B1cE1lbnUgd2l0aCBUUE1fUkVUVVJOQ01EIHJldHVybmluZyB0aGUgaWQgaW5zdGVhZCBvZgoJdHJ1ZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogVWxyaWNoIEN6ZWthbGxhIDx1bHJpY2hjQGNvcmVsLmNhPgoJUHJldmVudCBzZWxmIHJlZmVyZW5jaW5nIG5leHQgcG9pbnRlciBkdXJpbmcgaW5zZXJ0LgoKCSogb2xlL25scy9mcmEubmxzOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgbWlzc2luZyBkZWZpbml0aW9ucy4KCgkqIG11bHRpbWVkaWEvd2lubW0ucmMsIG11bHRpbWVkaWEvd2lubW1fTmwucmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkZGVkIER1dGNoIHRvIHRoZSBsYW5ndWFnZXMgc3VwcG9ydGVkIGJ5IE1DSS4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2ludGVybmF0aW9uYWxpc2F0aW9uOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglVcGRhdGVkIHN0YXR1cyBvZiBpbnRlcm5hdGlvbmFsaXNhdGlvbi4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6ICpEb24ndCogcmVzb2x2ZSBQRSBpbXBvcnRzIGlmIGFza2VkIG5vdCB0byAuLi4KCgkqIG1pc2MvZGRlbWwuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERkZU5hbWVTZXJ2aWNlIHdhcyBicm9rZW4uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogV2hlbiBsb2FkaW5nIGFuIGV4ZWN1dGFibGUgbW9kdWxlIGZhaWxzLCBkb24ndCBwZXJmb3JtIG1vZHVsZQoJY2xlYW51cCBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgdGFzayBpcyBkZXN0cm95ZWQuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL2NkbGdfeHgucmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCU1vdmVkIGJpdG1hcCByZXNvdXJjZSB0byBsYW5ndWFnZS1pbmRlcGVuZGVudCByZXNvdXJjZSBmaWxlLgoKCSogbWlzYy92ZXJzaW9uLmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgd2FybmluZyBmb3IgZnV0dXJlIFZFUlNJT05fR2V0VmVyc2lvbigpIChtaXMtKXVzZXJzIGFuZCBtYWRlCglPU1ZFUlNJT05JTkZPIHdhcm5pbmcgbW9yZSBkZXRhaWxlZC4KCgkqIGRsbHMvb2xlYXV0MzIvb2xlYXV0LmMsIGRsbHMvb2xlYXV0MzIvb2xlYXV0MzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBzdHVicyBmb3IgUmV2b2tlQWN0aXZlT2JqZWN0LCBHZXRBY3RpdmVPYmplY3QsIGZpeGVkCglSZWdpc3RlckFjdGl2ZU9iamVjdCBzdHViIGFyZ3R5cGVzLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBnZXJtYW4ga2V5Ym9hcmQgbGF5b3V0IHdpdGggIm5vZGVhZGtleXMiIG9wdGlvbiBlbmFibGVkIChqdXN0IHRvCglhcG9zdHJvcGhlcyBhcmUgc3dpdGNoZWQpLgoKCSogZGxscy9tc3ZpZGVvL21zdmlkZW8uc3BlYywgZGxscy9tc3ZpZGVvL21zdmlkZW9fbWFpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVN0dWIgZm9yIFZpZGVvQ2FwRHJpdmVyRGVzY0FuZFZlci4KCgkqIG1zZG9zL2ludDIxLmM6IE1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglSZXBsaWNhdGUgQ3JlYXRlRGlyZWN0b3J5KCkgTGFzdEVycm9yIHdvcmthcm91bmQgZm9yIHRoZSBMRk4gcGFydC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCUFsc28gZXNjYXBlIGNoYXJhY3RlcnMgPj0weDgwIHdpdGhpbiB0aGUgd2luZXJlZ2lzdHJ5IHNhdmVmaWxlLgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglEb24ndCB1c2UgbWFsbG9jL2ZyZWUgaW4gd2luYXNwaTMyLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVVzZSAxIG1hY3JvIGZvciByZ2JiaXRkZXB0aCAtPiBieXRlIGRldGVybWluYXRpb24uCgl4c2htL2ltYWdlIGNyZWF0aW9uIG5vdyB1c2VzIDEvOCBvZiB0aGUgc3BhY2UgZm9yIGV2ZXJ5IGltYWdlLgoKCSogcmVsYXkzMi91c2VyMzIuc3BlYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCVJlcGxhY2VkIGRvdWJsZSBDaGFuZ2VEaXNwbGF5U2V0dGluZ3NBIGJ5IChFeClbQVddLgoKV2VkIFNlcCAyOSAxMjoxNjoxNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL2J1aWx0aW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRG9uJ3QgY2FsbCBHZXRWZXJzaW9uRXhBIHRvbyBlYXJseSwgdG8gYXZvaWQgYnJlYWtpbmcKCWF1dG9tYXRpYyBlbXVsYXRlZCBXaW5kb3dzIHZlcnNpb24gZGV0ZWN0aW9uLgoKCSogZGxscy9vbGVhdXQzMi90eXBlbGliLmMsIGluY2x1ZGUvb2xlYXV0by5oLCBkbGxzL29sZWF1dDMyL29sZWF1dDMyLnNwZWM6CglSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRmlyc3QgaW1wbGVtZW50YXRpb24gb2YgTG9hZFR5cGVMaWJFeCgpLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3R1YiBmb3IgV01NTUlESVJVTk9OQ0UgY2FsbGVkIGJ5IG1pZGltYXAuZHJ2LgoKCSogbWlzYy93aW5zb2NrLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2V0IHJlZmNvdW50ZXIgdG8gMSBvbiBpbml0aWFsIGluaXQgb3IgV1NBU3RhcnR1cC9XU0FTdGFydHVwIHdpdGgKCWZvbGxvd2luZyBXU0FDbGVhbnVwIHdpbGwgYWxyZWFkeSBmcmVlIHRoZSBzdHJ1Y3R1cmVzLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGUgRGlyZWN0U291bmQgb2JqZWN0IGV2ZW4gd2l0aG91dCBzb3VuZGRldmljZS4gR2FtZXMgY2FuIGJlCglwbGF5ZWQgd2l0aG91dCBzb3VuZCwgYnV0IG5vdCB3aXRob3V0IERpcmVjdFNvdW5kIG9iamVjdCAodGVzdGVkIHdpdGgKCU1vbmtleSBJc2xhbmQgMykuCgoJKiBkbGxzL29sZWRsZy9vbGVkbGcuc3BlYywgaW5jbHVkZS9udGRkay5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHRvb2xzL2J1aWxkLmMsIGRsbHMvY3J0ZGxsL2NydGRsbC5zcGVjLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgb2YgdGhlIGlzc3VlcyByZXBvcnRlZCBieSB3aW5hcGktY2hlY2ssIGJ5IGFkZGluZyBhcmd1bWVudHMKCXRvIHZhcmFyZ3MuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBhYmlsaXR5IHRvIGNhbGwgd2luYXBpX2NoZWNrIGZyb20gdGhlIE1ha2VmaWxlcy4KCgkqIG1zZG9zL2RwbWkuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb2RpZmljYXRpb24gZHVlIHRvIHByb2JsZW1zIHdpdGggd2luYXBpLWNoZWNrLgoKCSogdG9vbHMvd2luYXBpX2NoZWNrL3BhcnNlci5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjE2YXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbjMyYXBpLmRhdCwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaS5wbSwgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL3dpbmFwaV9vcHRpb25zLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX3BhcnNlci5wbToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGFwdGVkIHRvIGNoYW5nZXMgaW4gV2luZS4KCS0gTWlub3IgaW1wcm92ZW1lbnRzLgoKVHVlIFNlcCAyOCAxNjo0MDowNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL2V2ZW50LmMsIHNlcnZlci9vYmplY3QuaDoKCU1hZGUgZXZlbnQgbWFuaXB1bGF0aW9uIHJvdXRpbmVzIHB1YmxpYy4KCgkqIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvZHBsYXl4Ly5jdnNpZ25vcmUsIGRsbHMvZHBsYXl4L01ha2VmaWxlLmluLCBkbGxzL2RwbGF5eC9kcGNsYXNzZmFjdG9yeS5jLCBkbGxzL2RwbGF5eC9kcGluaXQuaCwgZGxscy9kcGxheXgvZHBsYXkuYywgZGxscy9kcGxheXgvZHBsYXkuc3BlYywgZGxscy9kcGxheXgvZHBsYXl4LnNwZWMsIGRsbHMvZHBsYXl4L2RwbG9iYnkuYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheSwgaW5jbHVkZS9kcGxheS5oLCBpbmNsdWRlL2RwbG9iYnkuaCwgbXVsdGltZWRpYS9NYWtlZmlsZS5pbiwgbXVsdGltZWRpYS9kcGxheS5jLCByZWxheTMyLy5jdnNpZ25vcmUsIHJlbGF5MzIvZHBsYXkuc3BlYywgcmVsYXkzMi9kcGxheXguc3BlYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCS0gTW92ZWQgZHBsYXkgYW5kIGRwbGF5eCB0byBhIHByb3BlciBob21lIGluIHRoZSBkbGxzIGRpcmVjdG9yeS4KCS0gSW1wbGVtZW50ZWQgbmV3IERpcmVjdFBsYXk0IGFuZCBEaXJlY3RQbGF5TG9iYnkzIGludGVyZmFjZXMuCgktIEltcGxlbWVudGVkIGEgY2xhc3MgZmFjdG9yeSBmb3IgZHBsYXkgYW5kIGRwbG9iYnkuIENPTSBpbnRlcmZhY2VzCgkgIG5vdyB3b3JrIGZvciBkcCBhbmQgZHBsLgoJLSBBZGRlZCBhIGZldyBtb3JlIGVudHJpZXMgdG8gZHBsYXl4LnNwZWMgZmlsZXMuIEhvdyBkbyB5b3UgZmluZCB0aGUKCSAgb3JkaW5hbHM/IEkganVzdCBndWVzc2VkIDooCgktIFNlcGVyYXRlZCBEaXJlY3RQbGF5IGFuZCBEaXJlY3RQbGF5TG9iYnkgaW1wbGVtZW50YXRpb24gaW50byBzZXBhcmF0ZSBmaWxlcy4KCS0gSW5jbHVkZWQgc29tZSBtaXNzaW5nIGhlYWRlciBmaWxlIGRlZmluaXRpb25zLgoJLSBJbXBsZW1lbnRlZCB0aGUgZHBsYXkgZGxsIGluIHRlcm1zIG9mIHRoZSBkcGxheXggZGxsLiBJIGhhdmVuJ3QKCSAgdGVzdGVkIGl0IHNvIGl0IG1heSBub3Qgd29yay4uLgoJLSBBIGZldyBidWcgZml4ZXMgYW5kIGEgbGl0dGxlIG5ldyBpbXBsZW1lbnRhdGlvZS5uCgktIFVwZGF0ZWQgZG9jdW1lbnQgd2l0aCBhIG1vcmUgZGV0YWlsZWQgaW1wbGVtZW50YXRpb24gcGxhbi4KCgkqIHdpbmRvd3Mvd2luLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJUmV3cml0ZSB0aGUgU2hvd093bmVkUG9wdXBzIGZ1bmN0aW9uIHdpdGggYSBzYWZldHkgYWxnb3JpdGhtLgoKCSogY29udHJvbHMvbWVudS5jOiBLYXJsIExlc3NhcmQgPHliaWN1YnVrQHVtYWlsLmNvcmVsLmNvbT4KCU1ha2UgRXhlY0ZvY3VzZWRJdGVtIHJldHVybiAtMSBvbiBmYWlsdXJlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgbXVsdGltZWRpYS9kc291bmQuYzoKCVBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CgktIENoYW5nZWQgcmV0dXJuIGNvZGUgZm9yIGZhaWx1cmUgb24gKl9EbGxHZXRDbGFzc09iamVjdCB0bwoJICBDTEFTU19FX0NMQVNTTk9UQVZBSUxBQkxFIGZyb20gRV9OT1RBVkFJTEFCTEUgYXMgZG9jdW1lbnRlZC4KCS0gUmVwbGFjZWQgbWVtY21wcyB3aXRoIGVxdWl2YWxlbnQgSXNFcXVhbENMU0lEIG9yIElzRXF1YWxHVUlEIG1hY3Jvcy4KCS0gQ2hhbmdlZCAicmV0dXJuIDA7IiB3aXRoIFNfT0sgb3IgRFNfT0sgYXMgYXBwcm9wcmlhdGUuCgoJKiBkbGxzL250ZGxsL3NpZ25hbF9pMzg2LmM6CglTdXBwb3J0IFRSQVBfc2lnIGZvciBGcmVlQlNEICh3aXRoIHRoZSBoZWxwIG9mIEp1ZXJnZW4gTG9jaykuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlbWVtYmVyIHRoZSBhbGxvY2F0ZWQgc3RyaW5nIHRvIGZyZWUgaXQuCgoJKiBjb250cm9scy9tZW51LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRm9yY2UgcmVjYWxjdWxhdGlvbiBvZiBtZW51IHdoZW4gY2FsbGluZyBJbnNlcnRNZW51SXRlbS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSWFuIFNjaG1pZHQgPGlzY2htaWR0QGNmbC5yci5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiAyIFdpbjk4IGJ5LW9yZGluYWwgU0hFTEwzMiByb3V0aW5lcy4gIEhlbHBzIFdpbjk4CglFeHBsb3JlciB3b3JrIGJldHRlci4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdHlwbyBpbiBoRHJ2IGZvciBzZW5kaW5nIG1lc3NhZ2UuCgpNb24gU2VwIDI3IDEzOjM4OjU3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21tZGRrLmgsIG11bHRpbWVkaWEvbWNpLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgbGFzdCBkZXBlbmRhbmNpZXMgYmV0d2VlbiBNQ0kgZHJpdmVycyBhbmQgV0lOTU0vTU1TWVNURU0KCURMTHMuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJR290IHJpZCBvZiBoYWNrIG9uIFdBVkVIRFIncyAmIE1JRElIRFIncyByZXNlcnZlZCBmaWVsZCBmb3IgMTYvMzIgYml0CglkaXNjcmltaW5hdGlvbi4KCUZpeGVkIGEgZmV3IHNlZ3B0ci9saW5lYXIgYWRkcmVzcyBidWdzIGluIFdBVkVIRFIvTUlESUhEUiBoYW5kbGluZy4KCgkqIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbWF1eC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGVjayBmb3IgT1NTIGRyaXZlciBwcmVzZW5jZSBhbmQgcmV0dXJuIGVycm9yIGFjY29yZGluZ2x5LgoKCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJR290IHJpZCBvZiBoYWNrIG9uIE1JREhEUidzIHJlc2VydmVkIGZpZWxkIGZvciAxNi8zMiBiaXQKCWRpc2NyaW1pbmF0aW9uLgoKCSogbXVsdGltZWRpYS9sb2x2bGRydi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIHdpdGggbWFwcGVyIGxvYWRpbmcuCglHb3QgcmlkIG9mIGhhY2sgb24gV0FWRUhEUidzIHJlc2VydmVkIGZpZWxkIGZvciAxNi8zMiBiaXQKCWRpc2NyaW1pbmF0aW9uLgoKCSogbXVsdGltZWRpYS9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUdvdCByaWQgb2YgaGFjayBvbiBXQVZFSERSJ3MgcmVzZXJ2ZWQgZmllbGQgZm9yIDE2LzMyIGJpdAoJZGlzY3JpbWluYXRpb24uCgoJKiBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglUeXBvIGNvcnJlY3Rpb24uCgoJKiBsb2FkZXIvbGlicmVzLmM6IFVscmljaCBDemVrYWxsYSA8dWxyaWNoY0Bjb3JlbC5jYT4KCUZpeCBpbnRlZ2VyIGJhc2VkIHJlc291cmNlIGlkIGFzc3VtcHRpb24uCglBZGQgc3VwcG9ydCBmb3Igc3RyaW5nIGJhc2VkIHR5cGUgaWRzLgoKCSogaW5jbHVkZS93aW5zb2NrMi5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHNvbWUgYmFzaWMgV2luc29jazIgZGVmaW5pdGlvbnMuCgoJKiBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9zZWxlY3QuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBFWENFUFRfRVZFTlQgdG8gd2luZXNlcnZlciBzZWxlY3QgbG9vcC4KCgkqIGZpbGVzL2Rvc19mcy5jOiBQZXRlciBHYW50ZW4gPGdhbnRlbkB1bmktYnJlbWVuLmRlPgoJRml4IGZvciBWRkFUX0lPQ1RMX1JFQURESVJfQk9USC4KCgkqIGRsbHMvd2luZy93aW5nX21haW4uYzogUGV0ZXIgR2FudGVuIDxnYW50ZW5AdW5pLWJyZW1lbi5kZT4KCVNtYWxsIHdpbmcgZW5oYW5jZW1lbnQuCgoJKiBjb250cm9scy9lZGl0LmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJUmV0dXJuIGtleSBzaG91bGQgbm90IGJlIGlnbm9yZWQgaW4gbXVsdGlsaW5lIGVkaXQgZXZlbiBpZgoJRVNfV0FOVFJFVFVSTiBmbGFnIGlzbid0IHNldC4KCgkqIGluY2x1ZGUvZ2RpLmgsIG9iamVjdHMvZ2Rpb2JqLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglEUHRvTFAgbmVlZHMgdG8gcm91bmQgdGhlIHJlc3VsdC4KCUZpeGVkIE11bERpdiB0byBkZWFsIGJldHRlciB3aXRoIG5lZ2F0aXZlIG51bWJlcnMuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCXJjUGFpbnQgaGFzIHRvIGJlIHJldHVybmVkIGluIGxvZ2ljYWwgY29vcmRpbmF0ZXMgYnV0IHdhcyBpbnRlcnNlY3RlZAoJd2l0aCBhIGNsaWVudCByZWN0YW5nbGUgaW4gZGV2aWNlIGNvb3JkaW5hdGVzLgoKCSogb2JqZWN0cy9yZWdpb24uYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglGaXhlZCBHZXRSYW5kb21SZ24uCgoJKiBmaWxlcy9kcml2ZS5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCU1hZGUgR2V0Q3VycmVudERpcmVjdG9yeSByZXR1cm4gbG9uZyBuYW1lIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCgkqIGluY2x1ZGUvYnV0dG9uLmgsIGNvbnRyb2xzL2J1dHRvbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJVXNlIGFuIGV4dHJhIGJpdCBpbiB0aGUgYnV0dG9uIHN0YXR1cyBieXRlIHRvIGZsYWcgd2hldGhlciB0aGUKCURlZkJ1dHRvblduZFByb2Mgc2hvdWxkIHByb2Nlc3MgdGhlIFdNX0xCVVRUT05VUCBtZXNzYWdlLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9zaWduYWxfaTM4Ni5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgbG9hZGVyL3NpZ25hbC5jLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9tYWluLmM6CglNb3ZlZCBhbGwgc2lnbmFsIHN1cHBvcnQgdG8gYSBuZXcgcGxhdGZvcm0tc3BlY2lmaWMgZmlsZS4KCU1ha2UgdXNlIG9mIHRoZSBwZXItdGhyZWFkIHNpZ25hbCBzdGFjayAoSnVlcmdlbiBMb2NrKS4KCUZpeGVkICVmcyBpbiBzaWduYWwgaGFuZGxlciBmb3Igbm9uIEZTX3NpZyBjYXNlIChVbHJpY2ggV2VpZ2FuZCkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRodSBTZXAgMjMgMTY6MTQ6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIE1ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi8uY3ZzaWdub3JlLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvd2luZWNsaXBzcnYuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgY2xpcGJvYXJkIHNlcnZlci4KCgkqIHRvb2xzL0F0dGljL3dpbmFwaS1jaGVjaywgdG9vbHMvd2luYXBpX2NoZWNrL25hdGl2ZWFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay9uYXRpdmVhcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay9wYXJzZXIucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW4xNmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW4zMmFwaS5kYXQsIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGkucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfY2hlY2ssIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfZ2xvYmFsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX2xvY2FsLnBtLCB0b29scy93aW5hcGlfY2hlY2svd2luYXBpX29wdGlvbnMucG0sIHRvb2xzL3dpbmFwaV9jaGVjay93aW5hcGlfcGFyc2VyLnBtOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWRlIGEgbmV3IGltcHJvdmVkIHZlcnNpb24gb2Ygd2luYXBpLWNoZWNrIGluIHBlcmwuCgoJKiBtc2Rvcy9pbnQyMS5jOgoJSW1wbGVtZW50ZWQgdXBwZXJjYXNpbmcgZnVuY3Rpb25zIChiYXNlZCBvbiBhIHBhdGNoIGJ5IFJvYmVydAoJJ0FkbWlyYWwnIENvZXltYW4pLgoKCSogd2luZG93cy91c2VyLmMsIGRsbHMvb2xlMzIvb2xlMnN0dWJzLmMsIGRsbHMvb2xlMzIvc3RvcmFnZS5jLCBkbGxzL29sZWF1dDMyL3R5cGVsaWIuYywgZGxscy9zdHJlc3Mvc3RyZXNzX21haW4uYywgaWYxNjMyL2R1bW15LmMsIGluY2x1ZGUvc3RyZXNzLmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBtaXNjL3ByaW50ZHJ2LmMsIHdpbmRvd3MvaW5wdXQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgc29tZSBvZiB0aGUgaXNzdWVzIHJlcG9ydGVkIGJ5IHdpbmFwaS1jaGVjay4KCgkqIG1pc2MvY29tbS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vZGlmaWNhdGlvbiBkdWUgdG8gcHJvYmxlbXMgd2l0aCB3aW5hcGktY2hlY2suCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVdTX1BPUFVQIHdpbmRvd3MgKGV4Y2x1ZGluZyB0aGUgV1NfUE9QVVBXSU5ET1cgd2luZG93cykgc2hvdWxkIGJlCgljbG9zZWQgYWZ0ZXIgbG9vc2luZyB0aGUgZm9jdXMuCgoJKiBvYmplY3RzL2RpYi5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglDcmVhdGVESUJpdG1hcCBjcmVhdGVzIGEgbW9ub2Nocm9tZSBiaXRtYXAgb25seSB3aGVuIHRoZSBmaXJzdCBjb2xvciBvZiB0aGUKCWNvbG9ybWFwIGlzIGJsYWNrIGZvbGxvd2VkIGJ5IHdoaXRlLiBPdGhlcndpc2UgaXQgY3JlYXRlcyBhIGNvbG9yIGJpdG1hcC4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCU5vbiBhY3RpdmUgd2luZG93IHNob3VsZCBiZSBhY3RpdmF0ZWQgd2hlbiBpdCBnZXRzIGFueQoJY2xpZW50L25vbi1jbGllbnQgZG91YmxlL3NpbmdsZSBsZWZ0L21lZGl1bS9yaWdodCBtb3VzZSBjbGljayhzKS4KCldlZCBTZXAgMjIgMTY6NTM6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgV0lORU9TUyBkZXNjcmlwdG9yLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1NU1lTVEVNX0dldElEYXRhKCkgbm93IGRpZXMgd2hlbiBubyBpRGF0YSBpcyBwcmVzZW50CglCZXR0ZXIgZXJyb3IgcmVjb3Zlcnkgd2hlbiB0aGUgcHJvY2VzcyBhdHRhY2htZW50IGZhaWxzCglQbGF5U291bmQgKGFuZCBoZWxwZXIgZnVuY3Rpb25zKSBub3cgdXNlIHRoZSByZWd1bGFyIHdhdmVPdXRYWFggKGluc3RlYWQgb2Ygd29kTWVzc2FnZSkKCU1vdmVkIGhhbmRsaW5nIG9mIGhhY2sgZm9yIGRpZmZlcmVuY2lhdGluZyBiZXR3ZWVuIDE2IGFuZCAzMiBiaXQgY2FsbGJhY2sgdG8gbG9sdmxkcnYuYwoJTWFrZXMgdXNlIG9mIG5ldyBsb2x2bGRydi5jIGludGVyZmFjZXMKCgkqIG11bHRpbWVkaWEvLmN2c2lnbm9yZSwgbXVsdGltZWRpYS9NYWtlZmlsZS5pbiwgbXVsdGltZWRpYS9sb2x2bGRydi5jLCBtdWx0aW1lZGlhL29zcy5jLCBtdWx0aW1lZGlhL29zcy5oLCBtdWx0aW1lZGlhL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBsb2x2bGRydi5jIGFuZCBvc3MuYy4KCVRodW5rcyB0byAxNiBiaXQgYXJlIG5vdyBnZW5lcmF0ZWQgZm9yIHRoZSBNTVNZU1RFTSBtb2R1bGUuCgoJKiBjb25maWd1cmUuaW4sIGRsbHMvd2lubW0vLmN2c2lnbm9yZSwgZGxscy93aW5tbS9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzLy5jdnNpZ25vcmUsIGRsbHMvd2lubW0vd2luZW9zcy9NYWtlZmlsZS5pbiwgZGxscy93aW5tbS93aW5lb3NzL3dpbmVvc3Muc3BlYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgZGxscy93aW5tbSBhbmQgZGxscy93aW5tbS93aW5lb3NzIGRpcmVjdG9yaWVzLgoKCSogbXVsdGltZWRpYS90aW1lLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIGNoZWNraW5nIGZvciBjb3JyZWN0IGlEYXRhIGluIGNvZGUuCgoJKiByZWxheTMyL3dpbm1tLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBEcml2ZXJDYWxsQmFjayBmdW5jdGlvbi4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFsbCBoZWFkZXJzICh3YXZlIGFuZCBtaWRpIGZ1bmN0aW9ucykgYXJlIG5vdyBzZWVuIGFzIHNlZ3B0ci4KCUFkZGVkIHN0dWIgZm9yIGpveUdldFBvc0V4MTYoKS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG1pc3NpbmcgZGVmaW5lcy4KCgkqIGluY2x1ZGUvbW1kZGsuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgdXNpbmcgdGhlIHNhbWUgc3RydWN0cyBmb3IgbG93LWxldmVsIGRyaXZlcnMgYXMgV2luZG93cyBkby4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tYXV4LmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1ha2UgaXQgKGFsbW9zdCkgMzIgYml0IG9ubHkuCglSZWZsZWN0ZWQgY3JlYXRpb24gb2YgV0lORU9TUyBtb2R1bGUuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWtlIGl0IChhbG1vc3QpIDMyIGJpdCBvbmx5LgoJUmVmbGVjdGVkIGNyZWF0aW9uIG9mIFdJTkVPU1MgbW9kdWxlLgoJTm8gbG9uZ2VyIHVzaW5nIEVSUiB3aGVuIG5vIE1JREkgY2FyZCBpcyBwcmVzZW50LgoKCSogbXVsdGltZWRpYS9qb3lzdGljay5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN0dWIgZm9yIGpveUdldFBvc0V4MTYoKS4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm8gbG9uZ2VyIGNoZWNraW5nIGZvciBjb3JyZWN0IGlEYXRhIGluIGNvZGUuCglBZGRlZCBsb29rLXVwIHRhYmxlcyB0byBjb21tYW5kIHRhYmxlcyAoc3BlZWRzIHVwIHF1ZXJpZXMpLgoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTm93IHVzaW5nIFdBVkVGT1JNQVRFWCBpbnN0ZWFkIG9mIFBDTVdBVkVGT1JNQVQuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglOb3cgdXNpbmcgbW9kUmVzZXQoKSBpbnN0ZWFkIG9mIHR3ZWFraW5nIE1JREkgY29udHJvbHMuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHJldHVybmVkIHR5cGUgdXBvbiBvcGVuLgoJRml4ZWQgc29tZSBib2d1cyBlcnJvciBjaGVja2luZy4KCgkqIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWF2aS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZXR1cm5lZCB0eXBlIHVwb24gb3Blbi4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRG8gbm90IHNldCBFSF9OT05DT05USU5VQUJMRS4KCgkqIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrLy5jdnNpZ25vcmUsIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL0NoYW5nZUxvZywgcHJvZ3JhbXMvb3N2ZXJzaW9uY2hlY2svTWFrZWZpbGUuaW4sIHByb2dyYW1zL29zdmVyc2lvbmNoZWNrL29zdmVyc2lvbmNoZWNrLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBwcm9ncmFtcy9NYWtlZmlsZS5pbjoKCU1vcnRlbiBFcmlrc2VuIDxtb3J0ZW5lQHNpbS5ubz4KCUFkZGVkIHNpbXBsZSBjb25zb2xlIG1vZGUgZXhhbXBsZSBwcm9ncmFtIHdoaWNoIGxpc3RzIGluZm9ybWF0aW9uCglhYm91dCB0aGUgdmVyc2lvbiBvZiBXaW5kb3dzIHdlJ3JlIGN1cnJlbnRseSBydW5uaW5nIG9uLgoKCSogbG9hZGVyL21vZHVsZS5jOiBGaXhlZCBtZW1vcnkgYWxsb2NhdGlvbiBidWcuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeCBpbmZpbml0ZSBsb29wIHdpdGggZ2xhc3RYRm9jdXNXaW5kb3cuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUFsbG93IGNyZWF0aW9uIG9mIGVtcHR5IGltYWdlbGlzdC4KCgkqIG9iamVjdHMvcGFsZXR0ZS5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglJYW4gU2NobWlkdCA8aXNjaG1pZHRAY2ZsLnJyLmNvbT4KCUFkZGVkIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgR2V0SUNNUHJvZmlsZUEsIHJlcXVpcmVkIGJ5IFBhaW50IFNob3AKCVBybyA1LgoKCSogY29udHJvbHMvbWVudS5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCURvbid0IHNlbmQgV01fRU5URVJNRU5VTE9PUCwgV01fSU5JVE1FTlUgJiBXTV9JTklUTUVOVVBPUFVQIG1lc3NhZ2VzCgl3aGVuIFRQTV9OT05PVElGWSBmbGFnIGlzIHNldCBpbiBUcmFja1BvcHVwTWVudS4KCgkqIG1pc2Mvd2luc29jay5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglnZXRwZWVybmFtZSgpIGFuZCBnZXRzb2NrbmFtZSgpIHJldHVybiBlcnJvcnMgaW4gZXJybm8gbm90IGhfZXJybm8uCgpNb24gU2VwIDIwIDE4OjUyOjA2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIG1pc2MvcmVnaXN0cnkuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHRvb2xzL2J1aWxkLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIEFOU0kgQyB2aW9sYXRpb25zLgoKCSogd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21vdXNlLmMsIGlmMTYzMi9rZXlib2FyZC5zcGVjLCBpZjE2MzIvbW91c2Uuc3BlYywgd2luZG93cy9pbnB1dC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglLZXlib2FyZC9tb3VzZSBldmVudCBwcm9jIHRodW5rIGNyZWF0aW9uIG1vdmVkIG91dCBvZiBpZjE2MzIvdGh1bmsuYy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgaW5jbHVkZS90YXNrLmgsIGxvYWRlci8uY3ZzaWdub3JlLCBsb2FkZXIvTWFrZWZpbGUuaW4sIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgY3JlYXRlIHRodW5rIGZvciB0YXNrIHNpZ25hbCBwcm9jLCBjYWxsIGl0IGRpcmVjdGx5LgoKCSogaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL2dkaS5oLCBvYmplY3RzLy5jdnNpZ25vcmUsIG9iamVjdHMvTWFrZWZpbGUuaW4sIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCB3aW5kb3dzL2RjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEQyBob29rIHByb2MgdGh1bmsgbWFuYWdlbWVudCBzaW1wbGlmaWVkLgoKCSogbWlzYy9zeXN0ZW0uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTeXN0ZW0gdGltZXIgcHJvYyB0aHVuayBjcmVhdGlvbiBtb3ZlZCBvdXQgb2YgaWYxNjMyL3RodW5rLmMuCgoJKiBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNyZWF0ZSB0aHVuayBmb3IgQ3JlYXRlVGhyZWFkMTYgcHJvYywgY2FsbCBpdCBkaXJlY3RseS4KCgkqIHdpbmRvd3MvLmN2c2lnbm9yZSwgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9ob29rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2hvb2suaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV2luZG93cyBob29rIHByb2MgdGh1bmsgbWFuYWdlbWVudCBzaW1wbGlmaWVkLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW9kaWZpZWQgVEhVTktfQWxsb2Mgc28gYXMgdG8gYXZvaWQgMzItPjE2LT4zMiBjYWxsaW5nIHNlcXVlbmNlcy4KCVJlbW92ZWQgcGVyc2lzdGVudCB0aHVuayBjcmVhdGlvbiByb3V0aW5lcy4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvdHNfeGY4NmRnYTIuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvTWFrZWZpbGUuaW4sIHRzeDExL1gxMV9jYWxscywgdHN4MTEvdHNfeGY4NmRnYTIuYzoKCUxpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCB0aGUgcG9zc2liaWxpdHkgdG8gdXNlIERHQSAyLjAuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgSEtFWV9MT0NBTF9NQUNISU5FXC4uLlxQcm9ncmFtRmlsZXNEaXIgcmVnaXN0cnkga2V5LgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBEZW5uaXMgQm9ya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglJdCdzIG5vIGVycm9yIHRvIHNlbmQgYSBXTV9DT01NQU5EIHRvIE1lbnVIZWxwLgoKCSogZmlsZXMvZmlsZS5jOiBGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUNyZWF0ZUZpbGVBIHJldHVybnMgSEZJTEVfRVJST1Igd2hlbiB0aGUgZmlsZW5hbWUgY29udGFpbnMgYSB3aWxkIGNhcmQuCgoJKiBjb250cm9scy9zdGF0aWMuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgZGlzcGxheSBidWcgaW4gdGhlIHN0YXRpYyBjb250cm9sLgoKCSogY29udHJvbHMvbWVudS5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJTWVzc2FnZSByZW1vdmVkIHdoZW4gbWVudSB0cmFja2luZyBmaW5pc2ggb24gYSBXTV9MQlVUVE9ORE9XTi4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RpYi5jLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CgktIEFkZCBjbGlwYm9hcmQgc3VwcG9ydCBmb3IgY29weWluZy9wYXN0aW5nIGJpdG1hcHMgb3IgUGl4bWFwcyBiZXR3ZWVuIFdpbmUKCSAgYW5kIG5hdGl2ZSBMaW51eCBhcHBsaWNhdGlvbnMuCgktIFJlc3BvbmQgdG8gdGhlIE1VTFRJUExFIHNlbGVjdGlvbiByZXF1ZXN0IHRhcmdldCB3aGVuIFdpbmUgaXMgdGhlCgkgIHNlbGVjdGlvbiBvd25lci4KCS0gUmVsYXggdHlwZSBjaGVja2luZyBmb3IgVEFSR0VUUyBzZWxlY3Rpb24uCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBsb2FkZXIvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNldCAnZXhwZWN0ZWRfdmVyc2lvbicgb2YgYnVpbHQtaW4gYW5kIGR1bW15IG1vZHVsZXMgYWNjb3JkaW5nIHRvCgllbXVsYXRlZCBXaW5kb3dzIHZlcnNpb24uCgoJKiBpZjE2MzIvcmVsYXkuYywgbG9hZGVyL21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWFrZSBDYWxsVG8xNiByZXR1cm4gc3R1YiBzZWdtZW50IG93bmVkIGJ5IEtFUk5FTC4KCgkqIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBJbXByb3ZlZCBHZXRDb2RlSGFuZGxlMTYgLyBHZXRDb2RlSW5mbzE2LgoKCSogb2xlL25scy9zdmUubmxzOiBEZW5uaXMgQmpvcmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJQWRkZWQgc29tZSB2YWx1ZXMgdGhhdCB3ZXJlIG1pc3NpbmcgaW4gdGhlIFN3ZWRpc2ggbmxzIGZpbGUuCgpTdW4gU2VwIDE5IDE4OjU4OjE2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogY3JlYXRlIEREQiBpbiBYMTFEUlZfRElCX0dldERJQml0cyBpZiBuZWNlc3NhcnkuCgoJKiBkbGxzL29sZTMyL29sZTMyLnNwZWM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgbWlzc2luZyBleHBvcnQuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBjcmFzaCB3aGVuIGxvYWRpbmcgKi5hbmkgZmlsZXMuCgoJKiBvbGUvKiwgZGxscy9vbGUzMi8qLCBkbGxzL29sZWF1dDMyLyosIGRsbHMvb2xlY2xpLyosIGRsbHMvb2xlZGxnLyo6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIGJ1bGsgb2YgT0xFIGltcGxlbWVudGF0aW9uIHRvIGRsbHMvIHN1YmRpcmVjdG9yaWVzLgoKCSogY29udHJvbHMvbWVudS5jOiBEZW5uaXMgQmr2cmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJU2VuZCBjb3JyZWN0IFdNX01FTlVTRUxFQ1Qgd2hlbiBtZW51IGNsb3Nlcy4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHNtYWxsIGZlYXR1cmUgaW4gdGhlIGZpbGUgZGlhbG9nLgoKCSogd2luMzIvbmV3Zm5zLmMsIGZpbGVzL2RyaXZlLmMsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93dHlwZXMuaCwgbXNkb3MvdnhkLmMsIG9sZS9hbnRpbW9uaWtlci5jLCBvbGUvY29tcG9zaXRlbW9uaWtlci5jLCBvbGUvZGF0YWNhY2hlLmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaGdsb2JhbHN0cmVhbS5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL21lbWxvY2tieXRlcy5jLCBvbGUvb2xlZm9udC5jLCBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS92YXJpYW50LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc3VwcG9ydCBmb3IgYW5vbnltb3VzIHN0cnVjdHMvdW5pb25zIG9uIGNvbXBpbGVycyB0aGF0IGltcGxlbWVudCBpdC4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvdGV4dC5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglQZXRlciBHYW50ZW4gPGdhbnRlbkB1bmktYnJlbWVuLmRlPgoJU3R1YnMgZm9yIFBvbHlUZXh0T3V0QS9XLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBvYmplY3RzL2RpYi5jOgoJS2FybCBMZXNzYXJkIDx5YmljdWJ1a0B1bWFpbC5jb3JlbC5jb20+CglTb21lIG1vcmUgbWlub3IgR0RJIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbiBJbWFnZUxpc3RfRHJhdyB3aGVuIGRyYXdpbmcgdGhlIGJpdG1hcCB3aXRoIHRoZSB0cmFuc3BhcmVudCBmbGFnCglzZXQsIGJhY2tncm91bmQgY29sb3IvZm9yZWdyb3VuZCBjb2xvciBzaG91bGQgYmUgc2V0IHRvIHdoaXRlL2JsYWNrLAoJd2hlbiBkb2luZyBiaXRibHQgb3BlcmF0aW9uIHdpdGggdGhlIGJpdG1hcCBtYXNrLgoKCSogZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgaW5jbHVkZS93aW4xNmRydi5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRXh0ZW5kIERSQVdNT0RFIHN0cnVjdCB0byB3aW45NSBzcGVjLgoJQWRkIHNvbWUgbW9yZSBFc2NhcGUgLT4gRXNjYXBlMTYgY29udmVyc2lvbnMuCgoJKiBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVN0b3AgdHJhc2hpbmcgZGV2bW9kZSBpZiBpbiBhbmQgb3V0IGRldm1vZGVzIGFyZSB0aGUgc2FtZS4KCgkqIGNvbnRyb2xzL3dpZGdldHMuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglUaGUgTURJQ2xpZW50IGNsYXNzIG11c3QgYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBJRENfQVJST1cgY3Vyc29yLgoKCSogY29udHJvbHMvY29tYm8uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBjb21ib2JveC4KCgkqIGNvbnRyb2xzL21lbnUuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglQcm90ZWN0IFNldE1lbnUgZnJvbSByb2d1ZSBtZW51IGhhbmRsZS4KCUdldE1lbnUxNiBjYW4ganVzdCBjYWxsIEdldE1lbnUuCgoJKiB3aW5kb3dzL21kaS5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCVByb3RlY3QgTURJU2V0TWVudSBmcm9tIHJvZ3VlIG1lbnUgaGFuZGxlcy4KCgkqIG1lbW9yeS9sb2NhbC5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCVRpZHkgdXAgVFJBQ0UgZXRjIHRvIHVzZSBkZWZhdWx0IGNoYW5uZWwuCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jLCBkbGxzL3ZlcnNpb24vdmVyc2lvbi5zcGVjLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW52ZXIuaCwgb2xlL29sZTJubHMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZSBWZXJMYW5ndWFnZU5hbWVbQVddIGJhY2sgdG8gYmFzZSAoZXhwb3J0ZWQgZnJvbSBLRVJORUwzMiAuLi4pLgoKCSogZGxscy9jb21jdGwzMi9yc3JjLnJjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIHdpemFyZCBwcm9wZXJ0eSBzaGVldHMuCgoJKiBtaXNjL2xzdHIuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IEZvcm1hdE1lc3NhZ2UxNiBhdCBsZWFzdCBlbm91Z2ggdG8gZ2V0IHdpbjk1IDE2Yml0IHByaW50ZGxnIHdvcmtpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CgktIGlTZWxlY3RlZCBzaG91bGQgYmUgLTEgaWYgbm8gaXRlbSBzZWxlY3RlZCAoR2VyYXJkIFBhdGVsKQoJLSBzb21lIG9mIHRoZSBjaGVja3MgZm9yIGludmFsaWQgaXRlbXMgd2hlcmUgPiB3aGVuIHRoZXkgc2hvdWxkIGhhdmUgYmVlbiA+PQoJICAoTWFyY3VzIE1laXNzbmVyKQoJLSBtYWRlIEluc2VydEl0ZW0gYmVoYXZlIHNpbWlsYXJseSB0byBEZWxldGVJdGVtLCBpZSwgaWYgdGhlIGN1cnJlbnQgaXRlbSBpcwoJICBhZnRlciB3aGVyZSB0aGUgaXRlbSBpcyBpbnNlcnRlZCwgaW5jcmVtZW50IHRoZSBzZWxlY3RlZCBpdGVtIChEYXZpZCBMdXllcikKCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRGVjbGFyZSBDQUxMMzJfQ0JDbGllbnRbRXhdIHdpdGhvdXQgV0lOQVBJLgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogKEUpSVAtcmVsYXRpdmUgb2Zmc2V0cyBkZXBlbmQgb24gb3BlcmFuZCwgbm90IGFkZHJlc3MsIHNpemUuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHN0dWIgaW1wbGVtZW50YXRpb24gZm9yIEVudW1EaXNwbGF5RGV2aWNlcyouCgoJKiBkbGxzL3duYXNwaTMyL3dpbmFzcGkzMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFNDX0dFVF9ERVZUWVBFLgoKCSogb2xlL2NvbXBvYmouYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCBzdHViIGZvciBPTEUzMi5EbGxHZXRDbGFzc09iamVjdC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgaW5jbHVkZS9zaGxndWlkLmgsIGRsbHMvc2hlbGwzMi9waWRsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vcmUgc3VwcG9ydCBmb3Igc3BlY2lhbCBwaWRscyBpbiBTSEdldFNwZWNpYWxGb2xkZXJMb2NhdGlvbi4KCgkqIGdyYXBoaWNzL3BzZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BzZHJ2L3Blbi5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgaW52aXNpYmxlIHBlbnMuCgoJKiBvYmplY3RzL2RpYi5jLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTbWFsbCBESUIgZml4ZXMuCgoJKiBjb250cm9scy9tZW51LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIGNhc2UgZm9yIG1lbnUgaGFuZGxpbmcgaW4gd2luMzEuCgpUdWUgU2VwIDE0IDExOjUxOjAyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RpYi5jLCBncmFwaGljcy94MTFkcnYvZGliLmM6CglLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCUZpeGVkIEdldERJQml0cyBwcm9ibGVtcy4KCgkqIG1pc2MvY3B1LmMsIG11bHRpbWVkaWEvbWl4ZXIuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0Lmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZCBzdXBwb3J0IGZvciBhbm9ueW1vdXMgc3RydWN0L3VuaW9ucyBvbiBjb21waWxlcnMgdGhhdCBpbXBsZW1lbnQgaXQuCgpNb24gU2VwIDEzIDE2OjA2OjE3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvdWl0b29scy5jOgoJRGVubmlzIEJqfHJrbHVuZCA8ZGVubmlzYkBjcy5jaGFsbWVycy5zZT4KCUZpeGVkIHdpbjl4IGxvb2sgb24gY2hlY2tib3hlcyBhbmQgcmFkaW9idXR0b25zLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvLmN2c2lnbm9yZSwgZ3JhcGhpY3Mvd2luMTZkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZ2RpLmgsIG1pc2MvLmN2c2lnbm9yZSwgbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9wcmludGRydi5jLCBvYmplY3RzL2RjLmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9wc2Rydi9lc2NhcGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNoYW5nZSBpbnRlcmZhY2VzIHRvIFRIVU5LX0FsbG9jL0ZyZWUgc2xpZ2h0bHkgYW5kIG1ha2UgdGhlbSBub24tc3RhdGljLgoJUmVtb3ZlIHJlbGF5cyBmb3Igd2luMTZkcnYgZnJvbSBDYWxsQmFjayB0YWJsZSwgaW5zdGVhZCB1c2UgYnVpbGQgdG8KCWdlbmVyYXRlIHRoZW0gZGlyZWN0bHkgaW4gZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMuCglJZiBQcmludGVyIEFib3J0UHJvYyBpcyAxNmJpdCB0aGVuIGFsbG9jYXRlIHRodW5rIGFuZCBzdG9yZSB0aGF0IGFzIGEKCTMyYml0IHByb2MgaW4gREMuICBTZXR0aW5nIG9mIGFib3J0cHJvY3Mgbm93IGRvbmUgaW4gdGhlIGNvcnJlY3QgcGxhY2UKCShpLmUuIG5vdCBpbiB0aGUgZHJpdmVyKS4KCgkqIG9iamVjdHMvZGliLmM6IEthaSBNb3JpY2ggPGthaS5tb3JpY2hAYmlnZm9vdC5kZT4KCVJlbGF4ZWQgcGFyYW1ldGVyIGNoZWNraW5nIGZvciBHZXRESUJpdHMuCgoJKiB3aW4zMi9kZXZpY2UuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCBsYXN0IGVycm9yIGNvZGUgd2hlbiB0cnlpbmcgdG8gbG9hZCB1bmtub3duIFZ4RCB3aXRoIENyZWF0ZUZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglBbmRyZWFzIE1vaHIgPGFtb2hyQHN0dWRlbnQuZWkudW5pLXN0dXR0Z2FydC5kZT4KCVByZXRlbmQgc3VjY2Vzc2Z1bCBleGVjdXRpb24gb2YgU0hFTExfTm90aWZ5SWNvbiooKS4KCgkqIGNvbnRyb2xzL21lbnUuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgTWVudUl0ZW1Gcm9tUG9pbnQgc3R1Yi4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG9mZiBieSBvbmUgYWxsb2NhdGlvbiBlcnJvciAoRFBBIGFuZCBEU0EpLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIGluIFBsYXlTb3VuZCB0aHJlYWQuCgpTYXQgU2VwIDExIDE2OjI5OjAwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9saXN0Ym94LmM6IE5pY2sgSG9sbG93YXkgPE5pY2suSG9sbG93YXlAYWxmaWUuZGVtb24uY28udWs+CglGb3IgV2luIDMueCBhcHBsaWNhdGlvbnMsIGlmIHRoZXkgaGF2ZSBlaXRoZXIgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbAoJc2Nyb2xsYmFycywgZW5hYmxlIGJvdGguCgoJKiBkbGxzL2FkdmFwaTMyL2NyeXB0LmMsIGRsbHMvbXNhY20zMi9pbnRlcm5hbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBtZW1vcnkvc3RyaW5nLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUVsaW1pbmF0ZWQgd2FybmluZ3MuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmM6CglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglTZXQgdGhlIG1vdXNlIGNhcHR1cmUgb24gdGhlIGNvbWJvIGxpc3Rib3guCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJLSBmaXhlZCB0aGUgY3JlYXRpb24gb2YgYmFjay1idWZmZXJzIGluIERHQSBtb2RlCgktIGFkZGVkIGEgY2hlY2sgb24gdGhlIHZhbGlkaXR5IG9mIHRoZSBMb2NraW5nIHJlY3RhbmdsZQoJLSBmaXhlZCB0aGUgZW51bWVyYXRpb24gZm9yIERYLTYuMAoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIFJHQlFVQUQvQ09MT1JSRUYgbWl4dXAgaW4gQ3JlYXRlTWFwcGVkQml0bWFwKCkuCgoJKiBjb250cm9scy9idXR0b24uYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglEcmF3IHRoZSBmb2N1cyByZWN0YW5nbGUgZm9yIGJ1dHRvbnMgd2l0aCBCU18zU1RBVEUsIEJTX1JBRElPQlVUVE9OLAoJQlNfQ0hFQ0tCT1gsIEJTX0FVVE8qIHN0eWxlcy4KCkZyaSBTZXAgMTAgMTQ6Mzg6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3BydGRydi5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgZ3JhcGhpY3MvZHJpdmVyLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglXaW5zcG9vbCBEb2N1bWVudFByb3BlcnRpZXMgYW5kIERldmljZUNhcGFiaWxpdGllcyBzaG91bGQgbm93IHdvcmsgb24KCW5hdGl2ZSAxNiBiaXQgZHJpdmVycy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBEZXZpY2VDYXBhYmlsaXRpZXMgZm9yIERDX1BBUEVSU0laRS4KCVZhcmlvdXMgZml4ZXMgZm9yIE9wZW5QcmludGVyIGFuZCBFbnVtUHJpbnRlcnMuCglTZXBhcmF0aW9uIG9mIEdldFByaW50ZXIgaW4gcHJlcGFyYXRpb24gZm9yIHVuaWZpY2F0aW9uIHdpdGggRW51bVByaW50ZXJzLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHBkLmMsIGluY2x1ZGUvd2luZ2RpLmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgc3VwcG9ydCBmb3IgYSBsYXJnZSBudW1iZXIgb2YgZGlmZmVyZW50IHBhcGVyIHNpemVzIHRvIFBvc3RTY3JpcHQKCWRyaXZlci4KCgkqIGluY2x1ZGUvZDNkLmg6IExpb25lbCBVbG1lciA8bGlvbmVsLnVsbWVyQGZyZWUuZnI+CglBZGRlZCBkZWZpbml0aW9ucyBvZiBDT00gb2JqZWN0cyBmb3IgRDNEIDYueCBzdXBwb3J0LgoKCSogZ3JhcGhpY3MvcHNkcnYvZm9udC5jOiBOaWNrIEhvbGxvd2F5IDxhbGZpZUBhbGZpZS5kZW1vbi5jby51az4KCUlmIHRoZXJlIGlzIG5vdCBhbiBleGFjdCBtYXRjaCBmb3VuZCBmb3IgdGhlIHJlcXVlc3RlZCBmb250IG5hbWUsCglpbnN0ZWFkIG9mIHVzaW5nIHRoZSBmaXJzdCBmb250IGRlZmluZWQgZm9yIHRoZSBwcmludGVyLCBtYXAgc29tZQoJY29tbW9uIGZvbnQgZmFtaWxpZXMgKGUuZy4gQXJpYWwgLT4gSGVsdmV0aWNhKSwgYW5kIHNlYXJjaCBhZ2Fpbi4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGJ1ZyBpbiBDQkNsaWVudCByb3V0aW5lcyBieSBzdG9yaW5nIHRoZSBTRUdQVFIgaW4gdGhlIGdsb2JhbAoJdGFibGUgYW5kIHRyYW5zbGF0aW5nIGl0IG9uIGV2ZXJ5IHVzZS4KCgkqIGluY2x1ZGUvYml0bWFwcy9vaWNfc2FtcGxlOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgdGhlIHBpeG1hcCB0byBsb29rIGxpa2UgdGhlIHdpbmRvd3MgZGVmYXVsdCBhcHBsaWNhdGlvbiBpY29uLgoKCSogZmlsZXMvZHJpdmUuYzogUmljaGFyZCBDb2hlbiA8cmljaGFyZEBqdWJqdWIuZGVtb24uY28udWs+CglTdG9wIGNyYXNoIGluIEdldERpc2tGcmVlU3BhY2VFeC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU1hZGUgc3VyZSB0aGF0IHRoZSB3aW5kb3dzIHdpdGggdGhlIFdTX0VYX1RPT0xXSU5ET1cgc3R5bGUgZGlkbid0IGdldAoJaGFuZGxlZCBieSB0aGUgd2luZG93IG1hbmFnZXIuCgoJKiBjb250cm9scy9lZGl0LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgYmVoYXZpb3IgYXJvdW5kIHRoZSBFU19XQU5UUkVUVVJOIHN0eWxlIGluIHRoZSBlZGl0Cgljb250cm9sLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglQcmVzc2luZyB0aGUgZGVsZXRlIGtleSB1c2luZyBhbiBleHRlbmRlZCBrZXlib2FyZCB3aXRoIG51bWxvY2sgb24gaXMKCW5vdCBnZW5lcmF0aW5nIGFueW1vcmUgYSBXTV9DSEFSIG1lc3NhZ2UuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmM6IE5pY2xhcyBLYXJsc3NvbiA8bmthcmxzc29AcmEuYWJvLmZpPgoJRml4ZWQgcGF0dGVybiBtYXRjaGluZyBpbiBQYXRoTWF0Y2hTcGVjQS9XCgoJKiBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglUYWJiaW5nIGluIHRoZSBsaXN0dmlldyBvZiB0aGUgc2hlbGx2aWV3LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgTElTVFZJRVdfR2V0SXRlbVJlY3Q6IHRoZSBjYWxjdWxhdGlvbnMgd2VyZSBvZmYgZm9yIExWSVJfQk9VTkRTLAoJTFZJUl9TRUxDVEJPVU5EUywgTFZJUl9MQUJFTCB3aGVuIHRoZSBpdGVtIHdpZHRoIGlzIGdyZWF0ZXIgdGhhbiB0aGUKCWNvbHVtbiB3aWR0aC4KCUZpeGVkIFdNX0dFVERMR0NPREUgYnkgcmVtb3ZpbmcgdGhlIERMR0NfV0FOVFJUQUIgYW5kIGFkZGluZyBETEdDX1dBTlRDSEFSUy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgY3Jhc2ggaW4gZGV0YWNoIHNlcXVlbmNlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB3cm9uZyByZXR1cm4gdmFsdWUuCgoJKiBkbGxzL2NydGRsbC9jcnRkbGxfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglQcmV2ZW50IGVuZGxlc3MgbG9vcCBpbiBleGNlcHQyLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSBTYWNhcm55IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCU5vdyB3b3JrcyBhcm91bmQgd2luZSBuZXZlciBleGl0aW5nIHRoZSBkZWJ1Z2dlci4KCVNob3VsZCBwdXQgYnVnIHJlcG9ydHMgaW4gdGhlIHJpZ2h0IHBsYWNlIG5vdy4KCgkqIG9sZS9vbGVhdXQzMi5jLCBvbGUvTWFrZWZpbGUuaW4sIHJlbGF5MzIvb2xlYXV0MzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8TWFyY3VzLk1laXNzbmVyQGNhbGRlcmEuZGU+CglBZGRlZCBzdHViIGZvciBSZWdpc3RlckFjdGl2ZU9iamVjdCgpLgoKCSogZGxscy93aW4zMnMvdzMyc3lzLmMsIGRsbHMvd2luMzJzL3czMnN5cy5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdHViIGZvciBXSU4zMlMxNi5FWFAxIChtb3N0IGxpa2VseSBMb2FkUGVSZXNvdXJjZTE2KS4KClN1biBTZXAgIDUgMTY6NDg6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbWlzY2VtdS9tYWluLmMsIGluY2x1ZGUvd2luZGVmLmg6CglSZW1vdmVkIF9fd2luZWxpYiBmbGFnLgoKCSogd2luZG93cy9kcml2ZXIuYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBtdWx0aW1lZGlhL21jaS5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbWF1eC5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG11bHRpbWVkaWEvdGltZS5jLCBtdWx0aW1lZGlhL3dpbm1tLnJjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIHRvIG5ldyBNTSBoZWFkZXIgb3JnYW5pemF0aW9uLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmgsIGluY2x1ZGUvbW1kZGsuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBtdWx0aW1lZGlhL29zcy5oLCBtdWx0aW1lZGlhL3dpbmVtbS5oOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNb3ZlZCBEREsgbGV2ZWwgbWF0ZXJpYWwgdG8gbmV3IGluY2x1ZGUvbW1kZGsuaCBmaWxlLgoJQ29waWVkIHNvbWUgU0RLIGxldmVsIG1hdGVyaWFsIGZyb20gaW5jbHVkZS9tdWx0aW1lZGlhLmggZmlsZS4KCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCB0byBuZXcgTU0gaGVhZGVyIG9yZ2FuaXphdGlvbi4KCUNsZWFuZWQtdXAgaW50ZXJuYWwgc3RydWN0dXJlcyAobm93IDMyIGJpdCBvbmx5KS4KCU5vdyB1c2luZyB0aGUgTU1TWVNURU0gZW50cnkgcG9pbnRzIHJhdGhlciB0aGFuIHRoZSBsb3cgbGV2ZWwgZHJpdmVyCglvbmVzIGRpcmVjdGx5LgoKCSogaW5jbHVkZS9zaWdfY29udGV4dC5oOiBKdWVyZ2VuIExvY2sgPG5veEBqZWxhbC5rbi1icmVtZW4uZGU+CglGaXggJWZzIGZvciBzaWduYWwgaGFuZGxlcnMgaW4gdGhlIEZTX3NpZyB1bmRlZmluZWQgY2FzZSAodGhpcyBwYXRjaAoJYWN0dWFsbHkgZnJvbSBVbHJpY2ggV2VpZ2FuZCwgSSBvbmx5IHRlc3RlZCBpdCkuCgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJUm9uIFJlY29yZCA8cnJAc2NvLmNvbT4KCUFkZGVkIHN1cHBvcnQgb2YgX190aHJfZXJybm8gZm9yIHJlZW50cmFuY2Ugb24gVW5peFdhcmUuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCU5vIGxvbmdlciBuZWVkcyB0byBjYWxjdWxhdGUgaXRzIG93biBjaGFyYWN0ZXIgc2l6ZS4KCgkqIG1pc2MvbWFpbi5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCUNvbnNlcXVlbnRpYWwgY2hhbmdlcyB0byBkZWZhdWx0IHN5c3RlbSBmb250IHNpemVzCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFmb250Lmg6CglSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCVZhcmlvdXMgZml4ZXMgZm9yIHRoZSBYMTEgZm9udCBtYXBwZXIsIHBhcnRpY3VsYXJseToKCS0gc2l6ZSBmb250cyB3aXRoIG5lZ2F0aXZlIGhlaWdodHMgY29ycmVjdGx5CgktIGNhbGN1bGF0ZSBhdmVyYWdlIHdpZHRoIGNvcnJlY3RseS4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglVc2UgYSBzcGVjaWFsIHZhbHVlIGluIHRoZSBob3RzcG90IGNvb3JkaW5hdGUgdG8gaWRlbnRpZnkgd2hpY2ggSElDT04KCWFyZSBjdXJzb3JzIGFuZCB3aGljaCBhcmUgaWNvbnMuCgoJKiBjb250cm9scy9jb21iby5jOiBQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglNb2RpZmllZCBDQkRyb3BEb3duIHRvIGZpbmQgdGhlIGJlc3QgaGVpZ2h0IG9mIHRoZSBsaXN0Ym94LgoKU2F0IFNlcCAgNCAxNDozNjowMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBtZW1vcnkvc3RyaW5nLmMsIG1pc2MvcG9ydC5jLCBjb25maWd1cmU6CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIHN0cltuXWNhc2VjbXAuCgoJKiB3aW5kb3dzL3RpbWVyLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFsbG93IHRpbWVvdXQgb2YgMC4gQ2FwIHRpbWVyIHJhdGUgdG8gU1lTX1RJTUVSX1JBVEUuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCB0eXBlIFBXT1JELgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGluY2x1ZGUvd2luc3Bvb2wuaDoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUFkZGVkIGxvYWRzIG9mIHR5cGVzLCBkZWZpbmVzIGFuZCBkZWNsYXJhdGlvbnMgdG8gd2luc3Bvb2wuaC4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmM6CglGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBoZWlnaHQgb2YgaXRlbXMgaW4gdGhlIGxvb2tpbiBjb21ib2JveCBvZiB0aGUgZmlsZWRsZzk1LgoKCSogY29udHJvbHMvZWRpdC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUluaXRpYWxpemUgdGhlIGVuYWJsaW5nIHN0YXRlIHZhcmlhYmxlIGluIHRoZSBlZGl0LgoKCSogZ3JhcGhpY3MvYml0Ymx0LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJVGhlIGZhc3Qgd2luZG93IGZyYW1lIHNpemUgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBmcmFtZSBzaXplIHVzZWQKCWJ5IE5DX0RyYXdGcmFtZSBmdW5jdGlvbi4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeGVkIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+Cglsc3RybmNtcGkgaXNuJ3QgYSB3aW5kb3dzIEFQSSwgdXNlIHN0cm5jYXNlY21wIGluc3RlYWQuCgoJKiBtZW1vcnkvZ2xvYmFsLmM6CglGaXhlZCBHTUVNX1pFUk9JTklUIGluIEdsb2JhbFJlYWxsb2MgKHRoYW5rcyB0byBHZXJhcmQgUGF0ZWwpLgoKCSogd2luZG93cy9tc2dib3guYzogQWRkZWQgbWlzc2luZyBIRk9OVCB0eXBlLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgaW5jbHVkZS9jdXJzb3JpY29uLmgsIGxvYWRlci9tYWluLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCB3aW5kb3dzL2NsYXNzLmM6CglQaWVycmUgTWFnZWF1IDxwaWVycmVAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIENvcHlJbWFnZSB0byBhY2NlcHQgZGVzaXJlZFgsIGRlc2lyZWRZIGFuZCBMUl9DT1BZRlJPTVJFU09VUkNFLgoJQ1VSU09SSUNPTl9GaW5kQmVzdEljb24gY2hhbmdlZCB0byBmaW5kIHRoZSBjb3JyZWN0IGljb24uCglJbWFnZUxpc3RfUmVwbGFjZUljb24gbm93IGNhbGxzIENvcHlJbWFnZSBpbnRlcm5hbGx5LgoJQXNzaWduIGEgdmFsdWUgZm9yIHRoZSBoSWNvblNtIENMQVNTIG1lbWJlciAodXNpbmcgQ29weUltYWdlKS4KCgkqIHdpbjMyL2NvbnNvbGUuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeGVkIFdyaXRlQ29uc29sZU91dHB1dCBhbmQgR2V0TnVtYmVyT2ZDb25zb2xlSW5wdXRFdmVudHMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUdpdmUgYXBwbGljYXRpb25zIGEgY29weSBvZiB0aGUgcHJvcGVydHkgc2hlZXQgZGlhbG9nIHRlbXBsYXRlIGFzIHRoZXkKCW1pZ2h0IG1vZGlmeSBpdC4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZWxheSBleGNsdWRlIGxpc3RzIHdlcmUgbm90IHdvcmtpbmcgZHVlIHRvIHNvbWUgQ2hhclVwcGVyQSgpCglzb21ld2hlcmUgZWxzZS4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYywgd2luZS5pbmk6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+Cgl3aW5zcG9vbCAtPiB3aW5zcG9vbC5kcnYKCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuc3BlYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBTdHJDbXBOSUEgbGlrZSB0aGUgb3RoZXIgU3RyQ21wWFggZnVuY3Rpb25zLgoKCSogZmlsZXMvcHJvZmlsZS5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVJlc29sdmUgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBlbnVtZXJhdGluZyB2YWx1ZXMuCgoJKiBjb250cm9scy9lZGl0LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglUaGUgZm9ybWF0IHJlY3QgaXMgcmVjYWxjdWxhdGVkIGZvciBlYWNoIGZvbnQgY2hhbmdlLiBNb3ZlRW5kICYKCU1vdmVIb21lIGltcHJvdmVkLgoKRnJpIFNlcCAgMyAxNjo0OToxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2RpYi5jOgoJS2FybCBMZXNzYXJkIDxrYXJsbEBjb3JlbC5jb20+CglJYW4gV2FyZAoJRGFuIExhbmdsb2lzCglTcGVlZCB1cCBjb252ZXJzaW9uIGJldHdlZW4gWEltYWdlcyBhbmQgRElCU2VjdGlvbnMuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuaCwgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCVNvbWUgPG9wZW4+IGZlYXR1cmVzIGluIHRoZSBmaWxlIGRpYWxvZyA5NS4KCgkqIGluY2x1ZGUvd2lubnQuaCwgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBnbG9iYWwgdmFyaWFibGUgcEN1cnJlbnRUZWIuCgoJKiBtZW1vcnkvaGVhcC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUhFQVBfQ29tbWl0L0RlY29tbWl0IHdlcmUgYXNzdW1pbmcgYSBwYWdlIHNpemUgb2YgNEtCCgl1bmNvbmRpdGlvbmFsbHkuCgoJKiBpbmNsdWRlL3dpbmdkaS5oOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBIGZldyBtb3JlIERDXyBkZWZpbmVzIGZyb20gV2luMjAwMC4KCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUNoZWNrIHRoYXQgbHBDcmVhdGUtPmxwc3pOYW1lIGlzIG5vbi1OVUxMLgoKCSogd2luZG93cy9kaWFsb2cuYzogTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAY2FsZGVyYS5kZT4KCU1vcmUgcmVzdHJpY3RpdmUgY2hlY2tzLCBzbyBESUFMT0dfSXNBY2NlbGVyYXRvciBkb24ndCBsb29wCgllbmRsZXNzbHkuCgoJKiBjb250cm9scy9tZW51LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglNZW51IGhpZGVzIHdoZW4gY2xpY2tlZCBmb3IgYSBzZWNvbmQgdGltZS4KCgkqIHdpbmRvd3MvbXNnYm94LmM6IFJpY2hhcmQgQ29oZW4gPHJpY2hhcmRAanVianViLmRlbW9uLmNvLnVrPgoJLSBzZWxlY3QgdGhlIGZvbnQgaW50byB0aGUgZGMgYmVmb3JlIGNhbGN1bGF0aW5nIHRoZSBleHRlbnQKCS0gbWFrZSBidXR0b25oZWlnaHQgY29ycmVzcG9uZCB0byB0ZXh0IGhlaWdodCArIHdpZHRoIHRvIGNhcHRpb24KCS0gYnV0dG9uIHdhcyAiZmxhc2hpbmciIG9uIEVuZERpYWxvZyAobXVzdCBkZWxldGUgZm9udCBBRlRFUiBFbmREaWFsb2cpCgktICNkZWZpbmVzIGZvciBEbGdJdGVtSWRzCgktIGltcGxlbWVudCBNQl9SRVRSWUNBTkNFTAoKCSogY29udHJvbHMvZWRpdC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUtlZXAgdGhlIGVuYWJsZSBzdGF0ZSBpbiB0aGUgZWRpdCBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBjYWxsaW5nCglJc1dpbmRvd0VuYWJsZWQoKS4KCgkqIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2LmgsIG9sZS9jbGlwYm9hcmQuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCB3aW5kb3dzL3gxMWRydi9pbml0LmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCS0gSW1wbGVtZW50IGludGVycHJvY2VzcyBjbGlwYm9hcmQgY29tbXVuaWNhdGlvbi4KCS0gU3VwcG9ydCBmb3IgdGhlIFBSSU1BUlkgYW5kIENMSVBCT0FSRCBzZWxlY3Rpb24gYXRvbXMuCgktIFN1cHBvcnQgZm9yIHRoZSBUQVJHRVRTIHNlbGVjdGlvbiBmb3JtYXQuCgktIEV4cG9zZSBuYXRpdmUgV2luZG93cyBjbGlwYm9hcmQgZm9ybWF0cyB0aHJvdWdoIFggc2VsZWN0aW9uIHRhcmdldHMuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBSaWNoYXJkIENvaGVuIDxyaWNoYXJkQGp1Ymp1Yi5kZW1vbi5jby51az4KCU1ha2Ugc3RvY2sgZm9udHMgaW5kZXBlbmRlbnQgb2YgbWFwcGluZyBtb2RlLgoJU3lzdGVtIGZvbnQgc2hvdWxkIG9ubHkgYmUgYm9sZCBmb3IgV2luMzEuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIHRydW5jYXRpbmcgZXJyb3JzIHRoYXQgaGFwcGVuIHdoZW4gY29udmVydGluZyBmb20gZGlhbG9nIHVuaXRzCgl0byBwaXhlbHMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBBYmV5IEdlb3JnZTxhYmV5QG1hY2FkYW1pYW4uY29tPgoJQ2hlY2sgbmV3IGNvb3JkaW5hdGVzIHJlY2VpdmVkIGluIFdNX05DQ0FMQ1NJWkUgbWVzc2FnZS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglTbGlnaHQgMSBwaXhlbCBhZGp1c3RtZW50IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgcmFkaW8gYnV0dG9uIGJpdG1hcC4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBvZmYgYnkgb25lIGFsbG9jYXRpb24gZXJyb3JzLgoKCSogY29udHJvbHMvZWRpdC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJVGhlIGJhY2tzcGFjZSBpcyBub3cgaGFuZGxlZCBpbiB0aGUgV01fQ0hBUiBtZXNzYWdlLgoKCSogd2luZG93cy9tZGkuYywgd2luZG93cy9ub25jbGllbnQuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2Ugc3VyZSB0aGF0IGFsbCBNREkgY2hpbGRyZW4gaGF2ZSB0aGUgV1NfRVhfTURJQ0hJTEQgc3R5bGUgc2V0LgoKCSogbWVtb3J5L3N0cmluZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHByb3RvdHlwZSBvcmRlci4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6IEp1ZXJnZW4gTG9jayA8bm94QGplbGFsLmtuLWJyZW1lbi5kZT4KCUZpeCBFWENfc2VndiBmb3IgdGhlIFRSQVBfc2lnIHVuZGVmaW5lZCBjYXNlIChlZyBGcmVlQlNEKS4KCgkqIGRlYnVnZ2VyL3N0YWJzLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgY3Jhc2guCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHRoZSBzdXBwb3J0IGZvciB0aGUgY2xvc2UgYnV0dG9uIGluIHRoZSBTaGVsbEFib3V0IGRpYWxvZ3MuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZ19ObC5yYzogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGRlZCBEdXRjaCByZXNvdXJjZXMgZm9yIFByaW50RGxnMzIuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmM6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUNvbXBsZXRlZCBQcmludERsZzMyIHJlc291cmNlIHN0cmluZ3RhYmxlLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzYW5pdHkgY2hlY2tzIGluIHRoZSBjbGVhbnVwIGNvZGUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJQ29tcGxldGVkIEdldEtleU5hbWVUZXh0IGZvciBub24tY2hhcmFjdGVyIGtleXMuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCU1ha2UgZGlyZWN0b3JpZXMgbmFtZSBhcHBlYXIgaW4gdGhlIEJyb3dzZUZvckZvbGRlciBkaWFsb2cuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRG8gbm90IHJlbW92ZSAuZHJ2IGZyb20gZmlsZW5hbWVzLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgbGl0dGxlIHBvc2l0aW9uaW5nIGJ1ZyB3aXRoIHRoZSBjaGVja2JveC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCByZXNpemluZyBidWdzIGZvciB3aW5kb3dzIHdpdGggV1NfVEhJQ0tGUkFNRSBhbmQgV1NfRExHRlJBTUUKCXN0eWxlcy4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IE1pY2hhZWwgTWNDb3JtYWNrIDxtY2Nvcm1hY0BhYWxzMjcuYWxjYXRlbC5jb20uYXU+CglDaGFuZ2VkIHNucHJpbnRmIHRvIHdzbnByaW50ZkEgdG8gcmVtb3ZlIHVucmVzb2x2ZWQgZXh0ZXJuYWwgd2hlbgoJY29tcGlsaW5nIG9uIFNvbGFyaXMvU3VuLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIExWTV9JTlNFUlRDT0xVTU5XIGFuZCBMVk1fSU5TRVJUSVRFTVcgYnkgdXNpbmcgdGhlIGFzY2lpCgllcXVpdmFsZW50cy4gKFdpbldvcmQgOTcsIEZpbGUgT3BlbiBkaWFsb2cpCgoJKiB3aW5kb3dzL2NsYXNzLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIGluIEdldENsYXNzSW5mb1cgdGhlIHNhbWUgaGFjayBmb3Igc3lzdGVtY2xhc3NlcyBhcyBpbgoJR2V0Q2xhc3NJbmZvQSAod2lud29yZCA5NyB3aXRoIG5hdGl2ZSBjb21jdGwzMikuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhbmRsZSBTSEdERklMX0ZJTkREQVRBIGNvcnJlY3RseSBpbiBTSEdldERhdGFGcm9tSURMaXN0Vy4KCgkqIGNvbnRyb2xzL2VkaXQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglJbXBsZW1lbnRlZCB3UGFyYW0gb2YgV01fUEFJTlQgbXNnIGZvciBlZGl0IGNvbnRyb2wuCgoJKiBkbGxzL3dpbnNwb29sL2luZm8uYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4IG9mZiBieSBvbmUgZXJyb3IgaW4gV0lOU1BPT0xfR2V0T3BlbmVkUHJpbnRlckEuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJc3Via2V5X2ZvdW5kIGRpZCBub3Qgc2VhcmNoIGZvciBfYWxsXyBzdWIga2V5cy4KClNhdCBBdWcgMjEgMTQ6NDc6MjkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIGJhc2ljIGJyb3dzaW5nIGluIHRoZSBmaWxlIG5hbWUgZWRpdCBvZiB0aGUgZmlsZWRsZyA5NS4KCgkqIGNvbnRyb2xzL21lbnUuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglBdm9pZCBjaGFuZ2luZyB0aGUgYWN0aXZhdGlvbiBzdGF0ZSBpbiBFbmFibGVNZW51SXRlbS4KCgkqIGluY2x1ZGUvd2lubnQuaDogRml4ZWQgI2lmZGVmIHN5bWJvbCBmb3IgUG93ZXJQQy4KCgkqIG9sZS9wYXJzZWR0LmMsIG9sZS9wYXJzZWR0Lmg6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU9ubHkgZGVjbGFyZSBEYXRlU3R5bGUgaW4gYSBzaW5nbGUgY29tcGlsYXRpb24gdW5pdC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglBZGRlZCB0aGUgY2FzZSBvZiBhIHVzZXIgZGVmaW5lZCBpY29uIGZvciB0aGUgc3lzYnV0dG9uIGhpdHRlc3QuCgoJKiBvbGUvdHlwZWxpYi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4ZWQgdHlwZWxpYiByZWFkaW5nIHRvIGNvcnJlY3RseSB1c2UgdGhlIG9mZnNldCBvZiB0aGUgdHlwZWxpYiB0aGF0CglpcyBlbWJlZGRlZCBpbiBmb3IgZXhhbXBsZSBhIGRsbCBmaWxlLgoKCSogZ3JhcGhpY3MveDExZHJ2L2RpYi5jOiBLcmlzdGlhbiBOaWVsc2VuIDxrcmlzdGlhbi5uaWVsc2VuQHJpc29lLmRrPgoJRml4ZWQgQ3JlYXRlRElCU2VjdGlvbigpIGNhbGxlZCB3aXRoIG5lZ2F0aXZlIGhlaWdodCB0byBzZXQgdGhlIGhlaWdodAoJcG9zaXRpdmUgaW4gdGhlIGNyZWF0ZWQgRElCU0VDVElPTiwgYXMgcGVyIE1TIGtub3dsZWRnZWJhc2UgUTE4NjU4Ni4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglUaGUgcGFpbnQgcmVjdGFuZ2xlIHJldHVybiBpbiB0aGUgUEFJTlRTVFJVQ1QgaW4gQmVnaW5QYWludCBzaG91bGQKCW5ldmVyIGJlIGJpZ2dlciB0aGFuIHRoZSBjbGllbnQgYXJlYSBvZiB0aGUgd2luZG93LgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTWFrZSBzdXJlIHRoYXQgYW4gZW1wdHkgc3RyaW5nIG5ldmVyIG1hdGNoZXMgYSBsaXN0Ym94IGVudHJ5IGluCglMSVNUQk9YX0ZpbmRTdHJpbmcoKS4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBbGlnbm1lbnQgZml4LgoKCSogY29udHJvbHMvbWVudS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIHdoZW4gYWNjZXNzaW5nIHN5c21lbnUuCgoJKiBkZWJ1Z2dlci9zdGFjay5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlYWxseSBkbyBhIHNpbGVudCBiYWNrdHJhY2Ugd2hlbiByZXF1ZXN0ZWQuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRG8gbm90IHNldCB0aGUgYWRkcmVzcyBpZiB0aGUgc3ltYm9sIGlzIHN0aWxsIHRhZ2dlZCBJTlZBTElELgoKCSogZGVidWdnZXIvc3RhYnMuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzdXBwb3J0IGZvciBOX0JJTkNMIGFuZCBOX0VJTkNMIGluc3RydWN0aW9ucy4KCUZpeGVkIHR5cGUgcGFyc2luZyAoYXMgZ2VuZXJhdGVkIGJ5IGVnY3MpLgoKV2VkIEF1ZyAxOCAxODo0MDo1MiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogdG9vbHMvYnVpbGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgdHlwZWRlZiB0byB3b3JrIGFyb3VuZCBlZ2NzIHByb2JsZW0uCgoJKiBvbGUvKi5jOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbmNsdWRlcyBmcm9tIG9sZSByZWxhdGVkIGZpbGVzLgoKCSogb2xlL2NvbXBvYmouYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIFdPVyBjaGFuZ2VzLgoKCSogaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dvd250MzIuaCwgbG9hZGVyL21vZHVsZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9zZWxlY3Rvci5jLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvd293MzIuc3BlYywgcmVsYXkzMi93b3d0aHVuay5jLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9vcmRpbmFscy5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvdGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgV09XIHJvdXRpbmVzIHRvIHNpbmdsZSBmaWxlLgoJQWRkZWQgYWxsIG1pc3NpbmcgV09XIHJvdXRpbmVzLCBmaXhlZCBXT1dDYWxsYmFjazE2RXguCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBpbnRlcm5hbCBidWZmZXIgZm9yIDE2IGJpdCBtbWlvIE1FTSBmaWxlcy4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBzb21lIGVycm9ycyBpbiBjbGVhbmluZyB1cCB2YWx1ZXMgcmV0dXJuZWQgYnkgTUNJIGRyaXZlcnM6IHRoaXMKCSAgc2hvdWxkIHNvbHZlIHRoZSBpc3N1ZXMgcmVwb3J0ZWQgd2l0aCB0aGUgQ0QgcGxheWVyL3dyaXRlcgoJLSBjcmFzaCB3aGVuIGNvbW1hbmQgd2FzIHJlcXVlc3RlZCB3aXRoIGF1dG9tYXRpYyBvcGVuIChub3RlLCB0aGlzCgkgIHdpbGwgbm93IGdyYWNlZnVsbHkgcmVwb3J0IGFuIGVycm9yLCBub3QgZG8gdGhlIGNvcnJlY3QgdGhpbmcpLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgUFNIX1VTRUlDT05JRC9QU0hfVVNFSElDT04gYW5kIHRoZSBQU1BfVVNFVElUTEUKCWZsYWdzLgoKCSogdG9vbHMvYnVpbGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEVGbGFncyB3ZXJlIHBhc3NlZCBpbmNvcnJlY3RseSBieSBDYWxsRnJvbTE2UmVnaXN0ZXIuCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogcmVzdG9yZSBTVEFDSzE2RlJBTUUgZmllbGRzIGluIFN3aXRjaFN0YWNrQmFjazE2LgoKCSogdG9vbHMvd3JjL3dyYy5oLCBkbGxzL2NvbW1kbGcvY2RsZ19Fbi5yYywgdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9wYXJzZXIueToKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglXcmMgZGlkIG5vdCBjaGVjayBhbnkgSURzIHdoaWNoIGFyZSBvbmx5IDE2IGJpdC4gQ29tbW9uIGRpYWxvZ3MgaGFkIHNvbWUKCUlEcyBsYXJnZXIgYW5kIHRoYXQgY2F1c2VkIHByb2JsZW1zLiBUaGlzIGlzIG5vdyBzb2x2ZWQgKEkgaG9wZSkuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBBdWcgMTUgMTg6NTI6MzIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jOiBTdGV2ZSBUaWJiZXR0IDxzdGV2ZXRAY29yZWwuY29tPgoJRml4ZWQgY3Vyc29yIHN0cmV0Y2ggY29kZS4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW5oaWJpdCB3cmFwYXJvdW5kIGluIGNvbXBhcmlzb24uCgoJKiBkbGxzL3NoZWxsMzIvLmN2c2lnbm9yZSwgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobHdhcGkuc3BlYywgbG9hZGVyL2xvYWRvcmRlci5jLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgaW50ZXJuYWwgZGxsLCBleHBvcnRpbmcgYWxyZWFkeSBleGlzdGluZyBwYXRoIGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgY29udHJvbHMvbWVudS5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRW5zdXJlIHRoYXQgdGhlIFdNX0VOVEVSSURMRSBtZXNzYWdlIGlzIG5vdCBzZW50IGlmIHRoZSB3YWtlLXVwIGV2ZW50Cglmb3IgdGhlIE1TR19JbnRlcm5hbEdldE1lc3NhZ2UoKSBjYWxsIGlzIGEgV01fVElNRVIuCgoJKiByYy93aW5lcmMuYywgaW5jbHVkZS9yZXNvdXJjZS5oLCBpbmNsdWRlL3dpbmRlZi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglHQ0MgMy4wIGhhcyBub3QgYmVlbiByZWxlYXNlZCB5ZXQsIGJ1dCBpdCBpcyBnb29kIHRvIGJlIHByZXBhcmVkLgoKCSogbWlzYy9zcHkuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCByZXNvbHV0aW9uIG9mIExWTSBtZXNzYWdlcy4KCgkqIG9iamVjdHMvZGliLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJQWRkZWQgcHJvdGVjdGlvbiBhZ2FpbnN0IHBvc3NpYmxlIG1lbW9yeSBjb3JydXB0aW9uLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IFN0ZXZlIFRpYmJldHQgPHN0ZXZldEBjb3JlbC5jb20+CglGaXhlZCBjdXJzb3Igc2VsZWN0aW9uIHRvIGZpbmQgdGhlIGNvcnJlY3QgY3Vyc29yIHdoZW4gbW9yZSB0aGFuIG9uZQoJYXZhaWxhYmxlLgoKCSogZGxscy93aW5zcG9vbC9NYWtlZmlsZS5pbiwgZGxscy93aW5zcG9vbC9pbmZvLmMsIGRsbHMvd2luc3Bvb2wvd2luc3Bvb2wuc3BlYywgZGxscy93aW5zcG9vbC93c3Bvb2wuYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJUmVwbGFjZWQgYSBzdGF0aWMgdGVuIGVsZW1lbnQgYXJyYXkgd2l0aCBhIGR5bmFtaWMgcG9pbnRlciBhcnJheS4KCgkqIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeCBzcGVjaWFsIGNhc2Ugd2hlbiBubyBwcmludGVyIGluc3RhbGxlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwuc3BlYzoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCU5ldyByb3V0aW5lIERsbEVudHJ5UG9pbnQgZm9yIHNoZWxsLmRsbC4gIExvYWRzIHNoZWxsMzIuZGxsLAoJc2luY2UgbW9zdCBzaGVsbC5kbGwgZnVuY3Rpb25zIGNhbGwgdGhlaXIgMzItYml0IGNvdW50ZXJwYXJ0cy4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBhbGlnbm1lbnQuCgoJKiBjb250cm9scy9lZGl0LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglFTV9TRVRTRUwgc2Nyb2xscyBpZiBvdXRzaWRlIG9mIHRoZSB2aXNpYmxlIHJhbmdlLgoJInNoaWZ0K2hvbWUiIHNlbGVjdGlvbiBpbXByb3ZlZCBpbiB0aGUgZWRpdCBjb250cm9sLgoKCSogb2xlL3BhcnNlZHQuYzogUmVtb3ZlZCBSQ1Mga2V5d29yZC4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NocmVzLnJjLCBkbGxzL3NoZWxsMzIvc2hyZXNkZWYuaCwgZGxscy9zaGVsbDMyL3Nodl9iZ19jbWVudS5jLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vcmUgdXNlIG9mIHJjIGZpbGVzIGZvciBzdHJpbmdzIGFuZCBtZW51cywgZml4ZXMuIEZpcnN0IGludGVybmFsCglpY29ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGludGVyZmFjZTogRHJvcFNvdXJjZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQmV0dGVyIERyb3BUYXJnZXQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIFNIR2V0RmlsZUluZm8gYmV0dGVyLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglQcm90ZWN0IGNhY2hlIHdpdGggY3JpdGljYWwgc2VjdGlvbi4KCVJlbW92ZWQgaGFjayB0byBsb2FkIGljb25zIGZyb20gZXh0ZXJuYWwgc2hlbGwzMi5kbGwuCgoJKiBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglRdWVyeUdldERhdGEsIEVudW1Gb3JtYXRFdGMgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIG1hcHBpbmcgb2YgZmlsZSBleHRlbnNpb25zIHRvIHRleHQuCgoJKiBtaXNjL2RkZW1sLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgYXNjaWkvdW5pY29kZSBpc3N1ZSBmb3IgbmFtaW5nIG9mIHRoZSBtdXRleGVzLgoJTWFkZSBtdXRleCBoYW5kbGVzIGdsb2JhbC4KCUZpeGVkIGluY29ycmVjdCBpbnRlcnByZXRhdGlvbiBvZiByZXR1cm4gdmFsdWVzIG9mIFdhaXRGb3JTaW5nbGVPYmplY3QuCgoJKiBvYmplY3RzL2ZvbnQuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRDaGFyYWN0ZXJQbGFjZW1lbnRBLgoKCSogd2luZG93cy9kZWZ3bmQuYywgaW5jbHVkZS93aW51c2VyLmg6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBXTV9TRVRJQ09OIGFuZCBXTV9HRVRJQ09OIG1lc3NhZ2VzLgoKCSogZmlsZXMvZHJpdmUuYzogTW9ydGVuIEVyaWtzZW4gPG1vcnRlbmVAc2ltLm5vPgoJRklYTUUgb24gdW5pbXBsZW1lbnRlZCBmZWF0dXJlIG1hZGUgbGVzcyBvYnRydXNpdmUuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglOb3cgdGhlIGNvbnZlcnNpb24gaW4gdGhlIGJsdCBmdW5jdGlvbnMgcm91bmQgdXAgdGhlIHJlc3VsdC4KCgkqIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglEb2N1bWVudCB1c2Ugb2YgImluaXQiIGluIGJ1aWxkLXNwZWMudHh0LCBhbmQgbWFrZSBidWlsZC5jIHByaW50IGEKCXdhcm5pbmcgaWYgc29tZW9uZSB0cmllcyB0byB1c2UgImluaXQiIGluIGEgV2luMTYgc3BlYyBmaWxlLgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYzogTWljaGFlbCBLYXJjaGVyIDxrYXJjaGVyQGRway5iZXJsaW4uZmlkby5kZT4KCU1ha2Ugc3VyZSB3ZSBoYXZlIGEgZGdyb3VwIGJlZm9yZSBwYXRjaGluZyBwcm9sb2dzLgoKCSogKi9NYWtlZmlsZS5pbiwgKi8uY3ZzaWdub3JlOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIGdsdWUgY29kZSBnZW5lcmF0aW9uIGNoYW5nZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvc25vb3AuaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIG5ldy1zdHlsZSBXaW5lIHRodW5rcy4KCVJlbW92ZWQgc29tZSBub3cgdW5uZWNlc3NhcnkgZnVuY3Rpb24gcG9pbnRlcnMuCgoJKiBpbmNsdWRlL2J1aWx0aW4xNi5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgdG9vbHMvYnVpbGQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2FsbFRvMTYuLi4gLyBDYWxsRnJvbTE2Li4uIFdpbmUgdGh1bmtzIHJlb3JnYW5pemVkOgoJLSBDbGVhbmVyIHNlcGFyYXRpb24gYmV0d2VlbiBjb3JlIGFuZCBnbHVlIGNvZGUuCgktIEFyZ3VtZW50IGNvbnZlcnNpb24gZ2x1ZSBjb2RlIG5vdyBpbiBDLgoJLSBHbHVlIGNvZGUgbmVlZGVkIGZvciAxNi1iaXQgLnNwZWMgZmlsZXMgaW5saW5lZC4KClNhdCBBdWcgMTQgMTU6NTM6NTAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY29tbS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgktIGltcGxlbWVudGVkIEdldENvbW1Nb2RlbVN0YXR1cwoJLSBmaXhlZCB0aGUgRFRSLCBDVFMgYW5kIENPTU1CUkVBSyByZWxhdGVkIHN1YmZ1bmN0aW9ucyBvZiBFc2NhcGVDb21tRnVuY3Rpb24KCS0gYWRkZWQgbW9yZSB2ZXJib3NlIFRSQUNFaW5nCgoJKiBtaXNjL3ZlcnNpb24uYzogTW9ydGVuIEVyaWtzZW4gPG1vcnRlbmVAc2ltLm5vPgoJTWFkZSBHZXRWZXJzaW9uRXgoKSBiZWhhdmUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uIHdpdGgKCXJlZ2FyZCB0byBlcnJvciBoYW5kbGluZy4KCgkqIGRsbHMvbXN2aWRlby9tc3ZmdzMyLnNwZWMsIGRsbHMvbXN2aWRlby9tc3ZpZGVvX21haW4uYzoKCU1hcmsgRy4gQWRhbXMgPG1hZGFtc0BsaXZlcGFnZS5jb20+CglBZGRlZCBzdHViIGZvciBEcmF3RGliQ2xvc2UuCgoJKiBjb250cm9scy9jb21iby5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgbG9vayBvZiB0aGUgY29tYm9ib3gncyBkcm9wIGRvd24gYnV0dG9uIHdoZW4gaW4gV2luOTUgbG9vay4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgaWNvbnMgaW4gcHJvcGVydHkgc2hlZXQgdGFicy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgdG9vbHMvd3JjL0NIQU5HRVMsIHRvb2xzL3dyYy9nZW5yZXMuYywgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvd3JjLmg6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJVmVyc2lvbiAxLjAuMTQgb2Ygd3JjLgoKU3VuIEF1ZyAgOCAxODo1NjowNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5iYXNlLmgsIHdpbjMyL3RpbWUuYzogRml4ZWQgU2V0TG9jYWxUaW1lIHByb3RvdHlwZS4KCgkqIG9sZS9vbGUybmxzLmMsIHdpbjMyL2tlcm5lbDMyLmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy92ZXJzaW9uL2luZm8uYywgZmlsZXMvZG9zX2ZzLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBsb2FkZXIvbGlicmVzLmMsIGxvYWRlci9wZV9yZXNvdXJjZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCVJlcGxhY2VkIGEgZmV3IGNhbGxzIHRvIGxzdHIqIGZ1bmN0aW9ucyBieSB0aGVpciBDUlRETEwgb3IgbGliYwoJZXF1aXZhbGVudC4KCgkqIG1lbW9yeS9zdHJpbmcuYzoKCUFkZGVkIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGFyb3VuZCBhIGZldyBsc3RyKiBmdW5jdGlvbnMuCgoJKiBkbGxzL2NydGRsbC9NYWtlZmlsZS5pbiwgZGxscy9jcnRkbGwvY3J0ZGxsLnNwZWMsIGRsbHMvY3J0ZGxsL2NydGRsbF9tYWluLmMsIGRsbHMvY3J0ZGxsL21ic3RyaW5nLmMsIGRsbHMvY3J0ZGxsL3djc3RyaW5nLmMsIGRsbHMvbnRkbGwvbnRkbGwuc3BlYywgaW5jbHVkZS9jcnRkbGwuaDoKCVJlaW1wbGVtZW50ZWQgbXVsdGktYnl0ZSBhbmQgd2lkZS1jaGFycyBmdW5jdGlvbnMgdG8gbm90IGRlcGVuZCBvbgoJbHN0ciogZnVuY3Rpb25zOyBhZGRlZCBhIGZldyBtaXNzaW5nIG9uZXM7IGZpeGVkIGEgY291cGxlIG9mIGJ1Z3MuCgpTYXQgQXVnICA3IDE0OjMyOjM0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL0F0dGljL3duZXQuaCwgaW5jbHVkZS93aW5lL3dpbm5ldDE2LmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9BdHRpYy9tcHIuc3BlYywgcmVsYXkzMi9NYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL01ha2VmaWxlLmluLCBkbGxzL21wci8uY3ZzaWdub3JlLCBkbGxzL21wci9NYWtlZmlsZS5pbiwgZGxscy9tcHIvYXV0aC5jLCBkbGxzL21wci9tcHIuc3BlYywgZGxscy9tcHIvbXByX21haW4uYywgZGxscy9tcHIvbXVsdGluZXQuYywgZGxscy9tcHIvbnBzLmMsIGRsbHMvbXByL3B3Y2FjaGUuYywgZGxscy9tcHIvd25ldC5jLCBpbmNsdWRlL25ldHNwaS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTZXBhcmF0ZWQgV2luMTYgKFVTRVIpIGFuZCBXaW4zMiAoTVBSKSBuZXR3b3JrIHJvdXRpbmVzLgoJTW92ZWQgaW1wbGVtZW50YXRpb24gb2YgTVBSIHRvIGRsbHMvbXByLy4KCUFkZGVkIHByb3BlciBoZWFkZXJzIGFuZCBzdHVicyBmb3IgbWlzc2luZyBNUFIgcm91dGluZXMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXByb3ZlZCAoc29ydCBvZikgUmVnRmx1c2hLZXkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJZiB0aGUgd2luZG93IGlzIGFscmVhZHkgdGhlIHRvcG1vc3Qgd2luZG93IGluIFNob3dXaW5kb3coU1dfU0hPVyksIGl0CgltdXN0IG5vdCBiZSBhY3RpdmF0ZWQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVdNX1NZU0NPTU1BTkQgbWVzc2FnZSAoZm9yIFNDX0NMT1NFKSBzaG91bGQgYmUgcG9zdGVkIG5vdCBzZW50LgoKCSogd2luZG93cy9kY2UuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVgxMWRydiBTZXREcmF3YWJsZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgREMgb3JpZ2luLCB0aGlzIHRyYW5zbGF0aW9uCglzaG91bGQgYmUgcmVmbGVjdGVkIGZvciB0aGUgZGMgY2xpcHBpbmcgcmVnaW9uIGZvciBDU19PV05EQyBhbmQgQ1NfQ0xBU1NEQy4KCgkqIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGlhbG9nLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJU2V0IGZvY3VzIHRvIHRoZSBkaWFsb2cgaW4gRW5kRGlhbG9nLgoKCSogbGlidGVzdC9NYWtlZmlsZS5pbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJTWFrZSBzdXJlIHdlIGNvbXBpbGUgd2luZXN0dWIubyBiZWZvcmUgdHJ5aW5nIHRvIGJ1aWxkIGEgV2luZWxpYiB0ZXN0Cglwcm9ncmFtLgoKCSogZmlsZXMvZGlyZWN0b3J5LmM6IEFuZHJlYXMgTW9ociA8YW1vaHJAc3R1ZGVudC5laS51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgY2FzZSBzZW5zaXRpdml0eSBmbGFnLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglJbXBsZW1lbnRlZCB0aGUgcmV0dXJuIG9mIGhEZXZNb2RlcyBhbmQgaERldk5hbWVzIGluIHRoZSBQUklOVERMRwoJc3RydWN0dXJlIG9mIFByaW50RGxnQSgpLgoKCSogd2luZG93cy9xdWV1ZS5jLCBpbmNsdWRlL3F1ZXVlLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBoYXJkd2FyZV9ldmVudCB1c2Ugd2luMzItY29uZm9ybWFudCBwYXJhbWV0ZXJzLgoKCSogZGxscy9jb21tZGxnL2NkbGczMi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUV4cGxpY2l0bHkgbG9hZCBzaGVsbDMyLmRsbC4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJVGFrZSBpbnRvIGFjY291bnQgaWNvbnMgd2hlbiBkZXRlcm1pbmluZyB0YWIgc2l6ZS4KCgkqIGZpbGVzL2RyaXZlLmM6IE1vcnRlbiBFcmlrc2VuIDxtb3J0ZW5lQHNpbS5ubz4KCUltcHJvdmVkIEdldERpc2tGcmVlU3BhY2VFeCgpIGltcGxlbWVudGF0aW9uIGEgbGl0dGxlIGJpdC4KCgkqIG1pc2MvY29tbS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgktIGFkZGVkIHNvbWUgbW9yZSBCYXVkcmF0ZXMKCS0gZml4ZWQgYSBoYW5nIGluIHRjc2V0YXR0ciB3aGVuIHRoZSBpbnB1dCBidWZmZXIgaXNuJ3QgZW1wdHkKCS0gYWRkZWQgbW9yZSB2ZXJib3NpdHkgZm9yIGRlYnVnZ2luZwoKCSogY29udHJvbHMvdWl0b29scy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglIYW5kbGUgdGhlIGNhc2Ugd2hlbiB0aGUgYnV0dG9uIGlzIHJlYWxseSBzbWFsbC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJV1NfRVhfRExHTU9EQUxGUkFNRSBhbG9uZSBkb2VzIG5vdCBtZWFuIHRpdGxlIGJhciwgeW91IHN0aWxsIGhhdmUgdG8KCXNwZWNpZnkgV1NfQ0FQVElPTi4KCldlZCBBdWcgIDQgMTU6MDc6NTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIERpcmVjdElucHV0IEpveXN0aWNrIHN1cHBvcnQgKHRlc3RlZCB3aXRoIFdDOlByb3BoZWN5KS4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvdGltZS5jOgoJQW5kcmVhcyBNb2hyIDxhbW9ockBzdHVkZW50LmVpLnVuaS1zdHV0dGdhcnQuZGU+CglJbXBsZW1lbnRlZCBTZXRMb2NhbFRpbWUuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBJdmFuIERlIFNhZWRlbGVlciA8SXZhbmRzQHN5bXBhdGljby5jYT4KCU1pbm9yIGZpeCB0byB0aGUgRnJlbmNoIENhbmFkaWFuIGtleWJvYXJkLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXaGVuIGZsaXBwaW5nIGJhY2tidWZmZXIgLT4gZnJvbnRidWZmZXIsIGZpcnN0IGV4Y2hhbmdlIHN1cmZhY2VzLCB0aGVuCgljb3B5IFhJbWFnZSwgc2luY2UgdGhlIHBhbGV0dGUgbWlnaHQgb25seSBiZSBkZWZpbmVkIGluIHRoZSBmcm9udGJ1ZmZlci4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBKb2VyZyBNYXllciA8am1heWVyQHRlbGVzdW4yLnRlbGVtYXRpb24uZGU+CglDcmVhdGUgc3lzY29uZmRpciBvbiBpbnN0YWxsLgoKCSogZGxscy9zdHJlc3MvLmN2c2lnbm9yZTogRml4ZWQgdHlwby4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL2RlYnVndG9vbHMuaCwgbG9hZGVyL3BlX2ltYWdlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jOgoJR290IHJpZCBvZiBkc3ByaW50ZiBhbmQgcmVsYXRlZCBtYWNyb3MuCgoJKiBzZXJ2ZXIvbXV0ZXguYzoKCVJlbW92ZSB0aGUgbXV0ZXggZnJvbSB0aGUgdGhyZWFkIGxpc3Qgd2hlbiBkZXN0cm95aW5nIGl0LgoKCSogKi8qOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCB2YXJpb3VzIERMTHMgdG8gZGxscy8KClN1biBBdWcgIDEgMTQ6NTg6MDIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL25lL3NlZ21lbnQuYywgbWlzYy9lcnJvci5jLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2RwbWkuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MzMuYywgZGVidWdnZXIvcmVnaXN0ZXJzLmMsIGRlYnVnZ2VyL3N0YWNrLmM6CglSZW1vdmVkIElQX3JlZywgU1BfcmVnIGFuZCBGTF9yZWcgZGVmaW5pdGlvbnMgdG8gYXZvaWQgcG90ZW50aWFsCglhbGlhc2luZyBvcHRpbWl6YXRpb24gcHJvYmxlbXMuCgoJKiBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpbmNsdWRlL21pc2NlbXUuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL3NpZ25hbC5jOgoJUmVtb3ZlZCBTSUdOQUxfTWFza0FzeW5jRXZlbnRzIGFuZCBjbGVhbmVkIHVwIHNpZ25hbCBoYW5kbGluZy4KCgkqIGluY2x1ZGUvQXR0aWMvYXN5bmMuaCwgd2luMzIvY29uc29sZS5jLCBmaWxlcy9BdHRpYy9hc3luYy5jLCBmaWxlcy9NYWtlZmlsZS5pbiwgZmlsZXMvZmlsZS5jOgoJUmVtb3ZlZCBhc3luYyBJL08gc3VwcG9ydC4KCgkqIGluY2x1ZGUvY29tbS5oLCBtaXNjL2NvbW0uYzoKCVVzZSB0aGUgc2VydmljZSB0aHJlYWQgZm9yIGNvbW0gbm90aWZpY2F0aW9ucy4KCgkqIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIGxvYWRlci90YXNrLmMsIG1zZG9zL2RwbWkuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCB3aW4zMi9rZXJuZWwzMi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmM6CglNYWRlIHN0YWNrIG1hbmlwdWxhdGlvbiBtYWNyb3MgaW50byBpbmxpbmUgZnVuY3Rpb25zLgoJQ2hhbmdlZCBhIGZldyBhY2Nlc3NlcyB0byBjb250ZXh0IHJlZ2lzdGVycyB0byBhdm9pZCBwb3RlbnRpYWwKCWFsaWFzaW5nIG9wdGltaXphdGlvbiBwcm9ibGVtcy4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvd2luZGVmLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbWVtb3J5L2luc3RyLmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglDaGFuZ2VkIElOU1RSX0VtdWxhdGVJbnN0cnVjdGlvbiB0byB1c2UgYSBDT05URVhUODYgaW5zdGVhZCBvZiBhCglTSUdDT05URVhULgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSB3aW5lLmNvbmYubWFuIG9uIGRpc3RjbGVhbgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTYXQgSnVsIDMxIDE5OjM1OjU4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUNsb3NlIHRoZSByaWdodCB3aW5kb3cgd2hlbiBjbGlja2luZyBvbiBhIG5vbiBhY3RpdmUgd2luZG93IGNsb3NlCglidXR0b24uCgoJKiBNYWtlZmlsZS5pbjogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCVJlbW92ZWQgdGhlIGRlcGVuZGVuY3kgb24gImR1bW15IiBmb3Igd2luZSBhbmQgd2luZS5zeW0uCgoJKiBmaWxlcy9wcm9maWxlLmM6CglSZW1vdmUgZmlsZSBmcm9tIGNhY2hlIHdoZW4gZmx1c2hpbmcgaXQgKGJhc2VkIG9uIGEgcGF0Y2ggYnkgSWFuCglTY2htaWR0KS4KCgkqIGluY2x1ZGUvd2lubnQuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBDT05URVhUIGZvciBBTFBIQSBhbmQgTUlQUy4KCgkqIGNvbmZpZ3VyZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZToKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgc3VwcG9ydCBmb3IgU29sYXJpcyBMaW50LgoKCSogc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNlcnZlci9kZWJ1Z2dlci5jLCB0b29scy9tYWtlX2RlYnVnLCB3aW4zMi9jb25zb2xlLmMsIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL3h0ZXJtLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvdGV4dC5jLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3htYWxsb2MuaCwgbWlzYy94bWFsbG9jLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHNvbWUgb2YgdGhlIGlzc3VlcyByZXBvcnRlZCBieSBTb2xhcmlzIExpbnQuCgoJKiBpbmNsdWRlL3BzaHBhY2s0Lmg6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU29sYXJpcyBDL0MrKyBjb21waWxlIGZpeC4KCgkqIG1zZG9zL2Rvc21lbS5jLCBvbGUvc3RvcmFnZTMyLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgY29udHJvbHMvYnV0dG9uLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21tZGxnL2ZpbGVkbGc5NS5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZ2Jyb3dzZXIuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVZhcmlvdXMgQU5TSSBDIGNvbXBhYmlsaXR5IGZpeGVzLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvZ2RpLnNwZWMsIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy9uZXR3b3JrLmMsIG1pc2Mvc3lzdGVtLmMsIG1pc2Mvd2luc29jay5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG9sZS9vbGVmb250LmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvZmlsZS5jLCBkbGxzL250ZGxsL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvdGFwaTMyL3RhcGkzMi5zcGVjOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglGaXhlZCBzb21lIG9mIHRoZSBpc3N1ZXMgcmVwb3J0ZWQgYnkgd2luYXBpLWNoZWNrLgoKCSogZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBY3R1YWxseSBjcmVhdGUgdGhlIG1hbi8gc3ViZGlyZWN0b3JpZXMgYmVmb3JlIGluc3RhbGxpbmcuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGluY2x1ZGUvd2luZS93aW5iYXNlMTYuaCwgbG9hZGVyL3Rhc2suYywgd2luZG93cy9xdWV1ZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBLRVJORUwuNDQ3IChXSU4zMl9PbGRZaWVsZDE2KS4KCgkqIHdpbmRvd3MvZXZlbnQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTdXNwZW5kIFdORCBsb2NrIGJlZm9yZSBFVkVOVF9TeW5jaHJvbml6ZS4KCgkqIHdpbjMyL2RldmljZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNyZWF0ZSBWeEQgaGFuZGxlIG9ubHkgZm9yIGtub3duIFZ4RHMuCgoJKiBNYWtlLnJ1bGVzLmluLCByZWxheTMyL01ha2VmaWxlLmluOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1hZGUgY29tcGlsYXRpb24gb2YgKi5zcGVjLmMgZmlsZXMgdXNlIC1mbm8tYnVpbHRpbiByZWdhcmRsZXNzIG9mCgl3aGVyZSB0aGV5IGFyZS4KCgkqIGluY2x1ZGUvdGFwaS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgc2NoZWR1bGVyL3RocmVhZC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9tZW1vcnlzdHJlYW0uYywgZ3JhcGhpY3MvZGRyYXcuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQvYWRkZWQgbWlzc2luZy93cm9uZyBmdW5jdGlvbiBwcm90b3R5cGVzIGFuZCBtYWRlIGludGVybmFsCglmdW5jdGlvbnMgc3RhdGljLgoKCSogdHN4MTEvdHNfeHNobS5jLCB0c3gxMS90c194dXRpbC5jLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS90c194Zjg2ZGdhLmMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCB0c3gxMS90c194bGliLmMsIHRzeDExL3RzX3hwbS5jLCB0c3gxMS90c194cmVzb3VyY2UuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgbWlzc2luZyBwcm90b3R5cGVzIGFuZCBtYWRlIGl0IHdvcmsgd2l0aCBTb2xhcmlzIFgxMS4KCgkqIGRlYnVnZ2VyL2V4dGVybmFsLmMsIGluY2x1ZGUvd2luZS91bmRvY3NoZWxsLmgsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBvbGUvYW50aW1vbmlrZXIuYywgb2xlL2NvbXBvc2l0ZW1vbmlrZXIuYywgb2xlL2RhdGFjYWNoZS5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2l0ZW1tb25pa2VyLmMsIG9sZS9vbGVmb250LmMsIHNjaGVkdWxlci90aHJlYWQuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglFbGltaW5hdGVkIHdhcm5pbmdzLgoKCSogbG9hZGVyL25lL3NlZ21lbnQuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIHRoZSBEU0VHIHZhbHVlIGluIHRoZSBTRUdUQUJMRUVOVFJZIHN0cnVjdC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzIuaCwgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBidWlsdGluIHRvb2xiYXIgYml0bWFwcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3LmgsIGluY2x1ZGUvdHJlZXZpZXcuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTb21lIG1vcmUgbWVzc2FnZXMuCgoJKiBkbGxzL2FkdmFwaTMyL2FkdmFwaTMyLnNwZWMsIGRsbHMvYWR2YXBpMzIvY3J5cHQuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdHViIGZvciBDcnlwdFNldEtleVBhcmFtcygpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3R1YnMgZm9yIERBRF9TZXREcmFnSW1hZ2UoKSBhbmQgUGF0aENsZWFudXBTcGVjKCkuCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN0dWIgZm9yIF9leGNlcHRfaGFuZGxlcjIoKS4KCgkqIG9iamVjdHMvcmVnaW9uLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBHZXRSYW5kb21SZWdpb24oKS4KCgkqIGNvbnRyb2xzL21lbnUuYywgd2luZG93cy9ub25jbGllbnQuYzoKCVBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgc3lzdGVtIGJ1dHRvbiBiZWhhdmlvciBhbmQgYXNzb2NpYXRlZCBpdCB0byB0aGUgc3lzdGVtCgltZW51IGluIHdpbjk1LiBBbHNvIHBlcm1pdCB0aGUgU0NfQ0xPU0UgaXRlbSB0byBiZSBkaXNhYmxlZC4KCgkqIG1pc2MvY29tbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUJ1Z2ZpeGVzIGFuZCBhIGZha2UgR0VUQkFTRUlSUS4KCgkqIGZpbGVzL2FzeW5jLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBhc3luYyBmZHMgbm9uYmxvY2tpbmcuCgoJKiB3aW5kb3dzL21kaS5jOiBEYW4gTGFuZ2xvaXMgPGRhbmllbGxAY29yZWwuY29tPgoJUmVtb3ZlZCBhbiBpbmFwcHJvcHJpYXRlIGlmIHN0YXRlbWVudCBmcm9tIE1ESV9DaGlsZEFjdGl2YXRlIHRoYXQKCXByZXZlbnRlZCB0aGUgYWN0aXZhdGlvbiBjb2RlIGZyb20gZXhlY3V0aW5nLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBpbmNsdWRlL21vbnRoY2FsLmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJQnVnZml4ZXMgJiBmdXJ0aGVyIHVwZGF0ZXMgZm9yIHRoZSBtb250aCBjYWxlbmRhciBjb21tb24gY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RhdGV0aW1lLmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJU3RhcnRlZCBpbXBsZW1lbnRpbmcgZGF0ZS90aW1lIGNvbW1vbiBjb250cm9sLgoKCSogZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVBTRFJWX1dyaXRlQXJjIHNob3VsZG4ndCB3cml0ZSBhIG5ld3BhdGguCgoJKiBjb250cm9scy9idXR0b24uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeCBoYW5kbGluZyBvZiBXTV9MQlVUVE9ORENMSUNLIG1lc3NhZ2UgZm9yIGJ1dHRvbnMgd2l0aCBjZXJ0YWluCglzdHlsZXMuCgoJKiB3aW5kb3dzL2RjZS5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUJ1ZyBmaXggZm9yIHVwZGF0aW5nIHRoZSBjbGlwcGluZyByZWdpb24gaW4gbmVzdGVkIEdldERDRXggY2FsbHMuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBZdXhpIFpoYW5nIDx5dXhpekBjb3JlbC5jYT4KCVRyaWVkIHRvIGZpeCB0aGUgY29kZSBmb3IgU2V0V2luZG93UG9zIHRvIGVyYXNlIHRoZSBiYWNrZ3JvdW5kCglwcm9wZXJseS4KCkZyaSBKdWwgMzAgMTg6MTA6MjEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0VuLnJjLCBkbGxzL2NvbW1kbGcvY2RsZ194eC5yYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvY29tbWRsZy9yc3JjLnJjLCBpbmNsdWRlL3dpbnNwb29sLmg6CglLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCS0gYWRkZWQgQ29sbGF0ZS9Ob0NvbGxhdGUgSWNvbnMgdG8gUHJpbnQzMiBkaWFsb2cgKHVuZm9ydHVuYXRlbHkgdGhleQoJICBkb24ndCBkaXNwbGF5IHlldCkuCgktIGFkZGVkIHN0YXR1cyBzdHJpbmdzLgoJLSBhZGRlZCBzdHJpbmcgdGFibGUgZm9yIGludGVybmF0aW9uYWxpc2F0aW9uIG9mIHNldmVyYWwgaW50ZXJuYWwKCSAgbWVzc2FnZSBib3hlcy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS93aW51c2VyLmg6IFl1eGkgWmhhbmcgPHl1eGl6QGNvcmVsLmNhPgoJUmVtb3ZlZCBkdXBsaWNhdGVkIGRlZmluZXMgaW4gd2ludXNlci5oIGFuZCBjb21tY3RybC5oLiBBbHNvIGNvcnJlY3RlZAoJYSB0eXBvIGZvciBTV19NQVggdmFsdWUuCgoJKiBkbGxzL2NvbW1kbGcvY2RsZy5oLCBkbGxzL2NvbW1kbGcvY2RsZzMyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGZpbGUgZGlhbG9nLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHJpcCAuZHJ2IGV4dGVuc2lvbnMgdG8gTU9EVUxFX0dldExvYWRPcmRlci4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgbWVtb3J5IGxlYWsuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBsb2FkZXIvdGFzay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEluc3RhbGwgdGFzay1lbnRyeSBicmVha3BvaW50ICphZnRlciogRVhFIG1vZHVsZSBpcyBpbml0aWFsaXplZC4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGluY2x1ZGUvcHNkcnYuaDoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhIGNhbGwgdG8gdGhlIG5ld3BhdGggb3BlcmF0b3IgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBhcmMKCW9wZXJhdG9yLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IFBpZXJyZSBNYWdlYXUgPHBpZXJyZUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgcHJvYmxlbSB3aGVuIHRoZSBzdHlsZSBpcyBCU19CSVRNQVAgb3IgQlNfSUNPTjogdGhlIGJpdG1hcCBvcgoJaWNvbiBuZWVkZWQgdG8gYmUgY2VudGVyZWQgd2hlbiB0aGUgYnV0dG9uIGlzIHNtYWxsZXIgdGhhbiB0aGUgYml0bWFwLgoKCSogd2luZG93cy9tZGkuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBtZW1vcnkgbGVhayB0aGF0IG9jY3VycyB3aGVuIHdlIG1heGltaXplL21pbmltaXplIGFuIE1ESQoJY2hpbGQuCgoJKiBkbGxzL2NvbWN0bDMyL3VwZG93bi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBtb3JlIHN1cHBvcnQgZm9yIGJ1ZGR5IHdpbmRvd3MgaW4gdGhlIHVwZG93biBjb250cm9sLgoKCSogY29udHJvbHMvZWRpdC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBwcm9wZXIgd2luOTUgc3VwcG9ydCBmb3IgdGhlIFdTX0JPUkRFUiBzdHlsZS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCB0aGUgV1NfQk9SREVSIHN0eWxlIHRvIGEgV1NfRVhfQ0xJRU5URURHRSBzdHlsZSBmb3IgdGhlCglsaXN0Ym94IGNvbnRyb2wuCgoJKiBjb250cm9scy9jb21iby5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgYm9yZGVyIGZvciB0aGUgbGlzdGJveCBjcmVhdGVkIGJ5IHRoZSBzaW1wbGUgY29tYm9ib3guCgoJKiBvbGUvY29tcG9iai5jLCBpZjE2MzIvY29tcG9iai5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgQ29SZXZva2VDbGFzc09iamVjdCBzdHViIG5lZWRlZCBieSBBY3JvYmF0IDMgMTYgYml0LgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglHZXRNb2R1bGVIYW5kbGUxNjogdHJlYXQgV2luMzIgbW9kdWxlcyBjb3JyZWN0bHkuCgpXZWQgSnVsIDI4IDE2OjM4OjQ1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZzk1LmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5jLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHVzZSBvZiBTdHJSZXRUb1N0ck4uCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3RyUmV0VG9TdHJOW0F8V3xBV10gbmV3IGluZGVwZW5kZW50IHVuaWNvZGUvYXNjaWkvZXhwb3J0IGZ1bmN0aW9ucy4KCgkqIGRvY3VtZW50YXRpb24vZGxsczogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGRlZCBleHBsYW5hdGlvbiBvZiB0aGUgY3VycmVudCBETEwgc3VwcG9ydC4KCgkqIG1lbW9yeS9nbG9iYWwuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGZpeGVkIGZyZXNobHkgaW50cm9kdWNlZCBidWcgaW4gR2xvYmFsTG9jazE2LgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMi5zcGVjLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYzoKCUlhbiBTY2htaWR0IDxpc2NobWlkdEBjZmwucnIuY29tPgoJQWRkZWQgc3R1YnMgZm9yIEluaXRNVUlMYW5ndWFnZSBhbmQgQ09NQ1RMMzIuNDEwLgoJRml4ZWQgc29tZSBjb21waWxlciB3YXJuaW5ncy4KClR1ZSBKdWwgMjcgMTc6MTA6MDYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGlmMTYzMi9nZGkuc3BlYywgaWYxNjMyL3RodW5rLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzY2VtdS9tYWluLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3MvdXNlci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBGaW5hbFVzZXJJbml0MTYvRmluYWxHZGlJbml0MTYgc3R1YnMuCglDYWxsIG91dCB0byBGaW5hbFVzZXJJbml0IGluIE1BSU5fRW11bGF0b3JSdW4uCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIG1lbW9yeS9zZWxlY3Rvci5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBJc0JhZEZsYXRSZWFkV3JpdGVQdHIxNigpLgoKCSogY29udHJvbHMvZWRpdC5jOiBBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGluY29ycmVjdCBlZGl0IGNvbnRyb2wgYmVoYXZpb3VyIGluIG1vdXNlIG1lc3NhZ2UgaGFuZGxpbmcuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglTZW5kIG5vcm1hbCBtb3VzZSBtZXNzYWdlcyB0byBXTV9TRVRDVVJTT1Igd2hlbiBub24tY2xpZW50IG1vdXNlCgltZXNzYWdlcyBvY2N1ci4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJQ2hlY2sgaWYgdGhlIHdpbmRvdyBoYXMgdGhlIFdTX0NMSVBTSUJMSU5HUyBzdHlsZSBiZWZvcmUgdXNpbmcgdGhlCglEQ1hfQ0xJUFNJQkxJTkdTIGZsYWcuCgoJKiBkbGxzL2NvbW1kbGcvTWFrZWZpbGUuaW4sIGRsbHMvY29tbWRsZy9jZGxnLmgsIGRsbHMvY29tbWRsZy9jZGxnMzIuYywgZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9maWxlZGxnLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnOTUuYywgZGxscy9jb21tZGxnL2ZpbGVkbGdicm93c2VyLmMsIGRsbHMvY29tbWRsZy9maWxlZGxnYnJvd3Nlci5oLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9kbGdzLmgsIGluY2x1ZGUvdGNoYXIuaDoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBXaW45NSBmaWxlIG9wZW4vc2F2ZSBkaWFsb2dzLgoKCSogTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gdG9vbHMvIGJlZm9yZSBhbnkgb2YgdGhlIG90aGVyIHN1YmRpcmVjdG9yaWVzLCBldmVuIHdoZW4gZG9pbmcKCXBhcmFsbGVsIG1ha2VzLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogUmV0dXJuIHNlbGVjdG9yIGFsc28gaW4gQ1ggZnJvbSBHbG9iYWxMb2NrMTYoKS4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vcmUgZ2NjIGJ1ZyB3b3JrYXJvdW5kcy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BwZC5jLCBpbmNsdWRlL3dpbmdkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgbW9yZSBwYXBlciBzaXplcyBhbmQgYmluIG5hbWVzIHRvIFBQRCBwYXJzZXIuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFjdHVhbGx5IHJldHVybiB0aGUgbnVtYmVyIG9mIGV2ZW50cyBpbiBNb3VzZV9HZXREZXZpY2VEYXRhIChmaXhlcwoJV2luZyBDb21tYW5kZXIgUHJvcGhlY3kpLiBBZGRlZCB0aW1lc3RhbXAgYW5kIHNlcXVlbmNlIGdlbmVyYXRpb24sCgljcml0aWNhbCBzZWN0aW9uIGZvciBtb3VzZWRhdGEuIERpc2FibGVkIG1vdXNlIHdhcnBpbmcgaW4KCUdldERldmljZURhdGEgZm9yIG5vdyAoZ2VuZXJhdGVzIGV4Y2VzcyBtb3VzZSBldmVudHMpLgoKU3VuIEp1bCAyNSAxMzoxNTo0OSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogKi8qLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIC5zcGVjIGZpbGVzIHRvIGNvcnJlc3BvbmRpbmcgZGxscy8gZGlyZWN0b3J5LgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVNldmVyYWwgZm9jdXMgYW5kIHNlbGVjdGlvbiBwcm9ibGVtcyBpbiBsaXN0Ym94ZXMuCgoJKiB3aW5kb3dzL2RjZS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglSZXRyaWV2ZSB0aGUgY2xpcHBpbmcgcmVnaW9uIGJlZm9yZSBzZXR0aW5nIHRoZSBkcmF3YWJsZSBhbmQgcmVzZXQgdGhlCgljbGlwcGluZyByZWdpb24gYWZ0ZXIuCgoJKiByZWxheTMyL0F0dGljL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobG1lbnUuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5lL29ial9lbnVtaWRsaXN0LmgsIGluY2x1ZGUvd2luZS9vYmpfc2hlbGxmb2xkZXIuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFueSBmaXhlcy9yZWltcGxlbWVudGF0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUmVtb3ZlZCBleHBlcmltZW50YWwvdW51c2VkIGNvZGUuCglVc2UgU2hlbGxGb2xkZXIgdG8gZ2V0IFZpZXdPYmplY3RzLgoJU3RhcnRlZCBjbGVhbnVwIG9mIHRoZSBjb250ZXh0bWVudSBjb2RlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDb21wbGV0ZSByZWRlc2lnbiwgc3BsaXQgaW50byAzIGltcGxlbWVudGF0aW9ucyAoRGVza3RvcCwgTXlDb21wdXRlcgoJYW5kIGZpbGVzeXN0ZW0gZm9sZGVycykuIEFsbCBwYXJzaW5nIGFuZCBiaW5kaW5nIGlzIGRvbmUgcmVjdXJzaXZlLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBTSEdldFNwZWNpYWxGb2xkZXJQYXRoQS4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBTSENyZWF0ZVNoZWxsRm9sZGVyVmlld0V4LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVJlbW92ZWQgc3BlY2lhbCBDb0NyZWF0ZUNsYXNzT2JqZWN0IGFuZCB1c2Ugb2xlIGZ1bmN0aW9ucyBpbnN0ZWFkLgoJU0hDcmVhdGVEZWZDbGFzc09iamVjdCBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgYWNjZXNzIHRvIGxuaydzIHRvIGEgSVN0cmVhbSBpbnRlcmZhY2UuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGljb24gYmFja2dyb3VuZCAod2FzIGJsYWNrKS4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgZ2V0dGluZyBpY29ucyBmcm9tIGZpbGV0eXBlcy4KCgkqIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGVudW1lcmF0aW9uIG9mIHNoZWxsIGV4dGVuc2lvbnMsIHNlcGVyYXRlZCBlbnVtIHN0dWZmIGZvcgoJdGhlIDMgc2VwZXJhdGUgc2hlbGxmb2xkZXIgaW1wbGVtZW50YXRpb25zLgoKCSogZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJUmV3cm90ZSBHZXREYXRhIHNvIHN1cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTZXBhcmF0ZWQgc3R1ZmYgZm9yIHNodiBiYWNrZ3JvdW5kIGNvbnRleHRtZW51IHRvIHNlcGFyYXRlIGZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmdW5jdGlvbnMgdG8gYWNjZXNzIGF0dHJpYnV0ZXMgaW4gSENSLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvc2h2X2JnX2NtZW51LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlLiBTZXBlcmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2hlbGx2aWV3IGJhY2tncm91bmQKCWNvbnRleHRtZW51LgoKCSogaW5jbHVkZS93aW5lL3VuZG9jc2hlbGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUuIENvbnRhaW5zIGZ1bmN0aW9ucyBub3QgaW4gdGhlIG9mZmljaWFsIGhlYWRlcnMgYnV0IHdpZGVseQoJdXNlZCBmcm9tIG90aGVyIGRsbHMuCgoJKiBNYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBYMTFPQkpTIGFuZCBMSUJPQkpTIHRvIHdpbmUgZGVwZW5kZW5jaWVzICh3ZSBjYW4ndCBhZGQgQUxUX0xJTkspLgoKCSogTWFrZWZpbGUuaW46IE1ha2Ugc3VyZSB3ZSBidWlsZCB0b29scyBmaXJzdC4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi93cHJvY3Muc3BlYywgbWVtb3J5L2dsb2JhbC5jLCB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVsYXkgY29kZSBmb3IgV2luMTYgcmVnaXN0ZXIgZnVuY3Rpb25zIGNvbnZlcnRzIGFyZ3VtZW50cy4KCU5ldyAnaW50ZXJydXB0JyBrZXl3b3JkIGFkZGVkIChmb3IgV2luMTYgaW50ZXJydXB0IGhhbmRsZXJzKS4KCUFkYXB0ZWQgLnNwZWMgZmlsZXMgYW5kIGltcGxlbWVudGF0aW9ucyBvZiByZWdpc3RlciByb3V0aW5lcy4KCgkqIGluY2x1ZGUvcHNkcnYuaCwgaW5jbHVkZS93aW5lL3dpbmdkaTE2LmgsIG1pc2MvcHJpbnRkcnYuYywgZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYywgaWYxNjMyL2dkaS5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJe1N0YXJ0fEVuZH17RG9jfFBhZ2V9IGdvIHRocm91Z2ggRENmdW5jcy4KCUltcGxlbWVudCB0aGVzZSBpbiB0aGUgUG9zdFNjcmlwdCBkcml2ZXIuCglDaGFuZ2UgUFNEUlZfRXNjYXBlIHRvIHVzZSB0aGVtLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXb3JrIGFyb3VuZCAnbG9jYWwgZXh0ZXJuIGRlY2xhcmF0aW9uIHdpdGggYXR0cmlidXRlJyBnY2MgYnVnLgoKCSogd2luZG93cy9kaW5wdXQuYzogTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCUltcGxlbWVudGF0aW9uIG9mIFNldEV2ZW50Tm90aWZpY2F0aW9uIGZvciB0aGUgbW91c2UgZHJpdmVyLgoKCSogb2xlL2NvbXBvYmouYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglMZXQgQ29DcmVhdGVJbnN0YW5jZSB1c2UgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIUEFUSC4KCgkqIGluY2x1ZGUvb2xlMi5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGluY29tcGxldGUgcHJvdG8uCgoJKiB3aW5lZGVmYXVsdC5yZWc6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGtleXMgbmVzc2VzYXJ5IGZvciBydW5uaW5nIHRoZSBuZXcgc2hlbGwzMi4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglVc2UgR0RJIEFQSXMgdG8gYWNjZXNzIGJpdG1hcCBpbmZvLgoKCSogZ3JhcGhpY3MvcHNkcnYvY2xpcHBpbmcuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVJld3JvdGUgUFNEUlZfU2V0RGV2aWNlQ2xpcHBpbmcgdG8gdXNlIEdldFJlZ2lvbkRhdGEgQVBJLgoKU2F0IEp1bCAyNCAxMjoyMDoyNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzY2VtdS9tYWluLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL21haW4uaCwgbG9hZGVyL21haW4uYywgbWlzYy9BdHRpYy9jYWxsYmFjay5jLCBtaXNjL01ha2VmaWxlLmluOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVbmlmeSBzdGFydHVwIHNlcXVlbmNlIGZvciBXaW5lIGFuZCBXaW5lTGliLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYywgaW5jbHVkZS9jbGlwYm9hcmQuaCwgbWVtb3J5L2dsb2JhbC5jOgoJTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXggYnVnIHdpdGggcGFzdGluZyBXaW5lIGNsaXBib2FyZCBjb250ZW50IHRvIGV4dGVybmFsIGFwcGxpY2F0aW9ucywKCWJ5IHN0b3JpbmcgY2xpcGJvYXJkIGRhdGEgb24gdGhlIHNoYXJlZCBzeXN0ZW0gaGVhcC4KCgkqIHdpbmRvd3MveDExZHJ2L21vdXNlLmM6IEFjaGltIEthaXNlciA8QWNoaW1fS2Fpc2VyQHQtb25saW5lLmRlPgoJRHJhdyBhbiBhZGRpdGlvbmFsIHdoaXRlIGJpdCBmb3IgZWFjaCBpbnZlcnQgYml0IG9mIGEgY3Vyc29yLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglXaGlsZSBoYW5kbGluZyB0aGUgWCBGb2N1c0luIG1lc3NhZ2UgaW4gbWFuYWdlZCBtb2RlLCBpZiB0aGUgd2luZG93CgloYXMgYmVlbiBkaXNhYmxlZCByZXZlcnQgdGhlIFggZm9jdXMgYmFjayB0byB0aGUgbGFzdCBmb2N1cyB3aW5kb3cuCgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBUUkVFVklFV19JbnNlcnRJdGVtVy4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCBFeHRFc2NhcGUuCgoJKiBNYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUcnlpbmcgdG8gZml4IHBhcmFsbGVsIG1ha2UgYnkgZG9pbmcgZGlyZWN0IHN1YmRpci9zdWJkaXIubyBydWxlcy4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJU3lsdmFpbiBTdC1HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgaW5jb25zaXN0ZW5jeSBpbiBjb25kaXRpb25zIHRoYXQgZGV0ZXJtaW5lcyBpZiBhIHdpbmRvdyByZXF1aXJlcwoJYSBXTSBib3JkZXIuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFmb250Lmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGb3IgbGFyZ2UgZm9udCBzaXplcyBjYWxsIFhMb2FkUXVlcnlGb250IHdpdGggYSAxMDAgcGl4ZWwgaGlnaCBmb250CglhbmQgcmVzY2FsZSB0aGUgbWV0cmljcy4KCgkqIG1pc2MvcHJpbnRkcnYuYywgb2JqZWN0cy9kYy5jLCBncmFwaGljcy9wc2Rydi9lc2NhcGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBpbmNsdWRlL2dkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJSW1wbGVtZW50IGhhbmRsaW5nIG9mIDMyIGJpdCBBYm9ydFByb2MuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCBpbmNsdWRlL3dpbm50Lmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJU3VwcHJlc3NlZCBjb21waWxlciB3YXJuaW5nIGJ5IHVzaW5nIHRoZSAndW51c2VkJyBhdHRyaWJ1dGUuCgoJKiBkZWJ1Z2dlci9NYWtlZmlsZS5pbiwgZGVidWdnZXIvZXh0ZXJuYWwuYzoKCUtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CglBZGRlZCB1dGlsaXR5IGZ1bmN0aW9uIHRvIGludm9rZSBleHRlcm5hbCBkZWJ1Z2dlci4KCgkqIG11bHRpbWVkaWEvLmN2c2lnbm9yZSwgbXVsdGltZWRpYS93aW5tbS5yYywgbXVsdGltZWRpYS93aW5tbV9Fbi5yYywgbXVsdGltZWRpYS93aW5tbV9Gci5yYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgV0lOTU0gcmVzb3VyY2VzLgoKCSogbXVsdGltZWRpYS9BdHRpYy9tY2lzdHJpbmcuYywgbXVsdGltZWRpYS9NYWtlZmlsZS5pbjoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBvYnNvbGV0ZWQgbWNpc3RyaW5nLmMuCglBZGRlZCBzdXBwb3J0IGZvciByZXNvdXJjZXMuCgoJKiBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZXR1cm4gdmFsdWVzIGZvciBzb21lIG1lc3NhZ2VzIGluIERyaXZlclByb2MgKE1DSV9HRVRERVZDQVBTICYKCU1DSV9TVEFUVVMpIGZvciBtY2lTZW5kU3RyaW5nLgoKCSogbXVsdGltZWRpYS90aW1lLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3ByZWFkIHRoZSB1c2Ugb2YgTU0gY3JpdCBzZWN0LgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIHNvbWUgTUNJIGZ1bmN0aW9ucyB0byBtY2kuYy4KCU5vdyBsb2FkcyBlcnJvciBtZXNzYWdlcyBmcm9tIHN0cmluZyB0YWJsZS4KCVNwcmVhZCB0aGUgdXNlIG9mIE1NIGNyaXQgc2VjdC4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgcGFyc2luZyAmIHN0b3Jpbmcgb2YgY29tbWFuZCB0YWJsZXMuCglNZXJnZWQgc29tZSBNQ0kgZnVuY3Rpb25zIGZyb20gbW1zeXN0ZW0uYy4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgc29tZSBubyBsb25nZXIgdXNlZCBwcm90b3R5cGVzLgoJQWRkZWQgY29tbWFuZCB0YWJsZXMgdG8gTUNJIHN0cnVjdHVyZS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWdneSBwcm90b3R5cGUuCgoJKiBkZWJ1Z2dlci90eXBlcy5jOiBLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgoJQXZvaWQgY3Jhc2hpbmcgb24gYSBiYWQgc3ltYm9sIGFkZHJlc3Mgb2YgMHgwMDAwLgoKCSogbWlzYy93MzJzeXMuYzogRml4ZWQgR2V0VzMyU3lzVmVyc2lvbjE2IHJldHVybiB0eXBlLgoKCSogaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tb2R1bGUuYywgcmVsYXkzMi91dHRodW5rLmMsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgaWYxNjMyL3dwcm9jcy5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIE1PRFVMRV9HZXRXbmRQcm9jRW50cnkxNigpLgoJVXNlIDMyLWJpdCB3aW5kb3cgcHJvY2VkdXJlcyBpbiBDT01NRExHIGluc3RlYWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBjdXQmcGFzdGUgYnVnLgoKCSogaW5jbHVkZS9kb2NvYmouaCwgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmgsIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHlzdG9yYWdlLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZGQgYSBmZXcgc3R1YnMsIHNvbWUgQysrIGNvbXBhdGliaWxpdHksIGFuZCBmaXggYSBmZXcgdHlwZXMuCgoJKiBpbmNsdWRlL2luaXRndWlkLmgsIG9sZS9ndWlkLmM6IEFsYmVydCBkZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCURlY2xhcmUgb25seSBvbmUgaW5zdGFuY2Ugb2YgR1VJRF9OVUxMLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogUGllcnJlIE1hZ2VhdSA8cGllcnJlQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgdmFyaW91cyBwcm9ibGVtIHdpdGggSW1hZ2VMaXN0X0RyYXcuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBTdGVwaGFuZSBMdXNzaWVyPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJUmUtZW5hYmxlIHRoZSBvd25lciB3aW5kb3cgaW4gdGhlIEVuZERpYWxvZygpLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBub3RpZmljYXRpb25zLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWx3YXlzIHJldHJpZXZlIENhbGxvdXQgcm91dGluZXMgdXNpbmcgR2V0UHJvY0FkZHJlc3MoKS4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJU2VuZCBXTV9DT05URVhUTUVOVSBvbiBXTV9SQlVUVE9OVVAsIG5vdCBXTV9SQlVUVE9ORE9XTi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBjb21waWxlciB3YXJuaW5nLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUxldCB0aHJvdWdoIG1vcmUgZmxhZ3MgdG8gRW51bVByaW50ZXJzLgoJRml4ZXMgZm9yIEdldFByaW50ZXIvR2V0UHJpbnRlckRyaXZlci4KCgkqIGdyYXBoaWNzL3BzZHJ2L2NvbG9yLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvcHMuYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUZpeCBzdHVwaWQgYHJ1YmJpc2ggYXQgZW5kIG9mICUlVGl0bGUnIGJ1Zy4KCURvbid0IGNvbXBsYWluIGFib3V0IHBhbGV0dGUgcmVsYXRpdmUgUkdCcy4KCUlmIG91dHB1dCBwYXJhbSB0byBDcmVhdGVEQyBpcyBOVUxMIGRlZmF1bHQgdG8gYExQVDE6JyAtIEhhY2suCgpGcmkgSnVsIDIzIDE5OjMzOjI0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5lX2dsLmg6CglMaW9uZWwgVWxtZXIgPGxpb25lbC51bG1lckBmcmVlLmZyPgoJQmV0dGVyIGRldGVjdGlvbiBvZiBPcGVuR0wuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBtaXNjL0F0dGljL2NhbGxiYWNrLmMsIHRvb2xzL2J1aWxkLmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFJldmVydGVkIENhbGxUbzE2IHJvdXRpbmVzIHRvIFNURENBTEwgY29udmVudGlvbi4KCgkqIG9iamVjdHMvZm9udC5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTdHJpbmcgdG8gR2V0VGV4dEV4dGVudFBvaW50IGlzIG5vdCBuZWNlc3NhcmlseSAwIHRlcm1pbmF0ZWQuCglGaXggZnVuY3Rpb24gbmFtZSBgMzIncyBpbiBjb21tZW50cyAtIEFQSSBuYW1pbmcgbWFkbmVzcyBtYWtlcyB0aGlzCgl3b3J0aHdoaWxlLgoKCSogZGxscy93aW5zcG9vbC9pbmZvLmMsIGdyYXBoaWNzL2RyaXZlci5jLCBncmFwaGljcy9wc2Rydi9SRUFETUUsIGluY2x1ZGUvd2luc3Bvb2wuaCwgcmVsYXkzMi9BdHRpYy93aW5zcG9vbC5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRW51bUpvYnMgc3R1Yi4KCVVwZGF0ZSBncmFwaGljcy9wc2Rydi9SRUFETUUuCglBZGQgd2FybmluZ3MgdG8gRFJJVkVSX0dldERyaXZlck5hbWUuCgoJKiB3aW5kb3dzL21kaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIHNvbWUgYmFkIHB0ciBvY2N1cnJlbmNlIGluIHRoaXMgY2xhc3MgV25kUHJvYy4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYywgd2luZG93cy94MTFkcnYvbWFpbi5jOgoJTGlvbmVsIFVsbWVyIDxsaW9uZWwudWxtZXJAZnJlZS5mcj4KCS0gQWRkZWQgYSBuZXcgb3B0aW9uICdub3hzaG0nCgktIEFkZGVkIGEgMTZicHAgLT4gMzIgYnBwIGNvbnZlcnNpb24gZnVuY3Rpb24KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglDaGFuZ2UgY29sb3IgZ3JheSB0ZXh0IHRvIDEyOCAxMjggMTI4IGZvciB3aW45eCBsb29rLgoKVHVlIEp1bCAyMCAxNToxMzoyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2NoZWR1bGVyL2RlYnVnZ2VyLmM6CglEbyBub3Qgb3V0cHV0IHRleHQgaW4gT3V0cHV0RGVidWdTdHJBVyB3aGVuIG5vdCBiZWluZyBkZWJ1Z2dlZAoKCSogd2luZG93cy9tZGkuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglNRElEZXN0cm95Q2hpbGQ6IE1ESSB3aW5kb3cgbWVudSBpdGVtIHdhcyBkZWxldGVkIG9ubHkgaWYgdGhlIGN1cnJlbnQKCWRlc3Ryb3llZCBjaGlsZCB3YXMgYWN0aXZlLgoKCSogZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZXNldCBkaXNhYmxlZCBzdHlsZSBmb3IgdGhlIGRpYWxvZyBib3hlcyBzZXQgb24gcHJvcGVydHkgcGFnZXMuCgoJKiB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvbmV3c3RydWMuaCwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuYywgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL0NIQU5HRVM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoJLSBHZW5lcmFsaXplZCB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiAyIGFuZCA0IGJ5dGUgaW50ZWdlcnMgc2xpZ2h0bHkgdGhyb3VnaAoJICBhIG5ldyBwYXJzZXIgc3RhdGUuIFRoZSBpcyBub3cgYSB3YXJuaW5nIHdoZW4gYSAyIGJ5dGUgaW50ZWdlciBpcyBsYXJnZXIKCSAgdGhhbiAxNiBiaXQgKGFuZCBpcyB0cnVuY2F0ZWQpLgoJLSBGaXhlZCBhIGNvdXBsZSBvZiBjb3NtZXRpYyB0aGluZ3MgaW4gdGhlIERMR0lOSVQgc3R1ZmYgc28gdGhhdCBkdW1waW5nIG9mCgkgIHRoaXMgdHlwZSB3aWxsIHdvcmsgYXMgZXhwZWN0ZWQuCgktIEFkZGVkIGdlbmVyYWxpemVkIGxhbmd1YWdlL3ZlcnNpb24vY2hhcmFjdGVyaXN0aWNzIHN1cHBvcnQgdG8gdGhlIERMR0lOSVQKCSAgcmVzb3VyY2UgdHlwZS4KCglVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CgktIEFkZGVkIHN1cHBvcnQgZm9yIERMR0lOSVQgcmVzb3VyY2UtdHlwZS4KCS0gQWRkZWQgc3RyaW5nIGNvbnRpbnVhdGlvbiBhbmQgZW1iZWRkZWQgcXVvdGluZy4KCS0gQWRkZWQgbnVtZXJpYyBJRHMgZm9yIGljb25zIGluIGNvbnRyb2xzLgoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBCdWdmaXg6IERpc3Rpbmd1aXNoIGJldHdlZW4gMiBhbmQgNCBieXRlIGludGVnZXJzIGluIFJDREFUQS4KClN1biBKdWwgMTggMTg6NDI6MjkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvQXR0aWMvc3RyaW5nLmMsIG1pc2MvTWFrZWZpbGUuaW46CglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglSZW1vdmUgc3RyaW5nLmMgYmVjYXVzZSBhbGwgb2YgaXRzIGZ1bmN0aW9ucyB3ZXJlIG1vdmVkIHRvIGNydGRsbC5jCgl3aGVyZSB0aGV5IGJlbG9uZ2VkLgoKCSogdG9vbHMvd3JjL2R1bXByZXMuYywgdG9vbHMvd3JjL2dlbnJlcy5jLCB0b29scy93cmMvbmV3c3RydWMuYywgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcHJlcHJvYy5jLCB0b29scy93cmMvcmVhZHJlcy5jLCB0b29scy93cmMvdXRpbHMuYywgdG9vbHMvd3JjL3dyYy5jLCB0b29scy93cmMvd3JpdGVyZXMuYywgZGVidWdnZXIvZGlzcGxheS5jLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmMsIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB3aXRoIEdOVSBDJ3MgLUktIG9wdGlvbi4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglXb3JrIGFyb3VuZCBnY2Mgc2lnMTEgZmF1bHQuCgoJKiBvYmplY3RzL2dkaW9iai5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHJvdW5kaW5nIGluIE11bERpdi4KCgkqIGdyYXBoaWNzL3BzZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9wc2Rydi9jbGlwcGluZy5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGluY2x1ZGUvcHNkcnYuaDoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CgktIGltcGxlbWVudGF0aW9uIG9mIFNldERldmljZUNsaXBwaW5nCgktIGNvb3JkaW5hdGUgc3lzdGVtIG9yaWdpbiBmaXgKCgkqIHdpbjMyL2tlcm5lbDMyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV29yay1hcm91bmQgZm9yIGNvbXBpbGVyIGJ1Zy4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3RyZWV2aWV3Lmg6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJLSBJbXBsZW1lbnRhdGlvbiBvZiBzaW1wbGUgY29tY3RsMzIgdjUuMCBjaGFuZ2VzLgoJLSBUVk1fU09SVENISUxEUkVOQ0IgYWxzbyBhY2NlcHRzIFRWSV9ST09UIGFzIGEgdmFsaWQgaFBhcmVudC4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgcG9pbnRlciB2YWxpZGF0aW9uIGFuZCBhZGRpdGlvbmFsIHNhbml0eSBjaGVjayB0byBJc1ZhbGlkU2lkKCkuCgoJKiBjb250cm9scy91aXRvb2xzLmM6IERlbm5pcyBCanxya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglTbWFsbCBmaXggaW4gVUlUT09MUzk1X0RyYXdSZWN0RWRnZSgpLgoJQWxzbyBhIGZpeCB0byBkcmF3IHNjcm9sbGJhci1idXR0b25zIG1vcmUgbGlrZSBpbiB3aW45eC4KCgkqIHdpbmRvd3MvcGFpbnRpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglJbiBXSU5fVXBkYXRlTkNSZ24sIGRvIG5vdCBzZW5kIGluIFdNX05DUEFJTlQgYSByZWdpb24gdGhhdCBpcyB1c2VkCglhZnRlcndhcmRzLCBidXQgYSBjb3B5IG9mIGl0LgoKCSogb2JqZWN0cy9yZWdpb24uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGVjayBiZXR0ZXIgdGhhdCBoYW5kbGVzIGFyZSBhY3R1YWwgaGFuZGxlcyB0byBhIHJlZ2lvbi4KCgkqIHdpbmRvd3MvZGNlLmM6IExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCVN0b3AgRENFX0dldFZpc1JlY3QgZGVyZWZlcmVuY2luZyBhIG51bGwgd25kUHRyLgoKCSogY29uZmlndXJlLmluLCBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vd2luZS5jb25mLm1hbi5pbiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbi5pbiwgTWFrZS5ydWxlcy5pbiwgUkVBRE1FLCBjb25maWd1cmU6CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglVcGRhdGVkIFJFQURNRSBhbmQgbWFuIHBhZ2UuCglTcGxpdCBkb2N1bWVudGF0aW9uIGZvciB3aW5lLmNvbmYgaW50byBuZXcgd2luZS5jb25mKDUpIG1hbnBhZ2UuCgoJKiBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9jbGlwYm9hcmQuYywgb2xlL29sZTIuYywgb2xlL29sZTJzdHVicy5jLCBvbGUvb2xlY2xpLmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBPTEUgQ2xpcGJvYXJkIEFQSS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEFiZXkgR2VvcmdlIDxhYmV5QG1hY2FkYW1pYW4uY29tPgoJVmFsaWRhdGUgdGhlIHBhcmVudCB3aXRoIHRoZSBjaGlsZCB3aW5kb3cgY2xpZW50IHJlY3RhbmdsZSB3aGVuIHRoZQoJcGFyZW50J3MgdXBkYXRlIHJlZ2lvbiBpcyBub3QgZW1wdHkuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL3BhaW50aW5nLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglEZWxheSBXTV9OQ1BBSU5UIG1lc3NhZ2UgdW50aWwgdGhlICJwYWludGVyJ3MgYWxnb3JpdGhtIiBraWNrcyBpbi4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGZha2UgV01fTEJVVFRPTlVQIG1lc3NhZ2UuCgoJKiBpbmNsdWRlL3dpbnZlcnNpb24uaCwgbWlzYy92ZXJzaW9uLmM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIHZlcnNpb24gaW5mb3JtYXRpb24gZm9yIFdpbjk4LgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJTWFjcm8gZGVmaW5pdGlvbnMgdXNlZCBTTkRNU0cgaW5zdGVhZCBvZiBTZW5kTWVzc2FnZVtBV10uIEJhZC4KCgkqIG1pc2MvbWFpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCWRlYnVnXyhzbm9vcHxyZWxheSlfKGV4Y2x1ZGV8aW5jbHVkZSlsaXN0ID0+IGZpeGVkIGFsbG9jYXRpb24sIG1vZHVsZXMKCWFyZSBub3cgc3RvcmVkIHVwcGVyY2FzZS4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgQlNfSUNPTiBzdHlsZS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ3JlYXRlRGlhbG9nUGFyYW1BIHNob3VsZCBub3QgY2FsbCBDcmVhdGVEaWFsb2dQYXJhbVcsIGJlY2F1c2UKCXRoYXQnZCBjcmVhdGUgYSBkaWFsb2cgYm94IHdpdGggYSBVbmljb2RlIGRpYWxvZyBwcm9jZWR1cmUuLi4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBEZW5uaXMgQmp8cmtsdW5kIDxkZW5uaXNiQGNzLmNoYWxtZXJzLnNlPgoJV2luOXggbG9vayAmIGZlZWwgb24gc2Nyb2xsYmFycy4KCgkqIGdyYXBoaWNzL3BzZHJ2L1JFQURNRSwgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUludHJvZHVjZWQgYSBbcHNkcnZdIHNlY3Rpb24gaW4gd2luZS5jb25mIHdpdGggYSBwcGRmaWxlIHZhbHVlCglzcGVjaWZ5aW5nIHRoZSBwYXRoIGFuZCBuYW1lIG9mIHRoZSBQUEQgZmlsZS4KCgkqIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGluY2x1ZGUvdXBkb3duLmg6CglTeWx2YWluIFN0LUdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiB0aGUgdXBkb3duIGJ1ZGR5IHdpbmRwcm9jIHN1YmNsYXNzaW5nIGZvciB0aGUKCWhhbmRsaW5nIG9mIGtleWJvYXJkIHVwIGFuZCBkb3duIGFycm93LgoKCSogREVWRUxPUEVSUy1ISU5UUzogSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJVXBkYXRlZCBkb2N1bWVudGF0aW9uIHRvIHJlZmxlY3QgcmVuYW1lZCBoZWFkZXIuCgoJKiBtaXNjL3dpbnNvY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBtaXNzaW5nIGluY2x1ZGUgbmV0aW5ldC90Y3AuaCwgZm9yIFRDUF9OT0RFTEFZLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUdldEljb24gYnVnIGZpeC4KClRodSBKdWwgMTUgMTY6MDk6MDUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9tb2R1bGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBXSU5BUEkgZm9yIEVudHJ5QWRkclByb2MuCgoJKiBtaXNjL2RkZW1sLmM6IEtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglNaW5vciBidWcgZml4ZXMgaW4gRGRlTmFtZVNlcnZpY2UsIGFsc28gY2hhbmdlcyB0byBtb3ZlIHRvd2FyZHMKCXByb2Nlc3Mtc2FmZSBjb2RlLgoKCSogY29udHJvbHMvYnV0dG9uLmM6IERlbm5pcyBCanxya2x1bmQgPGRlbm5pc2JAY3MuY2hhbG1lcnMuc2U+CglXaW45eCBsb29rICYgZmVlbCBvbiBidXR0b25zIGFuZCBhIGZpeCBmb3Igb3duZXJkcmF3biBidXR0b25zCgkoYmFja2dyb3VuZCBzZXQgdG8gQ09MT1JfQlRORkFDRSkuCgoJKiBpZjE2MzIva2VybmVsLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUdsb2JhbFNtYXJ0UGFnZVVubG9jaygpIHN0dWIgYWRkZWQuCgoJKiBtaXNjZW11L0F0dGljL2VtdWxhdGUuYywgbWlzY2VtdS9NYWtlZmlsZS5pbiwgbWlzY2VtdS9tYWluLmMsIHJlbGF5MzIvTWFrZWZpbGUuaW4sIHRvb2xzL2J1aWxkLmMsIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbiwgZGxscy93aW44N2VtLy5jdnNpZ25vcmUsIGRsbHMvd2luODdlbS9NYWtlZmlsZS5pbiwgZGxscy93aW44N2VtL2VtdWxhdGUuYywgZ3JhcGhpY3Mvd2luMTZkcnYvTWFrZWZpbGUuaW4sIGlmMTYzMi9NYWtlZmlsZS5pbiwgbWVtb3J5L2luc3RyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBwb3NpdGlvbi1pbmRlcGVuZGVudCBjb2RlIGluIGFzc2VtYmx5IGdsdWUgd2hlbiBidWlsZGluZyAuc28uCglJbmNsdWRlIGlmMTYzMi8gYW5kIGdyYXBoaWNzL3dpbjE2ZHJ2LyBpbnRvIFdpbmVMaWIuCglNb3ZlIG1pc2NlbXUvZW11bGF0ZS5jIGludG8gZGxscy93aW44N2VtLy4KCgkqIGluY2x1ZGUvbXVsdGltZWRpYS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgd2F5IG9mIGFsbG9jYXRpb24gb3BlbiBtY2kgZHJpdmVycyAoYXJyYXkgPT4gbGlzdCk7IHRoaXMgbGlzdAoJaXMgbm93IHN0b3JlZCBvbiBhIHBlciBwcm9jZXNzIGJhc2lzLgoKCSogbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpY2RhLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgZml4ZWQgc2l6ZSBhcnJheSB0byBzdG9yZSBzcGVjaWZpYyBkYXRhIChub3cgdXNpbmcKCW1jaShTZXR8R2V0KURyaXZlckRhdGEgdG8gc3RvcmUgc3BlY2lmaWMgZGF0YSkuCglNYWtlIHVzZSBvZiBkZWZhdWx0IGRlYnVndG9vbHMuaCBjaGFubmVsLgoJQWRkZWQgQ0FMTEJBQ0sgYXR0cmlidXRlIHRvIERyaXZlclByb2MuCgoJKiBtdWx0aW1lZGlhL21jaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgd2F5IG9mIGFsbG9jYXRpb24gb3BlbiBtY2kgZHJpdmVycyAoYXJyYXkgPT4gbGlzdCkuCglGaXJzdCB2YWxpZCBJRCBmb3IgbWNpIGRldmljZXMgaXMgbm93IDEgKHNvbWUgcHJvZ3Mgd2VyZSB0ZXN0aW5nIHRoaXMKCXZhbHVlKS4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIG1jaSBjb21tYW5kIHRhYmxlIHJlc291cmNlcy4KCUhhbmRsZWQgY2xvc2luZyBvbiBNQ0lfQUxMLgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBmaXhlZCBzaXplIGFycmF5IHRvIHN0b3JlIHNwZWNpZmljIGRhdGEgKG5vdyB1c2luZwoJbWNpKFNldHxHZXQpRHJpdmVyRGF0YSB0byBzdG9yZSBzcGVjaWZpYyBkYXRhKS4KCURlZmVycmVkIG9wZW5pbmcgb2YgbG93LWxldmVsIGRldmljZSB1bnRpbCBwbGF5IGlzIHJlcXVlc3RlZC4KCgkqIG11bHRpbWVkaWEvQXR0aWMvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcmV0dXJuIHZhbHVlIGZvciAnb3BlbicgY29tbWFuZC4KCUNoYW5nZWQgd2F5IG9mIGFsbG9jYXRpb24gb3BlbiBtY2kgZHJpdmVycyAoYXJyYXkgPT4gbGlzdCkuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIGZpeGVkIHNpemUgYXJyYXkgdG8gc3RvcmUgc3BlY2lmaWMgZGF0YSAobm93IHVzaW5nCgltY2koU2V0fEdldClEcml2ZXJEYXRhIHRvIHN0b3JlIHNwZWNpZmljIGRhdGEpLgoJRml4ZWQgbW1pbyBjaHVuayBsb29rdXAgb24gb2RkIHNpemUgJ2ZtdCAnIGNodW5rcy4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVuaWZvcm1pemVkIHVzZSBvZiBmZCB0byBtaWRpIGRldmljZS4KCU5vdyBhbGxvY2F0aW5nIG1lbW9yeSBvbiBzeXN0ZW0gaGVhcC4KCUZpeGVkIGJ1ZyB3aGVuIHN0b3BwaW5nIGFsbCBub3Rlcy4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb3NtZXRpYyBmaXhlcy4KCUNoYW5nZWQgd2F5IG9mIGFsbG9jYXRpb24gb3BlbiBtY2kgZHJpdmVycyAoYXJyYXkgPT4gbGlzdCkuCglTdGFydGVkIGltcGxlbWVudGluZyBtY2kgY29tbWFuZCB0YWJsZSByZXNvdXJjZXMuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgY2FsbGluZyBtbSB0aW1lcnMgY2FsbGJhY2tzIHdpdGggbW0gdGltZXIgY3JpdCBzZWN0IGxvY2tlZC4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFUlJPUl9NT1JFX0RBVEEgcmVxdWlyZXMgdG8gd3JpdGUgdGhlIG5lZWRlZCBudW1iZXIgb2YgYnl0ZXMgaW50byB0aGUKCWxwY2NoWCB2YWx1ZSAodmVyaWZpZWQgYWdhaW5zdCBOVDMuNTEgYWR2YXBpMzIuZGxsKS4KCgkqIGluY2x1ZGUvd2lubnQuaCwgd2luMzIvZGV2aWNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHNvbWUgQ09OVEVYVDg2IHZzLiBDT05URVhUIG1pc21hdGNoZXMuCgoJKiBpbmNsdWRlL25lZXhlLmgsIGxvYWRlci9uZS9zZWdtZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIDMyLWJpdCBORSBjb2RlIHNlZ21lbnRzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRml4IGEgaGFuZyB3aGVuIHdlIHByb2Nlc3MgV01fU1RZTEVDSEFOR0VELgoJU21hbGwgb3B0aW1pemF0aW9uIGluIFRSRUVWSUVXX0RyYXdJdGVtLgoJRml4IGRlYnVnZ2luZyBjcmFzaCBpbiBUUkVFVklFV19FeHBhbmQuCgpNb24gSnVsIDEyIDEzOjQ2OjM4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG1pc3NpbmcgcHJvdG90eXBlIGZvciBJTEZpbmRDaGlsZCgpLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBsb2FkZXIvZG9zL2Rvc21vZC5jLCBtaXNjL25ldHdvcmsuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ29tcGlsZXIgd2FybmluZ3MgZml4LgoKCSogbWlzYy9jb21tLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRHVtYiBmaXhlcy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgYnVncyBpbnRyb2R1Y2VkIGJ5ICdyZWdpc3RlcicgYW5kICdyZXR1cm4nIGZ1bmN0aW9uIGNoYW5nZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIERpcmVjdERyYXdTdXJmYWNlOjpGbGlwLCBkbyBub3QgY2hhbmdlIGZsYWdzLCBleGNoYW5nZSB0aGUgbG93CglsZXZlbCBwaHlzaWNhbCBzdXJmYWNlcyAodmVyaWZpZWQgZm9yIFhMSUIgd2l0aCBXQyBQcm9waGVjeSkuCgpTdW4gSnVsIDExIDE3OjIwOjA2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbi5jLCBtaXNjL3N5c3RlbS5jLCBtaXNjL3Rvb2xoZWxwLmMsIG1pc2MvdzMyc3lzLmMsIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jLCB3aW4zMi9rZXJuZWwzMi5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9sb2NhbC5jLCBpbmNsdWRlL2J1aWx0aW4xNi5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci90YXNrLmMsIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL2tleWJvYXJkLnNwZWMsIGlmMTYzMi9zeXN0ZW0uc3BlYywgaWYxNjMyL3RodW5rLmMsIGlmMTYzMi90b29saGVscC5zcGVjLCBpZjE2MzIvdXNlci5zcGVjLCBpZjE2MzIvdzMyc3lzLnNwZWMsIGlmMTYzMi9kdW1teS5jOgoJVGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG5ldyByZWdpc3RlcnMgc2F2ZWQgaW4gdGhlIFNUQUNLMTZGUkFNRSB0byB0dXJuCglzb21lICdyZWdpc3RlcicgZnVuY3Rpb25zIGludG8gbm9ybWFsIGZ1bmN0aW9ucy4KCVJlbW92ZWQgdGhlIGZldyByZW1haW5pbmcgJ3JldHVybicgZnVuY3Rpb25zIHRvIHNpbXBsaWZ5IHJlbGF5CgloYW5kbGluZy4KCgkqIGlwYy9BdHRpYy9oYXNoX3Rlc3QuYywgaXBjL0F0dGljL3J1bl90ZXN0cywgaXBjL0F0dGljL3NobV9ibG9jay5jLCBpcGMvQXR0aWMvc2htX2ZyYWdtZW50LmMsIGlwYy9BdHRpYy9zaG1fZnJhZ21lbnRfdGVzdC5jLCBpcGMvQXR0aWMvc2htX21haW5fYmxrLmMsIGlwYy9BdHRpYy9zaG1fc2VtYXBoLmMsIGlwYy9BdHRpYy9zaG1fc2VtYXBoX3Rlc3QuYywgaXBjL0F0dGljL3dpbmVfdGVzdF9zdHViLmMsIGxvYWRlci9zaWduYWwuYywgbG9hZGVyL3Rhc2suYywgbWVtb3J5L2F0b20uYywgbWVtb3J5L2dsb2JhbC5jLCBtaXNjL2RkZW1sLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvQXR0aWMvZGRlX2F0b20uaCwgaW5jbHVkZS9BdHRpYy9kZGVfbWVtLmgsIGluY2x1ZGUvQXR0aWMvZGRlX3Byb2MuaCwgaW5jbHVkZS9BdHRpYy9zaG1fYmxvY2suaCwgaW5jbHVkZS9BdHRpYy9zaG1fZnJhZ21lbnQuaCwgaW5jbHVkZS9BdHRpYy9zaG1fbWFpbl9ibGsuaCwgaW5jbHVkZS9BdHRpYy9zaG1fc2VtYXBoLmgsIGluY2x1ZGUvZGRlLmgsIGlwYy9BdHRpYy8uY3ZzaWdub3JlLCBpcGMvQXR0aWMvTWFrZWZpbGUuaW4sIGlwYy9BdHRpYy9SRUFETUUsIGlwYy9BdHRpYy9URVNUX0ZSQUdNRU5ULnN0ZCwgaXBjL0F0dGljL2JpdF9hcnJheS5jLCBpcGMvQXR0aWMvYml0X2FycmF5X3Rlc3QuYywgaXBjL0F0dGljL2RkZS50ZXgsIGlwYy9BdHRpYy9kZGVfYXRvbS5jLCBpcGMvQXR0aWMvZGRlX2F0b21fdGVzdC5jLCBpcGMvQXR0aWMvZGRlX21lbS5jLCBpcGMvQXR0aWMvZGRlX21lbV90ZXN0LmMsIGlwYy9BdHRpYy9kZGVfcHJvYy5jLCBpcGMvQXR0aWMvZGRlX3Byb2NfdGVzdC5jLCBpcGMvQXR0aWMvZ2VuZXJpY19oYXNoLmMsIGlwYy9BdHRpYy9nZW5lcmljX2hhc2guaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB0aGUgb2xkLCBoaXN0b3JpY2FsIGFuZCBubyBsb25nZXIgd29ya2luZyBJUEMgc3VwcG9ydC4KCgkqIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGlmMTYzMi9yZWxheS5jLCBpZjE2MzIvc25vb3AuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvYnVpbHRpbjE2LmgsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9zdGFja2ZyYW1lLmgsIG1pc2MvQXR0aWMvY2FsbGJhY2suYywgbWlzY2VtdS9tYWluLmMsIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHRvb2xzL2J1aWxkLmMsIE1ha2UucnVsZXMuaW46CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vZHVsYXJpemVkIENhbGxGcm9tL1RvMTYgcm91dGluZXMuICBBZGFwdGVkIGRlcGVuZGVudCByb3V0aW5lcywKCTE2LWJpdCBzbm9vcC9yZWxheSBkZWJ1Z2dpbmcsIGFuZCBtYWtlIHJ1bGVzLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmV2ZXJ0IGxhc3QgY2hhbmdlIGluIHdpbmRvdyBhY3RpdmF0aW9uIG9uIG1vdXNlIGNsaWNrLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4ZWQgYSBjYXNlIHdoZW4gR2xvYmFsU2l6ZSBkaWQgbm90IHJldHVybiB6ZXJvIGFmdGVyIGFuIGVycm9yLgoKU2F0IEp1bCAxMCAxMzoxNjo1NiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogc2VydmVyL3NvY2tldC5jOiBIb3dhcmQgQWJyYW1zIDxob3dhcmRAY3MubnBzLm5hdnkubWlsPgoJUmVuYW1lZCBzdGF0aWMgZ2xvYmFsIHZhcmlhYmxlICdpb3ZlYycgdG8gJ215aW92ZWMnLgoKCSogd2luZG93cy9kaW5wdXQuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9yZWdpc3RyeS5jLCBtaXNjL3dpbnNvY2suYywgbXVsdGltZWRpYS9qb3lzdGljay5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3RocmVhZC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCB3aW4zMi9maWxlLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkZWJ1Z2dlci9icmVhay5jLCBkZWJ1Z2dlci9tc2MuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGZpbGVzL2RpcmVjdG9yeS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgaW5jbHVkZS93aW5kZWYuaCwgbG9hZGVyL3BlX2ltYWdlLmM6CglIb3dhcmQgQWJyYW1zIDxob3dhcmRAY3MubnBzLm5hdnkubWlsPgoJQWRkZWQgY2hlY2tzIGZvciBzeXMvZXJybm8uaCwgc3lzL3NpZ25hbC5oIGFuZCBzeXMvbW1hbi5oLgoKCSogd2luZG93cy9kaWFsb2cuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDcmVhdGUgZGlhbG9nIHdpbmRvdyB1c2luZyBDcmVhdGVXaW5kb3dFeDE2L1cgZGVwZW5kaW5nIG9uIHRlbXBsYXRlCgl0eXBlLCBub3QgZGlhbG9nIHByb2NlZHVyZSB0eXBlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglNYWRlIElTaGVsbEZvbGRlcjo6Zm5QYXJzZURpc3BsYXlOYW1lIHJldHVybiBhIHJlbGF0aXZlIHBpZGwuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbWN0bDMyLmgsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9yc3JjLnJjLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvbW9udGhjYWwuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGaXJzdCB0cnkgYXQgdGhlIG1vbnRoIGNhbGVuZGFyIGNvbW1vbiBjb250cm9sLiBNYWluIGZlYXR1cmVzCgliYXNpY2FsbHkgT0suCgoJKiBncmFwaGljcy9wc2Rydi9pbml0LmMsIGluY2x1ZGUvd2luc3Bvb2wuaCwgZGxscy93aW5zcG9vbC9pbmZvLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCBHZXRQcmludGVyQSBhbmQgR2V0UHJpbnRlckRyaXZlckEuCgoJKiBjb250cm9scy9idXR0b24uYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIEJOX0NMSUNLRUQgbm90aWZpY2F0aW9uIGluIFdNX1NFVEZPQ1VTLgoKCSogZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGRsbHMvc2hlbGwzMi9zaHJlcy5yYywgaW5jbHVkZS9kb2NvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMuCgoJKiByZWxheTMyL0F0dGljL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIFN0clRvT2xlU3RyTi4KCUZpeGVkIGNyYXNoIGluIFNoZWxsRXhlY3V0ZUV4LgoJSW1wbGVtZW50ZWQgU0hSZWdPcGVuS2V5QSwgU0hSZWdRdWVyeVZhbHVlRXhBLCBTdHJUb09sZVN0cltBfFddLgoJU3R1YnMgZm9yIERvRW52aXJvbm1lbnRTdWJzdFtBfFddLCBQYXRoUHJvY2Vzc0NvbW1hbmRbQXxXXS4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL21lbW9yeXN0cmVhbS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJU3RyZWFtIGludGVyZmFjZSBmb3IgZmlsZSBhY2Nlc3MuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBjcmFzaCBkdXJpbmcgc2Vjb25kIERMTF9QUk9DRVNTX0RFVEFDSCBpZiB0aGUgZGxsCglyZWZjb3VudCByZWFjaGVkIHplcm8gYWZ0ZXIgdGhlIHNlY29uZCBvbmUgKG1lbW9yeSBmcmVlZCB0d2ljZSkuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTb21lIG1vcmUgcGlkbC10eXBlcy4KCUltcGxlbWVudGF0aW9uIG9mIElMSXNQYXJlbnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvbXBsZXRlbHkgcmV3cml0dGVuLiBJUGVyc2lzdFN0cmVhbSBpbnRlcmZhY2UgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRExMR2V0Q2xhc3NPYmplY3QvQ2xhc3NmYWN0b3J5OiBjcmVhdGUgb2JqZWN0cyBieSBDTFNJRCBub3QgSUlELgoKCSogbWlzYy9tYWluLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBleGl0KCkgcmVwbGFjZWQgYnkgRXhpdFByb2Nlc3MoKS4KCgkqIG1lbW9yeS9sb2NhbC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogY29ycmVjdGx5IGNvcGUgd2l0aCBlbmQgPiAweGZmZmUuCgoJKiBsaWJyYXJ5L3dpbmVzdHViLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgRXhpdFByb2Nlc3MoKSBhZnRlciBXaW5NYWluKCkgcmV0dXJucy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wcm92ZWQgYmVoYXZpb3VyIG9mIEdldE1vZHVsZUhhbmRsZTE2IHcuci50IGR1bW15IG1vZHVsZXMuCglEb24ndCB0cnkgdG8gY2FsbCBXRVAgb2YgZHVtbXkgbW9kdWxlcyBpbiBGcmVlTGlicmFyeTE2KCkuCgoJKiBpbmNsdWRlL3dpbnJlZy5oLCBtaXNjL3JlZ2lzdHJ5LmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBgY29uc3QncyB0byBzb21lIHJlZ2lzdHJ5IEFQSSBmdW5jdGlvbnMuCgoJKiB3aW5lZGVmYXVsdC5yZWc6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgYSBjb3VwbGUgb2YgRGlyZWN0WCBDTFNJRCBlbnRyaWVzLiBUaGlzIG1ha2VzIFVucmVhbCBjb21wbGV0ZWx5CglpbmRlcGVuZGVudCBvZiBhIHdpbmRvd3MgaW5zdGFsbGF0aW9uLgoKCSogb2xlL29sZTJubHMuYzogRGF2ZSBQaWNrbGVzIDxkYXZlcEBudWdhdGUuZGVtb24uY28udWs+CglHZXRUaW1lRm9ybWF0KCkgc2hvdWxkIHJldHVybiBMb2NhbFRpbWUgbm90IFN5c3RlbVRpbWUuCgoJKiBwcm9ncmFtcy93Y21kL0NoYW5nZUxvZywgcHJvZ3JhbXMvd2NtZC9SRUFETUUsIHByb2dyYW1zL3djbWQvYmF0Y2guYywgcHJvZ3JhbXMvd2NtZC9idWlsdGlucy5jLCBwcm9ncmFtcy93Y21kL2RpcmVjdG9yeS5jLCBwcm9ncmFtcy93Y21kL3djbWQuaCwgcHJvZ3JhbXMvd2NtZC93Y21kbWFpbi5jLCBwcm9ncmFtcy93Y21kL3djbWRyYy5yYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJRk9SIGFuZCBJRiBjb21tYW5kcyBhZGRlZC4KCU1PVkUgY29tbWFuZCBhZGRlZCwgYnV0IG5vIHdpbGRjYXJkIHN1cHBvcnQuCglSZWRpcmVjdGlvbiBhZGRlZC4KCUZpeGVkIFRJTUUgKHdhcyByZXBvcnRpbmcgaW4gR01UKS4KCU1vcmUgaGVscCB0ZXh0LgoKCSogZGxscy9jb21jdGwzMi90YWIuYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglTb21ldGltZXMgdGhlIHRleHQgb24gYSB0YWIgY29udHJvbCBnb3QgdHJ1bmNhdGVkLgoKCSogY29udHJvbHMvY29tYm8uYzogQWJleSBHZW9yZ2UgPGFiZXlAbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgaGVpZ2h0IG9mIHRoZSBkcm9wcGVkIGxpc3Qgd2hlbiB0aGVyZSBhcmUgZmV3IGl0ZW1zIGluIHRoZQoJbGlzdC4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3gxMWRydi5oLCBzY2hlZHVsZXIvc3luY2hyby5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgYWxsIEVWRU5UX1N5bmNocm9uaXplKCBGQUxTRSApIGNhbGxzOyB1c2UgYSBwZXJpb2RpYyBjYWxsYmFjawoJY2FsbGluZyBYRmx1c2goKSBpbnN0ZWFkLgoKCSogaW5jbHVkZS9wc2Rydi5oLCBncmFwaGljcy9wc2Rydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvcHNkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3BzZHJ2L2JpdG1hcC5jLCBncmFwaGljcy9wc2Rydi9icnVzaC5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmM6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGRlZCBwYXR0ZXJuZWQgYnJ1c2hlcyAobGV2ZWwgMiBQb3N0U2NyaXB0IG9ubHkpLgoJU2ltcGxlIFBhdEJsdCBmb3IgUEFUQ09QWSwgV0hJVEVORVNTIGFuZCBCTEFDS05FU1MuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglJbXBsZW1lbnRhdGlvbiBvZiBUVk1fU09SVENISUxEUkVOLiBNYXNzYWdlZCBUVk1fU09SVENISUxEUkVOQ0IgYSBiaXQKCXRvIHVzZSB0aGUgc2FtZSBjb2RlIHBhdGguCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeCBJbml0VGFzaygpIHRvIHdvcmsgaWYgREdST1VQIHdhcyBtYW51YWxseSByZXNpemVkLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCByZWxheTMyL0F0dGljL2FkdmFwaTMyLnNwZWM6CglJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBzdHViIGZvciBTZXRUaHJlYWRUb2tlbigpLCByZXF1aXJlZCBieSBPZmZpY2UgMjAwMC4KCgkqIGluY2x1ZGUvY29tbWRsZy5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IENPTU1ETEcgaG9vayBwcm9jZWR1cmVzIHdlcmUgbm90IENBTExCQUNLLgoKCSogb2xlL3N0Z19zdHJlYW0uYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJdCBpcyBwb3NzaWJsZSBmb3IgYSBzdHJlYW0gdG8gaGF2ZSBib3RoIHNtYWxsIGJsb2NrIGFuZCBiaWcgYmxvY2sKCWNoYWluIGFzIE5VTEwuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFkZSBzdHJpbmcgY29tcGFyZSBjYXNlIGluc2Vuc2l0aXZlIGluIEdldE1vZHVsZUhhbmRsZTE2KCkgYXMgYQoJcXVpY2sgZml4IGZvciBXaW5Xb3JkIDYuCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQWRkZWQgc3R1YiBmb3IgV05ldEdldFVuaXZlcnNhbE5hbWVbQXxXXS4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIGNyYXNoIGR1ZSB0byBpbnZhbGlkIEdESV9PYmouCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgY3Jhc2ggZHVlIHRvIGludmFsaWQgcG9pbnRlci4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEp1bCAgNCAxNjowOToyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy8qLmMsIG9sZS8qLmMsIGZpbGVzLyouYywgbXVsdGltZWRpYS8qLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UsIHVzaW5nIHNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpawoJU3RyaWR2YWxsLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5yZWcuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIE1ha2VmaWxlLmluLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2Jhc2V0c2QuaCwgaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCBpbmNsdWRlL3dpbmJhc2UuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RhcnRlZCBvbiBhbiBpbXBsZW1lbnRhdGlvbiBvZiBXaW42NCBmb3IgdXNlIG9uIDY0IGJpdCBwbGF0Zm9ybXMuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVdpbmRvd3Mgc2hvdWxkIGJlIGFjdGl2YXRlZCBpbiB0aGVzZSBjYXNlczoKCTEtIHdoZW4gd2UgY2xpY2sgb24gbm9uIGFjdGl2ZSB3aW5kb3cuCgkyLSB3aGVuIHdlIGNhbmNlbCBhIG1vdmluZyBvciByZXNpemluZyBvZiBhIG5vbiBhY3RpdmUgd2luZG93LgoKCSogZG9jdW1lbnRhdGlvbi9kaXN0cmlidXRvcnM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJQWRkZWQgc2FtcGxlIHdpbmUuY29uZi4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUva2V5Ym9hcmQuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgY29kZSB0byB0aGUgWDExIGRyaXZlci4KCgkqIGluY2x1ZGUvd2ludXNlci5oLCBsb2FkZXIvcmVzb3VyY2UuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCUpvc2h1YSBUaGllbGVuIDx0aGllbGVuQG5ldHBlcnNvbi5uZXQ+CglGaXhlZCBEZXN0cm95QWNjZWxlcmF0b3JUYWJsZSBhbmQgaW1wbGVtZW50ZWQgQ3JlYXRlQWNjZWxlcmF0b3JUYWJsZVcuCgoJKiB3aW5kb3dzL3dpbi5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglXSU5fRmluZFdpbmRvdzogdXNlIEdldEV4ZXB0cihwV25kLT5oSW5zdGFuY2UpIGZvciBDTEFTU19GaW5kQ2xhc3NCeUF0b20uCgoJKiBjb250cm9scy9zY3JvbGwuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBjaGVjayBmb3Igd2hldGhlciB0byBjYWxsIFNldFdpbmRvd1BvcyB3aGVuIHNob3dpbmcgYSB3aW5kb3cKCXNjcm9sbCBiYXIuCgoJKiBvbGUvdHlwZWxpYi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBjb21wbGV0ZSBsY2lkIG9yIGp1c3QgdGhlIHByaW1hcnkgbGFuZ3VhZ2UgaWQgaW4gdGhlCglyZWdpc3RyeSBsb29rdXBzIChmaXhlcyBvbmUgRmlyc3RDbGFzc0NsaWVudCAzMiBwcm9ibGVtKS4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBQZXIgxW5nc3Ry9m0gPHBhbmdAbWJveDMwNC5zd2lwbmV0LnNlPgoJRml4ZWQgYSBwcm9ibGVtIHdpdGggYXBwcyB0aGF0IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW91ciBvbgoJV01fTU9VU0VBQ1RJVkFURSBtZXNzYWdlIChtYWluIHdpbmRvdyB3YXMgbm90IGFjdGl2YXRlZCkuCgoJKiBsb2FkZXIvcGVfcmVzb3VyY2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXaGVuIGVudW1lcmF0aW5nIHJlc291cmNlLCBvbmx5IHVzZSB0aGUgbG93ZXIgMzEgYml0IG9mIHRoZSBuYW1lIGFzCgl0aGUgb2Zmc2V0IChmb3IgdGhlIGhpZ2hlc3QgYml0IGlzICcxJykuIFNob3VsZCBmaXggd2luZS1uZXQvMjU3LgoKCSogcmVsYXkzMi9udGRsbC5zcGVjLCB0b29scy93cmMvd3JpdGVyZXMuYywgZGxscy9udGRsbC9ydGwuYywgbWlzYy93c3ByaW50Zi5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZXMgZm9yIGNvbXBpbGUgb24gbm9uLUludGVsIHBsYXRmb3Jtcy4KCgkqIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL250c2VjYXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmgsIGluY2x1ZGUvd2luc3ZjLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkL21vdmVkL2FkZGVkIG1pc3Npbmcvd3JvbmcgZnVuY3Rpb24gcHJvdG90eXBlcy4KCgkqIGRsbHMvY29tbWRsZy9jZGxnX0RhLnJjLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9pbnRlcm5hdGlvbmFsaXNhdGlvbiwgcHJvZ3JhbXMvcHJvZ21hbi9EYS5yYywgcmVzb3VyY2VzL3N5c3Jlc19EYS5yYzoKCUhlbnJpayBPbHNlbiA8aGVucmlrQGlhZXN0ZS5kaz4KCUNsZWFudXAgb2YgdGhlIERhbmlzaCBzdXBwb3J0LgoKCSogd2luZG93cy93aW5wb3MuYzogWXV4aSBaaGFuZyA8eXV4aXpAY29yZWwuY2E+CglGaXggYSBidWcgaW4gU2V0V2luZG93UG9zIHRvIHByZXZlbnQgcGFyZW50IGZyb20gZXJhc2luZyBpdHMgY2hpbGQKCXBhaW50aW5nIGFyZWEgd2hlbiBwYXJlbnQgd2luZG93IGFuZCBjaGlsZCB3aW5kb3cgZG9uJ3QgaGF2ZQoJV1NfQ0xJUENISUxEUkVOIGFuZCBXU19DTElQU0lCTElOR1MuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBZdXhpIFpoYW5nIDx5dXhpekBjb3JlbC5jYT4KCU1ha2UgZGVmd25kcHJvYyBlcmFzZSB0aGUgY29ycmVjdCBsb2NhdGlvbi4KClNhdCBKdWwgIDMgMTY6MDE6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHJlbGF5MzIvY3J0ZGxsLnNwZWMsIHdpbmRvd3MvZGlucHV0LmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL3dpbi5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtaXNjL2NydGRsbC5jLCBtaXNjL3NoZWxsLmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIGRsbHMvYWR2YXBpMzIvYWR2YXBpLmMsIGRsbHMvYWR2YXBpMzIvZXZlbnRsb2cuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCXNvbWUgc21hbGwgaW5jbHVkZSBmaXhlcywgc29tZSBjaGVja3MgZm9yIE5VTEwgcHRycywKCWxvYWRlci9lbGYuYzogZml4ZWQgdGhlICJsaWIiIGluc2VydGlvbgoJY3J0ZGxsOiBhZGRlZCBmc29wZW4oKQoJZGlucHV0OiByZXR1cm4gdGhhdCB3ZSBhcmUgYXR0YWNoZWQuCgoJKiBjb250cm9scy9idXR0b24uYzogUmV2ZXJ0ZWQgcHJldmlvdXMgY2hhbmdlLgoKCSogY29udHJvbHMvZWRpdC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUNhbmNlbCBwZW5kaW5nIG5vdGlmaWNhdGlvbnMgd2hlbiBFTV9TRVRNT0RJRlkgaXMgY2FsbGVkLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJRml4IGEgY3Jhc2ggd2hlbiBkb2luZyBzb3J0ZWQgaW5zZXJ0cyBhdCB0b3AgbGV2ZWwuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJld29ya2VkIG5vbmNsaWVudCBkcmF3aW5nIGNvZGUuIFdpbjMxIGxvb2sgbm93IHdvcmtzIG1vcmUgbGlrZSByZWFsCglXaW4zMSwgc28gYXBwcyBsaWtlIERlbHBoaSAxLjAgbm8gbG9uZ2VyIGdvIGludG8gaW5maW5pdGUgcmVjdXJzaW9uCglldGMuIEZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgaW4gd2luOTUgbG9vayB0b28sIGJ1dCBub3QgYXMgdGhvcm91Z2hseQoJKGUuZy4gV1NfRVhfV0lORE9XRURHRSBpcyBzdGlsbCBub3QgaGFuZGxlZCkuCgoJKiB3aW5kb3dzL3N5c21ldHJpY3MuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTTV9DW1hZXUZSQU1FIGlzIEJvcmRlcldpZHRoICsgMS4KCgkqIG1lbW9yeS9sb2NhbC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogTG9jYWxJbml0IHdpdGggc3RhcnQgPT0gMCBhbHdheXMgcGxhY2VzIGhlYXAgYXQgZW5kIG9mIHNlZ21lbnQuCgoJKiBsb2FkZXIvdGFzay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogVEFTS19DYWxsVG9TdGFydCBkaWRuJ3QgcGFzcyBjb3JyZWN0IGhJbnN0YW5jZSB0byBhcHAuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGFzay5oLCBsb2FkZXIvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglPbiBORSBwcm9jZXNzIGNyZWF0aW9uLCBtb3ZlIG1ham9yIHBhcnQgb2YgTkUgRVhFIG1vZHVsZSBsb2FkaW5nIGFuZAoJTkUgaW5zdGFuY2UgY3JlYXRpb24gaW50byB0aGUgY2hpbGQgcHJvY2Vzcy4KCgkqIGRvY3VtZW50YXRpb24vZ3VpOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVdpbmRvdyBzdHlsZSB1cGRhdGVzLgoKCSogbGlidGVzdC9ndWl0ZXN0LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU29tZSBlbmhhbmNlbWVudHMsIGFuZCByZW1vdmFsIG9mIEMrKyBjb25zdHJ1Y3RzLgoKCSogZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9kZHJhd19wcml2YXRlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIGNoYWlucyBvZiBzdXJmYWNlcy4gVGhpcyBhbGxvd3MgYW4gdW5saW1pdGVkIG51bWJlcgoJb2YgYmFja2J1ZmZlcnMsIGFuZCBvdGhlciBhdHRhY2hlZCBzdXJmYWNlcyAoemJ1ZmZlcnMsIGFscGhhIGJ1ZmZlcnMsCgl3aGF0ZXZlcikuCgoJKiBmaWxlcy9maWxlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIFVubG9ja0ZpbGVFeCBzdHViLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvaW50ZXJuYXRpb25hbGlzYXRpb24sIHJlc291cmNlcy9zeXNyZXNfQ2EucmMsIHJlc291cmNlcy9zeXNyZXNfRXMucmM6CglKb3NlIE1hcmNvcyBMb3BleiBDYXJhdmFjYSA8am9zZS5sb3BlekB1cGNuZXQudXBjLmVzPgoJQWRkZWQgbWlzc2luZyA2MTc2MiBlbnRyeSBvbiBzeXN0ZW0gcmVzb3VyY2VzIGluIFNwYW5pc2ggYW5kCglDYXRhbG9uaWFuIGxhbmd1YWdlcy4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCU1ha2UgR2V0U2Nyb2xsSW5mbyByZXR1cm4gc2Nyb2xsIHBvcyB3aGVuIHByb2dyYW0gcmVxdWVzdHMgdGh1bWIgcG9zCglvdXRzaWRlIGRyYWcgb3BlcmF0aW9uLgoKU3VuIEp1biAyNyAxNTo0MDo0NCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVhZENvbnNvbGVBOiB1c2UgaXIgYXMgcG9pbnRlciB0byAocmVxKzEpLgoKCSogd2luZG93cy9wYWludGluZy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVJlbW92ZSB0aGUgIHZhbGlkYXRlZCBjaGlsZCBhcmVhIGZyb20gdGhlIHVwZGF0ZSByZWdpb24gb2YgcGFyZW50IGZvcgoJd2luZG93cyB3aXRob3V0IFdTX0NMSVBDSElMRFJFTiBzdHlsZS4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEdycDggaW5zdHJ1Y3Rpb25zIGhhdmUgKmJ5dGUqIEJpdE9mZnNldCBvcGVyYW5kLgoKCSogbXNkb3MvdnhkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBtaXNzaW5nIFdJTkFQSXMgYWRkZWQuCgoJKiBvbGUvb2xlMi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9sZU1ldGFGaWxlUGljdEZyb21JY29uQW5kTGFiZWwxNjogc2xpZ2h0bHkgYnJva2VuLCB1c2UgTFBPTEVTVFIxNi4KCgkqIGZpbGVzL2ZpbGUuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglSZXR1cm4gRVJST1JfRElTS19GVUxMIGZvciBXcml0ZUZpbGUuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOiBFcmljIFdpbGxpYW1zIDxld2lsbEBuY2FsLnZlcmlvLmNvbT4KCUZpeGVkIG1pc3NpbmcgcmV0dXJuIGFmdGVyIGFib3V0IGRpYWxvZy4KClNhdCBKdW4gMjYgMTk6MDk6MTEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zLyouYywgbWlzYy8qLmMsIG1pc2NlbXUvKi5jLCBncmFwaGljcy8qLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UsIHVzaW5nIHNjcmlwdCB3cml0dGVuIGJ5IFBhdHJpawoJU3RyaWR2YWxsLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCB0b29scy9idWlsZC5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvb3JkaW5hbHMuYywgd2luZG93cy93aW4uYywgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy9jYWxsYmFjay5jLCBtaXNjL2Vycm9yLmMsIG1pc2Mvd2luZGVidWcuYywgbWlzY2VtdS9lbXVsYXRlLmMsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQwOS5jLCBtc2Rvcy9pbnQxMC5jLCBtc2Rvcy9pbnQxMS5jLCBtc2Rvcy9pbnQxMi5jLCBtc2Rvcy9pbnQxMy5jLCBtc2Rvcy9pbnQxNS5jLCBtc2Rvcy9pbnQxNi5jLCBtc2Rvcy9pbnQxNy5jLCBtc2Rvcy9pbnQxOS5jLCBtc2Rvcy9pbnQxYS5jLCBtc2Rvcy9pbnQyMC5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBtc2Rvcy9pbnQyOS5jLCBtc2Rvcy9pbnQyYS5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQzMy5jLCBtc2Rvcy9pbnQzZC5jLCBtc2Rvcy9pbnQ0MS5jLCBtc2Rvcy9pbnQ0Yi5jLCBtc2Rvcy9pbnQ1Yy5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmMsIG1zZG9zL3Z4ZC5jLCBtc2Rvcy94bXMuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZGxscy9udGRsbC9ydGwuYywgZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3Nub29wLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL21zZG9zLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL3Rhc2suYzoKCUNoYW5nZWQgQ09OVEVYVCBpbnRvIENPTlRFWFQ4NiBldmVyeXdoZXJlIHdlIHJlYWxseSB3YW50IGFuIGkzODYKCWNvbnRleHQuCglBZGRlZCAjaWZkZWYgX19pMzg2X18gYXJvdW5kIGFjY2Vzc2VzIHRvIDM4NiByZWdpc3RlcnMgaW4gdGhlIGdlbmVyaWMKCUNPTlRFWFQgc3RydWN0dXJlLgoKCSogaW5jbHVkZS93aW5udC5oOiBBZGRlZCBDT05URVhUODYgZGVmaW5pdGlvbi4KCUFkZGVkIFBvd2VyUEMgY29udGV4dCBhcyBhbiBleGFtcGxlIChub3QgdGVzdGVkKS4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmg6CglGaXhlcyBmb3Igbm9uLWkzODYgY29tcGlsaW5nLgoKCSogKi8qOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBTlNJIEMgZml4ZXMuCglSZW1vdmVkIHdhcm5pbmdzLgoJTWFkZSB0aGUgaW5jbHVkZSBmaWxlcyBzZWxmLXN1ZmZpY2llbnQuCglTb21lIFNvbGFyaXMgZml4ZXMuCgoJKiByZWxheTMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgRFBBX0xvYWRTdHJlYW0gYW5kIGltcHJvdmVkIERQQV9NZXJnZS4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIGNoZWNrIGZvciBpbnZhbGlkIHBhcmVudCBpdGVtLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFNIRG9EcmFnRHJvcCgpIHN0dWIuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgR2V0UmFuZG9tUmVnaW9uKCkuCgoJKiBtaXNjL25ldHdvcmsuYywgcmVsYXkzMi9tcHIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBXTmV0UmVtb3ZlQ2FjaGVkUGFzc3dvcmQoKSBzdHViLgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVN0b3JlIGJ1ZGR5IHdpbmRvdy4KCgkqIGluY2x1ZGUvdG9vbHRpcHMuaCwgZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVN0YXJ0ZWQgV01fTk9USUZZRk9STUFUIHN1cHBvcnQuCgoJKiBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglCZXR0ZXIgQ29tYm9Cb3hFeCBwbGFjZW1lbnQuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IERhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJRW5zdXJlIHRoYXQgdGhlIGNvbW1hbmQtbGluZSBwYXNzZWQgdG8gdGhlIHZhcmlvdXMgKkNyZWF0ZVByb2Nlc3MKCWZ1bmN0aW9ucyBjb250YWlucyB0aGUgcGF0aCB0byB0aGUgcHJvZ3JhbSBiZWluZyBpbnZva2VkLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IExhcnMgSGVldGUgPGhlbEBhZG1pbi5kZT4KCVByZXZlbnQgYmFkIHdpbmRvdyBYIGVycm9yLgoKCSogd2luZG93cy9tZGkuYywgd2luZG93cy9zeXNtZXRyaWNzLmM6CglBYmV5IEdlb3JnZSA8YWJleUBtYWNhZGFtaWFuLmNvbT4KCVRoZSBzeXN0ZW0gbWVudSBpY29uIG9uIGEgTURJIGNoaWxkIHdpbmRvdyB3YXMgY29ycnVwdGVkIHdoZW4gdGhlCgljaGlsZCBmcmFtZSB3aW5kb3cgaXMgbWF4aW1pemVkIHdpdGhpbiB0aGUgbWFpbiBmcmFtZSB3aGVuIHRoZSB3aW5lCglsb29rIGlzIFdpbmRvd3MgOTUuCgoJKiBjb250cm9scy9zY3JvbGwuYywgd2luZG93cy9kZWZ3bmQuYzoKCVNsYXZhIE1vbmljaCA8U2xhdmEuTW9uaWNoQG5ldG1hbmFnZS5jb20+CglJbiBjYXNlIGlmIHNjcm9sbGJhciBoYXMgdGhlIHNhbWUgYmFja2dyb3VuZCBjb2xvciBhcyB0aGUgd2luZG93CglpdCBiZWxvbmdzIHRvLCBpdCBuZWVkcyB0byBiZSBmaWxsZWQgd2l0aCAweDU1YWEgYml0bWFwIGJydXNoLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBjYWxkZXJhLmRlPgoJRml4ZWQgdGhlIHN0cmluZ2NvbXBhcmUgaW4gX2ZpbmRfb3JfYWRkXyooKSAod2FzIG1pc3NpbmcgdG9sb3dlcigpcykuCgoJKiBkZWJ1Z2dlci9tZW1vcnkuYzogSnVlcmdlbiBMb2NrIDxub3hAamVsYWwua24tYnJlbWVuLmRlPgoJRml4ICh3ZWxsIGtsdWRnZSBhcm91bmQpIEZyZWVCU0QncyBgSW52YWxpZCBhZGRyZXNzJyBlcnJvcnMuCgoJKiBjb250cm9scy9lZGl0LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglEcmF3IGEgM0QgYm9yZGVyIGFyb3VuZCBlZGl0IGNvbnRyb2xzIHdoZW4gbm90IGluIFdJTjMxX0xPT0suCgoJKiBjb250cm9scy9idXR0b24uYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCU9ubHkgZHJhdyBhIGJsYWNrIGJvcmRlciBhcm91bmQgbm9ybWFsIGJ1dHRvbnMgd2hlbiBpbiBXSU4zMV9MT09LLgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYWxpZ25tZW50IGFuZCBwb3NpdGlvbiB3aGVuIGxvb2tpbmcgZm9yIG1taW8gY2h1bmtzLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciB1c2luZyBnbG9iYWwgdmFycyAoc2hhcmVkIGRhdGEpIGZvciBtbSB0aW1lcnMsIGJ1dCBhCglzcGVjaWZpYyBzdHJ1Y3R1cmUgZm9yIGVhY2ggYXR0YWNoZWQgcHJvY2Vzcy4KCUZpeGVkIGFsaWdubWVudCBhbmQgcG9zaXRpb24gd2hlbiBsb29raW5nIGZvciBtbWlvIGNodW5rcy4KCUZpeGVkIFdBVkUgbWFwcGVyIGhhbmRsaW5nIGluIHdhdmVHZXRDYXBzLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvdGltZS5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgdXNpbmcgZ2xvYmFsIHZhcnMgKHNoYXJlZCBkYXRhKSBmb3IgbW0gdGltZXJzLCBidXQgYQoJc3BlY2lmaWMgc3RydWN0dXJlIGZvciBlYWNoIGF0dGFjaGVkIHByb2Nlc3MuCgoJKiBkb2N1bWVudGF0aW9uL2Rpc3RyaWJ1dG9yczogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXcm90ZSBhIHNtYWxsIGRvY3VtZW50IG9uIGhvdyB0byBwYWNrYWdlIFdJTkUgZm9yIGRpc3RyaWJ1dG9ycy4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJU2V0Q3Vyc29yUG9zKCkgZnVuY3Rpb24gd2FzIGNhbGxlZCB3aXRoIGEgd2luZG93IGNvb3JkaW5hdGVzCglwYXJhbWV0ZXIuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG51bGwgcHRyIGRlcmVmIGludHJvZHVjZWQgaW4gbGFzdCBwYXRjaC4KCgkqIGlmMTYzMi9vbGUyLnNwZWMsIG9sZS9vbGUyLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglLaW5kIG9mIGltcGxlbWVudGVkIE9sZU1ldGFGaWxlUGljdEZyb21JY29uQW5kTGFiZWwuCgoJKiBpbmNsdWRlL3Rvb2xiYXIuaCwgZGxscy9jb21jdGwzMi90b29sYmFyLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgdmFyaW91cyBwcm9ibGVtcyByZWxhdGVkIHRvIGJpdG1hcHMgYW5kIGZsYXQgdG9vbGJhcnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBwcm9ibGVtcyB3aXRoIGRpc2FwcGVhcmluZyB0ZXh0LgoKCSogZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUNvbXBsZXRlIHJld3JpdGUgb2YgbWVzc2FnaW5nIGNvZGUgdG8gaW1wbGVtZW50L2ZpeCBhbGwgaW5wdXQgYmVoYXZpb3JzLgoJRml4ZWQgYSBmZXcgZml4bWVzLgoKCSogcHJvZ3JhbXMvd2NtZC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvUkVBRE1FLCBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC93Y21kLmgsIHByb2dyYW1zL3djbWQvd2NtZG1haW4uYzoKCURhdmUgUGlja2xlcyA8ZGF2ZXBAbnVnYXRlLmRlbW9uLmNvLnVrPgoJQWRkZWQgbW9yZSBiYXRjaCBmdW5jdGlvbmFsaXR5LCBpbmNsdWRpbmcgdGhlIENBTEwgR09UTyBhbmQgU0hJRlQKCWNvbW1hbmRzIHBsdXMgYmF0Y2ggY29tbWFuZCBhcmd1bWVudHMuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9tdWx0aW1lZGlhOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgdG8gcmVmbGVjdCBjdXJyZW50IHN0YXR1cy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU5FX0xvYWRGaWxlTW9kdWxlOiBGcmVlIG1vZHVsZSB3aGVuIE5FX0xvYWRETExzIGZhaWxzLgoKCSogZ3JhcGhpY3MvcHNkcnYvcHMuYywgZ3JhcGhpY3MvcHNkcnYvdGV4dC5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSB1bmRlcmxpbmUgYW5kIHN0cmlrZW91dCB0ZXh0IGF0dHJpYnV0ZXMgZm9yIHRoZSBXaW5lCglQb3N0U2NyaXB0IGRyaXZlci4KCgkqIHdpbmRvd3Mvd2luLmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglFbmFibGVXaW5kb3cgZG9lc24ndCByZWxlYXNlIHRoZSBjYXB0dXJlIG9mIGEgY2hpbGQgd2luZG93LgoKCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCU9ubHkgdGVzdCAkKExJQl9UQVJHRVQpID0gbGlid2luZS5zby4xLjAgaWYgJChMSUJfVEFSR0VUKSBpcwoJbm9uLWJsYW5rLgoKCSogY29udHJvbHMvbWVudS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZSB0aGUgV01fTEJVVFRPTlVQIG1lc3NhZ2UgZnJvbSB0aGUgcXVldWUgYWZ0ZXIgc2VsZWN0aW5nIGEgbW91c2UKCW1lbnUgaXRlbS4KCgkqIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL29iamVjdC5oLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9kZXZpY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jb21tLmMsIG1pc2MvdG9vbGhlbHAuYywgb2xlL3BhcnNlZHQuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYzoKCUZ1cnRoZXIgc2VydmVyIG9wdGltaXphdGlvbnM6CgktIG1lcmdlZCByZXF1ZXN0IGFuZCByZXBseSBzdHJ1Y3R1cmVzCgktIGJ1aWxkIHJlcXVlc3RzIGRpcmVjdGx5IGludG8gdGhlIGJ1ZmZlciB0byBhdm9pZCBhIGNvcHkKClR1ZSBKdW4gMjIgMTk6MTQ6NDEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1J1LnJjLCBncmFwaGljcy94MTFkcnYveGZvbnQuYywgb2xlL25scy9ydXMubmxzLCByZXNvdXJjZXMvc3lzcmVzX1J1LnJjLCBkbGxzL2NvbW1kbGcvY2RsZ19SdS5yYzoKCUFsZXhhbmRlciBLYW5hdmluIDxha0BjYXZlLmhvcC5zdHUubmV2YS5ydT4KCVN0YW5kYXJkIGRpYWxvZyBib3hlcyByZXNvdXJjZXMgYW5kIE9MRSBzdHJpbmdzIGFyZSBub3cgaW4gY3AxMjUxIGVuY29kaW5nCglGb250IG1hcHBlciBkb2VzIG5vdCBhbnltb3JlIHVzZSBmb250cyBpbiAta29pOC1yIGVuY29kaW5nCglGb250IG1hcHBlciBub3cgcmVjb2duaXNlcyBmb250cyBpbiAtd2luZG93cy0qIGVuY29kaW5ncyAodGhlc2UgYXJlCglwcm92aWRlZCBieSB4ZnN0dCBUcnVlVHlwZSBzZXJ2ZXIpCglGb250IG1hcHBlciBub3cgc2VlcyBtYXggMTYzODQgZm9udHMgKHdhcyAyMDQ4KQoKCSogcmVsYXkzMi9idWlsdGluMzIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2hhcmUgdGhlIEhNT0RVTEUgb2YgYnVpbHQtaW4gbW9kdWxlcyBvdmVyIGFsbCBwcm9jZXNzZXMuCglVc2UgdGhlIGNhY2hlZCBITU9EVUxFIHRvIHNwZWVkIHVwIHJlbGF5IGRlYnVnZ2luZy4KCURpc3BsYXkgdGhlIG11bHRpLWluc3RhbnRpYXRpb24gd2FybmluZyBvbmx5IGZvciAnZGFuZ2Vyb3VzJyBETExzLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTG9hZCBVU0VSMzIuRExMIGJlZm9yZSBjYWxsaW5nIFVzZXJTaWduYWxQcm9jLgoKCSogd2luZG93cy90aW1lci5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBzZXBhcmF0ZSBzZXJ2aWNlIGZvciBlYWNoIHdpbmRvd3MgdGltZXIuCgoJKiBpZjE2MzIvY29tcG9iai5zcGVjLCBvbGUvY29tcG9iai5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgQ09NUE9CSi5EbGxFbnRyeVBvaW50IChBY3JvYmF0MyAxNmJpdCBuZWVkcyBpdCkuCgoJKiBvbGUvdHlwZWxpYi5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVGhvdSBzaGFsdCBub3QgdXNlIEMrKyBjb21tZW50cy4KCgkqIGluY2x1ZGUvZHJpdmVyLmgsIHdpbmRvd3MvZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIHRvIG5ldyB0cmFjZSBpbnRlcmZhY2UuCglGaXhlZCBkcml2ZXIgY2xvc2luZy4KCgkqIG11bHRpbWVkaWEvbWNpc3RyaW5nLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQmV0dGVyIGhhbmRsaW5nIG9mIGRvdWJsZSBxdW90ZXMgaW4gTUNJIHN0cmluZyBjb21tYW5kcy4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbWVtb3J5IGxlYWsgaW4gbWNpIHN0cnVjdHVyZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGVycm9yIGhhbmRsaW5nIGluIERHQV9JRGlyZWN0RHJhdzJJbXBsX0dldENhcHMoKS4KCgkqIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgR0RJIGhlYXAgdW5sb2NrLgoJTW92ZWQgdG8gbmV3IGRlYnVnIGludGVyZmFjZS4KCgkqIGRsbHMvY29tbWRsZy9maWxlZGxnLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgR2V0T3BlbkZpbGVOYW1lIHdoZW4gY2FsbGVkIHdpdGggYm90aCBPRk5fQUxMT1dNVUxUSVNFTEVDVCBhbmQKCU9GTl9FWFBMT1JFUiBiaXRzIHNldC4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglNb2RpZmllZCBJbWFnZUxpc3RfTG9hZEltYWdlQSB0byBjaGVjayB0aGUgY2FzZSB3aGVyZSBjeCBpcyBzZXQgdG8gemVyby4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFBoaWxpcHBlIEZyb2lkZXZhdXggPHBmQHNwaW4uY2g+CglBZGRlZCBTd2lzcyBmcmVuY2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogc2VydmVyL3NlbGVjdC5jOiBEdW1wIHNlcnZlciBvYmplY3RzIG9uIFNJR0hVUC4KCgkqIHNlcnZlci9maWxlLmMsIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvbWFpbi5jLCBzZXJ2ZXIvbWFwcGluZy5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9waXBlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NuYXBzaG90LmMsIHNlcnZlci9zb2NrZXQuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL0F0dGljL3JlcXVlc3QuaCwgaW5jbHVkZS90aHJlYWQuaCwgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy9jb21tLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2RlYnVnZ2VyLmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3BpcGUuYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2V2ZW50LmMsIGZpbGVzL2ZpbGUuYzoKCU1hZGUgc2VydmVyIGNvbW11bmljYXRpb24gZmFzdGVyIGJ5IHVzaW5nIGEgc2hhcmVkIG1lbW9yeSBibG9jay4KCUEgZmV3IG90aGVyIG9wdGltaXphdGlvbnMgaW4gcmVxdWVzdCBwcm9jZXNzaW5nIGluIHRoZSBzZXJ2ZXIuCglNb3ZlZCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCByZXF1ZXN0IGRlZmluaXRpb25zIHRvIHNlcnZlci5oIGFuZAoJcmVtb3ZlZCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmguCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL25lL3NlZ21lbnQuYywgbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmMsIG1zZG9zL2RwbWkuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB0b29scy9idWlsZC5jLCB3aW4zMi9rZXJuZWwzMi5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvc3RhY2tmcmFtZS5oLCBpbmNsdWRlL3Rhc2suaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCU1lcmdlZCBUSERCIGFuZCBURUIgc3RydWN0dXJlcy4KCU1hZGUgU2V0TGFzdEVycm9yKCksIEdldEN1cnJlbnRUaHJlYWRJZCgpIGFuZCBQUk9DRVNTX0N1cnJlbnQoKSBpbmxpbmUuCgoJKiBwcm9ncmFtcy93aW5oZWxwLy5jdnNpZ25vcmUsIHByb2dyYW1zL2Nsb2NrLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vLmN2c2lnbm9yZToKCUFkZGVkIFdhLnMKClN1biBKdW4gMjAgMTU6MDk6MzIgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9pbnN0ci5jLCBtaXNjZW11L21haW4uYywgcHJvZ3JhbXMvY2xvY2svV2EucmMsIHByb2dyYW1zL3Byb2dtYW4vV2EucmMsIHByb2dyYW1zL3dpbmhlbHAvV2EucmM6CglGaXhlZCBXaW5lbGliIGNvbXBpbGF0aW9uLgoKRnJpIEp1biAxOCAxODoyOTowNCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L01ha2VmaWxlLmluLCBtZW1vcnkvaW5zdHIuYywgbWlzY2VtdS9BdHRpYy9pbnN0ci5jLCBtaXNjZW11L01ha2VmaWxlLmluOgoJSW5jbHVkZSBpbnN0cnVjdGlvbiBlbXVsYXRpb24gaW4gV2luZWxpYi4KCgkqIGluY2x1ZGUvd2luZS9leGNlcHRpb24uaCwgd2luMzIvZXhjZXB0LmM6IEEgZmV3IG9wdGltaXphdGlvbnMuCgoJKiBsb2FkZXIvZG9zL2Rvc3ZtLmM6IFVzZSBleGNlcHRpb25zIGluc3RlYWQgb2YgY3R4X2RlYnVnX2NhbGwuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgd2luZG93cy94MTFkcnYvbWFpbi5jOgoJQWRkZWQgRGVidWdCcmVhay4KCgkqIGRlYnVnZ2VyL2JyZWFrLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9kZWJ1Zy5sLCBkZWJ1Z2dlci9pbmZvLmMsIGRlYnVnZ2VyL3JlZ2lzdGVycy5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIG1pc2NlbXUvbWFpbi5jOgoJRGVidWdnZXIgaXMgbm93IGNhbGxlZCBieSBleGNlcHRpb24gaGFuZGxpbmcuCglBZGRlZCAncGFzcycgY29tbWFuZCB0byBwYXNzIGV4Y2VwdGlvbnMgdG8gdGhlIGFwcC4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGxvYWRlci9zaWduYWwuYywgZGxscy9udGRsbC9leGNlcHRpb24uYywgZ3JhcGhpY3MvZGRyYXcuYzoKCU1vdmVkIHNpZ25hbCBoYW5kbGluZyB0byBleGNlcHRpb24uYywgZ2VuZXJhdGUgZXhjZXB0aW9ucyBvbiBzaWduYWxzLgoJQWRkZWQgaG9vayBmb3IgZGVidWdnZXIgaW4gZXhjZXB0aW9uIGhhbmRsaW5nICh0ZW1wb3JhcnkpLgoKCSogcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9XYS5yYywgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2luaGVscC9XYS5yYywgcmVzb3VyY2VzL3N5c3Jlc19XYS5yYywgb2xlL25scy93YWwubmxzLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svV2EucmMsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL25vdGVwYWQvV2EucmMsIGRsbHMvY29tbWRsZy9jZGxnX1dhLnJjLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9XYS5yYzoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAcGluZy5iZT4KCVdhbGxvb24gbGFuZ3VhZ2UgdXBkYXRlLgoKCSogd2luZG93cy93aW5wb3MuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGluY2x1ZGUvd2lucG9zLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgktIERvIG5vdCBjYWxsIFhDb25maWd1cmVXaW5kb3cgaWYgU2V0V2luZG93UG9zIHdhcyBjYWxsZWQgZHVlIHRvIGEKCSAgcmVjZWl2ZWQgQ29uZmlndXJlTm90aWZ5IGV2ZW50ICh0byBhdm9pZCByZWN1cnNpb24pLgoJLSBVc2UgWFRyYW5zbGF0ZUNvb3JkaW5hdGVzIGluIEVWRU5UX0dldEdlb21ldHJ5IGluc3RlYWQgb2YgbWFudWFsbHkKCSAgd2Fsa2luZyB0aGUgdHJlZS4KCS0gU2V0IFhTaXplSGludC53aW5fZ3Jhdml0eSB0byBTdGF0aWNHcmF2aXR5IGZvciBtYW5hZ2VkIHdpbmRvd3MuCgoJKiBtaXNjL3ZlcnNpb24uYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUJ1ZyBmaXguCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbjoKCUFsZXhhbmRlciBWLiBMdWt5YW5vdiA8bGF2QGxvbmcueWFyLnJ1PgoJSW5zdGFsbCB3aW5lLm1hbiBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5LgoJUmVtb3ZlIHdpbmUubWFuIG9uIGRpc3RjbGVhbiwgbm90IG9uIGNsZWFuLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gSnVuIDEzIDA4OjQ5OjQ3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvbGlzdHZpZXcuaDoKCUNocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglJbXBsZW1lbnRlZCBMSVNUVklFV19Tb3J0SXRlbXMoKSBhbmQgTElTVFZJRVdfQ2FsbEJhY2tDb21wYXJlKCkKCgkqIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlcyBhIHByb2JsZW0gd2hlbiB1c2luZyBTVEFUVVNCQVJfU2V0VGV4dCgpIHRvIHRvZ2dsZSBTQlRfT1dORVJEUkFXCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglBZGRzIHNvbWUgdW5kb2N1bWVudGVkIGJlaGF2aW9yIHRvIFRSRUVWSUVXX0dldEl0ZW1BKCkuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgYW1iaWdvdXMgZWxzZS9icmFjZSBwcm9ibGVtLCBtb3ZlZCAibmFtZSIgY29tcHV0YXRpb24gaW4KCUNyZWF0ZVByb2Nlc3MgX2JlZm9yZV8gb3V0cHV0dGluZyBpdCBpbiB0aGUgRklYTUVfKClzLgoKCSogb2JqZWN0cy9yZWdpb24uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgcmV1c2UgYSBwYXNzZWQgQ09OU1QgUkVDVCAqIHBvaW50ZXIuCgoJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERJU1BMQVlfU2V0Q3Vyc29yIHNob3VsZCBub3QgdXNlIFVTRVItaW50ZXJuYWxzLCBhcyBpdCBpcyBhbHNvCgl1c2VkIHdpdGggbmF0aXZlIFVTRVIgLi4uCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBicm9rZW4gaGFjayB0byBzdXBwb3J0IHNoYXJlZCBETExzIChlLmcuIFVTRVIzMi5ETEwpIGFuZAoJcmVwbGFjZWQgaXQgYnkgYSBzb21ld2hhdCBsZXNzIGJyb2tlbiBoYWNrIDotLwoKCSogbXVsdGltZWRpYS9tY2kuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzbWFsbCBtZW1vcnkgY29ycnVwdGlvbi4KClNhdCBKdW4gMTIgMTg6MzY6NTUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvKi5oOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNYWQgdGhlIGluY2x1ZGUgZmlsZXMgaWRlbXBvdGVudCB1c2luZyBhIGNvbnNpc3RlbnQgbWFjcm8gbmFtaW5nCglzY2hlbWUuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJQXZvaWQgcGFpbnRpbmcgZGVzdHJveWVkIHdpbmRvd3MuCgoJKiBkbGxzLyouYywgaWYxNjMyLyouYywgbG9hZGVyLyouYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZSwgdXNpbmcgc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrCglTdHJpZHZhbGwuCgoJKiBpZjE2MzIvYnVpbHRpbi5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1lbW9yeS9hdG9tLmMsIG1lbW9yeS9zdHJpbmcuYywgb2JqZWN0cy90ZXh0LmMsIHdpbjMyL3RocmVhZC5jLCB3aW5kb3dzL3Byb3BlcnR5LmMsIHdpbmRvd3MvcmVjdC5jLCB3aW5kb3dzL3N5c21ldHJpY3MuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9jb21tZGxnL2ZpbGV0aXRsZS5jLCBkbGxzL250ZGxsL250LmMsIGRsbHMvbnRkbGwvc3luYy5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCBtaXNzaW5nL3dyb25nIGluY2x1ZGVzLgoKCSogd2luZG93cy91c2VyLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3dpZGdldHMuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RiZ21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBtaXNjL3NweS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9wYWludGluZy5jLCB3aW5kb3dzL3Njcm9sbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIGRpcmVjdCByZWZlcmVuY2VzIHRvIENMQVNTIGludGVybmFscy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBtaXNjL3ZlcnNpb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlYXJyYW5nZSB3aW52ZXIgZGV0ZWN0aW9uIGNvZGUgYW5kIGNhY2hlIHRoZSB3aW52ZXIgdmFsdWUgd2UKCWRldGVybWluZWQgaW4gdGhlIFBEQiB0byBzcGVlZCB1cC4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJRHJhd3MgYSBib3JkZXIgYXJvdW5kIHdpbmRvd3Mgd2l0aCBvbGQgd2luMzEgc3R5bGUgKG9ubHkgd3NfYm9yZGVyKSBpbgoJd2luOTUgbG9vay4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9wcnNodC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93dHlwZXMuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgQ0lOVEVSRkFDRSBhbmQgTk9OQU1FTEVTU1VOSU9OIHN1cHBvcnQuCgoJKiBpbmNsdWRlLyouaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQWRkZWQgZXh0ZXJuICJDIiBpZiBfX2NwbHVzcGx1cyBpcyBkZWZpbmVkLgoKCSogaW5jbHVkZS9jb21iby5oLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGZldyBiZWhhdmlvcnMgb2YgdGhlIGNvbWJvYm94IHRoYXQgd2VyZSBicm9rZW4uCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvaW5mby5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUFkZCBuZXcgIndhbGsiIGNvbW1hbmQgb3B0aW9ucyB0byBsaXN0IHByb2Nlc3NlcyBhbmQgbW9kcmVmJ3MuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglYMTFEUlZfRElCX1NldEltYWdlQml0c18yNC8zMjogRml4IHRoZSBjYXNlIGZvciBiaXRzX3Blcl9waXhlbCA9PSAzMgoJYW5kIG5lZ2F0aXZlIGxpbmVzLgoKCSogZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGluY2x1ZGUvd2ludXNlci5oLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNoYW5nZWQgeHh4KFZPSUQpIHRvIHh4eCh2b2lkKS4KCgkqIG11bHRpbWVkaWEvdGltZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCS0gc2ltcGxpZmllZCBpbnRlcm5hbCBkYXRhCgktIHRocmVhZCBzYWZlIGFjY2VzcyB0byBpbnRlcm5hbCBzdHJ1Y3R1cmVzCgktIGZpeGVkIGJ1ZyBvbiBPTkVfU0hPVCB0aW1lcnMKCS0gZGVmZXJyZWQgc2VydmljZSB0aHJlYWQgY2FsbCB1bnRpbCByZWFsbHkgbmVlZGVkIChubyBsb25nZXIgb24gV0lOTU0KCSAgb3IgTU1TWVNURU0gYXR0YWNoZW1lbnQpCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2aWNlcy5oLCBsb2FkZXIvbWFpbi5jLCBzY2hlZHVsZXIvc2VydmljZXMuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIHRoZSBzZXJ2aWNlIHRocmVhZCBpbnN0YW5jaWFibGUgaW4gZXZlcnkgcHJvY2Vzcy4KCgkqIE1ha2UucnVsZXMuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVVzZSBBdXRvY29uZiB0byBmaW5kIHBhdGggdG8gbGRjb25maWcuCgoJKiBvbGUvdHlwZWxpYi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHByb2JsZW0gd2l0aCB0aGUgTG9hZFR5cGVMaWIgbWV0aG9kLgoKCSogbWlzYy9NYWtlZmlsZS5pbiwgbWlzYy9yZWdpc3RyeS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1tQGpldC5sc3QuZGU+CglVc2UgQHN5c2NvbmZkaXJAIGZvciB0aGUgZGVmYXVsdCByZWdpc3RyaWVzIGluIG1pc2MvcmVnaXN0cnkuYyB0b28uCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1tQGpldC5sc3QuZGU+CglBZGRlZCBnZW5lcmljIHBpeGVsIGNvbnZlcnRlciBmb3IgOC0+MjQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRElBTE9HX1BhcnNlVGVtcGxhdGUxNigpIHN1cHBvcnRlZCB1cCB0byAxMjcgY29udHJvbHMuIEJpZ2dlciB2YWx1ZXMKCXdlcmUgZXhwYW5kZWQgdG8gV09SRCBpbmNvcnJlY3RseS4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvZHBtaS5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglWYXJpb3VzIERQTUkgZml4ZXMgYW5kIHByZWxpbWluYXJ5IERQTUkgcmF3IG1vZGUgc3dpdGNoIGhhbmRsZXIuCgoJKiB3aW5kb3dzL21kaS5jOiBOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGltcHJlY2lzaW9uIGluIHRoZSBNREkgdGlsaW5nIGZ1bmN0aW9uYWxpdHkuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCU9wZW4gZmlsZXMgd2l0aCBtb3JlIGFwcHJvcHJpYXRlIHNoYXJpbmcgbW9kZS4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU21hbGwgZml4ZXMgZm9yIEVuaE1ldGFGaWxlIHBsYXliYWNrLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUZpeGVkIGFuIGVycm9yIGFuZCBhbiBvZmYtYnktb25lIGJ1ZyBpbiBEU0FfU2V0SXRlbSgpLiAgVGhpcwoJZWxpbWluYXRlcyBzb21lIGNyYXNoZXMgd2l0aCBXaW45OCBuYXRpdmUgU0hFTEwzMi4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIERJQUJMT19IQUNLIChkb2VzIG5vdCB3b3JrIGFueW1vcmUpLCBhZGQgMSBGSVhNRSwgZml4IEdldENhcHMoKQoJd2l0aCBjYXBzMT09TlVMTC4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogU2xhdmEgTW9uaWNoIDxTbGF2YS5Nb25pY2hAbmV0bWFuYWdlLmNvbT4KCWR3RGF0YVNpemUgbmVlZHMgdG8gYmUgcmVzZXQgYmVmb3JlIGVhY2ggUmVnUXVlcnlWYWx1ZUV4KCkgY2FsbC4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRG9uJ3QgaWdub3JlIGFwcGxpY2F0aW9uLXJlcXVlc3RlZCBwcmltYXJ5IGJ1ZmZlciBmbGFncy4KCgkqIHRvb2xzL2J1aWxkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQ2xlYXIgaGlnaCB3b3JkIG9mICVlc3Agd2hlbiByZXR1cm5pbmcgZnJvbSBDYWxsRnJvbTE2LgoKCSogaW5jbHVkZS9jb21tLmgsIG1pc2MvY29tbS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGF0aW9uIG9mIEVWX1JYRkxBRy4KCgkqIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBbR1NdZXRGb3JlZ3JvdW5kV2luZG93LgoJRml4ZWQgZm9jdXMgaGFuZGxpbmcgb24gaW50ZXItdGhyZWFkIGFjdGl2YXRpb24uCglBZGFwdGVkIEZvY3VzSW4vT3V0IGV2ZW50IGhhbmRsaW5nIHRvIHBlci1xdWV1ZSBmb2N1cy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVsZWFzZSBXaW4xNkxvY2sgZHVyaW5nIFBST0NFU1NfQ3JlYXRlLgoKCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUltYWdlTGlzdF9HZXRJY29uIGJ1ZyBmaXguCgoJKiB3aW4zMi90aW1lLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDb3JyZWN0ZWQgYSBwcm9ibGVtIGluIEdldFRpbWVab25lSW5mb3JtYXRpb24oKSBkdWUgYSBjaGFuZ2UgdG8KCW1rdGltZSgpIGluIGdsaWJjLTIuMS4xIHdoZW4gZGF5bGlnaHQgc2F2aW5nIHRpbWUgaXMgaW4gZWZmZWN0LgoKCSogZGVidWdnZXIvZGJfZGlzYXNtLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ2hhbmdlZCBLJlIgQyBmdW5jdGlvbiBkZWZpbml0aW9uIHRvIEFOU0kgQy4KCgkqIGdyYXBoaWNzL3BzZHJ2L2JpdG1hcC5jLCBpbmNsdWRlL3BzZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglQU0RSVl9TdHJldGNoRElCaXRzIHNob3VsZCB1c2UgbG9naWNhbCBjby1vcmRzLgoJU29tZSB2ZXJzaW9ucyBvZiBnaG9zdHNjcmlwdCBzZWVtIHRvIGVhdCBvbmUgdG9vIG1hbnkgY2hhcmFjdGVycyBvZgoJaW1hZ2UgZGF0YS4gQWRkIGEgJyUnIHRvIHRoZSBvdXRwdXQgZmlsZSB0byB3b3JrIGFyb3VuZCB0aGlzLgoKCSogcmVsYXkzMi93bmFzcGkzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgV05BU1BJMzIgb3JkaW5hbHMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaDoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9ucyBvZiBHZXRTdGFydHVwSW5mbyooKS4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RkZSwgbWlzYy9kZGVtbC5jOgoJS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCTFzdCBjdXQgaW1wbGVtZW50YXRpb24gb2YgRGRlTmFtZVNlcnZpY2UgKG9taXRzIG1vbml0b3IgY2FsbGJhY2spCgkxc3QgY3V0IGltcGxlbWVudGF0aW9uIG9mIERkZUtlZXBTdHJpbmdIYW5kbGUgKHByb2JhYmx5IGNvbXBsZXRlKQoJRGRlSW5pdGlhbGl6ZVcgLSBtaW5vciBjaGFuZ2VzIHRvIGluaXRpYWxpc2Ugc2VydmljZSBuYW1lcyBzdHJ1Y3R1cmUKCURkZUdldExhc3RFcnJvciAtIHN0YXJ0IG9mIHByb3BlciBsYXN0IGVycm9yIHJldHJpZXZhbAoJRGRlQ3JlYXRlU3RyaW5nSGFuZGxlMTYgLSBhZGRlZCBjb2RlIGZvciBkZWZhdWx0IGNvZGVwYWdlIHdoZXJlIG5vdAoJc3VwcGxpZWQuCglWYXJpb3VzIGRvY3VtZW50YXJ5L2NvbW1lbnQgY29ycmVjdGlvbnMuCgpGcmkgSnVuIDExIDE4OjMzOjQ2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgbWVtb3J5L2Vudmlyb24uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVzZSB0aGUgbm9ybWFsIGVudmlyb25tZW50IHJvdXRpbmVzIHRvIGJ1aWxkIHRoZSBlbnYgZGIgb2YgdGhlIGluaXRpYWwKCXByb2Nlc3MuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvb2JqZWN0LmgsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9wcm9jZXNzLmgsIHNlcnZlci90cmFjZS5jLCB0b29scy9tYWtlX3JlcXVlc3RzLCB3aW4zMi9jb25zb2xlLmM6CglSZXR1cm4gY29uc29sZSBoYW5kbGVzIGluIGFsbG9jX2NvbnNvbGUgcmVxdWVzdC4KCUZpeGVkIHJlYWRfY29uc29sZV9pbnB1dCBwYXJhbWV0ZXJzIHRvIGNvbmZvcm0gdG8gdGhlIHJlcGx5IHN0cnVjdHVyZQoJZGVjbGFyYXRpb24uCgpNb24gSnVuICA3IDE3OjQ2OjM5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2JpdG1hcC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIENyZWF0ZUNvbXBhdGlibGVCaXRtYXAgd2hlbiBjYWxsZWQgd2l0aCAwIHdpZHRoIG9yIGhlaWdodC4KCgkqIG11bHRpbWVkaWEvbW1pby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1taW9EZXNjZW5kIHdoZW4gY2FsbGVkIHdpdGggYSBwYXJlbnQgY2h1bmsuCgoJKiBsb2FkZXIvc2lnbmFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJ5aW5nIHRvIGZpeCBzaWdhbHRzdGFjaygpIHByb2JsZW0gcmVwb3J0ZWQgYnkgRGViaWFuIHVzZXJzLgoJU0lHVFJBUCBtaWdodCBiZSB1bmRlZmluZWQgKGJlb3MpLgoKCSogb2xlL3R5cGVsaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBUTEJfUmVhZCAoY2FuIGVhc2lseSBnZXQgY291bnQhPWJ5dGVzcmVhZCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlKS4KCUZpeGVkIFRMQl9GaW5kVGxiIChzdHJzdHIgb24gYmluYXJ5IGRhdGEgd2lsbCBub3Qgd29yaykuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgPj4gYW5kICogb3BlcmF0b3IgcHJlY2VkZW5jZSBwcm9ibGVtLgoKCSogd2luZG93cy94MTFkcnYvbW91c2UuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBvcmRlciBmb3IgZW50ZXJpbmcgY3JpdGljYWwgc2VjdGlvbnMgKFgxMSB2cy4gV25kTG9jaykgd2hlbgoJY2FsbGluZyBYMTFEUlZfTU9VU0VfU2V0Q3Vyc29yLgoKCSogbG9hZGVyL21vZHVsZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNvbnN1bHQgbmUub3BlcmF0aW5nX3N5c3RlbSBmaWVsZCBmb3IgTkUgZmlsZXMgaW4gR2V0QmluYXJ5VHlwZSgpLgoKCSogc2VydmVyL3Byb2Nlc3MuYzogRml4ZWQgaW5pdGlhbCBwcm9jZXNzIHJlZmNvdW50LgoKU3VuIEp1biAgNiAxNzoyODoyMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheSwgbG9hZGVyL2Rvcy9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9NYWtlZmlsZS5pbiwgZG9jdW1lbnRhdGlvbi9jZHJvbS1sYWJlbHM6CglGb3JjZWQgY29tbWl0IHRvIGdldCByaWQgb2YgdGhlIHZlbmRvciBicmFuY2gKCgkqIHByb2dyYW1zL2NtZGxndHN0Ly5jdnNpZ25vcmU6IEFkZGVkIGNtZGxnci5oCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnYXBpLmM6CglBdm9pZCB1c2Ugb2Ygc3RybmNtcGkgKHJlcG9ydGVkIGJ5IFJvbiBDZW1lcikuCgoJKiBpbmNsdWRlL3dpbmUvd2luZXN0cmluZy5oLCBtdWx0aW1lZGlhL2pveXN0aWNrLmMsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCU1vdmVkIGluY2x1c2lvbiBvZiB3aW5lc3RyaW5nLmggdG8gd2luZWJhc2UuaC4KCUFkZGVkIFdpbmVsaWIgbWFjcm9zIGZvciBsc3RybmNtcCBmdW5jdGlvbnMuCgoJKiBjb250cm9scy9zY3JvbGwuYzogUm9uIENlbWVyIDxyb25jZW1lckBndGUubmV0PgoJRml4ZXMgZm9yIHNldmVyYWwgYnVncyBpbiB3aGljaCBwb3J0aW9ucyBvZiB0aGUgc2Nyb2xsYmFyIHdlcmUgbm90CgliZWluZyByZWRyYXduIGNvcnJlY3RseSwgdGhlIGZvY3VzIHJlY3RhbmdsZSB3YXMgbm90IGJlaW5nIGNvcnJlY3RseQoJcmVtb3ZlZCBmcm9tIHRoZSB0aHVtYiBiZWZvcmUgcmVkcmF3aW5nLCBldGMuOyBhZGRlZCBjb21wbGV0ZSBXaW45eAoJYW5kIFdpbk5UIGxvb2sgYW5kIGZlZWwgc3VwcG9ydC4KCgkqIHdpbmRvd3Mvc3lzbWV0cmljcy5jOiBSb24gQ2VtZXIgPHJvbmNlbWVyQGd0ZS5uZXQ+CglGaXhlcyBmb3IgV2luOXggYW5kIFdpbk5UIGxvb2sgYW5kIGZlZWwuCgoJKiBmaWxlcy9kb3NfZnMuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIHJlc3BvbnNlIG9mIEdldEZ1bGxQYXRoTmFtZUEgd2hlbiBidWZmZXI9PU5VTEwuCgoJKiBmaWxlcy9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUNyZWF0ZUZpbGVBL0ZJTEVfRG9PcGVuRmlsZTogYWRkIHZlcmJvc2UgcmVwb3J0aW5nIG9mIGFyZ3VtZW50cy4KCgkqIGNvbmZpZ3VyZS5pbiwgcHJvZ3JhbXMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2NtZC9DaGFuZ2VMb2csIHByb2dyYW1zL3djbWQvTWFrZWZpbGUuaW4sIHByb2dyYW1zL3djbWQvUkVBRE1FLCBwcm9ncmFtcy93Y21kL2JhdGNoLmMsIHByb2dyYW1zL3djbWQvYnVpbHRpbnMuYywgcHJvZ3JhbXMvd2NtZC9kaXJlY3RvcnkuYywgcHJvZ3JhbXMvd2NtZC9tYWtlZmlsZS5iY2MsIHByb2dyYW1zL3djbWQvd2NtZC5oLCBwcm9ncmFtcy93Y21kL3djbWRtYWluLmMsIHByb2dyYW1zL3djbWQvd2NtZHJjLnJjLCBjb25maWd1cmU6CglEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUFkZGVkIFdpbmUgY29tbWFuZC1saW5lIGludGVycHJldGVyLgoKCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIENhbGxiYWNrLkNhbGxUYXNrUmVzY2hlZHVsZVByb2MoKS4KCgkqIGluY2x1ZGUvbWFpbi5oLCBtaXNjZW11L21haW4uYywgdG9vbHMvYnVpbGQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3dpdGNoIHN0YWNrcyBpbiBDQUxMMzJfSW5pdCgpLgoKCSogbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGFzay5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgkxNi1iaXQgc2NoZWR1bGVyIHJlb3JnYW5pemVkOiBydW4gYWxsIHRhc2tzIGluIHRoZWlyIG93biB0aHJlYWQuCglQcm9jZXNzIGNyZWF0aW9uIHNlcXVlbmNlIGFkYXB0ZWQgdG8gbmV3IHNjaGVkdWxlci4KCgkqIGluY2x1ZGUvc2VydmljZXMuaCwgbG9hZGVyL21haW4uYywgc2NoZWR1bGVyL3NlcnZpY2VzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgU0VSVklDRV9FeGl0KCkuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVsZWFzZSBXTkQgbG9jayBiZWZvcmUgY2FsbGluZyBQb3N0RXZlbnQxNigpLgoKCSogaW5jbHVkZS93bmFzcGkzMi5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIHNvbWUgZGVmaW5lcy4KCgkqIGRsbHMvd25hc3BpMzIvd2luYXNwaTMyLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBU1BJX0V4ZWNTY3NpQ21kOiBiZXR0ZXIgcmV0dXJuIHZhbHVlIGFuZCB2ZXJib3NlIGVycm9yIHdoZW4gbm8gZGV2aWNlCglmb3VuZC4KCgkqIGxvYWRlci9tb2R1bGUuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVVzZSBTZWFyY2hQYXRoIHRvIHRlc3QgZm9yIGV4aXN0YW5jZSBvZiBwcm9ncmFtcyBpbiBscENtZExpbmUKCXByb2Nlc3NpbmcuIEZvciBscEFwcGxOYW1lIGRvIG5vdCBhcHBlbmQgIi5leGUiIGFuZCB1c2UKCURPU0ZTX0dldEZ1bGxOYW1lIHRvIGxvY2F0ZSB0aGUgcHJvZ3JhbS4gTW92ZSBtb2R1bGUgZmluZCBwcm9jZXNzCglhZnRlciBmbGFnIHRlc3RpbmcgYW5kIHByb3ZpZGUgcXVpY2sgZXhpdCBpZiBub3QgZm91bmQuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBTbGF2YSBNb25pY2ggPFNsYXZhLk1vbmljaEBuZXRtYW5hZ2UuY29tPgoJSW1wbGVtZW50ZWQgZGlhbG9nIHVuaXRzIC0+IHBpeGVscyBjb252ZXJzaW9uIHZlcnkgY2xvc2UgdG8gaG93IGl0J3MKCWFjdHVhbGx5IGRvbmUgYnkgV2luZG93cy4KClNhdCBKdW4gIDUgMTU6MjM6MjAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9pbml0Z3VpZC5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvd2luZGVmLmgsIGluY2x1ZGUvd2luZS9vYmpfZGF0YW9iamVjdC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlb2JqLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd3R5cGVzLmgsIG9sZS9iaW5kY3R4LmMsIG9sZS9tb25pa2VyLmM6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCVNvbWUgbm9uLXRocmVhdGVuaW5nIGZpeGVzIHRvIHNvbWUgaGVhZGVycywgYXMgd2VsbCBhcyBzb21lIGNhc3RpbmcKCWNoYW5nZXMgdGhhdCBtYWtlIHdpbmVsaWIgbW9yZSB3aW4zMiBjb2RlIGNvbXBhdGlibGUuCgoJKiBmaWxlcy9kcml2ZS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCVN0dWIgZm9yIFNldFZvbHVtZUxhYmVsKCkuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZCBiYWNrIGxvc3QgdHJlYXRtZW50IG9mIEhXTkRfVE9QTU9TVC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVRyeSB0byBpbXByb3ZlIENvbmZpZ3VyZU5vdGlmeSBldmVudCBwcm9jZXNzaW5nLgoKCSogb2JqZWN0cy9wZW4uYzogSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cGVyc29uLm5ldD4KCUFsbG93IHBlbnMgd2l0aCBzdHlsZXMgZ3JlYXRlciB0aGFuIFBTX0lOU0lERUZSQU1FIHRvIGJlIGNyZWF0ZWQgd2l0aAoJRXh0Q3JlYXRlUGVuLgoKCSogcmVsYXkzMi9vbGVhdXQzMi5zcGVjLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBvbGUvdHlwZWxpYi5jLCBvbGUvdHlwZWxpYi5oOgoJUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCVJlYWQvbG9hZCB0eXBlIGxpYnJhcmllcy4gSW1wbGVtZW50YXRpb24gb2YgSVR5cGVMaWIsIElUWXBlSW5mbywKCUlUeXBlTGliMiBhbmQgSVR5cGVJbmZvMiBtZXRob2RzLgoKCSogb2xlL29sZTJkaXNwLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBbGxvdyBOVUxMIGFzIGFyZ3VtZW50IHRvIFN5c0ZyZWVTdHJpbmcgaW4gYWNjb3JkYW5jZSB3aXRoIFNESy4KCgkqIERFVkVMT1BFUlMtSElOVFM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJLSBtb3JlIHVwLXRvLWRhdGUgZGVzY3JpcHRpb24gb2Ygc291cmNlIHRyZWUKCS0gYmV0dGVyIGV4YW1wbGUgb2YgcmVxdWlyZWQgY29tbWVudHMgZm9yIGFuIEFQSSBpbXBsZW1lbnRhdGlvbgoJLSByZXBsYWNlbWVudCBvZiBXSU5FX1BBQ0tFRCBieSAicHNocGFjazEuaCIsIGV0Yy4KCS0gbmFtaW5nIGNvbnZlbnRpb25zIGZvciBub24tYXBpIGNhbGxzIGFuZCB0eXBlcwoJLSBsb2NhdGlvbiBjb252ZW50aW9ucyBmb3Igbm9uLWFwaSBoZWFkZXIgZmlsZXMgYW5kIHByb3RvdHlwZXMKCgkqIHJlbGF5MzIvbXByLnNwZWMsIGluY2x1ZGUvd2lubmV0d2suaCwgaW5jbHVkZS93bmV0LmgsIG1pc2MvbmV0d29yay5jOgoJUm9iZXJ0IFcgSGFsbCA8Ym9iaEBuLWNhbnRyZWxsLmRlbW9uLmNvLnVrPgoJQWRkZWQgMiBzdHVicy4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGJlaGF2aW91ciBvZiBBbGxvYy4uVGh1bmtsZXRDYWxsYmFja1tFeF0gZm9yIE5VTEwgdGFyZ2V0LgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpbiBFVkVOVF9RdWVyeVpPcmRlci4KCUZpeGVkIHBvdGVudGlhbCBYIHN5bmNocm9uaXphdGlvbiBwcm9ibGVtIGluIFgxMURSVl9XTkRfU2V0SG9zdEF0dHIuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUNvcnJlY3Qgc2VhcmNoIG9yZGVyIGluIFNlYXJjaFBhdGggZm9yIFdpbiAzLjEvOTUvOTguIFN0aWxsIGJyb2tlbiBmb3IgTlQuCgoJKiB3aW5kb3dzL3dpbi5jOiBTbGF2YSBNb25pY2ggPFNsYXZhLk1vbmljaEBuZXRtYW5hZ2UuY29tPgoJbyBjaGVjayBmb3IgYm90aCBDV19VU0VERUZBVUxUIGFuZCBDV19VU0VERUZBVUxUMTYuCglvIGlmIHggaXMgQ1dfVVNFREVGQVVMVCAob3IgQ1dfVVNFREVGQVVMVDE2KSBhbmQgeSBpcyAqbm90KgoJICBDV19VU0VERUZBVUxUIChvciBDV19VU0VERUZBVUxUMTYpIHRoZW4gdXNlIHkgYXMgYSBzZWNvbmQKCSAgcGFyYW1ldGVyIHRvIFNob3dXaW5kb3coKS4gU29tZSBhcHBzIChDQUxDLkVYRSBmb3IgV2luOTgKCSAgaXMgb25lIG9mIHRoZW0pIHVzZSB0aGlzIHVuZG9jdW1lbnRlZCBmZWF0dXJlIHRvIGNyZWF0ZQoJICBoaWRkZW4gd2luZG93IHdpdGggV1NfVklTSUJMRSBzdHlsZSBzZXQuCgoJKiByZWxheTMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBmb3IgRFBBX0xvYWRTdHJlYW0gYW5kIHN0dWIgZm9yCglEUEFfU2F2ZVN0cmVhbS4gIFRoYW5rcyB0byBFcmljIEtvaGwgKGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlKSBmb3IKCXRoZSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIGFuZCBwYXJhbWV0ZXIgaW5mb3JtYXRpb24uCgoJKiBkZWJ1Z2dlci9zdGFicy5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJTWFrZSBpdCBwb3NzaWJsZSB0byBsaW5rIFdpbmUgc3RhdGljYWxseSAoYXQgbGVhc3Qgb24gUmVkSGF0IDYuMCkuCgoJKiBjb250cm9scy9tZW51LmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJV2hlbiBsb29raW5nIGludG8gc3lzIG1lbnUsIGNoZWNrIGlmIGl0ZW1zIGFyZSBwcmVzZW50IGJlZm9yZQoJZGVyZWZlcmVuY2luZy4KCgkqIGRvY3VtZW50YXRpb24vQXR0aWMvd2luZS5tYW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQXV0b2NvbmZpZ3VyZSB0aGUgZGlyZWN0b3JpZXMgaW4gdGhlIG1hbnBhZ2UuCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS90dHlkcnYuaCwgaW5jbHVkZS94MTFkcnYuaCwgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBEdW1teU1vdGlvbk5vdGlmeSBFVkVOVCBkcml2ZXIgcm91dGluZS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkb2N1bWVudGF0aW9uLy5jdnNpZ25vcmUsIGRvY3VtZW50YXRpb24vTWFrZWZpbGUuaW4sIGRvY3VtZW50YXRpb24vd2luZS5tYW4uaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUF1dG9jb25maWd1cmUgdGhlIGRpcmVjdG9yaWVzIGluIHRoZSBtYW5wYWdlLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQWRkIHN0dWIgZm9yIExvY2tGaWxlRXggKEtFUk5FTDMyLjUxMykuCgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9pbnRlcm5hdGlvbmFsaXNhdGlvbjoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQ3VycmVudCBzdGF0dXMgb2YgV2luZSBvbiBpbnRlcm5hdGlvbmFsaXNhdGlvbi4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRG8gbm90IHByb2Nlc3MgV01fTEJVVFRPTlVQIG1lc3NhZ2UgaW4gQnV0dG9uV25kUHJvYygpCgl3aGVuIHRoZSBtb3VzZSBpcyBub3QgY2FwdHVyZWQuCgoJKiBncmFwaGljcy9wc2Rydi9pbml0LmMsIG9iamVjdHMvZGMuYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRnJvbSBDcmVhdGVDb21wYXRpYmxlREMsIHBhc3MgdGhlIGRldmljZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUKCXNvdXJjZSBEQyBpbiBvcmRlciB0byBhbGxvdyBQU0RSVl9DcmVhdGVEQyB0byBsb2NhdGUgdGhlIHByaW50ZXIgaW5mbwoJZm9yIHRoZSBkZXZpY2UuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgZGlnaXRhbCB2aWRlbyBpbnRlcmZhY2UKCUZpeGVkIGEgZmV3IGJ1Z3MgKGRldmljZSBuYW1lcyBhcmUgbm8gbG9uZ2VyIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlLAoJYWRkZWQgY2FsbCBiYWNrIHdpbmRvdywgYWxsIHN0cnVjdHVyZXMgbW92ZWQgdG8gMzIgYml0Li4uKS4KCgkqIGlmMTYzMi90aHVuay5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdvcmthcm91bmcgZ2NjIDIuNy4yLnggc2lnIDExIGlzc3VlLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvbWNpLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgKHN0aWxsIGluY29tcGxldGUpIGhhbmRsaW5nIG9mIE1DSV9CUkVBSyBjb21tYW5kLgoKCSogZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglVcGRhdGVkIGRvY3VtZW50YXRpb24vbm8td2luZG93cy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU3BlZWR1cCBlbmhhbmNlbWVudCBmb3IgdGhlIDgtPjE2IGFuZCA4LT4zMiBjb3B5IGxvb3AgaG90c3BvdHMsCgl1c2luZyBhIGZhc3RlciBnZW5lcmljIHJvdXRpbmUgYW5kIHNvbWUgaW5saW5lIGFzc2VtYmx5IGZvciBpMzg2CgkoY2xlYW51cHMgYnkgT3ZlKS4KCkZyaSBKdW4gIDQgMTk6NDk6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9oYW5kbGUuYywgc2VydmVyL2hhbmRsZS5oLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcHJvY2Vzcy5oLCBzZXJ2ZXIvdGhyZWFkLmM6CglNYWRlIGhhbmRsZSB0YWJsZSBhIHNlcGFyYXRlIG9iamVjdC4KCUdsb2JhbCBoYW5kbGUgdGFibGUgaXMgbm8gbG9uZ2VyIGJvdW5kIHRvIGEgcHJvY2Vzcy4KCVJlbW92ZWQgc3BlY2lhbCBoYW5kbGluZyBvZiB0aGUgaW5pdGlhbCBwcm9jZXNzLgoKCSogc2VydmVyL21haW4uYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvb2JqZWN0Lmg6CglBZGRlZCBvcHRpb25hbCBkZWJ1Z2dpbmcgY29kZSBpbiBvYmplY3QgbWFuYWdlbWVudC4KClNhdCBNYXkgMjkgMTQ6Mjc6MjcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbnByb2MuYywgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL3Rhc2suYzoKCUdvdCByaWQgb2YgVEhSRUFEX0luaXREb25lLgoJTWFkZSBUSFJFQURfQ3VycmVudCgpIGlubGluZS4KCU1vdmVkIHNlcnZlciB0aWQgaW50byBURUIuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJUmVpbXBsZW1lbnRlZCB0aGUgQ2hlY2tSYWRpb0J1dHRvbiBmdW5jdGlvbi4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBpbmNvcnJlY3QgbG9va3VwIG9mIGJhY2tncm91bmQgY29sb3IuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmM6CglDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgcHJvYmxlbXMgd2hlbiB1c2luZyBtdWx0aXBsZSBzdHlsZSBmbGFncyB0b2dldGhlci4KCgkqIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUZpeGVkIGEgcHJvYmxlbSB3aGVuIHVzaW5nIHN0cmluZyByZXNvdXJjZXMgYXMgdG9vbHRleHQuCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGJlaGF2aW9yIG9mIHRoZSBmb2N1cyB3aGVuIGEgcGFyZW50IHdpbmRvdyBpcyBkaXNhYmxlZC4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOiBKb3NodWEgVGhpZWxlbiA8dGhpZWxlbkBuZXRwZXJzb24ubmV0PgoJRml4ZWQgYSBidWcgd2hpY2ggY2F1c2VzIHRoZSBQb2x5QmV6aWVyIHRvIG5vdCBiZSB1cGRhdGVkIG9uIHJlZHJhdwoJKHdoZW4geW91IHdhbnQgdGhlbSB0byBiZSkuCgoJKiB3aW5kb3dzL2lucHV0LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IHdhcm5pbmcgaW4gVHJhbnNsYXRlQWNjZWxhdG9yLgoKCSogc2VydmVyL2hhbmRsZS5jOgoJRml4ZWQgZHVwbGljYXRlX2hhbmRsZSB0byB3b3JrIHdpdGggcHNldWRvLWhhbmRsZXMgKHJlcG9ydGVkIGJ5IE1hcmN1cwoJTWVpc3NuZXIpLgoKCSogZGxscy9jb21tZGxnL2NkbGdfeHgucmMsIGRsbHMvdmVyL3ZlcjE2LmMsIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGRsbHMvdmVyc2lvbi9pbnN0YWxsLmMsIGRsbHMvdmVyc2lvbi9yZXNvdXJjZS5jLCBpbmNsdWRlL3Zlci5oLCBpbmNsdWRlL3dpbnZlci5oLCB0b29scy93cmMvd3JjdHlwZXMuaDoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJdmVyLmggaXMgYSBsZWdhY3kgaGVhZGVyLiB3aW52ZXIuaCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgoKCSogZGxscy90YXBpMzIvcGhvbmUuYywgbWlzYy9jcnRkbGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc29tZSB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9saXN0dmlldy5oLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJLSBSZWltcGxlbWVudGVkIHRoZSBzY3JvbGxpbmcgdXNpbmcgU2V0U2Nyb2xsSW5mbyBhbmQgR2V0U2Nyb2xsSW5mby4KCS0gSW1wbGVtZW50ZWQgTFZNX0ZJTkRJVEVNIG1lc3NhZ2UuCgktIEFkZGVkIHNvbWUgbmV3IHdpbmRvdyBzdHlsZXMuCgktIEZpeGVkIHNvbWUgYnVncyBhbmQgZXh0ZW5kZWQgYSBudW1iZXIgb2YgZXhpc3RpbmcgZnVuY3Rpb25zLgoJLSBNb2RpZmllZCBzZWxlY3Rpb24gZnVuY3Rpb25zIHRvIHN1cHBvcnQgYXJlYSBzZWxlY3Rpb24gKGZvciBncm91cAoJICBzZWxlY3Rpb24gaW4gTFZTX0lDT04gYW5kIExWU19TTUFMTElDT04pLgoKCSogbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBjb3VwbGUgb2YgbWlzc2luZyBldmVudCBub3RpZmljYXRpb25zLiBTb21lIG1vcmUgZGVidWdnaW5nCgltZXNzYWdlcy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFJpa2hhcmR1ciBFZ2lsc3NvbiA8cmlrYXJkdXJAc2t5LmZyPgoJSWNlbGFuZGljIGtleWJvYXJkIHN1cHBvcnQuCgoJKiBncmFwaGljcy9kZHJhd19wcml2YXRlLmgsIGdyYXBoaWNzL2RkcmF3LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYmV0dGVyIGRlYnVnIG91dHB1dCBmb3Igc3VyZmFjZSBjcmVhdGlvbgoJLSBhZGRlZCAoZXhwZXJpbWVudGFsKSBESUJTZWN0aW9uIGltcGxlbWVudGF0aW9uIG9mIEdldERDIC8gUmVsZWFzZURDCgoJKiBncmFwaGljcy9kM2RkZXZpY2VzLmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ29ycmVjdGVkIHdhcm5pbmcuCgoJKiBjb250cm9scy9tZW51LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglTdXBwb3J0IFRQTV9SRVRVUk5DTUQgaW4gVHJhY2tQb3B1cE1lbnUuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4IDxyZXR1cm4+IGtleSAoc29tZWhvdyB3ZSBnZXQgYSBjb250cm9sIGtleXN0YXRlKS4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IEdlcmFsZCBQZmVpZmVyIDxwZmVpZmVyQGRiYWkudHV3aWVuLmFjLmF0PgoJRml4ZWQgY29tcGlsYXRpb24gZXJyb3Mgb24gbm9uLUxpbnV4IHN5c3RlbXMuCgoJKiBpbmNsdWRlL2RlYnVndG9vbHMuaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBtaXNzaW5nIFRSQUNFIGRlZmluZSB3aGVuIE5PX0RFQlVHX01TR1Mgd2FzIGRlZmluZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJQWRkZWQgbWlzc2luZyBXSU5BUEkgZm9yIFNIVmFsaWRhdGVVTkMuCgoJKiBkb2N1bWVudGF0aW9uL2xhbmd1YWdlczogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGFwdGVkIHRvIHRoZSBuZXcgZGxsIHJlc291cmNlIGhhbmRsaW5nIGJ5IEJlcnRobyBTdHVsdGllbnMuCgpNb24gTWF5IDI0IDE1OjAyOjE4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL3NoZWxsLmM6IFJlbGVhc2UgdGhlIFdpbjE2TG9jayBiZWZvcmUgY2FsbGluZyBXaW5FeGVjLgoKCSogc2NoZWR1bGVyL3RocmVhZC5jLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jOgoJUmVtb3ZlZCBwcm9jZXNzIGFyZ3VtZW50IHRvIFBST0NFU1NfQ2FsbFVzZXJTaWduYWxQcm9jLgoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1vdmVkIHJlbWFpbmluZyBpbml0aWFsaXNhdGlvbnMgdG8gdGhlIG5ldyBwcm9jZXNzIGNvbnRleHQuCglTaHVmZmxlZCB0aGluZ3MgYXJvdW5kIGEgYml0IGluIFBST0NFU1NfU3RhcnQgdG8gYXZvaWQgZGVhZGxvY2tzLgoJQ2hhbmdlZCBQUk9DRVNTX0NhbGxVc2VyU2lnbmFsUHJvYyB0byBhdm9pZCBhY2Nlc3NpbmcgYW5vdGhlciBwcm9jZXNzCglhZGRyZXNzIHNwYWNlLgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHM6CglBZGRlZCBzdXBwb3J0IGZvciBkdW1waW5nIHZhcmlhYmxlLXNpemUgZGF0YSBvZiBzZXJ2ZXIgcmVwbGllcy4KCUFkZGVkIGNtZF9saW5lIGFuZCBjbWRfc2hvdyBpbiBuZXdfcHJvY2VzcyByZXF1ZXN0LgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJZml4ZWQgYnVpbHRpbiBtbXN5c3RlbS5kbGwgaW5pdCBzZXF1ZW5jZQoKCSogbXVsdGltZWRpYS9BdHRpYy9pbml0LmMsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCXJlbW92ZWQgb2Jzb2xldGVkIGluaXQuYyBzb3VyY2UgZmlsZQoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJcmVtb3ZlZCB1bm5lY2Vzc2FyeSBNQ0kgZHJpdmVycyBlbnRyeSBwb2ludAoJYWRkZWQgdW5kb2N1bWVudGVkIG1tc3lzdGVtIGZ1bmN0aW9ucwoKCSogbXVsdGltZWRpYS90aW1lLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJbW92ZWQgdG8gbmV3IHRyYWNlIGludGVyZmFjZQoJbm93IGNhbGxpbmcgdGltZSBpbml0IGZ1bmN0aW9uIGZyb20gbW1zeXN0ZW0gYW5kL29yIHdpbm1tIGVudHJ5IHBvaW50CgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJaW5jbHVkZWQgRExMIGluaXQgc2VxdWVuY2UgKGZyb20gb2Jzb2xldGVkIGluaXQuYykKCWZpeGVkIGJ1aWx0aW4gbW1zeXN0ZW0uZGxsIGluaXQgc2VxdWVuY2UKCWZpeGVkIFBsYXlTb3VuZCB3aGVuIHVzZWQgd2l0aCBhbiBhc3luY2hyb25vdXMgYXVkaW8gZHJpdmVyCglmaXhlZCBtaWRpU3RyZWFtIGZ1bmN0aW9ucyBmb3IgU3RvcC9QYXVzZS9SZXN0YXJ0IGZ1bmN0aW9ucwoJZml4ZWQgZXJyb3IgaGFuZGxpbmcgaW4gd2F2ZU91dE9wZW4gd2l0aCBRVUVSWV9GT1JNQVQgZmxhZwoKCSogbXVsdGltZWRpYS9taWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJaW5jbHVkZWQgbWlkaSBpbml0IHNlcXVlbmNlIChmcm9tIG9ic29sZXRlZCBpbml0LmMpCgltb3ZlZCB0byBuZXcgdHJhY2UgaW50ZXJmYWNlCglzaW1wbGlmaWVkIGNvZGUgd2l0aCB1c2luZyBuZXcgY29uZmlndXJhdGlvbiBjb25zdGFudCAoSEFWRV9PU1NfTUlESSkKCWZpeGVkIGVycm9uZW91cyB3YXJuaW5ncwoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglpbmNsdWRlZCBtY2kgaW5pdCBzZXF1ZW5jZSAoZnJvbSBvYnNvbGV0ZWQgaW5pdC5jKQoJbW92ZWQgdG8gbmV3IHRyYWNlIGludGVyZmFjZQoKCSogbXVsdGltZWRpYS9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCW91dHB1dDogYmV0dGVyIGludGVybmFsIHRocmVhZCBpbnRlcmZhY2UgKG9ydGhvZ29uYWxpemF0aW9uIG9mIHN0YXRlcyBhbmQgZXZlbnRzKQoJb3V0cHV0OiByZW1vdmVkIHVzZSBvZiBEU1BfSU9DVExfR0VUT1NQQUNFCglvdXRwdXQ6IGZpeGVkIGxhdGVuY3kgaW4gcmVzZXQgbWVzc2FnZXMgaGFuZGxpbmcKCW91dHB1dDogcmVwbGFjZWQgc29tZSBwb2xsaW5nIG1lY2hhbmlzbXMgd2l0aCBibG9ja2luZyBvbmVzCglvdXRwdXQ6IGZpeGVkIGdldC9zZXQgdm9sdW1lIGZ1bmN0aW9ucwoKCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJbW92ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UKCWZpeGVkIGJ1Z3MgaW4gcGF1c2UvcGxheS9zdG9wIGZ1bmN0aW9ucwoJZml4ZWQgc2lnbmF0dXJlIG9mIGRyaXZlciBlbnRyeSBwb2ludAoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJbW92ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UKCWZpeGVkIGJ1Z3MgaW4gcGF1c2UvcGxheSBmdW5jdGlvbnMKCWZpeGVkIHNpZ25hdHVyZSBvZiBkcml2ZXIgZW50cnkgcG9pbnQKCgkqIG11bHRpbWVkaWEvbWl4ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIHRyYWNlcy4KCgkqIHdpbmRvd3MvZHJpdmVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlIGV4dHJhbmVvdXMgd2ludXNlcjE2LmguCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hhbmdlZCBwcmludGYgaW50byBUUkFDRS4KCgkqIGRlYnVnZ2VyL2V4cHIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBhIGZldyB0eXBvcy4KCgkqIGRlYnVnZ2VyL3N0YWNrLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQ2hlY2sgd2hlbiBiYWNrdHJhY2tpbmcgdGhlIHN0YWNrIGlmIGZyYW1lcyBhcmUgY29ycmVjdCAocmVhZGFibGUpLgoKCSogd2luZG93cy9ldmVudC5jLCBpbmNsdWRlL21lc3NhZ2UuaCwgaW5jbHVkZS93aW5zb2NrLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIG1pc2Mvd2luc29jay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBXSU5TT0NLIG5ldHdvcmsgSU8gZXZlbnQgaGFuZGxpbmcgdG8gc3BlY2lhbCB0aHJlYWQuCglSZW1vdmVkIEVWRU5UX1dhaXROZXRFdmVudCwgaW50cm9kdWNlZCBhIGdsb2JhbCBzY2hlZHVsZXIgZXZlbnQuCgoJKiBtaXNjZW11L21haW4uYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJV2FpdCB1bnRpbCBjaGlsZCBpbml0aWFsaXplZCBiZWZvcmUgcmV0dXJuaW5nIGZyb20gUFJPQ0VTU19DcmVhdGUuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2tlcm5lbDMyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSByZWdpc3RlciBmdW5jdGlvbnMgd2l0aCBhcmd1bWVudHMgZm9yIExvZ0FwaVRoay4uLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJQ2xlYW5lZCB1cCBMSVNUVklFV19LZXlEb3duIGJ5IHVzaW5nIExJU1RWSUVXX0dldE5leHRJdGVtLiAgUmVtb3ZlZCB1bnVzZWQKCXZhcmlhYmxlIGluIExJU1RWSUVXX0dldE5leHRJdGVtLgoKU3VuIE1heSAyMyAyMDowMjowNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgaW5jbHVkZS90aHJlYWQuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmM6CglVc2UgdGhlIG5ldyBkZWJ1ZyBmdW5jdGlvbnMgdG8gc2VuZCBkZWJ1ZyBldmVudHMgYXQgYXBwcm9wcmlhdGUgcGxhY2VzLgoJUGFzcyB0aGUgcHJvY2VzcyBjcmVhdGlvbiBmbGFncyB0byBQUk9DRVNTX0NyZWF0ZS4KCgkqIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvZGVidWdnZXIuYywgd2luMzIvbmV3Zm5zLmMsIHdpbjMyL3Byb2Nlc3MuYywgaW5jbHVkZS93aW5iYXNlLmgsIG1pc2MvbHN0ci5jOgoJSW1wbGVtZW50ZWQgdGhlIFdpbjMyIGRlYnVnIEFQSSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2RlYnVnZ2VyLmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdGhyZWFkLmgsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgZGVidWcgZXZlbnRzIHN1cHBvcnQuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBNYXkgMjMgMTA6MjU6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1lbW9yeS9nbG9iYWwuYywgbWVtb3J5L2hlYXAuYywgbWVtb3J5L2xkdC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWVtb3J5L3N0cmluZy5jLCBtZW1vcnkvdmlydHVhbC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY29sb3IuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9wYWxldHRlLmMsIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9zZXJ2aWNlcy5jLCBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvc3lzbGV2ZWwuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9jb2RlX3BhZ2UuYywgd2luMzIvY29uc29sZS5jLCB3aW4zMi9lcnJvci5jLCB3aW4zMi9maWxlLmMsIHdpbjMyL2luaXQuYywgd2luMzIvcHJvY2Vzcy5jLCB3aW4zMi9zdHJ1Y3QzMi5jLCB3aW4zMi90aHJlYWQuYywgd2luMzIvdGltZS5jLCBkbGxzL250ZGxsL2ZpbGUuYywgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL29tLmMsIGRsbHMvbnRkbGwvcmVnLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGRsbHMvbnRkbGwvc2VjLmMsIGRsbHMvbnRkbGwvc3luYy5jLCBkbGxzL250ZGxsL3RpbWUuYywgbWVtb3J5L2F0b20uYzoKCUNvbnZlcnRlZCB0byB0aGUgbmV3IGRlYnVnIGludGVyZmFjZSwgdXNpbmcgc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrCglTdHJpZHZhbGwuCgoJKiBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IGR3RmxhZ3MgbXVzdCBkZXNjcmliZSB0YXJnZXQgcHJvY2VzcyBpbiBVc2VyU2lnbmFsUHJvYy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOiBJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBtaXNzaW5nIFdJTkFQSSB0byBTSEVMTDMyXzY1NCBzdHViLiAgRml4ZXMgY3Jhc2ggaW4gV2luOTgKCUV4cGxvcmVyLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJTElTVFZJRVdfS2V5RG93bjogSW52YWxpZGF0ZSB0aGUgbGlzdHZpZXcgd2luZG93IG9ubHkgd2hlbiB0aGUKCXNlbGVjdGVkIGl0ZW0gY2hhbmdlcy4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbWlzYy93c3ByaW50Zi5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2tlcm5lbDMyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIF9EZWJ1Z091dHB1dCAoS0VSTkVMLjMyOCksIExvZ0FwaVRoayAoS0VSTkVMLjQyMyksIExvZ0FwaVRoa0xTRgoJKEtFUk5FTDMyLjQyKSwgTG9nQXBpVGhrU0wgKEtFUk5FTDMyLjQ0KSwgTG9nQ0JUaGtTTCAoS0VSTkVMMzIuNDcpLAoJYW5kIFNTQ29uZmlybVNtYWxsU3RhY2sgKEtFUk5FTC43MDQpLgoKCSogaWYxNjMyL2Rpc3BsYXkuc3BlYywgd2luZG93cy9kaXNwbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeCB0eXBvICh3cm9uZyBESVNQTEFZLkNoZWNrQ3Vyc29yIG9yZGluYWwpLgoJU3VwZXJmbHVvdXMgRklYTUUgY29udmVydGVkIHRvIFRSQUNFIGluIENoZWNrQ3Vyc29yLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IHN5c2xldmVsIHJlbGF5IGNoZWNrIHdhcyB0b28gc3RyaWN0LgoKCSogc2VydmVyL21hcHBpbmcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgdXNlIHBhZ2VzaXplIGFsaWduZWQgc2l6ZV9sb3cgdG8gZ3JvdyBtYXBwZWQgZmlsZSwgYnV0IG9yaWdpbmFsCglzaXplX2xvdy4gKGZpeGVzIEhlaXNlcyBJbmRleCBSZWdpc3RlcikKClNhdCBNYXkgMjIgMTk6MjI6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBzb21lIG1vcmUgZGVidWcgb3V0cHV0CgktIGNvcnJlY3RlZCBhIHNsaWdodCBidWcgaW4gREdBIERpcmVjdERyYXcgY3JlYXRpb24KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgbWFqb3IgbWVtb3J5IGxlYWsgaW4gdGhlIHdpbmRvdyBtYW5hZ2VtZW50IGNvZGUuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUluIFNldFdpbmRvd1BvcyBpZiBjaGFuZ2luZyBaIG9yZGVyIGFuZCBjaGlsZCB3aW5kb3cgbm90IHlldCBpbiBpdHMKCXBhcmVudCBsaXN0LCBkbyBub3QgbGluayBpdCBpbiBXSU5QT1NfU2hvd0ljb25UaXRsZSwgY2hlY2sgZm9yIHJldHZhbAoJb2YgV0lOX0ZpbmRXbmRQdHIuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglEaXNhYmxlIHBhc3NpbmcgZGV2aWNlIGNvbnRleHQgdG8gWDExRFJWX0RJQl9CdWlsZENvbG9yTWFwIHdoZW4gUkdCCgljb2xvcm1hcCBpcyB1c2VkLgoKCSogZGVidWdnZXIvZGJnLnk6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG9uJ3QgZnJlZXplIG90aGVyIHRocmVhZCB3aGlsZSBpdCBtYXkgaG9sZCB0aGUgWCBjcml0aWNhbCBzZWN0aW9uLgoKCSogaW5jbHVkZS9kaXNwbGF5LmgsIGxvYWRlci9tYWluLmMsIHdpbmRvd3MvZGlzcGxheS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBVc2VyUmVwYWludERpc2FibGUxNigpLgoKCSogd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgRVZFTlRfV2FpdE5ldEV2ZW50KCkgY2FsbHMuCgoJKiB3aW5kb3dzL2lucHV0LmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgSXNVc2VySWRsZTE2KCkuCgoJKiBpbmNsdWRlL3R0eWRydi5oLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gRVZFTlRfIGRyaXZlciBjaGFuZ2VzLgoKCSogbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3N5bmNocm8uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBldmVudCBzeW5jaHJvbml6YXRpb24gY2hhbmdlcy4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvd25kLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vdmVkIFggaW5wdXQgZXZlbnQgaGFuZGxpbmcgb3V0IG9mIEVWRU5UX1dhaXROZXRFdmVudCBhbmQgaW50bwoJc2VydmljZSB0aHJlYWQgY2FsbGJhY2s7IG1vdmVkIEVWRU5UX1dhaXROZXRFdmVudCBvdXQgb2YgdGhlIEVWRU5UXwoJZHJpdmVyLiAgQ2hhbmdlZCB3aW5Db250ZXh0IHRvIGhvbGQgSFdORCBpbnN0ZWFkIG9mIFdORCAqLgoKCSogd2luZG93cy93aW5wb3MuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEb24ndCBjaGFuZ2UgWi1vcmRlciBvZiBjaGlsZCB3aW5kb3dzIHdoZW4gYWN0aXZhdGluZy4KCgkqIGRsbHMvd2luc3Bvb2wvaW5mby5jLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbnNwb29sLmgsIHJlbGF5MzIvd2luc3Bvb2wuc3BlYzoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIEFkZFByaW50ZXJBLCBBZGRQcmludGVyRHJpdmVyQSBhbmQgR2V0UHJpbnRlckRyaXZlckRpcmVjdG9yeQoJTW92ZWQgc29tZSAxNmJpdCBHREkgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGZyb20gd2luc3Bvb2wuaCAtPiB3aW5nZGkxNi5oCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDcmVhdGUgYSBuZXcgY29uZmlndXJhdGlvbiBtYW5pZmVzdCBjb25zdGFudCBIQVZFX09TU19NSURJLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBzaWxseSBFSU5UUiBidWcgd2l0aCBzdGFydGluZyBkb3Ntb2QuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBLZXZpbiBIb2xicm9vayA8a3doQG5lb3NvZnQuY29tPgoJU2hvdWxkIGNvbXBhcmUgdG8gWDExIGNvbnN0YW50ICJOb25lIiBzaW5jZSBhIGNvbG9ybWFwIGlzIGFuIFgKCVJlc291cmNlIElEIGFuZCBub3QgYSBwb2ludGVyLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCVN0b3AgYSBsaXN0Ym94IGJ1ZyB0aGF0IGNhdXNlcyBhIGRpdiBieSB6ZXJvIHdoZW4gdGhlIGl0ZW0gaGVpZ2h0CglpcyB6ZXJvLiBEb2Vzbid0IHNvbHZlIHRoZSByb290IG9mIHRoZSBwcm9ibGVtIHRob3VnaC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX1B0LnJjOgoJQW5kcmUgTWFsYWZheWEgQmFwdGlzdGEgPE1hbGFmYXlhQG1pbGVuaW8zLnB0PgoJQWJvdXQgZGlhbG9nIHRyYW5zbGF0ZWQgdG8gUG9ydHVndWVzZS4KCgkqIGlmMTYzMi90aHVuay5jOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+Cgl0YXNrLmggd2FzIGluY2x1ZGVkIHR3aWNlLiAgUmVtb3Zpbmcgb25lIGZpeGVkIGEgc2lnMTEgaW4gZ2NjLTIuNy4yLjMuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGVjayBpZiBkYyBoYXMgYmVlbiBjcmVhdGVkIGJlZm9yZSB1c2luZyBpdC4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglBZGQgYSBmZXcgbW9yZSAzMi0+MTYgRXNjYXBlIGNvbnZlcnNpb25zLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jLCBpZjE2MzIvcmVsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hlY2sgZm9yIHN5c2xldmVsIHZpb2xhdGlvbnMgd2hpbGUgcmVsYXkgZGVidWdnaW5nLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBpbmNsdWRlL3N5c2xldmVsLmgsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCB3aW5kb3dzL3dpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXByb3ZlZCBzeXNsZXZlbCBoYW5kbGluZywgc3RvcmUgY3VycmVudGx5IGhlbGQgc3lzbGV2ZWxzIGluIHRocmVhZAoJZGF0YWJhc2UsIFdJTl9Dcml0U2VjdGlvbiBjb252ZXJ0ZWQgdG8gc3lzbGV2ZWwuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogSm9zaHVhIFRoaWVsZW4gPHRoaWVsZW5AbmV0cGVyc29uLm5ldD4KCUFkZGVkIG1tc3lzdGVtLmggaW5jbHVkZS4KCgkqIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHdpbmRvd3MvdXNlci5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGluY2x1ZGUvdXNlci5oLCBpbmNsdWRlL3dpbmUvd2luYmFzZTE2Lmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIEV4aXRLZXJuZWwxNiAocmVwbGFjaW5nIFVTRVJfRXhpdFdpbmRvd3MpLCBFeGl0UHJvY2VzczE2LCBhbmQKCU1hcFByb2Nlc3NIYW5kbGU7IHN0dWIgZm9yIEJVTk5ZXzM1MS4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUhhbmRsZSBwcm9jID09IE5VTEwgaW4gVEhVTktfU2V0RENIb29rIGNvcnJlY3RseS4KCgkqIGZpbGVzL3Byb2ZpbGUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSB1bmRvY3VtZW50ZWQgY29tYmluYXRpb24KCUdldFByaXZhdGVQcm9maWxlU3RyaW5nQShzZWN0aW9uID09IE5VTEwsIGVudHJ5ID09IE5VTEwsIC4uLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUNsZWFuZXIgbnVsbCBwb2ludGVyIGNoZWNrIGluIEhFQURFUl9JbnNlcnRJdGVtQSBhbmQgSEVBREVSX0luc2VydEl0ZW1XLgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJSW1wbGVtZW50ZWQgR2V0TmV4dEl0ZW0gZm9yIHRoZSBMaXN0dmlldyBjb250cm9sLgoKCSogc2NoZWR1bGVyL3NlcnZpY2VzLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRXhwaXJlIHRpbWVycyBvbiBleHBpcnkgdGltZSB0b28sIG5vdCBqdXN0IGFmdGVyLgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG9sZS9hbnRpbW9uaWtlci5jLCBvbGUvYmluZGN0eC5jLCBvbGUvY29tcG9zaXRlbW9uaWtlci5jLCBvbGUvZGF0YWNhY2hlLmMsIG9sZS9kZWZhdWx0aGFuZGxlci5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2hnbG9iYWxzdHJlYW0uYywgb2xlL2lmcy5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL21lbWxvY2tieXRlcy5jLCBvbGUvbW9uaWtlci5jLCBvbGUvb2xlZm9udC5jLCBvbGUvb2xlb2JqLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYywgd2luZG93cy9kaW5wdXQuYywgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvcmVnc3RyZWFtLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglNaWNyb3NvZnQgY29tIHZ0YWJsZSBjb21wYXRpYmlsaXR5IHdvcmthcm91bmQgZm9yIGcrKy4gIEJhc2ljYWxseSBhZGRzCglhbiBvcHRpb25hbCA4IGJ5dGVzIHBhZGRpbmcgdG8gQ09NIG9iamVjdHMgd2hlcmUgdGhlIFJUVEkgd291bGQgYmUuCgoJKiBpbmNsdWRlL3N5c21ldHJpY3MuaCwgbWlzYy9zaGVsbC5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVwbGFjZWQgYWxsIG9jY3VyZW5jZXMgb2YgU1lTTUVUUklDU194eCBhbmQgc3lzTWV0cmljc1tTTV94eF0gYnkKCUdldFN5c3RlbU1ldHJpY3MoU01feHgpLCByZW1vdmVkIG5vIGxvbmdlciBuZWVkZWQgaW5jbHVkZXMgb2YKCXN5c21ldHJpY3MuaC4KCgkqIG1zZG9zL2ludDE2LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgSU5UX0ludDE2QWRkQ2hhci4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQnVnZml4OiBQcmV2ZW50IG51bGwtcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBUUkFDRSBhcmd1bWVudCBsaXN0IGluCglSRVNfRmluZFJlc291cmNlCgoJKiBsb2FkZXIvZWxmZGxsLmM6IEJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglGaXhlZCB3cm9uZyBORSBtb2R1bGUgcmVnaXN0cmF0aW9uIHNvIHRoYXQgcmVzb3VyY2VzIHdvcmsuCgoJKiBpZjE2MzIvdGh1bmsuYywgdG9vbHMvYnVpbGQuYywgd2luMzIva2VybmVsMzIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2V0ICVlYnggdG8gcG9pbnQgdG8gcmVhbCAxNi1iaXQgc3RhY2sgaW4gQ0JDbGllbnRUaHVua1NMLgoJUGFzcyAlZXNpIGJhY2stYW5kLWZvcnRoIGluIENCQ2xpZW50VGh1bmtTTChFeCkuCglDb3B5IG1vZGlmaWVkIGJ1ZmZlcnMgYmFjayBhZnRlciByZXR1cm4gZnJvbSBGVF9UaHVuay4KCUZpeCBicm9rZW4gcmVjb2duaXRpb24gb2YgTFMgdGh1bmtsZXRzLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgdXNlIG9mIHdpbi5oLCBzeXNtZXRyaWNzLmggYW5kIGFzc29jaWF0ZWQgV0lORSBVU0VSIGludGVybmFsCgl2YXJpYWJsZXMuIEFkZGVkIG1pc3NpbmcgaW5mb1B0ci0+QnVkZHkgPSBod25kQnVkOyBpbiB1cGRvd24uYwoKCSogZGxscy9jb21jdGwzMi9BdHRpYy9wcm9wc2hlZXQuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMi5oLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdG9vbGJhci5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVRvb2xiYXIgY3VzdG9taXphdGlvbiBkaWFsb2cgKHRha2Ugb25lKS4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIEdldFRvcFdpbmRvdyBzbyBpdCB3aWxsIGNvcnJlY3RseSBoYW5kbGUgdGhlIE5VTEwgcGFyYW1ldGVyLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4IHN3YXBwZWQgRnJlZUxpYmFyeSByZXR1cm4gdmFsdWVzLiBIYW5kbGUgRnJlZUxpYnJhcnkoIDAgKSBiZXR0ZXIuCglGaXggRExMX1BST0NFU1NfREVUQUNIIGNhbGwgc2VxdWVuY2UgYnVncyByZXN1bHRpbmcgZnJvbSBuZXN0ZWQKCUZyZWVMaWJyYXJ5IGNhbGxzLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc3BlY3MgZm9yIG1peGVyR2V0RGV2Q2FwczE2L21peGVyR2V0SUQxNiwgZml4ZWQgbWl4R2V0RGV2Q2FwczE2LgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2RldmljZXMuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2ludDIxLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoYW5nZWQgZ2xvYmFsIERPU19MT0wgaW50byBmdW5jdGlvbiBET1NNRU1fTE9MKCkgaW4gb3JkZXIgdG8gb3BlcmF0ZQoJb24gdGhlIGNvcnJlY3QgYWRkcmVzcyBzcGFjZS4gQWRkZWQgRE9TTUVNX01vdmVQb2ludGVycygpIHRoYXQKCXJlbG9jYXRlcyBzZWxlY3RvcnMgd2hlbiB0aGUgRE9TIGFkZHJlc3Mgc3BhY2UgY2hhbmdlcyAoaS5lLiB3aGVuCglkb3Ntb2QgaXMgc3Bhd25lZCwgcGFydGljdWxhcmx5IGZyb20gV2luMTYgYXBwcyB0aGF0IHVzZXMgRFBNSSB0bwoJZXhlY3V0ZSByZWFsLW1vZGUgY29kZSkuIE1vcmUgY29tcGxldGUgRE9TIGRldmljZSBpbXBsZW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgTVpfQ3VycmVudCgpIChyZXR1cm5zIGN1cnJlbnQgTFBET1NUQVNLKSBhbmQgRE9TVk1fV2FpdCgpCgkoRE9TVk0gaWRsZSBtZXNzYWdlIGxvb3ApLCBhbmQgZmllbGRzIGhDb25JbnB1dCBhbmQgaENvbk91dHB1dC4KCgkqIG9iamVjdHMvYml0bWFwLmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglBZGQgc29tZSBudWxsIGNoZWNraW5nIGluIHRoZSBHZXQvU2V0Qml0bWFwQml0cyBmdW5jdGlvbnMuCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBpbml0IGZ1bmN0aW9uIGZvciBDUlRETEwsIGFsbG9jYXRlIHN0ZGlvL3N0ZGVyci9zdGRvdXQgb24KCURMTF9QUk9DRVNTX0FUVEFDSCwgaW5jcmVhc2UgYnVmZmVyIGZvciB2ZnByaW50ZigpIChXaW45NSBhcnAuZXhlCgluZWVkcyAxLjNLQikuCgoJKiBkZWJ1Z2dlci9tZW1vcnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzdXBwb3J0IGZvciBGcmVlQlNEIDMuMCB0byBERUJVR19jaGVja21hcF9iYWQoKS4KCgkqIG1pc2Mvd2luc29jay5jOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglQcmludCBhIG1vcmUgZWZmZWN0aXZlIChhbmQgdmlzaWJsZSkgZXJyb3IgbWVzc2FnZSB3aGVuIGFuIGFwcGxpY2F0aW9uCgljYW4ndCBjcmVhdGUgYSBzb2NrZXQgd2l0aCB0eXBlID09IFNPQ0tfUkFXLgoKCSogaW5jbHVkZS9tbXJlZy5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVNvbWUgbW9yZSBkZWZpbmVzIGZvciBtdWx0aW1lZGlhLgoKCSogbXNkb3MvdnhkLmMsIHdpbjMyL2RldmljZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAcG9wMy5wb3AuZGViaXRlbC5uZXQ+CglTb21lIHN0dWJzIGZvciBwY2NhcmQgdnhkIHRvIGRlYnVnIHRoZSBuYXRpdmUgc2hlbGwzMi4KCgkqIG11bHRpbWVkaWEvdGltZS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVzZSBzZXJ2aWNlIHRocmVhZCBmb3IgInRydWUiIG11bHRpbWVkaWEgdGltZXJzLgoJUmVtb3ZlZCBpbXBsZW1lbnRhdGlvbiBvZiBmYWtlIG11bHRpbWVkaWEgdGltZXJzLgoJU2V0IG1pbmltdW0gcmVzb2x1dGlvbiB0byAxMCBtcyAodGhlIHRpbWluZyByZXNvbHV0aW9uIG9mIHRoZSBMaW51eAoJa2VybmVsKS4gRml4ZWQgYSBjb3VwbGUgb2YgZmxhd3MuCgoJKiBtaXNjL3NweS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBwb3AzLnBvcC5kZWJpdGVsLm5ldD4KCUltcGxlbWVudGVkIHByaW50aW5nIG91dCBvZiBzb21lIHN0cnVjdHVyZXMuCgpUaHUgTWF5IDIwIDE2OjQwOjIzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zb2NrZXQuYzoKCVNldCBvbmx5IHRoZSBjbGllbnQgc29ja2V0IGluIG5vbi1ibG9ja2luZyBtb2RlIGluc3RlYWQgb2YgYWxsIGZkczsKCXNob3VsZCBhdm9pZCBwcm9ibGVtcyB3aXRoIHN0ZGlvIGhhbmRsZXMuCgpNb24gTWF5IDE3IDE2OjIwOjUzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUvd2luZS93aW5nZGkxNi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnNwb29sLmgsIG1pc2MvQXR0aWMvc3Bvb2xlci5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3ByaW50ZHJ2LmMsIG9iamVjdHMvZGMuYywgZGxscy93aW5zcG9vbC8uY3ZzaWdub3JlLCBkbGxzL3dpbnNwb29sL01ha2VmaWxlLmluLCBkbGxzL3dpbnNwb29sL2luZm8uYywgZ3JhcGhpY3MvZHJpdmVyLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvZW52LmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BwZC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCUh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBEb2N1bWVudFByb3BlcnRpZXMsIERldmljZUNhcGFiaWxpdGllcywgYmVnaW5uaW5ncyBvZgoJT3Blbi9HZXQvQ2xvc2VQcmludGVyLiAgQWRkaXRpb25zIHRvIFBTRFJWX0RldmljZUNhcGFiaWxpdGllcy4KCVNwbGl0IG9mZiBXSU5TUE9PTCBpbnRvIGl0cyBvd24gZGlyZWN0b3J5LgoJU2V2ZXJhbCBmdW5jdGlvbnMgYWRkZWQgdG8gRENfRnVuY3MuCglCYXNlZCBsYXJnZWx5IG9uIGEgcGF0Y2ggYnkgUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglnbGlkZTJ4IGxvYWRvcmRlciBpcyAic28sbmF0aXZlIi4KCgkqIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXByb3ZlZCBzaG9ydGN1dHMgLSBmb2xsb3dzIGp1bXBzIGluIHRyeWluZyB0byBhdm9pZCBzd2l0Y2hpbmcgdG8KCXJlYWwgbW9kZSB1bm5lY2Vzc2FyaWx5LgoKCSogZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVwZGF0ZWQgYW5kIGltcHJvdmVkIGluc3RydWN0aW9ucy4KCgkqIGRlYnVnZ2VyL2V4cHIuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlICJXaW5lLWRiZz5zZXQgKnNlZzpvZmYgPSB2YWwiIHdvcmsgKHByZXZpb3VzbHkgb25seQoJIldpbmUtZGJnPnNldCAqb2ZmID0gdmFsIiB3b3JrZWQpLgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jOgoJSnVra2EgS2FuZ2FzIDxqdGthbmdhc0BuaWMuZmk+CglXaGVuIG9wZW5pbmcgdGhlIGZpbGUgd2UgZG9uJ3QgbmVlZCBNTUlPX0VYQ0xVU0lWRQoJcmlnaHRzLiBNTUlPX0RFTllXUklURSBzaG91bGQgYmUgc3VmZmljaWVudC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQHBvcDMucG9wLmRlYml0ZWwubmV0PgoJUHJldmVudCBjcmFzaCBpbiBzdHViIG9mIFNoZUdldERpclcuCgoJKiBkbGxzL3NoZWxsMzIvc2hsbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAcG9wMy5wb3AuZGViaXRlbC5uZXQ+CglGdXJ0aGVyIGltcGxlbWVudGF0aW9uIG9mIHRoZSBGaWxlTWVudS4KCgkqIHdpbmRvd3MvbWRpLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQHBvcDMucG9wLmRlYml0ZWwubmV0PgoJU2V0IHRoZSBkZWZhdWx0IG1lbnUgaXRlbSBvZiB0aGUgd2luZG93IG1lbnUKCgkqIHdpbmUuaW5pOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglDaGFuZ2VkIHNlcmlhbCBwb3J0cyBpbiB3aW5lLmluaSB0byAvZGV2L3R0eVNYIGZyb20gL2Rldi9jdWFYIGluCglhY2NvcmRhbmNlIHdpdGggTGludXggMi4yIENoYW5nZXMgZmlsZS4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbG9hZGVyL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZWxlYXNlIFdpbjE2TG9jayB3aGVuIGNhbGxpbmcgTG9hZExpYnJhcnkzMiBmcm9tIDE2LWJpdCBjb2RlLgoKCSogaWYxNjMyL3RodW5rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgVEhVTktfU2V0RENIb29rIHdoZW4gdXNpbmcgbmF0aXZlIFVTRVIuCgoJKiB3aW4zMi9rZXJuZWwzMi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRlRfUHJvbG9nUHJpbWUgd2FzIGJyb2tlbiBkdWUgdG8gcmVsYXkgY2hhbmdlcy4KCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTb21lIHN0dWJzIGFkZGVkLgoKCSogd2luZG93cy9ob29rLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3VzcGVuZCB3aW5kb3cgbG9ja3MgYmVmb3JlIGNhbGxpbmcgaG9vayBwcm9jZWR1cmUuCgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHdpbmRvdyByZWZjb3VudCBoYW5kbGluZyBpbiBHZXROZXh0RGxnR3JvdXBJdGVtLgoKCSogY29udHJvbHMvYnV0dG9uLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbW92ZWQgc3VwZXJmbHVvdXMgV0lOX1JlbGVhc2VXbmRQdHIuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BtdWQuZGU+CglYbGliX0lEaXJlY3REcmF3U3VyZmFjZTRJbXBsX0ZsaXAgc2hvdWxkIHNob3cgJ2ZsaXB0bycgc3VyZmFjZSwgbm90CglwcmV2aW91cyBvbmUuIChyZXBvcnRlZCBieSBPdmUpCgpTdW4gTWF5IDE2IDE3OjExOjU4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oOgoJQWRkZWQgYSBmZXcgbWlzc2luZyBkZWJ1ZyBldmVudCBkZWZpbml0aW9ucy4KCgkqIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9waXBlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oOgoJQWRhcHRlZCB0byBuZXcgc2VsZWN0IGludGVyZmFjZS4KCUZpeGVkIGJ1ZyBpbiAqX3NpZ25hbGVkIHJvdXRpbmVzIHRoYXQgY291bGQgY2F1c2UgYnVzeS13YWl0aW5nIGluIHRoZQoJc2VsZWN0IGxvb3AuCgoJKiBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc29ja2V0LmM6CglDaGFuZ2VkIHNlbGVjdCBpbnRlcmZhY2UsIHNlcGFyYXRlZCB0aW1lb3V0cyBmcm9tIGZpbGUgZGVzY3JpcHRvcnMuCgoJKiBzZXJ2ZXIvaGFuZGxlLmMsIHNlcnZlci9oYW5kbGUuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaDoKCU1vdmVkIHByb2Nlc3Mgc3RydWN0dXJlIGRlZmluaXRpb24gdG8gcHJvY2Vzcy5oLgoJQWRkZWQgc3VzcGVuZC9yZXN1bWVfcHJvY2Vzcy4KCU1vdmVkIGhhbmRsZSB0YWJsZSBiYWNrIGludG8gdGhlIHByb2Nlc3Mgc3RydWN0dXJlLgoKCSogc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaDoKCUFkZGVkIFRFQiBpbiBpbml0X3RocmVhZCByZXF1ZXN0LgoKU2F0IE1heSAxNSAxMDo1Mjo1NiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzY2VtdS9pbnN0ci5jOgoJVHJpZWQgdG8gYWRkIGFuIGVycm9yIG1lc3NhZ2Ugd2hlbiBjcmFzaGluZyBvbiBhIHNlbGVjdG9yIGxvYWQgYmVjYXVzZQoJb2YgbWlzc2luZyBMRFQgc2hhcmluZyBiZXR3ZWVuIHRocmVhZHMgKHVudGVzdGVkKS4KCgkqIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jaGFuZ2UuYywgc2VydmVyL2NvbnNvbGUuYywgc2VydmVyL2RldmljZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL2hhbmRsZS5jLCBzZXJ2ZXIvaGFuZGxlLmgsIHNlcnZlci9tYWluLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvb2JqZWN0LmMsIHNlcnZlci9vYmplY3QuaCwgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3Byb2Nlc3MuaCwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbGVjdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci9zbmFwc2hvdC5jLCBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvQXR0aWMvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL0F0dGljL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIvQXR0aWMvdGhyZWFkLmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgbWVtb3J5L3ZpcnR1YWwuYzoKCVNlcnZlciByZW9yZ2FuaXphdGlvbjoKCS0gbW92ZWQgcmVxdWVzdCBoYW5kbGVycyB0byB0aGUgc3BlY2lmaWMgQyBmaWxlcwoJLSBtb3ZlZCBoYW5kbGUgbWFuYWdlbWVudCB0byBoYW5kbGUuYwoJLSBtb3ZlZCBzZXJ2ZXIgcHJpdmF0ZSBpbmNsdWRlcyB0byBzZXJ2ZXIvIGluc3RlYWQgb2YgaW5jbHVkZS9zZXJ2ZXIvCgoJKiBNYWtlLnJ1bGVzLmluOiBHZXQgaW5jbHVkZSBmaWxlcyBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBmaXJzdC4KCkZyaSBNYXkgMTQgMTg6Mzk6MzcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZmluZGRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkbGxzL2NvbW1kbGcvcHJpbnRkbGcuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBncmFwaGljcy9wc2Rydi9kcml2ZXIuYywgaW5jbHVkZS93aW4uaCwgd2luZG93cy9tc2dib3guYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3dpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlZCBXSU5fR2V0V2luZG93SW5zdGFuY2UgYnkgR2V0V2luZG93TG9uZ0EoR1dMX0hJTlNUQU5DRSksCglyZW1vdmVkIHVubmVjZXNzYXJ5IHdpbi5oIGluY2x1ZGVzLCBhZGRlZCBzeXNsZXZlbC5oIHRvIHF1ZXVlLmMuCgoJKiBjb250cm9scy9jb21iby5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIENCR2V0RHJvcHBlZENvbnRyb2xSZWN0IHRvIGJlIGNvbXBsaWFudCB3aXRoIFdpbmRvd3MgQVBJLgoKCSogaW5jbHVkZS93aW5lL2V4Y2VwdGlvbi5oLCB3aW4zMi9leGNlcHQuYzoKCUZpeGVkIGEgZmV3IGJ1Z3MsIGFuZCBpbXByb3ZlZCB0aGUgZXhjZXB0aW9uIG1hY3JvcyAoYmFzZWQgb24KCXN1Z2dlc3Rpb25zIGJ5IFNlcmdlaSBUdXJjaGFub3YpLgoKCSogZGxscy92ZXIvdmVyMTYuYywgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmMsIGlwYy9kZGVfYXRvbS5jLCBpcGMvZGRlX2F0b21fdGVzdC5jLCBpcGMvc2htX2Jsb2NrLmMsIGlwYy9zaG1fZnJhZ21lbnQuYywgaXBjL3NobV9mcmFnbWVudF90ZXN0LmMsIGlwYy9zaG1fbWFpbl9ibGsuYywgaXBjL3NobV9zZW1hcGguYywgaXBjL3NobV9zZW1hcGhfdGVzdC5jLCBpcGMvd2luZV90ZXN0X3N0dWIuYywgcmVsYXkzMi9zbm9vcC5jLCByZWxheTMyL3V0dGh1bmsuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBkbGxzL2FkdmFwaTMyL2V2ZW50bG9nLmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCBkbGxzL2ltYWdlaGxwL2FjY2Vzcy5jLCBkbGxzL2ltYWdlaGxwL2RlYnVnLmMsIGRsbHMvaW1hZ2VobHAvaW1hZ2VobHBfbWFpbi5jLCBkbGxzL2ltYWdlaGxwL2ludGVncml0eS5jLCBkbGxzL2ltYWdlaGxwL2ludGVybmFsLmMsIGRsbHMvaW1hZ2VobHAvbW9kaWZ5LmMsIGRsbHMvaW1hZ2VobHAvc3ltYm9sLmMsIGRsbHMvbXNhY20vbXNhY21fbWFpbi5jLCBkbGxzL21zYWNtMzIvYnVpbHRpbi5jLCBkbGxzL21zYWNtMzIvZHJpdmVyLmMsIGRsbHMvbXNhY20zMi9maWx0ZXIuYywgZGxscy9tc2FjbTMyL2Zvcm1hdC5jLCBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYywgZGxscy9tc2FjbTMyL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtMzIvc3RyZWFtLmMsIGRsbHMvcHNhcGkvcHNhcGlfbWFpbi5jLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBkbGxzL3RhcGkzMi9hc3Npc3RlZC5jLCBkbGxzL3RhcGkzMi9waG9uZS5jLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUveHRlcm0uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jLCBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3Njcm9sbC5jLCBjb250cm9scy9zdGF0aWMuYywgY29udHJvbHMvdWl0b29scy5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWcgaW50ZXJmYWNlLCB1c2luZyBzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsKCVN0cmlkdmFsbC4KCgkqIHRvb2xzL21ha2VfWDExd3JhcHBlcnMsIHRzeDExL3RzX3hmODZkZ2EuYywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIHRzeDExL3RzX3hsaWIuYywgdHN4MTEvdHNfeHBtLmMsIHRzeDExL3RzX3hyZXNvdXJjZS5jLCB0c3gxMS90c194c2htLmMsIHRzeDExL3RzX3h1dGlsLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1ZyBpbnRlcmZhY2UuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIGludmFsaWQgd2luZG93IHJlZmNvdW50IGhhbmRsaW5nIGluIFJEV19QYWludCgpLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4IGEgZGVhZGxvY2sgd2l0aCB0aGUgc3lzdGVtIG1lc3NhZ2UgcXVldWUgYnkgZW5zdXJpbmcgdGhlIHN5c3RlbSBtZXNzYWdlCglxdWV1ZSBpcyB1bmxvY2tlZCB3aGlsZSB0aGUgYWN0dWFsIG1lc3NhZ2UgaXMgYmVpbmcgcHJvY2Vzc2VkLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDaGVjayBpZiBpbiBkZXB0aC1jb252ZXJzaW9uIG1vZGUgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvciBtZXNzYWdlCglpbiBJRGlyZWN0RHJhd1BhbGV0dGVJbXBsX0dldEVudHJpZXMuCgpUaHUgTWF5IDEzIDE4OjUzOjA1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3QzRCwgZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgaW5jbHVkZS93aW5lX2dsLmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCVJlcGxhY2VkIGFsbCB0aGUgTWVzYSBzcGVjaWZpYyBjb2RlIGJ5IEdMWCBjb2RlLiBTaG91bGQgd29yayBub3cgb24KCWFueSBPcGVuR0wgaW1wbGVtZW50YXRpb24uCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiA8VFRhcnJhbnRARXRub3RlYW0uSXQ+CglBZGRlZCBJdGFsaWFuIGtleWJvYXJkIHN1cHBvcnQuCgoJKiBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9ncmFwaGljcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgYSBjb3VwbGUgb2YgbWVtY3B5IGVycm9ycy4KCgkqIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglTbWFsbCBmaXggdG8gaGVscCBuYXRpdmUgd2luOTUgUHJpbnREbGcgb24gdGhlIHdheS4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgaWYxNjMyL3dpbmFzcGkuc3BlYywgaW5jbHVkZS9hc3BpLmg6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBJbnNlcnRJbkFTUElDaGFpbiBhbmQgZml4ZWQgbWlub3IgdGhpbmdzLgoKCSogd2luZG93cy94MTFkcnYvbW91c2UuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIHF1aXRlIGlsbCB3aW5kb3cgbG9ja2luZyBjb2RlLgoKCSogd2luZG93cy93aW5wb3MuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYW4gaW5maW5pdGUgbG9vcCBpbiBDaGlsZFdpbmRvd0Zyb21Qb2ludEV4LgoKCSogY29udHJvbHMvbWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAcG9wMy5wb3AuZGViaXRlbC5uZXQ+CgktIHByZXZlbnQgY3Jhc2ggd2hlbiBHZXRNZW51RGVmYXVsdEl0ZW0gaXMgY2FsbGVkIG9uIGVtcHR5IG1lbnUKCS0gc2V0IGRlZmF1bHQgaXRlbSBvbiBzeXN0ZW0gbWVudQoKCSogbG9hZGVyL25lL21vZHVsZS5jLCBtZW1vcnkvc2VsZWN0b3IuYywgcmVsYXkzMi9udGRsbC5zcGVjLCB3aW4zMi9rZXJuZWwzMi5jLCB3aW4zMi9vcmRpbmFscy5jLCBkbGxzL250ZGxsL2V4Y2VwdGlvbi5jLCBkbGxzL250ZGxsL3J0bC5jLCBpbmNsdWRlL3N0YWNrZnJhbWUuaDoKCUFkYXB0ZWQgZm9yIG5ldyByZWdpc3RlciBmdW5jdGlvbnMgc3VwcG9ydCAoRVNQX3JlZyBpbiByZWdpc3RlcgoJZnVuY3Rpb25zIG5vdyBwb2ludHMgYWZ0ZXIgdGhlIGFyZ3VtZW50cykuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi9zbm9vcC5jLCB0b29scy9idWlsZC5jOgoJV2luMzIgcmVnaXN0ZXIgZnVuY3Rpb25zIGNhbiBub3cgaGF2ZSBhcmd1bWVudHMuCglTaW1wbGlmaWVkIHJlbGF5IGRlYnVnZ2luZyBmb3IgcmVnaXN0ZXIgZnVuY3Rpb25zLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9kZXZpY2UuYzoKCVZ4RENhbGwgZnVuY3Rpb25zIGRvIG5vdCBuZWVkIHRvIGJlICdyZWdpc3RlcicuCgpXZWQgTWF5IDEyIDE2OjEwOjUzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL2J1aWx0aW4zMi5jOiBGaXhlZCBidWcgSSBpbnRyb2R1Y2VkIGluIHJlbGF5IGRlYnVnZ2luZy4KCgkqIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL0F0dGljL2V4Y2VwdC5oLCBpbmNsdWRlL3dpbmUvZXhjZXB0aW9uLmgsIHdpbjMyL2V4Y2VwdC5jOgoJQWRkZWQgbWFjcm9zIGFuZCBkZWZpbml0aW9ucyBmb3IgdXNpbmcgZXhjZXB0aW9uIGluc2lkZSBXaW5lIG9yCglXaW5lbGliIGNvZGUuCgoJKiBpbmNsdWRlL0F0dGljL2V4Y2VwdC5oLCBpbmNsdWRlL250ZGRrLmgsIGluY2x1ZGUvd2lubnQuaCwgbWlzYy9jcnRkbGwuYywgd2luMzIvaW5pdC5jOgoJTW92ZWQgc29tZSBleGNlcHRpb24gZGVmaW5pdGlvbnMgdG8gd2lubnQuaCBhbmQgbnRkZGsuaC4KCgkqIG1zZG9zL2RldmljZXMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIFdJTkFQSSBmb3IgdGhlIGNhbGxiYWNrIHByb2NzLgoKCSogaW5jbHVkZS9zaWdfY29udGV4dC5oOiBBZGRlZCBFUlJPUl9zaWcuCgoJKiBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglCdWcgZml4LgoKCSogbWlzYy93aW5zb2NrLmMsIGluY2x1ZGUvd2luc29jay5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXU09DSzMyL1dJTlNPQ0sgdXNlcyBTZXRMYXN0RXJyb3IoKSB0byBrZWVwIGl0cyBvd24gV1NBTGFzdEVycm9ycywKCXJlcGxhY2VkIGFsbCBwd3NpLT5lcnIgcmVmZXJlbmNlcy4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBDaGFuZ2VkIHNvbWUgZXJyb3IgaGFuZGxpbmcgYSBiaXQuCgoJKiB3aW5kb3dzL3dpbi5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNsZWFuZXIgU3VzcGVuZC9SZXN0b3JlV25kc0xvY2ssIHdoaWNoIHNob3VsZCBmaXggc29tZSBzbG93bmVzcy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi9udGRsbC5zcGVjOgoJQWRkZWQgUnRsVW53aW5kIGluIG50ZGxsLCBhbmQgbWFkZSBrZXJuZWwzMiBzcGVjIGVudHJ5IGEgZm9yd2FyZCB0bwoJdGhlIG50ZGxsIG9uZS4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHRvb2xzL2J1aWxkLXNwZWMudHh0LCB0b29scy9idWlsZC5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oOgoJQWRkZWQgaW1wb3J0IGRlY2xhcmF0aW9uIGZvciBXaW4zMiBidWlsdC1pbnMuCgpNb24gTWF5IDEwIDE0OjQ0OjQ4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9idWlsZC1zcGVjLnR4dCwgdG9vbHMvYnVpbGQuYywgaW5jbHVkZS9idWlsdGluMzIuaCwgcmVsYXkzMi9idWlsdGluMzIuYzoKCUFkZGVkIHN1cHBvcnQgZm9yIGZvcndhcmRlZCBvcmRpbmFscyBpbiBidWlsdC1pbiBkbGxzLgoKU3VuIE1heSAgOSAxNjoxNToyOCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luMzIvY29uc29sZS5jOgoJRml4ZWQgcmVxdWVzdCBzaXplIGZvciBhbGxvY19jb25zb2xlIGFuZCBmcmVlX2NvbnNvbGUuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvbnRkbGwuc3BlYywgd2luMzIvZXhjZXB0LmMsIGRsbHMvbnRkbGwvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvZXhjZXB0aW9uLmMsIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvQXR0aWMvZXhjZXB0LmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2lubnQuaDoKCUltcHJvdmVkIGV4Y2VwdGlvbiBoYW5kbGluZy4KCUJhc2VkIG9uIHRoZSB3b3JrIG9mIFNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0Pi4KCgkqIGxvYWRlci9tb2R1bGUuYzoKCVVzZSBPcGVuRmlsZSgpIHRvIHRlc3QgZm9yIGZpbGUgZXhpc3RlbmNlLCBzbyB0aGF0IHRoZSBwYXRoIGdldHMKCXNlYXJjaGVkLgoKCSogc2VydmVyL3NlbGVjdC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVJlc3RhcnQgaW50ZXJydXB0ZWQgc2VsZWN0KCkgKGhhcHBlbnMgd2l0aCAtcGcpLgoKCSogZGVidWdnZXIvbWVtb3J5LmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgb2ZmLWJ5LW9uZSBidWcgaW4gbWVtb3J5IGFjY2VzcyBjaGVjay4KCgkqIG1pc2MvcmVnaXN0cnkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3JlIGRlYnVnIG91dHB1dCBmb3IgUmVnUXVlcnlJbmZvS2V5LgoKCSogZGVidWdnZXIvc3RhY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBhIGNvdXBsZSBvZiBidWdzIChzaWxlbnQgYmFja3RyYWNlIG5vdCB0b3RhbGx5IHNpbGVudCwgY3Jhc2hlcwoJd2hlbiB0aGUgc3RhY2sgaXMgY29ycnVwdGVkIG9yIHNpbWlsYXIpLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTYXQgTWF5ICA4IDE4OjM5OjA1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy93aW5lY29uZi5saWJzL2F1dG9jb25mLmVuZywgdG9vbHMvd2luZWNvbmYubGlicy9hdXRvY29uZi50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvYnJvd3NlcnMuZW5nLCB0b29scy93aW5lY29uZi5saWJzL2RpcmJyb3dzZXIudGNsLCB0b29scy93aW5lY29uZi5saWJzL2dlbmVyYWwuZW5nLCB0b29scy93aW5lY29uZi5saWJzL2dldGZpbGVuYW1lLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy9tZXNzYWdlLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy9tZXNzYWdlMi50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvc2F2ZVJDLnRjbCwgdG9vbHMvd2luZWNvbmYubGlicy93aW5lLWhhbGYuZ2lmLCB0b29scy93aW5lY29uZi5saWJzL3dpbmVjb25mLmVuZywgdG9vbHMvd2luZWNvbmYubGlicy93aW5lY29uZi50Y2wsIHRvb2xzL3dpbmVjb25mLmxpYnMvd2luZWNvbmYxLnRjbCwgdG9vbHMvd2luZWNvbmYudGNsOgoJSmVhbi1Mb3VpcyBUaGlyb3QgPHRoaXJvdEB1bml2LWJyZXN0LmZyPgoJQWRkZWQgZ3JhcGhpY2FsIGNvbmZpZ3VyYXRpb24gdG9vbCB3aW5lY29uZi50Y2wuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSWdub3JlIEVTQ1slZGMgcmVwb3J0cyBnZW5lcmF0ZWQgYnkgOGJpdCBjb250cm9sIGNvZGVzLgoJT3BlbiBjb25zb2xlIGV2ZW4gaWYgd2UgYWxyZWFkeSBoYXZlIG9uZSBpbiB0aGUgcHJvY2Vzcy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBvZmYgYnkgMSBlcnJvciBpbiBzZWN0aW9uIGNvZGUgKGRpZCBub3QgcmV0dXJuIGxlbi0yIG9uIGJ1ZmZlcgoJb3ZlcmZsb3cgaW4gc29tZSBjYXNlcywgYnV0IGxlbi0xKS4KCgkqIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgd2FybmluZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCBwYWxldHRlIGhhbmRsaW5nIGZvciB0cnVlL2hpZ2gtY29sb3IgWDExLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgZXh0ZW5zaW9uIGhhbmRsaW5nIGluIExvYWRMaWJyYXJ5MTYuCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGluY2x1ZGUvd2luLmgsIG9iamVjdHMvcmVnaW9uLmM6CglBbGV4IEtvcm9ia2EgPGFsZXhAYWlrZWEuYW1zLnN1bnlzYi5lZHU+CglSZWFycmFuZ2VkIFBBSU5UX1JlZHJhd1dpbmRvdygpIHNvIHRoYXQgaXQgZmlyc3QgcmVjdXJzaXZlbHkgdXBkYXRlcwoJaW52YWxpZCByZWdpb25zIGFuZCBvbmx5IHRoZW4gc3RhcnRzIHNlbmRpbmcgb3V0IG1lc3NhZ2VzLiBUaGlzIHNob3VsZAoJaGVscCB3aXRoIHJlZW50cmFuY3kgZHVyaW5nIG1lc3NhZ2UgcHJvY2Vzc2luZyBhbmQgbm93IGl0IG5lZWRzIGp1c3QKCW9uZSAob3Igbm9uZSkgc2NyYXRjaCByZWdpb24gZm9yIGFsbCB0aGVyZSBpcyB0byBkby4gQWxzbywgc21hbGwgZml4ZXMKCWZvciBTZXRXaW5kb3dQb3MoKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBBZGRlZCBjaGVjayBmb3IgbWlzc2luZyBfX2kzODZfXyBkZWZpbml0aW9uLgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvc29ja2V0LmMsIHNlcnZlci90cmFjZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgdG9vbHMvd3JjL3BhcnNlci55LCBvbGUvZGF0YWNhY2hlLmMsIG9sZS9kZWZhdWx0aGFuZGxlci5jLCBvbGUvaGdsb2JhbHN0cmVhbS5jLCBvbGUvbWVtbG9ja2J5dGVzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHRvb2xzL2J1aWxkLmMsIG1pc2Mvd3NwcmludGYuYywgbWlzY2VtdS9pbnN0ci5jLCBtc2Rvcy9pb3BvcnRzLmMsIGlmMTYzMi9zbm9vcC5jLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3N0YWNrZnJhbWUuaCwgaXBjL2JpdF9hcnJheS5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL21lbnUuYywgZGVidWdnZXIvZGJnLnksIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBTlNJIEMgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVBhc3MgUFJPUFNIRUVUUEFHRSB0byBwcm9wZXJ0eXBhZ2UgZGlhbG9nIGFzIGxQYXJhbS4KCgkqIG1pc2Mvd2luc29jay5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYywgaXBjL2RkZV9hdG9tLmMsIGlwYy9nZW5lcmljX2hhc2guYywgaXBjL3NobV9ibG9jay5jLCBpcGMvc2htX21haW5fYmxrLmMsIGlwYy9zaG1fc2VtYXBoLmMsIGxvYWRlci9kb3MvZG9zbW9kLmMsIGxvYWRlci9zaWduYWwuYywgbWVtb3J5L2xkdC5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL21ldGFmaWxlLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9wc2Rydi5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgaW5jbHVkZS93aW5zb2NrLmgsIGRsbHMvbnRkbGwvdGltZS5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaCwgZ3JhcGhpY3MvZGlzcGRpYi5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jLCBkZWJ1Z2dlci9tc2MuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQU5TSSBDIGZpeGVzLgoKCSogd2luZG93cy9jYXJldC5jLCBpbmNsdWRlL3dpbmUvd2luZ2RpMTYuaCwgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBtaXNjL3ByaW50ZHJ2LmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL2xpbmVkZGEuYywgb2JqZWN0cy9yZWdpb24uYywgZ3JhcGhpY3Mvd2luMTZkcnYvZm9udC5jLCBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgZ3JhcGhpY3MvcHNkcnYvZm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJU3BsaXQgb2ZmIHdpbmdkaTE2LmggZnJvbSB3aW5nZGkuaC4gIEFkZCBtYW55IG1vcmUgI2RlZmluZXMvdHlwZWRlZnMKCXRvIGJyaW5nIHdpbmdkaS5oIGFsbW9zdCB1cHRvIGEgY29tcGxldGUgTlQ0LjAgaW50ZXJmYWNlLgoJRml4IHJldHVybiB2YWx1ZSBvZiBTZXRSZWN0UmduKCkuCgoJKiB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3R0eWRydi9tb3VzZS5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbnBvcy5oOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgI2luY2x1ZGUgIndpbmUvd2ludXNlcjE2LmgiIGFuZCB1c2UgInN0cnVjdCB0YWc/Pz8/IiBpbnN0ZWFkLgoKCSogZGVidWdnZXIvc3RhY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXByb3ZlZCBXaW5lIGRlYnVnZ2VyIGJhY2t0cmFjZS4gTmV3IGZlYXR1cmVzOgoJLSBEaXNwbGF5cyBlYnAsIGluIGNhc2UgeW91IHdhbnQgdG8gY2hlY2sgc3RhY2tmcmFtZXMgbWFudWFsbHkKCS0gRGV0ZWN0cyBmYXIgY2FsbHMgZXZlbiB3aGVuIHdpbmRvd3MgYXBwcyBkb24ndCBtYXJrIHRoZW0KCS0gVHJhY2tzIENhbGxGcm9tMTYvQ2FsbFRvMTYgcmVsYXlpbmcgKHRodW5raW5nKQoKCSogbG9hZGVyL2VsZmRsbC5jOiBVbHJpY2ggQ3pla2FsbGEgPHVscmljaGNAY29yZWwuY2E+CglCdWdmaXg6IGdldF9zb2Jhc2VuYW1lIHdhcyBvZmYgYnkgb25lIHBvaW50ZXIgaW5jcmVtZW50LgoKCSogbXVsdGltZWRpYS9pbml0LmM6IEtldmluIEhvbGJyb29rIDxrd2hAbmVvc29mdC5jb20+CglGaXhlZCBpbXBsaWNpdCB0eXBlIHdhcm5pbmcuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IEdlcmFyZCBQYXRlbCA8Zy5wYXRlbEB3YW5hZG9vLmZyPgoJVmFsdWVzIHJldHVybmVkIGZyb20gUHRJblJlY3QgYW5kIExCX0lURU1GUk9NUE9JTlQgYXJlIHJldmVyc2VkLgoKCSogb2xlL2RhdGFjYWNoZS5jLCBvbGUvZGVmYXVsdGhhbmRsZXIuYywgb2xlL29sZTIuYywgb2xlL29sZTJzdHVicy5jLCBvbGUvb2xlb2JqLmM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglTZWNvbmQgcGFydCBvZiB0aGUgT0xFIGRhdGFjYWNoZSBpbXBsZW1lbnRhdGlvbi4KCgkqIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9kZXZpY2VzLmMsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9pbnQyMS5jLCBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9tc2Rvcy5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNb3ZlZCBET1MgTGlzdCBvZiBMaXN0cyBpbml0aWFsaXphdGlvbiwgYW5kIGFkZGVkIHRoZSBiZWdpbm5pbmdzIG9mCgl0aGUgRE9TIGRldmljZSBzdHJ1Y3R1cmVzLgoKCSogcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jLCBpbmNsdWRlL3dpbnJlZy5oLCBtaXNjL3JlZ2lzdHJ5LmM6CglOb29tZW4gSGFtemEgPG5vb21lbkBtYWNhZGFtaWFuLmNvbT4KCUJ1ZyBmaXhlcy4KCgkqIG9sZS9oZ2xvYmFsc3RyZWFtLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgR2V0SEdsb2JhbEZyb21TdHJlYW0uCgoJKiBpbmNsdWRlL3RocmVhZC5oLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGwgVEhSRUFEX0ZyZWVUSERCIGFzIHNlcnZpY2UgdGhyZWFkIGNhbGxiYWNrLgoKCSogaW5jbHVkZS9tZXNzYWdlLmgsIGxvYWRlci90YXNrLmMsIHdpbmRvd3MvdGltZXIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBUSU1FUl9Td2l0Y2hRdWV1ZS4KCgkqIGRlYnVnZ2VyL21lbW9yeS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRm9ybWF0IG91dHB1dCBpbiBERUJVR19FeGFtaW5lTWVtb3J5IGZvciAiZCIgYW5kICJ4IiBub3QgdG8gZXhjZWVkIDgwCgljaGFycy4KCgkqIGxvYWRlci9zaWduYWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdG9wIHdpbmVsaWIgcHJvZ3JhbXMgb24gZmF1bHQgaW5zdGVhZCBvZiBlbmRsZXNzIGZhdWx0bG9vcGluZy4KCgkqIE1ha2VmaWxlLmluOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglSdW4gbGRjb25maWcgaW4gbWFrZSBpbnN0YWxsIGlmIHVzaW5nIC0tZW5hYmxlLWRsbC4KCUNsZWFuZWQgdXAgdW5pbnN0YWxsX2xpYiBhcyB3ZWxsLgoKCSogb2xlL3N0b3JhZ2UuYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmgsIHJlbGF5MzIvb2xlMzIuc3BlYywgb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9tZW1sb2NrYnl0ZXMuYzoKCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgSVN0b3JhZ2Ugc3VwcG9ydGVkIGJ5IGFuIGltcGxlbWVudGF0aW9uIG9mCglJTG9ja0J5dGVzIG9uIHRvcCBvZiBhbiBIR0xPQkFMLgoKCSogZmlsZXMvcHJvZmlsZS5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSBmcm9tIEdldFByaXZhdGVQcm9maWxlU2VjdGlvbkEuCglDb3B5L2NvbnZlcnQgYmFjayB0aGUgYnVmZmVyIGluIEdldFByaXZhdGVQcm9maWxlU2VjdGlvblcuCglSZXBsYWNlIHNvbWUgb3V0cHV0IHBvaW50ZXJzIHN0ci93c3RyLT5wdHIgaW4ga2VybmVsMzIuc3BlYy4KCgkqIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNvbWUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYnVnZml4ZXM6CgktIEluaXRpYWxpemUgcHJvY2VzcyBjcnN0IGZvciAxNi1iaXQgcHJvY2Vzc2VzLgoJLSBEb24ndCBjcmFzaCBkdWUgdG8gdW5pbml0aWFsaXplZCBzdGFjayBmcmFtZXMgaW4gV2luZUxpYi4KCS0gTWFwIHN5c3RlbSBETExzIGJlZm9yZSBjYWxsaW5nIFVzZXJTaWduYWxQcm9jLgoJLSBTaWduYWwgVVNJR19QUk9DRVNTX0NSRUFURSBvbmx5ICphZnRlciogdGhlIGVudl9kYiBpcyBmaWxsZWQuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIENhbGxvdXQgcm91dGluZXMgZGlyZWN0bHkgd2hlbiB1c2luZyBidWlsdGluIFVTRVIuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBhbGwgUEUgbW9kdWxlcyB3ZXJlIG1hcmtlZCAnaW50ZXJuYWwnLgoKCSogaW5jbHVkZS9kY2UuaCwgb2JqZWN0cy9kYy5jLCB3aW5kb3dzL2RjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGVjayBmb3IgYnVzeSBEQ0UgbW92ZWQgdG8gRENIb29rMTYoKS4KCgkqIGluY2x1ZGUvd2luLmgsIGxvYWRlci9tYWluLmMsIHdpbmRvd3Mvd2luLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUluaXRpYWxpemUgV0lOX0NyaXRTZWN0aW9uIGVhcmxpZXIuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGluY2x1ZGUvdHJhY2tiYXIuaDoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIHRoZSB0aW1lciB0aGF0IHdhcyB1c2VkIHRvIHF1ZXVlIFRSQUNLQkFSX1JlZnJlc2ggY2FsbHMuCglSZW1vdmVkIGFsbCBkaXJlY3QgY2FsbHMgdG8gVFJBQ0tCQVJfUmVmcmVzaCAoZXhjZXB0IGZyb20gd2l0aGluIHRoZQoJV01fUEFJTlQgaGFuZGxpbmcgc2VjdGlvbikgYW5kIHJlcGxhY2VkIHRoZW0gYnkgY2FsbHMgdG8KCUludmFsaWRhdGVSZWN0LgoJRml4ZWQgYSBidWcgaW4gdGhlIFRSQUNLQkFSX1NldFBvcyBmdW5jdGlvbi4KCUZpeGVkIHRoZSBiZWhhdmlvciBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIG1vdXNlIGlucHV0LgoKCSogZGxscy9jb21jdGwzMi90b29sYmFyLmM6IFl1eGkgWmhhbmcgPHl1eGl6QGNvcmVsLmNhPgoJSW1wbGVtZW50ZWQgdG9vbGJhciBtdWx0aXJvdyBidXR0b24gbGF5b3V0LgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBXTV9HRVRURVhUIGFuZCBXTV9HRVRURVhUTEVOR1RIIGluIHRvb2x0aXBzLgoKCSogb2xlL29sZTJkaXNwLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgT2xlVHJhbnNsYXRlQ29sb3IuCgoJKiBpbmNsdWRlL3dpbnVzZXIuaCwgd2luZG93cy9pbnB1dC5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCB0aGUgcmV0dXJuIHZhbHVlIG9mIEdldEtleWJvYXJkU3RhdGUgYW5kIFNldEtleWJvYXJkU3RhdGUgZnJvbQoJVk9JRCB0byBCT09MLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglQcmV2ZW50ZWQgTElTVEJPWF9SZXBhaW50SXRlbSBmcm9tIHJlcGFpbnRpbmcgYSBub24gdmlzaWJsZSBpdGVtLgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0eXBvLgoKCSogd2luZG93cy9jbGFzcy5jOiBIdXcgRCBNIERhdmllcyA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CglCdWdmaXggZm9yIFRSQUNFIGluIFVucmVnaXN0ZXJDbGFzcy4KCldlZCBNYXkgIDUgMTM6MjA6NTAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvQXR0aWMvcHJvcHNoZWV0Lmg6IE5vIGxvbmdlciBuZWNlc3NhcnkuCgpUdWUgTWF5ICA0IDE2OjU1OjIzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2RjLmMsIHdpbmRvd3MvZGNlLmMsIGluY2x1ZGUvZGNlLmg6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglDaGVjayBpZiBEQyBpcyBidXN5IGJlZm9yZSBkZWxldGluZyBpdC4KCgkqIHdpbjMyL25ld2Zucy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJR2V0TWFpbHNsb3RJbmZvIGlzIHN1cHBvc2VkIHRvIGNoZWNrIGZvciBwb2ludGVyIHZhbGlkaXR5LgoKCSogc2VydmVyL3NlbGVjdC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVBvc3NpYmxlIGNyYXNoIGluIHNlbGVjdF9sb29wKCkgZml4ZWQuCgoJKiBpbmNsdWRlL3NlcnZpY2VzLmgsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCB2YXJpb3VzIHN0dXBpZCBidWdzIGluIHNlcnZpY2VzIHRocmVhZCByb3V0aW5lcy4KCUFkZGVkIFNFUlZJQ0VfRXhpdCByb3V0aW5lIHRvIGtpbGwgdGhlIHNlcnZpY2VzIHRocmVhZC4KCgkqIG1pc2MvbWFpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUludmVydGVkIGNsYXNzL2NoYW5uZWwgaW4gX18oU0VUfEdFVClfREVCVUdHSU5HIG1hY3Jvcy4KCgkqIHdpbmRvd3MvcXVldWUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIEdldFdpbmRvd1RocmVhZFByb2Nlc3NJZCgpLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgUGxheVNvdW5kMTYsIHNuZFBsYXlTb3VuZDE2LgoKCSogaWYxNjMyL3RodW5rLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZXMgd2lucHJvYyBkZWFkbG9jayBmb3Igd2luMTYuCgpNb24gTWF5ICAzIDA5OjQ0OjU3IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3F1ZXVlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBkZWFkbG9jayhzKSBpbiBtZXNzYWdlIHNlbmRpbmcuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJY2xlYW5lZCB1cCBkZWJ1ZyBjaGFubmVscyB0byB1c2UgZGVmYXVsdCBvbmUgKG1tc3lzKQoJbW9yZSBjb252ZXJzaW9ucyBmcm9tIG1peGVyWFhYVyBhbmQgbWl4ZXJYWFhYMTYgdG8gbWl4ZXJYWFhYQQoJZml4ZWQgY2FsbGJhY2sgYnVnIGluIG1pZGlTdHJlYW0gZnVuY3Rpb25zCglmaXhlZCBjb21waWxhdGlvbiBidWcgd2l0aCBlZ2NzCgljaGFuZ2VkIHRvIHRoZSBuZXcgZGVidWcgY2hhbm5lbCBpbnRlcmZhY2UKCgkqIG11bHRpbWVkaWEvbW1hdXguYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglzbWFsbCByYW5nZSBmaXhlcyBmb3IgT1NTIGRyaXZlcgoJY2hhbmdlZCB0byB0aGUgbmV3IGRlYnVnIGNoYW5uZWwgaW50ZXJmYWNlCgoJKiBtdWx0aW1lZGlhL21peGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJZmlyc3QgKHdvcmtpbmcpIHNob3QgYXQgT1NTIG1peGVyIGxvdyBsZXZlbCBpbnRlcmZhY2UKCWNoYW5nZWQgdG8gdGhlIG5ldyBkZWJ1ZyBjaGFubmVsIGludGVyZmFjZQoKCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIG9mZi1ieS1vbmUgb3JkaW5hbHMgaW4gTVBSLgoJQWRkZWQgTVBSX0FsbG9jL1JlQWxsb2MvRnJlZSAoTVBSLjIyLTI0KS4KCgkqIGxvYWRlci9tb2R1bGUuYywgaWYxNjMyL3JlbGF5LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogcmVsZWFzZSBXaW4xNkxvY2sgaW4gV2luRXhlYzE2LCBDYWxsUHJvY1tFeF0zMldfMTYuCgoJKiBsb2FkZXIvbWFpbi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUxvYWQgc3lzdGVtIERMTHMgaW50byBXaW5lTGliIGFwcGxpY2F0aW9ucy4KCgkqIGdyYXBoaWNzL3BzZHJ2L3BzLmM6IEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCVNtYWxsIHVwZGF0ZSB0byB0aGUgUG9zdFNjcmlwdCBlbmNvZGluZyB2ZWN0b3IuCgoJKiBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci90YXNrLmM6IEJ1ZyBmaXhlcy4KClN1biBNYXkgIDIgMTk6MTA6NTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNb3ZlZCBhIGZldyBtb3JlIGluaXRpYWxpc2F0aW9ucyB0byB0aGUgbmV3IHByb2Nlc3MgY29udGV4dC4KCgkqIGxvYWRlci90YXNrLmM6IERvbid0IGluaXRpYWxpc2UgdGhlIHN0YWNrcyBmb3IgMzItYml0IHByb2Nlc3Nlcy4KCgkqIG1pc2NlbXUvbWFpbi5jOiBPbmx5IGNoZWNrIG51bWJlciBvZiB0YXNrcyBhZnRlciBmaXJzdCBtZXNzYWdlLgoJVXNlIGEgMTYtYml0IG1vZHVsZSBmb3IgY3JlYXRpbmcgdGhlIGluaXRpYWwgdGFzay4KCgkqIGluY2x1ZGUvYXV0aG9ycy5oLCBBVVRIT1JTOgoJVXBkYXRlZCBhdXRob3JzIGxpc3QgZnJvbSB0aGUgQ2hhbmdlbG9nLiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgeW91CgloYXZlIGJlZW4gbGVmdCBvdXQuCgoJKiBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQ29udmVydGVkIHRvIHRoZSBuZXcgZGVidWdnaW5nIGludGVyZmFjZSAoZG9uZSB3aXRoIHRoZSBoZWxwIG9mIHRoZQoJc2NyaXB0IHdyaXR0ZW4gYnkgUGF0cmlrIFN0cmlkdmFsbCkuCglTb21lIGNoYW5nZXMgdG8gdGhlIGluaXRpYWxpc2F0aW9uIHNlcXVlbmNlIGZvciAzMi1iaXQgcHJvY2Vzc2VzLgoKCSogKi8qLmM6CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBkZWJ1Z2dpbmcgaW50ZXJmYWNlIChkb25lIHdpdGggdGhlIGhlbHAgb2YgdGhlCglzY3JpcHQgd3JpdHRlbiBieSBQYXRyaWsgU3RyaWR2YWxsKS4KCgkqIHRvb2xzL21ha2VfZGVidWcsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZGVidWd0b29scy5oLCBtaXNjL21haW4uYzoKCU1pc2MgZml4ZXMgYW5kIGltcHJvdmVtZW50cy4KCgkqIGluY2x1ZGUvY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJQWRkZWQgY2hlY2sgZm9yIC1sbW1hcCBmb3IgT1MvMi4KCgkqIGluY2x1ZGUvZGVidWdkZWZzLmgsIG9sZS9oZ2xvYmFsc3RyZWFtLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgZmV3IGJ1Z3MgaW4gdGhlIE9MRSBzdG9yYWdlIGltcGxlbWVudGF0aW9uLCBhZGRlZCBhIG5ldyBzZXQgb2YKCXRyYWNlIHN0YXRlbWVudHMgZm9yIHRoZSBPTEUgc3RvcmFnZSByZWxhdGVkIG1ldGhvZHMgYW5kIGludHJvZHVjZWQgYQoJbmV3IGRlYnVnIGNoYW5uZWwgZm9yIHRoZSBzdG9yYWdlIHN1YnN5c3RlbS4KCgkqIG11bHRpbWVkaWEvdGltZS5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL3BhbGV0dGUuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBtaXNjL3Nwb29sZXIuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglSZW1vdmVkIHJlZHVuZGFudCBpbmNsdWRlIG9mIHdpbmJhc2UuaCBmcm9tIHdpbnVzZXIxNi5oLgoJTW92ZWQgdHlwZXMgZnJvbSB3aW5iYXNlLmggdG8gd2ludXNlcjE2LmggLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBkZWZhdWx0IGl0ZW0gaGFuZGxpbmcKCS0gc21hbGwgZHJhd2luZyBmaXhlcwoKCSogZGxscy9jb21tZGxnL2NkbGdfRW4ucmMsIGRsbHMvY29tbWRsZy9wcmludGRsZy5jOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglNb3JlIGltcGxlbWVudGF0aW9uIG9mIFByaW50RGxnQS4KCUNvbnZlcnNpb24gb2YgcmVzb3VyY2UgaWRlbnRpZmllcnMgb2YgUHJpbnQzMiB3aW5kb3cgdG8gY29tcGx5IHRvIHRoZQoJTSQgbnVtYmVyaW5nLgoKCSogc2VydmVyL3RocmVhZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNyYXNoIGlmIHF1ZXVpbmcgYW4gQVBDIG9uIGEgdGhyZWFkIHRoYXQgZG9lc24ndCB3YWl0LgoKCSogd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jLCBpbmNsdWRlL21lc3NhZ2UuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIFNFUlZJQ0VTIGNhbGxiYWNrIHRvIGltcGxlbWVudCBXaW5kb3dzIHRpbWVycy4KCVRpbWVyIGV4cGlyYXRpb24gaGFuZGxpbmcgcmVtb3ZlZCBmcm9tIEVWRU5UX1dhaXROZXRFdmVudCBsb29wLgoKCSogbWVtb3J5L2hlYXAuYzogSHV3IEQgTSBEYXZpZXMgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoJQ2FsbCBTZXRMYXN0RXJyb3IgaW4gSGVhcENvbXBhY3QoKS4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHByb3RvdHlwZSBmb3IgVHJ5RW50ZXJDcml0aWNhbFNlY3Rpb24uCgoJKiBpbmNsdWRlL2NvbW1kbGcuaDogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglNYWtlIGFsbCBzdHJ1Y3R1cmVzIHBhY2tlZCBhbmQgcmVtb3ZhbCBvZiBzb21lIFdJTkVfUEFDS0VELgoKCSogY29udHJvbHMvYnV0dG9uLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglQdXNoYnV0dG9ucyBzaG91bGQgb25seSBiZSByb3VuZGVkIGluIFdpbjMxIGxvb2suCgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBkZWZhdWx0IGl0ZW0gaGFuZGxpbmcKCS0gc21hbGwgZHJhd2luZyBmaXhlcwoKCSogd2luZG93cy93aW5wb3MuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhbiB1bmJhbGFuY2VkIHdpbmRvd3MgbG9jay91bmxvY2sgc2VxdWVuY2UgaW4KCVdJTlBPU19BY3RpdmF0ZU90aGVyV2luZG93LgoKCSogaW5jbHVkZS9kZWJ1Z2RlZnMuaDogZW5obWV0YWZpbGUgYWRkZWQKCgkqIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9tY2lhbmltLnNwZWMsIHJlbGF5MzIvbWNpYXZpLnNwZWMsIHJlbGF5MzIvbWNpY2RhLnNwZWMsIHJlbGF5MzIvbWNpc2VxLnNwZWMsIHJlbGF5MzIvbWNpd2F2ZS5zcGVjLCByZWxheTMyL3dpbm1tLnNwZWMsIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBsb2FkZXIvbWFpbi5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL21jaS5jLCBtdWx0aW1lZGlhL21jaWFuaW0uYywgbXVsdGltZWRpYS9tY2lhdmkuYywgbXVsdGltZWRpYS9tY2ljZGEuYywgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpc3RyaW5nLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWEsIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCB3aW5lLmluaToKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJLSBnb3QgcmlkIG9mIGFsbCB0aGUgaW50ZXJuYWwgTU0gdHdlYWtzIHRvIGxvYWQgYnVpbHRpbiBNQ0kKCSAgZHJpdmVycy4gVGhleSBhcmUgYWxsIHNlZW4gYXMgZHJpdmVycywgbG9hZGVkIGFzIERMTHMgYW5kIHN0YW5kYXJkCgkgIG1vZHVsZSBsb2Fkb3JkZXIgaXMgdXNlZCB0byBrbm93IHdoaWNoIHR5cGUgdG8gdXNlIChidWlsdGluIHZzCgkgIG5hdGl2ZSkuCgktIGZpcnN0IGZ1bGwgd29ya2luZyBpbXBsZW1lbnRhdGlvbiBvZiBtbVRocmVhZD8/PyBmdW5jdGlvbnMgKHRvCgkgIHN1cHBvcnQgZ3JhY2VmdWxseSBuYXRpdmUgTUNJIGRyaXZlcnMpLgoJLSBzdXBwb3J0IG9mIG1tU2hvd01NQ1BMUHJvcGVydHlTaGVldC4KCS0gZml4IG9mIHNvbWUgaGVhcCB2YWxpZGF0ZSBidWdzICh0aGFua3MgdG8gVWxyaWNoIGZvciByZXBvcnRpbmcgdGhlbSkuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggQ3JlYXRlUHJvY2Vzc0EgdG8gaW1wbGVtZW50IGNvcnJlY3QgYWN0aW9ucyBvbiBhbWJpZ3VvdXMgY29tbWFuZAoJbGluZSBuYW1lcyAodHJ5IGxvbmdlciBhbmQgbG9uZ2VyIHN0cmluZ3MpLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi8uY3ZzaWdub3JlLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9NYWtlZmlsZS5pbiwgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZGMuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvZW5obWV0YWZpbGVkcnYvaW5pdC5jLCBncmFwaGljcy9lbmhtZXRhZmlsZWRydi9tYXBwaW5nLmMsIGdyYXBoaWNzL2VuaG1ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBpbmNsdWRlL2VuaG1ldGFmaWxlZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVN0YXJ0ZWQgaW1wbGVtZW50aW5nIEVuaGFuY2VkIE1ldGFGaWxlIGRyaXZlci4KCgkqIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXZpZXcuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvZGF0YWNhY2hlLmMsIG9sZS9kZWZhdWx0aGFuZGxlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMnN0dWJzLmMsIG9sZS9vbGVvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIE9MRSBvYmplY3QgZGVmYXVsdCBoYW5kbGVyIGFuZCBkYXRhIGNhY2hlLgoKCSogaW5jbHVkZS9lbmhtZXRhZmlsZS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVNldmVyYWwgaW1wcm92ZW1lbnRzIHRvIEVuaGFuY2VkIE1ldGFGaWxlIHBsYXliYWNrLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJT25seSB0cnkgdG8gYXBwZW5kICIuZGxsIiBpZiBhIGxpYnJhcnkgaXMgbG9hZGVkIGltcGxpY2l0ZWx5LgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJRml4IFRSQUNFIGZvcm1hdHRpbmcgd2FybmluZ3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBhIHNtYWxsIHN5bnRheCBwcm9ibGVtLgoKCSogd2luZG93cy93aW5wb3MuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGJldHRlciBzdHVicyBmb3IgR2V0L1NldCBzcGVjaWFsIChQcm9nbWFuL1Rhc2ttYW4pIHdpbmRvdyBmdW5jdGlvbnMKCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIG5ldyBTZW5kTWVzc2FnZUNhbGxiYWNrVwoJLSBzb21lIGZpeG1lJ3MgZm9yIG1pc3NpbmcgQTwtPlcgY29udmVyc2lvbgoKCSogd2luZG93cy9kaWFsb2cuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhbiB1bmJhbGFuY2VkIHdpbmRvd3MgbG9jay91bmxvY2sgc2VxdWVuY2UgaW4gR2V0TmV4dERsZ1RhYkl0ZW0uCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IEtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJQnVnZml4IGZvciBFbnVtUHJpbnRlcnMgbGV2ZWwgMi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IEd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglDb3JyZWN0IGxvZ2ljIGluIEdldEtleU5hbWVUZXh0LgoKCSogZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJUmVtb3ZlZCArc25vb3AgZnJvbSBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMuCgpTYXQgTWF5ICAxIDEwOjQxOjAyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2JpdG1hcC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJTG9hZEltYWdlVyBmaXhlZCBmb3IgaGljb2xvciBkaXNwbGF5cy4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTUNJX0FOSU1fT1BFTl9QQVJNU1cgc2hvdWxkIGJlIExQQ1dTVFIsIE1DSV9EZWZZaWVsZFByb2Mgc2hvdWxkIGJlIFdJTkFQSS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBIRUFERVJfSW5zZXJ0SXRlbUEgYW5kIEhFQURFUl9JbnNlcnRJdGVtVyBudWxsIHBvaW50ZXIgY2hlY2tpbmcKCXRvIGhhbmRsZSB3aWRlIGNoYXJhY3RlciBzdHJpbmdzIHByb3Blcmx5LiAgRml4IG9mIG91ciBwcmV2aW91cyBwYXRjaAoJZm9yIG51bGwgcG9pbnRlciBjaGVja2luZy4KCgkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL21lbWxvY2tieXRlcy5jLCBvbGUvb2xlMnN0dWJzLmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIENyZWF0ZUlMb2NrQnl0ZXNPbkhHbG9iYSwgR2V0SEdsb2JhbEZyb21JTG9ja0J5dGVzIGFuZAoJdGhlIElMb2NrQnl0ZXMgaW50ZXJmYWNlIGJhc2VkIG9uIGFuIEhHTE9CQUwuCgoJKiBvbGUvY29tcG9iai5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGJ1ZyBpbiBDb1JlZ2lzdGVyQ2xhc3NPYmplY3QuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgc29tZSBmbGlja2VyaW5nIHdoZW4gaW5zZXJ0aW5nIG9yIGRlbGV0aW5nIGJ1dHRvbnMuCgoJKiBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBMSVNUVklFV19HZXRJdGVtQ2hhbmdlcygpIHRvIHBlcmZvcm0gYSBtb3JlIGNvbXBsZXRlIGNvbXBhcmlzb24KCWJldHdlZW4gbHBJdGVtIGFuZCBscExWSXRlbS4gIE5vdyBjb21wYXJlcyB0aGUgcHN6VGV4dCBzdHJpbmcgb2YgdGhlCglscEl0ZW0gYW5kIGxwTFZJdGVtIHN0cnVjdHMuICBGaXhlcyBhIGJ1ZyB3aGVyZSB0aGUgb2xkIGFuZCBuZXcgaXRlbQoJaGF2ZSB0aGUgc2FtZSBhdHRyaWJ1dGVzIGJ1dCB0aGVpciB0ZXh0IGRpZmZlcnMgYW5kIEdldEl0ZW1DaGFuZ2VzKCkKCWNvbXBhcmVzIHRoZW0gYXMgZXF1YWwuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5oLCBkbGxzL2NvbWN0bDMyL3JzcmMucmMsIGRsbHMvY29tY3RsMzIvdGFiLmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIHN1cHBvcnQgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgcGFnZXMgZHluYW1pY2FsbHkgZnJvbSBhCglwcm9wZXJ0eSBzaGVldC4KCgkqIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2xpc3Rib3guYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB0aGUgZ290b3MgZnJvbSB0aGUgV25kUHJvY3MsIGFsd2F5cyB1c2UgYSBzbWFsbCB3cmFwcGVyIHRoYXQKCWxvY2tzIHRoZSB3aW5kb3csIGNhbGxzIHRoZSByZWFsIHduZHByb2MsIHVubG9ja3MgdGhlIHdpbmRvdy4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBkZWZhdWx0IG1lbnUgaXRlbS4KCgkqIHdpbjMyL2NvZGVfcGFnZS5jLCBtaXNjL2RkZW1sLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIHR5cG8uCgoJKiB3aW5kb3dzL3F1ZXVlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBhIG1pc3NpbmcgTGVhdmVDcml0aWNhbFNlY3Rpb24uCgoJKiB3aW5kb3dzL21kaS5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHdyb25nIHVzYWdlIG9mIFdJTl9GaW5kV25kUHRyL1dJTl9SZWxlYXNlV25kUHRyIGluCglUcmFuc2xhdGVNRElTeXNBY2NlbDE2LgoKCSogbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgb2ZmLWJ5LW9uZSBidWcgaW4gYXN5bmMgb3V0cHV0IGJ1ZmZlcnMuCgoJKiBvbGUvb2xlMi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIGxpdHRsZSBEcmFnIGFuZCBEcm9wIGJ1Zy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTW9uIEFwciAyNiAxNDo1ODo1OSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIGF1dG9jb25mIGNoZWNrIGZvciAiaW5saW5lIi4gWW91IGNhbiBub3cgdXNlIGl0LCBpdCB3aWxsIGJlCglkZWZpbmVkIHRvIChlbXB0eSkgZm9yIGNvbXBpbGVycyB0aGF0IGRvIG5vdCBoYXZlIGl0LgoKCSogdG9vbHMvd3JjL3BhcnNlci55OiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCURvbid0IGluY2x1ZGUgYWxsb2NhLmguCgoJKiBSRUFETUUsIGRvY3VtZW50YXRpb24vd2luZS5tYW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVVwZGF0ZSB0byByZWZsZWN0IHJlY2VudCBjaGFuZ2VzIGFuZCBkaXNjdXNzaW9ucy4KCgkqIGxvYWRlci9sb2Fkb3JkZXIuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVRoZSBsb2FkIG9yZGVyIHBhcnNlciBzaG91bGQgbm90IGFsd2F5cyBjb21wbGFpbiBhYm91dCBleHRlbnNpb25zLgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gYWxpZ24gbWFnaWMgYnV0dG9ucyByaWdodAoJLSBzaG9ydGN1dHMgYWxpZ25tZW50IHdvcmtpbmcgYWdhaW4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBsb2FkaW5nIG9mIG5hdGl2ZSBORSBkbGxzLgoKU3VuIEFwciAyNSAxOTowNDo0MiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWVtb3J5L2hlYXAuYzogRml4ZWQgX19idWlsdGluX3JldHVybl9hZGRyZXNzIGFyZy4KCgkqICovKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgQU5TSSBjb21wYWJpbGxpdHkuCgoJKiAqLyo6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQnVpbHQtaW4gZGxscyBub3cgaGF2ZSByZXNvdXJjZXMgYXR0YWNoZWQgdmlhIHRoZSBQRS1oZWFkZXIgbGlrZQoJbm9ybWFsIGRsbHMuIFRoaXMgZW5hYmxlcyB0aGUgdXNlIG9mIHRoZSByZXNvdXJjZSBBUEkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6CglVc2UgJEhPTUUgaW5zdGVhZCBvZiBnZXRwd3VpZCBmb3IgdXNlcidzIGhvbWUgZGlyZWN0b3J5LgoJRml4ZWQgbWVzc2VkIHVwIGluZGVudGF0aW9uLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglVc2UgJEhPTUUgaW5zdGVhZCBvZiBnZXRwd3VpZCBmb3IgdXNlcidzIGhvbWUgZGlyZWN0b3J5LgoKCSogKi8qLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCSNwcmFnbWEgcGFjayg/KSBjaGFuZ2VkIHRvICNpbmNsdWRlICIqcGFjayouaCIKCgkqIHRvb2xzL2J1aWxkLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvZG9jb2JqLmgsIGluY2x1ZGUvaGVhcC5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbmdkaS5oLCBpbmNsdWRlL3dpbm5ldHdrLmgsIGluY2x1ZGUvd2lubmxzLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJSmltIEFzdG9uIDxqaW1hQGNvcmVsLmNhPgoJQWRkZWQgc29tZSBtaXNzaW5nICNkZWZpbmVzIEkndmUgcnVuIGFjcm9zcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglJZ25vcmUgdHJhaWxpbmcgZG90cyBvbiBmaWxlIG5hbWVzLgoKCSogaW5jbHVkZS9kZWJ1Z2dlci5oLCBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvZGlzcGxheS5jLCBkZWJ1Z2dlci9lZGl0bGluZS5jLCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci9zdGFjay5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhIHBvc3NpYmlsaXR5IHRvIGxldCB0aGUgaW50ZXJuYWwgZGVidWdnZXIgdXNlIGEgc2VwYXJhdGUKCWhlYXAuIE5vdCBlbmFibGVkIGJ5IGRlZmF1bHQsIGNoYW5nZSAjaWYgaW4gaW5jbHVkZS9kZWJ1Z2dlci5oIHRvIHVzZQoJdGhpcyAodGhlIGhlYXAgYWxsb2NhdG9yIGlzIHZlcnkgc2xvdykuCgoJKiBsb2FkZXIvbG9hZG9yZGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJd2luZS5jb25mIHNob3VsZCBub3Qgb3ZlcnJ1bGUgY29udGVudCBvZiBidXJuZWQgaW4gZGF0YSBpbgoJbG9hZG9yZGVyLmMuCgoJKiBncmFwaGljcy9tYXBwaW5nLmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY29tPgoJU2V0TWFwTW9kZSBzaG91bGQgbm90IHJlc2V0IHRoZSB3aW5kb3cgYW5kIHZpZXdwb3J0IG9yaWdpbnMgdG8gMC4KCgkqIHRvb2xzL3dpbmVjb25mOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFsbG93IHRvIGF1dG9tYXRpY2FsbHkgY29weSBwYXJ0IG9mIHdpbmUuaW5pIGludG8gZ2VuZXJhdGVkIGZpbGUuCglTbWFsbCBwZXJsIGVuaGFuY2VtZW50ICh3b3JrIGluIHN0cmljdCBtb2RlKS4KCVNtYWxsIHVwZGF0ZXMgaW4gaGV1cmlzdGljcy4KCgkqIHdpbmUuaW5pOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZ3JhZGVkIHRvIGhhdmUgYSBkZWNlbnQgbXVsdGltZWRpYSBETExzIGNvbmZpZ3VyYXRpb24uCgoJKiB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jLCB0b29scy93cmMvQ0hBTkdFUzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0Bha2hwaGQuYXUuZGs+CgktIEZpeGVkIGEgY291bnRpbmcgYnVnIGluIHRoZSB3aW4zMiBjb3VudCBhbmQgc29ydCByb3V0aW5lLgoJLSBGaXhlZCBzb3J0IG9yZGVyIG9mIHJlc291cmNlcyAobXVzdCBiZSBuYW1lIGJlZm9yZSBvcmRpbmFsKS4KCS0gU2h1ZmZsZWQgYSBjb3VwbGUgb2YgZ2xvYmFsIHZhcmlhYmxlcyBzbyB0aGF0IGJ1aWx0LWluIGRsbHMgbm93IGNhbgoJICBsb2FkIHJlc291cmNlcyB0aHJvdWdoIHRoZSBwcm9wZXIgUEUgaW50ZXJmYWNlLgoKCSogaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5yZWcuaDoKCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCUFkZGVkIHN1cHBvcnQgZm9yIHN0cmljdCBoYW5kbGVzLiBPbmx5IHdvcmtzIG9uIG1hY2hpbmVzIHdoZXJlCglzaXplb2YoVUlOVCkgPT0gc2l6ZW9mKHZvaWQqKS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUluaXRpYWxpemUgcHJvY2VzcyBjcml0aWNhbCBzZWN0aW9uIGluIHRoZSBjb3JyZWN0IHByb2Nlc3MgY29udGV4dC4KCgkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglXYXJuIGlmIHdyb25nIHByb2Nlc3MgdHJpZXMgdG8gZW50ZXIgY3JpdGljYWwgc2VjdGlvbi4KCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBSZWluaXRpYWxpemUvVW5pbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uCgkoc3RpbGwgbm90IHF1aXRlIGNvcnJlY3QpLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWRlYnVnLmggbXVzdCBiZSBsYXN0IGluIGxpc3Qgb2YgaW5jbHVkZXMuCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJldHVybiAzMi1iaXQgbW9kdWxlIGluIEdldE1vZHVsZUhhbmRsZTE2KCkgaWYgYXBwcm9wcmlhdGUuCgoJKiBtc2Rvcy9pbnQyZi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNyYXNoIHdoZW4gc3RhdHVzIHdhcyByZWFkIHdpdGggY2Qtcm9tIHRyYXkgb3Blbi4KCgkqIHdpbmRvd3MvZHJpdmVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBidWcgaW4gbXNnIGNvbnZlcnNpb24uCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUHJldmVudCBjcmFzaCB3aGVuIG5NaW5SYW5nZSA+IG5NYXhSYW5nZS4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgbWlzc2luZyBtYW5pZmVzdCBjb25zdGFudHMgZm9yIFF1ZXVlIFN0YXR1cyBmdW5jdGlvbnMgKFFTXz8/Pz8pLgoKCSogY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2VkaXQuYywgd2luZG93cy9tZGkuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWlzc2luZyBXSU5fUmVsZWFzZVduZFB0ci4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJTW9yZSBhcHByb3ByaWF0ZSBkZWZhdWx0IHNpemUgZm9yIGZvbnRzIHdpdGggaW52YWxpZCBzaXplcy4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJleWpAd3BpLmVkdT4KCUltcGxlbWVudGVkIFNldENvbHVtbldpZHRoIGZvciBMaXN0VmlldyBjb250cm9sLgoKCSogZG9jdW1lbnRhdGlvbi9jb25maWc6IEFkYW0gU2FjYXJueSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglBZGRlZCBuZXcgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4KCgkqIG1pc2MvdmVyc2lvbi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wcm92ZWQgVkVSU0lPTl9HZXRWZXJzaW9uLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUGV0ZXIgQm9ydGFzIDxwZXRlckBpZG9uZXguc2U+CglBZGRlZCBTd2VkaXNoIGtleWJvYXJkIGxheW91dC4KCgkqIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGN2YWx1ZXMuYywgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvbWV0YWZpbGUuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2RjLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvb2JqZWN0cy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9wc2Rydi9SRUFETUUsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglHZW5lcmFsIHRpZHkgdXAgb2YgdGhlIE1ldGFGaWxlIGRyaXZlciAtIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcKCWdvZXMgdGhyb3VnaCB0aGUgRENGdW5jcyB0YWJsZS4KCgkqIG1pc2MvdG9vbGhlbHAuYywgaWYxNjMyL2tlcm5lbC5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkIGEgc3R1YiBmb3IgR2xvYmFsTWFzdGVySGFuZGxlLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSBTYWNhcm55IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCU11Y2ggbmljZXIgd2F5IHRvIHNlbGVjdCB3aW5lJ3MgbG9jYXRpb24uCglPcHRpb24gdG8gZGlzYWJsZSBjcmVhdGlvbiBvZiBkZWJ1Z2dpbmcgb3V0cHV0LgoJRGVidWdnaW5nIG91dHB1dCBpcyBub3cgY3JlYXRlZCBpbiBkaXJlY3Rvcnkgc2NyaXB0IHdhcyBzdGFydGVkIGluLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBwcm9ibGVtIHdpdGggbWFuYWdlZCBtb2RlLCB3aGVyZSBwb3B1cCB3aW5kb3dzIHdpdGggYSBXU19ETEdGUkFNRQoJc3R5bGUgd2VyZSBhcHBlYXJpbmcgd2l0aCBhIHRpdGxlIGJhci4gQWNjb3JkaW5nIHRvIHRoZSBkb2NzIGZvcgoJV1NfRExHRlJBTUUgYSB3aW5kb3cgd2l0aCB0aGlzIHN0eWxlIGNhbm5vdCBoYXZlIGEgdGl0bGUgYmFyLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVzZSBEbGxPdmVycmlkZXMgZnJvbSB3aW5lLmluaSBhcyBkZWZhdWx0cyBhbHNvIGluCglsb2Fkb3JkZXIuYyAobWVyZ2VkIGluIHNvbWUgTU0gZGxscyBsaW5lcyBmcm9tIEVyaWMgUG9ldWNoKS4KCgkqIHdpbmRvd3MvdGltZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJvZ3VzIGluZmluaXRlIGV4cGlyYXRpb24gdGltZS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCS0gY29uc29saWRhdGUgYm90aCBjYXNlcyBvZiAhcGVuZGluZyBpbiBXYWl0TmV0RXZlbnQKCS0gc2VsZWN0KCkgcmV0dXJucyAtMSBub3QgMCBvbiBlcnJvciBpbiBXYWl0TmV0RXZlbnQKCgkqIG1lbW9yeS9oZWFwLmMsIGluY2x1ZGUvaGVhcC5oOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgSGVhcFZhbGlkYXRlIHRocmVhZHNhZmUsIGFuZCBhZGRlZCBzb21lIG1hY3JvcyB0byB0cmFjayBjYWxsZXJFSVAKCWEgbGl0dGxlIGJldHRlci4KCUFkZGVkIEhFQVBfeHJlYWxsb2MuCgpTYXQgQXByIDI0IDEyOjAyOjE1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBsb2FkZXIvbG9hZG9yZGVyLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZWxmZGxsLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL2VsZmRsbC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglhdXRvY29uZiBmaXhlcyBhbmQgY2xlYW51cHMgKGNoZWNrIGZvciBkbG9wZW4oKSBpbiBsaWJjIHRvbykuCgoJKiBvbGUvTWFrZWZpbGUuaW4sIG9sZS9oZ2xvYmFsc3RyZWFtLmMsIG9sZS9vbGUyc3R1YnMuYywgb2xlL3N0Z19zdHJlYW0uYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIENyZWF0ZVN0cmVhbU9uSEdMT0JBTC4KCgkqIG9sZS9jb21wb2JqLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglMZXQgQ29TZXRTdGF0ZSgpIGFjY2VwdCBzdGF0ZSA9PSBOVUxMLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTWFkZSBpbnRlcm5hbCBmb3JtYXQgbW9yZSBjb21wYXRpYmxlLgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kY2UuYywgY29udHJvbHMvY29tYm8uYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglGaXggbG9ja2luZyB3aXRoIHByb3BlciBjYWxscyB0byBXSU5fUmVsZWFzZVduZFB0ci4KCgkqIG11bHRpbWVkaWEvZHNvdW5kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRG9uJ3QgbWFsbG9jL2ZyZWUgZm9yIGV2ZXJ5IG1peGluZyBvcGVyYXRpb24sIHVzZSB0aGUgc2FtZSBidWZmZXIgb3ZlcgoJaW5zdGVhZC4uLgoKCSogZGxscy9jb21jdGwzMi9oZWFkZXIuYzogQ2hyaXMgTW9yZ2FuIDxjbW9yZ2FuQHdwaS5lZHU+CglKYW1lcyBBYmJhdGllbGxvIDxhYmJlanlAd3BpLmVkdT4KCUhFQURFUl9JbnNlcnRJdGVtQSBhbmQgSEVBREVSX0luc2VydEl0ZW1XIG5vdyB0cmVhdCBudWxsIHBvaW50ZXJzIHRvCgl0ZXh0IHN0cmluZ3MgYXMgbnVsbCBzdHJpbmdzLCBhcyBXaW5kb3dzIGRvZXMuICBGaXhlcyB3aW5lIGNyYXNoIG9uCglzdGFydHVwIG9mIEN1dGVGVFAuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJU2V0ICh3aGVuIHJlZ2lzdHJ5IGxvYWRlZCkgZGF0YSB0byAiXDAiIGFuZCBsZW5ndGggdG8gMiBpbiBlbXB0eQoJc3RyaW5nIHZhbHVlIGNhc2UsIGluIHBsYWNlIG9mIHNldHRpbmcgZGF0YSB0byBOVUxMIGFuZCBsZW5ndGggdG8gMCwKCWFuZCB0aGlzIGlzIHdpdGhvdXQgaW5pdGlhbGl6aW5nIG91dHB1dCBidWZmZXIgcGFyYW1ldGVyIG9mCglSZWdRdWVyeVZhbHVlKi4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgUGFub3NlIGRlZmluZXMgYW5kIEVYVExPR0ZPTlRbQXxXXS4KClRodSBBcHIgMjIgMTY6Mjc6NTMgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqICovKjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgQU5TSSBjb21wYWJpbGxpdHkuCgoJKiBtdWx0aW1lZGlhL21jaWF2aS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9tY2l3YXZlLmMsIG11bHRpbWVkaWEvbWlkaS5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9jYXJldC5jLCB3aW5kb3dzL3JlY3QuYywgZGxscy92ZXJzaW9uL2luZm8uYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbWVtb3J5L2F0b20uYywgbWVtb3J5L3N0cmluZy5jLCBtaXNjL2xzdHIuYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIGNvbnRyb2xzL3VpdG9vbHMuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgc29tZSBpbmNsdWRlcyBvZiAxNiBiaXQgQVBJLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NobG9iai5oLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jOgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJSUNPTWl6YXRpb24gb2YgcmVtYWluaW5nIGludGVyZmFjZXMuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYnVnIHdpdGggdG9vbHRpcHMgc3RlYWxpbmcgZm9jdXMgd2hlbmV2ZXIgYSB0b29sdGlwIHdhcyBjcmVhdGVkLAoJc2hvd24sIGhpZGRlbiBvciB0cmFja2VkLiBUaGUgU2V0V2luZG93UG9zIGNhbGxzIG5lZWRlZCB0byBoYXZlIHRoZQoJU1dQX05PQUNUSVZBVEUgZmxhZyBzZXQgYWRkaXRpb25hbGx5LgoKCSogb2JqZWN0cy9jbGlwcGluZy5jOiBLYXJsIExlc3NhcmQgPGthcmxsQGNvcmVsLmNvbT4KCUZpeGVkIGNvb3JkaW5hdGVzIGNvbnZlcnNpb24gaW4gT2Zmc2V0Q2xpcFJnbi4KCgkqIGluY2x1ZGUvb2JqYmFzZS5oOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglDbGVhbiB1cCBvYmpiYXNlLmguIE1ha2VzIHRoZSBTVERNRVRIT0Qgc2V0IG9mIG1hY3JvcyBhdmFpbGFibGUgdG8gdGhlIHdpbmVsaWIgdXNlci4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL2hhbmRsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGVTb2NrZXRIYW5kbGUsR2V0SGFuZGxlQ29udGV4dCxTZXRIYW5kbGVDb250ZXh0IHN0dWJzIGFkZGVkLgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3NoZWxsYXBpLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vdmVkIHN0dWZmIHRvIHRoZSByaWdodCBwbGFjZS4KCgkqIHdpbmRvd3Mvc3lzY29sb3IuYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglGaXhlZCBzeXNjb2xvcnMgZm9yIHdpbiAzLjEuCgoJKiBmaWxlcy9wcm9maWxlLmMsIGlmMTYzMi9rZXJuZWwuc3BlYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbWlzc2luZyBwcm9maWxlIEtFUk5FTCByb3V0aW5lcyAoY2FsbCAzMi1iaXQgdmVyc2lvbnMpLgoKCSogaWYxNjMyL2J1aWx0aW4uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEJVSUxUSU5fR2V0RW50cnlQb2ludDE2IGRpZG4ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRoZSBuZXcKCWVudHJ5IHRhYmxlIGxheW91dC4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkIEVuaGFuY2VkIE1ldGFGaWxlIHJlY29yZCBzdHJ1Y3R1cmVzLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBpbmNsdWRlL3Jlc291cmNlLmgsIHJlc291cmNlcy9zeXNyZXNfRW4ucmM6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUZpcnN0IHBhdGNoIGltcGxlbWVudGluZyBwcm9wZXJ0eSBzaGVldHMuCgoJKiByZWxheTMyL2dkaTMyLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogR0RJMzIuMTAwLTEwNCBhcmUgb3JkaW5hbC1vbmx5IHJvdXRpbmVzLgoJQWRkZWQgc3R1YnMgZm9yIHNvbWUgV2luOTggR0RJMzIgcm91dGluZS4KCVJlLW51bWJlcmVkIGFsbCBuYW1lZCBleHBvcnRzIChsZXhpY29ncmFwaGljYWxseSkuCgoJKiBncmFwaGljcy9kcml2ZXIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgcHJvdG90eXBlcyAoc3R1YnMpIGZvciBHREkzMi4xMDAtMTA0LgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBtb3JlIGNoZWNrcyBmb3IgdmFsaWQgcGlkbCBmb3JtYXRzCgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gY29ycmVjdGVkIHBhcmFtZXRlciBjb3VudCBmb3IgU0hHZXRTZXR0aW5ncwoJLSBzdHViIFNIVmFsaWRhdGVVTkMKCgkqIGxvYWRlci9lbGYuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgkjZWxzZSBicmFuY2ggY29tcGlsZSBmaXguCgoJKiBpbmNsdWRlL2VsZmRsbC5oLCBsb2FkZXIvZWxmZGxsLmMsIGxvYWRlci9sb2Fkb3JkZXIuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglDaGFuZ2Ugd2luZSdzIGRsb3BlbiBzZWFyY2gtcGF0Y2ggc3RyYXRlZ3kgbm90IHVzaW5nIHRoZSBlbnZpcm9ubWVudAoJYW5kIGFkZGVkICNpZjpzIHRvIHNlcGVyYXRlIHRoZSBjb2RlIG91dCBpZiBsaWJkbCBpc24ndCBhdmFpbGJsZS4KCgkqIG9sZS9jb21wb2JqLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGEgY2hlY2sgZm9yIGEgTlVMTCBwb2ludGVyIGluIENvRnJlZVVudXNlZExpYnJhcmllcy4KCgkqIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1zbWVpc3NuQHN0dWQuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbmNsdWRlIGRlYnVnLmggbGFzdCAoRVJSKCkgbWFjcm8gcHJvYmxlbSBvbiBTb2xhcmlzKS4KCgkqIGNvbnRyb2xzL2NvbWJvLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgc2l6aW5nIGJ1ZyBpbiB0aGUgY29tYm9ib3ggY29udHJvbC4KCgkqIHRvb2xzL2J1aWxkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBJbnRlcm5hbCBORSBlbnRyeSBwb2ludCB0YWJsZXMgd2VyZSBiYWQgKG9uZSBodWdlIGJ1bmRsZSkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJSW5pdGlhbGl6ZSB0aGUgb3V0cHV0IGJ1ZmZlciBwYXJhbWV0ZXJzIHRvIDAgaW4gUmVnUXVlcnlWYWx1ZSoKCWZ1bmN0aW9ucy4gVGhpcyBpcyBpbXBvcnRhbnQgc3BlY2lhbGx5IHdoZW4gdGhlcmUncyBubyBkYXRhIHRvIHJldHVybi4KCgkqIGxvYWRlci9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCURvIG5vdCBpbmNyZW1lbnQgbW9kdWxlIHJlZkNvdW50IGlmIHNlbGYgaXMgbG9hZGVkIGZyb20gd2l0aGluCglEbGxFbnRyeVBvaW50IGR1cmluZyB0aGUgYXR0YWNoIG5vdGlmaWNhdGlvbi4KCldlZCBBcHIgMjEgMTQ6Mjc6MzcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL21lbnUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHByb3RlY3QgVFJBQ0UgYWdhaW5zdCBOVUxMLXB0cgoJLSByZXdyb3RlIEdldE1lbnVJdGVtSUQvR2V0U3ViTWVudSB0byB1c2UgTUVOVV9GaW5kSXRlbSAoaG1lbnU9MHhmZmZmIGZpeCkuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgdHlwby4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVJlaW1wbGVtZW50YXRpb24gb2YgR2V0TW9kdWxlSGFuZGxlMTYgYWNjb3JkaW5nIHRvIGhvdyB3aW45NSBoYW5kbGVzCglpdCAodGhhbmtzIHRvIE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPikuCgoJKiBpZjE2MzIvYnVpbHRpbi5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJQ29ycmVjdGVkIHdyb25nIHJldHVybiB2YWx1ZXMgb2YgYnVpbHQtaW4gbG9hZGVyIHRvIHdvcmsgd2l0aCB0aGUKCWxvYWRvcmRlciBzdHVmZi4KCk1vbiBBcHIgMTkgMTY6NDU6MjQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2JpdGJsdC5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvbWV0YWZpbGVkcnYuaCwgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9tZXRhZmlsZS5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnRlZCByZWNvcmRpbmcgb2YgU3RyZXRjaERJQml0cyBhbmQgU2V0RElCaXRzVG9EZXZpY2UgYW5kCglwbGF5YmFjayBvZiBTZXRESUJpdHNUb0RldmljZS4gQ2xlYW5lZCB1cCBQbGF5TWV0YUZpbGVSZWNvcmQgYSBiaXQuCgoJKiBpbmNsdWRlL2VsZmRsbC5oLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9lbGZkbGwuYywgbG9hZGVyL2xvYWRvcmRlci5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVJlbW92ZWQgbm9uLXBvcnRhYmxlIGhhY2tzIGFuZCByZXBsYWNlZCB0aGVtIHdpdGggbW9yZSBnZW5lcmFsCgl2ZXJzaW9ucy4KCgkqIHdpbmRvd3MvZGNlLmM6IFBhdWwgTWlsbGFyIDxwYXVsbUBhc3Ryby5nbGEuYWMudWs+CglDb2RlIGFkZGVkIHRvIHJlLWV2YWx1YXRlIHN0YWxlIERDIGluZm9ybWF0aW9uIGluIERDRSBjYWNoZS4KCgkqIGxvYWRlci9tb2R1bGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUF0dGFjaCBub3RpZmljYXRpb25zIG11c3QgYmUgc2VuZCBhZnRlciBhbGwgcmVjdXJzaXZlIGRlcGVuZGVuY2llcyBhcmUKCWxvYWRlZCBhbmQgbm90IGJlZm9yZS4KCgkqIGdyYXBoaWNzL3gxMWRydi9wYWxldHRlLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgdHlwby4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgcGxheWluZyBwb3NpdGlvbiB3aGVuIHJlcXVpcmVkIGJ5IHRyYWNrIG51bWJlci4KCgkqIHdpbjMyL2RldmljZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIE1NREVWTERSIERldmljZUlvY3RsKDUpIHN0dWIgKG1zYWNtMzIgaXMgYSBiaXQgaGFwcGllciBub3cpLgoKCSogd2luZS5pbmk6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTmF0aXZlIHRvb2xoZWxwIHdpbGwgbm90IHdvcmsgKG1pc3NpbmcgR0xPQkFMTUFTVEVSSEFORExFKS4KCgkqIEJVR1MsIFJFQURNRTogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVcGRhdGVkLgoKCSogY29udHJvbHMvZWRpdC5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCVRlc3QgZm9yIHN0YXRpYyB3YXMgcmV2ZXJzZWQuCgoJKiAqLyo6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU5ldyBkZWJ1ZyBzY2hlbWUgd2l0aCBleHBsaWNpdCBkZWJ1ZyBjaGFubmVscyBkZWNsYXJhdGlvbi4KClN1biBBcHIgMTggMTQ6NDQ6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogUmVtb3ZlZCBleHRyYSBjYWxsIHRvIFRBU0tfU3RhcnRUYXNrLgoKCSogaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVJlbW92ZWQgY2hlY2sgZm9yIHVuaW9uIHNlbXVuOyBjbGVhbmVkIHVwIGEgYml0LgoKCSogaW5jbHVkZS9zZXJ2ZXIuaCwgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3RyYWNlLmMsIHRvb2xzL21ha2VfcmVxdWVzdHM6CglBZGRlZCBlbnYgcHRyIHRvIG5ld19wcm9jZXNzIHJlcXVlc3QKCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvbWRpLmMsIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZW51LmgsIGluY2x1ZGUvd2ludXNlci5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHVzZSBmb250cy9mb250c2l6ZXMgZ2l2ZW4gYnkgU3lzdGVtUGFyYW1ldGVyc0luZm8KCS0gZHJhd2luZy9hbGlnbm1lbnQgZml4ZXMsIHdpbjk4IHN0eWxlIGZvciBtZW51YmFyCgktIG93bmVyZHJhd24gbWVudXMgYXJlIHdvcmtpbmcgbm93IGZvciB0aGUgZmlyc3QgdGltZQoJLSBjb21wbGV0ZSBjb25zdGFudHMgbWFnaWMgaXRlbXMKCS0gdXNlIHJpZ2h0IG93bmVyIGZvciBwb3B1cG1lbnVzCgktIG5ldzogR2V0L1NldE1lbnVJbmZvCgktIGltcGxlbWVudGVkOiBHZXQvU2V0TWVudUNvbnRleHRIZWxwSWQKCS0gbW9yZSBmbGFncyBmb3IgR2V0L1NldE1lbnVJdGVtSW5mbwoKCSogZmlsZXMvZG9zX2ZzLmM6IHJvYmVydCB3IGhhbGwgPGJvYmhAbi1jYW50cmVsbC5kZW1vbi5jby51az4KCU1ha2UgRE9TRlNfTWF0Y2hMb25nIG1hdGNoIGEgc2VhcmNoIHN0cmluZyBlbmRpbmcgaW4gJyouJyB0byBhIHplcm8KCWV4dGVuc2lvbiBmaWxlIG5hbWUsIGFsbG93aW5nIE1hdGhjYWQgdG8gcnVuLgoKCSogbG9hZGVyL2xvYWRvcmRlci5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1lbW9yeSBmcmVlaW5nLgoKCSogcHJvZ3JhbXMvY21kbGd0c3QvQXR0aWMvY21kbGdyLmgsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuaDoKCVJlbmFtZWQgY21kbGdyLmggdG8gY21kbGd0c3QuaC4KCgkqIHNjaGVkdWxlci9jcml0c2VjdGlvbi5jOiBBZGRlZCB0aW1lb3V0IHRvIGNyaXRpY2FsIHNlY3Rpb24gd2FpdGluZy4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeXNkZXBzLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1lcmdlZCBMaW51eC9GcmVlQlNEIHJlZW50cmFudCBlcnJubyBoYW5kbGVyLCBhZGRlZCBTb2xhcmlzLgoJUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgU29sYXJpcyBsb3ctbGV2ZWwgdGhyZWFkcyAoTFdQcykgYWRkZWQuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZWVudHJhbnQgbGliYyBjaGVjayBmb3IgU29sYXJpcyBhZGRlZC4KCUZpeGVkIHJlZW50cmFudCBYMTEgY2hlY2sgZm9yIEZyZWVCU0QgYW5kIFNvbGFyaXMuCglBZGRlZCBjaGVjayBmb3IgU29sYXJpcyBsb3ctbGV2ZWwgdGhyZWFkIHJvdXRpbmVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJRml4ZWQgdG9vbGhlbHAgcm91dGluZXMgdXNhZ2UgaW4gR2V0TW9kdWxlRnJvbVBhdGggKHJlcG9ydGVkIGJ5IEJlcnRobwoJU3R1bHRpZW5zKS4KCgkqIHRvb2xzL3dpbmVpbnN0YWxsOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUF1dG9tYXRpYyBpbnN0YWxsIHNjcmlwdCwgd2hpY2ggYXV0b21hdGljYWxseSBjb25maWd1cmVzIGFuZCBjb21waWxlcwoJd2luZSBhbmQgcmVnYXBpLCBydW5zIHRvb2xzL3dpbmVjb25mIHRvIGdlbmVyYXRlIGEgY29uZmlndXJhdGlvbiBmaWxlCglpZiBvbmUgZG9lcyBub3QgYWxyZWFkeSBleGlzdCwgYW5kIHVzZXMgcmVnYXBpIHRvIGluc3RhbGwgdGhlIGRlZmF1bHQKCXJlZ2lzdHJ5LgoKCSogZG9jdW1lbnRhdGlvbi9ndWksIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVByb3Blcmx5IGhhbmRsaW5nIGNhc2VzIGxpa2UgY2FsbGluZyBTZXRXaW5kb3dQb3Mgd2hpbGUgcHJvY2Vzc2luZwoJV01fTkNDUkVBVEUuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgYnVncyAodHlwb3MgZnJvbSBjdXQgJiBwYXN0ZSAmIGludmFsaWQgaGVhcCBibG9jawoJZnJlZWluZykuCgoJKiBtaXNjL3dzcHJpbnRmLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQnVnIGZpeCBpbiBHZXRMZW4uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvbWFpbi5jLCBtaXNjZW11L21haW4uYywgcmVsYXkzMi9idWlsdGluMzIuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL2J1aWx0aW4zMi5oLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgbG9hZGVyL01ha2VmaWxlLmluLCBsb2FkZXIvZWxmLmMsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglSZW9yZ2FuaXphdGlvbiBvZiB0aGUgbG9hZGVyIHRvIGNvcnJlY3RseSBsb2FkIGFuZCBmcmVlIGxpYnJhcmllcyBhbmQKCWltcGxlbWVudGF0aW9uIG9mIGxvYWQgb3JkZXIgdG8gbG9hZCBkaWZmZXJlbnQgdHlwZXMgb2YgbGlicmFyaWVzLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbjogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVVwZGF0ZWQgY29tbWFuZGxpbmUgY2hhbmdlcyBvZiAtZGxsIG9wdGlvbiBhbmQgd2luZS5jb25mIGVudHJpZXMuCgoJKiB3aW5lLmluaTogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCVVwZGF0ZWQgdGhlIGV4YW1wbGUgd2l0aCB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gZW50cmllcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglCdWdmaXg6IGZyZWUgbG9hZGVkIGxpYnJhcnkgbm90IGJlZm9yZSBleGl0LgoKCSogaW5jbHVkZS9lbGZkbGwuaCwgaW5jbHVkZS9sb2Fkb3JkZXIuaCwgbG9hZGVyL2VsZmRsbC5jLCBsb2FkZXIvbG9hZG9yZGVyLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJTmV3IGZpbGVzIHRvIHN1cHBvcnQgbG9hZCBvcmRlciBhbmQgcGFydGlhbCBzdHVicyBmb3IgZWxmZGxscy4KCgkqIGdyYXBoaWNzL21ldGFmaWxlZHJ2L29iamVjdHMuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL2RpYi5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlcyBmb3IgdXBzaWRlLWRvd24gRElCcy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ2hhbmdlZCAnR2V0RGlzcGxheU1vZGUnIHRvIHJldHVybiB0aGUgbW9kZSBwcmV2aW91c2x5IHNldCBieQoJJ1NldERpc3BsYXlNb2RlJyAoYW5kIG5vdCB0aGUgY3VycmVudCBtb25pdG9yIG1vZGUpLgoKCSogaW5jbHVkZS90YWIuaCwgZGxscy9jb21jdGwzMi90YWIuYzoKCUx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CgktSW1wbGVtZW50ZWQgVENTX0JVVFRPTlMsIFRDU19GSVhFRFdJRFRILCBUQ01fR0VUSVRFTVJFQ1QsCglUQ01fU0VUSVRFTVNJWkUgYW5kIFRDTV9ERUxFVEVJVEVNLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglMb29rdXBJY29uSWRGcm9tRGlyZWN0b3J5RXgxNigpIGZpeGVkOiBpZiBHZXRTeXN0ZW1QYWxldHRlRW50cmllcygpCglyZXR1cm5zIDAsIGl0IGlzIGludGVycHJldGVkIGFzIGlmIGl0IHdlcmUgMjU2LgoKCSogbG9hZGVyL21vZHVsZS5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJS2V2aW4gSG9sYnJvb2sgPGt3aEBuZW9zb2Z0LmNvbT4KCUZpeCBhbWJpZ3VvdXMgZWxzZSB3YXJuaW5nLgoKCSogd2luZG93cy9zeXNjb2xvci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxvYWRpbmcgY29sb3IgdmFsdWVzIGZyb20gdGhlIHJlZ2lzdHJ5IGZpeGVkLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogQnJpYW4gR2Vyc3QgPGJnZXJzdEBxdWFyay52cHBsdXMuY29tPgoJLSBSZW1vdmVkIGFsbCBmbG9hdGluZyBwb2ludCBtYXRoLgoJLSBJbXBsZW1lbnRlZCBzdHJldGNoaW5nIGluIFggYW5kIFkgZGlyZWN0aW9ucyBmb3IgOCwgMTYsIGFuZCAzMiBiaXQgY29sb3IuCgktIEltcGxlbWVudGVkIHNvdXJjZSBhbmQgZGVzdCBjb2xvci1rZXlpbmcgZm9yIDgsIDE2LCBhbmQgMzIgYml0IGNvbG9yLgoJLSBJbXBsZW1lbnRlZCBzb21lIHRyaXZpYWwgcmFzdGVyIG9wZXJhdGlvbnMuCgktIE1pbmltaXplZCBpbm5lciBsb29wcyBmb3IgbWF4aW11bSBzcGVlZC4KCS0gVXNlIG1lbWNweSB3aGVuZXZlciBwb3NzaWJsZS4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZWR1Y2VkIGZyYWdtZW50IHNpemUuCglSZW9yZ2FuaXplZCB3b2RPcGVuICh3aXRoIHN1cHBvcnQgZm9yIFdBVkVfUVVFUllfRk9STUFUKS4KCUZpeGVkIGJ1ZmZlciB1bmRlcnJ1biByZWNvdmVyeS4KCUZpeGVkIGJ1ZyBpbiB3b2RSZXNldCgpL3dvZENsb3NlKCkuCgoJKiBvbGUvc3RvcmFnZTMyLmM6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglTaW1wbGlmeSBwcm9wZXJ0eU5hbWVDbXAoKSBhbmQgZml4IGEgd2FybmluZyBpbiB0aGUgd2F5IGJ5IHJlbW92aW5nCglDUlRETExfX3djc3VwcigpIGNhbGxzLgoKCSogbWlzYy9kZGVtbC5jOiBLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJRGRlTmFtZVNlcnZpY2U6IGV4cGFuc2lvbiBvZiBzdHViIHRvIHRyYXAgdW51c2VkIGluc3RhbmNlaWRzIGF0IHN0YXJ0IG9mIHJ1bi4KCURkZUdldExhc3RFcnJvcjogY2F0Y2ggJ25vdCBpbml0aWFsaXplZCcgc2l0dWF0aW9uIGFuZCByZXR1cm4gY29ycmVjdCByZXNwb25zZS4KCURkZUZyZWVTdHJpbmdIYW5kbGU6IGNvbXBsZXRlIHRlc3QgZm9yIGVycm9yIHNldCBieSBwcmV2aW91cyBjYWxsIG9mCglzb21ldGhpbmcgYW5kIGlnbm9yZSBpdCwgYWxzbyByZWxlYXNlIGhhbmRsZSB0YWJsZSBtdXRleCBvbiBub3JtYWwgZXhpdC4KCURkZVF1ZXJ5U3RyaW5nQSwgRGRlUXVlcnlTdHJpbmdXLCBEZGVDcmVhdGVTdHJpbmdIYW5kbGVXOiBSZWxlYXNlCgloYW5kbGUgdGFibGUgbXV0ZXggb24gbm9ybWFsIGV4aXQuCgoJKiBpbmNsdWRlL3duZXQuaCwgbWlzYy9uZXR3b3JrLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglEb24ndCBhbm5vdW5jZSB0aGUgV05ldERpcmVjdG9yeU5vdGlmeSBjYXBhYmlsaXR5IFdOZXRHZXRDb25uZWN0aW9uLgoJQ2hhbmdlIHRoZSByZXR1cm4gdmFsdWUgZm9yIGxvY2FsIGZpbGVzLgoKCSogd2luZG93cy9tb3VzZS5jOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJQWRkICJ3aW4uaCIgdG8gZml4IGltcGxpY2l0IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHdhcm5pbmdzLgoKCSogY29uc29sZS9pbnRlcmZhY2UuYywgaW5jbHVkZS9jb25zb2xlLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9ubHkgZGVjbGFyZSBjb25zb2xlICJkcml2ZXIiIG9uY2UsIHVzZSBleHRlcm5hbCByZWZzIGVsc2V3aGVyZS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCVdoZW4gdGhlIHZlcnRpY2FsIHNjcm9sbGJhciBpcyByZW1vdmVkLCB0aGUgYmFja2dyb3VuZCB3YXMgbm90Cglwcm9wZXJseSByZXBhaW50ZWQuCgoJKiBsb2FkZXIvc2lnbmFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGlzYWJsZSBBQyBiaXQgb24gcmVjZWl2aW5nIGFsaWdubWVudCBleGNlcHRpb25zLgoKCSogbWlzYy9tYWluLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3lzdGVtUGFyYW1ldGVyc0luZm8gU1BJX0dFVE5PTkNMSUVOVE1FVFJJQ1M6IGltcGxlbWVudGVkIG1lbnUgcGFydC4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJV2hpbGUgaGFuZGxpbmcgdGhlIFdNX0RFTEVURVdJTkRPVyBjbGllbnQgbWVzc2FnZSBjaGVjayBpZiBhIHdpbmRvdwoJaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGlmIHNvIHByZXZlbnQgYW4gU0NfQ0xPU0UgbWVzc2FnZSBmcm9tIGJlaW5nCglzZW50LgoKCSogd2luZG93cy9kY2UuYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglNYWtlIGFjY2VzcyB0byB0aGUgRENFIGxpc3QgdGhyZWFkIHNhZmUgYnkgZW5zdXJpbmcgd2UgaGF2ZSBhY3F1aXJlZAoJdGhlIFdpbmRvd3MgbG9jayBiZWZvcmUgdXNpbmcgaXQuCgpGcmkgQXByIDE2IDE1OjE5OjE0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZXNvdXJjZXMvLmN2c2lnbm9yZTogQ2hhbmdlZCBmb3IgcmVuYW1lZCBmaWxlcwoKCSogbWlzYy93aW5zb2NrX2FzeW5jLmMsIG1zZG9zL2Rvc2NvbmYuYywgd2luZG93cy91c2VyLmM6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJRml4ZWQgd2FybmluZ3MuCgoJKiBvbGUvbmxzL3dhbC5ubHMsIG9sZS9vbGUybmxzLmMsIHJlc291cmNlcy9BdHRpYy9zeXNyZXNfQ3oucmMsIHJlc291cmNlcy9BdHRpYy9zeXNyZXNfUG8ucmMsIHJlc291cmNlcy9BdHRpYy9zeXNyZXNfU3cucmMsIHJlc291cmNlcy9NYWtlZmlsZS5pbiwgcmVzb3VyY2VzL3N5c3Jlcy5jLCByZXNvdXJjZXMvc3lzcmVzX0NzLnJjLCByZXNvdXJjZXMvc3lzcmVzX1B0LnJjLCByZXNvdXJjZXMvc3lzcmVzX1N2LnJjLCByZXNvdXJjZXMvc3lzcmVzX1dhLnJjLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLCBpbmNsdWRlL29wdGlvbnMuaCwgaW5jbHVkZS93aW5ubHMuaCwgbWlzYy9tYWluLmM6CglQYWJsbyBTYXJhdHhhZ2EgPHBhYmxvLnNhcmFjaGFnYUBwaW5nLmJlPgoJQWRkZWQgd2Fsb24gbGFuZ3VhZ2Ugc3VwcG9ydCAoSSBhbHNvIG1vdmVkIEN6IC0+IENzLCBTdyAtPiBTdiwgYW5kIFBvCgktPiBQdDsgdG8gY29uZm9ybSB0byBzdGFuZGFyZCBuYW1lcyBmb3IgdGhvc2UgbGFuZ3VhZ2VzKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCByZWxheTMyL01ha2VmaWxlLmluOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGQgLWZuby1idWlsdGluIHdoZW4gY29tcGlsaW5nIHdpdGggZ2NjIGluIHJlbGF5MzIvIHN1YmRpci4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL25lL3NlZ21lbnQuYywgdG9vbHMvYnVpbGQuYywgaWYxNjMyL2J1aWx0aW4uYzoKCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCS0gSW1wbGVtZW50ZWQgcHJvcGVyICgicmVhbCIsIGNvbXByZXNzZWQpIFdpbjE2IGVudHJ5IHRhYmxlcy4KCS0gRml4ZWQgTXlBbGxvYyAoQUtBIE5FX0FsbG9jYXRlU2VnbWVudCkuCgktIEltcGxlbWVudGVkIFBhdGNoQ29kZUhhbmRsZTE2LgoKCSogdG9vbHMvQXR0aWMvbWFrZV9vczIuc2gsIHRvb2xzL21ha2Vfb3MyLmNtZCwgZ3JhcGhpY3MvcGF0aC5jLCBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBpbmNsdWRlL3NpZ19jb250ZXh0Lmg6CglSb2JlcnQgUG91bGlvdCA8a3J5bm9zQGNsaWMubmV0PgoJQSBmZXcgcGF0Y2hlcyB0byBoZWxwIFdpbmUgdG8gY29tcGlsZSBvbiBPUy8yLgoKVGh1IEFwciAxNSAxNjo0Njo1MSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvbWV0YWZpbGVkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvbWFwcGluZy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgaW5jbHVkZS9tZXRhZmlsZS5oLCBpbmNsdWRlL21ldGFmaWxlZHJ2LmgsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIG9iamVjdHMvbWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQ2hhbmdlICgzMiBiaXQpIEhNRVRBRklMRXMgdG8gR0RJIG9iamVjdHMgKEhNRVRBRklMRTE2cyByZW1haW4gYXMKCWdsb2JhbCBtZW1vcnkgaGFuZGxlcykuICBGaXhlZCBkaXNrLWJhc2VkIE1ldGFGaWxlcy4gIEJldHRlcgoJc2VwYXJhdGlvbiBiZXR3ZWVuIE1ldGFGaWxlIHBsYXliYWNrIGFuZCB0aGUgbWV0YWZpbGVkcnYuCgoJKiBtaXNjL2NydGRsbC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCV9DSXBvdyBhcmd1bWVudCBvcmRlciB3YXMgY29uZmlybWVkIHdpdGggU3RhcmNyYWZ0IHYxLjA1LgoKCSogZG9jdW1lbnRhdGlvbi9rZXlib2FyZDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDbGFyaWZpZWQgYSBmZXcgcG9pbnRzLgoKCSogbXNkb3MvaW50MjEuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUFkZGVkIElPQ1RMIGZ1bmN0aW9uIDB4NDQwZC8weDcyLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglVbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uIHBhcnRpYWwgc3R1YiBpbXBsZW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgcHJvdG8gZm9yIEdldEV4aXRDb2RlVGhyZWFkLgoKCSogaW5jbHVkZS9kcml2ZXIuaCwgaW5jbHVkZS93aW5lL2tleWJvYXJkMTYuaDoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglBZGRlZCBtaXNzaW5nIHdpbmRlZi5oIGluY2x1ZGVzLgoKCSogd2luZG93cy9pbnB1dC5jLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJUmVsZWFzZUNhcHR1cmUoKSBpcyBzdXBwb3NlZCB0byByZXR1cm4gYSBCT09MIHZhbHVlLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGxvYWRlci9zaWduYWwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRnJlZUJTRCAzIG11bHRpdGhyZWFkaW5nIGZpbmFsIGZpeC4gRG8gbm90IHVzZSBsaWJjX3IsIGxpYmMgaXMganVzdCBhcwoJcmVlbnRyYW50IGNvbmNlcm5pbmcgZXJybm8uIFJldmVydCB1bm5lZWRlZCBGcmVlQlNEIGhhY2sgdG8KCWxvYWRlci9zaWduYWwuYyBmcm9tIGxhc3QgcGF0Y2guCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglpbmRleCA9PSAzIGNvcnJlc3BvbmRzIHRvIEFsdC1HciArIFNoaWZ0LgoKCSogbWlzYy9kZGVtbC5jOiBLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJTW9yZSBvZiBEZGVDcmVhdGVTdHJpbmdIYW5kbGVBLCBEZGVGcmVlU3RyaW5nSEFuZGxlLCBEZGVRdWVyeVN0cmluZ0EKCWFuZCBEZGVDcmVhdGVTdHJpbmdIYW5kbGVXIGFuZCB0aWR5IHVwIG9mIFJlbW92ZUhTWk5vZGVzLCBhbmQKCURkZUNyZWF0ZVN0cmluZ0hhbmRsZUEuCgoJKiB3aW5kb3dzL3gxMWRydi9tYWluLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L3BhbGV0dGUuYywgaW5jbHVkZS94MTFkcnYuaDoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCB1Z2x5IGRpc2FibGVkIGNvbnRyb2xzIGFuZCBibGFjayBiYWNrZ3JvdW5kIGluIFdyaXRlIGFuZCBMb3R1cwoJTm90ZXMuCgoJKiBjb250cm9scy9idXR0b24uYywgaW5jbHVkZS9idXR0b24uaCwgaW5jbHVkZS93aW51c2VyLmg6CglQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50IHRoZSBidXR0b24gd2l0aCBiaXRtYXBzLgoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlMzIuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgSVN0b3JhZ2U6OkNvcHlUbyBhbmQgSVN0cmVhbTo6Q29weVRvLgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IEFsd2F5cyByZWxlYXNlIHRoZSBXaW4xNkxvY2sgaW4gVEFTS19SZXNjaGVkdWxlLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglTb2x2ZWQgYSBkZWFkbG9jayBiZXR3ZWVuIGdsb2JhbCBsb2NrIGFuZCB3bmQgbG9jayBpbiBldmVudC5jLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVR5cG8gdGhhdCBicm9rZSBTb2xhcmlzIGNvbXBpbGUgZml4ZWQuCgoJKiBjb250cm9scy9kZXNrdG9wLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkIGEgV0lOX1JlbGVhc2VEZXNrdG9wIGluIERFU0tUT1BfSXNTaW5nbGVXaW5kb3cuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJRml4IHNjYW5jb2RlcyBmb3IgTnVtTG9jayBhbmQgTnVtLS8uCglGaXggTWFwVmlydHVhbEtleSgpIChtYXB0eXBlPTIpIHRvIHJldHVybiBwcm9wZXIgYXNjaWkgY29kZS4KCVJld29ya2VkIEdldEtleU5hbWVUZXh0KCkgYWdhaW4uCgoJKiBncmFwaGljcy9wc2Rydi9mb250LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUxpbWl0IGxhc3RDaGFyIHRvIDB4ZmYgaW4gUFNEUlZfR2V0Q2hhcldpZHRoLgoKCSogd2luZG93cy91c2VyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2luZyBXSU5BUEkgZm9yIFJlZ2lzdGVyU3lzdGVtVGhyZWFkLgoKU3VuIEFwciAxMSAxODo0ODoxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50MTAuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgIkRpc3BsYXkgQ29tYmluYXRpb24iIGNhbGwuCgoJKiBtaXNjL2NvbW0uYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgYSBjcmFzaCBkdWUgdG8gaW52YWxpZCBPcGVuQ29tbSByZXR1cm4gdmFsdWUgZm9yIGJ1c3kgY29tbSBwb3J0LgoJQ2xlYW5lZCB1cC9maXhlZCBzZXZlcmFsIHRoaW5ncy4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jb2lzIEJvaXN2ZXJ0PGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJRW5hYmxlZCB0aHJlYWQgc2FmZW5lc3MgZm9yIHduZCBzdHJ1Y3R1cmUgY29kZS4KCgkqIGRlYnVnZ2VyL2RiZy55OiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBDTElFTlRfRGVidWdnZXJSZXF1ZXN0IHRvIGZyZWV6ZS91bmZyZWV6ZSB0aHJlYWRzLgoKCSogc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBpbmNsdWRlL3NlcnZlci90aHJlYWQuaCwgc2NoZWR1bGVyL2NsaWVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBuZXcgQ0xJRU5UX0RlYnVnZ2VyUmVxdWVzdCByb3V0aW5lLCBpbXBsZW1lbnRlZCBzdXBwb3J0IGZvcgoJREVCVUdHRVJfRlJFRVpFX0FMTC9ERUJVR0dFUl9VTkZSRUVaRV9BTEwgcmVxdWVzdHMuCglSdW4gd2luZSBzZXJ2ZXIgaW4gdGhlIG1haW4gd2luZSBwcm9jZXNzLgoJQnVnZml4OiBuZXZlciBmcmVlIGluaXRpYWwgdGhyZWFkIQoKCSogc2NoZWR1bGVyL3Byb2Nlc3MuYywgaW5jbHVkZS9wcm9jZXNzLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU5vbi1mdW5jdGlvbmFsIFBST0NFU1NfU3VzcGVuZC9SZXN1bWVPdGhlclRocmVhZHMgcmVtb3ZlZC4KCgkqIHdpbmRvd3MvdGltZXIuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglUZWFjaGVkIFRJTUVSX0dldE5leHRFeHBpcmF0aW9uIHRoYXQgYSB0aW1lciB0aGF0IGhhcyBhbHJlYWR5IGV4cGlyZWQKCShidXQgbm90IHByb2Nlc3NlZCB5ZXQpIEhBUyBhbHJlYWR5IGV4cGlyZWQuLi4KCgkqIHdpbmVkZWZhdWx0LnJlZzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEZWZhdWx0IHZhbHVlcyBmb3IgcmVnaXN0cnkuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6IEthcmwgTGVzc2FyZCA8a2FybGxAY29yZWwuY2E+CglPcHRpbWl6ZWQgY29kZSBmb3IgU2V0SW1hZ2VCaXRzX1gsIG1ha2luZyBiaXRtYXAgY3JlYXRpb24gZmFzdGVyLgoKCSogY29udHJvbHMvbWVudS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVRoZSBNRUFTVVJFSVRFTVNUUlVDVCBhbmQgRFJBV0lURU1TVFJVQ1Qgd2VyZSBmaWxsZWQgd3JvbmcuCgoJKiBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgbG9hZGVyL3NpZ25hbC5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBjb25maWd1cmU6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCS0gU3RhcnRlZCBtdWx0aXRocmVhZGluZyBmb3IgRnJlZUJTRCAoaW5jb21wbGV0ZSwgYnV0IHNvbWUKCSAgYXBwbGljYXRpb25zIG5vdyBhdCBsZWFzdCBzdGFydCB1cCBhZ2FpbikuCgktIFVzZSBfdGhyZWFkX3N5c19zaWdhY3Rpb24vX3RocmVhZF9zeXNfc2lnYWx0c3RhY2suCgktIENSMiBvbiBwYWdlZmF1bHQgZ2V0cyBwYXNzZWQgaW4gc2NfZXJyIChzb21lIGtpbmQgb2Yga2x1ZGdlIGluCgkgIEZyZWVCU0Qgb3ducyBmYXVsdCBoYW5kbGluZyB3ZSBjYW4gdXNlKQoKCSogaW5jbHVkZS9zZWxlY3RvcnMuaCwgbWVtb3J5L2dsb2JhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYzoKCU1hZGUgU0VMRUNUT1JfUmVhbGxvY0Jsb2NrIHByZXNlcnZlIHRoZSBjdXJyZW50IHNlbGVjdG9yIGFjY2VzcyByaWdodHMKCShwcm9ibGVtIHJlcG9ydGVkIGJ5IEFuZHJlYXMgTW9ocikuCgoJKiBtaXNjL3N5c3RlbS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBzZXJ2aWNlcyB0aHJlYWQgaW5zdGVhZCBvZiB0aW1lciBzaWduYWxzLgoKCSogc2VydmVyL3RocmVhZC5jLCBzY2hlZHVsZXIvc3luY2hyby5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyB1c2VyIEFQQ3Mgd2l0aCBOVUxMICdmdW5jJyAoanVzdCB3YWtlIHVwIHRoZSB0aHJlYWQpLgoKCSogaW5jbHVkZS9zZXJ2aWNlcy5oLCBsb2FkZXIvbWFpbi5jLCBzY2hlZHVsZXIvTWFrZWZpbGUuaW4sIHNjaGVkdWxlci9zZXJ2aWNlcy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCAna2VybmVsIHNlcnZpY2VzIHRocmVhZCcuCgoJKiBpbmNsdWRlL3dpbnNwb29sLmgsIG1pc2MvcHJpbnRkcnYuYywgcmVsYXkzMi93aW5zcG9vbC5zcGVjOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGRlZCBzdHViIGZvciBQcmludGVyUHJvcGVydGllcy4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmMsIGluY2x1ZGUvbnRkZGsuaCwgcmVsYXkzMi9udGRsbC5zcGVjLCBkbGxzL250ZGxsL250LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIE50VGVybWluYXRlUHJvY2VzcyBhbmQgTnREaXNwbGF5U3RyaW5nLgoKCSogbG9hZGVyL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRnJlZUxpYnJhcnkgcGFydGlhbCBpbXBsZW1lbnRhdGlvbi4KCgkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBfZnRvbCB0YWtlIGFyZ3VtZW50IGZyb20gRlBVIHN0YWNrLiBTdGFyY3JhZnQgdjEuMDQgKCpub3QqIEJyb29kCglXYXJzKSBub3cgd29ya3MgcGVyZmVjdGx5IHdpdGggV2luZSdzIGNydGRsbC4gV3JvdGUgYSB0ZXN0CglpbXBsZW1lbnRhdGlvbiBvZiBfQ0lwb3cgdG9vLCB3aGljaCB0aG9zZSB3aG8gZG8gaGF2ZSBCcm9vZCBXYXJzIGNhbgoJcmVwb3J0IG9uLCBzbyBpdCBjYW4gYmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gZm9yIEdldEtleU5hbWVUZXh0IGZvciBuZXcga2V5Ym9hcmQgc3RydWN0dXJlLgoKCSogZGxscy90YXBpMzIvcGhvbmUuYzogS2V2aW4gSG9sYnJvb2sgPGt3aEBuZW9zb2Z0LmNvbT4KCUZpeGVkIHdhcm5pbmcuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3N0b3JhZ2UuaDogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBtaXNzaW5nIFJlYWRDbGFzc1N0ZyBwcm90b3R5cGUuCgoJKiBtaXNjL3dzcHJpbnRmLmM6IE1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CgktIEZpeCBjb21tZW50cyBhZnRlciB0aGUgYmlnIHJlbmFtaW5nICh4eHh4MzJ5IC0tPiB4eHh4eSkuCgktIERlY2xhcmUgdGhlIFdQUklOVEZfREFUQSB1bmlvbiwgYW5kIHVzZSBpdCBpbnN0ZWFkIG9mIExQQ1ZPSUQgYW5kIFdPUkQuCgkgIEF2b2lkIHVnbHkgdHlwZSBjYXN0aW5nLCBhbmQgZml4IGNvbXBpbGF0aW9uIHdhcm5pbmdzIG9mIHdzcHJpbnRmLmMKCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RkZToKCUtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglTdGF0dXMgZG9jdW1lbnQgZm9yIERERS9EZGVtbC4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBldmVudCBjYWxsYmFjayBtZWNoYW5pc20uCglJbnRyb2R1Y3Rpb24gb2YgTUNJIHlpZWxkIHByb2NzLgoJVXBkYXRlZCAocHJlcGFyZXx1bnByZXBhcmUpaGVhZGVyIGZ1bmN0aW9ucyAod2F2ZSwgbWlkaSkgdG8gYWxsb3cKCWNvcnJlY3QgY2FsbGJhY2sgbWVjaGFuaXNtcy4KCU1hZGUgbWlkaVN0cmVhbVhYWCBmdW5jdGlvbnMgd29ya2luZy4KCUZpcnN0IHRyeSBhdCBtbVRocmVhZFhYWCBmdW5jdGlvbnMuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIChwcmVwYXJlfHVucHJlcGFyZSloZWFkZXIgZnVuY3Rpb25zIHRvIGFsbG93IGNvcnJlY3QgY2FsbGJhY2sKCW1lY2hhbmlzbXMuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTbWFsbCBlbmhhbmNlbWVudC4KCgkqIG11bHRpbWVkaWEvbWNpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTmV3IG1ldGhvZCBmb3Igc3RydWN0dXJlIGNvbnZlcnNpb24gKDE2IDwtPiAzMikuCglNb3JlIE1DSSBzdHJ1Y3R1cmVzIGNvcnJlY3RseSBtYXBwZWQuCglJbnRyb2R1Y3Rpb24gb2YgTUNJIHlpZWxkIHByb2MgYW5kIGJyZWFrIGZhY2lsaXR5LgoKCSogbXVsdGltZWRpYS9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVVwZGF0ZWQgKHByZXBhcmV8dW5wcmVwYXJlKWhlYWRlciBmdW5jdGlvbnMgdG8gYWxsb3cgY29ycmVjdCBjYWxsYmFjawoJbWVjaGFuaXNtcy4gIEltcGxlbWVudGVkIHdhdmVPdXQgcGxheWJhY2sgYXMgYXN5bmNocm9ub3VzLgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRlZCBpbXBsZW1lbnRhdGlvbiBvZiBtbVRocmVhZFhYWCBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgYSBmZXcgbWlzc2luZyBkZWZpbmVzIChNSURJLCBXQVZFLCBjYWxsYmFja3MpLgoJU3RydWN0dXJlcyBmb3IgbWlkaVN0cmVhbVhYWCBmdW5jdGlvbnMuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIChwcmVwYXJlfHVucHJlcGFyZSloZWFkZXIgZnVuY3Rpb25zICh3YXZlLCBtaWRpKSB0byBhbGxvdwoJY29ycmVjdCBjYWxsYmFjayBtZWNoYW5pc21zLiBBZGRlZCB3aW5lIHNwZWNpZmljIGVudHJ5IGZvciBtbVRocmVhZFhYWAoJZnVuY3Rpb25zIHRocmVhZCBzdGFydGluZyBwb2ludC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCUludHJvZHVjZSBTVEFUU1RHMTYgLSBhIDE2IGJpdCB2YXJpYW50IG9mIFNUQVRTVEcuCgoJKiBvbGUvc3RvcmFnZS5jOiBNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJRml4IElTdG9yYWdlMTZfZm5TdGF0KCkgdG8gdXNlIFNUQVRTVEcxNiAoaXQgaXMgYSAxNiBiaXQgaW50ZXJmYWNlKS4KCgkqIGNvbnRyb2xzL21lbnUuYzogUGF1bCBNaWxsYXIgPHBhdWxtQGFzdHJvLmdsYS5hYy51az4KCUZpeGVkIG1lbnUgdHlwZSBzZXR0aW5nIGluIFNldE1lbnVJdGVtSW5mbzMyX2NvbW1vbigpLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTZW5kIFVTSUdfUFJPQ0VTU19DUkVBVEUgc2lnbmFsLgoJQnVnZml4OiBHZXRQcm9jZXNzRHdvcmQgb2Zmc2V0IC04IHNob3VsZCByZXR1cm4gcGFyZW50IHByb2Nlc3MgSUQuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglBZGRlZCBSZWdpc3RlclN5c3RlbVRocmVhZCBzdHViLgoKCSogaW5jbHVkZS93aW5lL29ial9taXNjLmgsIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYywgaW5jbHVkZS93aW5lcnJvci5oOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIENvQ3JlYXRlSW5zdGFuY2VFeCBtZXRob2QuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IERhdmlkIEdheSA8ZGdheUBDUy5CZXJrZWxleS5FRFU+CglGaXhlZCBjcmFzaCBkdWUgdG8gYSB2YWx1ZSBvZiBuYW1lIGxlbmd0aCAwLCB2YWx1ZSBsZW5ndGggMCBhdCB0aGUgZW5kCglvZiB0aGUgcmVnaXN0cnkuCgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglDaGVjayBpZiBwVGVtcEFjdGl2ZVdpbmRvdyBpbiBXSU5QT1NfU2V0V2luZG93UG9zIGlzIHZhbGlkIGFmdGVyIHRoZQoJUVVFVUVfTG9jay4KCgkqIG11bHRpbWVkaWEvZHBsYXkuYzogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CgktIHVwZGF0ZWQgYmVjYXVzZSBvZiB0aGUgc3BsaXR0aW5nIG9mIGludGVyZmFjZS9pbXBsZW1lbnRhdGlvbgoJLSB1cGRhdGVkIHRvIHVzZSBJQ09NX1RISVMKCgkqIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kcGxvYmJ5LmgsIG9sZS9ndWlkLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCS0gdXNlIHRoZSBsYXRlc3QgSUNPTSBtYWNyb3MKCS0gbW92ZWQgdGhlIElEaXJlY3RQbGF5TG9iYnkgaW50ZXJmYWNlIHRvIGRwbG9iYnkuaAoJLSByZW1vdmVkIGFsbCB0aGUgaW1wbGVtZW50YXRpb24gYXNwZWN0cyBzaW5jZSB0aGV5IG5lZWQgdG8gYmUKCXNlcGFyYXRlCgoJKiBpbmNsdWRlL2Rzb3VuZC5oLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglJQ09NaXNhdGlvbiBvZiB0aGUgRGlyZWN0U291bmQgQVBJLgoKCSogZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSByZW9yZ2FuaXNlZCBpY29uIGV4dHJhY2luZyBmcm9tIGZpbGVzCgktIG1hZGUgZXh0cmFjdGluZyBmcm9tIG5lIGFuZCBpY28gZmlsZXMgd29ya2luZwoJLSBJUGVyc2lzdEZpbGUgaW50ZXJmYWNlIGZvciBJRXh0cmFjdEljb24KCgkqIG1pc2Mvc2hlbGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBidWZmZXIgb3ZlcnJ1bi4KCgkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2hhbmdlZCByZXNzb3VyY2UgZGlyIHN0cnVjdHVyZXMuCglBZGFwdGVkIEZpbmRCZXN0SWNjb24vRmluZEJlc3RDdXJzb3IuCgoJKiB3aW5kb3dzL3N5c2NvbG9yLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTG9hZGluZyB0aGUgY29sb3Igc2NoZW1hIGZvciByZWdpc3RyeS4KClNhdCBBcHIgMTAgMTY6NTg6NTUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL0F0dGljL3dpbnNvY2tfZG5zLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2Mvd2luc29jay5jLCBtaXNjL3dpbnNvY2tfYXN5bmMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVpbXBsZW1lbnRlZCB3aW5zb2NrIGFzeW5jaHJvbm91cyBETlMgc2VydmljZXMuIE5vIGxvbmdlciB1c2UgYQoJZm9yaygpZWQgcHJvY2VzcywgYnV0IGVpdGhlciBhIHNlcnZpY2UgdGhyZWFkIG9yIGlubGluZSBibG9ja2luZyBjYWxscwoJZm9yIG5vbi10aHJlYWRpbmcgYXJjaGl0ZWN0dXJlcy4gKE1ha2VzIEZyZWUgQWdlbnQxNiB3b3JrIGFnYWluLikKCgkqIHByb2dyYW1zL2NtZGxndHN0L0F0dGljL2NtZGxnci5oLCBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3IucmMsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxndHN0LmM6Cgk8ZXdpbGxAbmNhbC52ZXJpby5jb20+CgktIGNvbG9yIGFuZCBmb250IGRpYWxvZ3Mgbm93IGFjdHVhbGx5IGRvIHNvbWV0aGluZyBpbnRlcmVzdGluZywKCSAgYW5kIGZvcmNlIGEgcmVkcmF3IHdoZW4gc3VjY2Vzc2Z1bC4gIEJhY2tncm91bmQgY29sb3IgaXMgYWRqdXN0YWJsZS4KCSAgVGV4dCBjb2xvciBpcyBhbHNvIGFkanVzdGFibGUsIGJ1dCB0aGUgdXNlciBoYXMgdG8gc2V0IHRoZSBDRl9FRkZFQ1RTCgkgIGZsYWcgZmlyc3QuCgktIHRleHQgaXMgb3V0cHV0IGxlZnQtcmlnaHQgY2VudGVyZWQsIGJhc2VsaW5lLCBhdCB0aGUgbWlkZGxlCgkgIG9mIHRoZSB3aW5kb3csIGFuZCBtb3ZlcyB3aXRoIHRoZSB3aW5kb3cuICBUZXh0IGZvbnQgaXMgYWRqdXN0YWJsZS4KCS0gU3VjY2VzcyBhbmQgZmFpbHVyZSBNZXNzYWdlQm94IGNhbGxzIGZvciBDb2xvciwgRm9udCwgT3BlbiwKCSAgYW5kIFNhdmUgaGF2ZSBiZWVuIHJlbW92ZWQgb3Igc3VwcHJlc3NlZC4gIFRoZXkgYW5ub3llZCBtZSBhZnRlcgoJICBhd2hpbGUsIGFuZCBJIHN1c3BlY3QgdGhleSBhbm5veWVkIG90aGVycywgdG9vLiAgVXNlIG15IHRvb2whIDotKQoJLSBjbWRsZ3RzdCBub3cgaGFzIHRoZSBmdWxsIHBhdGhuYW1lIGluIHRoZSB1cHBlciBsZWZ0IGNvcm5lcjsgd2hpY2ggbWF5CgkgIGFzc2lzdCBpbiBkZWJ1Z2dpbmcgY2VydGFpbiBwcm9ibGVtcyAtLSBvciBpdCBtYXkgbm90LiA6LSkKCS0gdXNhZ2UgZGlhbG9nIGFkZGVkCgoJKiBvbGUvb2xlMm5scy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvcnJlY3RlZCBkZWJ1ZyBvdXRwdXQuCgoJKiB3aW5kb3dzL2RyaXZlci5jLCByZWxheTMyL3dpbm1tLnNwZWM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUJldHRlciBlcnJvciBoYW5kbGluZyA7IGEgZmV3IGJ1ZyBmaXhlcyA7IG5vdyBPcGVuRHJpdmVyMTYgY2FuIGxvYWQgMzIKCWJpdCBkcml2ZXJzLgoJQWRkZWQgc3R1YiBmb3IgR2V0RHJpdmVyRmxhZ3MuCgoJKiB3aW5kb3dzL3VzZXIuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCVNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0PgoJU3R1YnMgZm9yIENsb3NlRGVza3RvcCBhbmQgQ2xvc2VXaW5kb3dTdGF0aW9uLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJR2V0TW9kdWxlRnJvbVBhdGggbm93IGNoZWNrcyBmb3IgbG9hZGVkIG1vZHVsZXMgdmlhIGZpbGVuYW1lcyB3aGljaAoJd2VyZSBzcGVjaWZpZWQgd2l0aG91dCBhIHBhdGguCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvd2lucmVnLmg6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBIS1Uga2V5IHNhdmluZyBhbmQgbG9hZGluZy4gQWRkIG5ldyBzdXBwb3J0ZWQgZGF0YQoJdHlwZSBpbiBkZWJ1Z19wcmludF92YWx1ZS4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvZG9jb2JqLmgsIG9sZS9ndWlkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBpbnRlcmZhY2VzIGZvciBJT2xlQ29tbWFuZFRhcmdldCwgSURyb3BUYXJnZXQsIElWaWV3T2JqZWN0LgoJU21hbGwgY2hhbmdlIGhvdyB0byBnZXQgaWNvbnMgZm9yIGxpc3R2aWV3LgoKCSogaW5jbHVkZS9zaGxvYmouaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUlMTG9hZEZyb21TdHJpbmcgYW5kIFNIR2V0U2V0dGluZ3MgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU0hHZXRTZXR0aW5ncyBpbXBsZW1lbnRlZC4KCUV4aXRXaW5kb3dzRGlhbG9nKCkgc2ltdWxhdGVkIGJ5IE1lc3NhZ2Vib3guCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUlMTG9hZEZyb21TdHJpbmcgaW1wbGVtZW50ZWQuCgoJKiBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvaW5pdC5jLCBncmFwaGljcy90dHlkcnYvcGFsZXR0ZS5jOgoJUmljaGFyZCBNb3J0aW1lciA8cmVtaXRyb21AbXktZGVqYW5ld3MuY29tPgoJQWRkZWQgbWlzc2luZyAqSXNEYXJrIGVudHJpZXMgaW50byBQQUxFVFRFX0RyaXZlciBpbnN0YW5jZQoJaW5pdGlhbGlzYXRpb24uCgoJKiB3aW5kb3dzL3gxMWRydi9tb3VzZS5jOiBCcmlhbiBHZXJzdCA8YmdlcnN0QHF1YXJrLnZwcGx1cy5jb20+CglGaXhlZCBYMTFEUlZfTU9VU0VfV2FycFBvaW50ZXIgaW5pdGlhbCB2YWx1ZS4KCgkqIG9iamVjdHMvYml0bWFwLmM6IEx1YyBUb3VyYW5nZWF1IDxsdWNAbWFjYWRhbWlhbi5jb20+CglFbnN1cmUgdGhhdCB0aGUgYml0bWFwIGlzIHByb3Blcmx5IGluaXRpYWxpemVkIHdoZW4gY3JlYXRlZCB3aXRoIHRoZQoJTFJfQ1JFQVRFRElCU0VDVElPTiBmbGFnLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgbWVzc2FnaW5nIHByb2JsZW0gb2YgdGhlIGVkaXQgYm94IGZvciBub2RlIGxhYmVsIGVkaXRpb24uCglTdWJzdGl0dXRlZCBXTV9QQUlOVCBmb3IgSW52YWxpZGF0ZVJlY3QuCglTb21lIGdyYXBoaWNhbCBmaXhlcy4KCgkqIG1pc2MvbWFpbi5jOiBKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglDaGVjayBmb3IgZHJpdmVycz09TlVMTCBiZWZvcmUgdHJ5aW5nIHRvIGRlbGV0ZSB0aGVtIGF0IGV4aXQuICBUaGlzCgljb3VsZCBoYXBwZW4gaWYgdGhlIGVtdWxhdG9yIGluaXRpYWxpemF0aW9uIGZhaWxlZCBmb3Igc29tZSByZWFzb24gYW5kCgl0aGUgZHJpdmVycyBoYWRuJ3QgYmVlbiBpbml0aWFsaXplZCB5ZXQuCgoJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBtaXNjL2NhbGxiYWNrLmMsIG1pc2NlbXUvbWFpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIEluaXRBcHAxNiAodXNpbmcgQ2FsbG91dCkgZm9yIGluaXRpYWwgcHJvY2Vzcy4KCgkqIG1pc2NlbXUvaW5zdHIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDbGVhciBpbnZhbGlkIHNlbGVjdG9ycyBhbHNvIGluIENhbGxUbzE2IHJlbGF5IGNvZGUuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0VzLnJjOgoJSm9zZSBNYXJjb3MgTPNwZXogQ2FyYXZhY2EgPGpvc2UubG9wZXpAdXBjbmV0LnVwYy5lcz4KCVJldmlzZWQgU3BhbmlzaCByZXNvdXJjZXMuCgoJKiB3aW5kb3dzL21kaS5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeGVkIHdpbmRvdyBsb2NraW5nIGJ1ZyBpbiBDYWxjQ2hpbGRTY3JvbGwuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXhlZCBmYWtlIG11bHRpbWVkaWEgdGltZXJzLiBHcmltIEZhbmRhbmdvIGlzIG5vdyBhYmxlIHRvIHN0YXJ0IHVwCgl3aGVuIHVuZGVyIGZhdm9yYWJsZSBjb25kaXRpb25zLiBUaGUgcHJldmlldyBtb3ZpZSBvbiB0aGUgQnJvb2QgV2FycwoJZGlzYyBub3cgcGxheXMsIHRvby4KCgkqIG1pc2MvcHJpbnRkcnYuYzogS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglCdWdmaXggRW51bVByaW50ZXJzQTogbHBiUHJpbnRlcnM9TlVMTCBvciBjYkJ1Zj0wIHdvdWxkIGNyYXNoIFdpbmUsCglpbnN0ZWFkIG9mIHJldHVybmluZyB0aGUgcmlnaHQgYnVmZmVyc2l6ZS4KClR1ZSBBcHIgIDYgMDc6MTQ6MDkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jOiBnYWxiZXJ0ZSA8Z2FsYmVydGVAbmVvLnJyLmNvbT4KCUZpeGVkIFNlYXJjaFBhdGhBIHJldHVybiB2YWx1ZS4KCgkqIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZGRyYXdfcHJpdmF0ZS5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGNsZWFuLXVwIG9mIHRleHR1cmUgJ2xvYWRpbmcnCgktIGFkZGVkIFNldENvbG9yS2V5IGNhbGxiYWNrIGZvciBhbHJlYWR5IGxvYWRlZCB0ZXh0dXJlcwoKCSogaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgYSBwcm9ibGVtIHBvaW50ZWQgb3V0IGJ5IEtldmluIEhvbGJyb29rLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCWNvbW1jdHJsLmggbXVzdCBpbmNsdWRlIHByc2h0LmguCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVdhcm5pbmcgZml4LgoKCSogaW5jbHVkZS93aW5lL29ial9iYXNlLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgYSBuZXcgaW1wbGVtZW50YXRpb24gb2YgdGhlIElDT00gbWFjcm9zIHRoYXQgdXNlIE1pY3Jvc29mdCBzdHlsZQoJdmlydHVhbCBtZXRob2RzIHRvIGltcGxlbWVudCB0aGUgQ09NIGludGVyZmFjZXMgaW4gQysrLgoKCSogbWlzYy9kZGVtbC5jOiBLZWl0aCBNYXR0aGV3cyA8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJQ29ycmVjdGlvbiBvZiBNdXRleCBoYW5kbGluZyBpbiBEZGVJbml0aWFsaXplVyBmb3IgY2FzZXMgb3RoZXIgdGhhbgoJMXN0IGNhbGwuIEFkZGl0aW9uIG9mIGluc3RhbmNlIGhhbmRsaW5nIHRvIERkZUNyZWF0ZVN0cmluZ0hhbmRsZUEsCglEZGVDcmVhdGVTdHJpbmdIYW5kbGVXLCBSZW1vdmVIU1pOb2RlcywgRnJlZUFuZFJlbW92ZUhTWk5vZGVzLiAgMXN0CgljdXQgaW1wbGVtZW50YXRpb24gb2YgRGRlVW5pdGlhbGl6ZSwgbW92ZSBvZiBpbnRlcm5hbCBzdHJ1Y3R1cmUgZGVmcwoJaW4gZnJvbSBkZGVtbC5oLiBSZW1vdmVkIG5vbi1BTlNJIGNvbW1lbnQuCgoJKiBpbmNsdWRlL2RkZW1sLmg6IEtlaXRoIE1hdHRoZXdzIDxrZWl0aF9tQHN3ZWVuZXkuZGVtb24uY28udWs+CglNb3ZlZCBpbnRlcm5hbCBzdHJ1Y3R1cmVzIHRvIGRkZW1sLmMsIGFsc28gcmVtb3ZlZCBub24tQU5TSSBjb21tZW50cywKCWFuZCBhZGRlZCBzcGVjIGZvciBEZGVRdWVyeUNvbmZJbmZvIGFuZCBEZGVRdWVyeUNvbnZJbmZvMTYuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IENocmlzIE1vcmdhbiA8Y21vcmdhbkB3cGkuZWR1PgoJSmFtZXMgQWJiYXRpZWxsbyA8YWJiZXlqQHdwaS5lZHU+CglGaXhlZCBtZW1vcnkgbGVha3MgaW4gbWl4ZXJPcGVuMTYvbWl4ZXJDbG9zZSwKCW1pZGlPdXRPcGVuMTYvbWlkaU91dENsb3NlMTYsIHdhdmVJbk9wZW4xNi93YXZlSW5DbG9zZTE2LAoJbWlkaUluT3BlbjE2L21pZGlJbkNsb3NlMTYuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJQWRkZWQgc2FuaXR5IGNoZWNrIGZvciB3aGl0ZXNwYWNlIGluIGZpbGUgbmFtZXMsIHZhcmlvdXMgb3RoZXIgZml4dXBzLgoKU3VuIEFwciAgNCAxMjo0ODoyMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJV01fTU9VU0VNT1ZFIGltcGxlbWVudGF0aW9uIGJ1ZyBmaXguCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJSm9z6SBNYXJjb3MgTPNwZXogPGpvc2UubG9wZXpAdXBjbmV0LnVwYy5lcz4KCUFkZGVkIFNwYW5pc2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogbWlzYy9jb21tLmM6IExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCUZpeGVkIHRoZSBtb2RlbSBjb250cm9sIHBhcnQgb2YgRXNjYXBlQ29tbUZ1bmN0aW9uMTYuCgoJKiBjb250cm9scy9jb21iby5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgZ290by4KCgkqIG9sZS9vbGUybmxzLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgaW5jbHVkZS93aW5ubHMuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW51bUNhbGVuZGFySW5mb0Egc3R1Yi4KClNhdCBBcHIgIDMgMTY6Mjc6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy9rZXlib2FyZC5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJU3VzcGVuZCB0aGUgd2luZG93IGxvY2tzIGJlZm9yZSBEZWZLZXliRXZlbnRQcm9jIGFuZAoJRGVmTW91c2VFdmVudFByb2MuCgoJKiBpbmNsdWRlL3duYXNwaTMyLmgsIHByb2dyYW1zL3ZpZXcvZ2xvYmFscy5oLCBpbmNsdWRlL2FzcGkuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL3dpbmFzcGkuaCwgaW5jbHVkZS93aW5pb2N0bC5oLCBpbmNsdWRlL3dpbm50Lmg6CglKb2VyZyBNYXllciA8am1heWVyQHRlbGVzdW4yLnRlbGVtYXRpb24uZGU+CglNb3JlICNwcmFnbWEgZml4ZXMgKGlkZWEgT3ZlIEthYXZlbiwgbWlzdGFrZXMgYXJlIG1pbmUpLgoKCSogd2luZG93cy93aW4uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglObyBsb25nZXIgc2VuZGluZyBhdG9tcyBpbiAoKENSRUFURVNUUlVDVCopbFBhcmFtKS0+bHBzek5hbWUgb2YKCVdNX0NSRUFURSBtZXNzYWdlcy4KCgkqIGxvYWRlci9tb2R1bGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIFNldExhc3RFcnJvcigpcyBpbiBHZXRQcm9jQWRkcmVzcygpIGFuZCBMb2FkTGlicmFyeSgpLgoKCSogbWlzYy9jcnRkbGwuYywgcmVsYXkzMi9jcnRkbGwuc3BlYzoKCUNocmlzdGlhbiBTY2hsYWlsZSA8dXA5bkByei51bmkta2FybHNydWhlLmRlPgoJSW1wbGVtZW50ZWQgbWFrZXBhdGgsIHJhbmQoKSByZXR1cm5zIGNvcnJlY3QgcmFuZ2UsIGZpeGVkIGZwdXRjLgoKCSogZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2ZpbGUuaCwgbXNkb3MvaW50MjEuYzoKCU1hc2sgb2ZmIHVuc3VwcG9ydGVkIGF0dHJpYnV0ZXMgaW4gX2xjcmVhdCAoYnVnIHJlcG9ydGVkIGJ5IEFuZHJlYXMgTW9ocikuCglNb3ZlZCBfbGNyZWF0MTZfdW5pcSB0byBpbnQyMS5jCgoJKiBsaWJ0ZXN0L2hlbGxvMy5jLCBsaWJ0ZXN0L2hlbGxvM3Jlcy5yYywgbGlidGVzdC9oZWxsbzQuYywgbGlidGVzdC9uZXcuYywgbGlidGVzdC9yb2xleC5jLCBsaWJ0ZXN0L3ZhcnRlc3QuYywgbGlidGVzdC92b2xpbmZvLmM6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQ2FzdHMgdG8gKFNFR1BUUikgcmVtb3ZlZC4gVGhleSBkaWQgbm90aGluZyBhbnl3YXkuCglJbmNsdWRlcyBhZGRlZCBvciByZW1vdmVkIHdoZXJlIG5lY2Vzc2FyeS4KCVdpbjE2IGZ1bmN0aW9ucyByZXBsYWNlZCB3aXRoIHRoZWlyIFdpbjMyIGNvdW50ZXJwYXJ0cy4gQ29tbWVudHMgYWRkZWQKCXdoZXJlIGl0IHdhcyBpbXBvc3NpYmxlLgoJQ0FMTEJBQ0sgYWRkZWQgd2hlcmUgbmVjZXNzYXJ5LiBTb21lIGRlY2xhcmF0aW9ucyBmaXhlZC4KCUNvbnN0cnVjdHMgbGlrZSAiI2lmIFdJTkRPV1MiIGNvcnJlY3RlZC4gVXNpbmcgIiNpZmRlZiBfX3VuaXhfXyIgaW5zdGVhZC4KCURsZ1Byb2MgaW4gaGVsbG8zIHVzZXMgRW5kRGlhbG9nKCkgaW5zdGVhZCBvZiBEZXN0cm95V2luZG93KCkuCglMaXN0Ym94IGVuYWJsZWQgaW4gaGVsbG8zLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglVcGRhdGVkIEZyZW5jaCBrZXlib2FyZC4KCgkqIGxpYnRlc3QvaGVsbG8uYzogQWxleCBLb3JvYmthIDxhbGV4QGFpa2VhLmFtcy5zdW55c2IuZWR1PgoJRmFuY2llciB2ZXJzaW9uIG9mIGhlbGxvLmMgY291cnRlc3kgb2YgSHV3IERhdmllcy4KCgkqIHByb2dyYW1zL2NvbnRyb2wvY29udHJvbC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRml4ZWQgY29tcGlsYXRpb24gb2YgdGhlIENvbnRyb2wgcGFuZWwuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCSdSZWFsaWduZWQnIHRoZSBsYXlvdXQgdGFibGUgYSBiaXQuIEFwcGxpZWQgdGhlIG5vbi1sYXRpbi0xIHN0dWZmIGFuZAoJdGhlIGRlYWQga2V5IG1hcHBpbmcgc3R1ZmYgdG8gdGhlIGFjdHVhbCBtYXBwaW5nIGNvZGUgdG9vLiAgUHJldHRpZWQKCXVwIHRoZSBmaXhtZSBtZXNzYWdlLiBBZGRlZCBhIGNoZWNrIHdoZXJlIGlmIHRoZSBrZXlzIG9mIHR3byBsYXlvdXRzCgltYXRjaCBleGFjdGx5LCB0aGUgb25lIHdpdGggdGhlIGJlc3QtbWF0Y2hpbmcga2V5Y29kZSBvcmRlciBpcyBjaG9zZW4sCglzbyB0aGF0IHRoZSBRV0VSVFkgYW5kIER2b3JhayBsYXlvdXRzIGNhbiBiZSBkaXN0aW5ndWlzaGVkLgoKCSogd2luMzIvZGV2aWNlLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgKGVtcHR5KSBzdHViIGZvciBPcGVuVnhESGFuZGxlLgoKCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJbW1pb09wZW4oKSBub3cgaGFuZGxlcyBjb3JyZWN0bHkgTU1JT19QQVJTRSBmbGFnLgoKCSogY29udHJvbHMvZWRpdC5jOiBMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJQmFja2dyb3VuZCBjb2xvciBmaXggd2hlbiBkaXNhYmxlZCBvciByZWFkIG9ubHkuCgoJKiB3aW5kb3dzL3dpbi5jOiBGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglUcmFuc2ZlcmVkIHRoZSB3aW5kb3cgc3RydWN0IG1lbW9yeSByZWxlYXNlIGZyb20gV0lOX0Rlc3Ryb3lXaW5kb3cgdG8KCVdJTl9SZWxlYXNlV25kUHRyLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRExHSVRFTVRFTVBMQVRFIHN0cnVjdHVyZSBoYWQgb25lIHRvbyBtYW55IG1lbWJlci4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVByZXZlbnQgY3Jhc2ggaW4gZGVidWdnZXIuCgpGcmkgQXByICAyIDEwOjM3OjQyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmMsIGluY2x1ZGUvY29tYm8uaDoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBXaW45NSBsb29rIGFuZCBmZWVsLgoKCSogd2luZG93cy9kZWZ3bmQuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJV3JvdGUgYSBiYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV01fUFJJTlQgbWVzc2FnZS4KCgkqIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCBtaXNjL2NhbGxiYWNrLmM6CglGcmFuY29pcyBCb2lzdmVydCA8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglTdXNwZW5kIGFsbCB3aW5kb3dzIGxvY2tzIGJlZm9yZSB0aGUgY29udHJvbCBpcyBwYXNzZWQgdG8gdGhlCglhcHBsaWNhdGlvbi4KCUFsc28gZml4ZWQgc29tZSBidWdzIGluIGRjZS5jCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjoKCUpvZXJnIE1heWVyIDxqbWF5ZXJAdGVsZXN1bjIudGVsZW1hdGlvbi5kZT4KCS0gUmVtb3ZlIHNvbWUgb2xkIHJjIG1ha2Ugc3R1ZmYKCS0gIm1ha2UgY2xlYW4iIG9taXR0ZWQgc29tZSBpbmNsdWRlIHN1YmRpcnMKCgkqIHJlbGF5MzIvZGRyYXcuc3BlYywgZ3JhcGhpY3MvZGRyYXcuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgRGxsQ2xhc3NGYWN0b3J5IHRvIERpcmVjdERyYXcuCgpUaHUgQXByICAxIDEyOjA1OjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNwbGl0IG9mZiBrZXlzeW0vZGVhZGNoYXIgLT4gY2hhciBtYXBwaW5nLCB1c2UgaXQgaW4gRGV0ZWN0TGF5b3V0LgoKCSogdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194bGliLmMsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnBvcy5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgY29udHJvbHMvbWVudS5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmMsIGluY2x1ZGUvY2xpcGJvYXJkLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3dpbnBvcy5oLCBpbmNsdWRlL3gxMWRydi5oOgoJQWxleCBLb3JvYmthIDxhbGV4QGFpa2VhLmFtcy5zdW55c2IuZWR1PgoJRml4ZXMgZm9yIGlnbm9yZWQgV1ZSX1tWSF1SRURSQVcgZmxhZ3MsIG1hZGUgbWluaW1pemF0aW9uIGluIG1hbmFnZWQKCW1vZGUgZ28gdGhyb3VnaCB3aW5kb3cgbWFuYWdlciwgc21hbGwgYnVnZml4ZXMgZm9yIG1lbnUgYW5kIHdpbmRvdwoJY29kZSwgZXh0ZW5kZWQgY2xpcGJvYXJkIGRyaXZlciBtb2RlbCB0byBoYW5kbGUgZm9ybWF0cyBvdGhlciB0aGFuCgl0ZXh0LgoKCSogY29udHJvbHMvZWRpdC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJRUNfVVNFRk9OVElORk8gbWVhbnMgZXMtPmNoYXJfd2lkdGgvMywgbm90IGVzLT5jaGFyX3dpZHRoLiBUaGlzIGlzCgl0cnVlIGZvciBtdWx0aWxpbmUgY29udHJvbHMgdG9vLCBhcyBteSB0ZXN0cyBzaG93LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jLCBpbmNsdWRlL2xpc3R2aWV3Lmg6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgaWNvbiBhbmQgc21hbGxpY29uIHZpZXdzLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgRE9TVk1fR2V0VGltZXIgc3Vydml2ZSBFQUdBSU4gZXJyb3JzLi4uCgoJKiBpbmNsdWRlL2NvbW0uaCwgbWlzYy9jb21tLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgYXN5bmMgY29tbSBidWZmZXJzIChidXQgcHJvYmFibHkgbm90IGJ1Z2ZyZWUpLCBhbmQgYWxvbmcKCXdpdGggdGhlbSwgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYXN5bmMgZXZlbnQgbm90aWZpY2F0aW9ucywgbW9uZyB0aGVtCglFbmFibGVDb21tTm90aWZpY2F0aW9uLiBSZW1vdmVkIGEgcHJldmlvdXMgaGFjayB0aGF0IHdhcyBmYWtpbmcgdGhlCglidWZmZXJzLCBzaW5jZSB3ZSBub3cgaGF2ZSByZWFsIGJ1ZmZlcnMuLi4KCgkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBDTl8qIGZsYWdzIHVzZWQgaW4gV01fQ09NTU5PVElGWS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJSW1wbGVtZW50IHRoZSBFbnVtQXR0YWNoZWRTdXJmYWNlIG1ldGhvZC4KCgkqIG9sZS9vbGUyLmM6IE5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gZm9yIE9sZUNyZWF0ZU1lbnVEZXNjcmlwdG9yLCBPbGVTZXRNZW51RGVzY3JpcHRvciBhbmQKCU9sZURlc3Ryb3lNZW51RGVzY3JpcHRvciBhbG9uZyB3aXRoIGEgYnVuY2ggb2YgaW50ZXJuYWxseSB1c2VkIG1ldGhvZHMKCWFuZCBkYXRhIHN0cnVjdHVyZXMuCgoJKiBvbGUvZ3VpZC5jLCBpbmNsdWRlL2luaXRndWlkLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgaW5jbHVkZS93dHlwZXMuaDoKCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCWluaXRndWlkLmggc2hvdWxkIG9ubHkgY29udGFpbiB0aGUgbWFjcm8gdGhhdCBkZWZpbmVzIHRoZSBndWlkcy4KCUFkZGVkIG9sZWN0bC5oIHRvIGd1aWQuYyBzbyBzb21lIG5lZWRlZCBndWlkcyBnZXQgZGVmaW5lZC4KCU1hZGUgR1VJRF9OVUxMIGFuIGFjdHVhbCBndWlkIHNldCB0byAwLDAsMC4uLgoKCSogaWYxNjMyL2dkaS5zcGVjLCBvYmplY3RzL2dkaW9iai5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBHZGlTaWduYWxQcm9jKCkgc3R1Yi4KCgkqIG1pc2MvY2FsbGJhY2suYywgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmMsIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvdGFzay5oLCBpbmNsdWRlL3VzZXIuaCwgbG9hZGVyL21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgVVNFUjMyLlVzZXJTaWduYWxQcm9jIHRvIENhbGxvdXQgdGFibGUuCglJbXBsZW1lbnRlZCBidWlsdC1pbiBVc2VyU2lnbmFsUHJvYygpLgoJRG9uJ3QgYW5ub3VuY2UgV2luMy4xLXN0eWxlIFVTRVIgaGFuZGxlciBhbnkgbW9yZS4KCgkqIHdpbjMyL29yZGluYWxzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIGxvYWRlci90YXNrLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgUFJPQ0VTU19DYWxsVXNlclNpZ25hbFByb2MoKS4KCVNlbmQgVVNFUiBzaWduYWxzIGF0IHZhcmlvdXMgYXBwcm9wcmlhdGUgcGxhY2VzLgoJTW92ZWQgW0dTXWV0UHJvY2Vzc0R3b3JkKCkgdG8gc2NoZWR1bGVyL3Byb2Nlc3MuYy4KCgkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGxtZW51LmMsIGluY2x1ZGUvc2hsb2JqLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBbGwgMTkgRmlsZU1lbnVfKiBmdW5jdGlvbnMsIHNvbWUgYXMgc3R1YnMsIHNvbWUgaW1wbGVtZW50ZWQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNIQ0xTSURGcm9tU3RyaW5nLCBTdHJUb09sZVN0ciBpbXBsZW1lbnRlZC4KCVJMQnVpbGRMaXN0T2ZQYXRocyBzdHViLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCURsbEdldFZlcnNpb24gKG5vdCB5ZXQgZXhwb3J0ZWQpLgoJU21hbGwgY2hhbmdlIHRvIFNIQXBwQmFyTWVzc2FnZS4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBEcnZDbG9zZSwgRHJ2RGVmRHJpdmVyUHJvYywgRHJ2T3BlbiwgRHJ2T3BlbkEsIERydlNlbmRNZXNzYWdlLgoKCSogaWYxNjMyL21tc3lzdGVtLnNwZWM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgU3RhY2tFbnRlcigpIGFuZCBTdGFja0xlYXZlKCkgc3R1YnMKCgkqIG11bHRpbWVkaWEvbWNpLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU3RhcnRpbmcgaW1wbGVtZW50YXRpb24gb2YgTUNJIGNyZWF0b3IgdGFza3MKCUZpeGVkIGJ1ZyBpbiBNQ0lfT1BFTiBoYW5kbGluZyAodGhhbmtzIHRvIEFkYW0gZm9yIHJlcG9ydGluZyB0aGlzIG9uZSkKCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBtbVRhc2tDcmVhdGUxNgoKCSogaW5jbHVkZS9tdWx0aW1lZGlhLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgY3JlYXRvciB0YXNrIHRvIE1DSSBzdHJ1Y3QuCgoJKiBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJUmVwbGFjZWQgMHhDMDAwIGJ5IHN5bWJvbGljIGNvbnN0YW50cy4KCgkqIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHNtYWxsID09LCAhPSBtaXh1cC4KCgkqIHdpbmRvd3MvZGVmZGxnLmMsIHdpbmRvd3MvZGVmd25kLmM6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgV01fTk9USUZZRk9STUFULgoKCSogbG9hZGVyL2VsZi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BtdWQuZGU+CgkiZm9vIiB3YXMgbm90IHRyYW5zbGF0ZWQgdG8gImZvby5zbyIgaW4gZWxmIGxvYWRlci4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUxvYWRCaXRtYXAxNigpL0xvYWRJbWFnZTE2KCkgY2FsbGluZyBzZXF1ZW5jZSBzaW1wbGlmaWVkLgoKCSogbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvbmUvcmVzb3VyY2UuYywgbWlzYy9jYWxsYmFjay5jLCBpZjE2MzIvd3Byb2NzLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFsbG93IE5VTEwgTkUgcmVzb3VyY2UgaGFuZGxlcjsgY2FsbCB0aGUgZGVmYXVsdCBoYW5kbGVyIGRpcmVjdGx5LgoJUmVtb3ZlZCBXUFJPQ1MgLyBDYWxsYmFja3Mgc3VwcG9ydCBmb3IgV2luZUxpYiByZXNvdXJjZSBoYW5kbGVycy4KCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCByZWxheTMyL3V0dGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTWFkZSBVbml2ZXJzYWwgVGh1bmsgbGlzdCBwZXItcHJvY2Vzcywgbm90IHN5c3RlbSBnbG9iYWwuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRkaXRpb25hbCBtYWNybyBkZWZpbml0aW9ucy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIFRDTV9BREpVU1RSRUNULgoKCSogbXNkb3MvaW50MDkuYywgbXNkb3MvaW9wb3J0cy5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgImltcGxpY2l0IGRlY2xhcmF0aW9uIiB3YXJuaW5ncy4KCgkqIGdyYXBoaWNzL2QzZF9wcml2YXRlLmg6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJRml4ZWQgT3BlbkdMIGRldmljZXMgaW1wbGVtZW50YXRpb24uCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJSW4gVXNlcllpZWxkMTYsIHdoZW4gY3VycmVudCB0aHJlYWQgaXMgYSAzMiBiaXQgb25lIHdoaWNoIGhvbGQgdGhlCglXaW4xNkxvY2ssIG11c3QgdGFrZSBjYXJlIG9mIGEgTG9ja0NvdW50ID4gMS4KCgkqICovKi5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglNb3JlIGNvZGUgbW92ZWQgdG8gdGhlIFgxMSBkcml2ZXIgKGJpdG1hcCBhbmQgcGFsZXR0ZSBhbmQgbWlzYykuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBNYXIgMjggMTU6MjA6MDAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmdkaS5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglNb3ZlIERNKiBkZWZpbmVzIGZyb20gd2luYmFzZS5oIC0+IHdpbmdkaS5oLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglGaXhlZCBRdWVyeUludGVyZmFjZSBmdW5jdGlvbnMgZm9yIElEaXJlY3QzRCAxIGFuZCAyLgoKCSogb2xlL25scy9BdHRpYy9kbmsubmxzOiBBcHBhcmVudGx5IG5vIGxvbmdlciBuZWVkZWQuCgoJKiBjb250cm9scy9tZW51LmMsIGNvbnRyb2xzL3VpdG9vbHMuYywgZGxscy9jb21jdGwzMi9jb21ib2V4LmMsIGdyYXBoaWNzL3gxMWRydi9icnVzaC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvZGRlbWwuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYzoKCURpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglDaGFuZ2VkIHNvbWUgZGVidWcgbWVzc2FnZXMgZnJvbSBvbmUgY2hhbm5lbCB0byBhbm90aGVyLCB0byBjbGVhbiB1cCBhCgliaXQgdGhlIGRlYnVnIGNoYW5uZWwgdXNhZ2UuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IEplc3MgSGFhcyA8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUZpeGVkIENyZWF0ZVByb2Nlc3NBIHNvIGl0IGNhbiBoYW5kbGUgY29tbWFuZGxpbmVzIHdpdGggYXJndW1lbnRzIGFuZAoJbm8gLmV4ZS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzogSmVzcyBIYWFzIDxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJRml4ZWQgR2V0TW9kdWxlSGFuZGxlMTYuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQWRkZWQgUnVzc2lhbiBrZXlib2FyZCBzdXBwb3J0LgoKCSogaW5jbHVkZS93aW51c2VyLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBzdHViIGZvciBTZXRTeXN0ZW1DdXJzb3IuCgoJKiB3aW4zMi9maWxlLmM6IFN0ZWZmZW4gTW9lbGxlciA8bW9lbGxlckBlYmkuYWMudWs+CglTZXRGaWxlQXR0cmlidXRlc0E6ICJpbXBsZW1lbnRlZCIgc2V0dGluZyBvZiBkaXJlY3RvcnkgZmxhZyBhcyB0ZXN0IG9mCgljb21wYXRpYmlsaXR5LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUNoYW5nZXMgaW4gWDExRFJWX0tFWUJPQVJEX0RldGVjdExheW91dCBpbiBvcmRlciB0byBpbXBsZW1lbnQgUnVzc2lhbgoJa2V5Ym9hcmQgc3VwcG9ydC4KCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9vbGUyLmMsIG9sZS9vbGUyc3R1YnMuYywgb2xlL3N0b3JhZ2UuYywgb2xlL3ZhcmlhbnQuYywgcmVsYXkzMi9vbGUzMi5zcGVjLCByZWxheTMyL29sZWF1dDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvaW5wdXQuYywgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWFyb24gQmFybmVzIDxhYXJvbmJAY29yZWwuY2E+CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAY29yZWwuY2E+CglCdW5kbGUgb2YgbmV3IHN0dWJzLgoKCSogbWlzYy9jcnRkbGwuYywgbWlzYy9kZGVtbC5jLCBvbGUvb2xlMmRpc3AuYzoKCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUFkZGVkIG1pc3NpbmcgV0lOQVBJcy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvbmV3Zm5zLmM6CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglBZGRlZCBDcmVhdGVJb0NvbXBsZXRpb25Qb3J0IHN0dWIuCgoJKiB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3MvbWVzc2FnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIEVWRU5UX1BlbmRpbmcoKSB0byBmbHVzaCBYMTEgb3V0cHV0IHF1ZXVlIGJlZm9yZSBibG9ja2luZyBpbgoJTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0cygpLgoJRG9uJ3QgY2FsbCBFVkVOVF9XYWl0TmV0RXZlbnQgaW4gTVNHX1BlZWtIYXJkd2FyZU1zZy4KCVByb3RlY3Qgc3lzdGVtIHF1ZXVlIGFjY2VzcyBpbiBoYXJkd2FyZV9ldmVudCgpLgoKCSogd2luZG93cy91c2VyLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jLCBjb250cm9scy9tZW51LmMsIHdpbmRvd3MvZGNlLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvZm9jdXMuYywgd2luZG93cy9tZGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglGcmFuY29pcyBCb2lzdmVydDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHNvbWUgYnVncyBpbiB0aHJlYWQgc2FmZW5lc3MgZm9yIHduZCBzdHJ1Y3QuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L2hlbGxvMy5jLCBsaWJ0ZXN0L2hlbGxvM3Jlcy5yYzoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglNYWRlIGxpYnRlc3QvaGVsbG8zIHdvcmsgYWdhaW4sIG5vdyB3aXRoIFdpbmRvd3MtY29tcGF0aWJsZSByZXNvdXJjZQoJbG9hZGluZy4KCgkqIGluY2x1ZGUvaW1tLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJSml1bWluZyBMdW8gPGppdW1pbmdfbHVvQHlhaG9vLmNvbT4KCU1vdmVkIG1hY3JvIERFQ0xBUkVfSEFORExFKCkgKGluIG1zYWNtLmggYW5kIHd0eXBlcy5oKSB0byB3aW5kZWYuaCwKCXRoZW4gZGVsZXRlZCB0aGUgZHVwbGljYXRlZCB0eXBlZGVmcyAoaW4gaW1tLmggYW5kIG1tc3lzdGVtLmgpLgoKCSogbWlzYy9wcmludGRydi5jOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCVJld3JvdGUgRW51bVByaW50ZXJzQSwgYWRkZWQgQ3JpdGljYWxTZWN0aW9uIGFyb3VuZCBSZWdpc3RyeSByZWFkcyBhbmQKCWltcGxlbWVudGVkIFBSSU5URVJfSU5GT18yIHJlcXVlc3QuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBKb25hdGhhbiBOYXlsb3IgPGc0a2x4QHBvcC5hZ3JpLmNoPgoJQWRkZWQgU3dpc3MgR2VybWFuIGtleWJvYXJkIGxheW91dC4KCgkqIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBhZGp1c3RlZCBwcmludGluZyBvZiByZWZjb3VudHMgdG8gYmUgZXF1YWwKCS0gY2xlYW5pbmcgdXAgaWNvbiBjYWNoZSBvbiBQUk9DRVNTX0RFVEFDSAoJLSBmaXhlZCBhc2NpaS91bmljb2RlIHVzZSBpbiBTSC9JTENyZWF0ZUZyb21QYXRoCgktIGZpeGVkIHNtYWxsIG1lbW9yeSBsZWFrIGluIHNoZWxsdmlldwoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVtcHR5IERPU1ZNX1F1ZXVlRXZlbnQgZm9yICFNWl9TVVBQT1JURUQuCgoJKiBwcm9ncmFtcy9jbWRsZ3RzdC9jbWRsZ3RzdC5jOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUZpeGVkIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9jb21tZGxnLmg6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglDaGFuZ2VkIENIT09TRUNPTE9SW0FXXS5GbGFncyBmcm9tIFVJTlQgdG8gRFdPUkQuCgoJKiB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYvd25kLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L2luaXQuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9yZWdpb24uaCwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgaW5jbHVkZS90c194dXRpbC5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL3JlZ2lvbi5jLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCB0c3gxMS90c194dXRpbC5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQWxleCBLb3JvYmthIDxhbGV4QGFpa2VhLmFtcy5zdW55c2IuZWR1PgoJTW92ZWQgaHJnblVwZGF0ZSBmcm9tIGNsaWVudCB0byB3aW5kb3cgY29vcmRpbmF0ZXMsIG1hZGUgbm9uY2xpZW50CglwYWludGluZyBkZXBlbmQgb24gdGhlIHVwZGF0ZSByZWdpb24sIHJld29ya2VkIFNldFdpbmRvd1BvcygpIGFuZAoJUmVkcmF3V2luZG93KCkgdG8gc3BlZWQgdXAgdXBkYXRlIHJlZ2lvbiBjYWxjdWxhdGlvbiwgbWFkZSAtZGVza3RvcAoJd29yayBwcm9wZXJseSwgYWRkZWQgV01fQ0FOQ0VMTU9ERSBoZXJlIGFuZCB0aGVyZSwgZml4ZWQgc2V2ZXJhbAoJd2luZG93IGFjdGl2YXRpb24gYnVncyB0aGF0IGNyZXB0IGluIHNpbmNlIHRoZSBsYXN0IHRpbWUuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogQWxleCBLb3JvYmthIDxhbGV4QGFpa2VhLmFtcy5zdW55c2IuZWR1PgoJRml4ZWQgb2NjYXNpb25hbCBsb3NzIG9mIFNlbmRNZXNzYWdlKCkgcmV0dXJuIHZhbHVlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBpbml0aWFsaXNhdGlvbiBvZiB0aGUgcGl4bWFwX2RlcHRoIGZpZWxkIGluCglYbGliX0RpcmVjdERyYXdDcmVhdGUuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6IEplc3MgSGFhcyA8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUZpeGVkIGEgd2FybmluZy4KCgkqIG1zZG9zL2ludDJmLmM6IEplc3MgSGFhcyA8cGFyYW5vaWQwN0Bob3RtYWlsLmNvbT4KCUFkZGVkIHN0dWIgZm9yIGludDJmIDRiLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBDaHJpcyBNb3JnYW4gPGNtb3JnYW5Ad3BpLmVkdT4KCUphbWVzIEFiYmF0aWVsbG8gPGFiYmV5akB3cGkuZWR1PgoJRml4ZWQgbWVtb3J5IGxlYWsgaW4gd2F2ZU91dE9wZW4vd2F2ZU91dENsb3NlLgoKCSogZ3JhcGhpY3MvcHNkcnYvZXNjYXBlLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vcmUgRXNjYXBlcyBmb3IgdGhlIFBvc3RTY3JpcHQgZHJpdmVyLgoKU2F0IE1hciAyNyAxNjo1NjoxMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvZDNkY29tbW9uLmMsIGdyYXBoaWNzL2QzZGRldmljZXMuYywgZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFkYXB0ZWQgdG8gdGhlIGludGVyZmFjZS9pbXBsZW1lbnRhdGlvbiBzZXBhcmF0aW9uLgoJTm93IHVzZXMgSUNPTV9USElTIHRvIGFjY2VzcyB0aGUgaW1wbGVtZW50YXRpb24gc3RydWN0dXJlcy4KCVJlcGxhY2VkICd0aGlzJyB3aXRoICdUaGlzJyBmb3IgSUNPTV9USElTLgoJRGlyZWN0IGFjY2VzcyB0byB0aGUgdmlydHVhbCB0YWJsZSBoYXMgYmVlbiBlbGltaW5hdGVkIHRvby4KCgkqIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2RkcmF3X3ByaXZhdGUuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXBkYXRlZCB0byBpbmNsdWRlIGFsbCB0aGUgaW1wbGVtZW50YXRpb24gYXNwZWN0cyB0aGF0IHdlcmUgcHJldmlvdXNseQoJaW4gdGhlIHB1YmxpYyBpbmNsdWRlcy4KCgkqIGdyYXBoaWNzL3ZnYS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgZGlyZWN0IGFjY2VzcyB0byB0aGUgdmlydHVhbCB0YWJsZQoKCSogaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9kZHJhdy5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgYWxsIGltcGxlbWVudGF0aW9uIGFzcGVjdHMuCglNb2RpZmllZCB0byB1c2UgdGhlIGxhdGVzdCBJQ09NIG1hY3Jvcy4KCUFkZGVkIHRoZSBtYWNyb3MgZm9yIHVzZSBpbiBDLgoJQWRkZWQgdGhlIG1ldGhvZCBwYXJhbWV0ZXIgbmFtZXMgKHdoZW4gSSBoYWQgdGhlbSkuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRml4ZWQgc2VxdWVuY2Ugb2YgRExMX1BST0NFU1NfREVUQUNIIG5vdGlmaWNhdGlvbiBjYWxscy4KCU1vdmVkIFBFX01PRFJFRiBmbGFncyB0byBXSU5FX01PRFJFRiBsZXZlbC4KCUJldHRlciBoYW5kbGluZyBvZiBMb2FkTGlicmFyeUV4IGZsYWdzLgoJUEVfSW5pdFRscygpIGNoYW5nZWQgdG8gd29yayBvbmx5IG9uIHRoZSBjdXJyZW50IHRocmVhZC4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNlcnZlci90cmFjZS5jOgoJQWRkZWQgY21kIGxpbmUgaW4gbmV3X3Byb2Nlc3MgcmVxdWVzdC4KCgkqIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsIHRocmVhZHMgY3JlYXRlZCB3aXRoIENyZWF0ZVRocmVhZCBhcmUgMzItYml0IHRocmVhZHMuCgoJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9yZWdzdHJlYW0uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVJlYWRpbmcgb2YgYmluYXJ5IHN0cmVhbXMgaW1wbGVtZW50ZWQgKFNIT3BlblJlZ1N0cmVhbSkuCgoJKiBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jOgoJQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgaW50MjUgJiBpbnQyNiBlcnJvciBjb2RlLgoKCSogbG9hZGVyL3Rhc2suYywgd2luZG93cy9xdWV1ZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBVc2VyWWllbGQxNiB0byBiZSBjYWxsZWQgZnJvbSAzMi1iaXQgdGhyZWFkLgoKCSogaW5jbHVkZS9vbGVkbGcuaCwgaW5jbHVkZS93aW5iYXNlLmg6CglBbGJlcnQgRGVuIEhhbm4gPGFsYmVydGRAY29yZWwuY2E+CglBZGRpdGlvbmFsIG1hY3JvIGRlZmluaXRpb25zLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcC5oLCBvYmplY3RzL2JpdG1hcC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlZCB7U3xHfWV0Qml0bWFwQml0cyBpbiB4MTFkcnYuICBSZW1vdmVkIEJJVE1BUF9HZXRQYWRkaW5nLgoKCSogb2JqZWN0cy9tZXRhZmlsZS5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVkIG1ldGFmaWxlIHJlY29yZGluZyBvZiBDcmVhdGVQYXR0ZXJuQnJ1c2guCgpUaHUgTWFyIDI1IDE2OjQyOjI4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3Rvb2xiYXIuaCwgZGxscy9jb21jdGwzMi9jb21tY3RybC5jOgoJUGFzY2FsIExlc3NhcmQgPHBhc2NhbEBtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZSB0aGUgQWRkQml0bWFwIGZ1bmN0aW9uLiBJbXBsZW1lbnQgZmxhdCB0b29sYmFyLiBDaGFuZ2UKCUNyZWF0ZVRvb2xiYXJFeC4gSW1wbGVtZW50IHBhcnRpYWxseSB0aGUgaG90IGJ1dHRvbnMgZm9yIHRvb2xiYXIuCgoJKiBtc2Rvcy9pbnQxNi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgR2V0IFNoaWZ0IEZsYWdzIGZ1bmN0aW9uLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgV0lOQVBJLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJQ2hhbmdlZCBzdGRsaWIuaCB0byBzdHJpbmcuaC4KCgkqIGRsbHMvbnRkbGwvdGltZS5jOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglBZGRlZCBzdHJpbmcuaC4KCgkqIG1pc2MvZGRlbWwuYywgbXVsdGltZWRpYS9tc3ZpZGVvLmMsIG9sZS9zYWZlYXJyYXkuYywgcHJvZ3JhbXMvYXZpdG9vbHMvYXZpaW5mby5jLCBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmMsIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5jLCB3aW4zMi9jb25zb2xlLmM6CglEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CglDaGFuZ2VkICJzdHJpbmdzLmgiIHRvICJzdHJpbmcuaCIuCgoJKiBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIHdpbmRvd3Mvbm9uY2xpZW50LmM6CglSYW5keSBXZWVtcyA8cndlZW1zQGhvbWUuY29tPgoJRml4ZWQgb2ZmLWJ5LW9uZSBlcnJvciBpZiBiaXRibHQgd2lkdGggb3IgaGVpZ2h0IGlzIG5lZ2F0aXZlLgoKCSogZGxscy9jb21jdGwzMi90YWIuYywgaW5jbHVkZS90YWIuaDoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkOgoJLSBzaG93aW5nIHRoZSBzZWxlY3RlZCB0YWIgYXMgaGlnaGxpZ2h0ZWQKCS0gc3VwcG9ydCBmb3IgZHJhd2luZyB0aGUgZm9jdXMgcmVjdGFuZ2xlCgktIGJhc2ljIGtleWJvYXJkIHN1cHBvcnQKCS0gc3VwcG9ydCBmb3IgYSB0YWIgd2l0aCBob3Jpem9udGFsIHNjcm9sbGluZy4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglUaHJlYWQtc2FmZSBpbXBsZW1lbnRhdGlvbiBvZiBwcm9maWxlIGZ1bmN0aW9ucyAoV2luZG93cyBhbmQgV2luZSkuCgoJKiBpbmNsdWRlL21lc3NhZ2UuaCwgbG9hZGVyL21haW4uYywgd2luZG93cy90aW1lci5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglNYWRlIHRoZSB0aW1lciBjb2RlIHRocmVhZCBzYWZlLgoKCSogd2luZG93cy9kaWFsb2cuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgcG9zc2libGUgZW5kbGVzcyBsb29wLgoKCSogY29udHJvbHMvbGlzdGJveC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBMQl9HRVRDVVJTRUwgbWVzc2FnZSB0byByZXR1cm4gTEJfRVJSIG9uIGVtcHR5IGxpc3QuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jb21tZGxnYnJvd3Nlci5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRleHRtZW51LmgsIGluY2x1ZGUvd2luZS9vYmpfZG9ja2luZ3dpbmRvd2ZyYW1lLmgsIGluY2x1ZGUvd2luZS9vYmpfZXh0cmFjdGljb24uaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGJyb3dzZXIuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGV4dGluaXQuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGZvbGRlci5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsdmlldy5oLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVVzZSB0aGUgbmV3IGhlYWRlciBmb3IgQ09NIGRlZmluaXRpb25zLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YiBzaGVsbF82NTQuCgoJKiBpbmNsdWRlL3RyZWV2aWV3LmgsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIFRWTV9TT1JUQ0hJTERSRU5DQi4KCUltcGxlbWVudGF0aW9uIG9mIFRWSV9TT1JUIGluc2VydGlvbi4KCUZpeCBkaXNwbGF5IHByb2JsZW0gd2hlbiBUVklGX0lNQUdFfFRWSUZfU0VMRUNURURJTUFHRSB3ZXJlIG5vdCBzZXQuCglGaXggcHJvYmxlbXMgcmVsYXRlZCB0byBUVklTX0VYUEFOREVET05DRS4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tLmVwZmwuY2g+CglGaXggcHJvYmxlbSBpbiBEUEFfUXVpY2tTb3J0IHdoZXJlIHRoZSBzb3J0IG9yZGVyIHdhcyBpbnZlcnRlZC4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGluZnJhc3RydWN0dXJlIGFuZCBkZWZpbml0aW9ucyBmb3IgZ2VuZXJhbC1wdXJwb3NlIGV2ZW50IGFuZCBJUlEKCWhhbmRsaW5nIGZvciB0aGUgV2luZSBkb3MgYm94LiBSZW1vdmVkIHRoZSBvYnNvbGV0ZSBNWl9UaWNrLiBBZGRlZAoJZXZlbnQgbWVzc2FnZSBsb29wLCBtZXNzYWdlIGhhbmRsaW5nLCBDTEkvU1RJIGhhbmRsaW5nLCBhbmQgbWluaW1hbAoJUElDIHN1cHBvcnQuCgoJKiBsb2FkZXIvZG9zL2Rvc21vZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGhhbmRsaW5nIG9mIFNJR1VTUjIgZm9yIHRoZSBuZXcgZXZlbnQgaW50ZXJydXB0aW9uIGhhbmRsaW5nLAoJYnVtcGluZyB1cCB0aGUgcHJvdG9jb2wgcmV2aXNpb24uIE1hZGUgc29tZSBkZWJ1ZyBtZXNzYWdlcyBub3QgYmUKCW91dHB1dCB3aGVuIGl0J3Mgbm90IG5lY2Vzc2FyeS4KCgkqIG1zZG9zL2lvcG9ydHMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBwb3J0IDB4NjAgZm9yIGludCAweDA5LCBhbmQgcG9ydCAweDIwIGZvciBQSUMgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludGVycnVwdHMuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgaW50IDB4MDkgYW5kIGludCAweDMzLgoKCSogbXNkb3MvaW50MzMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbXBsZW1lbnRlZCBhIGludCAweDMzIGhhbmRsZXIsIHdpdGggYSBtaW5pbWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZQoJbW91c2Ugcm91dGluZXMsIGluY2x1ZGluZyBjYWxsYmFja3MuCgoJKiBtc2Rvcy9pbnQwOS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIGEgaW50IDB4MDkgaGFuZGxlciwgYW5kIGEgc2NhbmNvZGUgcXVldWUgdGhhdCBzaW11bGF0ZXMKCUlSUSAxIGluIHRoZSBkb3MgYm94LgoKCSogaW5jbHVkZS9kb2NvYmouaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglDcmVhdGlvbiBvZiBkb2NvYmouaC4KCgkqIG9iamVjdHMvZGliLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWxsb3cgZGVwdGggb2YgRElCIHRvIGRpZmZlciBmcm9tIGRlcHRoIG9mIGJpdG1hcCBpbiBHZXRESUJpdHMuCgpXZWQgTWFyIDI0IDE1OjA3OjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkZWJ1Z2dlci9lZGl0bGluZS5jOiBBYm9ydCBvbiBpbnB1dCBlcnJvci4KCgkqIGluY2x1ZGUvb2xlZGxnLmg6IEFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCVBvcHVsYXRpb24gb2Ygb2xlZGxnLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy9wYWludGluZy5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGQgSXNXaW5kb3coKSBjaGVja3MgYWZ0ZXIgU2VuZE1lc3NhZ2UoKSByZXR1cm5zLgoKCSogbXNkb3MvaW50MTAuYzogSmVzcyBIYWFzIDxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJRml4ZWQgYSBzbWFsbCBidWcgaW4gaW50MTAuCgoJKiBjb250cm9scy9jb21iby5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQ09NQk9fU2l6ZTogbWFpbnRhaW4gdGhlIGhlaWdodCBvZiB0aGUgUmVjdENvbWJvIHdoZW4gdGhlIHdpbmRvdyBpcwoJcmVzaXplZC4KCgkqIGluY2x1ZGUvaG9vay5oLCBpbmNsdWRlL3dpbnVzZXIuaDogQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZGRlZCB2YXJpb3VzIGRlZmluaXRpb25zLgoJTW92ZWQgQ1dQU1RSVUNUIGZyb20gaG9vay5oIHRvIHdpbnVzZXIuaCB0byBjb25mb3JtIHRvIHRoZSBTREsuCgoJKiBpbmNsdWRlL3dpbmRlZi5oOiBKaW0gQXN0b24gPGppbWFAY29yZWwuY2E+CglBZGRlZCBhIGZldyBlbXB0eSBtYWNyb3MuCgoJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgb2JqZWN0cy9jdXJzb3JpY29uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNVUlNPUklDT05fRGVzdHJveTogbWlzc2luZyBXSU5BUEkgYWRkZWQuCgoJKiBtaXNjL3dpbnNvY2suYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCB0cmFuc2xhdGlvbiBmb3IgU09fUkNWVElNRU8gKGFzIHNlZW4gYnkgSUU0KS4KClR1ZSBNYXIgMjMgMTc6MDQ6MTAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNlcnZlci9wcm9jZXNzLmM6IENyZWF0ZSBzdGFydHVwIGluZm8gZm9yIHRoZSBpbml0aWFsIHByb2Nlc3MuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIHNjaGVkdWxlci90aHJlYWQuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzZXJ2ZXIgcGlkIGFuZCB0aWQgaW4gaW5pdF90aHJlYWQgcmVxdWVzdCwgYW5kIHVzZSB0aGVtIGluCglDTElFTlRfSW5pdFRocmVhZC4KCgkqIGluY2x1ZGUvY29tcG9iai5oLCBpbmNsdWRlL29iamJhc2UuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93dHlwZXMuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvYW50aW1vbmlrZXIuYywgb2xlL2JpbmRjdHguYywgb2xlL2NvbXBvYmouYywgb2xlL2NvbXBvc2l0ZW1vbmlrZXIuYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvbW9uaWtlci5jLCBvbGUvc3RvcmFnZTMyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQ6CgktIElNb25pa2VyIGludGVyZmFjZSBmb3IgRmlsZU1vbmlrZXIsSXRlbU1vbmlrZXIsQW50aU1vbmlrZXIgYW5kCgkgIEdlbmVyaWNDb21wb3NpdGVNb25pa2VyCgktIElSdW5uaW5nT2JqZWN0VGFibGUgaW50ZXJmYWNlLCBhbmQKCS0gSUJpbmRDdHggaW50ZXJmYWNlLgoKCSogZ3JhcGhpY3MvcHNkcnYvYml0bWFwLmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGluY2x1ZGUvcHNkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgU3RyZXRjaERJQml0cyBmb3IgdGhlIFBvc3RTY3JpcHQgZHJpdmVyLgoKCSogaW5jbHVkZS9taXNjZW11Lmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgbWlzc2luZyBlbmRpbmcgcHJhZ21hIHBhY2suCgoJKiBtaXNjL2NvbW0uYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNvcnJlY3RlZCBzbWFsbCBidWcgaW4gR2V0Q29tbVN0YXRlMTYuIFBhcml0eSBjaGVjayBjYW4gYmUgZGlzYWJsZWQKCWV2ZW4gd2hlbiBhIHBhcml0eSBiaXQgaXMgdXNlZC4gU2V0Q29tbVN0YXRlMTYoKSBjYW4gb3ZlcnJpZGUgYmF1ZHJhdGUKCXNldHRpbmcgaW4gd2luZS5jb25mLgoKTW9uIE1hciAyMiAxNzo0NzozNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbG9hZGVyL21vZHVsZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogY29wZSB3aXRoIHF1b3RlZCBhcmd1bWVudHMgZm9yIENyZWF0ZVByb2Nlc3MoKS4KCgkqIGxvYWRlci9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXhlZCB0eXBvIGluIFNpemVvZlJlc291cmNlKCkuCgoJKiBtZW1vcnkvc3RyaW5nLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCWxzdHJjcHlBIGNhbid0IHVzZSBzdHJjcHkuCgoJKiByZWxheTMyL2J1aWx0aW4zMi5jLCBpZjE2MzIvYnVpbHRpbi5jLCBpbmNsdWRlL21vZHVsZS5oLCBtaXNjL21haW4uYywgbWlzY2VtdS9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIC1kbGwgb3B0aW9uIGZvciB3aW5lbGliIHByb2dyYW1zLiAoTm90ZTogd2lsbCBub3QgcHJpbnQgd2FybmluZ3MKCW9uIGZhaWx1cmUgY3VycmVudGx5KS4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJQWRkZWQgc3RybHdyLgoKCSogbG9hZGVyL3BlX2ltYWdlLmMsIG1zZG9zL2ludDIxLmM6CglBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglDb3NtZXRpY3MuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBuZXcgc3R1YnMgKG1tVGFza1hYWCwgbW1UaHJlYWRYWFgsIG1jaUV4ZWN1dGUpLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVN0YXJ0ZWQgY2FsbGluZyBtaXhlciBhcyBhIDMyIGJpdCBsb3cgbGV2ZWwgZHJpdmVyIChubyBsb25nZXIgMTYgYml0KQoJQWRkZWQgc3VwcG9ydCBmb3IgeWllbGQgcHJvYyBpbiBtY2kgc3RydWN0CglBZGRlZCBtbVRhc2tYWFgxNiBhbmQgbW1UaHJlYWRYWFgxNiBmdW5jdGlvbnMKCVJlZnJlc2hlZCBpbXBsZW1lbnRhdGlvbiBvZiAxNiBiaXQgbmF0aXZlICYgYXN5bmNocm9ub3VzIE1DSSBkcml2ZXIKCWNvbW1hbmQgKHRocm91Z2ggbW10YXNrLnRzaykuCgoJKiBtdWx0aW1lZGlhL21peGVyLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgYSBmZXcgYnVncy4gU3RhcnRlZCBpbXBsZW1lbnRpbmcgbWl4ZXJNZXNzYWdlIGFzIGEgMzIgYml0CglmdW5jdGlvbiAobm8gbG9uZ2VyIDE2IGJpdCkuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUltcGxlbWVudGVkIG1jaUV4ZWN1dGUuCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9tY2kuYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgeWllbGQgcHJvYyBtZW1iZXJzIHRvIG1jaSBzdHJ1Y3QuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgbWl4ZXIgc3BlY2ZpYyBlcnJvciBjb2RlcywgZml4ZWQgdHlwZSBpbiBmdW5jdGlvbiBuYW1lLgoKCSogd2luZG93cy9kcml2ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCByZXR1cm4gY29kZXMgZm9yIGRlZmF1bHQgZHJpdmVyIHByb2MuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCU1hZGUgTEJfR0VUQ1VSU0VMIHJldHVybiBmb2N1c19pdGVtIGlmIG5vIGl0ZW0gaGFzIGJlZW4gc2VsZWN0ZWQuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJS2FsZXZpIEogSGF1dGFuaWVtaSA8b2gzZmdAb2gzdHIuZWxlLnR1dC5maT4KCUFkZGVkIEZpbm5pc2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogbWlzYy9tYWluLmMsIHdpbmRvd3MveDExZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCBncmFwaGljcy93aW5nLmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3gxMWRydi5oOgoJVmVrc2xlciBNaWNoYWVsIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgd2ludXNlcjE2LmggZnJvbSB4MTFkcnYuaC4KCgkqIGluY2x1ZGUvd2luc3Bvb2wuaCwgbWlzYy9wcmludGRydi5jOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglJbXBsZW1lbnRhdGlvbiBvZiBFbnVtUHJpbnRlcnNBLCBpbmZvIGxldmVsIDQgYW5kIDUuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIFNhY2FybnkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJQ2hlY2sgaWYgdGhlIGJ1aWxkIGlzIHN0cmlwcGVkLCBhbmQgZGllIGlmIGl0IGlzLgoJQ2hlY2sgZm9yIEJhc2ggMi4wLCBhbmQgaWYgc28gdXNlIGRpZmZlcmVudCBTVERFUlItPlNURE9VVCByZWRpcmN0b3IKCSh0aGFua3MgUnlhbiBDdW1taW5nISkuCgoJKiB3aW5kb3dzL21kaS5jOiBWZWtzbGVyIE1pY2hhZWwgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJRml4ZWQgInJlYWNoZWQgZW5kIG9mIG5vbiB2b2lkLi4uIiB3YXJuaW5ncy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWdnaW5nOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1lc3NhZ2VCb3gzMkEgLT4gTWVzc2FnZUJveEEKCgkqIGxvYWRlci9tb2R1bGUuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjOgoJU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CglJbXBsZW1lbnRhdGlvbiBmb3IgRnJlZUxpYnJhcnlBbmRFeGl0VGhyZWFkLgoJTWFkZSBHZXRCaW5hcnlUeXBlID0gR2V0QmluYXJ5VHlwZUEuCgoJKiBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL3Rhc2suYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSdW4gV2luMzIgcHJvY2Vzc2VzIGluIHRoZWlyIG93biB0aHJlYWRzLgoJUHJvY2VzcyBleGl0IHNlcXVlbmNlIGFkYXB0ZWQuCgpTdW4gTWFyIDIxIDE5OjI2OjI2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9tb2R1bGUuYywgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQ2hhbmdlZCBwcm9jZXNzIGluaXRpYWxpc2F0aW9uIHRvIHVzZSB0aGUgbmV3IHNlcnZlciByZXF1ZXN0cy4KCVN0YXJ0ZWQgdG8gbW92ZSB0aGUgcHJvY2VzcyBpbml0IHRvIHRoZSByaWdodCBjb250ZXh0LCBub3QgZmluaXNoZWQgeWV0LgoKCSogaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3Byb2Nlc3MuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBpbmNsdWRlL3NlcnZlci90aHJlYWQuaCwgc2VydmVyL21haW4uYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCBpbmNsdWRlL3NlcnZlci5oOgoJQWRkZWQgbmV3X3Byb2Nlc3MgYW5kIGluaXRfcHJvY2VzcyByZXF1ZXN0LgoJU3BsaXQgb3V0IHByb2Nlc3MgY3JlYXRpb24gZnJvbSB0aHJlYWQgY3JlYXRpb24uCglDaGFuZ2VkIHNlcnZlciBpbml0aWFsaXNhdGlvbiB0byBlbnN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBhIGN1cnJlbnQKCXRocmVhZC4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglPbmUgc21hbGwgZXJyb3IgY29ycmVjdGVkIGFuZCB0aGUgMTAydGgga2V5Li4uCgoJKiBtaXNjL2NvbW0uYywgaW5jbHVkZS9jb21tLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSBjb21tZXJyb3IgYW5kIGV2ZW50bWFzayBsb2NhbCB0byBlYWNoIHBvcnQgKGZvciB3aW4xNiksIG1hZGUgdGhlCgl3aW4xNiByb3V0aW5lcyB1c2UgcG9ydCBpbmRpY2VzIGluc3RlYWQgb2YgVU5JWCBmZHMgKHRoaXMgc2hvdWxkIG1ha2UKCXNvbWUgVmlzdWFsIEJhc2ljIHN0dWZmIGFuZCBzaW1pbGFyIGdhcmJhZ2Ugc3RhcnQgd29ya2luZyksIG1vdmVkIHNvbWUKCXN0dWZmIGFyb3VuZCAod2luMTYgcm91dGluZXMgYXQgdG9wIG9mIGZpbGUsIHdpbjMyIHJvdXRpbmVzIGF0Cglib3R0b20pLCBtYWRlIGEgY291cGxlIG9mIHdpbjMyIHJvdXRpbmVzIHVzZSB3aW4zMiBoYW5kbGVzLCBhbmQgYWRkZWQKCWEgZmV3IGhpbnRzIGFzIHRvIGhvdyB0byBpbXBsZW1lbnQgYXN5bmNocm9ub3VzIGJ1ZmZlcnMsIGJhc2VkIG9uCgl3aGljaCBFbmFibGVDb21tTm90aWZpY2F0aW9uIGNhbiBldmVudHVhbGx5IGJlIGltcGxlbWVudGVkLgoKCSogaW5jbHVkZS93aW51c2VyLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgcHJvdG90eXBlcyBvZiBhIGNvdXBsZSBvZiBjb21tIHJvdXRpbmVzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglGaXhlZCB0eXBvLgoKCSogd2luZG93cy93aW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQ2xlYXIgdXBkYXRlIHJlZ2lvbiBiZWZvcmUgV01fTkNERVNUUk9ZLgoKCSogaW5jbHVkZS9oZWFwLmgsIG1lbW9yeS9oZWFwLmMsIHJlbGF5MzIvdXR0aHVuay5jLCB3aW5kb3dzL3F1ZXVlLmM6CglHb3QgcmlkIG9mIFNZU1RFTV9MT0NLIG1hY3Jvcy4KClNhdCBNYXIgMjAgMDc6MTg6MjYgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvbWFpbi5jOiBObyBsb25nZXIgbmVlZCB0byBkZWxldGUgc3lzdGVtIGhlYXAgY3JpdGljYWwgc2VjdGlvbi4KCkZyaSBNYXIgMTkgMTc6MDQ6MjUgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBjaGVjayBmb3IgZGVza3RvcCBpbiBTSEdldEZpbGVJbmZvLgoKCSogbXVsdGltZWRpYS9tY2kuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBzb21lIGJ1Z3MgaW4gTUNJIG1lc3NhZ2UgbWFwcGluZyAoMzJBID0+IDE2KS4KCgkqIHdpbmRvd3Mvd2luLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCBXSU5fU2VuZERlc3Ryb3lNc2cuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCVJlbW92ZWQgZGVmaW5pdGlvbnMgZm9yIEZJT05SRUFEIGFuZCBGSU9OQklPLgoKCSogd2luZG93cy9kcml2ZXIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlcyBzb21lIHJldHVybiB2YWx1ZXMgZm9yIERlZkRyaXZlclByb2MuCgoJKiBwcm9ncmFtcy9yZWdhcGkvcmVnRml4ZXIucGw6CglTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglSZW1vdmVkIHRoZSBjaG9wIGNvbW1hbmQgdGhhdCB3YXMgdGhlcmUgdG8gZ2V0IHJpZCBvZiBkb3MgXk0uCglUaGUgc2NyaXB0IG5vdyBwcm9jZXNzIG9ubHkgdW5peCBmaWxlIGZvcm1hdC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUhpZGUgZGlhbG9nIHdpbmRvd3MgY3JlYXRlZCBieSBDcmVhdGVEaWFsb2cqIGluIEVuZERpYWxvZyBqdXN0IGFzCglXaW5kb3dzIGRvZXMuCgoJKiBvbGUvdmFyaWFudC5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVNldCB0eXBlIG9mIGRlc3RpbmF0aW9uIHZhcmlhbnQgaW4gVmFyaWFudENoYW5nZVR5cGVFeCBmdW5jdGlvbi4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRml4ZWQgRGFuaXNoIGtleWJvYXJkIGxheW91dC4KClRodSBNYXIgMTggMTc6Mzk6NTggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlZm9udC5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3N5c2NvbG9yLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3VzZXIuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBmaWxlcy9kb3NfZnMuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvZm9udGVuZ2luZS5jLCBpbmNsdWRlL3dpbi5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvcmVzb3VyY2UuYywgbWlzYy9semV4cGFuZC5jLCBtaXNjL3JlZ2lzdHJ5LmMsIG1zZG9zL2ludDEwLmMsIG11bHRpbWVkaWEvaW5pdC5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxvdHMgb2Ygd2FybmluZyBmaXhlZCwgb25lIG1pc3NpbmcgV0lOQVBJIGluIGRkcmF3LmMgYWRkZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudHMgKy8tLCBQZ1VwL1BnRG93biwgSG9tZS9FbmQsIExlZnQvUmlnaHQsIFVwL0Rvd24uCgoJKiByZWxheTMyL21zdmZ3MzIuc3BlYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+Cgltc3ZmdzMyLnNwZWMgYnJvdWdodCB1cCB0byBkYXRlIChmb3Jnb3QgaXQgaW4gbGFzdCBtc3ZmdzMyIHBhdGNoKS4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgbWlzYy90b29saGVscC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBNb2R1bGUzMiogc3R1YnMuCgpXZWQgTWFyIDE3IDE1OjU0OjQ0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOgoJQnJ1bm8gQWZvbnNvIDxicnVuby5hZm9uc29AY2Ftb2VzLnJubC5pc3QudXRsLnB0PgoJQWRkZWQgUG9ydHVndWVzZSBrZXl0YWJsZS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglBZGRlZCBDYW5hZGlhbiBGcmVuY2gga2V5Ym9hcmQgbGF5b3V0LgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgVUsga2V5Ym9hcmQgbGF5b3V0LgoKCSogbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MTYuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MmYuYzoKCTxwYXJhbm9pZDA3QGhvdG1haWwuY29tPgoJRml4ZWQvaW1wbGVtZW50ZWQgdmFyaW91cyBpbnRlcnJ1cHQgZnVuY3Rpb25zLgoKCSogY29udHJvbHMvbWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L3RleHQuYywgaW5jbHVkZS93aW5pb2N0bC5oLCB3aW4zMi9rZXJuZWwzMi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIHdhcm5pbmdzLiByZW1vdmVkIHNvbWUgdW5uZWNjZXNzYXJ5IGluY2x1ZGVzLCByZW1vdmVkIG9uZQoJZGlyZWN0IFdORCogYWNjZXNzIGluIGNvbnRyb2xzL21lbnUuYy4KCgkqIHdpbmRvd3Mvd2luLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIGEgbW9yZSBkZWZlbnNpdmUgdmVyc2lvbiBvZiBXSU5fU2VuZERlc3Ryb3lNc2cuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOiBBbGV4YW5kZXIgVi4gTHVreWFub3YgPGxhdkBsb25nLnlhci5ydT4KCUluc3RhbGwgaGVhZGVycyBmcm9tICQoU1JDRElSKS4KCgkqIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgdGhlIG9ic29sZXRlIElDT00gbWFjcm9zLgoKCSogaW5jbHVkZS92ZncuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNb3ZlZCB0aGUgQVBJcyBjbG9zZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgQ09NIGludGVyZmFjZSwgcmVtb3ZlZCB0d28KCWR1cGxpY2F0ZXMgYW5kIGFkZGVkIDItMyBtYWNyb3MgZm9yIEEvVyBBUElzLgoKCSogbXNkb3MvaW50MTUuYzogPHBhcmFub2lkMDdAaG90bWFpbC5jb20+CglBZGRlZCBzb21lIHN0dWJzIGZvciBpbnQxNSBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbnRlci10aHJlYWQgU2VuZE1lc3NhZ2UoKSBidWdmaXhlczoKCS0gSW5zZXJ0IG5ldyBtZXNzYWdlIHRvIGJlIHJlY2VpdmVkIGF0IHRoZSAqZW5kKiBvZiB0aGUgU01fUEVORElOR19MSVNULgoJLSBEbyAqbm90KiBwcm9jZXNzIHJlY2VpdmVkIG1lc3NhZ2VzIGluIFJlcGx5TWVzc2FnZSgpLgoJLSBDbGVhciB0aGUgUVNfU01SRVNVTFQgZmxhZyBvbmx5IGltbWVkaWF0ZWRseSBiZWZvcmUgd2FpdGluZy4KCgkqIG9sZS9zdG9yYWdlMzIuYzogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglSZXR1cm4gZXJyb3IgaWYgbm90IGEgdmFsaWQgT0xFIGNvbXBvdW5kIGZpbGUuCgoJKiBkbGxzL3ZlcnNpb24vaW5zdGFsbC5jOiBEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCUZpeCBjcmFzaCBpZiBscHVDdXJEaXJMZW4gb3IgbHB1RGVzdERpckxlbj09MC4KCgkqIG1pc2MvY2Ryb20uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWtlIGNkcm9tLmMgY29tcGlsZSBvbiBGcmVlQlNEIChGcmVlQlNEIGRvZXMgbm90IHNlZW0gdG8gaGF2ZSAqU0VFSywKCXN0cmFuZ2UpLgoKVHVlIE1hciAxNiAxNjoyOToyNiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9tb2R1bGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBsb2FkZXIvZG9zL21vZHVsZS5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9uZS9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVBhc3MgQ3JlYXRlUHJvY2VzcygpIFNFQ1VSSVRZX0FUVFJJQlVURVMgdGhyb3VnaCB0byBQUk9DRVNTX0NyZWF0ZSgpLgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUGFzcyBuZXcgYXJndW1lbnRzIChzdXNwZW5kL2luaGVyaXQpIHRvIHRoZSBzZXJ2ZXIuCgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci90aHJlYWQuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglIYW5kbGUgc3VzcGVuZC9yZXN1bWVfdGhyZWFkIHJlcXVlc3RzIGluIHBoYXNlIFNUQVJUSU5HIGNvcnJlY3RseS4KCVNldCBpbml0aWFsIHN1c3BlbmQgY291bnQgZm9yIHRocmVhZHMgY3JlYXRlZCB3aXRoIENSRUFURV9TVVNQRU5ERUQuCglTZXQgJ2luaGVyaXRhYmxlJyBmbGFnIGZvciBwcm9jZXNzL3RocmVhZCBoYW5kbGVzLgoKCSogZGxscy9jb21jdGwzMi9tb250aGNhbC5jLCBkbGxzL2NvbWN0bDMyL25hdGl2ZWZvbnQuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90YWIuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvZmxhdHNiLmMsIGRsbHMvY29tY3RsMzIvaGVhZGVyLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBubyBsb25nZXIgbmVjZXNzYXJ5IHdpbi5oIGluY2x1ZGUsIGFkZGVkIG5vdyBuZWNlc3Nhcnkgb3RoZXIKCWluY2x1ZGVzICh3aW4uaCB1c2VkIG9ubHkgYnkgVVBET1dOIG5vdykuCgoJKiBtaXNjL2NvbW0uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglkZWJ1Zy5oIG11c3QgYmUgbGFzdCwgb3Igd2UgZ2V0IEVSUigpIG1hY3JvIHByb2JsZW1zIGFnYWluLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglGaXhlZCBhIHNsaWdodCBidWcgdGhhdCB3YXMgaW5jbHVkZWQgaW4gdGhlIGNoYW5nZSBmcm9tIFdORCBwdHIgdG8KCWh3bmQgbGFzdCB3ZWVrLgoKCSogbG9hZGVyL21haW4uYywgbWlzYy9jYWxsYmFjay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglGaXggY29tcGlsZXIgd2FybmluZ3MuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvdHJlZXZpZXcuaDoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIHNvbWUgZ3JhcGhpY2FsIHByb2JsZW1zIG9mIHRoZSB0cmVldmlldyBhbmQgYWRkZWQgc3VwcG9ydCBMTUIKCWNsaWNrIG9uICsvLSBzaWduIHRvIG9wZW4gYW5kIGNsb3NlLgoJRml4ZWQgYSBidWcgaW4gaW1hZ2VsaXN0IHdoZXJlIHRoZSBsYXN0IGltYWdlIGNvdWxkIG5vdCBiZSBkaXNwbGF5ZWQuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBdm9pZCB1bm5lY2Vzc2FyeSBlcnJvciBtZXNzYWdlcy4KCgkqIHdpbmRvd3MvaG9vay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUlnbm9yZSBISVdPUkQgb2YgYm9vbGVhbiByZXR1cm4gdmFsdWVzIG9mIDE2LWJpdCBob29rIHByb2NlZHVyZXMsIHRvCgltYXRjaCBidWdneSBXaW5kb3dzIGJlaGF2aW91ci4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQ29ycmVjdGVkIGJ1ZyBpbiBlbnVtZXJhdGlvbiBmdW5jdGlvbi4KCgkqIHdpbmRvd3Mvd2luLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCBidWcgaW50cm9kdWNlZCBpbiBXSU5fRmluZFdpbmRvdy4KCgkqIGRsbHMvY29tY3RsMzIvdGFiLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJMCBpcyBhIHZhbGlkIGluZGV4IGZvciBhIHRhYiBpdGVtLgoJQ3JlYXRlU29saWRCcnVzaCB0YWtlcyBhIENPTE9SUkVGIGFzIGEgcGFyYW1ldGVyLgoJVGFiIGNvbnRyb2xzIHdlcmUgYWx3YXlzIGRpc3BsYXllZCBpbiB0aGUgdG9wIGxlZnQgY29ybmVyLgoKTW9uIE1hciAxNSAxNjoxNToxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJVXBkYXRlZCB0aGUgaW50ZXJmYWNlcyB0byB1c2UgdGhlIGxhdGVzdCBJQ09NIG1hY3Jvcy4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWE6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZC4KCgkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL01ha2VmaWxlLmluLCBtdWx0aW1lZGlhL21jaS5jLCBtdWx0aW1lZGlhL21jaXN0cmluZy5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIHJlbGF5MzIvd2lubW0uc3BlYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgYWxsIE1DSSBpbnRlcm5hbCBmdW5jdGlvbnMvdmFyaWFibGVzL21hY3JvcyB0byBtY2kuYy4KCUNoYW5nZWQgc29tZSBpbnRlcmZhY2UgbmFtZXMuCgoJKiBpbmNsdWRlL2RpZ2l0YWx2LmgsIG11bHRpbWVkaWEvbWNpYXZpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1ha2UgdXNlIG9mIGRpZ2l0YWx2LmggZmlsZS4KCgkqIG11bHRpbWVkaWEvaW5pdC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgaG93IGxpc3Qgb2YgbG9hZGFibGUgTUNJIGRyaXZlcnMgaXMgb2J0YWluZWQuCgoJKiBkb2N1bWVudGF0aW9uL2tleWJvYXJkOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCURlc2NyaWJlcyBpbiBuZXdiaWUgdGVybXMgaG93IHRvIGFkZCBuZXcga2V5Ym9hcmQgbGF5b3V0cy4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQmV0dGVyIGNvbW1lbnRzLCBhbmQgYWRkZWQgQU5TSSBjb2RlcGFnZXMgaW4gdGFibGUuCglVUyBrZXlib2FyZCBjb250cmlidXRlZCBieSBVd2UgQm9ubmVzLgoJRnJlbmNoIGtleWJvYXJkIGNvbnRyaWJ1dGVkIGJ5IEVyaWMgUG91ZWNoLgoJR2VybWFuIGtleWJvYXJkIGNvbnRyaWJ1dGVkIGJ5IFVscmljaCBXZWlnYW5kLgoJRGFuaXNoIGtleWJvYXJkIGNvbnRyaWJ1dGVkIGJ5IEJlcnRobyBTdHVsdGllbnMuCgoJKiBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL2dlbmVyaWMuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvY29tbWRsZy5oOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CgktIFJlaW1wbGVtZW50YXRpb24gb2YgdGhlIENvbW1EbGcgRXh0ZW5kZWRFcnJvciBtZWNoYW5pc20gdXNpbmcgVExTLgoJLSBTb21lIGhlYWRlciBpbmNsdXNpb24gY2xlYW51cC4KCgkqIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9tbWlvLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNvc21ldGljIGZpeGVzLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWtlcyB1c2Ugb2YgbmV3IENEQVVESU9fU2VlaygpIGZ1bmN0aW9uLgoKCSogbXNkb3MvaW50MmYuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglWYXJpb3VzIGZpeGVzIGZvciBNU0NERVggdHJhcHMuCgoJKiBtaXNjL2Nkcm9tLmMsIGluY2x1ZGUvY2Ryb20uaDogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBuZXcgZnVuY3Rpb24gQ0RBVURJT19TZWVrKCkuCgoJKiBpbmNsdWRlL2RyaXZlci5oLCB3aW5kb3dzL2RyaXZlci5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglCZXR0ZXIgMTYvMzIgYml0IGRyaXZlciBtZXNzYWdlcyBtYXBwaW5nIGFuZCBoYW5kbGluZy4KCUJldHRlciBwcm90ZWN0aW9uIGFnYWluc3QgYmFkIGhhbmRsZXMuCgoJKiBpbmNsdWRlL3BlZXhlLmgsIGxvYWRlci9yZXNvdXJjZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgTUVTU0FHRV9SRVNPVVJDRV8qIGRlZmluZXMgZnJvbSBTREsgaGVhZGVycywgdXBkYXRlZCBMb2FkTWVzc2FnZSoKCWNvZGUuCgoJKiBpbmNsdWRlL01ha2VmaWxlLmluOiBOaWVscyBLcmlzdGlhbiBCZWNoIEplbnNlbiA8bmtiakBpbWFnZS5kaz4KCUZpeGVkIG1ha2UgaW5zdGFsbC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIE1hciAxNCAxNzoyNTozMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS93aW4uaCwgaXBjL2RkZV9wcm9jLmMsIG1pc2Mvc3B5LmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kZWZkbGcuYywgd2luZG93cy9kZWZ3bmQuYywgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9wcm9wZXJ0eS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3Mvd2lucHJvYy5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9jb21iby5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2VkaXQuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL2xpc3Rib3guYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvc3RhdGljLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGdyYXBoaWNzL2RkcmF3LmMsIGlmMTYzMi90aHVuay5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJTWFkZSBhY2Nlc3MgdG8gdGhlIHduZCBzdHJ1Y3QgdGhyZWFkLXNhZmUuCgoJKiAqLyo6IEppbSBBc3RvbiA8YXN0bzAwMDFAYWxnb25xdWluYy5vbi5jYT4KCVJlbmFtZWQgd2ludHlwZXMuaCB0byB3aW5kZWYuaC4KCgkqIG1lbW9yeS9oZWFwLmM6IE1ha2UgdGhlIHN5c3RlbSBoZWFwIGNyaXRpY2FsIHNlY3Rpb24gZ2xvYmFsLgoKCSogTWFrZS5ydWxlcy5pbjoKCUZpeGVkIE1ha2VmaWxlIHVwLXRvLWRhdGUgY2hlY2sgdG8gYXZvaWQgcmVsaW5raW5nIGFsbCB0aGUgb2JqZWN0CglmaWxlcy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVpbXBsZW1lbnRlZCBzb21lIGNvZGUgd2l0aG91dCB1c2luZyBYMTEuCgoJKiBncmFwaGljcy9kZHJhdy5jLCByZWxheTMyL2RkcmF3LnNwZWM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUFkZGVkIGZ1bmN0aW9ucyBEaXJlY3REcmF3RW51bWVyYXRlVyBhbmQgRGlyZWN0RHJhd0VudW1lcmF0ZUV4Vy4KCgkqIGluY2x1ZGUvcGVleGUuaCwgbG9hZGVyL3BlX2ltYWdlLmM6IFRoZW9kb3JlIFMuIEhldGtlIDx0c2hAZ3RlLm5ldD4KCUFkZGVkIHRyYWNpbmcgZm9yIGRlbGF5ZWQgaW1wb3J0cyBhbmQgcmVtb3ZlZCB0aGUgZml4bWUuCgoJKiBmaWxlcy9kb3NfZnMuYzogUGV0ZXIgR2FudGVuIDxnYW50ZW5AdW5pLWJyZW1lbi5kZT4KCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBHZXRTaG9ydFBhdGhOYW1lQS9XLgoKCSogbWlzYy9yZWdpc3RyeS5jLCB3aW5lLmluaTogTmF0aGFuIFpvcmljaCA8d2ZpbGFyZG9AZnVzZS5uZXQ+CglBbGxvdyB0aGUgZmlsZSBuYW1lcyBhbmQgcGF0aHMgZm9yIHRoZSByZWdpc3RyeSBmaWxlcyAodXNlci5yZWcgYW5kCglzeXN0ZW0ucmVnKSB0byBiZSBzcGVjaWZpZWQgaW4gYSBbUmVnaXN0cnldIHNlY3Rpb24gb2Ygd2luZS5pbmkgb3IKCW90aGVyIGNvbmZpZyBmaWxlLgoKCSogbWVtb3J5L3N0cmluZy5jOiBHZXJhcmQgUGF0ZWwgPGcucGF0ZWxAd2FuYWRvby5mcj4KCUZpeCBPZW1Ub0Fuc2lCdWZmIGZvciByZWFsIFdpbjMxIGJlaGF2aW9yLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXJzdCBhdHRlbXB0IGF0IHN1cHBvcnRpbmcgZGlmZmVyZW50IGtleWJvYXJkIGxheW91dHMgd2l0aCB0aGVpcgoJY29ycmVjdCBzY2FuY29kZSBtYXBwaW5nLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvcmVnYXBpL01ha2VmaWxlLmluLCBwcm9ncmFtcy9yZWdhcGkvUkVBRE1FLCBwcm9ncmFtcy9yZWdhcGkvcmVnRml4ZXIucGwsIHByb2dyYW1zL3JlZ2FwaS9yZWdSZXN0b3Jlci5wbCwgcHJvZ3JhbXMvcmVnYXBpL3JlZ1NldC5zaCwgcHJvZ3JhbXMvcmVnYXBpL3JlZ2FwaS5jOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgY29tbWFuZCBsaW5lIHRvb2wgdG8gYWNjZXNzIHRoZSByZWdpc3RyeS4KCgkqIHJjL3dpbmVyYy5jOiBGaXhlZCBjb21waWxhdGlvbi4KCgkqIHJjLy5jdnNpZ25vcmU6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJSWdub3JlIGdlbmVyYXRlZCBmaWxlcy4KCgkqIHByb2dyYW1zL25vdGVwYWQvbGNjLmg6IEZpeGVkIG1ha2UgZGVwZW5kLgoKCSogb2xlL29sZTIuYywgb2xlL29sZWZvbnQuYywgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGUyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWZvbnQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVvYmouaCwgaW5jbHVkZS93aW5lL29ial9vbGV1bmRvLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xldmlldy5oLCBpbmNsdWRlL3dpbmUvb2JqX3BpY3R1cmUuaCwgaW5jbHVkZS93aW5lL29ial9zaGVsbGxpbmsuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5zb2NrLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJUGF1bCBRdWlubiA8cGF1bHFAbGludXhtYXN0ZXIuaHVuZ3J5Y2F0cy5vcmc+CglNYW55IG5ldyBkZWZpbmVzLCBhbmQgc3RydWN0cyB0byBoZWxwIGNvbXBpbGUgTUZDLiBBcyB3ZWxsIGFzIGEgZmV3CglPTEUgY29ycmVjdGlvbnMgZnJvbSBlYXJsaWVyLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJTWFrZSBHZXRNb2R1bGVIYW5kbGUxNiBvbmx5IGxvb2sgZm9yIG1vZHVsZSBuYW1lcywgbm90IHBhdGggbmFtZXMuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKZXNzIEhhYXMgPGRlc21va2VAaG90bWFpbC5jb20+CglBZGRlZCBzb21lIG1vcmUgdmdhIHZpZGVvIG1vZGVzLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglQcmV2ZW50IFgxMSBlcnJvcnMgd2hlbiBYQ3JlYXRlV2luZG93IGlzIGNhbGxlZCB3aXRoIHplcm8gd2lkdGggb3IKCWhlaWdodC4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogQ2FvbGFuIE1jTmFtYXJhIDxDYW9sYW4uTWNOYW1hcmFAdWwuaWU+CglBZGRlZCBtZXRhZmlsZSBzdXBwb3J0IGZvciBFeHRGbG9vZEZpbGwuCgoJKiBjb250cm9scy9idXR0b24uYzoKCURpcmsgVGhpZXJiYWNoIDx0aGllcmJhY2hAbWF0aGVtYXRpay50dS1kYXJtc3RhZHQuZGU+CglQYWludCBncmF5IHRleHQgb24gZ3JheSBiYWNrZ3JvdW5kIGluIGNoZWNrYm94ZXMvcmFkaW9idXR0b25zIGJ5CglzdGlwcGxpbmcuIEFsc28gY2hhbmdlZCB0aGUgYnJ1c2ggdXNlZCBpbiB0aGlzIGNhc2UgdG8gZ2l2ZSBiZXR0ZXIKCXJlYWRhYmlsaXR5IHdpdGggWCBmb250cy4KCgkqIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvdGFwaS5oLCBtaXNjL0F0dGljL3RhcGkzMi5jLCBtaXNjL01ha2VmaWxlLmluLCByZWxheTMyL3RhcGkzMi5zcGVjLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvdGFwaTMyLy5jdnNpZ25vcmUsIGRsbHMvdGFwaTMyL01ha2VmaWxlLmluLCBkbGxzL3RhcGkzMi9hc3Npc3RlZC5jLCBkbGxzL3RhcGkzMi9saW5lLmMsIGRsbHMvdGFwaTMyL3Bob25lLmMsIGluY2x1ZGUvZGVidWcuaDoKCUFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUltcGxlbWVudGVkIChuZWFybHkpIGFsbCBUQVBJIGZ1bmN0aW9ucyBhcyBzdHVicy4KCgkqIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbWlzYy9jb21tLmMsIGZpbGVzL2Rvc19mcy5jLCBpbmNsdWRlL3dpbmJhc2UuaDoKCU1pY2hhZWwgTWNDb3JtYWNrIDxNaWNoYWVsLk1jQ29ybWFja0BhbGNhdGVsLmNvbS5hdT4KCUJhc2ljIHN1cHBvcnQgZm9yIFdJTjMyIHNlcmlhbCBjb21tdW5pY2F0aW9ucyBBUEkuCglNb2RpZnkgRE9TRlNfT3BlbkRldmljZSB0byBhbGxvdyBvcGVuaW5nIG9mIENPTSBwb3J0cy4KCUNoYW5nZSBXaW4zMiBjb21tIGZ1bmN0aW9ucyB0byBhY2NlcHQgZmlsZSBoYW5kbGUuCglBZGQgZGVjbGFyYXRpb24gb2YgQ09NU1RBVDMyIHN0cnVjdHVyZS4KCgkqIGdyYXBoaWNzL3ZnYS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIGEgc2lsbHkgVkdBLWVtdWxhdGlvbiBwYWxldHRlIGJ1Zy4KCgkqIG1zZG9zL2ludDEwLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBjb3VwbGUgb2YgdWdseSB3YXJuaW5ncyAoY2F1c2VkIGJ5IHVnbHkgZXJyb3JzKS4KCgkqIG1zZG9zL2Rvc21lbS5jOiBBbmRyZWFzIE1vaHIgPGNpcGFtODk1QGNpcDEuaW5kLnVuaS1zdHV0dGdhcnQuZGU+CglCdWcgZml4LgoKCSogZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxndWlkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS9zaGxndWlkLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZS9vYmpfZW51bWlkbGlzdC5oLCBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsZm9sZGVyLmgsIG9sZS9ndWlkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gSVNoZWxsRm9sZGVyIGFuZCBJRW51bUlETGlzdCBhcmUgdXNpbmcgdGhlIG5ldyBDT00gaGVhZGVycwoJLSBmaXhlZCBzb3J0IG9yZGVyIGZvciBmb2xkZXJzIGFuZCBkcml2ZXMKCgkqIFJFQURNRTogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglDb3JyZWN0ZWQgbG9jYXRpb24gb2YgRkFRLgoKCSogbXNkb3MvaW50MjEuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGdWxseSBpbXBsZW1lbnRlZCBEaXJlY3QgQ29uc29sZSBJbnB1dC4KClNhdCBNYXIgMTMgMTg6MjA6MjcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvcXVldWUuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpZjE2MzIvdGh1bmsuYywgc2NoZWR1bGVyL3N5c2RlcHMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgbmV3bHkgaW50cm9kdWNlZCBhbmQgc29tZSBsZWZ0b3ZlciB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvd2luZ2RpLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSB0aGUgc3RhbmRhcmQgbWFjcm9zIGZvciBHZXRUZXh0RXh0ZW50UG9pbnQKCWFuZCBHZXRUZXh0RXh0ZW50UG9pbnQzMi4KCgkqIGluY2x1ZGUvcHJzaHQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglGaXhlZCBzb21lIFNlbmRNZXNzYWdlMzJBIHRoYXQgZXNjYXBlZCB0aGUgcmVuYW1pbmcuCgoJKiBpbmNsdWRlL29sZTIuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglPbiB3aW5kb3dzIG9sZTIuaCBpbmNsdWRlcyBvbGVhdXRvLmggYW5kIHNvbWUgcHJvZ3JhbXMgZGVwZW5kIG9uIHRoaXMuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgb2xlL29sZTJkaXNwLmM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZXMgaW4gdGhlIFN5c0FsbG9jU3RyaW5nIGZ1bmN0aW9ucyBwcm90b3R5cGVzLiBJdCdzIG1vc3RseSAnY29uc3QnCglwcm9ibGVtcyB0aGF0IHByZXZlbnQgcmVndWxhciBjb2RlIGZyb20gY29tcGlsaW5nLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZ3JhcGhpY3MveDExZHJ2L29lbWJpdG1hcC5jLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2Nkcm9tLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2RyaXZlLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2ZvbGRlciwgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9mb2xkZXIyLCBpbmNsdWRlL2JpdG1hcHMvQXR0aWMvb2JtX2hhcmRkaXNrLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2Nkcm9tLCBpbmNsdWRlL2JpdG1hcHMvb2ljX2Zsb3BweSwgaW5jbHVkZS9iaXRtYXBzL29pY19mb2xkZXIsIGluY2x1ZGUvYml0bWFwcy9vaWNfZm9sZGVyMiwgaW5jbHVkZS9iaXRtYXBzL29pY19oZGlzaywgaW5jbHVkZS9iaXRtYXBzL29pY19uZXR3b3JrLCBpbmNsdWRlL3dpbnVzZXIuaDoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaWxlIG9wZW4gZGlhbG9nIG5vdyB1c2VzIGljb25zIGluc3RlYWQgb2YgYml0bWFwcy4KCgkqIGluY2x1ZGUvdmZ3Lmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXBkYXRlZCBBVkkqIGNsYXNzIGludGVyZmFjZSB0byBuZXcgSUNPTV8gbWV0aG9kcy4KCgkqIG11bHRpbWVkaWEvbXN2aWRlby5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgZml4ZXMgYW5kIGFkZGl0aW9ucy4KCgkqIGRsbHMvYXZpZmlsMzIvLmN2c2lnbm9yZSwgZGxscy9hdmlmaWwzMi9NYWtlZmlsZS5pbiwgZGxscy9hdmlmaWwzMi9hdmlmaWxlLmMsIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgcmVsYXkzMi9hdmlmaWwzMi5zcGVjLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN0YXJ0ZWQgb24gYXZpZmlsMzIgaW1wbGVtZW50YXRpb24gKG9ubHkgc3R1YnMgY3VycmVudGx5KS4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJUmVpbXBsZW1lbnRlZCBEcmF3Rm9jdXNSZWN0IHdpdGhvdXQgdXNpbmcgWDExLgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1zZG9zL2Rvc21lbS5jLCBtc2Rvcy9pbnQxMC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgbW9kZSBzZXR0aW5nIHRoaW5ncyBhcyB3ZWxsIGFzIFZFU0EgYWRkaXRpb25zIGFuZCBvdGhlcgoJdGhpbmdzLiBDbGVhbmVkIHVwIERPU01FTV9CaW9zRGF0YSBoYW5kbGluZy4KCgkqIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBvbGUvb2xlZm9udC5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIElQZXJzaXN0U3RyZWFtIGludGVyZmFjZSBvbiB0aGUgT0xFIGZvbnQgb2JqZWN0LgoKCSogbWlzY2VtdS9lbXVsYXRlLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWtlIGZ1bmN0aW9uIEJYPTYgcm91bmQgU1QwIHRvIGludGVnZXIuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvd2luZ2RpLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJLSBDaGFuZ2VkIExWTV9TRVRJVEVNUE9TSVRJT04gLT4gTFZNX1NFVElURU1QT1NJVElPTjMyCgkgICAgICAgICAgTFZNX1NFVElURU1QT1NJVElPTjE2IC0+IExWTV9TRVRJVEVNUE9TSVRJT04KCS0gQWRkZWQgc29tZSBtaXNzaW5nIHN0cnVjdHVyZXMgYW5kIGRlZmluaXRpb25zIHRvIHdpbmdkaS5oCgktIEFkZGVkIHByb3BlciBkZWZpbmVzIGZvciBHZXRDaGFyV2lkdGhzWFhYCgktIEFkZGVkIGMrKyBwcm90ZWN0aW9uIHRvIHdpbmdkaS5oCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIG1vc3RseSBjbGVhbnVwIGFmdGVyIHRoZSByZW5hbWluZwoJLSBpbXBsZW1lbnRlZCBTSElMQ3JlYXRlRnJvbVBhdGgKCS0gc21hbGwgY2hhbmdlZCB0byBTSEdldEZpbGVJbmZvCgoJKiBpbmNsdWRlL3Byc2h0LmgsIGluY2x1ZGUvd2ludXNlci5oOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUNoYW5nZWQgdGhlIERMR1RFTVBMQVRFIGFuZCBETEdJVEVNVEVNUExBVEUgdHlwZXMgdG8gYWRoZXJlIHRvIHRoZSBBVwoJc3RydWN0dXJlIGZvciBjb21wYXRpYmlsaXR5LgoKCSogZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIGluY2x1ZGUvY2RlcnIuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGRsbHMvY29tbWRsZy9jb2xvcmRsZy5jLCBkbGxzL2NvbW1kbGcvZmlsZWRsZy5jLCBkbGxzL2NvbW1kbGcvZm9udGRsZy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCU1vdmVkIGVycm9yIGNvZGVzIHRvIGNkZXJyLmguCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFBldGVyIEdhbnRlbiA8Z2FudGVuQHVuaS1icmVtZW4uZGU+CglGaXggQ3JlYXRlUHJvY2VzcyB0byBoYW5kbGUgbHBDb21tYW5kbGluZSBiZXR0ZXIuCgoJKiB3aW4zMi9pbml0LmM6IFBldGVyIEdhbnRlbiA8Z2FudGVuQHVuaS1icmVtZW4uZGU+CglDaGFuZ2UgR2V0U3RhcnR1cEluZm9BL1cgdG8gcmV0dXJuIHRoZSByZWFsIFN0YXJ0dXBJbmZvLgoKCSogd2luZG93cy9tZGkuYzogR3V5IEFsYmVydGVsbGkgIDw8Z2FsYmVydGVAbmVvLmxydW4uY29tPj4KCUhhbmRsZSBudWxsIHduZFB0ciBmb3IgbWRpIHdpbmRvdy4KCgkqIGluY2x1ZGUvd2luYmFzZS5oOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUZpeGVkIGEgY291cGxlIG9mIG1pc3NpbmcgI2RlZmluZXMgZm9yIFdpbjMyIEFQSSBmdW5jdGlvbnMgd2l0aAoJQVNDSUkvVW5pY29kZSB2ZXJzaW9ucy4KCgkqIHdpbjMyL25ld2Zucy5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpZjE2MzIvd3Byb2NzLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jLCByZWxheTMyL01ha2VmaWxlLmluLCByZWxheTMyL3V0dGh1bmsuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgVVRSZWdpc3RlciBhbmQgVVRVblJlZ2lzdGVyLgoKCSogaWYxNjMyL2RkZW1sLnNwZWMsIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS93aW5udC5oLCBtaXNjL2RkZW1sLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6Cgk8a2VpdGhfbUBzd2VlbmV5LmRlbW9uLmNvLnVrPgoJQWRkZWQgY29kZWQgc3R1YnMgZm9yIERkZVF1ZXJ5Q29udkluZm8gKDE2ICYgMzIgYml0KSwgRGRlQWRkRGF0YSAoMzIKCWJpdCksIERkZUFiYW5kb25UcmFuc2FjdGlvbiAoMzIgYml0KSwgRGRlSW1wZXJzb25hdGVDbGllbnQgKDMyKQoJRGRlU2V0UXVhbGl0eU9mU2VydmljZSwgRGRlU2V0VXNlckhhbmRsZS4KCUNvcnJlY3RlZCBoZWFwIGhhbmRsaW5nIGluIERkZUluaXRpYWxpemVXLCByZWZpbmVkIENyZWF0ZU11dGV4IGVycm9yCgloYW5kbGluZy4KCUdlbmVyYWwgdGlkeWluZy4KCgkqIGlmMTYzMi9vbGVjbGkuc3BlYywgaW5jbHVkZS9vbGUuaCwgb2xlL29sZWNsaS5jOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIE9sZVF1ZXJ5TGlua0Zyb21DbGlwLCBPbGVRdWVyeUNyZWF0ZUZyb21DbGlwLAoJT2xlQ3JlYXRlTGlua0Zyb21DbGlwLCBPbGVDcmVhdGVGcm9tQ2xpcCwgT2xlUXVlcnlUeXBlLAoJT2xlUmV2ZXJ0Q2xpZW50RG9jLCBPbGVFbnVtT2JqZWN0cy4KCgkqIHJlbGF5MzIvb2xlY2xpMzIuc3BlYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCURlZmluaXRpb24gZm9yIE9sZUNyZWF0ZUxpbmtGcm9tQ2xpcCB3YXMgaW5jb3JyZWN0LgoKCSogbG9hZGVyL3Jlc291cmNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWFzayBvdXQgdGhlIHVwcGVyIDEyIGJpdHMgZnJvbSB0aGUgcmVzb3VyY2VpZCwganVzdCBsaWtlIHdpbjk1IGRvZXMuCgoJKiBCVUdTOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVVwZGF0ZWQgYnVnIGxpc3QgYnkgbXkga25vd2xlZGdlIG9mIHRoZW0uCgoJKiBvbGUvc3RvcmFnZTMyLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJU3RnQ3JlYXRlRG9jZmlsZSBhY2NlcHRzIE5VTEwgYXMgYSBmaWxlIG5hbWUuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6IENhb2xhbiBNY05hbWFyYSA8Q2FvbGFuLk1jTmFtYXJhQHVsLmllPgoJQWRkZWQgc3VwcG9ydCBmb3IgYWx0ZXJuYXRlIERJQkJJVEJMVCBsYXlvdXQuCgoJKiBkZWJ1Z2dlci9tc2MuYzogU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CglCdWZmZXIgc2l6ZSBidWcgaW4gTG9jYXRlRGVidWdJbmZvRmlsZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IEFuZHJlYXMgTW9ociA8Y2lwYW04OTVAY2lwMS5pbmQudW5pLXN0dXR0Z2FydC5kZT4KCUltcHJvdmVkICJlcnJvciIgbWVzc2FnZSByZWFkYWJpbGl0eS4KCgkqIHNlcnZlci9wcm9jZXNzLmM6IEZpeGVkIHByb2Nlc3Nfc2lnbmFsZWQgKHRoYW5rcyB0byBVd2UgQm9ubmVzKS4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRml4ZWQgbWFrZSBkZXBlbmQKCkZyaSBNYXIgMTIgMTc6NDI6NTAgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9kYXRldGltZS5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2lwYWRkcmVzcy5jLCBkbGxzL2NvbWN0bDMyL21vbnRoY2FsLmMsIGRsbHMvY29tY3RsMzIvbmF0aXZlZm9udC5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvcmViYXIuYywgZGxscy9jb21jdGwzMi9zdGF0dXMuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgZGxscy9jb21jdGwzMi90cmFja2Jhci5jLCBpbmNsdWRlL2lwYWRkcmVzcy5oLCBpbmNsdWRlL3VwZG93bi5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVJlcGxhY2VkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIFdORCBzdHJ1Y3R1cmUgYnkgY29ycmVzcG9uZGluZyBjYWxscyB0bwoJV2luMzIgZnVuY3Rpb25zLgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL3Byb2dyZXNzLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGluY2x1ZGUvY29tbWN0cmwuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBzb21lIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGUgYXV0b21hdGVkIHJlbmFtaW5nLgoKCSogcmVzb3VyY2VzLy5jdnNpZ25vcmU6IEFkZGVkIHN5c3Jlc19SdS5zCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9saXN0dmlldy5oOgoJTHVjIFRvdXJhbmdlYXUgPGx1Y0BtYWNhZGFtaWFuLmNvbT4KCUNoYW5nZWQgdGhlIGxpc3R2aWV3IGNvbnRyb2wgdG8gYWRkIHRoZSByZXBvcnQgdmlldyBhbmQgZml4IHNvbWUgYnVncwoJZm9yIHRoZSBsaXN0IHZpZXcuCgoJKiBtaXNjL3NoZWxsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCB1c2Ugb2YgV05EIHN0cnVjdC4KCgkqIGRsbHMvbnRkbGwvcnRsc3RyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgI2lmZGVmIEhBVkVfV0NUWVBFX0guCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jOiBUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgZGlyZWN0IGFjY2VzcyB0byB0aGUgV05EIHN0cnVjdC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1lc3NhZ2UgdHJhbnNsYXRpb24gZm9yIFdNX1dJTklOSUNIQU5HRS4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglvYm1fY2xvc2VkXzk1IHNob3VsZCBub3QgYmUgZHJhd24gaW52ZXJ0ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IFN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCVJlbW92ZWQgZGlyZWN0IGFjY2VzcyB0byB0aGUgV05EIHN0cnVjdC4KCgkqIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oOgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglJbXByb3ZlZCBwZXJmb3JtYW5jZS4KCgkqIHdpbmRvd3MvZGNlLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPFN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJQ3JlYXRlIGEgbmV3IERDIGluIEdldERDRXggd2hlbiBub25lIGFyZSBhdmFpbGFibGUuCgoJKiBvbGUvb2xlMmRpc3AuYywgb2xlL3ZhcmlhbnQuYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBEb3NEYXRlVGltZVRvVmFyaWFudCgpIGFuZCBTeXNBbGxvY1N0cmluZ0J5dGVMZW4oKSBmdW5jdGlvbnMuCgoJKiBjb250cm9scy9jb21iby5jOiBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQ2hhbmdlZCB0aGUgYnV0dG9uIHN0YXRlIHRvICJ1cCIgYXMgc29vbiBhcyBpdCBpcyBrbm93biB0aGF0IHRoZQoJc2VsZWN0aW9uIGhhcyBiZWVuIGNhbmNlbGxlZCwgc28gdGhlIGJ1dHRvbiBpcyByZWRyYXduIGluIHRoZSAidXAiCglzdGF0ZS4KCgkqIG1pc2NlbXUvaW5zdHIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbXVsYXRlICh3ZWxsLCBpZ25vcmUpIG1vdiBjcjAsZWF4IGFuZCBtb3YgZWF4LGNyMC4KCldlZCBNYXIgMTAgMTg6MDM6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZS9vYmpfaW5wbGFjZS5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZW9iai5oLCBpbmNsdWRlL3dpbmUvb2JqX29sZXVuZG8uaCwgaW5jbHVkZS93aW5lL29ial9vbGV2aWV3LmgsIGluY2x1ZGUvd2luZS9vYmpfcGljdHVyZS5oLCBpbmNsdWRlL3dpbmUvb2JqX3Byb3BlcnR5LmgsIG9sZS9jb21wb2JqLmMsIG9sZS9ndWlkLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlY2xpLmMsIG9sZS9vbGVkbGcuYywgb2xlL29sZW9iai5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGluY2x1ZGUvQXR0aWMvd2ludHlwZXMuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvaW1tLmgsIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGUydmVyLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL29sZWN0bC5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfZHJhZ2Ryb3AuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZGRlZCBhIGxvdCBvZiBuZXcgT0xFIGludGVyZmFjZXMuCgoJKiBkb2N1bWVudGF0aW9uL2xhbmd1YWdlcywgZG9jdW1lbnRhdGlvbi93aW5lLm1hbiwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jLCByZXNvdXJjZXMvTWFrZWZpbGUuaW4sIHJlc291cmNlcy9zeXNyZXMuYywgcmVzb3VyY2VzL3N5c3Jlc19SdS5yYzoKCUFsZXhhbmRlciBLYW5hdmluIDxha0BjYXZlLmhvcC5zdHUubmV2YS5ydT4KCUFkZGVkIHN1cHBvcnQgZm9yIFJ1c3NpYW4gbGFuZ3VhZ2UuCgoJKiBpZjE2MzIvdGh1bmsuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglUZW1wb3JhcnkgZml4OiBBY3RpdmF0ZSAxNi1iaXQgc3lzdGVtIHRpbWVyIGNhbGxiYWNrIHJvdXRpbmVzLCBidXQKCXNraXAgY2FsbGluZyB0aGVtIGlmIHRpbWVyIHNpZ25hbCBvY2N1cmVkIHdoaWxlIGN1cnJlbnQgdGhyZWFkIHdhcwoJaG9sZGluZyB0aGUgV2luMTZMb2NrICh0byBwcmV2ZW50IDE2LWJpdCBzdGFjayBjb3JydXB0aW9uKS4KCgkqIGluY2x1ZGUvc3lzbGV2ZWwuaCwgc2NoZWR1bGVyL3N5c2xldmVsLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIF9Db25maXJtV2luMTZMb2NrIChLRVJORUwzMi45NikuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gc29tZSBjbGVhbiB1cCBpbiBoYW5kbGluZyBvZiBkZXB0aAoJLSBtb3JlIGRlcHRoIGNvbnZlcnNpb24gcm91dGluZXMgZm9yIFgxMSAoMTUsIDE2IGFuZCAzMiAtPiA4KQoKCSogaW5jbHVkZS9xdWV1ZS5oLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCBTZW5kTWVzc2FnZVRpbWVvdXQoKSBmdW5jdGlvbnMuCgoJKiBwcm9ncmFtcy9ub3RlcGFkL0NoYW5nZUxvZywgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9zZWFyY2guYzoKCU1hcmNlbCBCYXVyIDxtYmF1ckBnMjYuZXRoei5jaD4KCUFkZGVkIEJveWVyLU1vb3JlIHRleHQgc2VhcmNoLgoKCSogaWYxNjMyL3RodW5rLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBVU0VSLkRlc3Ryb3lJY29uMzIgdG8gQ2FsbG91dCBzdHJ1Y3QuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvbmUvY29udmVydC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEZWxldGVkIE5FX0ZyZWVQRVJlc291cmNlKCkuCgoJKiBpbmNsdWRlL3VzZXIuaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCB3aW5kb3dzL3VzZXIuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBjdXJzb3IvaWNvbiBoYW5kbGluZyBjaGFuZ2VzLgoKCSogbG9hZGVyL25lL3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbGxvdyBhY2Nlc3NpbmcgYm90aCBORSBhbmQgUEUgcmVzb3VyY2VzIHdpdGggYm90aCAxNi0gYW5kIDMyLWJpdCBBUEkuCglIb29rIGN1cnNvci9pY29uIGRlc3RydWN0aW9uIGludG8gRnJlZVJlc291cmNlIChsaWtlIFdpbjk1KS4KCgkqIGluY2x1ZGUvY3Vyc29yaWNvbi5oLCBvYmplY3RzL2N1cnNvcmljb24uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgV2luOTUtc3R5bGUgc2hhcmVkIGN1cnNvci9pY29uIGNhY2hlLgoJTWVyZ2VkIE5FIGFuZCBQRSByZXNvdXJjZSBoYW5kbGluZy4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9mb2xkZXIsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZm9sZGVyMjoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglGaXhlZCBmb2xkZXIgYml0bWFwIGNvbG9ycyBmb3IgOGJwcC4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOiBDYW9sYW4gTWNOYW1hcmEgPENhb2xhbi5NY05hbWFyYUB1bC5pZT4KCVdpbmRvd3MgZG9lc250IGFsbG93IGRhc2hlZCBhbmQgZG90dGVkIGxpbmVzID4gMS4KCgkqIG9sZS9jb21wb2JqLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGEgcmVmZXJlbmNlLWNvdW50aW5nIHByb2JsZW0gaW4gdGhlIGV4dGVybmFsIGxvY2sgbWVjaGFuaXNtLgoKCSogZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBzaW1wbGUgYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2hlbGxWaWV3IG9iamVjdHMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGluY2x1ZGUvc2hlbGwuaDoKCVNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0PgoJQWRkZWQgc29tZSBleHRyYSBDU0lETHMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBBbGxvdyBscENvbW1hbmRMaW5lID09IE5VTEwgaW4gQ3JlYXRlUHJvY2VzcygpLgoKCSogd2luZG93cy94MTFkcnYva2V5Ym9hcmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBUb0FzY2lpIHNob3VsZCBub3QgZ2VuZXJhdGUgQVNDSUkgY29kZSB3aGVuIGtleS11cCBmbGFnIGlzIHNldC4KCgkqIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCB3aW5kb3dzL3gxMWRydi9ldmVudC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBdm9pZCB1bm5lY2Vzc2FyeSBHcmFwaGljc0V4cG9zZSBldmVudHMuCgoJKiBvbGUvc2FmZWFycmF5LmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGluZGV4IGNhbGN1bGF0aW9ucyBvZiB0aGUgdXBwZXIgYW5kIGxvd2VyIGJvdW5kcyBvZiBhIHNhZmVhcnJheS4KCUZpeGVkIGEgd3JvbmcgaW5pdGlhbGl6YXRpb24gb2YgdGhlIFZUIHNpemVzIGFycmF5LgoKCSogb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50YXRpb24gb2YgdGhlIFJlbGVhc2VTdGdNZWRpdW0gbWV0aG9kLgoKVHVlIE1hciAgOSAxNzo0Nzo1MSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9maWxlLmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9vbS5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCBkbGxzL250ZGxsL3J0bHN0ci5jLCBkbGxzL250ZGxsL3NlYy5jLCBkbGxzL250ZGxsL3N5bmMuYywgZGxscy9udGRsbC90aW1lLmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgcmVsYXkzMi9udGRsbC5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIHNvcnRlZCBBUEkgYnkgZ3JvdXBzCgktIG5ldyBzdHViczogIE50UXVlcnlEaXJlY3RvcnlGaWxlLCAgWndRdWVyeURpcmVjdG9yeUZpbGUKCS0gaW1wbC46IFJ0bEFsbG9jYXRlSGVhcCwgUnRsQ3JlYXRlSGVhcCwgUnRsRGVzdHJveUhlYXAsIFJ0bEZyZWVIZWFwLAoJICBSdGxHZXREYWNsU2VjdXJpdHlEZXNjcmlwdG9yLCBSdGxHZXRTYWNsU2VjdXJpdHlEZXNjcmlwdG9yCgktIGltcGwuIGJ5IFJleCBKb2xsaWZmIChyZXhAbHZjYWJsZW1vZGVtLmNvbSk6IFJ0bFRpbWVUb1RpbWVGaWVsZHMsCgkgIFJ0bFRpbWVGaWVsZHNUb1RpbWUKCgkqIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL3dpbm50Lmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hbnkgbmV3IHByb3RvdHlwZXMuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYywgaW5jbHVkZS9tb2R1bGUuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4IHVzZSBvZiB3cm9uZyBwcm90b3R5cGUgZnJvbSBudGRsbC5oLgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYWtlIG1vcmUgZnVuY3Rpb25zIGp1c3QgY2FsbGluZyBkb3duIHRvIG50ZGxsLgoJTmV3OiBHZXRTZWN1cml0eURlc2NyaXB0b3JTYWNsLgoKCSogZ3JhcGhpY3MvcHNkcnYvYWZtLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUFjY2VwdCAiTm9ybWFsIiBhcyBhIHZhbGlkIEFGTSB3ZWlnaHQuCgoJKiBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaDogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglTbWFydGVyIHdheSBvZiBzZWFyY2hpbmcgZm9yIGEgZnJlZSBibG9jay4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IERpcmVjdGVkWWllbGQoKSBvbmx5IHRvIDE2LWJpdCB0YXNrcyBpbiBSZXBseU1lc3NhZ2UoKS4KCgkqIGxpYnRlc3QvaGVsbG81LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ29ycmVjdGVkIGNhc3Qgc28gaGVsbG81IGNvbXBpbGVzIGFnYWluLgoKCSogZGxscy9jb21tZGxnL2ZpbGVkbGcuYzogTm9ybWFuIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRG9uJ3QgY29weSBscHN0ckZpbGVUaXRsZSBpZiBnaXZlbiBOVUxMIHBvaW50ZXIgZm9yIHRoaXMuCglEZWxwaGkgMi4wIHBhc3NlcyBOVUxMIGZvciBscHN0ckZpbGVUaXRsZSB0byBHZXRPcGVuL1NhdmVGaWxlTmFtZS4KCgkqIG1pc2Mvd2luc29jay5jLCBpbmNsdWRlL3dpbnNvY2suaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4IGJyb2tlbiBfY29udmVydF9zb2Nrb3B0IGZvciBJUFBST1RPX1RDUCBjYXNlcywgYWRkZWQgVENQX05PREVMQVkuCgoJKiBtc2Rvcy9kcG1pLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJX19hc21fXyBmaXggYXMgc3VnZ2VzdGVkIGJ5IDxkYW5pZWxAbWF0LnV0ZnNtLmNsPiBEYW5pZWwgU2VycGVsbCwKCXJlbW92ZWQgYWRkaXRpb25hbCAiZWF4IiBmcm9tIGNsb2JiZXIgbGlzdCwgc28gZWdjcy1jdXJyZW50IGxpa2VzIGl0LgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGVGaWxlTWFwcGluZyBTZXRMYXN0RXJyb3IoMClzIG9uIG5ld2x5IGNyZWF0ZWQgbWFwcGluZ3MuCgpTdW4gRmViIDI4IDIwOjA1OjEyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbW1kbGcvLmN2c2lnbm9yZSwgZGxscy9jb21tZGxnL01ha2VmaWxlLmluLCBkbGxzL2NvbW1kbGcvY29sb3JkbGcuYywgZGxscy9jb21tZGxnL2ZpbGVkbGcuYywgZGxscy9jb21tZGxnL2ZpbmRkbGcuYywgZGxscy9jb21tZGxnL2ZvbnRkbGcuYywgZGxscy9jb21tZGxnL2dlbmVyaWMuYywgZGxscy9jb21tZGxnL3ByaW50ZGxnLmMsIG1pc2MvQXR0aWMvY29tbWRsZy5jLCBtaXNjL01ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW46CglLbGFhcyB2YW4gR2VuZCA8S2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUNyZWF0ZSBhIG5ldyBzdWJkaXJlY3RvcnkgZm9yIHRoZSBjb21tb24gZGlhbG9nIGJveCBETEwgYW5kIG1vdmUgYWxsCgljb2RlIGZyb20gL21pc2MvY29tbWRsZy5jIHRvIHRoaXMgZGlyZWN0b3J5LiAgQWxzbyBtYWRlIGEgc3RhcnQgaW4KCWRvY3VtZW50aW5nIHRoZSBBUEkgY2FsbHMuCgoJKiBtaXNjL3dpbnNvY2suYywgZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvZWRpdGxpbmUuYywgZGVidWdnZXIvZXhwci5jLCBkZWJ1Z2dlci9oYXNoLmMsIGRlYnVnZ2VyL2luZm8uYywgZGVidWdnZXIvbWVtb3J5LmMsIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZGVidWdnZXIvc291cmNlLmMsIGRlYnVnZ2VyL3N0YWNrLmMsIGRlYnVnZ2VyL3R5cGVzLmMsIGluY2x1ZGUvQXR0aWMvd2ludHlwZXMuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW9yZSBpbmNsdWRlIG9wdGltaXphdGlvbnMuCgoJKiB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL3dpbnByb2MuYywgZGxscy9jb21jdGwzMi90b29sYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgbG9hZGVyL3BlX2ltYWdlLmMsIG1zZG9zL2RwbWkuYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG9iamVjdHMvZGMuYywgb2xlL3N0b3JhZ2UzMi5jLCBjb250cm9scy9tZW51LmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGEgbG90IG9mIHdhcm5pbmdzIHVzaW5nIFdJTkVfVU5VU0VELCBjYXN0cywgY29tbWVudGluZyBvdXQgYW5kCglhZGRpdGlvbmFsIHt9LiBSZXdyb3RlIEdldENyZWF0aW9uTW9kZUZyb21TVEdNIHNvIHdlIGRvbid0IGdldAoJInBvc3NpYmxlIHVzZSBvZiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIi4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1DSV9PUEVOX0RSSVZFUl9QQVJNUyAtIEFkZCB3aW4zMiB2ZXJzaW9uIG9mIHN0cnVjdHVyZS4KCgkqIGZpbGVzL2RpcmVjdG9yeS5jLCBtc2Rvcy9pbnQyMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2VkIENyZWF0ZURpcmVjdG9yeSBMYXN0RXJyb3IgcmV0dXJucyB0byBtYXRjaCBXaW4zMiAoZm91bmQgb3V0IGJ5CglleHBlcmltZW50KS4gQWRhcHRlZCBpbnQyMSBDcmVhdGVEaXJlY3RvcnkgY2FsbCB0byBzdGlsbCByZXR1cm4gdGhlCgljb3JyZWN0IERPUyBlcnJvciBjb2RlcyBhY2NvcmRpbmcgdG8gUmFscGggQnJvd24uCgoJKiBncmFwaGljcy9kZHJhdy5jLCByZWxheTMyL2RkcmF3LnNwZWM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgZnVuY3Rpb24gRGlyZWN0RHJhd0VudW1lcmF0ZUV4CgktIGFkZGVkIChvciBjb3JyZWN0ZWQpIGNoZWNrIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBlbnVtZXJhdGlvbiBmdW5jdGlvbnMKCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUJldHRlciBkZXRlY3Rpb24gb2Ygb2xkIChpLmUuIG5vbiBPcGVuR0wgMS4yIGNvbXBsaWFudCkgdmVyc2lvbiBvZiBNZXNhLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzoKCU1hcmN1cyBNZWlzc25lciA8bXNtZWlzc25Ac3R1ZC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIG1pc3NpbmcgPHN5cy90eXBlcy5oPi4KCgkqIGluY2x1ZGUvd2ludXNlci5oOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCUFkZGVkIHRoZSBidXR0b24gc3RhdGVzIGFzIHJldHVybmVkIGJ5IElzRGxnQnV0dG9uQ2hlY2tlZCgpLgoKCSogbG9hZGVyL21vZHVsZS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgcXVvdGVkIGZpbGUgbmFtZXMgaW4gQ3JlYXRlUHJvY2VzcygpLgoKCSogZmlsZXMvZmlsZS5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvbXV0ZXguYywgc2NoZWR1bGVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvZmlsZS5jLCB3aW4zMi9jb25zb2xlLmM6CglDTElFTlRfV2FpdFJlcGx5OiBkb24ndCBjbGVhciBsYXN0IGVycm9yIG9uIHN1Y2Nlc3M7IGZpeGVkIGNhbGxlcnMKCWFjY29yZGluZ2x5IChiYXNlZCBvbiBhIHBhdGNoIGJ5IEp1ZXJnZW4gU2NobWllZCkuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKZXNzIEhhYXMgPGRlc21va2VAaG90bWFpbC5jb20+CglBZGRlZCBzb21lIHN1cHBvcnQgYW5kIHN0dWJzIGZvciBWRVNBIHRvIG1zZG9zL2ludDEwLmMuCgoJKiBvbGUvYmluZGN0eC5jLCBvbGUvZmlsZW1vbmlrZXIuYywgb2xlL2lmcy5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL21vbmlrZXIuYywgb2xlL29sZTIuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGUybmxzLmMsIG9sZS9vbGVjbGkuYywgb2xlL29sZWRsZy5jLCBvbGUvb2xlZm9udC5jLCBvbGUvb2xlb2JqLmMsIG9sZS9vbGVzdnIuYywgb2xlL3NhZmVhcnJheS5jLCBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS90eXBlbGliLmMsIG9sZS92YXJpYW50LmMsIHRvb2xzL2ZudDJiZGYuYywgd2luZG93cy9kaXNwbGF5LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgaW5jbHVkZS9vbGVvYmouaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmgsIGluY2x1ZGUvd2luZS9vYmpfY2xpZW50c2VydmVyLmgsIGluY2x1ZGUvd2luZS9vYmpfY29udHJvbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2RhdGFvYmplY3QuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmUvb2JqX2lucGxhY2UuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmgsIGluY2x1ZGUvd2luZS9vYmpfbWlzYy5oLCBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgaW5jbHVkZS93aW5lL29ial9vbGVmb250LmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHlzdG9yYWdlLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGxpYnJhcnkvd2luZXN0dWIuYywgbWVtb3J5L3N0cmluZy5jLCBtaXNjL3NvdW5kLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgY29udHJvbHMvbWVudS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNb3JlIGluY2x1ZGUgb3B0aW1pc2F0aW9ucyBhbmQgZml4ZXMuCgoJKiBzZXJ2ZXIvcHJvY2Vzcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCW9wZW5fb2JqZWN0IHNob3VsZCByZXR1cm4gRVJST1JfRklMRV9OT1RfRk9VTkQgd2hlbiB0aGUgbmFtZWQgb2JqZWN0CglpcyBub3QgZm91bmQuCgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJQmV0dGVyIGVycm9yIG1lc3NhZ2UuCgoJKiBzY2hlZHVsZXIvQXR0aWMvazMyb2JqLmMsIHNjaGVkdWxlci9NYWtlZmlsZS5pbiwgc2NoZWR1bGVyL2NsaWVudC5jLCBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3N5c2RlcHMuYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jLCBmaWxlcy9jaGFuZ2UuYywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9BdHRpYy9rMzJvYmouaCwgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvdGFzay5jLCBtZW1vcnkvdmlydHVhbC5jLCBtaXNjL3Rvb2xoZWxwLmM6CglVc2Ugc2VydmVyIGhhbmRsZXMgZGlyZWN0bHkgZm9yIFdpbjMyIGhhbmRsZXMuIFJlbW92ZWQgdXNlIG9mIEszMk9CSi4KCgkqIHdpbmRvd3MvZGVmd25kLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvcGVuLmMsIG9iamVjdHMvcmVnaW9uLmMsIG9iamVjdHMvdGV4dC5jLCBvbGUvb2xlZm9udC5jLCBvbGUvb2xlb2JqLmMsIHNjaGVkdWxlci9BdHRpYy9rMzJvYmouYywgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9yZXF1ZXN0LmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9yZWdpc3RlcnMuYywgZ3JhcGhpY3MvZDNkZGV2aWNlcy5jLCBncmFwaGljcy9kM2RleGVjdXRlYnVmZmVyLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2ZvbnQuYywgbG9hZGVyL25lL2NvbnZlcnQuYywgbWlzYy9uZXR3b3JrLmMsIG1pc2MvcG9ydC5jLCBtaXNjZW11L21haW4uYywgbXVsdGltZWRpYS9hdWRpby5jLCBtdWx0aW1lZGlhL2RwbGF5LmMsIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tYXV4LmMsIGNvbnNvbGUveHRlcm0uYywgY29udHJvbHMvbGlzdGJveC5jOgoJRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJLSBmaXhlZCBtaXNzaW5nIHN0ZGxpYi5oIGFuZCBzdHJpbmcuaCBpbmNsdWRlcyBldmVyeXdoZXJlCgktIHJlbW92ZWQgYSBjb3VwbGUgb2YgdW5uZWVkZWQgc3RkbGliLmggYW5kIHN0ZGlvLmggaW5jbHVkZXMKCgkqIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvc3lzZGVwcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wcm9jLmM6CglQcm9jZXNzIGFuZCB0aHJlYWQgaWQgbm93IHVzZSB0aGUgc2VydmVyLXNpZGUgaWQgaW5zdGVhZCBvZiBhbgoJb2JmdXNjYXRlZCBwb2ludGVyLgoKCSogbGlidGVzdC9ndWl0ZXN0LmMsIGxpYnRlc3QvZ3VpdGVzdC5yYywgbGlidGVzdC9ndWl0ZXN0LnJoOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglUaGUgV2luZG93cyBHVUkgYmVoYXZpb3VyIHRlc3RlciB1c2VkIG9uIHRoZSBXaW5kb3dzIGNvbXB1dGVyLiAgSXQgd2FzCgl1c2VkIHdpdGggQm9ybGFuZCBDKysgNC41MiwgYnV0IHNob3VsZCBiZSBlYXN5IHRvIGFkYXB0IHRvIFdpbmVsaWIgYnkKCXdob2V2ZXIgZmVlbHMgbGlrZSBpdDsgSSBoYXZlbid0LCBJIGp1c3QgcmVsZWFzZWQgdGhpcyB1c2VmdWwgdGVzdCBhcHAKCWluIGNhc2UgaXQgd291bGQgYmVuZWZpdCBvdGhlciBkZXZlbG9wZXJzLgoKCSogZG9jdW1lbnRhdGlvbi9ndWk6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVGhpcyBmaWxlIGRldGFpbHMgdGhlIHJlc3VsdHMgKG1lc3NhZ2UgdHJhY2VzKSB0aGUgR1VJIGJlaGF2aW91cgoJdGVzdGVyIGFwcCBnYXZlIHVuZGVyIHJlYWwgV2luZG93cyBmb3IgdmFyaW91cyBldmVudHMuIEl0IHdhcyB1c2VmdWwKCWZvciBzb21lIG9mIG15IGRlYnVnZ2luZyBhdCBsZWFzdCwgcGVyaGFwcyBpdCBjb3VsZCBiZSBvZiBzb21lIHVzZSB0bwoJb3RoZXIgV2luZSBHVUkgZGVidWdnZXJzIGFzIHdlbGwuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9zaWdfY29udGV4dC5oLCBpbmNsdWRlL3dpbm5scy5oLCBtaXNjL3dpbnNvY2suYywgbWlzYy93aW5zb2NrX2Rucy5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtc21laXNzbkBzdHVkLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU29tZSBTb2xhcmlzIGZpeGVzLiA8cmVzb2x2Lmg+IG5lZWRzIDxhcnBhL25hbWVzZXIuaD4sIHNpZ19jb250ZXh0LmgKCW5lZWRzIHRvIGRlZmluZSBIQU5ETEVSX0NPTlRFWFQsIHdjdHlwZS5oIGRvZXMgbm90IGxpa2UgJ3dzcHJpbnRmJwoJZGVmaW5lZCwgbXNkb3MvZHBtaS5jIG5lZWRzICJzdGFja2ZyYW1lLmgiIHRvbywgYW5kIG11bHRpbWVkaWEvZHNvdW5kLmMKCW5lZWRzICJ3aW51c2VyLmgiLgoKCSogd2luMzIva2VybmVsMzIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglHZXRCaW5hcnlUeXBlW0FXXSBtb3ZlZCB0byBsb2FkZXIvbW9kdWxlLmMsIG1vZGlmaWVkIHRvIHJlY29nbml6ZSAuQ09NCglhbmQgLlBJRiBmaWxlcy4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1pc2NlbXUvbWFpbi5jLCBtc2Rvcy9kcG1pLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgbG9hZGVyL21haW4uYywgbG9hZGVyL3BlX2ltYWdlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkYXB0ZWQgdG8gQ3JlYXRlUHJvY2VzcyBjaGFuZ2VzLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglORSBtb2R1bGVzIGFkYXB0ZWQgdG8gQ3JlYXRlUHJvY2VzcyBjaGFuZ2VzLgoJTG9hZE1vZHVsZTE2L0xvYWRMaWJyYXJ5MTYgcmVvcmdhbml6YXRpb24uCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvcHJvY2Vzcy5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVByb2Nlc3MgY3JlYXRpb24gc2VxdWVuY2UgcmVvcmdhbml6ZWQ6CgktIFJlbW92ZWQgaW5zdGFuY2UgZGF0YSBzZWdtZW50IGZvciBhbGwgYnV0IE5FIG1vZHVsZXMuCgktIENoZWNrIGJpbmFyeSB0eXBlIGluIENyZWF0ZVByb2Nlc3MgYmVmb3JlIGxvYWRpbmcgbW9kdWxlLgoJLSBVbml4IHByb2Nlc3MgY3JlYXRpb24gbW92ZWQgZnJvbSBXaW5FeGVjIHRvIENyZWF0ZVByb2Nlc3MuCgktIEJ1Z2ZpeDogZmlsbCBpbiB0aGRiLT50ZWIuaHRhc2sxNiBtZW1iZXIgY29ycmVjdGx5LgoKCSogd2luZG93cy9pbnB1dC5jOiBHdXkgQWxiZXJ0ZWxsaSA8Z2FsYmVydGVAbmVvLmxydW4uY29tPgoJLSBDb2RlIHRvIHJldHVybiBkZWZhdWx0IGxhbmd1YWdlIGNvZGUgYXMga2V5Ym9hcmQgbGF5b3V0LgoJLSBJbXBsZW1lbnRlZCBvdGhlciBzdHVicyBhc3NvY2lhdGVkIHdpdGgga2V5Ym9hcmQgbGF5b3V0OgoJICBHZXRLZXlib2FyZExheW91dE5hbWVBLCBBY3RpdmF0ZUtleWJvYXJkTGF5b3V0LAoJICBMb2FkS2V5Ym9hcmRMYXlvdXRbQVddLCBHZXRLZXlib2FyZExheW91dExpc3QuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS9yZXNvdXJjZS5oLCBtaXNjL0F0dGljL2NvbW1kbGcuYywgcmVzb3VyY2VzL3N5c3Jlc19Fbi5yYzoKCUtsYWFzIHZhbiBHZW5kIDxrbGFhc0B2YW5nZW5kLmRlbW9uLm5sPgoJUHJlbGltaW5hcnkgaW1wbGVtZW50YXRpb24gb2YgdGhlIFByaW50RGxnQSBzdHViLgoKCSogb2xlL25scy9ubGQubmxzOiBLbGFhcyB2YW4gR2VuZCA8a2xhYXNAdmFuZ2VuZC5kZW1vbi5ubD4KCU5vdyBjb21wbGlhbnQgdG8gdGhlIER1dGNoIHN0YW5kYXJkcy4KCgkqIHdpbmRvd3Mvd2luLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRklORF9XbmRQdHIgc2hvdWxkIG5vdCBzZXQgRVJST1JfSU5WQUxJRF9XSU5ET1dfSEFORExFIHdoZW4gaFduZD0wLgoKCSogbXNkb3MvZG9zbWVtLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgYSBjb3VwbGUgb2YgZG9zbWVtIGJsb2NrIHJlc2l6ZSBidWdzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIG5vIG1vcmUgM0QgY2FwYWJpbGl0aWVzIGlmIERpcmVjdDNEIHN1cHBvcnQgaXMgbm90IGNvbXBpbGVkIGluCgktIHNvbWUgZGVidWcgbWVzc2FnZXMgY2xlYW4tdXAgKHJlcGxhY2VkIGZwcmludGZzIGJ5IERVTVBzKQoKCSogbWlzYy9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2UgZ290IHBhc3NlZCBhIE5VTEwgRGlhbGVjdCBwdHIgYW5kIGFjY2Vzc2VkIGl0IHVucHJvdGVjdGVkLgoKCSogc2VydmVyL2ZpbGUuYywgc2VydmVyL21hcHBpbmcuYywgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIG1lbW9yeS92aXJ0dWFsLmM6CglBZGRlZCBzdXBwb3J0IGZvciBtYXBwaW5ncyB3aXRoIG5vIGFzc29jaWF0ZWQgZmlsZS4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL3Byb2Nlc3MuaCwgc2NoZWR1bGVyL2NsaWVudC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCVJlbW92ZWQgZHN0X2hhbmRsZSBpbiBkdXBsaWNhdGVfaGFuZGxlIHJlcXVlc3QuCglBZGRlZCBpbmhlcml0IGZsYWcgaW4gY3JlYXRlX21hcHBpbmcgcmVxdWVzdC4KCgkqIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS93aW5lL29ial9vbGVhdXQuaCwgb2xlL3NhZmVhcnJheS5jLCBvbGUvdmFyaWFudC5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgc3VwcG9ydCBmb3IgYXJyYXlzIGFuZCBzYWZlIGFycmF5cyBpbiBWQVJJQU5UIGRhdGEKCXN0cnVjdHVyZXMuIEFsc28gbW92ZWQgdGhlIFNBRkVBUlJBWSBkZWZpbml0aW9uICh5ZXQgYWdhaW4pIHRvIHRoZQoJb2JqX29sZWF1dC5oIGZpbGUuCgoJKiB3aW5lLmluaTogQW5kcmVhcyBNb2hyIDxjaXBhbTg5NUBjaXAxLmluZC51bmktc3R1dHRnYXJ0LmRlPgoJRml4ZWQgRmlsZXN5c3RlbSBkb2N1bWVudGF0aW9uLgoKCSogaW5jbHVkZS9iaXRtYXBzL0F0dGljL29ibV9mb2xkZXIsIGluY2x1ZGUvYml0bWFwcy9BdHRpYy9vYm1fZm9sZGVyMjoKCVBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CglNYWRlIGZvbGRlciBpY29ucyBncmF5LXllbGxvdyBpbnN0ZWFkIG9mIGJsdWUuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJT3JkZXIgb2Ygc2VuZCBtZXNzYWdlIHByb2Nlc3Npbmcgd2FzIG5vdCByZXNwZWN0ZWQgYW5kIHRoZSBtZXNzYWdlCglzdGFja2VkIGxhc3QgZmluaXNoZWQgYWZ0ZXIgdGhlIG1lc3NhZ2Ugc3RhY2tlZCBmaXJzdC4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIGNoZWNrcyB0byBndWFyZCBhZ2FpbnN0IE5VTEwgYWN0aXZlIHdpbmRvdy4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE5vcm1hbiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCURvbid0IGNoZWNrIGNoaWxkcmVuIG9mIGRpc2FibGVkIG9yIGludmlzaWJsZSBjb250cm9scyBmb3IgZGlhbG9nCglrZXlib2FyZCBhY2NlbGVyYXRvcnMuIEZpeGVzIHByb2JsZW1zIHdpdGggZGlhbG9ncyB3aXRoIHRhYiBib3hlcy4KCgkqIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBDb1Rhc2tNZW1SZWFsbG9jIEFQSS4gQWxzbyBjbGVhbi11cCBhcm91bmQgdGhhdCBBUEkKCWNhbGwuCgoJKiBvbGUvc3RvcmFnZTMyLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBtaXNzaW5nIFJlbGVhc2UuCglTVEdNX0NSRUFURSBzaG91bGQgdHJhbnNsYXRlIHRvIENSRUFURV9BTFdBWVMuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZyaSBGZWIgMjYgMTI6MzM6MjEgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIERFVkVMT1BFUlMtSElOVFM6IFVwZGF0ZWQgZm9yIG5ldyBuYW1pbmcgY29udmVudGlvbnMuCgoJKiAqLyo6IExhcmdlLXNjYWxlIHJlbmFtaW5nIG9mIGFsbCBXaW4zMiBmdW5jdGlvbnMgYW5kIHR5cGVzIHRvCiAJdXNlIHRoZSBzdGFuZGFyZCBXaW5kb3dzIG5hbWVzLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaHUgRmViIDI1IDE4OjExOjQwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL21haW4uYzogQWxiZXJ0IGRlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJRm9yIHZhcmlvdXMgcmVhc29ucyBzb21lIG9mIG91ciBsaWJ3aW5lIGV4ZWN1dGFibGVzIG11c3QgaGF2ZSBhICIuIiBpbgoJdGhlaXIgZmlsZSBuYW1lcy4gVGhlICIuIiBjYXVzZXMgdHJvdWJsZSB3aGVuIHRoZSBmaWxlIG5hbWUgaXMgdXNlZCBhcwoJdGhlIGNsYXNzIG5hbWUgZm9yIGFuIFggcmVzb3VyY2UgYXMgd2luZSBkb2VzIGZvciBjb21tYW5kIGxpbmUgcGFyc2luZwoJdW5kZXIgWC4KCgkqIHdpbmRvd3Mvd2luLmM6CglNYWtlIEdldFdpbmRvd0xvbmcoR1dMX0hXTkRQQVJFTlQpIHJldHVybiB0aGUgc2FtZSB0aGluZyBhcwoJR2V0UGFyZW50MzI7IHN1Z2dlc3RlZCBieSBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4uCgoJKiBpbmNsdWRlL2dkaS5oLCBpbmNsdWRlL2hlYXAuaCwgaW5jbHVkZS93aW50eXBlcy5oOgoJRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJQWRkZWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpIG9uIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGRlY2xhcmVkIGluCgloZWFkZXIgZmlsZXMuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHM6IEFkYW0gdGhlIEphenogR3V5IDxtYWdpY2JveEBiZXN0d2ViLm5ldD4KCUFkZGVkICJUaGUgRWFzeSBXYXkiIGFuZCAiVGhlIEhhcmQgV2F5IiwgbGFyZ2VseSBmYXZvcmluZyB0aGUgZWFzeSB3YXksCgl3aGljaCB1c2VzIG15IGJ1Z19yZXBvcnQucGwgc2NyaXB0LgoJQWRkZWQgaW5mbyBvbiBhIGNvbW1hbmQgdGhhdCBjYW4gYmUgcnVuIG9uIGFsbCBzaGVsbHMgdG8gcHJpbnQgZGVidWcKCW1zZ3MgdG8gYSBmaWxlIGFuZCBub3QgdG8geHRlcm0uCgoJKiBtc2Rvcy9kcG1pLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1zbWVpc3NuQHN0dWQuaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglOZWVkcyB0aHJlYWQuaCBmb3Igbm9uLUxpbnV4LgoKCSogaW5jbHVkZS93aW4uaCwgd2luZG93cy93aW4uYzoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUFkZGluZyBvZiBuZXcgZnVuY3Rpb25zIHRvIG1ha2UgdGhlIHduZCBzdHJ1Y3QgdGhyZWFkIHNhZmUuIEFkZGluZyBvZgoJaXJlZkNvdW50IGluIHduZCBzdHJ1Y3QuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgY29uc29sZS9uY3Vyc2VzLmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglBZGRlZCBjb25maWd1cmUgY2hlY2sgZm9yIGdldGJrZ2QgYW5kIGRlZmluZSBIQVZFX0dFVEJLR0QuCgoJKiBpbmNsdWRlL29jaWRsLmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NhY2hlLmgsIGluY2x1ZGUvd2luZS9vYmpfY29ubmVjdGlvbi5oLCBpbmNsdWRlL3dpbmUvb2JqX2NvbnRyb2wuaCwgaW5jbHVkZS93aW5lL29ial9pbnBsYWNlLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgb2xlL29sZWZvbnQuYzoKCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJTWFueSBpbnRlcmZhY2UgZGVjbGFyYXRpb25zIHRoYXQgb3JpZ2luYXRlZCBmcm9tIG9sZWlkbC5oLCBvYWlkbC5oIGFuZAoJb2NpZGwuaCBzZXBhcmF0ZWQgaW50byBzb21ld2hhdCByZWxldmFudCBvYmpfKiBmaWxlcy4KCgkqIGZpbGVzL2RyaXZlLmMsIG9sZS9jb21wb2JqLmMsIHJlc291cmNlcy9zeXNyZXMuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglGaXhlZCB3YXJuaW5nIGFuZCBjb21waWxhdGlvbiBlcnJvcnMuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDogTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCVJlbW92ZWQgaW5jbHVkZXMgb2Ygd2luZS8qIGhlYWRlcnMuCgoJKiBsb2FkZXIvcmVzb3VyY2UuYzogUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCU1hZGUgbWVzc2FnZSAiUmVzb3VyY2Ugbm90IGZvdW5kIiBXQVJOLgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGluY2x1ZGUvc2hsb2JqLmg6CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAQ09SRUwuQ0E+CgktIFVzZSB0aGUgbmV3IENPTSBkZWZpbml0aW9uIG1hY3JvcyBpbiB0aGUgaGVhZGVyLgoJLSBQdXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBvYmplY3QgaW4gdGhlIGNvbnRtZW51LmMuCgktIE1ha2UgYXBwcm9wcmlhdGUgbmFtZSBjaGFuZ2VzIGluIGNvbnRtZW51LmMuCgoJKiBtaXNjL3JlZ2lzdHJ5LmMsIGluY2x1ZGUvd2lucmVnLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJWnlnbyBCbGF4ZWxsIDx6eWdvYkBjb3JlbC5jYT4KCU1vZGlmaWVzIHBhcmFtZXRlciBsaXN0IG9mIGEgY291cGxlIG9mIGZ1bmN0aW9ucyB0byBjb21wbHkgd2l0aCBTREsuCgoJKiB3aW5kb3dzL3Njcm9sbC5jOiBQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJU2Nyb2xsREMzMiBtb2RpZmllZCB0byByZXR1cm4gcmVjdCBpbiBsb2dpY2FsIGNvb3JkaW5hdGUuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX29sZWF1dC5oOiBBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAQ09SRUwuQ0E+CglBZGRzIEMrKyBuYW1lbGVzcyB1bmlvbiBzdXBwb3J0IHRvIHRhZ1ZBUklBTlQuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvb2FpZGwuaCwgaW5jbHVkZS9vbGVhdXRvLmg6CglBZHJpYW4gVGh1cnN0b24gPGFkcmlhbnRAQ09SRUwuQ0E+CglNb3ZlZCBzb21lIGRlZmluaXRpb25zIG91dCBvZiBvbGVhdXRvLmggYW5kIGludG8gb2FpZGwuaCB0byBjb25mb3JtIHRvIHRoZSBTREsuCglSZW1vdmVkIGEgcmVkdW5kYW50IGluY2x1ZGUuCglBZGRlZCBzb21lIGMrKyBwcm90ZWN0aW9uLgoKV2VkIEZlYiAyNCAxNTo1ODo1MSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGFuZ2VkIHBpZGwgc3RydWN0dXJlIHRvIG1hdGNoIHRoZSBwaWRsJ3MgdXNlZCBpbiBsbmstZmlsZXMuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIHJlYWRpbmcgb2YgKi5sbmstZmlsZXMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX3NoZWxsbGluay5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgluZXcgZmlsZSwgaW5jbHVkaW5nIHRoZSBJU2hlbGxMaW5rIGRlZmluaXRpb24uCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9lbGYuYywgbG9hZGVyL21haW4uYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBsb2FkZXIvdGFzay5jLCBzY2hlZHVsZXIvdGhyZWFkLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCU1vZGlmaWVkIHByb2Nlc3MgY3JlYXRpb24gc2VxdWVuY2U6IGNhbGwgUEVfQ3JlYXRlTW9kdWxlIGluIHRoZQoJY29udGV4dCBvZiB0aGUgbmV3IHByb2Nlc3MgKGluIFRBU0tfQ2FsbFRvU3RhcnQpLgoJQ2hhbmdlZCBhbGwgUEUvTW9kdWxlIHJvdXRpbmVzIHNvIGFzIHRvIGFsd2F5cyBvcGVyYXRlIG9uIHRoZSBjdXJyZW50Cglwcm9jZXNzOyBhZGFwdGVkIGFsbCBjYWxsZXJzLgoKCSogbXNkb3MvZG9zY29uZi5jLCBtc2Rvcy9kb3NtZW0uYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQxNi5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyYS5jLCBtc2Rvcy9pbnRlcnJ1cHRzLmMsIG1zZG9zL2lvcG9ydHMuYywgbXNkb3MvdnhkLmMsIG1zZG9zL3htcy5jLCBvbGUvc3RvcmFnZS5jLCBvbGUvdHlwZWxpYi5jLCBwcm9ncmFtcy9hdml0b29scy9pY2luZm8uYywgcmVsYXkzMi9yZWxheTM4Ni5jLCB0b29scy9idWlsZC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2lucHV0LmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBsb2FkZXIvbWFpbi5jLCBtZW1vcnkvYXRvbS5jLCBtaXNjL2xzdHIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJT3B0aW1pemVkIGF3YXkgbW9yZSBpbmNsdWRlcywgcmVhZGRlZCBzb21lICNpbmNsdWRlcyBmb3IgbmVjZXNzYXJ5Cglwcm90b3R5cGVzLgoKCSogbXNkb3MvaW50MmYuYzogPHNtaWxAbWVjaGF0cm9uaWthLmh1PgoJQWRkZWQgbG93LWxldmVsIE5ldHdhcmUgaW5zdGFsbGF0aW9uIGNoZWNrLgoKCSogaW5jbHVkZS9jb25zb2xlLmgsIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUvbmN1cnNlcy5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGRlZCBHZXRCYWNrZ3JvdW5kQ29sb3IgY2FsbCB0byB0aGUgY29uc29sZSBzdHJ1Y3QuIFdpbGwgYmUgdXNlZAoJbGF0ZXIuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUJ1Z2ZpeGVzIGZvciBJTlQgMTAvMEIgKFNldEJhY2tncm91bmRDb2xvcikgdG8gd29yayBwcm9wZXJseS4KCShJbnRlcnJ1cHQgbGlzdCBkaWQgbm90IGhhdmUgY29ycmVjdC4pCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIHN0dWJzIGZvciB0d28gbWlzc2luZyBtZXRob2RzIG9mIERJbnB1dC4KCgkqIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmM6IFRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYSBidWcuCgoJKiBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaDogVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBzdXBwb3J0IGZvciBsYXJnZXIgZmlsZXMuCgoJKiBvYmplY3RzL2RpYi5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVzIGJ1ZmZlciBvdmVycnVuIHByb2JsZW1zIHdpdGggR2V0RElCaXRzLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IFN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgc29tZSBTZW5kTWVzc2FnZSBidWdzLgoKCSogb2xlL2NvbXBvYmouYzogU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJRml4IENPTV9FeHRlcm5hbExvY2tGcmVlTGlzdCB0byBkbyBub3QgZmFpbCB3aXRoIGFuIGVtcHR5IGxpc3QuCgpNb24gRmViIDIyIDEwOjIxOjU2IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL01ha2VmaWxlLmluLCBtaXNjL3N0cmluZy5jOgoJWnlnbyBCbGF4ZWxsIDx6YmxheGVsbEBmdXJyeXRlcnJvci5vcmc+CglJbXBsZW1lbnRlZCBzb21lIENSVERMTCBzdHJpbmcgZnVuY3Rpb25zLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2xpbmVkZGEuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3RleHQuYywgd2luZG93cy9jYXJldC5jLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL2tleWJvYXJkLmMsIHdpbmRvd3MvbWRpLmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy9tdWx0aW1vbi5jLCB3aW5kb3dzL3JlY3QuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy90aW1lci5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW5wcm9jLmMsIGluY2x1ZGUvbWVudS5oLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvc3lzbWV0cmljcy5oLCBpbmNsdWRlL3Zmdy5oLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9kc291bmQuYywgbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvam95c3RpY2suYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXN0cmluZy5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbWF1eC5jLCBtdWx0aW1lZGlhL21taW8uYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBtdWx0aW1lZGlhL3RpbWUuYywgb2JqZWN0cy9jdXJzb3JpY29uLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgbW9yZSByZWN1cnNpdmUgaW5jbHVkZSBmaXhlcy9vcHRpbWl6YXRpb25zLgoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgktIGVsaW1pbmF0ZWQgb25lIGVsZW1lbnQgb2YgdGhlIHBpZGwgc3RydWN0IChkd1NGR0FPKQoJLSBjaGFuZ2VkIHNvbWUgc3VwZXJmbG91cyBGSVhNRQoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL3dpbmUvb2JqX2RyYWdkcm9wLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gaGVhZGVyIHVzZXMgdGhlIGxhc3QgbWFjcm9zIG5vdwoJLSByZXdyb3RlIElEcm9wVGFyZ2V0IGFjY29yZGluZyB0byB0aGUgbmV3IENPTSBoZWFkZXJzCgkgICh3YXMgbG9jYWwgZGVjbGFyZWQgbm90IHVzaW5nIHRoZSBhbHJlYWR5IHdyaXR0ZW4gcHJvdG90eXBlcykKCS0gY29ycmVjdGVkIERyb3AgbWV0aG9kICh3cm9uZyBwYXJhbWV0ZXIgY291bnQpCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVwZGF0ZWQgdG8gdXNlIHRoZSBsYXRlc3QgQ09NIG1hY3JvcywgSUNPTV9WVEFCTEUgYW5kIElDT01fVEhJUy4KCUFkZGVkIHRoZSBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gc3RydWN0dXJlcy4KCUkgcmVtZW1iZXJlZCBmcm9tIGFuIGVtYWlsIHRoYXQgZXZlbiB3aGVuIGFza2VkIGZvciBhCglJRGlyZWN0SW5wdXREZXZpY2VBIHdoYXQgd2FzIHJldHVybmVkIHdhcyBhbiBJRGlyZWN0SW5wdXREZXZpY2UyQSBzbyBJCgljb25zaWRlcmVkIHRoYXQgd2Ugd291bGQgb25seSBpbXBsZW1lbnQgdGhlIGxhdHRlci4gVGhlCglJRGlyZWN0SW5wdXREZXZpY2VBX3h4eCBtZXRob2RzIGhhdmUgYmVlbiByZW5hbWVkIHRvCglJRGlyZWN0SW5wdXREZXZpY2UyQV94eHgsIGFuZCB3ZSBhbHdheXMgcmV0dXJuIG91ciBJRGlyZWN0SW5wdXREZXZpY2UyQQoJaW1wbGVtZW50YXRpb24gYXMgYmVmb3JlLgoJUmVuYW1lZCB0aGUgaW1wbGVtZW50YXRpb24gc3RydWN0dXJlcyB0byBYeHhJbXBsLgoKCSogaW5jbHVkZS9kaW5wdXQuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglVc2UgbGF0ZXN0IENPTSBtYWNyb3MKCURlZmluZWQgdGhlIElEaXJlY3RJbnB1dERldmljZUEgaW50ZXJmYWNlIGluZGVwZW5kZW50bHkgZnJvbQoJSURpcmVjdElucHV0RGV2aWNlMkEuCglSZW1vdmVkIHRoZSAzMiBzdWZmaXggb2YgdGhlIGludGVyZmFjZXMuIEhvcGVmdWxseSB0aGlzIHdpbGwgbm90CgljYXVzZSBhbnkgcHJvYmxlbSB3aXRoIHRoZSByZW5hbWluZy4KCU1vdmVkIHRoZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBzdHVmZiB0byBkaW5wdXQuYyAod2VsbCwgdGhlCglpbnRlcmZhY2VzIGF0IGxlYXN0KS4KClN1biBGZWIgMjEgMTg6MzU6MjggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNkZXBzLmMsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3RocmVhZC5oOgoJQ2hhbmdlZCBpbml0aWFsIHByb2Nlc3MgY3JlYXRpb24gdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb25zLgoJUmVtb3ZlZCBhIGZldyB1bnVzZWQgZmllbGRzIGluIFBEQiBhbmQgVEhEQi4KCgkqIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJUmVtb3ZlZCB0aHJlYWQgcXVldWUgZnVuY3Rpb25zLgoJQ2hhbmdlZCBpbml0aWFsIHRocmVhZCBjcmVhdGlvbiB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbnMuCglNb3ZlZCBzZXJ2ZXIgc3RhcnR1cCB0byBUSFJFQURfQ3JlYXRlSW5pdGlhbFRocmVhZC4KCgkqIHNjaGVkdWxlci9zeW5jaHJvLmM6CglSZW1vdmVkIHVzZSBvZiBwZXItdGhyZWFkIHdhaXRfc3RydWN0LCBjbGVhbmVkIHVwIGEgYml0LgoKCSogc2NoZWR1bGVyL2szMm9iai5jLCBtZW1vcnkvdmlydHVhbC5jOiBSZW1vdmVkIE1FTV9NQVBQRURfRklMRV9PcHMuCgoJKiBpbmNsdWRlL3dpbm50Lmg6IEFkZGVkIGEgZmV3IGV4Y2VwdGlvbiBjb2Rlcy4KCgkqIHdpbmRvd3Mvd2luLmMsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9wYXRoLmgsIGluY2x1ZGUvcHJvZ3Jlc3MuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3Jlc291cmNlLmgsIGluY2x1ZGUvc3RydWN0MzIuaCwgaW5jbHVkZS91cGRvd24uaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2lucG9zLmgsIGxvYWRlci9tYWluLmMsIG1pc2MvY29tbWRsZy5jLCBtaXNjL3dpbnNvY2tfZG5zLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgaW5jbHVkZS9jdXJzb3JpY29uLmgsIGluY2x1ZGUvZGRlX2F0b20uaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2Rpc3BkaWIuaCwgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9kc291bmQuaCwgY29udHJvbHMvbWVudS5jOgoJTWljaGFlbCBWZWtzbGVyIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCS0gRml4IGhlYWRlcnMgdG8gaW5jbHVkZSBsZXNzIG9yIHNtYWxsZXIgaGVhZGVyIGZpbGVzLgoJLSBGaXggaGVhZGVyIGFuZCBzb3VyY2UgZmlsZXMgdG8gaW5jbHVkZSBtaXNzaW5nIGhlYWRlciBmaWxlcyB0byBhdm9pZAoJICB3YXJuaW5ncyBhbmQgZXJyb3JzLgoKCSogbG9hZGVyL3NpZ25hbC5jLCBtZW1vcnkvbGR0LmMsIG1pc2MvcG9ydC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2UgImciIChnZW5lcmFsIHJlZ3MpIGludG8gInIiIChoYXJkcmVncykgaW4gY2xvbmUgLyBtb2RpZnlfbGR0IC8KCXdpbmVfc2lnYWN0aW9uIF9fUElDX18gY2FzZXMsIHNpbmNlICJnIiB3aWxsIG5vdCB3b3JrIHdpdGgKCS1mb21pdC1mcmFtZS1wb2ludGVyICgiZyIgaXMgcmVmZXJlbmNlZCB1c2luZyAlZXNwIHdoaWNoIHdhcwoJaW52YWxpZGF0ZWQgYmVmb3JlKS4gQnVnIGZvdW5kIGFuZCAob3RoZXIpIGZpeCBzdWdnZXN0ZWQgYnkKCTxkYW5pZWxAbWF0LnV0ZnNtLmNsPiBEYW5pZWwgU2VycGVsbC4KCgkqIG9sZS9vbGVmb250LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBXSU5BUElzLgoKCSogd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCBsb2FkZXIvdGFzay5jLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2Lmg6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeCBwcm9ibGVtIHdoZXJlIHlvdSBuZWVkIG1vdXNlIGFjdGl2aXR5IHRvIHVubG9jayBzb21lIDE2IGJpdHMKCXRocmVhZCB3aXRoIG11bHRpLXRocmVhZGVkIGFwcHMuCgpTYXQgRmViIDIwIDE2OjQ4OjU0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL29sZWF1dDMyLnNwZWMsIGluY2x1ZGUvQXR0aWMvaW50ZXJmYWNlcy5oLCBpbmNsdWRlL29haWRsLmgsIGluY2x1ZGUvb2NpZGwuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvb2xlY3RsLmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlYXV0LmgsIGluY2x1ZGUvd2luZS9vYmpfb2xlZm9udC5oLCBpbmNsdWRlL3d0eXBlcy5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9ndWlkLmMsIG9sZS9vbGUyZGlzcC5jLCBvbGUvb2xlZm9udC5jLCBvbGUvdHlwZWxpYi5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIE9sZUNyZWF0ZUZvbnRJbmRpcmVjdCBtZXRob2QgYW5kIHRoZSBhc3NvY2lhdGVkIENPTQoJb2JqZWN0LiBUaGF0IG9iamVjdCBzdXBwb3J0cyB0aGUgSUZvbnQgYW5kIElEaXNwYXRjaCBpbnRlcmZhY2VzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIG1pc2MvcG9ydC5jLCBtaXNjL3dpbnNvY2suYywgbWlzYy93aW5zb2NrX2Rucy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglQcm9ibGVtcyByZXBvcnRlZCBieSBEb25hbGQgUGFnZSwgUFIgMTA1LTEwNy4KCgkqIGNvbnNvbGUvbmN1cnNlcy5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCU1vcmUgY29tbWVudGluZywgYmV0dGVyIGRlYnVnZ2luZyBvZiBjb2xvciBwcm9ibGVtcywgYW5kIHN1cHBvcnQgZm9yCgl0aGUgbmV3IFRlcm1pbmFsVHlwZSBvcHRpb24gaW4gd2luZS5pbmkuIFRoaXMgYWxsb3dzIHVzIHRvIHNlbGVjdAoJd2hpY2ggdGVybWluYWwgdHlwZSB3ZSBhcmUgcmVhbGx5IHVzaW5nIHNvIHRoYXQgd2UgY2FuLCBmb3IgZXhhbXBsZSwKCXVzZSBpdHMgY29sb3IgY2FwYWJpbGl0aWVzLgoKCSogY29uc29sZS9pbnRlcmZhY2UuYywgaW5jbHVkZS9jb25zb2xlLmg6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCVN1cHBvcnQgZm9yIHRoZSBuZXcgSW5pdGlhbFJvd3MgYW5kZiBJbml0aWFsQ29sdW1ucyBvcHRpb25zIGluIHdpbmUuaW5pCgkoR2VuZXJpYyByZXBsYWNlbWVudCBmb3IgWHRlcm1SZXNvbHV0aW9uIG9wdGlvbi4uLikKCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJRml4ICpEVUgqIHByb2JsZW0gY2F1c2luZyBsb3RzIGFuZCBsb3RzIG9mIHVubmVjZXNzYXJ5IEFsbG9jQ29sb3IgZXJyb3JzLgoKCSogY29uc29sZS94dGVybS5jOiBKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCVJlbW92YWwgb2Ygb2Jzb2xldGUgWHRlcm1SZXNvbHV0aW9uIG9wdGlvbi4KCgkqIGRvY3VtZW50YXRpb24vY29uc29sZSwgd2luZS5pbmk6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3IHdpbmUuY29uZiBvcHRpb25zLgoKCSogZGVidWdnZXIvc3RhY2suYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBiYWNrdHJhY2sgaXNzdWUgb24gMTZiaXQgY29kZS4KCgkqIGRlYnVnZ2VyL21zYy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgTG9jYXRlRGVidWdJbmZvRmlsZSB0byByZWR1Y2Ugc3RhY2sgY29uc3VtcHRpb24gKGZyb20gMTNrIHRvIDJrICEhKQoKCSogZGVidWdnZXIvaW5mby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGNvbW1lbnQgZm9yIFdpbmUgZG9jdW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBnZXQvc2V0X2hhbmRsZV9pbmZvIHJlcXVlc3QuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglGaXhlZCBlbmQtb2YtbGluZSBidWcgaW4gWDExRFJWX0RJQl9TZXRJbWFnZUJpdHNfUkxFNC4KCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy93cmMuaCwgdG9vbHMvd3JjL3dyY3R5cGVzLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUZpeCBhIGNvdXBsZSBvZiA2NGJpdCBwbGF0Zm9ybSBwcm9ibGVtcyBhbmQgc3BlZWQgdXAgY29tcGlsYXRpb24uIFNlZQoJdG9vbHMvd3JjL0NIQU5HRVMgZm9yIGRldGFpbHMuCgoJKiBtdWx0aW1lZGlhL21taW8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgltbWlvRGVzY2VuZDogZGVidWdvdXRwdXQgZW5oYW5jZWQsIEZJTkRMSVNUL0ZJTkRSSUZGIHNob3VsZCBDaGVjayB0aGUKCWNvcnJlY3QgY2tpZCAoTElTVC9SSUZGKSB0b28uICh2ZXJpZmllZCBhZ2FpbnN0IG1jaWF2aTMyLmRsbCkKCgkqIE1ha2VmaWxlLmluOiBaeWdvIEJsYXhlbGwgPHpibGF4ZWxsQGZ1cnJ5dGVycm9yLm9yZz4KCUFkZGVkIGEgY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2Ygd2luZS5zeW0gYmVmb3JlIGluc3RhbGxpbmcgaXQuCgoJKiBpbmNsdWRlL29sZTIuaCwgb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgc29tZSBuZXcgc3R1YnMgZm9yIHRoZSBPTEUgbWVudSBkZXNjcmlwdG9yIG1ldGhvZHMuCgpGcmkgRmViIDE5IDE2OjUwOjI0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3F1ZXVlLmM6IE1hcnRpbiBXYWxrZXIgPG13YWxrZXJAY2FjaS5jby51az4KCUZpeGVkIG1lc3NhZ2UgZmlsdGVyaW5nIGNoZWNrLgoKCSogcmVsYXkzMi9hZHZhcGkzMi5zcGVjLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvbnRkbGwvbnQuYywgZGxscy9udGRsbC9ydGwuYywgaW5jbHVkZS9udGRkay5oLCBpbmNsdWRlL250ZGVmLmgsIGluY2x1ZGUvbnRkbGwuaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnJlZy5oLCBvbGUvb2xlb2JqLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gbWFkZSB0aGUgc2VjdXJpdHkgZnVuY3Rpb25zIGNvbnNpc3RlbnQuIGFkdmFwaSBjYWxscyBkb3duIHRvIG50ZGxsIG5vdwoJLSBuZXcgU2V0U2VjdXJpdHlEZXNjcmlwdG9yR3JvdXAsICBTZXRTZWN1cml0eURlc2NyaXB0b3JPd25lciwKCSAgU2V0U2VjdXJpdHlEZXNjcmlwdG9yU2FjbCwgR2V0U2VjdXJpdHlEZXNjcmlwdG9yRGFjbAoJLSBudC1oZWFkZXIgY2xlYW51cAoKCSogZGxscy9udGRsbC9ydGwuYywgaWYxNjMyL2J1aWx0aW4uYywgbWlzYy9jcHUuYywgd2luMzIva2VybmVsMzIuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZWQgYSBmZXcgYnJva2VuIGluY2x1ZGVzLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogUmV2ZXJ0ZWQgYnJva2VuIGNsb3NlIGJ1dHRvbiBjaGFuZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvc2hlbGwzMi9jb250bWVudS5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBncmFwaGljcy9wYXRoLmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgdG9vbHMvd3JjL25ld3N0cnVjLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9lZGl0LmMsIGNvbnRyb2xzL3dpZGdldHMuYywgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jOgoJSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAcG9ib3guY29tPgoJQWRkZWQgbWlzc2luZyBzdHJpbmcuaCBpbmNsdWRlLgoKCSogbG9hZGVyL25lL21vZHVsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJT25seSBhcHBlbmQgLmRsbCBpZiBubyBleHRlbnNpb24geWV0LgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVRlbXBvcmFyeSBmaXggc3VnZ2VzdGVkIGJ5IFVscmljaCB0byBhbGxvdyB0aGUKCU1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdCBtZXRob2QgdG8gYmUgY2FsbGVkIGZyb20gMTYgYml0IHRocmVhZHMuCgoJKiB3aW5kb3dzL3dpbnByb2MuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglJbml0aWFsaXplZCByZXR1cm4gdmFsdWUgb2YgMTYtPjMyIGNvbnZlcnNpb24gb2YgV01fTURJR0VUQUNUSVZFIGluCgljYXNlIGl0J3Mgc2VudCB0byBhIHdpbmRvdyB0aGF0IGRvZXNuJ3QgaGFuZGxlIGl0IChpLmUuIG5vdCBNREkKCWNsaWVudCkuCgoJKiBpbmNsdWRlL2RjZS5oLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3dpbnBvcy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBleHRyYSBjaGlsZCBhcmd1bWVudHMgdG8gRENFX0dldFZpc1JnbigpIHRvIGJlIGFibGUgdG8gaGFuZGxlCglQQVJFTlREQyBjbGFzcyBzdHlsZSBjb21iaW5lZCB3aXRoIENMSVBDSElMRFJFTiB3aW5kb3cgc3R5bGUsIHRvCglwcmV2ZW50IG1pcy1yZWRyYXdzIGluIEZyZWUgQWdlbnQgMTYtYml0LgoKCSogZGxscy92ZXJzaW9uL2luZm8uYzogTGF3c29uIEEuIFdoaXRuZXkgPGxhd3Nvbl93aGl0bmV5QGp1bm8uY29tPgoJRG9uJ3QgaGFuZyBvbiB0aGUgbGFzdCBjaGlsZCBpZiBpdCdzIG5vdCB3YW50ZWQuCgoJKiB3aW4zMi9rZXJuZWwzMi5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6IElhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCVBhcnRpYWwgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiB1bmRvY3VtZW50ZWQgS0VSTkVMIHJvdXRpbmUgUEsxNkZORiwKCW5lZWRlZCBieSBXaW45OCBFWFBMT1JFUi4gVGhhbmtzIHRvIFVscmljaCBXZWlnYW5kIGZvciBpbmZvcm1hdGlvbi4KCgkqIG1pc2MvY29tbWRsZy5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeCByZWRyYXcgcHJvYmxlbXMgZm9yIENob29zZUNvbG9yIGRpYWxvZy4KCgkqICovKi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZWQgYSBsb3Qgb2Ygb2NjdXJlbmNlcyBvZiB3aW5kb3dzLmggKGFuZCBhZGRlZCBuZWNlc3Nhcnkgb3RoZXIKCWluY2x1ZGVzKS4KCgkqIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvd2luZS9vYmpfbW9uaWtlci5oLCBvbGUvY29tcG9iai5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglTbWFsbCBmaXhlcy4KCgkqIGluY2x1ZGUvZHNvdW5kLmgsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUNoYW5nZWQgdGhlIGZpcnN0IHBhcmFtZXRlciBmcm9tIExQR1VJRCAoV2luZG93cyBoZWFkZXJzKSB0byBSRUZHVUlELgoJVGhpcyBtYWtlcyBpdCBhICdjb25zdCBHVUlEKicgd2hpY2ggbWVhbnMgRGlyZWN0U291bmRDcmVhdGUgbXVzdCBub3QKCWNoYW5nZSBpdC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglSZW1vdmVkIHJlZHVuZGFudCBkZWZpbml0aW9ucyBvZiBJc0VxdWFsSUlEIGFuZCBJc0VxdWFsQ0xTSUQgKHNlZQoJaW5jbHVkZS93aW5lL29ial9iYXNlLmgpCgpUaHUgRmViIDE4IDE3OjM0OjEwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYywgaW5jbHVkZS9xdWV1ZS5oOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktIE5ldyBpbXBsZW1lbnRhdGlvbiBvZiBTZW5kTWVzc2FnZSwgUmVjZWl2ZU1lc3NhZ2UsIFJlcGx5TWVzc2FnZSBmdW5jdGlvbnMKCSAgdG8gc3VwcG9ydCB0aHJlYWQtc2FmZW5lc3MsIGFuZCBuZXN0ZWQgU2VuZE1lc3NhZ2UuCgktIEFkZGl0aW9uIG9mIFJlcGx5TWVzc2FnZTMyLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQ29wZSB3aXRoIE5VTEwgcERyaXZlckRhdGEgaW4gWDExRFJWX1dORF9HZXRYV2luZG93LgoKCSogbWlzYy9jb21tZGxnLmMsIHJlc291cmNlcy9zeXNyZXNfRW4ucmM6CglQYXNjYWwgTGVzc2FyZCA8cGFzY2FsQG1hY2FkYW1pYW4uY29tPgoJQXBwbGllZCB0aGUgY2hhbmdlcyBvZiB0aGUgcmVzdWx0aW5nIGNvbG9yIG9mIHRoZSBjaG9vc2UgY29sb3IgZGlhbG9nLgoJSW5pdGlhbGl6ZSB2YWx1ZXMgaW4gdGhlIGNob29zZSBjb2xvciBkaWFsb2cuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9tYXJzaGFsLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlbW92ZWQgcmVmZXJlbmNlcyB0byBJQ09NX0lOSEVSSVRTLgoKCSogb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmg6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCUZpeGVkIGJ1ZyB3aXRoIHJlYWQtb25seSBmaWxlcy4KCgkqIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHN1cGVyZmxvdXMgV0lOQVBJIChtaXNtYXRjaCB3aXRoIHByb3RvdHlwZSkgaW4gKl9Ecml2ZXJQcm9jMzIuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWRvc2V4ZS5oIGRlcGVuZHMgb24gd2luYmFzZS5oIChmb3IgTFBTVEFSVFVQSU5GTzMyQSkKCgkqIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgb2xlL2JpbmRjdHguYywgb2xlL2ZpbGVtb25pa2VyLmMsIG9sZS9pdGVtbW9uaWtlci5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZTMyLmMsIG9sZS9zdG9yYWdlMzIuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJTW9kaWZpZWQgc28gdGhhdCB0aGV5IGRvIG5vdCB1c2UgdGhlIFZUQUJMRV9GVU5DIG1hY3JvcyB0aGF0IHBlcmZvcm1lZAoJY2FzdHMgb2YgYWxsIG1ldGhvZHMgcHV0IGluIHRoZSBqdW1wIHRhYmxlLiBJIGZpbmQgaXQgdG9vIHJpc2t5IHRvIHVzZQoJc3VjaCBtYWNyb3MgYmVjYXVzZSBub3RoaW5nIGd1YXJhbnRlZXMgdGhhdCB5b3UgYWN0dWFsbHkgcHV0IHRoZSByaWdodAoJbWV0aG9kIGF0IHRoZSByaWdodCBwbGFjZSBvciB0aGF0IHRoZSBwcm90b3R5cGUgaXMgcmlnaHQuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX21vbmlrZXIuaCwgaW5jbHVkZS93aW5lL29ial9zdG9yYWdlLmgsIG9sZS9zdG9yYWdlLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVVwZGF0ZWQgdG8gdXNlIHRoZSBsYXRlc3QgQ09NIG1hY3Jvcy4gRGVmaW5lZCBtb3JlIGludGVyZmFjZXMgYW5kIEFQSQoJZnVuY3Rpb25zLgoKCSogY29udHJvbHMvbWVudS5jLCBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvd2ludXNlci5oLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJRnJhbmNvaXMgQm9pc3ZlcnQ8ZnJhbmNvaXNAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiB0aGUgcHVzaGVkIGNsb3NlIGJ1dHRvbi4KCldlZCBGZWIgMTcgMTc6NDU6NTQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbWFwaWRlZnMuaCwgaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHlzdG9yYWdlLmgsIGluY2x1ZGUvd2lubnQuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBpbmNsdWRlL3d0eXBlcy5oLCBvbGUvY29tcG9iai5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglNb3ZlZCBzb21lIGRlZmluaXRpb25zIHRvIHRoZWlyIHByb3BlciBpbmNsdWRlIGZpbGUuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oLCBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaDoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJRml4ZWQgc29tZSBJQ09NX0lOSEVSSVQgc3R1ZmYgYW5kIGFkZGVkIG5ldyByZWxhdGVkIEFQSSBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCBuZXcgQVBJLiBQYXJ0IG9mIGl0IHdhcyBpbiAnaW5jbHVkZS9vYmpiYXNlLmgnIGJlZm9yZSBhbmQgcGFydAoJb2YgaXQgaXMgbmV3LiBOb3cgaXQgYWxzbyBjb250YWlucyAnV0lORV9TdHJpbmdGcm9tQ0xTSUQnLiBJdCdzIG5vdAoJcGVyZmVjdCBidXQgaXQncyBiZXR0ZXIgdGhhbiBoYXZpbmcgaXQgaW4gJ2luY2x1ZGUvb2JqYmFzZS5oJy4KCgkqIGRsbHMvYWR2YXBpMzIvY3J5cHQuYywgZGxscy9udGRsbC9udC5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgY29udHJvbHMvc2Nyb2xsLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUZpeGVkIGEgbnVtYmVyIG9mIHdhcm5pbmdzIGNvbmNlcm5pbmcgdGhlIG1hdGNoaW5nIG9mIHRoZSBwcmludGYKCWZvcm1hdCBzdHJpbmcgYW5kIHRoZSBhc3NvY2lhdGVkIHBhcmFtZXRlcnMgKGFjdHVhbGx5IGl0J3MgbW9zdGx5CglUUkFDRSBhbmQgRklYTUVzKS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgbXVsdGltZWRpYS9tbWlvLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgltbWlvRGVzY2VuZDogZml4ZWQgRklORF94eHh4LCB2ZXJpZmllZCB3aXRoIG1jaWF2aTMyLmRsbC4KCW1jaUxvYWRDb21tYW5kUmVzb3VyY2UzMjogc2Vjb25kIGFyZyBpcyB3aWRlIHN0cmluZwoJbWNpR2V0RHJpdmVyRGF0YTogc3BlYyBoYXMganVzdCBvbmUgbG9uZyBhcmd1bWVudAoKCSogb2xlL2NvbXBvYmouYywgb2xlL2lmcy5jLCBvbGUvaWZzLmgsIG9sZS9zdG9yYWdlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBpbmNsdWRlL3dpbmUvb2JqX2Jhc2UuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIG11bHRpbWVkaWEvZHNvdW5kLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQ2hhbmdlZCBJQ09NX1RISVMgZGVmaW5pdGlvbi4KCgkqIGRsbHMvdmVyc2lvbi9pbmZvLmMsIGluY2x1ZGUvdmVyLmg6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJUmVuYW1lZCBWU19WRVJTSU9OX0lORk94eCBzdHJ1Y3R1cmUgdG8gVlNfVkVSU0lPTl9JTkZPX1NUUlVDVHh4LgoJVGhlIFZTX1ZFUlNJT05fSU5GTyBpcyBhIHNpbXBsZSBkZWZpbmUgYW5kIHdvdWxkIGNhdXNlIGNvbmZ1c2lvbi4KCUFsc28gY29ycmVjdGVkIHRoZSBWU194eF9JTkZPIGRlZmluZXMgbm90IHRvIHVzZSBNQUtFSU5UUkVTT1VSQ0UxNiBmb3Igd2luMzIuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjogU3RlZmZlbiBNb2VsbGVyIDxtb2VsbGVyQGViaS5hYy51az4KCSJDb25maWd1cmUgZmluaXNoZWQiIG1lc3NhZ2Ugc3VnZ2VzdHMgdG8gY2FsbCBtYWtlIHdoZW4gbWFrZSBkZXBlbmQKCXdhcyBzdWNjZXNzZnVsLgoKCSogKi8qOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU9wdGltaXplZCBpbmNsdWRlLyouaDogKHJlY3Vyc2l2ZWx5KSBpbmNsdWRlIGFsbCBoZWFkZXJzIG5lZWRlZCBieQoJdGhpcyAuaCBmaWxlLCBidXQgb25seSB0aG9zZS4gTmVjZXNzYXJ5IGZpeGVzIHRvIGEgbG90IG9mIC5jIGZpbGVzLAoJc3RhcnRlZCBvcHRpbWl6aW5nICJ3aW5kb3dzLmgiIGF3YXkgZnJvbSBzb21lIG9mIHRoZW0uIE1vdmVkCglHZXRDdXJyZW50VGFzayBwcm90b3R5cGUgdG8gd2luZS93aW5iYXNlMTYuaC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9saXN0dmlldy5oLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmM6CglMdWMgVG91cmFuZ2VhdSA8bHVjQG1hY2FkYW1pYW4uY29tPgoJUHJlbGltaW5hcnkgbGlzdHZpZXcgY29udHJvbCBpbXBsZW1lbnRhdGlvbi4KCgkqIGNvbnRyb2xzL21lbnUuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJR2l2ZSB0aGUgY29udGV4dCBtZW51IGl0cyBwcm9wZXIgYmVoYXZpb3VyIGFuZCBtb2RpZnkgVHJhY2tQb3B1cE1lbnUKCXRvIGNvbXBseSB3aXRoIHdpbmRvd3MgQVBJLgoKCSogd2luZG93cy9wYWludGluZy5jOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUdldFVwZGF0ZVJlY3Qgc2hvdWxkIHJldHVybiBjbGllbnQgY29vcmRpbmF0ZXMgdW5sZXNzIHRoZSB3aW5kb3cgd2FzCgljcmVhdGVkIHdpdGggdGhlIENTX09XTkRDIHN0eWxlIGFuZCB0aGUgbWFwcGluZyBtb2RlIGlzIG5vdCBNTV9URVhULAoJaW4gd2hpY2ggY2FzZSB0aGUgcmVzdWx0IHNob3VsZCBiZSBpbiBsb2dpY2FsIGNvb3JkaW5hdGVzLgoKCSogaW5jbHVkZS93aW5lL29ial9jaGFubmVsLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgdGhlIGFjdHVhbCBkZWZpbml0aW9ucyBvZiB0aGUgaW50ZXJmYWNlcy4KCgkqIGluY2x1ZGUvc2VydnByb3YuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglDb252ZXJ0ZWQgdG8gdGhlIG5ldyBDT00gZGVjbGFyYXRpb24gJ3N0YW5kYXJkJyBmb3IgYmV0dGVyCgljb21wYXRpYmlsaXR5IHdpdGggQyBjb2RlIGltcGxlbWVudGF0aW5nIHRoYXQgaW50ZXJmYWNlLgoKCSogbWlzYy93c3ByaW50Zi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2VkIFdQUklOVEZfRXh0cmFjdFZBUHRyIHRvIHRha2UgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhX2xpc3QgdG8gYmUKCWFibGUgdG8gbW9kaWZ5IGl0LgoKCSogZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOiBTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglEZWZpbmVkIElEcm9wVGFyZ2V0IGZvciBTaGVsbEZvbGRlci4gIEltcGxlbWVudGVkIHRoZSBDb25zdHJ1Y3RvciwKCURlc3RydWN0b3IsIEFkZFJlZiwgUmVsZWFzZSBhbmQgUXVlcnlJbnRlcmZhY2UgbWV0aG9kcy4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jLCBpZjE2MzIva2VybmVsLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglDaGFuZ2UgdHlwZSBvZiBtb2RlIGFyZ3VtZW50IHRvIEdFVFZETVBPSU5URVIzMlcgZnJvbSBEV09SRCB0byBXb3JkCgpNb24gRmViIDE1IDE1OjI0OjIwIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvd2ludXNlci5oOgoJRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CgljMm1hbiBkb2Vzbid0IGxpa2UgZXh0cmEgc2VtaWNvbG9ucy4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVzZXR0aW5nIFggZm9jdXMgc2hvdWxkIG5vdCBiZSBkb25lIHdpdGggU2V0Rm9jdXMzMi4gQ2FsbGVkCgl0aGUgd2luZG93aW5nIChYMTEpIGRyaXZlcidzIFNldEZvY3VzIHJvdXRpbmUgZGlyZWN0bHkgaW5zdGVhZC4KCVRoaXMgYXBwYXJlbnRseSBmaXhlcyBhIGJpZyBoZWFwIG9mIHVzZXIgaW50ZXJmYWNlIHByb2JsZW1zLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gRmViIDE0IDE0OjA5OjQyIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy9wYWludGluZy5jLCBpbmNsdWRlL3dpbnVzZXIuaCwgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHdpbmRvd3MvZGlhbG9nLmMsIHdpbmRvd3MvcGFpbnRpbmcuYywgd2luZG93cy9yZWN0LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUNoYW5nZWQgc29tZSBmdW5jdGlvbnMgcHJvdG90eXBlcyAod2VyZSByZXR1cm5pbmcgdm9pZCkuCgoJKiBtaXNjL21haW4uYywgaW5jbHVkZS93aW51c2VyLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJRml4ZWQgc29tZSBXaW5lbGliIG5hbWVzLgoKCSogaW5jbHVkZS9jbGlwYm9hcmQuaCwgaW5jbHVkZS9jb25zb2xlLmgsIGluY2x1ZGUvZGVza3RvcC5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvdHR5ZHJ2LmgsIGluY2x1ZGUveDExZHJ2Lmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvcnJlY3RlZCBwcm90b3R5cGVzIGZ1bmMoKSAtPmZ1bmModm9pZCkuCgoJKiBtdWx0aW1lZGlhL2luaXQuYywgbXVsdGltZWRpYS9taWRpLmMsIGRlYnVnZ2VyL21lbW9yeS5jOgoJQnJpYW4gSm9zZXBoIEN6YXBpZ2EgPHJvb3RAZ2xhY2lkLmNvbT4KCUZpeGVkIGEgZmV3ICNpZmRlZnMuCgoJKiB3aW5kb3dzL3Njcm9sbC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCUplcm9tZSBWb3VpbGxvbiA8dm91aWxsb25AY2xhcmFuZXQuZnI+CglNYWtlIGEgY29ycmVjdCB1c2Ugb2YgY2xpcHBpbmcgcmVjdGFuZ2xlcy4KCgkqIGluY2x1ZGUvYml0bWFwcy9vY3JfY3Jvc3M6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCB3aGl0ZSBib3JkZXIuCgoJKiBkZWJ1Z2dlci9kYl9kaXNhc20uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBiZXR0ZXIgb3V0cHV0IGZvciBpbmRpcmVjdCBjYWxscy4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0eXBvIGluIHdpbm1tLnNwZWMuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmgsIGluY2x1ZGUvd3JjX3JzYy5oLCBtaXNjL2xzdHIuYywgbWlzYy93c3ByaW50Zi5jLCByZWxheTMyL2J1aWx0aW4zMi5jLCByZWxheTMyL3JlbGF5Mzg2LmMsIHJlbGF5MzIvc25vb3AuYzoKCUdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQENPUkVMLkNBPgoJQSBmZXcgbm9uLXg4NiBXaW5lbGliIGZpeGVzLgoKCSogbWlzY2VtdS9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IHByaW50ICd3aW5lOiBubyBleGVjdXRlYWJsZSBmb3VuZCcgaWYgd2UgZGlkIGV4ZWN1dGUgc29tZXRoaW5nLgoKCSogcHJvZ3JhbXMvbm90ZXBhZC8qOgoJTWFyY2VsIEJhdXIgPG1iYXVyQGcyNi5ldGh6LmNoPgoJLSBBZGRlZCBuZXcgSURTX05PVFNBVkVEIHJlc3NvdXJjZSAobmVlZHMgdHJhbnNsYXRpb24gaW4gKi5yYykKCS0gSW1wcm92ZWQgcHJpbnRpbmcgc3VwcG9ydCAobm90IHlldCBjb21wbGV0ZSkKCS0gSW1wcm92ZWQgZmlsZSBkcmFnIGFuZCBkcm9wIChzaG91bGQgbm93IHdvcmspCgktIEdlbmVyYWwgY29kZSBjbGVhbnVwCgoJKiBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9tY2ltaWRpLmMsIG11bHRpbWVkaWEvbWNpd2F2ZS5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIGJ1Z3Mgb24gTUNJIG5vdGlmaWNhdGlvbiAoY2FsbGJhY2sgaW5mbyBhcmUgY29waWVkIGJlZm9yZQoJYXN5bmNocm9ub3VzIHJldHVybikgLSBtYWtlIHVzZSBvZiBpdCBpbiBNQ0kgd2F2ZSBhbmQgbWlkaS4KCUltcGxlbWVudGVkIG1jaShTZXR8R2V0KURldmljZUlEKDE2fDMyKSBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTaW5jZSBTZXRQYXJlbnQgbm93IGhpZGVzL3Nob3dzLCBleHBsaWNpdGx5IGludmFsaWRhdGluZyBEQ3MgaW4gdGhlCglwYXJlbnQgY2hhbmdlIG9wZXJhdGlvbiBzaG91bGQgbm8gbG9uZ2VyIGJlIG5lY2Vzc2FyeS4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IEdlcmFyZCBQYXRlbCA8Ry5QYXRlbEBXYW5hZG9vLmZyPgoJRml4IGlmIEVuZERpYWxvZyBjYWxsZWQgaW4gV01fSU5JVERJQUxPRyAoRElBTE9HX0RvRGlhbG9nQm94KS4KCgkqIG1zZG9zL2lvcG9ydHMuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1vdmVkIFZHQSBwb3J0IGFjY2VzcyBjaGVjayBhdCB0aGUgYmVnaW5uaW5nIGluIG9yZGVyIHRvIGltcHJvdmUKCXBlcmZvcm1hbmNlIGEgbGl0dGxlIGJpdC4KCgkqIHNlcnZlci9maWxlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgZmxhZyBGSUxFX0ZMQUdfREVMRVRFX09OX0NMT1NFLgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGRlZCBjb21tZW50cy4gVGhpbmsgSSd2ZSBmaXhlZCBJTlQgMTAvMDggKEdldCBDaGFyYWN0ZXIgYW5kCglBdHRyaWJ1dGUgYXQgQ3Vyc29yKS4KCgkqIGNvbnNvbGUveHRlcm0uYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglBZGRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgWHRlcm1Qcm9ncmFtIGFuZCBYdGVybVJlc29sdXRpb24uCglGaXhlZCBhIHdhcm5pbmcuCgoJKiBkb2N1bWVudGF0aW9uL2NvbnNvbGUsIHdpbmUuaW5pOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglOZXcgZXhhbXBsZXMvZG9jdW1lbnRhdGlvbiBmb3IgY29uc29sZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuCgoJKiBtaXNjL21haW4uYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUvdHR5LmMsIGluY2x1ZGUvY29uc29sZS5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbG9hZGVyL21haW4uYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJTW92ZWQgaW5pdGlhbGl6YXRpb24gdW50aWwgbGF0ZXIuIEFsc28gbW92ZWQgYXJvdW5kIGNvZGUgYSBiaXQgdG8gYmUKCWNvbnNpc3RhbnQuCgoJKiBpbmNsdWRlL2RlYnVnZ2VyLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgcG9zc2liaWxpdHkgdG8gbG9hZCAuc3RhYnMvLnN0YWJzdHIgc2VjdGlvbnMgZnJvbSBQRSBkbGxzLgoJVW5mb3J0dW5hdGVseSBteSBzYW1wbGVzIHVzZSBjdXJyZW50bHkgdHlwZWRlZnMgd2hpY2ggd2luZS1kYmcgZG9lcwoJbm90IHVuZGVyc3RhbmQsIHNvIG5vIGFjdHVhbCBwYXJzaW5nLgoKCSogZGxscy9tc2FjbS9tc2FjbV9tYWluLmMsIGRsbHMvbXNhY20zMi9mb3JtYXQuYywgZGxscy9tc2FjbTMyL3N0cmVhbS5jLCBpbmNsdWRlL21tcmVnLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tc2FjbS5oLCBpbmNsdWRlL21zYWNtZHJ2LmgsIGluY2x1ZGUvd2luYmFzZS5oOgoJQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCUNoYW5nZSBhIGNvdXBsZSBvZiBuYW1lcyB0aGF0IHdvdWxkIGNvbmZsaWN0IGFmdGVyIGFsbCAzMltBV10gc3VmZml4ZXMKCWFyZSByZW1vdmVkLiBTdHJ1Y3R1cmVzIGRlZmluZWQgaW4gYm90aCBtbXJlZy5oIGFuZCBtbXN5c3RlbS5oIGFyZQoJcHJvdGVjdGVkIHdpdGggI2lmZGVmOnMgYXMgaW4gTVMnIGhlYWRlcnMuCgoJKiBtaXNjL2ltbS5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUZpeGVkIHdyb25nIHR5cGVjYXN0cy4KCgkqIHByb2dyYW1zL3Byb2dtYW4vZ3JwZmlsZS5jOiBTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KCUNvbXBpbGF0aW9uIGZpeC4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeCBmb3IgWDExIGluY2x1ZGVzIGRldGVjdGlvbi4KCgkqIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbXNjLmMsIGRlYnVnZ2VyL3N0YWJzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIHBvc3NpYmlsaXR5IHRvIGxvYWQgLnN0YWJzLy5zdGFic3RyIHNlY3Rpb25zIGZyb20gUEUgZGxscy4KCVVuZm9ydHVuYXRlbHkgbXkgc2FtcGxlcyB1c2UgY3VycmVudGx5IHR5cGVkZWZzIHdoaWNoIHdpbmUtZGJnIGRvZXMKCW5vdCB1bmRlcnN0YW5kLCBzbyBubyBhY3R1YWwgcGFyc2luZy4KCgkqIG11bHRpbWVkaWEvZHBsYXkuYywgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0ZHJhdywgZ3JhcGhpY3MvZDNkdmlld3BvcnQuYywgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kM2QuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBkZHJhdy9kM2QgYnVnZml4ZXMsIHVwZGF0ZWQgRGlhYmxvL1dDNCBkZHJhdyBzdGF0dXMuCgoJKiBvbGUvb2xlMm5scy5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIGluY2x1ZGUvd2lubmxzLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGF0aW9uIG9mIENvbnZlcnREZWZhdWx0TG9jYWxlMzIuCgoJKiB3aW5kb3dzL21kaS5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVdJTjMxIExvb2sgc3RpbGwgbmVlZHMgYSBjbG9zZSBidXR0b24gb24gdGhlIGxlZnQgb2YgdGhlIG1lbnUgYmFyLgoKCSogd2luZG93cy93aW5wb3MuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJQ2hhbmdlZCBTZXRXaW5kb3dQb3MzMiB0byBmb3JjZSB0aGUgdXBkYXRlIG9mIHRoZSBub24tY2xpZW50IGFyZWEuCgpTYXQgRmViIDEzIDE3OjU2OjI4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW5zb2NrLmg6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJRml4ZWQgYSBjb3VwbGUgb2YgZmF1bHR5IG5hbWVzIHVzZWQgaW4gd2luZSBhbmQgdHlwb3Mgc28gdGhhdCBpdCB3aWxsCgljb21waWxlIGFnYWluIGFmdGVyIGNvbnZlcnNpb24gZnJvbSAzMltBV10gbmFtaW5nIHRvIFtBV10gbmFtaW5nLgoKCSogaWYxNjMyL0F0dGljL3NpZ25hbC5jLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9taXNjZW11LmgsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgbG9hZGVyL2Rvcy9kb3N2bS5jLCBsb2FkZXIvc2lnbmFsLmMsIG1pc2NlbXUvaW5zdHIuYywgbWlzY2VtdS9tYWluLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1vdmVkIHRoZSBpZjE2MzIvc2lnbmFsLmMgc3R1ZmYgaW50byBsb2FkZXIvc2lnbmFsLmMsIGFkYXB0ZWQgZnVuY3Rpb24KCXBvaW50ZXJzIGZvciB3aW5lX2RlYnVnIGFuZCBJTlNUUl9FbXVsYXRlSW5zdHJ1Y3Rpb24uCgoJKiBvbGUvY29tcG9iai5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUFsbCBndWlkICdSRUZ4eHgnIHR5cGVzIGFscmVhZHkgaGF2ZSBhICdjb25zdCcgaW5zaWRlIHRoZW0uCgoJKiBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsIGRsbHMvY29tY3RsMzIvdG9vbHRpcHMuYywgbWlzYy92ZXJzaW9uLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgd2FybmluZ3MgZml4ZWQsIG9uZSB1c2VsZXNzIFZFUlNJT04gd2FybmluZyByZW1vdmVkICh3aW5lbGliKS4KCgkqIG1pc2MvcmVnaXN0cnkuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVJlZ0ZsdXNoS2V5OiB3cm9uZyBlcnJvciBjb2RlLgoKCSogd2luMzIvZmlsZS5jOiBBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRzIGEgd2FybmluZyBtZXNzYWdlIGlmIHBlcm1pc3Npb25zIG5vdCBzdWZmaWNpZW50LgoKCSogbXVsdGltZWRpYS9taXhlci5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIHJlbGF5MzIvd2lubW0uc3BlYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL211bHRpbWVkaWEuaCwgbXVsdGltZWRpYS9NYWtlZmlsZS5pbiwgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpYXZpLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9taWRpLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIE1DSSBBVkkgZHJpdmVyCglBZGRlZCBzb21lIGZpeGVzIG1peGVyIGZ1bmN0aW9ucwoJRml4ZWQgTUNJIHN0cmluZyBjb21wYXJpc29uICh0aGFua3MgdG8gTGlvbmVsIFVMTUVSKQoJTm8gbG9uZ2VyIHVzaW5nIDE2IGJpdCBVU0VSIGZ1bmN0aW9ucyAodXNlIHRoZWlyIDMyIGJpdCBjb3VudGVyIHBhcnQpCglSZWluZGVudGluZy4KCUFkZGVkIGZ1bmN0aW9uIHNuZFBsYXlTb3VuZDMyVwoKCSogaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvb2JqaWRsLmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCB0aGUgYWN0dWFsIGludGVyZmFjZSBkZWZpbml0aW9ucyB0byB0aGUgb2JqX21hcnNoYWwuaCBza2VsZXRvbgoJZmlsZS4gQWxzbyBkZWZpbmVkIHRoZSBhc3NvY2lhdGVkIEMgQVBJLgoKCSogd2luZG93cy9xdWV1ZS5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCVVzZSBnbG9iYWwgc3luY2hyb25pemF0aW9uIG9iamVjdHMsIHRvIGJlIGFibGUgdG8gdXNlIGl0IGluIGRpZmZlcmVudAoJcHJvY2Vzc2VzIChub3Qgb25seSB0aGUgcHJvY2VzcyB3aGljaCBjcmVhdGUgdGhlIHN5bmNocm8gb2JqZWN0KS4KCgkqIHdpbmRvd3MvbWRpLmM6IE5vcm1hbiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCVNldCBod25kQWN0aXZlQ2hpbGQgd2hlbiBtYXhpbWl6aW5nIGEgbWRpIGNoaWxkIHdpbmRvdyBiZWNhdXNlIGl0IGlzCglub3Qgc2V0IHdoZW4gbWF4aW1pemluZyBhIHdpbmRvdyBvdGhlciB0aGFuIHRoZSBhY3RpdmUgY2hpbGQuCgoJKiBjb250cm9scy9tZW51LmM6IFBhc2NhbCBMZXNzYXJkIDxwYXNjYWxAbWFjYWRhbWlhbi5jb20+CglDaGFuZ2UgdGhlIEdldE1lbnVJdGVtUmVjdCB0byBjb21wbHkgd2l0aCB3aW5kb3dzIEFQSS4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS8uY3ZzaWdub3JlLCBpbmNsdWRlL01ha2VmaWxlLmluOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQ3JlYXRlZCBpbmNsdWRlL01ha2VmaWxlLmluIHRvIHNlcGFyYXRlIGhlYWRlciBmaWxlIGluc3RhbGxhdGlvbiBmcm9tCgl0aGUgdG9wLWxldmVsIE1ha2VmaWxlLgoKCSogb2xlL3N0Z19iaWdibG9ja2ZpbGUuYywgb2xlL3N0Z19zdHJlYW0uYywgb2xlL3N0b3JhZ2UzMi5jLCBvbGUvc3RvcmFnZTMyLmg6CglUaHV5IE5ndXllbiA8dGh1eUBtYWNhZGFtaWFuLmNvbT4KCS0gRml4ZWQgYSBzbWFsbCBibG9jayBkZXBvdCBidWcuCgktIEltcGxlbWVudGVkIGNvbnZlcnRpbmcgZnJvbSBzbWFsbCBibG9ja3MgdG8gYmlnIGJsb2Nrcy4KCS0gVmFsaWRhdGVkIGZpbGUgYXR0cmlidXRlcyBhbmQgZmxhZ3MuCgktIEZpeGVkIGEgYnVnIGZvciBsYXJnZXIgZmlsZXMuCgoJKiByZXNvdXJjZXMvLmN2c2lnbm9yZTogYWRkZWQgc3lzcmVzX05sCgoJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL29sZWlkbC5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5lL29ial9kcmFnZHJvcC5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIE9MRSBEcmFnIGFuZCBEcm9wIHRhcmdldCByZWdpc3RyYXRpb24gbWVjaGFuaXNtIGFuZAoJdGhlIERvRHJhZ0Ryb3AgbG9vcCB0byBwZXJmb3JtIHRoZSBEbkQgb3BlcmF0aW9uLgoKCSogd2luZG93cy9tZGkuYywgY29udHJvbHMvbWVudS5jLCBpbmNsdWRlL21lbnUuaDoKCUZyYW5jb2lzIEJvaXN2ZXJ0IDxmcmFuY29pc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBXSU4zMSBMb29rIG1kaSBidXR0b25zIGFuZCBhbHNvIHNvbWUgZGVmaW5lcyBmb3IgdGhlCgltYWdpYyBtZW51IGl0ZW1zLgoKCSogZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9jcnlwdC5jLCBpbmNsdWRlL3dpbmNyeXB0LmgsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKCUlhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KCUFkZGVkIGVudHJpZXMgZm9yIG1vc3QgQ3J5cHQqIGNhbGxzLgoJQWRkZWQgc3R1YiBmb3IgQ3J5cHRBY3F1aXJlQ29udGV4dEEuICBUaGlzIGFsbG93cyBXaW45OCBFWFBMT1JFUi5FWEUKCXRvIGdldCBmYXJ0aGVyLgoKCSogY29udHJvbHMvZWRpdC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQW4gYXBwIGxlZnQganVuayBpbiB0aGUgdW5kbyBidWZmZXIgb2YgYW4gZWRpdCBjb250cm9sIHVwb24gY3JlYXRpb24uCgoJKiB3aW5kb3dzL3dpbi5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoYW5nZWQgU2V0UGFyZW50MzIgdG8gYWRoZXJlIHRvIFdpbmRvd3MgYmVoYXZpb3VyIChtb3N0bHkpLAoJd2hpY2ggc2hvdWxkIGFsc28ga2VlcCBpdCBmcm9tIGxlYXZpbmcgZ2FyYmFnZSBhcm91bmQuCgoJKiBvbGUvY29tcG9iai5jOiBTeWx2YWluIFN0Lkdlcm1haW4gPHN5bHZhaW5AbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBhIHNpbXBsZSBsaW5rZWQgbGlzdCAoc3RhdGljKSB0aGF0IHN0b3JlcyBhbmQgY291bnRzCglyZWZlcmVuY2VzIHRvIENPTSBvYmplY3RzLgoKCSogaW5jbHVkZS9vYmpiYXNlLmgsIGluY2x1ZGUvd3R5cGVzLmg6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCU1ha2UgdGhlIFJFRnh4eCB0eXBlcyBjb25zdCBldmVuIGluIEMuIEFsc28gYWRkIEZNVElELgoKCSogd2luZG93cy93aW5wb3MuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEb24ndCBjYWxsIEVWRU5UX0R1bW15TW90aW9uTm90aWZ5IGZvciBoaWRkZW4gd2luZG93cy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCUZpeCBzb21lIHRocmVhZC1zYWZlbmVzcyBwcm9ibGVtIHdoZW4gYWNjZXNzaW5nIHRoZSBzeXN0ZW0gbWVzc2FnZQoJcXVldWUuCgoJKiB3aW5kb3dzL2lucHV0LmMsIGluY2x1ZGUvd2ludXNlci5oLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBNYXBWaXJ0dWFsS2V5RXggKHRpY2tldCAyMSkuCglJZ25vcmUga2V5Ym9hcmQgbGF5b3V0IGZvciBub3cuCgoJKiBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL3dpbmUvb2JqX2NsaWVudHNlcnZlci5oOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QHBzbi5uZXQ+CglBZGRlZCB0aGUgYWN0dWFsIGludGVyZmFjZSBkZWZpbml0aW9ucyB0byB0aGUgb2JqX2NsaWVudHNlcnZlci5oCglza2VsZXRvbiBmaWxlLgoKCSogZGxscy9udGRsbC9NYWtlZmlsZS5pbiwgZGxscy9udGRsbC9udC5jLCBkbGxzL250ZGxsL3JlZy5jLCBkbGxzL250ZGxsL3J0bC5jLCByZWxheTMyL250ZGxsLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCS0gZG9jdW1lbnRlZCBtb3N0IG9mIHRoZSB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zIGluIG50LmMKCS0gaW1wbGVtZW50ZWQgUnRsR2V0RGFjbFNlY3VyaXR5RGVzY3JpcHRvcgoJLSBzdHVicyBmb3IgTnRFbnVtZXJhdGVLZXksIE50T3BlblN5bWJvbGljTGlua09iamVjdCwgTnRRdWVyeUtleQoJLSBzdHVicyBmb3IgTnRSYWlzZUV4Y2VwdGlvbiwgUnRsUmFpc2VFeGNlcHRpb24gKHRoaXMgYm90aCB3aWxsIGNyYXNoKQoKRnJpIEZlYiAxMiAxNzo0NzowNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9hZHZhcGkzMi9zZWN1cml0eS5jLCBkbGxzL2FkdmFwaTMyL3NlcnZpY2UuYywgZmlsZXMvZHJpdmUuYywgbWlzYy9yZWdpc3RyeS5jLCB3aW4zMi9uZXdmbnMuYywgd2luZG93cy91c2VyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzIHRvIGNvbXBpbGUgd2l0aCB0aGUgaGVhZGVycyAobW9zdGx5IG50LXNlY3VyaXR5KS4KCgkqIGluY2x1ZGUvbnRkZGsuaCwgaW5jbHVkZS9udGRlZi5oLCBpbmNsdWRlL250ZGxsLmgsIGluY2x1ZGUvd2luYmFzZS5oLCBpbmNsdWRlL3dpbmRlZi5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hZGUgbnQtcmVsYXRlZCB0eXBlcyBjb21wYXRpYmxlLCB0aHJvdyBvdXQgd2luZS1zcGVjaWZpYyB0eXBlcy4KCgkqIHdpbmRvd3MvbW91c2UuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVc2UgTU9OSVRPUl8uLi4gaW5zdGVhZCBvZiBERVNLVE9QXy4uLiByb3V0aW5lcyB0byBnZXQgc2NyZWVuCglkaW1lbnNpb25zOyB0aGVzZSB3b3JrIGFsc28gd2l0aCBuYXRpdmUgVVNFUi4KCgkqIHdpbmRvd3MvZGVmd25kLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJV01fQUNUSVZBVEUgZGVmYXVsdCBwcm9jZXNzaW5nIHNob3VsZCBzZXQgd2luZG93IGZvY3VzLgoJU2hvdWxkIGZpeCBmb2N1cyBwcm9ibGVtcyBpbiBub24tbWFuYWdlZCBtb2RlLgoKVGh1IEZlYiAxMSAxNjozMjoxNyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL25scy9ubGQubmxzLCByZXNvdXJjZXMvTWFrZWZpbGUuaW4sIHJlc291cmNlcy9UT0RPLCByZXNvdXJjZXMvc3lzcmVzLmMsIHJlc291cmNlcy9zeXNyZXNfTmwucmMsIEFVVEhPUlMsIGRvY3VtZW50YXRpb24vbGFuZ3VhZ2VzLCBpbmNsdWRlL2F1dGhvcnMuaCwgaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jOgoJS2xhYXMgdmFuIEdlbmQgPGtsYWFzQHZhbmdlbmQuZGVtb24ubmw+CglBZGRlZCBzdXBwb3J0IGZvciB0aGUgRHV0Y2ggbGFuZ3VhZ2UuCgoJKiBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvcHJzaHQuaCwgaW5jbHVkZS9zaGxvYmouaDoKCUFkcmlhbiBUaHVyc3RvbiA8YWRyaWFudEBjb3JlbC5jYT4KCVp5Z28gQmxheGVsbCA8emJsYXhlbGxAY29yZWwuY2E+CglNb3ZlIHByb3BlcnR5IHNoZWV0cyBmcm9tIGNvbW1jdHJsLmggaW50byBpbnRvIHByc2h0LmguCgoJKiBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCAnb2JqYmFzZS5oJyB0byBwcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglCZXR0ZXIgZGV0ZWN0aW9uIG9mIFhTaG0gZXJyb3JzIChzaG91bGQgbm93IHJ1biBvbiByZW1vdGUgZGlzcGxheXMpLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZXMgbWl4ZXJHZXRJRDE2LzMyIHByb2JsZW1zL2Vycm9ycy4KCgkqIG9sZS9vbGVvYmouYywgbXVsdGltZWRpYS9kcGxheS5jOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCUlzRXF1YWxHVUlEIGlzIGRlZmluZWQgaW4gJ2luY2x1ZGUvd2luZS9vYmpfYmFzZS5oJy4gQWxsIG90aGVyCglkZWNsYXJhdGlvbnMgbXVzdCBzdXJyZW5kZXIgb3IgcHJlcGFyZSB0byBiZSBtZXQgd2l0aCBkZWFkbHkgZm9yY2UgOi0pCgoJKiByZWxheTMyL29sZTMyLnNwZWM6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQWRkZWQgbmV3IGZ1bmN0aW9ucyAoZnJvbSBXaW45OCkKCUFkZGVkIGNvbW1lbnRzIHdpdGggdGhlIHBhcmFtZXRlciB0eXBlcyBmb3IgZnV0dXJlIHVzZSB3aXRoIGRsbGdsdWUKCgkqIGZpbGVzL2RyaXZlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNldCB0aGUgZmxhZ3MgZm9yIEdldFZvbHVtZUluZm9ybWF0aW9uMzJBLgoKCSogd2luZG93cy93aW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaW5kV2luZG93IGZhaWxlZCBmb3IgMzIgYml0IHdpbmRvd3Mgd2l0aCBzdHlsZSAhPSBXU19DSElMRC4KCldlZCBGZWIgMTAgMDY6NTI6NTggMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvQXR0aWMvcHJpbnQuaCwgaW5jbHVkZS93aW5zcG9vbC5oLCBtaXNjL3ByaW50ZHJ2LmMsIGdyYXBoaWNzL3BzZHJ2L2RyaXZlci5jLCBncmFwaGljcy9wc2Rydi9lc2NhcGUuYywgZ3JhcGhpY3MvcHNkcnYvZm9udC5jLCBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BwZC5jLCBncmFwaGljcy9wc2Rydi9wcy5jLCBncmFwaGljcy9wc2Rydi90ZXh0LmM6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUFsYmVydCBEZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCU1vdmVzIGZpbGVzIGZyb20gcHJpbnQuaCB0byB3aW5zcG9vbC5oIGZvciBiZXR0ZXIgU0RLIGhlYWRlciBjb21wbGlhbmNlCglmb3IgV2luZWxpYiBwcm9ncmFtcy4KCgkqIGluY2x1ZGUvaG9vay5oLCBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS90Y2hhci5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd2ludXNlci5oLCBpbmNsdWRlL3d0eXBlcy5oOgoJQWxiZXJ0IERlbiBIYWFuIDxhbGJlcnRkQGNvcmVsLmNhPgoJQWRyaWFuIFRodXJzdG9uIDxhdGh1cnN0b0Bjb3JlbC5jYT4KCVBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJWnlnbyBCbGF4ZWxsIDx6eWdvYkBjb3JlbC5jYT4KCU1pc2NlbGxhbmVvdXMgcGF0Y2hlcyB0byBoZWFkZXIgZmlsZXMuICBBbGwgb2YgdGhlc2UgYXJlIHN1cHBvc2VkbHkgdGhlcmUKCXRvIGhlbHAgYnVpbGQgV2luZWxpYiBhcHBsaWNhdGlvbnMuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6IEFsYmVydCBEZW4gSGFhbiA8YWxiZXJ0ZEBjb3JlbC5jYT4KCUFkcmlhbiBUaHVyc3RvbiA8YXRodXJzdG9AY29yZWwuY2E+CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCVp5Z28gQmxheGVsbCA8enlnb2JAY29yZWwuY2E+CglNb3JlIHR5cGVzIHdlIG5lZWQgZm9yIGNvbXBpbGluZyBXaW5lbGliL01GQyBhcHBsaWNhdGlvbnMuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJTW9yZSB0eXBlcyBmb3IgY29tbW9uIGNvbnRyb2xzLiAgTmVlZGVkIGZvciBXaW5lbGliLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgaW5jbHVkZS93aW5lL29ial9iYXNlLmgsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG9sZS9jb21wb2JqLmMsIG9sZS9pZnMuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBwc24ubmV0PgoJQmV0dGVyIHNldCBvZiBtYWNyb3MgZm9yIGRlZmluaW5nIHRoZSBDT00gaW50ZXJmYWNlcy4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVHdvIEFEVkFQSTMyIHN0dWJzOiBJbXBlcnNvbmF0ZVNlbGYzMiBhbmQgQWNjZXNzQ2hlY2szMi4gU3BlbGxpbmcgZml4ZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUZpeGVkIGRlYnVnIG91dHB1dCB0byBmb2xsb3cgJy1kZWJ1Z21zZycgZmxhZ3MuCgpUdWUgRmViICA5IDE1OjQ5OjM5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtc2Rvcy9pbnQyMC5jLCBvbGUvc2FmZWFycmF5LmMsIHJlbGF5MzIvYnVpbHRpbjMyLmMsIHNlcnZlci9kZXZpY2UuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3RocmVhZC5jLCB3aW5kb3dzL3dpbmhlbHAuYzoKCU1pY2hhZWwgVmVrc2xlciA8bXZla3NsZXJAdGVjaHVuaXgudGVjaG5pb24uYWMuaWw+CglBZGRlZCBtaXNzaW5nIGluY2x1ZGVzIHRvIGF2b2lkIHdhcm5pbmdzL2Vycm9ycy4KCgkqIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvbHpleHBhbmQuaCwgaW5jbHVkZS9udGRsbC5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9zaGVsbGFwaS5oLCBpbmNsdWRlL3ZnYS5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5jb24uaCwgaW5jbHVkZS93aW5kZWYuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2luZS9rZXlib2FyZDE2LmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmUvc2hlbGwxNi5oLCBpbmNsdWRlL3dpbmUvdzMyc2tybmwuaCwgaW5jbHVkZS93aW5lL3dpbmJhc2UxNi5oLCBpbmNsdWRlL3dpbmUvd2luZXNvdW5kLmgsIGluY2x1ZGUvd2luZS93aW5lc3RyaW5nLmgsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgaW5jbHVkZS93aW5uZXR3ay5oLCBpbmNsdWRlL3dpbm5scy5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2lucmVnLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd2ludmVyLmg6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJTW92ZWQgZXZlcnl0aGluZyBvdXQgb2Ygd2luZG93cy5oLgoKCSogZ3JhcGhpY3Mvd2luZy5jLCBpZjE2MzIvZ2RpLnNwZWMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvcGFsZXR0ZS5oLCBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL3BhbGV0dGUuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJQnJhZCBQZXBlcnMgPGJyYWRAbGludXhjYW5hZGEuY29tPgoJV2luRyBmaXhlcy4KCgkqIGNvbnRyb2xzL21lbnUuYywgaW5jbHVkZS9tZXNzYWdlLmgsIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9kaWFsb2cuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy90aW1lci5jOgoJU3RlcGhhbmUgTHVzc2llciA8c3RlcGhhbmVAbWFjYWRhbWlhbi5jb20+CgktRml4ZWQgTUVTU0FHRSBmdW5jdGlvbnMgdGhhdCB3ZXJlIHRodW5raW5nIGRvd24gdG8gMTYgYml0cyBpbXBsZW1lbnRhdGlvbi4KCVNvIFBlZWtNZXNzYWdlMzIsIEdldE1lc3NhZ2UzMiwgUG9zdE1lc3NhZ2UzMiwgUG9zdFRocmVhZE1lc3NhZ2UgYXJlIGZpeGVkCgl3aXRoIHRoaXMgcGF0Y2guIFVuaWNvZGUgdmVyc2lvbiBvZiB0aG9zZSBmdW5jdGlvbnMgaXMgY3VycmVudGx5IG9ubHkKCWNhbGxpbmcgdGhlIEFTQ0lJIHZlcnNpb24uCgktRml4ZWQgcXVldWUgc2lnbmFsaW5nIHVzaW5nIGEgbmV3IEVWRU5UIG9iamVjdCBpbiB0aGUgcXVldWUgZm9yIDMyIGJpdHMKCXRocmVhZC4gTXNnV2FpdEZvck11bHRpcGxlT2JqZWN0IGhhcyBiZWVuIGZpeGVkIGFuZCBpcyBub3cgYmxvY2tpbmcgb24gdGhlCglyaWdodCBFVkVOVC4KCgkqIG9iamVjdHMvbWV0YWZpbGUuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglHZXRNZXRhRmlsZUJpdHNFeCBzaG91bGQgd29yayBpbiBieXRlcyBub3Qgd29yZHMuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCURsbEdldENsYXNzT2JqZWN0IHNob3VsZCB0YWtlIGEgUkVGQ0xTSUQgbm90IGFuIExQQ0xTSUQuCgoJKiBvYmplY3RzL2RpYi5jLCBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDaGFuZ2UgZmF1bHQgaGFuZGxlciAnYWRkcicgYXJndW1lbnQgdG8gTFBDVk9JRC4KCgkqIGZpbGVzL2ZpbGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIFZJUlRVQUxfSGFuZGxlRmF1bHQgaWYgcmVhZC93cml0ZSByZXR1cm5zIEVGQVVMVC4KCgkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CglGaXggdHlwbyB0byBtYXAgR2V0VGV4dEV4dGVudFBvaW50IHRvIHRoZSBjb3JyZWN0IDMyQSB2ZXJzaW9uLgoKCSogZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcsIGluY2x1ZGUvcGVleGUuaCwgaW5jbHVkZS93aW5jb24uaCwgcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgd2luZG93cy94MTFkcnYvbWFpbi5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgc21hbGwgYnVnZml4ZXMsIGFkZGVkIG1vcmUgUEUgcmVsb2NhdGlvbiB0eXBlcyAoZm9yIFdpbkNFIG1vc3RseSksCglzb21lIGNvbnNvbGUgcHJvdG90eXBlcywgLWRsbCBpcyB1c2VmdWwgZm9yIHdpbmVsaWIgdG9vLCByZWd0ZXN0Cgljb21waWxlIGZpeGVkLgoKCSogaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgb2JqZWN0cy9jdXJzb3JpY29uLmM6CglQYXVsIFF1aW5uIDxwYXVscUBjb3JlbC5jYT4KCUdldEN1cnNvclBvcyBpcyBhY3R1YWxseSBhIEJPT0wuCgoJKiBpbmNsdWRlL21tc3lzdGVtLmg6IFBhdWwgUXVpbm4gPHBhdWxxQGNvcmVsLmNhPgoJQWRyaWFuIFRodXJzdG9uIDxhZHJpYW50QGNvcmVsLmNhPgoJTW9yZSB0eXBlcywgQysrIHByb3RlY3Rpb24sIGFuZCBhIHR5cG8gY29ycmVjdGlvbiBmb3IgbW1zeXN0ZW0uaC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaDogWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglNb3ZlIHRoZSAjZGVmaW5lIG9mIERVTU1ZVU5JT05OQU1FKiB0byBiZWZvcmUgdGhleSBhcmUgdXNlZC4KCUFkZCBhIGRlZmluaXRpb24gZm9yIERVTU1ZVU5JT05OQU1FIChhcyBvcHBvc2VkIHRvIERVTjEsIERVTjIuLi4pLgoJVXNlIHRoZSBjb3JyZWN0IFdJTkVMSUJfTkFNRV9BVyBtYWNybyBmb3IgVFZJVEVNIGFuZCByZWxhdGVkIG5hbWVzLgoJRGVmaW5lICJUVl9JVEVNIiB0byBhZ3JlZSB3aXRoIHlvdS1rbm93LXdobydzIGRvY3VtZW50YXRpb24uCgoJKiBkbGxzL3ZlcnNpb24vaW5mby5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglOVUxMIGlzIGEgdmFsaWQgYXJndW1lbnQgYXMgaGFuZGxlIGZvciBHZXRGaWxlVmVyc2lvbkluZm9TaXplMzJBLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQWRkZWQgYnVmZmVyZWQgZGV2aWNlIGFjY2VzcyBmb3IgRElucHV0J3MgbW91c2UgZHJpdmVyLgoKCSogZmlsZXMvZmlsZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVdyb25nIGFjY2VzcyBvbiBzZXJ2ZXIgaGFuZGxlIHdhcyBkZW1hbmRlZCAoR0VORVJJQ19SRUFEIGluc3RlYWQgb2YKCUdFTkVSSUNfV1JJVEUpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJldHRlciBpbXBsZW1lbnRhdGlvbiAodGFrZXMgc3RyaW5ncyBvciByZXMtaWQncyBub3cpLgoKCSogZGxscy92ZXJzaW9uL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogTlVMTCBwb2ludGVyIGNoZWNrIGZvciBvdXRwdXQgcGFyYW1ldGVycy4KCgkqIGRsbHMvc2hlbGwzMi9icnNmb2xkZXIuYzoKCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJRml4ZWQgdHdvIHBvaW50ZXIvaW50ZWdlciBtaXNtYXRjaCB3YXJuaW5ncy4KCgkqIGRvY3VtZW50YXRpb24vY29uc29sZTogWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglTcGVsbGluZyBmaXhlcy4KCgkqIGNvbnNvbGUveHRlcm0uYywgd2luMzIvY29uc29sZS5jOgoJWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+Cgl3aW5lX29wZW5wdHkgaXMgbm90IHByb3Blcmx5IGRlY2xhcmVkIChlaXRoZXIgbWlzc2luZyBvciBtaXNtYXRjaGVkCglkZWNsYXJhdGlvbnMpIGluIGJvdGggcGxhY2VzIHdoZXJlIGl0IGlzIHVzZWQuCgoJKiBpbmNsdWRlL3dpbmdkaS5oLCBvYmplY3RzL2RpYi5jOgoJWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglGaXggdHlwZXMgb2YgR2V0RElCaXRzIGZ1bmN0aW9ucyAoTFBTVFIgc2hvdWxkIGJlIExQVk9JRCkuCgoJKiBncmFwaGljcy94MTFkcnYvZGliLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUZpeGVzIHNldmVyYWwgcHJvYmxlbXMgd2l0aCBTZXRESUJpdHNUb0RldmljZSBpZiB4U3JjICE9IDAuCglUaGFua3MgdG8gSWFuIFNjaG1pZHQgZm9yIHRoZSBsb2dzLgoKCSogd2luZG93cy9tZGkuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJVGhlIHN5c3RlbXMgYnV0dG9ucyAobWluaW1pemUvcmVzdG9yZS9jbG9zZSkgbm93IGFwcGVhciBvbiB0aGUgbWVudQoJYmFyIG9mIG1kaSBhcHBsaWNhdGlvbi4KCgkqIGNvbnRyb2xzL21lbnUuYzogRnJhbmNvaXMgQm9pc3ZlcnQgPGZyYW5jb2lzQG1hY2FkYW1pYW4uY29tPgoJSW1wbGVtZW50ZWQgdGhlIG1hZ2ljIG1lbnUgaXRlbXMgaWQncyB1c2VkIGJ5IHdpbmRvd3Mgd2hlbiBpbnNlcnRpbmcKCXRoZSBtaW5pbWl6ZS9tYXhpbWl6ZS9jbG9zZSBidXR0b25zIGluIHRoZSBtZW51IGJhciBvZiBhbiBhcHBsaWNhdGlvbi4KCgkqIG9iamVjdHMvZW5obWV0YWZpbGUuYzogSmFzb24gTWNNdWxsYW4gPGptY2NAb250di5jb20+CglBZGRzIHN1cHBvcnQgZm9yIEVNUl9TVFJFVENIRElCSVRTIGluIEVNRnMuCgoJKiBwcm9ncmFtcy9hdml0b29scy9hdmlwbGF5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgaW1hZ2Ugc2l6ZSBhbmQgbGluZSBzaXplLCBhZGRlZCA4Yml0IGNvbG9yL3BhbGV0dGUgaGFuZGxpbmcuCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIHRoZSBKYXp6IEd1eSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglGaXhlZCBmb3JtYXR0aW5nIG9mIGNvZGUKCU5vdyBjaGFuZ2VzIHRvIGRpcmVjdG9yeSBvZiBwcm9ncmFtIHRvIGJlIHJ1biBiZWZvcmUgc3RhcnRpbmcgd2luZQoKCSogd2luZG93cy9xdWV1ZS5jLCB3aW5kb3dzL3VzZXIuYywgaW5jbHVkZS91c2VyLmgsIHNjaGVkdWxlci90aHJlYWQuYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBDbGVhbmVkIHVwIHRoZSBtZXNzYWdlIHF1ZXVlIHdoZW4gYSB0aHJlYWQgZXhpdCAoYnV0IG5vdCB0aGUgcHJvY2VzcykuCgktIE1vZGlmaWVkIFFVRVVFX0RlbGV0ZU1zZ1F1ZXVlIHRvIGV4aXQgZ3JhY2VmdWxseSAod2l0aG91dCBjcmFzaGluZyBXaW5lKSBpZgoJICBxdWV1ZSBsaW5rIGxpc3QgaXMgY29ycnVwdGVkLgoKCSogbXVsdGltZWRpYS9kc291bmQuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTb3VuZHMgd2VyZSBjdXQgb2ZmIGR1ZSB0byBpbnRlZ2VyIG92ZXJmbG93LiBGaXhlZC4KCgkqIGluY2x1ZGUvd2luZG93c3guaDogUGF1bCBRdWlubiA8cGF1bHFAY29yZWwuY2E+CglBZGRlZCB3aW5kb3dzeC5oIGZvciBXaW5lbGliLgoKRnJpIEZlYiAgNSAxNzo0MDo0NyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHByb2dyYW1zL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbWRsZ3RzdC8uY3ZzaWdub3JlLCBwcm9ncmFtcy9jbWRsZ3RzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGdyLmgsIHByb2dyYW1zL2NtZGxndHN0L2NtZGxnci5yYywgcHJvZ3JhbXMvY21kbGd0c3QvY21kbGd0c3QuYzoKCTxld2lsbEBuY2FsLnZlcmlvLmNvbT4KCUFkZGVkIGNvbW1vbiBkaWFsb2dzIHRlc3QgcHJvZ3JhbS4KCgkqIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvd2luLmgsIGluY2x1ZGUvd2lucG9zLmgsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9mb2N1cy5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglOb2VsIEJvcnRod2ljayA8bm9lbEBtYWNhZGFtaWFuLmNvbT4KCUFkZGVkIG1hbmFnZW1lbnQgYW5kIGFsbG9jYXRpb24gb2YgdGhlIFBFUlFVRVVFREFUQSBzdHJ1Y3R1cmUuCgoJKiBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy92Z2EuYywgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGEgZHVtcCBvZiB0aGUgcGFsZXR0ZSBjcmVhdGlvbiBmbGFncwoJLSBjaGFuZ2VkIHBhbGV0dGUgY3JlYXRpb24gY29kZSBpbiB2Z2EuYyB0byBwcmV2ZW50IHVzZWxlc3MgZXJyb3IKCSAgbWVzc2FnZQoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbiwgZmlsZXMvZHJpdmUuYywgd2luZS5pbmk6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglVc2UgdmZhdC93aW45NSBhcyBkZWZhdWx0LgoKCSogaW5jbHVkZS92ZncuaCwgbXVsdGltZWRpYS9tc3ZpZGVvLmMsIHByb2dyYW1zL2F2aXRvb2xzLy5jdnNpZ25vcmUsIHByb2dyYW1zL2F2aXRvb2xzL01ha2VmaWxlLmluLCBwcm9ncmFtcy9hdml0b29scy9hdmlpbmZvLmMsIHByb2dyYW1zL2F2aXRvb2xzL2F2aXBsYXkuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9tc3ZmdzMyLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVwZGF0ZWQgbXN2aWRlbyAvIHZmdy5oLCB1c2UgYnVpbHRpbiBtc3ZmdzMyLmRsbCBieSBkZWZhdWx0LCBhZGRlZAoJYXZpaW5mbyBhbmQgYXZpcGxheSBwcm9ncmFtcy4KCgkqIHdpbjMyL2NvbnNvbGUuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDb250aW51ZWQgaGFjayB0byB3aW4zMi9jb25zb2xlLmMsIHNvIHRoYXQgdGhlIElEQSBQcm8gRGlzYXNzZW1ibGVyCgl3b3JrcyBhZ2Fpbi4gTmVlZHMgbXVjaCBtb3JlIHdvcmsgaG93ZXZlci4KCgkqIG9sZS9zdG9yYWdlMzIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbmNsdWRlIG9iamJhc2UuaCBmb3IgQ29UYXNrTWVtKiBwcm90b3R5cGVzIChvciB3ZSBnZXQgV0lOQVBJCglwcm9ibGVtcykuCgoJKiBvbGUvc3RvcmFnZTMyLmg6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgbWlzc2luZyBVTE9ORyB0byBzdGF0aWMgY29uc3QgT0ZGU0VUX3h4LgoKVGh1IEZlYiAgNCAxNjo0NTo0MCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJVmFyaW91cyBtYW5wYWdlIHVwZGF0ZXMsIGluY2x1ZGluZyB0aGUgaW5jb3JyZWN0IHN0YXRlbWVudCBhYm91dCBnbGliYwoJYW5kIGNsb25lKCkuCgoJKiBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZzogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJRml4IHBvaW50ZXIgdG8gdGhlIFdpbmRvd3MgRGlzYXNzZW1ibGVyIDMyLiAgVGhhbmtzIHRvIEhlcmJlcnQKCVJvc21hbml0aCA8aGVycEB3aWxkc2F1Lmlkdi51bmktbGluei5hYy5hdD4gZm9yIHN1Z2dlc3RpbmcgdGhpcy4KCgkqIGRsbHMvbXNhY20zMi9kcml2ZXIuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFub3RoZXIgdXNhZ2Ugb2Ygbm9uLXBvcnRhYmxlIGZ1bmN0aW9ucy4uLgoKCSogbXNkb3MvZG9zbWVtLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTb21lIHZhbHVlcyBvZiBwQmlvc0RhdGEgYWRkZWQvZml4ZWQuCgoJKiBvYmplY3RzL3BhbGV0dGUuYywgd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9rZXlib2FyZC5jLCB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3VzZXIuYywgd2luZG93cy93aW4uYywgd2luZG93cy93aW5wb3MuYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy93aWRnZXRzLmMsIGRlYnVnZ2VyL2RiZy55LCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy93aW5nLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvY29sb3IuaCwgaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvZGVza3RvcC5oLCBpbmNsdWRlL2Rpc3BsYXkuaCwgaW5jbHVkZS9tYWluLmgsIGluY2x1ZGUvb3B0aW9ucy5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCBtaXNjL21haW4uYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jb2xvci5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIHNvbWUgbW9yZSBjb2RlIHRvIHRoZSBYMTEgZHJpdmVyLgoKCSogd2luZG93cy90dHlkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9kZXNrdG9wLmMsIHdpbmRvd3MvdHR5ZHJ2L2V2ZW50LmMsIHdpbmRvd3MvdHR5ZHJ2L2luaXQuYywgd2luZG93cy90dHlkcnYva2V5Ym9hcmQuYywgd2luZG93cy90dHlkcnYvbWFpbi5jLCB3aW5kb3dzL3R0eWRydi9tb25pdG9yLmMsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglUVFkgZHJpdmVyIGNoYW5nZXMuCgoJKiB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvY2xpcGJvYXJkLmMsIHdpbmRvd3MveDExZHJ2L2Rlc2t0b3AuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tYWluLmMsIHdpbmRvd3MveDExZHJ2L21vbml0b3IuYywgd2luZG93cy94MTFkcnYvbW91c2UuYywgd2luZG93cy94MTFkcnYvd25kLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9vYmplY3RzLmMsIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L3Blbi5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBncmFwaGljcy94MTFkcnYveGZvbnQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJWDExIGRyaXZlciBjaGFuZ2VzLgoKCSogdHN4MTEvdHNfeGY4NmRnYS5jLCB0c3gxMS90c194Zjg2dm1vZGUuYywgdHN4MTEvdHNfeGxpYi5jLCB0c3gxMS90c194cG0uYywgdHN4MTEvdHNfeHJlc291cmNlLmMsIHRzeDExL3RzX3hzaG0uYywgdHN4MTEvdHNfeHV0aWwuYywgaW5jbHVkZS90c194Zjg2ZGdhLmgsIGluY2x1ZGUvdHNfeGY4NnZtb2RlLmgsIGluY2x1ZGUvdHNfeGxpYi5oLCBpbmNsdWRlL3RzX3hwbS5oLCBpbmNsdWRlL3RzX3hyZXNvdXJjZS5oLCBpbmNsdWRlL3RzX3hzaG0uaCwgaW5jbHVkZS90c194dXRpbC5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglOb24tWDExIGNvbXBpbGUgZml4IGZvciBnZW5lcmF0ZWQgY29kZS4KCgkqIGluY2x1ZGUvbW9uaXRvci5oLCB3aW5kb3dzL211bHRpbW9uLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgbW9uaXRvciBhYnN0cmFjdGlvbi4KCgkqIGdyYXBoaWNzL3R0eWRydi8uY3ZzaWdub3JlLCBncmFwaGljcy90dHlkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3R0eWRydi9pbml0LmMsIE1ha2VmaWxlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglOZXcgVFRZIGRyaXZlciBmb3IgR0RJLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJLSBBZGRlZCB0aGUgZ3JhcGhpY3MvdHR5ZHJ2IGRpcmVjdG9yeS4KCS0gRG9uJ3Qgc2VhcmNoIGZvciByZWVudHJhbnQgWCB3aGVuIFggZG9lc24ndCBleGlzdC4KCS0gQWRkZWQgY29uZmlnIG9wdGlvbnMgSEFWRV9MSUJYWFBNCgktIEFkZGVkIGNoZWNrcyBpZiB0aGUgaGVhZGVyIGZpbGVzIGFsc28gZXhpc3QgZm9yIHNvbWUgbGlicmFyaWVzCgpUdWUgRmViICAyIDE2OjE0OjIzIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmMsIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkbGlnaHQuYywgZ3JhcGhpY3MvZDNkbWF0ZXJpYWwuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBpbmNsdWRlL2ludGVyZmFjZXMuaCwgb2xlL3NhZmVhcnJheS5jLCBvbGUvc3RnX2JpZ2Jsb2NrZmlsZS5jLCBvbGUvc3RnX3N0cmVhbS5jLCBvbGUvc3RvcmFnZTMyLmM6CglGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAcHNuLm5ldD4KCVJlcGxhY2VkIHJlZmVyZW5jZXMgdG8gaW50ZXJmYWNlcy5oIGJ5IHdpbmUvb2JqX3h4eC5oIGhlYWRlcnMgaW5zdGVhZAoJc2luY2UgdGhlc2UgaGVhZGVycyBhbHJlYWR5IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvbXNkb3MuaCwgbXNkb3MvQXR0aWMvY2Ryb20uYywgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludDJmLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVJlbW92ZWQgcmVmZXJlbmNlcyB0byBvYnNvbGV0ZSBtc2Rvcy9jZHJvbS5jIGZpbGUuCglNYWtlIHVzZSBvZiBuZXcgV2luZSBpbnRlcm5hbCBDRCBST00gaW50ZXJmYWNlLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCB0cmFja3MgaW5kZXhpbmcgaW4gbWNpY2RhLmMKCU1ha2UgdXNlIG9mIG5ldyBXaW5lIGludGVybmFsIENEIFJPTSBpbnRlcmZhY2UuCgoJKiBpbmNsdWRlL2Nkcm9tLmgsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2MvY2Ryb20uYzoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTmV3IFdpbmUgaW50ZXJuYWwgaW50ZXJmYWNlIGZvciBoYW5kbGluZyBDRCBSb20gKGVzcGVjaWFsbHkgYXVkaW8gQ0QKCVJPTSkuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvdHJlZXZpZXcuaCwgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJWnlnbyBCbGF4ZWxsIDx1ajIya2ZiY0B1bWFpbC5mdXJyeXRlcnJvci5vcmc+CglDaGFuZ2UgYSBmZXcgdHlwZXMgdG8gbWF0Y2ggeW91LWtub3ctd2hvJ3MgZGVjbGFyYXRpb25zLgoJSFRSRUVJVEVNIGlzIGEgc3RydWN0IF9UUkVFSVRFTSBGQVIqCglHZXRESUJpdHMgcGFzc2VzIGEgTFBWT0lEIGZvciB0aGUgYml0bWFwIGRhdGEsIG5vdCBMUFNUUi4KCUFkanVzdG1lbnQgb2YgV2luZSBDIGNvZGUgdG8gbWF0Y2ggdGhlIG5ldyB0eXBlcyBpbmNsdWRlZC4KCgkqIG1pc2MvbHpleHBhbmQuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgR0VUX0xaX1NUQVRFIG1hY3JvLgoKCSogZ3JhcGhpY3MvZDNkX3ByaXZhdGUuaCwgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIHN0dWJzIGZvciBuZXcgRGlyZWN0RHJhdzQgYW5kIERpcmVjdERyYXdTdXJmYWNlNCBtZXRob2RzLgoKCSogdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL0NIQU5HRVM6CglBbGJlcnQgZGVuIEhhYW4gPGFsYmVydGRAY29yZWwuY2E+CglGaXhlZCB3cm9uZyBvcmRlciBvZiByZXNfaWNvIGFuZCByZXNfYm1wIHdoaWNoIG11c3QgYmUgaW4gUlRfeHh4IG9yZGVyLgoKCSogZGxscy92ZXJzaW9uL3Jlc291cmNlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJcmVzbGVuIGNvdWxkIGJlIHVzZWQgdW5pbml0aWFsaXNlZCBpbiBHZXRGaWxlUmVzb3VyY2UzMiAoZml4ZXMgc29tZQoJc3RyYW5nZSBWZXJRdWVyeVZhbHVlIGNyYXNoZXMpLgoKCSogb2xlL25scy9zdmUubmxzOiBKYW4gRC4gPEphbi5EamFydkBtYm94MjAwLnN3aXBuZXQuc2U+CglBZGRlZCBkZWZpbml0aW9uIGZvciBMT0NBTEVfU0dST1VQSU5HLCBMT0NBTEVfU01PTkdST1VQSU5HIGFuZAoJTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUy4KCgkqIG1lbW9yeS9zZWxlY3Rvci5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogUHJlc2VydmUgRUFYIGluIFVuTWFwU0xGaXhBcnJheSgpLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlcyBsaXR0bGUgcG9pbnRlciBidWcgaW4gRFBBX0RlbGV0ZVB0cigpLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBtZW1vcnkvc3RyaW5nLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEtFUk5FTC40MzQgKFVuaWNvZGVUb0Fuc2kpLgoKCSogZmlsZXMvZHJpdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglHZXREaXNrRnJlZVNwYWNlRXgzMkEgY2FuIGdldCBudWxsIHBvaW50ZXJzIGFuZCBzdGlsbCBub3QgY3Jhc2guCgoJKiBncmFwaGljcy9wc2Rydi9kcml2ZXIuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQ2xlYXIgdXAgYXJncyB0byBQU0RSVl9BZHZhbmNlZFNldHVwRGlhbG9nLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVJlZHVjZSBNQVhfRk9OVF9TSVpFIHRvIDEwMDAuCgpTdW4gSmFuIDMxIDE5OjA0OjMxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9jb25zb2xlLmMsIGluY2x1ZGUvc2VydmVyLmgsIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGxvYWRlci9uZS9tb2R1bGUuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdHJhY2UuYzoKCUFkZGVkIGlucHV0IHF1ZXVlIHRvIHNlcnZlci1zaWRlIGNvbnNvbGUgb2JqZWN0LAoJcmVhZC93cml0ZV9jb25zb2xlX2lucHV0IHJlcXVlc3RzLCBhbmQgdXNlIHRoZW0gZm9yCglSZWFkL1dyaXRlQ29uc29sZUlucHV0LgoKCSogc2NoZWR1bGVyL2NsaWVudC5jOiBHZW9mZiBDbGFyZSA8Z3djQHJvb3QuY28udWs+CglGaXggdG8gYWxsb3cgZm9yIHJlY3Ztc2coKSByZXR1cm5pbmcgbGVzcyBkYXRhIHRoYW4gaXMgbmVlZGVkLgoKCSogaW5jbHVkZS90b29saGVscC5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUF0dGVtcHQgYXQgZml4aW5nIHRoZSBNQVhfUEFUSCBtdWx0aXBsZSBkZWZpbml0aW9uIHByb2JsZW0uCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBKYW4gMzEgMTA6MTM6NDQgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9uZS9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb2RpZnkgTkVfRmluZFR5cGVTZWN0aW9uIGFuZCBORV9GaW5kUmVzb3VyY2VGcm9tVHlwZSBzbyBhcyB0byBiZQoJdXNhYmxlIGJ5IHRoZSBWRVJTSU9OIGNvZGUuCgoJKiBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9wZV9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBHZXRSZXNEaXJFbnRyeUEgZm9yIHVzZSBieSB0aGUgVkVSU0lPTiBjb2RlLgoKCSogbWlzYy9BdHRpYy92ZXIuYywgbWlzYy9NYWtlZmlsZS5pbjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBvbGQgVkVSLkRMTCBjb2RlLgoKCSogZGxscy92ZXJzaW9uLy5jdnNpZ25vcmUsIGRsbHMvdmVyc2lvbi9NYWtlZmlsZS5pbiwgZGxscy92ZXJzaW9uL2luZm8uYywgZGxscy92ZXJzaW9uL2luc3RhbGwuYywgZGxscy92ZXJzaW9uL3Jlc291cmNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGF0aW9uIG9mIFZFUlNJT04uRExMLiBCYXNlZCBvbiBvbGQgbWlzYy92ZXIuYy4KCS0gQWNjZXNzaW5nIFBFIHZlcnNpb24gaW5mbyByZXNvdXJjZXMgc2hvdWxkIHdvcmsgY29ycmVjdGx5IG5vdy4KCS0gRml4ZWQgbWVtb3J5IGxlYWtzLgoJLSBDbGVhbiBzZXBhcmF0aW9uIG9mIDE2LSBhbmQgMzItYml0IHBhcnRzLgoJLSBNaW5vciBidWdmaXhlcy4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9NYWtlZmlsZS5pbjoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkIG5ldyBzdWJkaXJlY3RvcmllcyBkbGxzL3ZlciBhbmQgZGxscy92ZXJzaW9uLgoKCSogaWYxNjMyL3Zlci5zcGVjLCBkbGxzL3Zlci8uY3ZzaWdub3JlLCBkbGxzL3Zlci9NYWtlZmlsZS5pbiwgZGxscy92ZXIvdmVyMTYuYywgaW5jbHVkZS92ZXIuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50YXRpb24gb2YgVkVSLkRMTC4gVGh1bmtzIHVwIHRvIFZFUlNJT04uRExMLgoKCSogbWlzYy9sc3RyLmM6IFBhc2NhbCBDdW9xIDxjdW9xQHZpc2FuLmlucmlhLmZyPgoJSXNDaGFyQWxwaGEzMkE6IHVzZSBsb29rLXVwIHRhYmxlIGZyb20gb2xlMm5scy5jLgoKCSogb2xlL29sZTJubHMuYzogUGFzY2FsIEN1b3EgPGN1b3FAdmlzYW4uaW5yaWEuZnI+CglMQ01hcFN0cmluZzMyQTogSW1wbGVtZW50ZWQgZmxhZ3MgTk9STV9JR05PUkVOT05TUEFDRSBhbmQKCU5PUk1fSUdOT1JFU1lNQk9MUyBpbiBzdHJpbmcgbWFwcGluZyBtb2RlLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJQ3JlYXRlIFggd2luZG93IGZvciBjaGlsZCB3aW5kb3dzIHJlcGFyZW50ZWQgdG8gYmUgdG9wIGxldmVsIHdpbmRvd3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGluY2x1ZGUvc2hlbGwuaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgZm9yIFBhdGhRdWFsaWZ5MzJbQXxXXS4KCgkqIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL2RkcmF3LmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUJhYnJpYW4gVmlrdG9yIDx2QHVseXNzZXMuc2NoLmJtZS5odT4KCS0gYWRkZWQgc3VwcG9ydCBmb3IgQ29sb3JLZXlpbmcgZHVyaW5nIGJsaXRzCgktIG1pc2NlbGxhbmVvdXMgZml4ZXMKCgkqIGRsbHMvbnRkbGwvcnRsLmMsIGluY2x1ZGUvbnRkbGwuaCwgcmVsYXkzMi9udGRsbC5zcGVjOgoJQWxleCBLb3JvYmthIDxrb3JvYmthQGdhbGF4eS5hbXMuc3VueXNiLmVkdT4KCUFkZGVkIGFuIGltcGxlbWVudGF0aW9uIG9mIE1SU1cgbG9ja3MuCgoJKiBtc2Rvcy9pbnQyMS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIG1pc3NpbmcgaW5jbHVkZXMgKHRoZSBQU1AgaGFuZGxpbmcgd2FzIGluY29ycmVjdCwgYXMgdGhlCglNWl9TVVBQT1JURUQgZGVmaW5pdGlvbiB3YXMgbWlzc2luZykuIEFkZGVkIGEgc2ltcGxlIGhhbmRsZXIgZm9yCglkaXJlY3QgY29uc29sZSBpbnB1dCwgd2hpY2ggbmVlZHMgdG8gYmUgaW1wcm92ZWQuCgoJKiBjb25zb2xlL3R0eS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNtYWxsIGZpeC4KCgkqIHNjaGVkdWxlci9zeW5jaHJvLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTGlzdCBoYW5kbGVzIFdhaXRGb3JNdWx0aXBsZU9iamVjdHMgaXMgd2FpdGluZyBmb3Igd2hlbiBydW5uaW5nIHdpdGgKCS1kZWJ1Z21zZyArd2luMzIuCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBmb3IgR2V0U2VjdXJpdHlEZXNjcmlwdG9yQ29udHJvbC4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbmRvd3MvdXNlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIGZvciBHZXRVc2VyT2JqZWN0U2VjdXJpdHkuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQgaGFuZGxpbmcgb2YgUkVHX01VTFRJX1NaIGFuZCBmaXhlZCBzbWFsbCBidWcgaW4KCVJlZ1NldFZhbHVlLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRXZlcnkgRU1fR0VUTElORSBzZW5kIGJldHdlZW4gYSAzMlcgdG8gYSAzMkEgd2luZG93IHJldHVybmVkCglpbmNvbXBsZXRlIHZhbHVlcyBiZWZvcmUgKHRoZSBmaXJzdCAyIGNoYXJzIHdoZXJlIGN1dCBhd2F5KS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IHR5cG8gaW4gU2V0V2luZG93UG9zMzIuCgpTYXQgSmFuIDMwIDE1OjU1OjI4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2J1aWx0aW4zMi5oLCBtaXNjL21haW4uYywgcmVsYXkzMi9idWlsdGluMzIuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW5hYmxlL2Rpc2FibGUgcmVsYXkzMiBkZWJ1Z2dpbmcgb24gdGhlIGZseS4gU3RhcnQgYXBwIHdpdGgKCS1kZWJ1Z21zZyArcmVsYXkgb3Igd2FybityZWxheS4gU3VnZ2VzdGVkIGJ5IEp1ZXJnZW4gU2NobWllZC4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBncmFwaGljcy9kM2RfcHJpdmF0ZS5oLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvd2luZV9nbC5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIE1lc2EncyBoZWFkZXIgZmlsZXMuCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglGaXhlZCBlcnJvciBtZXNzYWdlcy4KCgkqIG1pc2MvY29tbWRsZy5jOiBCZXJuZCBIZXJkIDxoZXJkQGhlcmRzb2Z0LmNvbT4KCVVzZSBwcm9wZXIgMTYtPjMyIG1lc3NhZ2UgY29udmVyc2lvbiBpbiBGSUxFRExHX0NhbGxXaW5kb3dQcm9jLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IEJlcm5kIEhlcmQgPGhlcmRAaGVyZHNvZnQuY29tPgoJU2V0UGFyZW50IHNob3VsZCBsaW5rIHRoZSB3aW5kb3cgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaXN0LgoKCSogd2luZG93cy93aW5wb3MuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglJbiBXaW5kb3cgU2V0V2luZG93UG9zIHdpdGggU1dQX0hJREVXSU5ET1cgZG9lcyBub3QgcmVtb3ZlCgl0aGUgZm9jdXMgZnJvbSB0aGUgZm9jdXMgd2luZG93OyBTaG93V2luZG93IHdpdGggU1dfSElERSBkb2VzLgoJU28gbW92ZSB0aGUgY29kZSB0aGF0IGRvZXMgdGhpcyBmcm9tIFNldFdpbmRvd1BvcyB0byBTaG93V2luZG93LgoKCSogbWVtb3J5L3N0cmluZy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIGZvciBOVUxMIGluIGxzdHJjcHkqIChXaW5kb3dzIHVzZXMgcmVhbCBleGNlcHRpb24gaGFuZGxlcnMpLgoKCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqdXJhbkBjc2UucHN1LmVkdT4KCURvbid0IGluc3RhbGwgaW5jbHVkZSBmaWxlcyB3aGVuIC0tZGlzYWJsZS1saWIgaXMgdXNlZC4KCgkqIHJlbGF5MzIvd2lubW0uc3BlYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIFdJTk1NIGpveSogLnNwZWMgZW50cmllcy4KCgkqIG1zZG9zL3htcy5jOiBBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglYTVMgZml4LgoKCSogbXNkb3MvZG9zbWVtLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTcGVsbGluZyBmaXguCgoJKiBSRUFETUU6IEFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCURvYyB1cGRhdGUuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50ZXJydXB0cy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJU29tZSBpbnRlcnJ1cHQgZW5oYW5jZW1lbnRzLgoKCSogbXNkb3MvaW9wb3J0cy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJaW1wbGVtZW50ZWQgdGltZXIgbGF0Y2hpbmcKCXRyYWNlIG1lc3NhZ2UgZml4Cgl0ZW1wb3JhcnkgImZpeCIgZm9yIExpbnV4J3MgY29hcnNlIHRpbWVyIHJlc29sdXRpb24KCgkqIGlmMTYzMi9jb21wb2JqLnNwZWMsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIG9sZS9jb21wb2JqLmMsIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIHRoZSBzdGFydHVwLXNodXRkb3duIG1lY2hhbmlzbSBmb3IgdGhlIENPTSBzdWJzeXN0ZW0uCglJbXBsZW1lbnRlZCB0aGUgQ2xhc3Mgb2JqZWN0IHJlZ2lzdHJhdGlvbiBtZWNoYW5pc20uCgoJKiBwcm9ncmFtcy9jbG9jay8uY3ZzaWdub3JlLCBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmU6IEFkZGVkIEZpLnMKCgkqIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9zdGdfYmlnYmxvY2tmaWxlLmMsIG9sZS9zdGdfc3RyZWFtLmMsIG9sZS9zdG9yYWdlLmMsIG9sZS9zdG9yYWdlMzIuYywgb2xlL3N0b3JhZ2UzMi5oLCByZWxheTMyL29sZTMyLnNwZWM6CglGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgT0xFIHN0cnVjdHVyZWQgc3RvcmFnZS4gVGhlIG1haW4KCWZlYXR1cmVzIG9mIHRoaXMgaW1wbGVtZW50YXRpb24gYXJlOgoJLSBDYW4gb3BlbiBzdG9yYWdlcyBjcmVhdGVkIGluIFdpbmRvd3MuCgktIENhbiBjcmVhdGUgbmV3IHN0b3JhZ2VzIHRoYXQgdGhlIHdpbmRvd3MgbGlicmFyaWVzIGNhbgoJICByZWFkLgoJLSBQcm92aWRlcyBhbGwgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY3JlYXRlL29wZW4vcmVtb3ZlIGFuZAoJICByZW5hbWUgc3RyZWFtcyBhbmQgc3RvcmFnZXMgaW5zaWRlIHRoZSBtYWluIHN0b3JhZ2Ugb2JqZWN0LgoKCSogaW5jbHVkZS9taXNjZW11LmgsIG1pc2NlbXUvbWFpbi5jLCBncmFwaGljcy9kZHJhdy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglEZWZpbmVkIFJFU1RPUkVfU0lHTkFMUyBieSBkZWZhdWx0IGFuZCBjYWxsIFNJR05BTF9FbXVsYXRvckluaXQKCXRocm91Z2ggYSBmdW5jdGlvbiBwb2ludGVyIGluc3RlYWQuIEFkZGVkIGEgZmV3IHRyYWNlcy4gRml4ZWQgdGhlCgkiTWVtb3J5IGNvcnJ1cHRpb24gISIgbWVzc2FnZSBpbiBER0EgbW9kZS4gQ29tbWVudGVkIG91dCBhbgoJdW5uZWNlc3NhcnkgVFNYRjg2VmlkTW9kZVNldFZpZXdQb3J0IHRoYXQgY2F1c2VkIG15IFggc2VydmVyIHRvCglhY3QgdXAsIHJlbHlpbmcgb24gVFNYRjg2REdBU2V0Vmlld1BvcnQgaW5zdGVhZC4KCgkqIGdyYXBoaWNzL3BzZHJ2L3RleHQuYywgbXNkb3MvaW50MmYuYywgcHJvZ3JhbXMvd2luaGVscC9obHAyc2dtbC5jLCBkbGxzL2NvbWN0bDMyL2NvbWN0bDMydW5kb2MuYywgZmlsZXMvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb21lIG1vcmUgd2FybmluZ3MgYW5kIGJ1Z3MgZml4ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL3RhYi5jLCBpbmNsdWRlL3RhYi5oOiBBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJU21hbGwgdXBkYXRlLgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3RyZWV2aWV3LmgsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9zaGVsbDMyL2Jyc2ZvbGRlci5jOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCS0gVGhlIHVzdWFsIGJ1Z2ZpeGVzLgoJLSBCZXR0ZXIgdW5pY29kZSBzdXBwb3J0IChvbmx5IGRlZmluZXMsIGN1cnJlbnRseSkKCS0gRHJhZyAmIGRyb3AgaW1wbGVtZW50ZWQuCgktIExQU1RSX1RFWFRDQUxMQkFDSyBzaG91bGQgd29yayBub3cuCgktIEZpcnN0IHN0YXJ0IGF0IGN1c3RvbSBkcmF3IGNvZGUuCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIHN1cmUgdGhhdCB0aGUga2V5c3RhdGUgcmVjZWl2ZWQgYnkgdGhlIFdNX1hCVVRUT05VUCBhbmQKCVdNX1hCVVRUT05ET1dOIG1hdGNoZXMgdGhlIG1lc3NhZ2UuIEluIFgsIHRoZSBrZXlzdGF0ZSBpcyBjaGFuZ2VkCglhZnRlciB0aGUgbWVzc2FnZSBpcyBwcm9jZXNzZWQuICBJbiBXaW5kb3dzLCBpdCBpcyBjaGFuZ2VkIGJlZm9yZS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgZGxscy9hZHZhcGkzMi9zZXJ2aWNlLmM6CglNYXR0aGV3IEJlY2tlciA8bWJlY2tlckBnbGFzc2NpdHkubmV0PgoJRG9jIHVwZGF0ZXMuCgoJKiB3aW4zMi9maWxlLmM6IEJlcmVuZCBSZWl0c21hIDxiZXJlbmQgYXQgYXNzZXQtY29udHJvbC5jb20+CglTZXRGaWxlQXR0cmlidXRlczMyQSBjaGFuZ2VkIHRvIG1ha2UgZmlsZSB3cml0ZWFibGUgd2hlbgoJRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkgaXMgbm90IHNldC4KCgkqIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGNvbnNvbGUvbmN1cnNlcy5jLCBpbmNsdWRlL2NvbnNvbGUuaCwgbXNkb3MvaW50MTAuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJUHJlbGltaW5hcnkgY29sb3IgY29uc29sZSBzdXBwb3J0LgoKCSogZG9jdW1lbnRhdGlvbi9sYW5ndWFnZXMsIHByb2dyYW1zL2Nsb2NrL0NoYW5nZUxvZywgcHJvZ3JhbXMvY2xvY2svRmkucmMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9tYWluLmMsIHByb2dyYW1zL25vdGVwYWQvQ2hhbmdlTG9nLCBwcm9ncmFtcy9ub3RlcGFkL0ZpLnJjLCBwcm9ncmFtcy9ub3RlcGFkL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcmVzb3VyY2VzL3N5c3Jlc19GaS5yYzoKCUp1a2thLVBla2thIElpdm9uZW4gPGppaXZvbmVuQHBvc2VpZG9uLmNzLmh1dC5maT4KCVVwZGF0ZWQgRmlubmlzaCBsYW5ndWFnZSBzdXBwb3J0LgoKRnJpIEphbiAyOSAxNToxMjoxMSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG11bHRpbWVkaWEvbXN2aWRlby5jLCBvbGUvZ3VpZC5jLCBwcm9ncmFtcy9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvYXZpdG9vbHMvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvYXZpdG9vbHMvTWFrZWZpbGUuaW4sIHByb2dyYW1zL2F2aXRvb2xzL2ljaW5mby5jLCByZWxheTMyL21zdmZ3MzIuc3BlYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9vbGVhdXRvLmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVVwZGF0ZWQgbXN2aWRlby4gTmV3IHByb2dyYW0gJ2ljaW5mbyBbLWFib3V0XSBbLWNvbmZpZ3VyZV0nIHRvCglxdWVyeSBpbnN0YWxsZWQgKHdpbjMyKSBjb21wcmVzc29ycy4gU3RhcnRlZCBvbiBBVklGSUxFIHN1cHBvcnQuCgpUaHUgSmFuIDI4IDE3OjU2OjE0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBvbGUvTWFrZWZpbGUuaW4sIG9sZS9iaW5kY3R4LmMsIG9sZS9maWxlbW9uaWtlci5jLCBvbGUvaXRlbW1vbmlrZXIuYywgb2xlL21vbmlrZXIuYywgb2xlL29sZTIuYzoKCU5vb21lbiBIYW16YSA8bm9vbWVuQG1hY2FkYW1pYW4uY29tPgoJQWRkZWQgYSBzdHViIGltcGxlbWVudGF0aW9uIGZvciBGaWxlTW9uaWtlciwgSXRlbU1vbmlrZXIgYW5kIEJpbmRDdHgKCWNsYXNzZXMuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubDoKCU5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJSW1wbGVtZW50ZWQgdGhlIHN5bWJvbGZpbGUgY29tbWFuZCAoYXMgbWVudGlvbmVkIGJ5IHRoZSBoZWxwCgljb21tYW5kKS4gVGhpcyByZWFkcyBhIHN5bWJvbCBmaWxlIGluIHRoZSBmb3JtYXQgZ2VuZXJhdGVkIGJ5IG5tLgoKCSogbXVsdGltZWRpYS9kcGxheS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJLSBTbWFsbCBidWcgZml4LgoJLSBBZGRlZCBkaXJlY3QgcGxheSBhc2NpaSBpbnRlcmZhY2VzLgoJLSBGaXhlZCB1cCB0aGUgUXVlcnlJbnRlcmZhY2UgZm9yIGRwbGF5IGFuZCBkcGxheWxvYmJ5IHRvIGhhbmRsZSBhbGwgY2FzZXMuCgoJKiBtZW1vcnkvdmlydHVhbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIEZJTEVfVklFVyBzdHJ1Y3QgaW5pdGlhbGlzYXRpb24uCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgbm9uLWkzODYgY29tcGlsZS4KCgkqIGdyYXBoaWNzL3ZnYS5jLCBtc2Rvcy9kcG1pLmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9tbWlvLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvaG90a2V5LmMsIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYywgZGxscy9jb21jdGwzMi9wYWdlci5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL2NvbWN0bDMyL3JlYmFyLmMsIGRsbHMvY29tY3RsMzIvdGFiLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6CglKYW1lcyBKdXJhbiA8anJqMTIwQHBzdS5lZHU+CglDb21tZW50ZWQgb3V0IHVudXNlZCB2YXJpYWJsZXMgdG8gcHJldmVudCBuZWVkbGVzcyBjb21waWxlciB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZGRlbWwuaCwgbWlzYy9kZGVtbC5jOgoJS2VpdGggTWF0dGhld3MgPGtlaXRoX21Ac3dlZW5leS5kZW1vbi5jby51az4KCTFzdCBjdXQgaW1wbGVtZW50YXRpb24gb2YgRGRlSW5pdGlhbGl6ZTMyVyBhbmQgc3VwcG9ydGluZyBjb2RlLgoKCSogZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jOgoJTWF0dGhldyBCZWNrZXIgPG1iZWNrZXJAZ2xhc3NjaXR5Lm5ldD4KCURvY3VtZW50YXRpb24gc3RhbmRhcmRpemF0aW9ucy4KCgkqIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglTdGVwaGFuZSBMdXNzaWVyIDxzdGVwaGFuZUBtYWNhZGFtaWFuLmNvbT4KCS0gTWFkZSB0aGUgbWVzc2FnZSBxdWV1ZSBhY2Nlc3MgdG8gYmUgdGhyZWFkIHNhZmUuIChVc2luZyB0d28gbmV3CgkgIGZ1bmN0aW9ucyB0byBhY2Nlc3MgdGhlIG1lc3NhZ2UgcXVldWUsIFFVRVVFX0xvY2soKSwgUVVFVUVfVW5sb2NrKCkKCSAgaW5zdGVhZCBvZiBHbG9iYWxMb2NrMTYoKSkuCgktIEZpeGVkIFFVRVVFX0R1bXBRdWV1ZSAodXNlZCBieSAiaW5mbyBxdWV1ZSA8aGFuZGxlPiIgd2l0aCB0aGUKCSAgd2luZS1kZWJ1Z2dlcikuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBtdWx0aW1lZGlhL21tc3lzdGVtLmMsIG9iamVjdHMvdGV4dC5jLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3dpbnByb2MuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGdyYXBoaWNzL2QzZG1hdGVyaWFsLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgaWYxNjMyL3JlbGF5LmMsIGluY2x1ZGUvd2luY29uLmgsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL2ltbS5jLCBtaXNjL2x6ZXhwYW5kLmMsIG1zZG9zL2ludDIxLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvbnRkbGwvcnRsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGEgbG90IG9mIHdhcm5pbmdzIGZvciBwb3NzaWJsZSBwcm9ibGVtcy4KCgkqIG1pc2MvY29tbS5jOiBIZXJiZXJ0IFJvc21hbml0aCA8aGVycEB3aWxkc2F1Lmlkdi51bmktbGluei5hYy5hdD4KCUZpeGVkIHR5cG8uCgoJKiB0b29scy9idWdfcmVwb3J0LnBsOiBBZGFtIHRoZSBKYXp6IEd1eSA8bWFnaWNib3hAYmVzdHdlYi5uZXQ+CglGaXhlZCB2YXJpb3VzIGJ1Z3MuCglNYWRlIG5ld2JpZSBtb2RlIGVhc2llci4KCgkqIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL3dpbmUvd2ludXNlcjE2LmgsIGluY2x1ZGUvd2ludXNlci5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBHZXRJY29uSW5mbzE2ICguc3BlYyxJQ09OSU5GTyBzdHJ1Y3QgaXMgZGlmZmVyZW50IGZvciBXaW4xNi9XaW4zMikuCgoJKiBjb25zb2xlL25jdXJzZXMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTd2l0Y2ggbmN1cnNlcy5oL2N1cnNlcy5oIGluY2x1ZGUgKHdvcmtzIGJldHRlciBmb3IgRnJlZUJTRCkuCgoJKiB3aW5kb3dzL2RyaXZlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIGxvYWRpbmcgb2Ygd2luMzIgZHJpdmVycy4KClR1ZSBKYW4gMjYgMTc6Mjk6NDkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGZpbGVzL3Byb2ZpbGUuYzogRG9uJ3QgYWJvcnQgUFJPRklMRV9HZXRTZWN0aW9uIG9uIGVtcHR5IGtleXMuCgoJKiBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglUZW1wb3JhcnkgI2lmIDAnZWQgcGFydCBmb3IgYnVpbHRpbiBtb2R1bGVzIGluIE1TQUNNIHRvIG1ha2UgaXQKCWNvbXBpbGUgd2l0aCB0aGUgcGF0Y2ggZm9yIGxvYWRhYmxlIGRyaXZlcnMuCgoJKiBpbmNsdWRlL2RyaXZlci5oLCByZWxheTMyL3dpbm1tLnNwZWMsIHdpbmRvd3MvZHJpdmVyLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgZHJpdmVycyBpbiBXaW5lLgoKCSogdG9vbHMvYnVnX3JlcG9ydC5wbDogQWRhbSB0aGUgSmF6eiBHdXkgPG1hZ2ljYm94QGJlc3R3ZWIubmV0PgoJQSBwZXJsIHNjcmlwdCB0byBwcm9kdWNlIGEgYnVnIHJlcG9ydCB3aXRoIGxpdHRsZSBoYXNzbGUuCgoJKiBncmFwaGljcy9kaXNwZGliLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgKGR1bW15KSBEZWF0aC9SZXN1cnJlY3Rpb24gY2FsbHMgdG8gRGlzcGxheURpYi4KCgkqIG1pc2MvbHpleHBhbmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbGxvY2F0ZSBhIERPUyBoYW5kbGUgaWYgd2Ugb3BlbiBhIG5vcm1hbCBmaWxlIHdpdGggTFpPcGVuRmlsZTE2LgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGFkZGVkIGRlcHRoIGNvbnZlcnNpb24gcm91dGluZXMgKG9ubHkgOGJwcCAtPiAxNiBicHAgZm9yIG5vdykKCS0gYWRkZWQgc3VwcG9ydCBvZiBERVBUSF9GSUxMIGZvciBCbGl0cwoJLSBhZGRlZCBzb21lIGZsYWdzIGluIEdldENhcHMgdG8gZ2V0IHNvbWUgZ2FtZXMgd29ya2luZwoKCSogaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgb2JqZWN0cy9jdXJzb3JpY29uLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBHZXRJY29uSW5mbzE2IC0+IGNhbGwgdG8gR2V0SWNvbkluZm8zMi4KCgkqIHNjaGVkdWxlci9jbGllbnQuYzogQ29tbWVudGVkIG91dCBFWEVDX1NFUlZFUgoKCSogZGxscy9jb21jdGwzMi9kcmFnbGlzdC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCTMgbWlzc2luZyBXSU5BUEkgYWRkZWQuCgoJKiBkbGxzL3NoZWxsMzIvZW51bWlkbGlzdC5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hyZXMucmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNtYWxsIGZpeGVzLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBpbmNsdWRlL2NvbW1jdHJsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoYW5nZWQgc29tZSB0cmVldmlldyByZWxhdGVkIGRlZmluaXRpb25zLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvYnJzZm9sZGVyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIFNIQnJvd3NlRm9yRm9sZGVyKCkgZGlhbG9nLgoKCSogZGVidWdnZXIvbXNjLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgdHlwbyBpbiB0eXBlIChyZW1vdmVkIHF1aXRlIGEgZmV3IHdhcm5pbmdzKS4KCgkqIGRsbHMvYWR2YXBpMzIvc2VjdXJpdHkuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBHZXRTZWN1cml0eURlc2NyaXB0b3JPd25lci9Hcm91cCwgUmV2ZXJ0VG9TZWxmIHN0dWJzLgoJUmV0dXJuIE5VTEwgZnJvbSBPcGVuVGhyZWFkVG9rZW4uCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGVuZGxlc3NseSBsb29wIGluIENPTlNPTEVfZ2V0X2lucHV0IGFmdGVyIEVPRi4KCUNyZWF0ZSB4dGVybSBldmVuIGlmIHN0ZGluIGlzIG5vdCBhIHRlcm1pbmFsaGFuZGxlLgoJU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uOiBPbmx5IG1ha2UgY29tcGxleCBjb25zb2xlIG9uIHJvdyBjaGFuZ2UsCglpZ25vcmUgaW50ZXJsaW5lIHBvc2l0aW9uaW5nIChzbyB0aGUgY3lnd2luIGNtZGxpbmUgdG9vbHMgZG8gbm90CgljcmVhdGUgeHRlcm1zIHVubmVjZXNzYXJ5KQoKCSogbWlzYy9wcmludGRydi5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1ha2Ugc3VyZSBEcnZHZXRQcmludGVyRGF0YSByZXR1cm5zIHRoZSBjb3JyZWN0IGRhdGEgaWYgY2JEYXRhIDw9IDEKCgkqIGluY2x1ZGUvcXVldWUuaCwgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYywgd2luZG93cy93aW4uYzoKCVN0ZXBoYW5lIEx1c3NpZXIgPHN0ZXBoYW5lQG1hY2FkYW1pYW4uY29tPgoJLSBDaGFuZ2luZyBNRVNTQUdFUVVFVUUgc3RydWN0dXJlIGFjY29yZGluZyB0byBVbHJpY2ggcHJvcG9zaXRpb24uCgktIE9uZSBtZXNzYWdlIHF1ZXVlIGZvciBldmVyeSB0aHJlYWQgbmVlZGluZyBpdC4KCS0gTWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgcXVldWUgYXJlIG5vdyBzdG9yZWQgaW4gYSBsaW5rZWQgbGlzdAoJLSBNZXNzYWdlcyBhcmUgYWxsb2NhdGVkIGluIHRoZSBzeXN0ZW0gaGVhcC4KCS0gTWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgcXVldWUgYXJlIDMyIGJpdHMgKE1TRzMyKS4KCS0gQWxsIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyByZWdhcmRpbmcgbWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgcXVldWUgYXJlCgkgIHRocmVhZCBzYWZlLgoKU3VuIEphbiAyNCAxOToxNDo1OCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZGxscy9jb21jdGwzMi9jb21tY3RybC5jLCBkbGxzL2NvbWN0bDMyL2ZsYXRzYi5jLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvY29tY3RsMzIvc3RhdHVzLmMsIGluY2x1ZGUvZmxhdHNiLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgc2V2ZXJhbCBidWdzIGFuZCB0eXBvcy4KCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJVXBkYXRlcyBhbmQgZml4ZXMuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2RyYWdsaXN0LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCU5ldyBkcmFnIGxpc3QgY29udHJvbC4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgcG9pbnRlciBidWdzIGluIERQQV9JbnNlcnRQdHIoKSBhbmQgRFBBX0RlbGV0ZVB0cigpLgoKCSogZGxscy9jb21jdGwzMi9wcm9ncmVzcy5jLCBpbmNsdWRlL3Byb2dyZXNzLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgV01fW0cvU11FVEZPTlQgaGFuZGxpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3BhZ2VyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBXTV9DT01NQU5EIGFuZCBXTV9OT1RJRlkgaGFuZGxpbmcuCgoJKiBkbGxzL2NvbWN0bDMyL3Rvb2x0aXBzLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCByZWRyYXcgYnVnIGZvciB0cmFja2luZyB0b29sdGlwcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHNvbWUgbWVzc2FnZXMgdG8gdGhlIHJlYmFyIGNvbnRyb2wuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBHZW9mZiBDbGFyZSA8Z3djQHJvb3QuY28udWs+CglTZXZlcmFsIGludGVybmFsIGZ1bmN0aW9ucyB3b24ndCBjb21waWxlIHdoZW4gdGhlIGNvbmRpdGlvbmFsCgkjaWYgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX05ldEJTRF9fKQoJY29tZXMgb3V0IGZhbHNlLiAgSSBtb3ZlZCB0aGUgY29uZGl0aW9uYWxzIGFyb3VuZCBzbyB0aGF0Cgl0aGUgZmlsZSB3b3VsZCBhdCBsZWFzdCBjb21waWxlLiAgTm90IHN1cmUgaWYgaXQgZG9lcyB0aGUKCXJpZ2h0IHRoaW5nIG9uIG5vbi1saW51eC9GcmVlQlNEL05ldEJTRCBzeXN0ZW1zLgoKCSogbWlzYy90b29saGVscC5jOiBHZW9mZiBDbGFyZSA8Z3djQHJvb3QuY28udWs+CglNb3ZlZCBwcm9jZXNzLmggaGlnaGVyIHVwIHRoZSBpbmNsdWRlIGxpc3QsIHRvIGF2b2lkIGEgcHJvYmxlbSB3aXRoCgkiRVJSIiBiZWluZyByZWRlZmluZWQgaW4gc3lzL3JlZ3NldC5oLgoKCSogbWlzYy9jb21tLmM6IEdlb2ZmIENsYXJlIDxnd2NAcm9vdC5jby51az4KCVRoZSBCNTc2MDAgYW5kIEIxMTUyMDAgc3ltYm9scyBhcmUgbm90IGRlZmluZWQgaW4gVW5peHdhcmUuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJQ2hhbmdlIFNXXz8/PyBvcHRpb25zIG9uIGxpc3QgYm94IHNjcm9sbGluZyBzbyB0aGF0IHRoZXkgbWF0Y2ggd2hhdAoJV2luZG93cyBkb2VzLgoKCSogbG9hZGVyL2Rvcy9kb3N2bS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIERPUyBoYW5kbGUgYWxsb2NhdGlvbiBzbGlnaHRseSwgdG8gZml4IHBvdGVudGlhbCBtZW1vcnkKCWxlYWtzIGFuZCBsb3N0IGhhbmRsZXMuIEFsc28gcmVtb3ZlZCBzb21lIHVzZWxlc3MgaW5pdCBjb2RlLgoKCSogZ3JhcGhpY3MvcHNkcnYvYWZtLmMsIGdyYXBoaWNzL3BzZHJ2L3RleHQuYywgaWYxNjMyL2R1bW15LmMsIGlmMTYzMi9nZGkuc3BlYywgbWlzYy9wcmludGRydi5jOgoJTmljayBIb2xsb3dheSA8Tmljay5Ib2xsb3dheUBhbGZpZS5kZW1vbi5jby51az4KCUludGVybmFsIFBvc3RTY3JpcHQgcHJpbnRlciBkcml2ZXIgaW1wcm92ZW1lbnRzLgoKCSogY29udHJvbHMvZWRpdC5jOiBHZXJhcmQgUGF0ZWwgPEcuUGF0ZWxAd2FuYWRvby5mcj4KCUNoYW5nZWQgRURJVF9FTV9DaGFyRnJvbVBvcyB0byByZXR1cm4gbGluZSBudW1iZXIuCgoJKiB3aW5kb3dzL3gxMWRydi93bmQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGcmVlIHRoZSBwcml2YXRlIGRhdGEgcG9pbnRlciwgVEhFTiBzZXQgaXQgdG8gTlVMTC4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU1pc3NpbmcgV0lOQVBJLgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvc2FmZWFycmF5LmMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYzoKCVN5bHZhaW4gU3QuR2VybWFpbiA8c3lsdmFpbkBtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSBTYWZlQXJyYXkgZmFtaWx5IGZ1bmN0aW9ucy4KCgkqIGluY2x1ZGUvd2luZG93cy5oLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci90aHJlYWQuYzoKCUd1eSBBbGJlcnRlbGxpIDxnYWxiZXJ0ZUBuZW8ubHJ1bi5jb20+CglBZGRlZCBzdHViIGZvciBTZXRUaHJlYWRMb2NhbGUuCgoJKiBvYmplY3RzL3RleHQuYzogR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpbmlzaGVkIEdldFRleHRDaGFyc2V0SW5mbyByb3V0aW5lLgoKCSogb2xlL25scy9lbnUubmxzLCBvbGUvb2xlMm5scy5jOgoJR3V5IEFsYmVydGVsbGkgPGdhbGJlcnRlQG5lby5scnVuLmNvbT4KCUZpeGVkIEZJWE1FIGluIEVudW1UaW1lRm9ybWF0czMyVwoJQWRkZWQgc3VwcG9ydCBmb3IgRk9OVFNJR05BVFVSRSBpbiBHZXRMb2NhbGVJbmZvMzJBIGFuZCB1cGRhdGVkCglHZXRMb2NhbGVJbmZvMzJXLgoKCSogZG9jdW1lbnRhdGlvbi9pbnRlcm5hbC1kbGwsIGRvY3VtZW50YXRpb24vc2hlbGwzMiwgZG9jdW1lbnRhdGlvbi93aW5lLm1hbjoKCVBhc2NhbCBDdW9xIDxQYXNjYWwuQ3VvcUBpbnJpYS5mcj4KCUZpeGVkIHR5cG9zLgoKCSogZGVidWdnZXIvbXNjLmM6IFNlcmdleSBUdXJjaGFub3YgPHR1cmNoYW5vdkB1c2EubmV0PgoJRml4ZWQgc291cmNlIGxpbmUgbWF0Y2hpbmcgZm9yIGZ1bmN0aW9ucyBpbiBERUJVR19Qcm9jZXNzQ29mZkRlYnVnOwoJc2VhcmNoaW5nIGZvciBEQkcgYW5kIFBEQiBmaWxlcy4KCgkqIGRlYnVnZ2VyL2hhc2guYzogU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXggZm9yIGZpbGVzIHdoaWNoIGRvIG5vdCBjb250YWluIGV4cG9ydHMgKGZnLCBFWEUpIHRvIGdldCBwcm9jZXNzZWQKCWZvciBkZWJ1ZyBpbmZvcm1hdGlvbi4KCgkqIGlmMTYzMi9rZXJuZWwuc3BlYywgaWYxNjMyL3JlbGF5LmMsIGlmMTYzMi90aHVuay5jLCB0b29scy9idWlsZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBLRVJORUwuNjIxIChDQkNsaWVudFRodW5rU0xFeCkuCgoJKiBkZWJ1Z2dlci9kYmcueSwgZGVidWdnZXIvZGVidWcubCwgZGVidWdnZXIvaW5mby5jLCBpbmNsdWRlL21haW4uaCwgbWlzYy9tYWluLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFsbG93IHN3aXRjaGluZyBvZmYvb24gb2YgZGVidWdtc2dzIGluIHRoZSBkZWJ1Z2dlci4KCgkqIGxvYWRlci9tYWluLmMsIG1pc2NlbXUvaW5zdHIuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2ludDE1LmMsIGluY2x1ZGUvbWlzY2VtdS5oOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgSW50IDB4MTUvMHhjMDogQklPUyAtIEdFVCBDT05GSUcgYW5kIHNvbWUgb3RoZXIgQklPUwoJZGF0YS4KClNhdCBKYW4gMjMgMTQ6MTU6MTcgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGdyYXBoaWNzL3BhaW50aW5nLmMsIGlmMTYzMi91c2VyLnNwZWMsIGluY2x1ZGUvd2luZS93aW51c2VyMTYuaCwgbG9hZGVyL3BlX2ltYWdlLmMsIG1pc2MvbHN0ci5jLCB3aW5kb3dzL2hvb2suYywgd2luZG93cy9tZXNzYWdlLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglJbXBsZW1lbnRlZCBXSU4xNl9DYWxsTXNnRmlsdGVyMzIsIFdJTjE2X0Rpc3BhdGNoTWVzc2FnZTMyLAoJRHJhd0FuaW1hdGVkUmVjdHMxNiAoc3R1YiksIEZvcm1hdE1lc3NhZ2UxNiwgV0lOMTZfR2V0TWVzc2FnZTMyLAoJV0lOMTZfUGVla01lc3NhZ2UzMiBhbmQgV0lOMTZfVHJhbnNsYXRlTWVzc2FnZTMyLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsZ3VpZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvaW50ZXJmYWNlcy5oLCBpbmNsdWRlL3NobGd1aWQuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5kb3dzLmgsIG1pc2Mvc2hlbGwuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJLSBzb21lIGZpeGVzLCBjbGVhbmVkIHVwIGluY2x1ZGVzLCBmaXhlZCBsZWFrcwoJLSBjbGVhbiBEbGxSZWZlcmVuY2VDb3VudCwgYmV0dGVyIERsbE1haW4oKQoJLSBkeW5hbWljYWxseSBsaW5raW5nIExvb2t1cEljb25JZEZyb21EaXJlY3RvcnlFeDMyIGFuZAoJICBDcmVhdGVJY29uRnJvbVJlc291cmNlRXgzMiB0byBVU0VSMzIKCS0gbW92ZWQgZ3VpZCdzIGluc3RhbmNlcyB0byBuZXcgZmlsZSBzaGVsbGd1aWQuYwoJLSBpbXBsZW1lbnRlZCAgU2hlbGxFeGVjdXRlRXgzMlcKCgkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2NvbXBvYmouYywgb2xlL2d1aWQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW92ZWQgdGhlIGluc3RhbmNlIGNyZWF0aW9uIG9mIEdVSUQncyB0byBhIG5ldyBmaWxlLgoJU2l6ZSBvZiBjb21wb2JqLm8gZ29lcyBkb3duIHRvIDEvMzsgc2hvdWxkIHByZXZlbnQgbW9yZSBzaWcxMSdzLgoKCSogaW5jbHVkZS9pbml0Z3VpZC5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmaWxlIHRvIGluc3RhbnRpYXRlIEdVSUQncyBtcy1saWtlLgoKCSogd2luZG93cy94MTFkcnYvd25kLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2V0IHByaXZhdGUgZGF0YSBzdHJ1Y3QgdG8gTlVMTCB0byBleHBvc2UgcHJvYmxlbXMgaW4gb3RoZXIgY29kZQoJYmV0dGVyLiBGaXhlcyB0aGUgWFVubWFwV2luZG93IHByb2JsZW1zIHJlcG9ydGVkIGJ5IHJlcGxhY2luZyB0aGVtCgl3aXRoIE5VTEwgcHRyIGRlcmVmZXJlbmNlcy4KCgkqIGRvY3VtZW50YXRpb24vZGVidWctbXNncywgZG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmcsIGRvY3VtZW50YXRpb24vaW50ZXJuYWwtZGxsLCBkb2N1bWVudGF0aW9uL2lvcG9ydC10cmFjZS1oaW50cywgZG9jdW1lbnRhdGlvbi93aW5lX29zMjoKCVp5Z28gQmxheGVsbCA8dWoyMmtmYmNAdW1haWwuZnVycnl0ZXJyb3Iub3JnPgoJRml4ZWQgdHlwb3MuCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURPUyBwcm9ncmFtcyB1c2UgaGFuZGxlcyAwLTQgd2l0aG91dCBvcGVuaW5nL2Nsb3NpbmcgYW55IG9mIHRob3NlCgloYW5kbGVzIGZpcnN0LiBTcGxpdCB1cCBJbml0IGZyb20gQWxsb2NEb3NIYW5kbGUgYW5kIGNhbGwgaXQgZnJvbQoJdGhlIERPU1ZNLgoKCSogTWFrZWZpbGUuaW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIGNvbmZpZ3VyZS5pbi0+Y29uZmlndXJlIHJ1bGUgKHdlIG1pZ2h0IG5vdCBoYXZlIGF1dG9jb25mKS4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkICJ1c2VyLWZyaWVuZGx5IiB3YXJuaW5nIGZvciBtaXNzaW5nIFguCgoJKiBpbmNsdWRlL29sZS5oOiBGaXhlZCBHZXRPYmplY3QgbWFjcm8gcHJvYmxlbS4KCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdDNEOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbiB0byBiZSBpbiBzeW5jIHdpdGggY3VycmVudCBjb2RlCgoJKiBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIHZhcmlvdXMgd2FybmluZyBhbmQgYnVnIGZpeGVzCgoJKiBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBtb3JlIHRleHR1cmUgZm9ybWF0cyB1c2luZyBPcGVuR0wncyBwYWNrZWQgcGl4ZWwgZm9ybWF0cwoKCSogZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBpbmNsdWRlL2QzZC5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGJldHRlciBzdXBwb3J0IGZvciBFeGVjdXRlQnVmZmVycwoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CgktIGNvcnJlY3RlZCBidWcgaW4gWiBCdWZmZXIgYWxsb2NhdGlvbgoJLSBwdXQgVklERU9NRU1PUlkgZmxhZyBmb3IgYWxsIHByaW1hcnkgc3VyZmFjZXMKCS0gcHV0IHNvbWV0aGluZyBpbiBhIHN1cmZhY2UgYWZ0ZXIgYSBSZWxlYXNlREMKCgkqIG1pc2MvcHJpbnRkcnYuYzogTW9ydGVuIFdlbGluZGVyIDx0ZXJyYUBkaWt1LmRrPgoJTWlzc2luZyBXSU5BUEkuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTmljbGFzIEthcmxzc29uIDxua2FybHNzb0ByYS5hYm8uZmk+CglSZW1vdmVkIERUX1NJTkdMRUxJTkUgYW5kIERUX05PQ0xJUCBzdHlsZXMgZm9yIFNTX0xFRlROT1dPUkRXUkFQLgoKCSogb2JqZWN0cy9lbmhtZXRhZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNoZWNrIG9wZW5lZCBlbmhtZXRhZmlsZSBmb3IgbWFnaWMgdmFsdWVzLgoKCSogaW5jbHVkZS9kc291bmQuaCwgbXVsdGltZWRpYS9kc291bmQuYzogUm9iIFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCUZpeGVkIGR1cGxpY2F0ZSBzb3VuZCBidWZmZXIgaGFuZGxpbmcuIFVwZGF0ZWQgc3RhdHVzLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmdW5jdGlvbnMgIGxtZW1jcHluQXRvVyBhbmQgIGxtZW1jcHluV3RvQSBmb3IgY29udmVydGluZwoJUkVHX01VTFRJX1NaIChpbmNsdWRpbmcgXDB4MDApCglCZXR0ZXIgZGVidWcgb3V0cHV0IGZvciBSRUdfQklOQVJZIGFuZCBSRUdfTVVMVElfU1oKCVJld3JpdHRlbiBSZWdRdWVyeVZhbHVlRXgzMltBfFddCgoJKiBvYmplY3RzL3BhbGV0dGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglJbXBsZW1lbnRlZCBDcmVhdGVIYWxmdG9uZVBhbGV0dGUuCglGaXhlZCAzIGNyYXNoZXMgKDEgcmVhbCwgMiBwb3RlbnRpYWwpLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBpZjE2MzIvc2hlbGwuc3BlYywgaW5jbHVkZS9zaGVsbC5oLCBtaXNjL3NoZWxsLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIEV4dHJhY3RJY29uRXgxNiwgYWRkZWQgc29tZSBjb25zdHMgdG8gRXh0cmFjdEljb25FeCouCgoJKiBvbGUvb2xlMi5jLCBvbGUvb2xlY2xpLmMsIHJlbGF5MzIvb2xlMzIuc3BlYywgaW5jbHVkZS93aW5lcnJvci5oOgoJU3lsdmFpbiBTdC5HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJRG9EcmFnRHJvcCBhbmQgT2xlSXNDdXJyZW50Q2xpcGJvYXJkIHN0dWIgaW1wbGVtZW50YXRpb24uCgoJKiBvbGUvdHlwZWxpYi5jOiBGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CglNYWtlIExvYWRUeXBlTGliIHN0dWIgcmV0dXJuIGZhaWx1cmUgaW5zdGVhZCBvZiBzdWNjZXNzLgoKRnJpIEphbiAyMiAxNzowOTo0NiAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZG9jdW1lbnRhdGlvbi9hY2NlbGVyYXRvcnMsIGluY2x1ZGUvd2ludXNlci5oLCBsb2FkZXIvcmVzb3VyY2UuYywgd2luZG93cy9pbnB1dC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBhY2NlbGVyYXRvciBoYW5kbGluZy4gQUNDRUwxNiB1c2VkIGludGVybmFsLCBBQ0NFTDMyIGZvciBXaW4zMgoJQVBJLCBQRV9BQ0NFTCBmb3IgUEUgQWNjZWxlcmF0b3JzLiBTZWUgZG9jdW1lbnRhdGlvbi9hY2NlbGVyYXRvcnMuCgpUaHUgSmFuIDIxIDE0OjA1OjExIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2RkZW1sLmgsIG1pc2MvZGRlbWwuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVRoZXJlIHdlcmUgdHdvIGNvcGllcyBvZiB0aGUgRGRlQ21wU3RyaW5nSGFuZGxlcyAoQSBhbmQgVykgYW5kIHRoYXQKCUFQSSBkb2VzIG5vdCBoYXZlIDIgdmVyc2lvbnMuIFJlbW92ZWQgdGhlIGV4dHJhIHZlcnNpb24uCgpXZWQgSmFuIDIwIDE0OjU0OjAxIDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogUGFibG8gU2FyYXR4YWdhIDxwYWJsby5zYXJhY2hhZ2FAcGluZy5iZT4KCVNtYWxsIHBhdGNoLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVdpbjMyIGNvbnNvbGUgbmVlZHMgU1lOQ0hST05JWkUgYWNjZXNzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGNvbnNvbGUvbmN1cnNlcy5jLCBkZWJ1Z2dlci9zdGFicy5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2NvbnNvbGUuaCwgbWlzYy9wb3J0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWF1dG9jb25mOiBhZGRlZCBjaGVja3MgZm9yIGxpYmlvLmgsIGVsZi5oLCBjdXJzZXMuaCxuY3Vyc2VzLmggYW5kCglmaXhlZCBpbmNsdWRlcnMuCgoJKiBvbGUvb2xlMm5scy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxDTWFwU3RyaW5nQTogaWYgZHN0bGVuIGlzIGluc3VmZmljaWVudCwgcmV0dXJuCglFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSICh2ZXJpZmllZCkuCgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSBzbWFsbCBmaXhlcyB0byBlbmhtZXRhZmlsZXMuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRG8gbm90IGNhbGwgb3duZXJkcmF3IGZvciBpbnZhbGlkIGl0ZW1zIChlbXB0eSBmb2N1c3JlY3RzKS4KCUZpeGVzIEV1ZG9yYSAxNmJpdCBlbXB0eSBJbmJveCBwcm9ibGVtLgoKCSogd2luZG93cy9ub25jbGllbnQuYzogTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgTkNfRHJhd01heEJ1dHRvbjk1IGFuZCBOQ19EcmF3TWluQnV0dG9uOTUgZnVuY3Rpb25zLiBSZXdyb3RlCgl0aGVzZSBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBsb2dpYyBhcyB0aGUgTkNfRHJhd0Nsb3NlQnV0dG9uIGZ1bmN0aW9uLgoKCSogd2luZG93cy93aW4uYzogTm9lbCBCb3J0aHdpY2sgPG5vZWxAbWFjYWRhbWlhbi5jb20+CglSZXBhcmVudGluZyBhIHdpbmRvdyB3aXRoIFNldFBhcmVudCBpbiBXaW5kb3dzIHNob3VsZCBjYXVzZSB0aGUgY2hpbGQKCXdpbmRvdyBiZWluZyByZS1wYXJlbnRlZCB0byBiZSBtb3ZlZCB1cCB0byB0aGUgdG9wbW9zdCBpbiB0aGUgei1vcmRlciwKCWFuZCBXTV9XSU5ET1dQT1NDSEFOR0lORyBhbmQgV01fV0lORE9XUE9TQ0hBTkdFRCBtZXNzYWdlcyB0byBiZSBzZW50LgoKCSogcmVsYXkzMi9idWlsdGluMzIuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KCVVzZSBleHRlcm5hbCBEaXJlY3RQbGF5IERMTHMgYnkgZGVmYXVsdC4KCgkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgcGFzc2luZyB0YXNrIGhhbmRsZXMgdG8gR2V0VGhyZWFkUXVldWUoKSBhbmQgU2V0RmFzdFF1ZXVlKCkuCgoJKiB3aW5kb3dzL3VzZXIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglIYW5kbGUgKGNvbnNvbGUpIGFwcGxpY2F0aW9ucyB0aGF0IG5ldmVyIGNyZWF0ZWQgYSBxdWV1ZSBjb3JyZWN0bHkKCWluIFVTRVJfQXBwRXhpdCgpOyBjYWxsIEluaXRUaHJlYWRJbnB1dCgpIGluIEluaXRBcHAoKS4KCgkqIHdpbmRvd3MvaG9vay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCS0gRml4ZWQgY3JlYXRpb24gb2YgbWVzc2FnZSBxdWV1ZSBpbiBob29rIEFQSSByb3V0aW5lcy4KCS0gU29tZSBwcmVwYXJhdGlvbnMgZm9yIHRocmVhZC1sb2NhbCBtZXNzYWdlIHF1ZXVlcy4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hlY2sgbW9kdWxlIG5hbWUgbGVuZ3RoIGluIE1vZHVsZU5leHQoKS4KCgkqIHdpbmRvd3MveDExZHJ2L2V2ZW50LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBDYWxsb3V0IHRvIGNhbGwgUmVkcmF3V2luZG93MzIuCgoJKiBtc2Rvcy9pbnQyMS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNsZWFyIERPUyBleHRlbmRlZCBlcnJvciBvbmx5IGZvciBmdW5jcyA+PTB4MmYgKHRoYW5rcyB0byBEYXZlCglQaWNrbGVzKS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVW5pZmllZCBwYWxldHRlIGNyZWF0ZSwgZG8gYWxsb2NhdGUgY29sb3JjZWxscyBvbiBpbml0IGZvciBER0EuCgpUdWUgSmFuIDE5IDE3OjQ4OjI1IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzY2hlZHVsZXIvc3luY2hyby5jLCBzY2hlZHVsZXIvdGhyZWFkLmMsIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9wcm9jZXNzLmMsIHNlcnZlci9yZXF1ZXN0LmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIvZGV2aWNlLmMsIHdpbjMyL3Byb2Nlc3MuYywgaW5jbHVkZS9maWxlLmgsIGluY2x1ZGUvcHJvY2Vzcy5oLCBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBpbmNsdWRlL3NlcnZlci90aHJlYWQuaCwgaW5jbHVkZS90aHJlYWQuaCwgaW5jbHVkZS93aW5iYXNlLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG1lbW9yeS92aXJ0dWFsLmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL3Z4ZC5jLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2hhbmRsZS5jLCBzY2hlZHVsZXIvazMyb2JqLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGZpbGVzL2NoYW5nZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2RldmljZS5oOgoJSGFja2VkIHNlcnZlci1zaWRlIGRldmljZSBzdXBwb3J0CglBZGRlZCB1c2VyIEFQQ3Mgc3VwcG9ydC4KCU1hbnkgY2hhbmdlcyB0byB0aGUgeHRlcm0gY29uc29sZSB0byBtYWtlIHVzZSBvZiB0aGUgc2VydmVyIChub3QKCWZpbmlzaGVkIHlldCkuCglNb3ZlZCBzb21lIG90aGVyIHNtYWxsIHN0dWZmIHRvIHRoZSBzZXJ2ZXIuCgoJKiB0b29scy9tYWtlX3JlcXVlc3RzOiBBZGRlZCBsb25nIHR5cGUgZm9ybWF0LgoKCSogc2VydmVyL01ha2VmaWxlLmluLCBzZXJ2ZXIvZGV2aWNlLmM6CglBZGRlZCBzZXJ2ZXItc2lkZSBkZXZpY2Ugc3VwcG9ydCAob25seSBhIGhhY2sgZm9yIG5vdykuCgpTdW4gSmFuIDE3IDE3OjQ4OjQ4IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBDaGFuZ2VMb2c6CglSZWNvdmVyZWQgbG9nIGVudHJpZXMgZnJvbSBDVlMgbWFpbGluZyBsaXN0LgoKCSogcmVsYXkzMi9udGRsbC5zcGVjLCBkbGxzL250ZGxsL3J0bC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglJbXBsZW1lbnRlZCBfYWxsb2NhX3Byb2JlIGFuZCBfY2hrc3RrIChtb3N0bHkgZG9uZSBieSBVbHJpY2ggV2VpZ2FuZCkuCgoJKiBmaWxlcy9maWxlLmMKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSGFuZGxlIEVSUk9SX1dSSVRFX1BST1RFQ1QgdG9vIGluIHJlYWRvbmx5IGZhbGxiYWNrIG9wZW4uCgoJKiBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgR2V0U2VjdXJpdHlEZXNjcmlwdG9yTGVuZ3RoIHN0dWIgZm9yIHJlZ2VkdDMyLmV4ZS4KCgkqIGRlYnVnZ2VyL01ha2VmaWxlLmluLCBmaWxlcy9NYWtlZmlsZS5pbjoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkICIiIGFyb3VuZCAtRCBkZWZpbmVzIGZvciBwYXRocyB3aXRoIHNwYWNlcyBpbiB0aGVtLgoKCSogZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNsZWFuZWQgdXAgQ29sb3JLZXkgaGFuZGxpbmcuCgoJKiBvYmplY3RzL21ldGFmaWxlLmM6CglQYXVsIFF1aW5uIDxwYXVscUBDT1JFTC5DQT4KCU1FVEFSRUNPUkQgbWVtYmVyIHJkUGFyYW0gc2hvdWxkIGJlIHJkUGFybSAoaW4gd2luMzIgc2RrKQoJbG90cyBvZiBjaGFuZ2VzIGluIHRoaXMgc291cmNlIGZpbGUgdG8gcmVmbGVjdCB0aGlzIGNoYW5nZS4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvdGNoYXIuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgaW5jbHVkZS93aW51c2VyLmgsIG1pc2Mvc3Bvb2xlci5jLCBvYmplY3RzL2dkaW9iai5jLAoJcmVsYXkzMi9nZGkzMi5zcGVjOgoJUGF1bCBRdWlubiA8cGF1bHFAQ09SRUwuQ0E+CglGaXhlZCBiYWQgZGVmaW5lcywgYWRkZWQgYSBmZXcgdHlwZXMgJ24gZGVmaW5lcy4KCgkqIHdpbmRvd3MvZGlucHV0LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURpc2FibGUgYnJva2VuIGNhbGxiYWNrcyB3aGljaCBsZWFkIHRvIGNyYXNoZXMuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBJRCB1c2FnZSAoYW5kIHJlbHkgbGVzcyBoZWF2aWx5IG9uIG11bHRpbWVkaWEvbW1zeXN0ZW0uYwoJaW50ZXJuYWwgc3RydWN0dXJlcykuCgoJKiBtaXNjL3Rvb2xoZWxwLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWRlYnVnLmggbmVlZHMgdG8gYmUgaW5jbHVkZWQgbGFzdCBzaW5jZSBpdCAjdW5kZWZzIEVSUiBmb3IgU29sYXJpcy4KCgkqIGRlYnVnZ2VyL2RlYnVnLmwsIGRlYnVnZ2VyL21lbW9yeS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCAvdSBmb3JtYXQgdG8gZGVidWdnZXIgZGlzcGxheSBmb3IgVU5JQ09ERSBzdHJpbmdzLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSBpcnJpdGF0aW5nIEZJWE1FIGxpbmUgbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIG1zZG9zL2ludDJmLmM6CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1pc3NpbmcgJ1xuJyBpbiBGSVhNRSBtZXNzYWdlLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzoKCVJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglvYmpiYXNlLmggbmVlZGVkIGZvciBXSU5FX1N0cmluZ0Zyb21DTFNJRCgpLCBmaXggQyBmdW5jdGlvbgoJZGVjbGFyYXRpb25zLCBpbnN0YWxsIGEgY29sb3JtYXAgaWYgd2UgYXJlIG5vdCBtYW5hZ2VkLCByZWxlYXNlCgliYWNrYnVmZmVycyBpbiBER0EgbW9kZSwgZml4IHZpZGVvIG1vZGUgc3dpdGNoaW5nIGxvZ2ljIHRvIGF2b2lkCglwb3NzaWJsZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuCgoJKiBtc2Rvcy9kcG1pLmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglTbWFsbCBmaXguCgoJKiBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBpbmNsdWRlL3Byb2Nlc3MuaCwgbG9hZGVyL3Jlc291cmNlLmMsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9uZS9zZWdtZW50LmMsIG1pc2MvbHpleHBhbmQuYywgbXNkb3MvaW50MjEuYyB2eGQuYywgbXVsdGltZWRpYS9tbWlvLmMsIHdpbjMyL2tlcm5lbDMyLmM6CglCZXR0ZXIgRE9TIGZpbGUgaGFuZGxlIG1hbmFnZW1lbnQuCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCVRoaXMgc2hvdWxkIGhlbHAgcHJldmVudCBkdXBsaWNhdGUgd29yay4KCgkqIGlmMTYzMi9nZGkuc3BlYywgaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9kYy5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgRGVhdGgoKSBhbmQgUmVzdXJyZWN0aW9uKCksIHR3byBmdW5jdGlvbnMgbmVlZGVkIGJ5IHNvbWUKCVRQV2luICg/KSBjb21tYW5kIGxpbmUgdG9vbC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBZGRlZCAzMi0+MTYgdHJhbnNsYXRpb24gZm9yIFdNX0FDVElWQVRFQVBQLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzOiBTaGVsbE1lc3NhZ2VCb3hXLCBSdW5ETExfQ2FsbEVudHJ5MTYuCglJbXBsZW1lbnRhdGlvbiBmb3IgU0hHZXRTcGVjaWFsRm9sZGVyUGF0aDMyW0F8V10uCglNYW55IGJ1Z2ZpeGVzLgoKCSogY29uc29sZS94dGVybS5jLCBtaXNjL3BvcnQuYywgd2luMzIvY29uc29sZS5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglDaGFuZ2UgYWxsIFdpbmUgb3BlbnB0eSgpIGltcGxlbWVudGF0aW9ucyB0byBtYXRjaCB0aGUgInN0YW5kYXJkIiBhbmQKCXRoZW4gbWFrZSB0aGVtIGJvdGggY2FsbCB0aGUgc2FtZSBjb2RlIGxlYXZpbmcgdGhlIG9wdGlvbiB0byBjaGFuZ2UKCXRoYXQgY29kZSB0byBjYWxsIHRoZSAic3RhbmRhcmQiIG9wZW5wdHkoKSBhdCBhIGxhdGVyIGRhdGUuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHNjaGVkdWxlci9wcm9jZXNzLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFNldFByb2Nlc3NBZmZpbml0eU1hc2sgc3R1Yi4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgdGhlIG90aGVyIHVuaW9uIG1pc3VzZSB0b28gKG9uZSBsZXNzIG1lbSBjb3JydXB0aW9uKQoJUmUtYWRkZWQgWEluc3RhbGxDb2xvcm1hcCAob3Igbm9uIG1hbmFnZWQgZG9lcyBub3QgY2hhbmdlIHBhbGV0dGUpCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIHNjaGVkdWxlci9zeW5jaHJvLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIGFuIGltcGxlbWVudGF0aW9uIGZvciBLRVJORUwuNDk1LgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMsIGRvY3VtZW50YXRpb24vZGlyZWN0M0QsIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZGV4ZWN1dGVidWZmZXIuYywgZ3JhcGhpY3MvZDNkdGV4dHVyZS5jLCBncmFwaGljcy9kM2R2aWV3cG9ydC5jLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2QzZC5oLCBpbmNsdWRlL2RkcmF3Lmg6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgYml0bWFzayB0byBzdG9yZSB3aGljaCBDb2xvcktleSBzdHJ1Y3R1cmVzIGFyZSB2YWxpZAoJLSBoYW5kbGUgbWFueSBuZXcgcmVuZGVyaW5nIHN0YXRlcywgc29tZSBvcHRpbWl6YXRpb25zIGluIHN0YXRlIGNoYW5nZXMKCS0gOGJpdCBwYWxldHRpemVkIHRleHR1cmVzIG5vdyBzdXBwb3J0IENvbG9yS2V5aW5nCgktIHNvbWUgbWlzY2VsbGFuZW91cyBidWcgZml4ZXMgYW5kIGNvZGUgcmV3cml0ZQoKCSogY29udHJvbHMvbWVudS5jOgoJTm9vbWVuIEhhbXphIDxub29tZW5AbWFjYWRhbWlhbi5jb20+CglGaXhlZCB0aGUgbG9vayBvZiB0aGUgbWVudSBzbyBpdCB3b3VsZCBiZSBjb21wbGlhbnQgd2l0aCBXaW45NTogbW9kaWZpZWQKCXRoZSBtb3VzZSB0cmFja2luZyBjb2RlIHNvIGl0IHdvdWxkIGNoYW5nZSB0aGUgc2VsZWN0aW9uIGV2ZXJ5IHRpbWUgdGhlCgltb3VzZSBtb3ZlZCBvdmVyIGEgbWVudSBpdGVtLgoKCSogZG9jdW1lbnRhdGlvbi9ob3ctdG8tcG9ydDoKCU1pa2UgQ2FzdGxlIDxkYWxnb2RhQHNoZWxsLnJ0NjYuY29tPgoJU21hbGwgZml4LgoKCSogZGxscy9jb21jdGwzMi91cGRvd24uYzoKCU5vZWwgQm9ydGh3aWNrIDxub2VsQG1hY2FkYW1pYW4uY29tPgoJRml4ZWQgYnVnczoKCS0gV2hlbiBhbiBlZGl0IGNvbnRyb2wgYnVkZHkgd2FzIHVzZWQgc2luZ2xlIGRpZ2l0IHZhbHVlcyB3ZXJlIG5vdAoJYmVpbmcgZGlzcGxheWVkLgoJLSBDb21tYSB2YWx1ZXMgd2VyZSBub3QgZGlzcGxheWVkIGNvcnJlY3RseSB3aGVuIHRob3VzYW5kcyBzZXBhcmF0aW9uCgl3YXMgcmVxdWVzdGVkLgoKCSogd2luMzIvbmV3Zm5zLmM6CglUb20gQmVjaCA8dG9tYkBpaS51aWIubm8+CglXaGlsZSB0aGUgZGVidWcgZXZlbnQgbWVzc2FnZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCwgV2FpdEZvckRlYnVnRXZlbnQKCXNob3VsZCByZXR1cm4gRkFMU0UuCgoJKiBpZjE2MzIvdXNlci5zcGVjLCBvYmplY3RzL2JpdG1hcC5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJSW1wbGVtZW50ZWQgQ29weUltYWdlMTYuCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNtYWxsIGZpeC4KCgkqIGNvbnNvbGUvZ2VuZXJpYy5jLCBtc2Rvcy9pbnQyMS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2VkIDB4MDEgdG8gdXNlIGdlbmVyaWMgY29uc29sZSwgZml4ZWQgMHgwYi4KCUZpeGVkIENPTlNPTEVfR2V0Q2hhcmFjdGVyICh0d28gYXJncyBzd2FwcGVkKS4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL2Rvcy9tb2R1bGUuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgc3BlY2lmeWluZyBtb2R1bGUgbmFtZSBmb3IgTkUgZHVtbXkgbW9kdWxlLgoKCSogbG9hZGVyL3BlX2ltYWdlLmMKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU2V0IG1vZHVsZSBuYW1lIG9mIGR1bW15IG1vZHVsZSBlcXVhbCB0byBtb2R1bGUgbmFtZSBvZiBQRSBtb2R1bGUuCgoJKiBjb250cm9scy9zY3JvbGwuYywgY29udHJvbHMvdWl0b29scy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzaW5nIGluY2x1ZGUgd2luZS93aW51c2VyMTYuaCBhZGRlZC4KCgkqIGdyYXBoaWNzL3ZnYS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDcmVhdGUgYW4gYWN0dWFsIHByaW1hcnkgc3VyZmFjZSBmb3Igc2NyZWVuYnVmZmVyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gSmFuIDEwIDE0OjQwOjM0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS9tc2Rvcy5oLCBsb2FkZXIvbWFpbi5jLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvZG9zY29uZi5jLCBtc2Rvcy9pbnQyMS5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgY29uZmlnLnN5cyBwYXJzZXIuCgoJKiBjb250cm9scy9saXN0Ym94LmM6IFBhc2NhbCBDdW9xIDxQYXNjYWwuQ3VvcUBpbnJpYS5mcj4KCVNtYWxsIGNoYW5nZSBpbiBMQl9TRVRDVVJTRUwzMiBoYW5kbGluZyAodGhlIGNhcmV0IHNob3VsZCBiZSBtb3ZlZCBhcwoJd2VsbCkuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZmlsZXMvYXN5bmMuYywgaW5jbHVkZS9jb25maWcuaC5pbiwgbWlzYy93aW5zb2NrX2Rucy5jLCBtc2Rvcy9pbnQyMS5jLCBvbGUvY29tcG9iai5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglVc2UgYXV0b2NvbmYgY2hlY2sgZm9yIHByZXNlbmNlIG9mIHN5cy9maWxlLmguCgoJKiBkbGxzL250ZGxsL3J0bC5jLCByZWxheTMyL250ZGxsLnNwZWM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUltcGxlbWVudGVkIERiZ1ByaW50LCBhZGRlZCB1bHRvYS4KCgkqIHdpbjMyL2NvbnNvbGUuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCVBlZWtDb25zb2xlSW5wdXQgJiBSZWFkQ29uc29sZUlucHV0IG5lZWQgdG8gcmV0dXJuIDAgcmVjb3JkcyByZWFkIGluCgl0aGUgY2FzZSBvZiBhbiBpbnZhbGlkIGhhbmRsZS4KCgkqIGNvbnNvbGUvbmN1cnNlcy5jLCBsb2FkZXIvbWFpbi5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglNb3JlIHZlcmJvc2UgZGVidWdnaW5nIG91dHB1dC4KCVJlbW92ZSBjb21waWxhdGlvbiB3YXJuaW5nLgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglGaXggdXAgc29tZSBpbnRlcnJ1cHQgY2FsbHMgdG8gcmV0dXJuIGF0IHRoZSBkYXRhIHRoYXQgdGhleSBhcmUgc3VwcG9zZWQKCXRvLiBBbHNvIGluY3JlYXNlIGNvbW1lbnQgdmVyYm9zaXR5IHRvIGhlbHAgZGVidWcgdGhpbmdzIGxhdGVyLgoKCSogaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBtaXNjL3ZlcnNpb24uYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHN3aXRjaCAtZG9zdmVyLgoJQ2xlYW51cCBmb3IgT2FCdWlsZFZlcnNpb24oKS4KCgkqIGxpYnRlc3QvLmN2c2lnbm9yZTogQWRkZWQgdmFydGVzdCBhbmQgdm9saW5mbwoKCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGVsbC5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYW55IGJ1Z2ZpeGVzLCBjb2RlIGNsZWFudXAuCglSZW1vdmVkIGEgZmV3IGdsaXRjaGVzIGZyb20gdGhlIENPTSBwYXRjaC4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCU9ubHkgZGVzdHJveSB3aW5kb3cgb25jZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvZGRyYXcuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJLSBtb3ZlZCBkcmF3YWJsZSB0byBjb21tb24gc2luY2UgaXQgaXMgdXNlZCBieSBib3RoIERHQSBhbmQgWGxpYi4KCSAgKGZpeGVzIG9uZSBiYWQgbWVtb3J5IGNvcnJ1cHRpb24gYnVnIGluIERHQSAoU3RhckNyYWZ0IGFuZCBEaWFibG8pCgktIGFkZGVkIEJsdEZhc3Qgc2FuaXR5IGNoZWNrcy4KCgkqIHdpbmRvd3MvcXVldWUuYywgbG9hZGVyL3Rhc2suYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW5pdEFwcCgpIGNhbGwgcmVtb3ZlZCBmcm9tIDMyLWJpdCBhcHBsaWNhdGlvbiBzdGFydHVwOwoJY3JlYXRlIHRhc2sgbWVzc2FnZSBxdWV1ZSBpbiBJbml0VGhyZWFkSW5wdXQoKSBpbnN0ZWFkLgoKCSogbG9hZGVyL25lL2NvbnZlcnQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgYWNjZWxlcmF0b3IgdGFibGUgUEUtPk5FIHJlc291cmNlIGNvbnZlcnNpb24uCgoJKiBkZWJ1Z2dlci9lZGl0bGluZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZXN0YXJ0IHJlYWQoKSBpbiBjYXNlIG9mIEVJTlRSIGluIFRUWWdldCgpLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUHRyIHJlZiB3cm9uZy4KCgkqIHRvb2xzL3dyYy9DSEFOR0VTLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvZ2VucmVzLmMsIHRvb2xzL3dyYy9uZXdzdHJ1Yy5jLCB0b29scy93cmMvbmV3c3RydWMuaCwgdG9vbHMvd3JjL3BhcnNlci5sLCB0b29scy93cmMvcGFyc2VyLnksIHRvb2xzL3dyYy9yZWFkcmVzLmMsIHRvb2xzL3dyYy91dGlscy5jLCB0b29scy93cmMvdXRpbHMuaCwgdG9vbHMvd3JjL3dyYy5oLCB0b29scy93cmMvd3JjdHlwZXMuaCwgdG9vbHMvd3JjL3dyaXRlcmVzLmM6CglCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AcGFudGVyLnNvY2kuYWF1LmRrPgoJV3JjIHZlcnNpb24gMS4wLjguIFRvb2xiYXIgcmVzb3VyY2VzIGFyZSBub3cgc3VwcG9ydGVkLiBBIGNvdXBsZSBvZgoJb3RoZXIgZml4ZXMgYXJlIGFsc28gaW5jbHVkZWQuIFNlZSBmaWxlIHRvb2xzL3dyYy9DSEFOR0VTIGZvciBkZXRhaWxzLgoKCSogb2xlL2NvbXBvYmouYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNaXNzaW5nIFdJTkFQSS4KCgkqIGluY2x1ZGUveDExZHJ2LmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIG9iamVjdHMvZGMuYywgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9yZWxheTM4Ni5jLCBzY2hlZHVsZXIvazMyb2JqLmMsIGZpbGVzL2FzeW5jLmMsIGlmMTYzMi9yZWxheS5jLCBpbmNsdWRlL21haW4uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQWRkIG1pc3NpbmcgI2luY2x1ZGVzIGFuZCBwcm90b3R5cGVzIHRvIGVsaW1pbmF0ZSBzb21lIGltcGxpY2l0CglmdW5jdGlvbiBkZWNsYXJhdGlvbiB3YXJuaW5ncyBhbmQgJ2V4dGVybidzIGluIC5jIGZpbGVzLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGNvbnNvbGUvbmN1cnNlcy5jLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW46CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUNoZWNrIGZvciByZXNpemV0ZXJtIGluIG5jdXJzZXMuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L3ZhcnRlc3QtV2luMzIubG9nLCBsaWJ0ZXN0L3ZhcnRlc3QuYywgbGlidGVzdC92YXJ0ZXN0LnJlYWRtZToKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCU5ldyB0ZXN0IHByb2dyYW0gZm9yIFZBUklBTlQgZnVuY3Rpb25zLgoKCSogZGVidWdnZXIvbXNjLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJU29tZSBkZWJ1ZyBpbmZvcm1hdGlvbiAoUERCKSB3YXMgbm90IG1hcHBlZCB3aGVuIGxvYWRpbmcgYSBtb2R1bGUsCgl3aGljaCBjYXVzZWQgYSBjb3JlIGluIHRoZSBkZWJ1Z2dlciB3aGVuIGl0IHRyaWVkIHRvIGFjY2VzcyBpdC4KCgkqIE1ha2VmaWxlLmluOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUxpbmtzIGxpYndpbmUuc28uMS4wIHRvIGxpYndpbmUuc28gaW4gV2luZSdzIG1haW4gZGlyZWN0b3J5LgoJTWFrZXMgV2luZSBjb21waWxlIHdpdGggLS1lbmFibGUtZGxsIGFnYWluLgoKU2F0IEphbiAgOSAwOToxMjo0MCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9vbGUzMi5zcGVjLCB3aW5kb3dzL2RpbnB1dC5jLCBpbmNsdWRlL3N0b3JhZ2UuaCwgaW5jbHVkZS91bmtud24uaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2luZS9vYmpfYmFzZS5oLCBpbmNsdWRlL3dpbmUvb2JqX2NoYW5uZWwuaCwgaW5jbHVkZS93aW5lL29ial9jbGllbnRzZXJ2ZXIuaCwgaW5jbHVkZS93aW5lL29ial9kYXRhb2JqZWN0LmgsIGluY2x1ZGUvd2luZS9vYmpfbWFyc2hhbC5oLCBpbmNsdWRlL3dpbmUvb2JqX21pc2MuaCwgaW5jbHVkZS93aW5lL29ial9tb25pa2VyLmgsIGluY2x1ZGUvd2luZS9vYmpfcHJvcGVydHlzdG9yYWdlLmgsIGluY2x1ZGUvd2luZS9vYmpfc3RvcmFnZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIGluY2x1ZGUvd3R5cGVzLmgsIG1pc2Mvc2hlbGwuYywgbXVsdGltZWRpYS9kcGxheS5jLCBtdWx0aW1lZGlhL2Rzb3VuZC5jLCBvYmplY3RzL2ZvbnQuYywgb2xlL2NvbXBvYmouYywgb2xlL2lmcy5jLCBvbGUvbW9uaWtlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZWRsZy5jLCBvbGUvb2xlb2JqLmMsIG9sZS9zdG9yYWdlLmMsIG9sZS90eXBlbGliLmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsbGluay5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvdmdhLmMsIGlmMTYzMi9jb21wb2JqLnNwZWMsIGluY2x1ZGUvY29tcG9iai5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGlucHV0LmgsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kc291bmQuaCwgaW5jbHVkZS9pbnRlcmZhY2VzLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL29iamlkbC5oLCBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL29sZTIuaCwgaW5jbHVkZS9vbGVvYmouaCwgaW5jbHVkZS9zZXJ2cHJvdi5oLCBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsZ3VpZC5oLCBpbmNsdWRlL3NobG9iai5oLCBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYzoKCUZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBtdWx0aW1hbmlhLmNvbT4KCUFkZGVkIGEgbG90IG9mIENPTSBpbnRlcmZhY2VzIGRlZmluaXRpb25zLgoJUmVzdHJ1Y3R1cmVkIENPTSBoZWFkZXIgZmlsZXMgZm9yIGJldHRlciBjb21wYXRpYmlsaXR5IGFuZCBjbGFyaXR5LgoKRnJpIEphbiAgOCAxNjozNzowMyAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZmlsZXMvZmlsZS5jOiBTZXQgR0VORVJJQ19SRUFEfEdFTkVSSUNfV1JJVEUgYWNjZXNzIGZvciBPRl9DUkVBVEUuCglNYWtlIEdldEZpbGVUeXBlIHdvcmsgZm9yIGFsbCBoYW5kbGUgdHlwZXMuCgoJKiB3aW4zMi9kZXZpY2UuYzogQXZvaWQgY3Jhc2ggb24gTlVMTCBkZXYtPmluZm8uCgoJKiBpbmNsdWRlL2ZsYXRzYi5oLCByZWxheTMyL2NvbWN0bDMyLnNwZWMsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9mbGF0c2IuYywgaW5jbHVkZS9jb21tY3RybC5oOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUFkZGVkIHN0dWJzIGFuZCBkZWZpbmVzIGZvciB0aGUgZmxhdCBzY3JvbGxiYXIgY29tbW9uIGNvbnRyb2wuCgoJKiBpbmNsdWRlL2NvbW1jdHJsLmgsIGRsbHMvY29tY3RsMzIvZGF0ZXRpbWUuYzoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglBZGRlZCBzb21lIGRlZmluZXMgbmVlZGVkIGZvciBjdXN0b20gZHJhdydpbmcgYW5kIGRhdGV0aW1lIGNvbW1vbgoJY29udHJvbHMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IEVkZGllIENhcnBlbnRlciA8ZWNhcnBlbnRlckBpdGV4LmNvLnphPgoJRml4ZWQgYSBzbWFsbCBidWcgaW4gZnVuY3Rpb24gRXh0cmFjdEljb25FeDMyQS4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUhUQVNLMTYgLT4gdGhyZWFkSUQgbWFwcGluZyBvZiBXTV9BQ1RJVkFURUFQUC4KCgkqIGZpbGVzL2ZpbGUuYzogQmVydGhvIFN0dWx0aWVucyA8YmVydGhvQHBhbnRlci5zb2NpLmFhdS5kaz4KCU1ha2UgRGVsZXRlRmlsZSBmYWlsIGZvciBlbXB0eSBwYXRoLgoKCSogbXNkb3MvaW9wb3J0cy5jOiBHZXJhbGQgUGZlaWZlciA8cGZlaWZlckBkYmFpLnR1d2llbi5hYy5hdD4KCUZpeCBkdW1teV9jdHIgc3R1ZmYgdG8gd29yayBldmVuIHdpdGhvdXQgRElSRUNUX0lPX0FDQ0VTUy4KCgkqIGxvYWRlci9uZS9zZWdtZW50LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgd3JvbmcgYnVmZmVyIHdoaWNoIGNhdXNlZCBmaXh1cHMgdG8gZmFpbC4KCgkqIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmMsIGdyYXBoaWNzL2QzZHRleHR1cmUuYywgaW5jbHVkZS9kM2QuaDoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJLSBhZGRlZCBhbGwgdGhlIERpcmVjdDNEIGVycm9yIGNvZGVzCgktIGFkZGVkIDhiaXQgcGFsZXR0aXplZCB0ZXh0dXJlIHN1cHBvcnQKCgkqIG1zZG9zL2Nkcm9tLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJaWZkZWZzIGZvciBkZWZpbmVzIG5vdCBpbiBsaW51eCAyLjAuCgoJKiByZWxheTMyL3dpbnNwb29sLnNwZWMsIG1pc2MvcHJpbnRkcnYuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHR3byBzdHVicyBmb3IgQWRkUHJpbnRlckRyaXZlci4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zbW9kLmMsIGxvYWRlci9kb3MvZG9zbW9kLmgsIGxvYWRlci9kb3MvZG9zdm0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUXVldWUgU0lHQUxSTSB0byByZWR1Y2UgdGhlICJzaWduYWwgMTQgbG9zdCIgY29tcGxhaW50cy4KCUFkZGVkIHN1cHBvcnQgZm9yIHJlcHJvZ3JhbW1pbmcgdGhlIERPUyB0aW1lciwgYW5kIHJlYWRpbmcgYmFjayB0aGUKCWN1cnJlbnQgdmFsdWUuCgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2luZSBoYW5ncyB3aGVuIHJlZ2lzdHJ5IChjb3JydXB0ZWQpIGhhcyBsb25lIFwgYXQgZW5kIG9mIGZpbGUuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUtvc3R5YSBJdmFub3YgPGtvc3R5YUB3YXJtY2F0LmV4Y29tLnNwYi5zdT4KCVNtYWxsIHBhdGNoIHRoYXQgZW5hYmxlcyBDbGFyaW9uIGZvciBXaW5kb3dzIG5vdCB0byB0cmFwIHdoaWxlCglsb2FkaW5nLgoKCSogb2xlL3ZhcmlhbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZXBsYWNlIHRyb3VibGVzb21lIGFzc2lnbm1lbnRzIGJ5IG1lbXNldCBmb3Igd2hvbGUgc3RydWN0LgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBoYW5kbGluZyBvZiB0aGUgJ3BhbGVudCcgZmllbGQgb2YgdGhlIENyZWF0ZVBhbGV0dGUgcHJvY2VkdXJlLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIGRlc2NyaXB0aW9uIGFib3V0IGluY2x1ZGluZy9leGNsdWRpbmcgZnVuY3Rpb25zIGZyb20gcmVsYXkKCXRyYWNlLgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlYWQgYXQgbGVhc3QgMSBpbnB1dCByZWNvcmQgaW4gUmVhZENvbnNvbGVJbnB1dEEuCgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJRml4ZWQgQ3JlYXRlTWFwcGluZyB3aGVuIGEgbWFwcGluZyB3aXRoIHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMuCgpXZWQgSmFuICA2IDEwOjM3OjI5IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBzZXJ2ZXIvZmlsZS5jOiBGaXhlZCBmaWxlIGRlc3RydWN0aW9uIHdoZW4gZmlsZSBoYXMgbm8gbmFtZS4KClR1ZSBKYW4gIDUgMTg6Mzg6NTkgMTk5OSAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvbWFpbi5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVdhcm5zIHVzZXIgaWYgbXVsdGlwbGUgLWRsbCBzd2l0Y2hlcyBhcmUgdXNlZCBvbiBjb21tYW5kIGxpbmUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglGaXhlZCBhIGxlZnRvdmVyIEhlYXBGcmVlIGluIHRoZSB0cmFja2JhciBjb21tb24gY29udHJvbC4KCgkqIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3RhYi5oLCBkbGxzL2NvbWN0bDMyL3RhYi5jOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZpeGVkIHNvbWUgcHJvYmxlbXMgd2l0aCB0aGUgdGFiIGNvbW1vbiBjb250cm9sICh3aXRoIHRoYW5rcyB0byBBbmRlcnMKCUNhcmxzc29uIDxhbmRlcnMuY2FybHNzb25AbGludXgubnU+KS4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9wcm9wc2hlZXQuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3Byb3BzaGVldC5oLCByZWxheTMyL2NvbWN0bDMyLnNwZWM6CglBbGV4IFByaWVtIDxhbGV4cEBzY2kua3VuLm5sPgoJQWRkZWQgYSBtaXNzaW5nIFByb3BlcnR5U2hlZXQzMkFXIGFuZCBDcmVhdGVQcm9wZXJ0eVNoZWV0UGFnZSBzdHViLAoJYW5kIHNvbWUgbWlzc2luZyBkZWZpbmVzLgoKCSogbWlzYy9tYWluLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBncmFwaGljcy92Z2EuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIE1ha2VDcml0aWNhbFNlY3Rpb25HbG9iYWwgb24gYWxsIGNyaXRpY2FsIHNlY3Rpb25zIHVzZWQgYWNyb3NzCglwcm9jZXNzIGJvdW5kYXJpZXMuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHByb3RvdHlwZXMgZm9yIE1ha2VDcml0aWNhbFNlY3Rpb25HbG9iYWwsIENvbnZlcnRUb0dsb2JhbEhhbmRsZS4KCgkqIGRvY3VtZW50YXRpb24vd2luZS5tYW46CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gdGhlIG1hbiBwYWdlLgoKCSogbG9hZGVyL2Rvcy9tb2R1bGUuYzogR2VyYWxkIFBmZWlmZXIgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CglGaXhlZCBhcmdzIG9mIE1aX0NyZWF0ZVByb2Nlc3MuCgoJKiBwcm9ncmFtcy9jbG9jay9sYW5ndWFnZS5jLCBwcm9ncmFtcy9ub3RlcGFkL2xhbmd1YWdlLmMsIHByb2dyYW1zL3Byb2dtYW4vbWFpbi5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJRml4ZWQgc3RyaW5nIGJ1ZyBpbiBwcm9ncmFtcy8uCgoJKiBtc2Rvcy9pb3BvcnRzLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIHN0dXBpZCAiYWN0aW9uIiBlbXVsYXRpb24gZm9yIGhhcmR3YXJlIHRpbWVycyBpbiBpb3BvcnRzLmMuCgoJKiBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFnYWluIGEgc21hbGwgRE9TQVNQSSBwYXRjaC4KCgkqIGRvY3VtZW50YXRpb24vYnVncmVwb3J0cywgZG9jdW1lbnRhdGlvbi9mb250cywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gY2hlY2sgaWYgcGFsZXR0ZSBpcyBub3QgbnVsbCB3aGVuIHNldHRpbmcgYSBwYWxldHRlCgktIGNoZWNrIGlmIHdpbmRvdyBoYW5kbGUgaXMgdmFsaWQgYmVmb3JlIGdldHRpbmcgaXRzICdkcmF3YWJsZScKCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCVByZXZlbnQgY29yZSBkdW1wIHdpdGggc29tZSBUVEYgKHdoZW4gWDExIHJ1bnMgd2l0aCBhIHRydWUgdHlwZQoJc2VydmVyKS4KCgkqIHNlcnZlci9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVXNlIHN0ZG91dCBmb3IgZGVmYXVsdCBjb25zb2xlIG91dHB1dC4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VuIEphbiAgMyAxNzowMDoyMCAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogZ3JhcGhpY3MvZDNkZXhlY3V0ZWJ1ZmZlci5jLCBncmFwaGljcy9kM2RsaWdodC5jLCBncmFwaGljcy9kM2RtYXRlcmlhbC5jLCBncmFwaGljcy9kM2R0ZXh0dXJlLmMsIGdyYXBoaWNzL2QzZHZpZXdwb3J0LmMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS93aW5lX2dsLmgsIG11bHRpbWVkaWEvZHNvdW5kLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkb2N1bWVudGF0aW9uL3N0YXR1cy9kaXJlY3QzRCwgZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0ZHJhdywgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2QzZF9wcml2YXRlLmgsIGdyYXBoaWNzL2QzZGNvbW1vbi5jLCBncmFwaGljcy9kM2RkZXZpY2VzLmM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYmVnaW5uaW5nIG9mIGltcGxlbWVudGF0aW9uIG9mIERpcmVjdDNEMiAoRFggNS4wKSBhbmQgYXNzb2NpYXRlZCBjbGFzc2VzCgktIHNvbWUgYmFzaWMgY29kZSBmb3IgRGlyZWN0M0QgYW5kIERpcmVjdDNERXhlY3V0ZUJ1ZmZlciAoRFggMy4wKQoJLSBhZGRlZCBzdHJldGNoaW5nIHRvIEJsdCBmdW5jdGlvbgoKCSogbWlzYy92ZXJzaW9uLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHJ5IHRvIGF1dG9kZXRlY3QgTlQ0LgoKCSogd2luMzIvY29uc29sZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCTAgbWVhbnMgc3VjY2VzcywgYWxsIGVsc2UgZmFpbHVyZSBmb3IgV2FpdEZvclNpbmdsZU9iamVjdC4KCgkqIG1zZG9zL2ludDEwLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJRG8gbm90IGFkdmFuY2UgdGhlIGN1cnNvciBpbiBjZXJ0YWluIHJvdXRpbmVzLiBUaGlzIGNsZWFuZWQgdXAgdGhlCglpbXBsZW1lbnRhdGlvbiBxdWl0ZSBhIGJpdC4KCgkqIGxvYWRlci9tYWluLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJU2V0IGNvbnNvbGUgdmlkZW8gbW9kZSB3aGVuIGxvYWRpbmcgRE9TIGFwcC4gKEV2ZW50dWFsbHksIEkgd2FudCB0bwoJbWltaWMgV2luZG93cyA5eCdzIGJlaGF2aW9yIGJ5IHNldHRpbmcgdGhlIHZpZGVvIG1vZGUgb25seSB3aGVuIG5vbgoJSU5UIDIxIGNhbGxzIGFyZSB1c2VkIHRvIGFsbG93IGZvciBhcmJpdHJhcnktc2l6ZWQgY29uc29sZXMpLgoKCSogY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS94dGVybS5jOgoJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglYdGVybSBkcml2ZXIgY2FuIG5vdyByZXNpemUgdGhlIHRlcm1pbmFsIHdoZW4gYSBtb2RlIGNoYW5nZSBpcwoJZGV0ZWN0ZWQuCgoJKiBjb25zb2xlL2dlbmVyaWMuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglMb25nIHN0YW5kaW5nIHNjcm9sbCBidWcgZml4ZWQhCgoJKiBjb25zb2xlL25jdXJzZXMuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL2NvbnNvbGUuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCVJld3JpdGUgb2YgY29uZmlndXJhdGlvbiBzeXN0ZW0gdG8gc3VwcG9ydCAicmVndWxhciIgY3Vyc2VzIGFzIHdlbGwgYXMKCWVsaW1pbmF0aW5nIHRoZSAtLXdpdGgtbmN1cnNlcyBvcHRpb24uIE5vdywgbmN1cnNlcyBzdXBwb3J0IHdpbGwgYmUKCWJ1aWx0IGluIGlmIGEgY29tcGF0aWJsZSBsaWJyYXJ5IGlzIGRldGVjdGVkLgoKCSogaW5jbHVkZS93aW50eXBlcy5oLCB3aW5kb3dzL2RlZmRsZy5jOgoJTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglGaXggdGhlIHJldHVybiB0eXBlIG9mIERMR1BST0MgdHlwZSBhbmQgbWFzayBvdXQgdGhlIHVuc2V0IGhpZ2h3b3JkIG9mCgl0aGUgcmV0dXJuIHdoZW4gYSAxNiBiaXQgZGlhbG9nIHByb2MgaXMgY2FsbGVkLgoKCSogaW5jbHVkZS9pbnRlcmZhY2VzLmg6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGQgaW50ZXJmYWNlIElEJ3MgZm9yIHVwY29taW5nIElUeXBlTGliIGltcGxlbWVudGF0aW9uLgoKCSogZmlsZXMvZG9zX2ZzLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnZml4IGZvciB0cmFpbGluZyBzbGFzaGVzLCByZXBldGl0aW9uIG9mICcvJyBvciAnXCcgYW5kCglTZXRMYXN0RXJyb3IoKSBpbiBHZXRGdWxsUGF0aG5hbWUuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvYWR2YXBpMzIvLmN2c2lnbm9yZSwgZGxscy9hZHZhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9hZHZhcGkzMi9hZHZhcGkuYywgZGxscy9hZHZhcGkzMi9ldmVudGxvZy5jLCBkbGxzL2FkdmFwaTMyL3NlY3VyaXR5LmMsIGRsbHMvYWR2YXBpMzIvc2VydmljZS5jLCByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHdpbjMyL0F0dGljL2FkdmFwaS5jLCB3aW4zMi9BdHRpYy9zZWN1cml0eS5jLCB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvaW5pdC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCBBRFZBUEkzMiBmaWxlcyB0byBkbGxzL2FkdmFwaTMyLgoJQWRkZWQgc3R1YnMgZm9yIGV2ZW50bG9nIGZ1bmN0aW9ucy4KCgkqIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YnMgTlRTSENoYW5nZU5vdGlmeVJlZ2lzdGVyLCBOVFNIQ2hhbmdlTm90aWZ5RGVyZWdpc3Rlci4KCUNsZWFudXAsIHNvbWUgbW9yZSBmdW5jdGlvbnMgVU5JQ09ERSByZWFkeS4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU0hDbG9uZVNwZWNpYWxJRExpc3QgaW1wbGVtZW50ZWQuCglTSEdldERhdGFGcm9tSURMaXN0QSBjb3JyZWN0ZWQuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVNoZWxsX0dldENhY2hlZEltYWdlSW5kZXgzMltBfFddIGltcGxlbWVudGVkLgoKCSogbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjUuYywgbXNkb3MvaW50MjYuYywgZmlsZXMvZHJpdmUuYywgaW5jbHVkZS9kcml2ZS5oOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJSW1wbGVtZW50ZWQgcmF3IGRldmljZSBhY2Nlc3MgY2FsbHMgZm9yIGlvY3RsR2VuZXJpY0Jsa0RldlJlcSgpCglhbmQgdGhlcmVmb3JlIG1vdmVkIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgaW50Mls1Nl0uYyBpbnRvIGZpbGVzL2RyaXZlLmMuCgoJKiBtc2Rvcy9pb3BvcnRzLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUFkZGVkIGF1dG9tYXRpYyBDTU9TIFJBTSBjaGVja3N1bSBjYWxjdWxhdGlvbi4KCgkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYywgZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgZG9jdW1lbnRhdGlvbi9hc3BpLCByZWxheTMyL3duYXNwaTMyLnNwZWM6CglBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglTZW5kQVNQSTMyQ29tbWFuZDMyIGhhcyB0byBiZSBfX2NkZWNsLgoJVXBkYXRlZCBkb2N1bWVudGF0aW9uL2FzcGkgYW5kIHJldmVydGVkIGFuIEVSUiBiYWNrIHRvIFdBUk4uCgoJKiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHM6IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCU9mIGNvdXJzZSB3ZSB3YW50IHRoZSBsYXN0IDEwMCBsaW5lcywgbm90IHRoZSBmaXJzdCAxMDAgbGluZXMuCglVc2UgJ3RhaWwnIGluc3RlYWQgb2YgJ2hlYWQnLiBBbHNvIGZpeCB0ZXh0IGFsaWdubWVudCBmcm9tCglwcmV2aW91cyBwYXRjaC4KCgkqIG11bHRpbWVkaWEvam95c3RpY2suYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglSZWFkaW5nIGpveXN0aWNrIDUgd2hlbiB3ZSBvbmx5IHN1cHBvcnQgNCBzaG91bGQgZmFpbCBpbnN0ZWFkIG9mCgloYW5nLgoKCSogbXVsdGltZWRpYS9tY2ljZGEuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglQbGF5aW5nIGEgbm9uLWV4aXN0ZW50IENEIHNob3VsZCBmYWlsIGluc3RlYWQgb2YgY3Jhc2guCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbjogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgbmVjZXNzYXJ5IGNvbmZpZ3VyZSByZXJ1bnMgZm9yIE1ha2VmaWxlIGFuZCBNYWtlLnJ1bGVzCglnZW5lcmF0aW9uLgoKCSogbWlzY2VtdS9pbnN0ci5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUVtdWxhdGVzIGlucy9vdXRzIGNvcnJlY3RseSBmb3IgRE9TIHByb2dyYW1zLgoKCSogb2xlL3N0b3JhZ2UuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvY29uc29sZS5jLCBzZXJ2ZXIvZXZlbnQuYywgc2VydmVyL2ZpbGUuYywgc2VydmVyL21hcHBpbmcuYywgc2VydmVyL211dGV4LmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdGhyZWFkLmMsIHNlcnZlci90cmFjZS5jLCB3aW4zMi9kZXZpY2UuYywgd2luMzIvZmlsZS5jLCBmaWxlcy9kb3NfZnMuYywgZmlsZXMvZmlsZS5jLCBpbmNsdWRlL2RldmljZS5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgbG9hZGVyL25lL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbWlzYy9jcnRkbGwuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvdnhkLmM6CglJbXBsZW1lbnRlZCBmaWxlIHNoYXJpbmcgY2hlY2tzIGluIHRoZSBzZXJ2ZXIuCglBZGRlZCBzZXQgZmlsZSB0aW1lIHNlcnZlciByZXF1ZXN0LgoJT3ZlcmFsbCBjbGVhbiB1cCBvZiB0aGUgZmlsZSBoYW5kbGluZyAoRE9TIGRldmljZSBoYW5kbGluZyBpcyBub3cKCWJyb2tlbiwgc2hvdWxkIGJlIHJlZG9uZSkuCgpTYXQgSmFuICAyIDA4OjIyOjM0IDE5OTkgIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtZW1vcnkvdmlydHVhbC5jOgoJRml4ZWQgYnVnIGluIENyZWF0ZUZpbGVNYXBwaW5nIHdoZW4gbmFtZSBpcyBub3QgTlVMTC4KCgkqIHNlcnZlci9yZXF1ZXN0LmM6IEZpeGVkIENIRUNLX1NUUklORyBkaXNwbGF5LgoKRnJpIEphbiAgMSAxOTo1MToyNSAxOTk5ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBtZW1vcnkvbG9jYWwuYzoKCVJpY2hhcmQgQSBMb3VnaCA8cmFsb3VnaC5jZWRAZG5ldC5jby51az4KCVB1dCByZXR1cm4gdmFsdWUgb2YgTG9jYWxBbGxvYyBpbiBDWCB0b28uCgoJKiBpbmNsdWRlL3BzZHJ2Lmg6IERpbWl0cmllIE8uIFBhdW4gPGRpbWlAY3MudG9yb250by5lZHU+CglQcm90ZWN0IGFnYWluc3QgbXVsdGlwbGUgaW5jbHVkZXMuCgoJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6IFVzZSBwcm9wZXIgc3lzdGVtIGRpcmVjdG9yeS4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmM6IEdvdCByaWQgb2YgQ0xJRU5UX0dldFByb2Nlc3NJbmZvLgoKCSogd2luZG93cy9jbGFzcy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2RlZmRsZy5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RyaXZlci5jLCB3aW5kb3dzL21zZ2JveC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3MvdXNlci5jLCB3aW5kb3dzL3dpbmhlbHAuYywgaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oLCBpbmNsdWRlL3dpbnJlZy5oLCBpbmNsdWRlL3dpbnVzZXIuaCwgbG9hZGVyL21vZHVsZS5jLCBtaXNjL2NvbW0uYywgbWlzYy9zaGVsbC5jLCBtaXNjL3Nwb29sZXIuYywgbWlzYy9zcHkuYywgbWlzYy93aW5zb2NrLmMsIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9tY2lhbmltLmMsIG11bHRpbWVkaWEvbWNpY2RhLmMsIG11bHRpbWVkaWEvbWNpbWlkaS5jLCBtdWx0aW1lZGlhL21jaXdhdmUuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvbGUvb2xlb2JqLmMsIGNvbnRyb2xzL2J1dHRvbi5jLCBjb250cm9scy9kZXNrdG9wLmMsIGNvbnRyb2xzL2ljb250aXRsZS5jLCBjb250cm9scy9zdGF0aWMuYywgZGVidWdnZXIvZGJnLnksIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBncmFwaGljcy9wc2Rydi9lc2NhcGUuYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9kaXNwbGF5LmgsIGluY2x1ZGUvaW1hZ2VsaXN0LmgsIGluY2x1ZGUvb2xlLmgsIGluY2x1ZGUvcXVldWUuaCwgaW5jbHVkZS9zaGVsbC5oLCBpbmNsdWRlL3N0b3JhZ2UuaCwgaW5jbHVkZS9zdHJ1Y3QzMi5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kb3dzLmg6CglNaWNoYWVsIFZla3NsZXIgPG12ZWtzbGVyQHRlY2h1bml4LnRlY2huaW9uLmFjLmlsPgoJTW92ZXMgbW9yZSBzdHVmZiBmcm9tIHdpbmRvd3MuaC4KCS0gaW5jbHVkZS93aW51c2VyLmggLSBpbnRlcmZhY2UgcmVsZXZhbnQgdG8gdXNlcjMyLnNwZWMKCS0gaW5jbHVkZS93aW5lL3dpbnVzZXIxNi5oIC0gdGhlIG9sZCAxNiBiaXQgaW50ZXJmYWNlIChpbnRlcm5hbCB1c2UpCgktIGluY2x1ZGUvd2luYmFzZS5oIC0gc29tZSBtaW5vciB1cGRhdGVzIHRvIGtlZXAgdGhpbmdzIGNvaGVyZW50LgoJLSBMb3Qgb2Ygb3RoZXIgZmlsZXMgbWFkZSB0byBpbmNsdWRlIHdpbmUvd2ludXNlcjE2LmgsIHdoaWNoIGlzIG5vCgkgIGxvbmdlciBpbmNsdWRlZCBmcm9tIHdpbmRvd3MuaAoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOiBGaXhlZCBDbG9zZUhhbmRsZSgpIG9uIGdsb2JhbCBoYW5kbGVzLgoKCSogUkVBRE1FLCBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMsIGRvY3VtZW50YXRpb24vd2luOTVsb29rLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJQWRkIHNvbWUgaW5mb3JtYXRpb24gdG8gdGhlIG1hbiBwYWdlIGFuZCBSRUFETUUgZmlsZS4KCU1ha2UgZG9jdW1lbnRhdGlvbi93aW45NWxvb2sgc2F5IFtUd2Vhay5MYXlvdXRdIGluc3RlYWQgb2YKCVtUd2Vha3MuTGF5b3V0XS4KCUZpeCBpbmNvcnJlY3QgY29tbWFuZCBnaXZlbiBpbiBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMuCglTdGFuZGFyZCBlcnJvciB3YXMgbm90IGJlaW5nIHJlZGlyZWN0ZWQsIHNvIG1vc3Qgb2YgdGhlCglvdXRwdXQgd2FzIGxvc3QuCgoJKiBvYmplY3RzL2JpdG1hcC5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCURlbHBoaSAyLjAgbmVlZHMgdG8gYWxsb2NhdGUgYSBiaXRtYXAgYmlnZ2VyIHRoYW4gNDA5NiBiaXRzIHdpZGUuCgoJKiBtaXNjL3ByaW50ZHJ2LmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJSW5pdGlhbGl6ZSBscGR3TmVlZGVkLgoKCSogaWYxNjMyL3Nub29wLmM6CglNYXJjdXMgTWVpc3NuZXIgPE1hcmN1cy5NZWlzc25lckBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUluY2x1ZGUgc3R1ZmYgZXZlbiBpZiBub3Qgb24gX19pMzg2X18gZm9yIGRlYnVnIGRlZmluZXMuCgoJKiBvbGUvdmFyaWFudC5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBbm90aGVyIC8vIGNvbW1lbnQgZml4ZWQuCgoJKiBzZXJ2ZXIvZmlsZS5jOgoJTWFyY3VzIE1laXNzbmVyIDxNYXJjdXMuTWVpc3NuZXJAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglOZWVkIDxlcnJuby5oPiBmb3IgZXJybm8gZGVjbC4gb24gU29sYXJpcy4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUveDExZm9udC5oLCBvYmplY3RzL2ZvbnQuYzoKCURvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJSW1wbGVtZW50IFRyYW5zbGF0ZUNoYXJzZXRJbmZvLCBjaGFuZ2UgY2hhcnNldCB0eXBlIHRvIEJZVEUuCgoJKiBjb250cm9scy9jb21iby5jLCBjb250cm9scy9saXN0Ym94LmMsIGluY2x1ZGUvY29tYm8uaDoKCUFsZXggS29yb2JrYSA8a29yb2JrYUBnYWxheHkuYW1zLnN1bnlzYi5lZHU+CglCZXR0ZXIgQ0JfU0VUQ1VSU0VMIG1lc3NhZ2UgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci9zeW5jaHJvLmMsIHNjaGVkdWxlci90aHJlYWQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCU1vdmVkIE1zZ1dhaXRGb3JNdWx0aXBsZU9iamVjdCBpbXBsZW1lbnRhdGlvbiB0byBVU0VSIHJvdXRpbmVzLCB1c2luZwoJYSBub3JtYWwgV2luMzIgZXZlbnQuCgoJKiB0b29scy9tYWtlX3JlcXVlc3RzOiBTZW5kIGRlYnVnZ2luZyBvdXRwdXQgdG8gc3RkZXJyLgoKCSogZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2Rvc19mcy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvZmlsZS5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvazMyb2JqLmMsIHNjaGVkdWxlci9tdXRleC5jLCBzY2hlZHVsZXIvcGlwZS5jLCBzY2hlZHVsZXIvc2VtYXBob3JlLmMsIHdpbjMyL2NvbnNvbGUuYzoKCUNsZWFuZWQgdXAgYW5kIHJlbW92ZWQgc29tZSBubyBsb25nZXIgdXNlZCBjb2RlLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogVXNlIHNlcnZlciBmaWxlIG1hcHBpbmcgb2JqZWN0cy4KCgkqIGluY2x1ZGUvc2VydmVyL29iamVjdC5oLCBpbmNsdWRlL3NlcnZlci9yZXF1ZXN0LmgsIGluY2x1ZGUvc2VydmVyL3RocmVhZC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9maWxlLmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9tYXBwaW5nLmMsIHNlcnZlci9vYmplY3QuYywgc2VydmVyL3BpcGUuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3RocmVhZC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaDoKCUFkZGVkIHNlcnZlci1zaWRlIGZpbGUgbWFwcGluZyBvYmplY3Qgc3VwcG9ydC4KCgkqIG1pc2MvY3J0ZGxsLmM6CglIYWNrZWQgc3RkaW8gZnVuY3Rpb25zIHRvIHVzZSBXaW4zMiBmaWxlIGhhbmRsZXMuIFN0aWxsIG5lZWRzIGEgcHJvcGVyCglzdGRpbyBlbXVsYXRpb24uCgoJKiBsb2FkZXIvbmUvbW9kdWxlLmMsIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBsb2FkZXIvbmUvc2VnbWVudC5jOgoJVXNlIFdpbjMyIGZpbGUgaGFuZGxlcyBpbnN0ZWFkIG9mIFVuaXggb25lcy4KCgkqIGluY2x1ZGUvbW9kdWxlLmgsIGluY2x1ZGUvcGVfaW1hZ2UuaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGxvYWRlci9kb3MvbW9kdWxlLmMsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIGluY2x1ZGUvZG9zZXhlLmg6CglUYWtlIGludG8gYWNjb3VudCBoYW5kbGUgaW5oZXJpdGFuY2UgZmxhZy4KClRodSBEZWMgMzEgMTU6NTU6MTkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGRlYnVnZ2VyL2RiX2Rpc2FzbS5jOgoJQ2hhbmdlZCBkYl90YXNrX3ByaW50c3ltIHRvIGFsd2F5cyBwcmludCBhIGZ1bGwgYWRkcmVzcywgbm8gbWF0dGVyCgl3aGF0IHRoZSBvcGVyYW5kIHNpemUgaXMuCgoJKiBzY2hlZHVsZXIvY3JpdHNlY3Rpb24uYzogUmUtaW1wbGVtZW50ZWQgdXNpbmcgYSByZWFsIHNlbWFwaG9yZS4KCgkqIHdpbmRvd3MvcXVldWUuYywgZmlsZXMvY2hhbmdlLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9rMzJvYmouaCwgaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGhyZWFkLmgsIGxvYWRlci9zaWduYWwuYywgbWVtb3J5L3ZpcnR1YWwuYywgbWlzYy90b29saGVscC5jLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNjaGVkdWxlci9ldmVudC5jLCBzY2hlZHVsZXIvaGFuZGxlLmMsIHNjaGVkdWxlci9rMzJvYmouYywgc2NoZWR1bGVyL211dGV4LmMsIHNjaGVkdWxlci9waXBlLmMsIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zZW1hcGhvcmUuYywgc2NoZWR1bGVyL3N5bmNocm8uYywgc2NoZWR1bGVyL3RocmVhZC5jLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2RldmljZS5jOgoJUmVtb3ZlZCBjbGllbnQtc2lkZSB3YWl0IGZ1bmN0aW9uczsgYWxsIHdhaXRpbmcgaXMgbm93IGRvbmUgdGhyb3VnaAoJdGhlIHNlcnZlci4KCgkqIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2NoYW5nZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvdHJhY2UuYywgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaDoKCUFkZGVkIGNoYW5nZSBub3RpZmljYXRpb25zLgoJQWRkZWQgZ2xvYmFsIGhhbmRsZSBzdXBwb3J0LgoKV2VkIERlYyAzMCAxMjoxMTo1MiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS90aHJlYWQuaCwgc2NoZWR1bGVyL3N5bmNocm8uYzoKCUNoYW5nZWQgc2VydmVyIHdhaXQgbG9naWMgYSBiaXQuCgoJKiB3aW4zMi9jb25zb2xlLmM6CglIYWNrcyB0byBzdXBwb3J0IHNlcnZlci1zaWRlIGNvbnNvbGUuIFNob3VsZCBiZSByZWRvbmUgcHJvcGVybHkKCXNvbWUgZGF5LgoKCSogZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9maWxlLmgsIHdpbjMyL2ZpbGUuYywgd2luMzIvbmV3Zm5zLmM6CglSZWltcGxlbWVudGVkIFJlYWQvV3JpdGVGaWxlIHRvIHVzZSBzZXJ2ZXIgZmlsZSBkZXNjcmlwdG9ycy4KCVJlbW92ZWQgZmlsZSBwb3NpdGlvbiBoYWNrIGFzIGl0IGlzIHdyb25nIGZvciBXaW4zMiAoc2hvdWxkIGJlIHJlZG9uZQoJZm9yIFdpbjE2IG9ubHkpLgoKCSogc2NoZWR1bGVyL01ha2VmaWxlLmluLCBzY2hlZHVsZXIvazMyb2JqLmMsIHNjaGVkdWxlci9waXBlLmM6CglBZGRlZCBhbm9ueW1vdXMgcGlwZSBzdXBwb3J0CgoJKiBpbmNsdWRlL3NlcnZlci5oLCBpbmNsdWRlL3NlcnZlci9vYmplY3QuaCwgaW5jbHVkZS9zZXJ2ZXIvcmVxdWVzdC5oLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9jb25zb2xlLmMsIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL29iamVjdC5jLCBzZXJ2ZXIvcGlwZS5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvcmVxdWVzdC5jLCBzZXJ2ZXIvc2VtYXBob3JlLmMsIHNlcnZlci90aHJlYWQuYywgc2VydmVyL3RyYWNlLmM6CglBZGRlZCBzZXZlcmFsIGZpbGUgc2VydmVyIHJlcXVlc3RzCglBZGRlZCBzZXJ2ZXItc2lkZSBwaXBlcyBhbmQgY29uc29sZXMKClN1biBEZWMgMjcgMTU6Mjg6NTUgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY3J0ZGxsLmMsIG1zZG9zL2ludDIxLmMsIHNjaGVkdWxlci9jbGllbnQuYywgc2NoZWR1bGVyL2szMm9iai5jLCBzZXJ2ZXIvTWFrZWZpbGUuaW4sIHNlcnZlci9ldmVudC5jLCBzZXJ2ZXIvZmlsZS5jLCBzZXJ2ZXIvbXV0ZXguYywgc2VydmVyL3Byb2Nlc3MuYywgc2VydmVyL3JlcXVlc3QuYywgc2VydmVyL3NlbWFwaG9yZS5jLCBzZXJ2ZXIvdHJhY2UuYywgdG9vbHMvbWFrZV9yZXF1ZXN0cywgZmlsZXMvZG9zX2ZzLmMsIGZpbGVzL2ZpbGUuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL2ZpbGUuaCwgaW5jbHVkZS9zZXJ2ZXIuaCwgaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3JlcXVlc3QuaCwgbG9hZGVyL21haW4uYywgbWVtb3J5L3ZpcnR1YWwuYzoKCUFkZGVkIGJlZ2lubmluZ3Mgb2Ygc2VydmVyLXNpZGUgZmlsZSBoYW5kbGluZy4KCUFkZGVkIC1kZWJ1Z21zZyArc2VydmVyIHN1cHBvcnQuCglCZXR0ZXIgc2VydmVyIHJlcXVlc3QgZHVtcGluZyBmb3IgdmFyYXJncyByZXF1ZXN0cy4KCgkqIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJRml4ZWQgU2V0Rm9jdXMgdGhhdCB3YXMgYnJva2VuIHdoZW4gbW92ZWQgdG8geDExZHJ2LgoKCSogaW5jbHVkZS9zZXJ2ZXIvb2JqZWN0LmgsIGluY2x1ZGUvc2VydmVyL3RocmVhZC5oLCBzY2hlZHVsZXIvY2xpZW50LmMsIHNlcnZlci9NYWtlZmlsZS5pbiwgc2VydmVyL2V2ZW50LmMsIHNlcnZlci9tYWluLmMsIHNlcnZlci9tdXRleC5jLCBzZXJ2ZXIvcHJvY2Vzcy5jLCBzZXJ2ZXIvc2VsZWN0LmMsIHNlcnZlci9zZW1hcGhvcmUuYywgc2VydmVyL3NvY2tldC5jLCBzZXJ2ZXIvdGhyZWFkLmM6CglBZGRlZCBhZGRfcXVldWUvcmVtb3ZlX3F1ZXVlIHRvIHNlcnZlciBvYmplY3Qgb3BlcmF0aW9ucy4KCU1vdmVkIHNlbGVjdCgpIGxvb3AgZnVuY3Rpb25zIHRvIHNlbGVjdC5jLgoKU2F0IERlYyAyNiAxOTo0NzowMCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcHJvZ3JhbXMvcmVndGVzdC9yZWd0ZXN0LmM6CglSZW5hbWVkIEVSUiBtYWNybyB0byBhdm9pZCBjb25mdXNpbmcgdGhlIG1ha2VfZGVidWcgc2NyaXB0LgoKCSogb2xlL3N0b3JhZ2UuYywgb2xlL3R5cGVsaWIuYywgaW5jbHVkZS9kM2QuaCwgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS9zdG9yYWdlLmgsIGluY2x1ZGUvd2ludmVyc2lvbi5oLCBvbGUvY29tcG9iai5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMm5scy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCB0b25zIG9mIGluY29tcGxldGUgcHJvdG90eXBlcywgYXNzaWdubWVudCdzIG9mIHBvaW50ZXIgd2l0aAoJZGlmZmVyZW50IHNpZ25lZG5lc3MsIHN1cGVyZmxvdXMgJywnIGFuZCAnOycgaW4gc3RydWN0dXJlcywgd3JvbmcKCXJldHVybi10eXBlcywgbG9zZSBvZiBkaWdpdHMgYW5kIHNvbWUgc21hbGwgZ2xpdGNoZXMuCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYywgaW5jbHVkZS94MTFmb250Lmg6CglBbGV4IEtvcm9ia2EgPGtvcm9ia2FAZ2FsYXh5LmFtcy5zdW55c2IuZWR1PgoJQ2xlYW5lZCB1cCBmb250IGVuY29kaW5nIGhhbmRsaW5nLiBBZGRlZCAnSWdub3JlIycgb3B0aW9uIHRvIHRoZQoJW2ZvbnRzXSBzZWN0aW9uLiBBbHNvLCBmaWxlIHdpdGggY2FjaGVkIG1ldHJpY3Mgbm93IGhhcyB0aGUgdmFsdWUgb2YKCSRESVNQTEFZIGFwcGVuZGVkIHRvIHRoZSBmaWxlbmFtZS4KCgkqIHByb2dyYW1zL2Nsb2NrL2xhbmd1YWdlLmMsIHByb2dyYW1zL2Nsb2NrL21haW4uYywgcHJvZ3JhbXMvbm90ZXBhZC9kaWFsb2cuYywgcHJvZ3JhbXMvbm90ZXBhZC9sYW5ndWFnZS5jLCBwcm9ncmFtcy9ub3RlcGFkL21haW4uYywgcmMvc3lzdGVzdC5jLCB3aW5kb3dzL211bHRpbW9uLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGZpbGVzL3Byb2ZpbGUuYywgZ3JhcGhpY3MvcGF0aC5jLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZDNkLmgsIGluY2x1ZGUvZHBsYXkuaCwgaW5jbHVkZS9kc291bmQuaCwgaW5jbHVkZS9vbGUuaCwgaW5jbHVkZS9vbGVvYmouaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS92ZncuaCwgaW5jbHVkZS93aW5lcnJvci5oLCBpbmNsdWRlL3dpbmlvY3RsLmgsIG1pc2MvbWFpbi5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG9sZS9vbGUyLmMsIGRlYnVnZ2VyL3N0YWJzLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL2hvdGtleS5jLCBkbGxzL2NvbWN0bDMyL2xpc3R2aWV3LmMsIGRsbHMvY29tY3RsMzIvcGFnZXIuYywgZGxscy9jb21jdGwzMi9yZWJhci5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jLCBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYywgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9lbnVtaWRsaXN0LmMsIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGFuZ2VkIC8vIGNvbW1lbnRzIHRvIC8qICovIHNvIFdJTkUgY29tcGlsZXMgd2l0aCBub24tZ2NjIGNvbXBpbGVycwoJYWdhaW4uCgoJKiB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgZGVidWdnZXIvZGJnLnksIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvZGlzcGxheS5oLCBpbmNsdWRlL3R0eWRydi5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL3BhbGV0dGUuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kaW5wdXQuYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvaW5wdXQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCU1vdmVkIG1vcmUgdGhpbmdzIHRvIHRoZSBYMTEgZHJpdmVyLgoKCSogaW5jbHVkZS93aW5nZGkuaCwgb2JqZWN0cy9icnVzaC5jOgoJRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QG11bHRpbWFuaWEuY29tPgoJRml4ZWQgdGhlIHByb3RvdHlwZSBvZiBDcmVhdGVESUJQYXR0ZXJuQnJ1c2hQdAoKCSogaW5jbHVkZS93aW5kb3dzLmg6IEZyYW5jb2lzIEdvdWdldCA8ZmdvdWdldEBtdWx0aW1hbmlhLmNvbT4KCVJlbW92ZWQgdGhlIENOX3h4eCBtYWNyb3Mgc2luY2UgdGhleSBhcmUgbm90IHVzZWQsIGRvIG5vdCBjb3JyZXNwb25kIHRvCglhbnkgV2luZG93cyBkZWZpbmUgYW5kIGNvbmZsaWN0IHdpdGggTUZDIGRlZmluZXMuCgl3aW5kb3dzLmggbXVzdCBwcm92aWRlIGFsbCB0aGUgZGVmaW5pdGlvbnMgY29udGFpbmVkIGluIHdpbmJhc2UuaAoJU29tZSBYeHgzMiBmdW5jdGlvbnMgZGlkIG5vdCBoYXZlIHRoZSBhc3NvY2lhdGVkIFh4eCBtYWNyby4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaDogRnJhbmNvaXMgR291Z2V0IDxmZ291Z2V0QG11bHRpbWFuaWEuY29tPgoJQWRkZWQgYSB0eXBlZGVmIGZvciBfX2ludDY0IHdoaWNoIGlzIGEgYnVpbHRpbiBWaXN1YWwgQysrIHR5cGUKCUFkZGVkIGEgdHlwZWRlZiBmb3IgUFVJTlQKCgkqIGluY2x1ZGUvb2JqYmFzZS5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAbXVsdGltYW5pYS5jb20+CglSRUZJSUQgd2FzIG5vdCBkZWZpbmVkLgoKCSogY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmgsIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL3dpbnNvY2suYywgY29uZmlndXJlOgoJUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCWNvbmZpZ3VyZSBmaXJzdCBjaGVja3Mgd2hldGhlciBpdCBpcyBwb3NzaWJsZSB0byBjb21waWxlIElQWCBjb2RlIHdpdGgKCUdsaWJjIGhlYWRlcnMuIElmIGl0IGZhaWxzLCBuZXh0IGNoZWNrIGRldGVybWluZXMgd2hldGhlciBkaXJlY3QgaW5jbHVzaW9uCglvZiA8bGludXgvaXB4Lmg+IHdvcmtzLgoKCSogaW5jbHVkZS90Y2hhci5oOiBGcmFuY29pcyBHb3VnZXQgPGZnb3VnZXRAbXVsdGltYW5pYS5jb20+CglQcm92aWRlcyB0aGUgbWFwcGluZ3MuIE1CQ1MgYW5kIFVuaWNvZGUgZnVuY3Rpb25zIGFyZSBub3QgaW1wbGVtZW50ZWQuCglTdGFuZGFyZCAoU0JDUykgZnVuY3Rpb25zIG1heSBleGlzdCBvciBub3QsIHdpdGggdGhlIHNhbWUgb3IgYSBkaWZmZXJlbnQKCXNlbWFudGljcy4KCgkqIGRsbHMvY29tY3RsMzIvaXBhZGRyZXNzLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9pcGFkZHJlc3MuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglJUGFkZHJlc3MgY29tbW9uIGNvbnRyb2wgaW1wbGVtZW50YXRpb24uIEZpcnN0IHRyeTsgbmVlZHMgbW9yZSB3b3JrIHRvCglyZW1vdmUgYm9yaW5nIGJ1Z3MuCgpGcmkgRGVjIDI1IDA4OjU1OjE1IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9vbGVvYmouaCwgaW5jbHVkZS9zaGxvYmouaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgdGhlIFRFWFQgcmVkZWZpbmVkIHdhcm5pbmdzLgoKCSogbXNkb3MvaW50MTAuYzogSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CglIb29rIGludG8gdGhlIChzdHViYmVkKSByZXNpemUgY29kZSBpbiBtc2RvcyBpbnQxMC4KCgkqIGNvbnNvbGUvaW50ZXJmYWNlLmMsIGluY2x1ZGUvY29uc29sZS5oLCBpbmNsdWRlL29wdGlvbnMuaCwgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmM6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZCBzdXBwb3J0IGZvciBzZWxlY3Rpb24gb2YgY29uc29sZSBtb2RlIGRyaXZlcnMgdG8gdXNlIHVzaW5nIHRoZQoJLWNvbnNvbGUgb3B0aW9uLiBDdXJyZW50bHkgInR0eSIsICJuY3Vyc2VzIiwgYW5kICJ4dGVybSIgYXJlCglzdXBwb3J0ZWQuCglBZGQgc3R1YnMgZm9yIHJlc2l6aW5nIHRoZSBzY3JlZW4gb24gbW9kZSBjaGFuZ2VzLgoKCSogaW5jbHVkZS9kZGVtbC5oLCBtaXNjL2RkZW1sLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglKZWFuLUNsYXVkZSBDb3RlIDxqZWFuLWNsYXVkZUBtYWNhZGFtaWFuLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBmb2xsb3dpbmcgRERFIEFQSXM6CglEZGVDbXBTdHJpbmdIYW5kbGVzLCBEZGVDcmVhdGVTdHJpbmdIYW5kbGUsIERkZUZyZWVTdHJpbmdIYW5kbGUsCglEZGVRdWVyeVN0cmluZywgRGRlVW5pbml0aWFsaXplLgoKVGh1IERlYyAyNCAxNjo1OToxNyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL01ha2VmaWxlLmluLCBvbGUvcGFyc2VkdC5jLCBvbGUvcGFyc2VkdC5oLCBvbGUvdmFyaWFudC5jOgoJSmVhbi1DbGF1ZGUgQ290ZSA8amVhbi1jbGF1ZGVAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBWYXJEYXRlRnJvbVN0ciBBUEkuCgoJKiBkbGxzL2NvbWN0bDMyL3RyYWNrYmFyLmMsIGluY2x1ZGUvdHJhY2tiYXIuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgktIFRvb2x0aXAgc3VwcG9ydAoJLSBWZXJ0aWNhbCB0cmFja2JhcnMgc3VwcG9ydGVkIG5vdwoJLSBUQlNfQk9USCBzdXBwb3J0IChnb2VzIGFsb25nIHdpdGggcGFydGlhbCBjbGVhbnVwIG9mIGRyYXdpbmcgY29kZSkKCS0gVXNlIENPTUNUTDMyIGhlYXAgaW5zdGVhZCBvZiBzeXN0ZW0gaGVhcAoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oOgoJUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbG5ldHdvcmtzLmNvbT4KCUFkZGVkIGFsbCBjbGlwcGVyJjNkIHN0dWJzLgoJU3RhcnRpbmcgQ29sb3JLZXkgc3VwcG9ydC4KCUZpeGVkIHRyYWNlIHN0YXRlbWVudCBpbiBEaXJlY3REcmF3Q3JlYXRlIGFzIGZvcm1hdHRpbmcgd2Fzbid0IGNvcnJlY3QuCglDaGFuZ2VkICJyZXR1cm4gMDsiIHRvICJyZXR1cm4gRERfT0siIG9yICJyZXR1cm4gU19PSyIgYXMgYXBwcm9wcmlhdGUuCglBZGRlZCBTdXJmYWNlRW51bSBkd0ZsYWdzLgoKCSogaW5jbHVkZS9kcGxheS5oLCBtdWx0aW1lZGlhL2RwbGF5LmM6CglQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsbmV0d29ya3MuY29tPgoJQWRkZWQgbWFjcm9zIHRvIGhlYWRlciBmaWxlIGZvciBlYXNpZXIgZnVuY3Rpb24gY2FsbGluZy4KCUNoYW5nZWQgaW1wbGVtZW50YXRpb24gYSBsaXR0bGUgYml0LgoJQWRkZWQgc3R1YnMgZm9yIGRwbGF5My4gU3RpbGwgbmVlZCB0byBicmVhayBpbnRvIEEgYW5kIFcgdmVyc2lvbnMuCgoJKiB3aW4zMi9maWxlLmM6IFBldGVyIEh1bm5pc2V0dCA8aHVubmlzZUBub3J0ZWxuZXR3b3Jrcy5jb20+CglDcmVhdGVGaWxlMzJBIHdhcyBvbmx5IGFsbG93aW5nIGNvbnNvbGUgb3BlbnMgb24gQ09OSU4kL09VVCQuIFRoaXMKCWhhcyBiZWVuIGNoYW5nZWQgdG8gaGF2ZSBhIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyZS4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogR2VyYXJkIFBhdGVsIDxnLnBhdGVsQHdhbmFkb28uZnI+CglEb24ndCBzZW5kIE9EQV9FTlRJUkUgZm9yIGVtcHR5IGxpc3Rib3hlcyAoTElTVEJPWF9QYWludCkuCgoJKiBpbmNsdWRlL3dpbmJhc2UuaCwgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9rZXJuZWwzMi5jOgoJSmVhbi1DbGF1ZGUgQ290ZSA8amVhbi1jbGF1ZGVAbWFjYWRhbWlhbi5jb20+CglJbXBsZW1lbnRlZCB0aGUgR2V0QmluYXJ5VHlwZSBBUEkgZnVuY3Rpb24uCgoJKiBsb2FkZXIvZG9zL2Rvc21vZC5jLCBsb2FkZXIvZG9zL2Rvc21vZC5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIGxvYWRlci9kb3MvbW9kdWxlLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIHNvbWUgbmV3IGRvc21vZCBjb21tdW5pY2F0aW9uIHBvc3NpYmlsaXRpZXMsIGluY2x1ZGluZwoJYWN0aXZhdGluZyBhIGRvc21vZC1zcGVjaWZpYyBzZXRpdGltZXIoKSwgYW5kIHRoZSBjYXB0dXJlIG9mIHNvbWUKCWNvbW1vbiBzaWduYWxzLCB3aGljaCBpcyByZXR1cm5lZCB0byBXaW5lIChwcmV2aW91c2x5IGEgU0lHSUxMCgl3b3VsZCBqdXN0IGNhdXNlIGEgImRvc21vZCBzeW5jIGxvc3QiIHdpdGhvdXQgZXhwbGFuYXRpb24sIG5vdyBpdAoJaW52b2tlcyB0aGUgV2luZSBkZWJ1Z2dlcikuIEludm9rZXMgaW50IDA4IHVwb24gcmVjZWlwdCBvZiBkb3Ntb2QKCVNJR0FMUk0sIHRodXMgc2ltdWxhdGluZyB0aGUgRE9TIHRpbWVyLiBNYWRlIERPUyBpbnRlcnJ1cHQgY2FsbHMKCWJlIHJlcG9ydGVkIGJ5IC1kZWJ1Z21zZyArcmVsYXkgaW5zdGVhZCBvZiAtZGVidWdtc2cgK2ludC4gQW5kCglmaXhlZCBub24taTM4NiBjb21waWxhdGlvbiBvZiBkb3Ntb2QuIChBbnl0aGluZyBlbHNlPyEpCgoJKiBsb2FkZXIvbWFpbi5jLCB3aW5kb3dzL3dpbi5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglEZXNrdG9wIHdpbmRvdyBxdWV1ZSBoYW5kbGluZyBhZGFwdGVkLgoKCSogd2luZG93cy9jbGlwYm9hcmQuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3MvdGltZXIuYywgd2luZG93cy93aW5wb3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUXVldWUgaGFuZGxpbmcgYWRhcHRlZCB0byBuZXcgcXVldWUgcm91dGluZXMuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYywgd2luZG93cy9xdWV1ZS5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL3F1ZXVlLmgsIGluY2x1ZGUvdGFzay5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBzdHViIGZvciBJbml0VGhyZWFkSW5wdXQuCglVc2UgR2V0VGhyZWFkUXVldWUvR2V0RmFzdFF1ZXVlIGluc3RlYWQgb2YgR2V0VGFza1F1ZXVlLgoKCSogbG9hZGVyL3Rhc2suYywgbWlzY2VtdS9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVVzZSBDYWxsb3V0IHRhYmxlIGluc3RlYWQgb2YgZGlyZWN0IEdldFByb2NBZGRyZXNzLgoJVXNlcllpZWxkIG1vdmVkIHRvIFVTRVIuCgoJKiBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNhbGxvdXQgdGFibGUgKGZvciBLRVJORUwtPlVTRVIgY2FsbHMpIGFkZGVkLgoJQ2FsbGJhY2tzLT5DYWxsUG9zdEFwcE1lc3NhZ2VQcm9jIHJlbW92ZWQuCgoJKiBtaXNjL2NhbGxiYWNrLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS9xdWV1ZS5oLCBpbmNsdWRlL3Rhc2suaCwgbG9hZGVyL3Rhc2suYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUhhbmRsZSBub24taGFyZHdhcmUgWCBldmVudHMgY29ycmVjdGx5IHdpdGggbmF0aXZlIFVTRVIKCShyZW1vdmVkIHJlZmVyZW5jZSB0byBNRVNTQUdFUVVFVUUgZnJvbSBLRVJORUwgY29kZSkuCglIYW5kbGUgRXhwb3NlIGV2ZW50cyB3aXRoIG5hdGl2ZSBVU0VSLgoKCSogbWlzYy9jcnRkbGwuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUJldHRlciBfdWx0b2EoKS4KCgkqIHdpbjMyL3RpbWUuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUZpeCBzbWFsbCBwcm9ibGVtIGluIEdldFRpbWVab25lSW5mb3JtYXRpb24oKS4KCgkqIHdpbmRvd3MveDExZHJ2L2tleWJvYXJkLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglMb3dlc3Qgc2NhbiBjb2RlIHNlZW1zIHRvIGJlIDEsIG5vdCB6ZXJvLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHVicyBmb3IgSURpcmVjdDNEKDIpOjpDcmVhdGVMaWdodCBhbmQgQ3JlYXRlRGV2aWNlIHRvIGF2b2lkIGNyYXNoZXMuCgoJKiBkbGxzL250ZGxsL3J0bC5jLCByZWxheTMyL250ZGxsLnNwZWMsIGRsbHMvbnRkbGwvbnQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlcyBjcmFzaCB3aGVuIHJ1bm5pbmcgd2l0aG91dCBleHRlcm5hbCBzaGVsbDMyLmRsbC4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vcmUgbWVzc2FnZXMgW0xCXyosRU1fKl0gdHJhbnNsYXRlZCAzMkEgZnJvbS90byAzMlcuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCURlc3QgYnVmZmVyIHdhcyBwcmludGVkIG91dCBhcyBzdHIuCgoJKiBtaXNjL3Zlci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUdldHRpbmcgc3RyaW5ncyB3aXRoIFZlclF1ZXJ5VmFsdWUzMlcgd2FzIGJyb2tlbi4gQ29tcGxldGUKCXJlY29uc3RydWN0aW9uIG9mIHRoZSBmdW5jdGlvbi4KCgkqIG1pc2MvdG9vbGhlbHAuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggbnVtYmVyIGFuZCB0eXBlIG9mIGFyZ3MgaW4gZGVidWdnaW5nIHN0YXRlbWVudHMuCgoJKiBvbGUvc3RvcmFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BtdWQuZGU+CglJU3RvcmFnZTMyIHZ0YWJsZSB3YXMgbWlzc2luZyAzIHN0dWIgZW50cmllcy4KCkZyaSBEZWMgMTggMTc6Mzg6MzkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIG9iamVjdHMvZm9udC5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KCURvY3VtZW50YXRpb24gZm9yIFRyYW5zbGF0ZUNoYXJzZXRJbmZvLgoKCSogZGxscy93bmFzcGkzMi93aW5hc3BpMzIuYywgaWYxNjMyL3dwcm9jcy5zcGVjLCBkbGxzL3dpbmFzcGkvd2luYXNwaTE2LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWtlIHRoZSBET1NBU1BJIHBhcnQgdXNlIHRoZSBleGNlbGxlbnQgRFBNSSBSTUNCIGltcGxlbWVudGF0aW9uIGRvbmUKCWJ5IE92ZSBLYWF2ZW4sIHdoaWNoIG1ha2VzIHRoZSBjb2RlIF9tdWNoXyBjbGVhbmVyLgoKCSogTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJVXNlIC1sd2luZSBmb3IgbGlua2luZy4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL3F1ZXVlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogYWx3YXlzIGNsZWFyIFFTXy4uLiBmcm9tICpib3RoKiBjaGFuZ2VCaXRzIGFuZCB3YWl0Qml0cy4KCUJ1Z2ZpeDogcXVldWUtPmhTZW5kaW5nVGFzayBpcyAqcXVldWUqIGhhbmRsZSwgbm90IHRhc2sgaGFuZGxlLgoKCSogaWYxNjMyL3N0b3JhZ2Uuc3BlYywgaW5jbHVkZS9pbnRlcmZhY2VzLmgsIGluY2x1ZGUvb2JqYmFzZS5oLCBpbmNsdWRlL3N0b3JhZ2UuaCwgb2xlL2lmcy5jLCBvbGUvc3RvcmFnZS5jOgoJRnJhbudvaXMgR291Z2V0IDxnb3VnZXRAbWV0YWludGVncmF0aW9uLm5ldD4KCUZpcnN0IHN0ZXAgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBjYWxsIENPTSBpbnRlcmZhY2VzIGZyb20gQysrIGNvZGUgaW4KCVdpbmVsaWIuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmMsIGluY2x1ZGUvdHJlZXZpZXcuaDoKCUFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CglQcmVsaW1pbmFyeSB0b29sdGlwIHN1cHBvcnQuCglXTV9TRVRGT05UL0dFVEZPTlQgYWRkZWQuCglTb21lIGJ1ZyBmaXhlcy4KCVVzZSBDT01DVEwzMiBoZWFwIGluc3RlYWQgb2Ygc3lzdGVtIGhlYXAuCgoJKiBncmFwaGljcy9wYWludGluZy5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudGVkIFBvbHlsaW5lVG8uCgoJKiByZWxheTMyL250ZGxsLnNwZWM6IEFkcmlhbiBIYXJ2ZXkgPGFkcmlhbkBzZWxlY3QuY29tLmF1PgoJVGhlIFp3Li4uIEZ1bmN0aW9ucyBpbiBudGRsbC5kbGwgYXJlIGp1c3QgYWx0ZXJuYXRlIGVudHJ5Cglwb2ludHMgZm9yIHRoZSBzYW1lIGZ1bmN0aW9ucyBhcyB0aGUgTnQuLi4gZnVuY3Rpb24gb2YgdGhlCglzYW1lIG5hbWVzLiAgQ2hhbmdlZCBudGRsbC5zcGVjIHRvIG1hdGNoIHRoaXMuCgoJKiBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxvYWRlci9tb2R1bGUuYywgbG9hZGVyL3BlX2ltYWdlLmMsIHJlbGF5MzIvYnVpbHRpbjMyLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlb3JnYW5pemVkIFBFIG1vZHVsZSBsb2FkaW5nIHRvIHByZXBhcmUgZm9yIGVsZi1kbGwgbG9hZGVyLgoJV0lORV9NT0RSRUYgY3JlYXRpb24gbW92ZWQgdG8gb25lIGNlbnRyYWwgbG9jYXRpb24uCglCdWdmaXg6IGNvcnJlY3RseSBzZWxlY3QgbmF0aXZlL2J1aWx0LWluIHZlcnNpb24gaWYgLkRMTAoJZXh0ZW5zaW9uIGlzIG1pc3NpbmcgaW4gTG9hZExpYnJhcnkgY2FsbC4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglDaGFuZ2VkIGVycm9yIHZhbHVlcyBNQ0lfSU5URVJOQUwgdG8gdGhlaXIgY29ycmVjdCB2YWx1ZXMuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglSZW1vdmVkIHdhcm5pbmcuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU5vIGxvbmdlciBzZW5kaW5nIGRpcmVjdGx5IG1lc3NhZ2VzIHRvIERyaXZlclByb2MgYnV0IHJhdGhlciBnbyB0aHJvdWdoCglNQ0kgbGF5ZXIgKHJlcXVpcmVkIGZvciBvcGVuL2Nsb3NlKS4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJUmVtb3ZlZCBpbmNvcnJlY3QgcGF0Y2ggZm9yIE1DSV9PUEVOIGFuYyBNQ0lfQ0xPU0UgcGFyYW1ldGVycyAodGhhbmtzIHRvIFJvYmVydCBSaWdncwoJZm9yIHBvaW50aW5nIG91dCB0aGUgYnVnLCBzZWUgdGhlIGZpeCBpbiBtY2lzdHJpbmcuYykKCUZpeGVkIE1DSSBzZWVraW5nIG9uIENEIGF1ZGlvLgoKCSogaW5jbHVkZS93aW5lcnJvci5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWJzIGZvciBXYWl0TmFtZWRQaXBlW0F8V10uCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jLCBkbGxzL3NoZWxsMzIvZGF0YW9iamVjdC5jLCBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBpbmNsdWRlL3NoZWxsLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcy4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViIENvbnRyb2xfRmlsbENhY2hlX1J1bkRMTC4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU0hHZXRGaWxlSW5mbzMyQTogZ2V0IFNIR0ZJX1NZU0lDT05JTkRFWCBpbXBsZW1lbnRlZC4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSUxBcHBlbmQgc2VlbXMgdG8gd29yayBub3cuCgoJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL2tlcm5lbDMyLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWJzIGZvciBXYWl0TmFtZWRQaXBlW0F8V10uCgpUdWUgRGVjIDE1IDE4OjA0OjU4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kaXJlY3RvcnkuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggR2V0VGVtcFBhdGgzMiBpZiBjb3VudD0wLgoKCSogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvY29uZmlnLmguaW4sIGluY2x1ZGUvbXVsdGltZWRpYS5oLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvZHNvdW5kLmMsIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaW1pZGkuYywgbXVsdGltZWRpYS9taWRpLmMsIG11bHRpbWVkaWEvbWl4ZXIuYywgbXVsdGltZWRpYS9tbWF1eC5jOgoJVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJLSBhZGQgLWxvc3NhdWRpbyBpZiBuZWVkZWQsIGFuZCBhIGNoZWNrIGZvciA8c291bmRjYXJkLmg+LCB0byBjb25maWd1cmUuaW4KCSAgKHJ1biBhdXRvY29uZiBhZnRlciB0aGlzKS4gIE5vdGUgdGhhdCB0aGUgY2hlY2sgaGFzIGJlZW4gYWx0ZXJlZCB0byBicmVhawoJICBvdXQgb2YgdGhlIEFDX0NIRUNLX0hFQURFUlMgYWZ0ZXIgdGhlIGZpcnN0IG1hdGNoIC0gdGhpcyBpcyBzbwoJICA8c3lzL3NvdW5kY2FyZC5oPiwgaWYgZm91bmQgb24gTmV0QlNEIChhIGByZWFsJyBPU1MpLCB3aWxsIG5vdCBjb25mbGljdAoJICB3aXRoIHRoZSBlbXVsYXRlZCBvc3NhdWRpby4KCS0gY2hlY2sgZm9yIDxzb3VuZGNhcmQuaD4gYWxvbmcgd2l0aCB0aGUgb3RoZXIgdHdvIGluIGEgbXV0dWFsbHktZXhjbHVzaXZlCgkgIG1hbm5lciBpbiB0aGUgdmFyaW91cyAqLmMgZmlsZXMgdGhhdCBuZWVkIGl0OyBjaGFuZ2UgaW5jbHVkZSBvZgoJICAibW1zeXN0ZW0uaCIgdG8gIm11bHRpbWVkaWEuaCIgc28gdGhpcyBsb2dpYyBpcyBhbGwgaW4gb25lIHBsYWNlCgktIGNoYW5nZSBtY2ljZGEuYyB0byBhbGxvdyBmb3IgQ0QgYXVkaW8gbWFuaXB1bGF0aW9uIG9uIE5ldEJTRC4gIFRoaXMKCSAgaW5jbHVkZXM6CgkgICogY2hhbmdpbmcgaW9jdGwoKSBjYWxscyB0byBiZSBOT04tU1BMSVQgd2l0aCBleGFjdGx5IDMgYXJnczsgb24gTmV0QlNECgkgICAgb3NzYXVkaW8sIGlvY3RsKCkgaXMgI2RlZmluZWQgdG8gYmUgX29zc19pb2N0bCBieSA8c291bmRjYXJkLmg+LCBhbmQKCSAgICBuZWl0aGVyIHNwbGl0dGluZyB3aXRoICMtZGlyZWN0aXZlcyBub3IgYSB0d28tYXJnIGlvY3RsIHdvcms7CgkgICogY2hhbmdpbmcgdGhlICNpZiBsb2dpYyB0byBhbGxvdyBib3RoIEZyZWVCU0QgYW5kIE5ldEJTRCB0byBzaGFyZSB0aGUKCSAgICBhcHByb3ByaWF0ZSBjb2RlIGJsb2NrcwoJLSBibG9jayBvdXQgTUlESSBjb2RlIGZvciBOZXRCU0QgKGluaXQuYykgYW5kL29yIG1pc3NpbmcgU05EQ1RMX01JRElfSU5GTwoJICAobWlkaS5jLCBtY2ltaWRpLmMpLiAgTmV0QlNEJ3MgT1NTIGVtdWxhdGlvbiBkb2VzIG5vdCAoeWV0KSBzdXBwb3J0IE1JREkuCglUaGFua3MgZ28gdG8gbXljcm9mdEBuZXRic2Qub3JnIGZvciB0aGUgOTklIGJ1bGsgb2YgdGhpcyB3b3JrLgoKCSogdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194dXRpbC5jLCB3aW5kb3dzL3gxMWRydi93bmQuYywgaW5jbHVkZS90c194dXRpbC5oOgoJRGlyayBUaGllcmJhY2ggPHRoaWVyYmFjaEBtYXRoZW1hdGlrLnR1LWRhcm1zdGFkdC5kZT4KCVNldCB0aGUgY2xhc3MgaGludHMgZm9yIG1hbmFnZWQgd2luZG93cy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1Z2ZpeDogR2V0RnVsbFBhdGhOYW1lIHNldHMgbHBGaWxlUGFydCBvbmx5IHdoZW4gdGhlIGxhc3QgZWxlbWVudAoJZG9lcyBub3QgZW5kIHdpdGggJ1wnLgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvd2luLmMsIGluY2x1ZGUvY29tbWN0cmwuaCwgaW5jbHVkZS9jb21tZGxnLmgsIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS9tb3VzZS5oLCBpbmNsdWRlL3NobG9iai5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgaW5jbHVkZS93aW5nZGkuaCwgaW5jbHVkZS93aW50eXBlcy5oLCBtaXNjL2RkZW1sLmMsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9nZGlvYmouYywgcmVsYXkzMi9nZGkzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCBjb250cm9scy9tZW51LmMsIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZ3JhcGhpY3MvYml0Ymx0LmMsIGdyYXBoaWNzL2VzY2FwZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgaWYxNjMyL3VzZXIuc3BlYzoKCVBhdWwgUXVpbm4gPHBhdWxxQENPUkVMLkNBPgoJTG90cyBvZiBuZXcgZGVmaW5lcyBhbmQgc3R1YnMuCgoJKiBNYWtlLnJ1bGVzLmluLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CglUaGVzZSBwYXRjaGVzIGFkZCBzdXBwb3J0IGZvciAtLWVuYWJsZS1kbGwgb24gTmV0QlNELCBhbmQgbWF5IGV2ZW4gZG8gc28gZm9yCglGcmVlQlNEIGEub3V0LiAgTm93LCBOZXRCU0QgY2FuIHVzZSBsaWJ3aW5lIGFzIGEgc2hhcmVkIG9iamVjdC4gIFRoYW5rcyB0bwoJbXljcm9mdEBuZXRic2Qub3JnIGZvciBkb2luZyB0aGlzIHdvcmshCgoJKiB0b29scy93cmMvd3JpdGVyZXMuYzogVG9kZCBWaWVybGluZyA8dHZAcG9ib3guY29tPgoJR2xvYmFsIGNvbnN0cnVjdG9ycyB1c2luZyBgLnNlY3Rpb24gLmN0b3JzJyBhcmUgYm9ndXMgZm9yIE5ldEJTRCdzCglhc3NlbWJsZXIuIFVzZSB0aGUgYXBwcm9wcmlhdGUgYC5zdGFicycgd2hlbiBvbiBOZXRCU0QuCgoJKiBvbGUvdmFyaWFudC5jOiBUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CglVbmRlZmluZWQgQ0hBUl9NQVggYW5kIENIQVJfTUlOICgjZGVmaW5lZCBieSBOZXRCU0QncyBzeXN0ZW0gaGVhZGVycykuCglGaXhlZCBzb21lIGNvbnN0YW50cyB0aGF0IGFyZSB0b28gYmlnIGZvciBhIHBsYWluIGBpbnQnLgoKCSogb2xlL3ZhcmlhbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDaGVjayBmb3IgTUFYRkxPQVQgaWYgRkxUX01BWCBpc24ndCB0aGVyZS4KCgkqIGdyYXBoaWNzL3BzZHJ2L01ha2VmaWxlLmluOiBUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+CglncmFwaGljcy9wc2RydiBmb3JnZXRzIHRvIHB1bGwgaW4gQERMTEZMQUdTQCwgYW5kIHNvIGlzIGNvbXBpbGVkIG5vbi1QSUMgaWYKCXVzaW5nIC0tZW5hYmxlLWRsbC4KCgkqIGluY2x1ZGUvd2luZ2RpLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgaW5jbHVkZS93aW51c2VyLmgsIGluY2x1ZGUvd2luZG93cy5oOgoJVmVrc2xlciBNaWNoYWVsIDxtdmVrc2xlckB0ZWNodW5peC50ZWNobmlvbi5hYy5pbD4KCU1vdmUgZGVjbGFyYXRpb25zIGZyb20gd2luZG93cy5oIHRvIHdpbmdkaS5oIGFuZCB3aW51c2VyLmguCgpNb24gRGVjIDE0IDE4OjE1OjExIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW4zMi9jb25zb2xlLmMsIGZpbGVzL01ha2VmaWxlLmluLCBmaWxlcy9hc3luYy5jLCBmaWxlcy9maWxlLmMsIGluY2x1ZGUvYXN5bmMuaCwgaW5jbHVkZS9maWxlLmgsIGxvYWRlci9zaWduYWwuYywgbWlzYy93aW5zb2NrX2Rucy5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglNYWRlIGFzeW5jIElPIChTSUdJTykgc3R1ZmYgZnJvbSBXSU5TT0NLIGdlbmVyaWMgdXNlYWJsZS4KCUFkZGVkIGFzeW5jIElPIHN1cHBvcnQgdG8gRklMRSBhbmQgQ09OU09MRSBvYmplY3RzLgoKCSogbWlzYy93aW5zb2NrLmM6IFN0ZXBoZW4gTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglQcmV2ZW50IHNlZ2ZhdWx0IGluIHNldHNvY2tvcHQgd2hlbiBvcHRuYW1lIGlzIFNPX0xJTkdFUiBhbmQgb3B0dmFsIGlzCgludWxsLgoKCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU29tZSBjbGVhbnVwLgoKCSogZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTSE1hcFBJRExUb1N5c3RlbUltYWdlTGlzdEluZGV4IHRyeSdzIHRvIGRldGVybWluZSBhbmQgbG9hZCB0aGUgZXhhY3QKCWljb24gZm9yIGZpbGVzIChieSB0eXBlKSBub3cuCgoJKiBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBIQ1JfR2V0RGVmYXVsdEljb24gKGludGVybmFsKS4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvZG9zbWVtLmMsIG1zZG9zL2RwbWkuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTW92ZWQgRFBNSSB3cmFwcGVyIGFsbG9jYXRpb24gY29kZSB0byBkb3NtZW0uYyB0byBSRUFMTFkgbWFrZSB0aGUKCVJNY2FsbCBzaG9ydGN1dHMgaW5kZXBlbmRlbnQgb2YgZG9zbW9kLiBTUyBoYWQgYmVlbiBsZWZ0IG91dCBvZgoJdGhlIFJFQUxNT0RFQ0FMTCBjb3B5IHJvdXRpbmVzIGZvciBzb21lIHJlYXNvbiwgZml4ZWQgbm93LiBBbHNvCgljbGVhbmVkIHVwIGEgZmV3IGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IElhbiBQaWxjaGVyIDxwaWxjaGVyQGNvbmNlbnRyaWMubmV0PgoJQWRkZWQgYWJpbGl0eSB0byBzcGVjaWZ5IFggZm9udHMgdXNlZCBmb3IgSGVsdiBhbmQgVG1zIFJtbiB0eXBlZmFjZXMKCXdpdGggRGVmYXVsdFNlcmlmIGFuZCBEZWZhdWx0U2Fuc1NlcmlmIElOSSBrZXlzLgoKCSogdG9vbHMvd3JjL3BhcnNlci55LCB0b29scy93cmMvd3JjLmgsIHRvb2xzL3dyYy93cml0ZXJlcy5jLCB0b29scy93cmMvQ0hBTkdFUzoKCUJlcnRobyBTdHVsdGllbnMgPGJlcnRob0BwYW50ZXIuc29jaS5hYXUuZGs+CgktIEFkZGVkIGEgZ2xvYmFsIGxhYmVsIGZvciBlbGYtZGxsIGxpbmtpbmcgYW5kIGEgbG9uZyB3aXRoIHRoZSByZXNvdXJjZQoJICBzaXplIGFuZCBhIGxvbmcgd2l0aCB0aGUgZGlyZWN0b3J5IHNpemUuCgktIEtpbGxlZCBhbiBhbm5veWluZyB3YXJuaW5nIHNpbmNlIHZlcnNpb24gMS4wLjAgaW4gcGFyc2VyLnkgYWJvdXQgYQoJICB2YXIgYmVpbmcgdXNlZCBiZWZvcmUgaW5pdC4KCgkqIGluY2x1ZGUvc2hsb2JqLmgsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZHMgdGhlIElQZXJzaXN0RmlsZSBJbnRlcmZhY2UgdG8gSVNoZWxsTGlua1tXXSBhbmQgZ2F2ZSBib3RoIG93bgoJSUNsYXNzRmFjdG9yeXMuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJKFJlYWRDb25zb2xlMzJBKTogc21hbGwgYW5kIHN0dXBpZCBidWcgZml4ZWQKCShXcml0ZUNvbnNvbGVPdXRwdXQpOiBidWcgZml4ZWQgKGF0dHJpYnV0ZXMgbWF5IGNoYW5nZSB3aXRoaW4gbGluZXMpCglhbmQgZW5oYW5jZWQgc3BlZWR3aXNlIGJ5IHVzaW5nIGJ1ZmZlcmluZy4KCShDT05TT0xFX3N0cmluZ18yX0lSKTogZW5oYW5jZWQsIG5vdyBnZXRzIHNjYW5jb2RlcyBhbmQgdmlydHVhbGtleWNvZGVzCgoJKiBtaXNjL2NydGRsbC5jLCByZWxheTMyL2NydGRsbC5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglfdWx0b2EgaW1wbGVtZW50ZWQuCgoJKiBjb250cm9scy9zdGF0aWMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTbWFsbCBoYWNrIHRvIGdldCByaWQgb2YgYW5ub3lpbmcgZXJyOnJlc291cmNlOiBtZXNzYWdlIGZvcgoJTWVzc2FnZUJveGVzLgoKCSogcmVsYXkzMi9kc291bmQuc3BlYzogSWFuIFNjaG1pZHQgPGlyc21hbkBpYWcubmV0PgoJRml4IG9mZi1ieS0xIGVycm9yIGluIERpcmVjdFNvdW5kIG9yZGluYWxzLiBUaGFua3MgdG8gUm9iZXJ0IFJpZ2dzIGZvcgoJdGhlIHBvaW50ZXIuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCVNhdmUgdGhlIG9yaWdpbmFsIHZpZGVvIG1vZGUgYmVmb3JlIGdvaW5nIGZ1bGxzY3JlZW4gYW5kIHJlc3RvcmUgaXQKCXdoZW4gdGhlIGxhc3QgRGlyZWN0RHJhd19SZWxlYXNlIGlzIGNhbGxlZC4gQWxzbyBmaXggYSBwcm9ibGVtIHdoZXJlCgl0aGUgdmlld3BvcnQgd2Fzbid0IHNldCB0byAwLDAuCgoJKiBjb25zb2xlL3h0ZXJtLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJTWFkZSBtb3JlIGNyb3NzLXBsYXRmb3JtIGJ5IGNoYW5naW5nIC0+X2ZpbGVubyB0byBmaWxlbm8oKS4KCgkqIHdpbmRvd3Mvd2luLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4IHRoZSBaLW9yZGVyIG9mIG1heGltaXplZC9taW5pbWl6ZWQgY2hpbGQgd2luZG93cy4KCgkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglYTEZEcyBzaG91bGQgYmUgd2VsbC1mb3JtZWQgKDE0IGh5cGhlbnMpIHRvIG1hdGNoIHNjYWxhYmxlIGZvbnRzLgoJU3RvcCBzbGFudCBmaWVsZCBiZWNvbWluZyB3aWxkY2FyZGVkIHRvbyBlYXJseS4KCgkqIHdpbmRvd3MvZm9jdXMuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkoRk9DVVNfU3dpdGNoRm9jdXMpIGNoZWNrIGZvciBwRm9jdXNUbyA9PSBOVUxMIGluc3RlYWQgb2YgaEZvY3VzVG89PTAuCgoJKiBvbGUvb2xlMm5scy5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUhhY2sgT0xFX0dldEZvcm1hdCogdG8gcmV0dXJuIHNvbWV0aGluZyBpZiBkYXRlbGVuID0gMC4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBXSU5BUEkncy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRnJpIERlYyAxMSAxNTowNDoxMSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGxoZWxwMzIuaCwgaW5jbHVkZS90b29saGVscC5oLCBtaXNjL3Rvb2xoZWxwLmMsIHNjaGVkdWxlci9rMzJvYmouYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVBhdHJpY2sgU3BpbmxlciA8c3Bpbmxlci5wYXRyaWNrQG1heW8uZWR1PgoJSW1wbGVtZW50ZWQgQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90LCBpbmNsdWRpbmcgdHdvIG9mIHRoZSByb3V0aW5lcwoJdXNpbmcgc25hcHNob3RzLCBQcm9jZXNzMzJGaXJzdCBhbmQgUHJvY2VzczMyTmV4dC4KCgkqIHJlbGF5MzIvb2xlYXV0MzIuc3BlYywgaW5jbHVkZS9tYXBpZGVmcy5oLCBpbmNsdWRlL29sZWF1dG8uaCwgaW5jbHVkZS93aW4xNmRydi5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG9sZS9jb21wb2JqLmMsIG9sZS92YXJpYW50LmM6CglKdXN0aW4gQnJhZGZvcmQgPGp1c3RpbkB1a2Fucy5lZHU+CglNb3N0IG9mIHRoZSBjdXJyZW5jeSB2YXJpYW50IGNvbnZlcnNpb24gZnVuY3Rpb25zIGltcGxlbWVudGVkLgoJTWlub3IgYnVnZml4ZXMgYW5kIGhlYWRlciB0aWR5aW5nLgoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkbGxzL3Jhc2FwaTMyL01ha2VmaWxlLmluLCBkbGxzL3Jhc2FwaTMyL3Jhc2FwaS5jLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvcmFzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgcmVsYXkzMi9yYXNhcGkzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBSYXNFbnVtQ29ubmVjdGlvbnMgc3R1Yi4KCgkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWdmaXggaW4gUGF0aENvbWJpbmUzMltBfFddLgoJVmlldyBtZW51IGluIGV4cGxvcmVyIGFuZCBvbiByaWdodCBtb3VzZSBidXR0b24gaXMgd29ya2luZyBub3cuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkICBJTEdldERpc3BsYXlOYW1lLgoKCSogZGxscy9zaGVsbDMyL2NsYXNzZXMuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0YXJ0ZWQgaW1wbGVtZW50YXRpb24gb2YgU2hlbGxFeGVjdXRlRXgzMkEuCglTbWFsbCBjaGFuZ2VzLgoKCSogZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NocmVzLnJjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3ZlZCBtZW51IHJlc291cmNlcyB0byByYy1maWxlLgoKCSogaW5jbHVkZS9wZV9pbWFnZS5oLCBvbGUvb2xlMm5scy5jLCB3aW4zMi9maWxlLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVR3byBkZWJ1ZyBtZXNzYWdlcyBjbGFyaWZpZWQsIG9uZSB1c2VsZXNzIHByb3RvdHlwZSByZW1vdmVkLgoKCSogaW5jbHVkZS9vbGVhdXRvLmgsIG9sZS92YXJpYW50LmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCTI5NCBtaXNzaW5nIFdJTkFQSSBhZGRlZC4KCgkqIHRvb2xzL3Rlc3RydW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJS2lsbCBzd2FwcGVkIG91dCAod2luZSkgcHJvY2Vzc2VzIHRvbyBhbmQgdHJ1bmNhdGUgZGlmZiBhZnRlciBzb21lIHh4eAoJbGluZXMuCgoJKiBvbGUvb2xlMm5scy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVkIFNldExhc3RFcnJvciB3aXRoIHdyb25nIHZhbHVlLgoKCSogbWlzYy9wcmludGRydi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGluY2x1ZGUvd2luZG93cy5oOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglJbXBsZW1lbnQgQWJvcnREb2MxNiwgbW92ZSBBYm9ydERvYzMyIGFuZCBTdGFydERvYzMyVyB0bwoJbWlzYy9wcmludGRydi5jIGFuZCBmaXggYSBmZXcgY29tcGlsZSB3YXJuaW5ncy4KCgkqIHdpbjMyL29yZGluYWxzLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy91c2VyLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9udGRsbC9udC5jLCBpZjE2MzIvdHlwZWxpYi5zcGVjLCBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvaW50MjEuYywgb2xlL29sZTJubHMuYywgb2xlL3R5cGVsaWIuYzoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIGEgYnVuY2ggb2YgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBmaWxlcy9maWxlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgV2luMzIgc3luY2hybyB0byBGSUxFcyAodXNlZnVsIG9ubHkgZm9yIHRlcm1pbmFsIGhhbmRsZXMpLgoKVGh1IERlYyAxMCAxNjowNDo1MSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIG9iamVjdHMvZm9udC5jLCBvYmplY3RzL21ldGFmaWxlLmMsIHJlbGF5MzIvY29tY3RsMzIuc3BlYywgcmVsYXkzMi9nZGkzMi5zcGVjLCByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHJlbGF5MzIvbXByLnNwZWMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjLCByZWxheTMyL3RhcGkzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjLCByZWxheTMyL3dpbnNwb29sLnNwZWMsIHdpbjMyL2NvbnNvbGUuYywgd2luMzIva2VybmVsMzIuYywgd2luMzIvdGltZS5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGlmMTYzMi9kZGVtbC5zcGVjLCBpbmNsdWRlL2NvbW1jdHJsLmgsIGluY2x1ZGUvZGRlbWwuaCwgaW5jbHVkZS9zaGxvYmouaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgbWVtb3J5L3N0cmluZy5jLCBtaXNjL2RkZW1sLmMsIG1pc2MvbmV0d29yay5jLCBtaXNjL3ByaW50ZHJ2LmMsIG1pc2MvdGFwaTMyLmMsIGNvbnRyb2xzL2VkaXQuYywgZGxscy9jb21jdGwzMi9NYWtlZmlsZS5pbiwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmMsIGRsbHMvY29tY3RsMzIvcHJvcHNoZWV0LmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZmlsZXMvZmlsZS5jLCBncmFwaGljcy9wYWludGluZy5jOgoJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgoJU3lsdmFpbiBTdC1HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgoJVGh1eSBOZ3V5ZW4gPHRodXlAbWFjYWRhbWlhbi5jb20+CglMb3RzIG9mIG5ldyBzdHVicy4KCgkqIG1zZG9zL3Z4ZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUxldCB0aGUgU3lzdGVtX1RpbWVfU2VsZWN0b3IgY2xvY2sgdGljay4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1pc2NlbXUvaW5zdHIuYywgbXNkb3MvZG9zbWVtLmMsIGdyYXBoaWNzL2Rpc3BkaWIuYywgZ3JhcGhpY3MvdmdhLmMsIGluY2x1ZGUvbWlzY2VtdS5oLCBpbmNsdWRlL3ZnYS5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGFwdGVkIHRvIENyZWF0ZVN5c3RlbVRpbWVyIGludGVyZmFjZSBjaGFuZ2UuCgoJKiBpZjE2MzIvc3lzdGVtLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvd2luZG93cy5oLCBtaXNjL2NhbGxiYWNrLmMsIG1pc2Mvc3lzdGVtLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUNsZWFuZWQgdXAgQ3JlYXRlU3lzdGVtVGltZXIgaW50ZXJmYWNlIGZvciB1c2Ugd2l0aCAzMi1iaXQgY2FsbGJhY2tzLgoJKE5PVEU6IDE2LWJpdCBjYWxsYmFja3Mgc3RpbGwgZG9uJ3Qgd29yayEpCgoJKiB3aW5kb3dzL21kaS5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCS0gSGFuZGxlIFdNX01ESVJFU1RPUkUgYnkgY2FsbGluZyBXTV9TWVNDT01NQU5EIGZvcgoJdGhlIGNoaWxkIHdpbmRvdyBzbyB0aGF0IHRoZSBzeXN0ZW0gbWVudSBpcyBzZXQgY29ycmVjdGx5LgoJLSBJbiBNRElDYXNjYWRlIGFuZCBNRElUaWxlIHVzZSBXTV9NRElSRVNUT1JFIG1lc3NhZ2UKCXRvIHJlc3RvcmUgbWF4aW1pemVkIHdpbmRvdyBzbyB0aGF0IHN5c3RlbSBtZW51IGlzCgloYW5kbGVkIGNvcnJlY3RseS4KCgkqIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIG9sZS9NYWtlZmlsZS5pbiwgb2xlL3R5cGVsaWIuYywgb2xlL3ZhcmlhbnQuYywgcmVsYXkzMi9vbGVhdXQzMi5zcGVjOgoJSmVhbi1DbGF1ZGUgQ290ZSA8amVhbi1jbGF1ZGVAbWFjYWRhbWlhbi5jb20+CglBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgVkFSSUFOVCBBUElzLgoKCSogZmlsZXMvZHJpdmUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgRFJJVkVfR2V0RnJlZVNwYWNlIHRvIGhhbmRsZSBzcGFjZSA+IDQgR0J5dGUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgloYW5kbGUgVFZJRl9URVhUIGJ5IFRSRUVWSUVXX1NldEl0ZW0gYWNjb3JkaW5nIHRvIE1TIGRvY3VtZW50YXRpb24uCgliZXR0ZXIgaGFuZGxpbmcgb2YgTFBTVFJfVEVYVENBTExCQUNLMzJBCglUUkVFVklFV19HZXROZXh0fFByZXZMaXN0SXRlbSBkaWRuJ3QgZGVzY2VuZCBpbnRvIHZpc2libGUgY2hpbGQgaXRlbXMuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXYXJuIGlmIHR3byAuZXhlcyBjb25mbGljdCB3aXRoIGVhY2ggb3RoZXIgYW5kIHRoZSBzZWNvbmQgZG9lcyBub3QKCWhhdmUgcmVsb2NhdGlvbiByZWNvcmRzLgoKCSogbWlzYy9jb21tZGxnLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUZpeGVkIEdldEZpbGVUaXRsZTMyQSBub3QgZmlsbGluZyB1cCBscFRpdGxlIGlmIGxwRmlsZSBkaWRuJ3QKCWNvbnRhaW4gJy8nLCdcXCcgb3IgJzonLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglGaXhlZCBhIHBvdGVudGlhbCBjcmFzaCBpZiBhIHVzYWJsZSB2aWRlbyBtb2RlIGlzIG5vdCBkZXRlY3RlZC4KCgkqIHRvb2xzL21ha2VfYXV0aG9yczogU2NyaXB0IHRvIGdlbmVyYXRlIGF1dGhvcnMgZmlsZXMKCgkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglTdHVicyBmb3IgSURpcmVjdElucHV0RWZmZWN0IGFuZCBJRGlyZWN0SW5wdXREZXZpY2UyQSBtZXRob2RzLAoJYXMgd2VsbCBhcyBBZGRSZWYoKSwgR2V0Q2FwYWJpbGl0ZXMoKSwgRW51bU9iamVjdHMoKSwKCUdldFByb3BlcnR5KCksIEdldE9iamVjdEluZm8oKSwgR2V0RGV2aWNlSW5mbygpLCBJbml0aWFsaXplKCksCglhbmQgUnVuQ29udHJvbFBhbmVsKCkgZm9yIElEaXJlY3RJbnB1dERldmljZS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglTZXQgd2luZG93IGZvY3VzIGluICBfY29tbW9uX0lEaXJlY3REcmF3X1NldERpc3BsYXlNb2RlKCkuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJQWNjZXB0IE1DSV9PUEVOIGFuZCBNQ0lfQ0xPU0UgbWVzc2FnZXMgaW4gTUNJQ0RBVURJT19Ecml2ZXJQcm9jMzIoKS4KCgkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglSZW1vdmVkIGRlZmVycmVkIEV4cG9zZSBldmVudHMgaGFuZGxpbmcuCgoJKiB3aW5kb3dzL2RjZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCURvbid0IGNsaXAgVmlzUmduIGFnYWluc3QgWCBkZXNrdG9wLgoKCSogbG9hZGVyL21vZHVsZS5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUxvYWRNb2R1bGUzMi9XaW5FeGVjMzIgc2hvdWxkIHJldHVybiAxNi1iaXQgaEluc3RhbmNlL2hUYXNrLgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVNhbml0eSBjaGVjayBvbiBmb250IHNpemUuCgoJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTWlzc2luZyBwYXJlbnRoZXNlcyBhZGRlZC4KCldlZCBEZWMgIDkgMTY6Mzc6MDUgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGxvYWRlci90YXNrLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgd2luMzIvY29uc29sZS5jLCBpbmNsdWRlL3dpbmNvbi5oOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglFbmhhbmNlZCBXaW4zMiBDb25zb2xlIChYVEVSTSkKCS0gaW5wdXRoYW5kbGluZyBlbmhhbmNlZCAoa2V5cyBhbmQgbW91c2VjbGlja3MpCgktIHdpbjMyIHN5bmNocm9uaXphdGlvbiAocGFydGlhbCkKCS0gbG90cyBvZiBlbmhhbmNlbWVudHMgdG8gZHJhd2luZyBmdW5jdGlvbnMKCS0gc2ltcGxlL2NvbXBsZXggY29uc29sZSAoc2ltcGxlLXN0ZGluL3N0ZG91dCAtPiBjb21wbGV4LXh0ZXJtKS4KCgkqIGNvbnNvbGUvTWFrZWZpbGUuaW4sIGNvbnNvbGUvZ2VuZXJpYy5jLCBjb25zb2xlL2ludGVyZmFjZS5jLCBjb25zb2xlL25jdXJzZXMuYywgY29uc29sZS90dHkuYywgY29uc29sZS94dGVybS5jLCBpbmNsdWRlL2NvbnNvbGUuaDoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQWRkIGEgZHJpdmVyIHRvIG9wZW4gdXAgYSBuZXcgeHRlcm0gd2luZG93IHdoZW5ldmVyIGNvbnNvbGUgb3V0cHV0IGlzCgluZWVkZWQuIERlcml2ZWQgZnJvbSBjb25zb2xlL3dpbjMyLmMgYnV0IHdlIGFyZSBub3QgeWV0IHJlYWR5IHRvIG1lcmdlCgl0aGUgY29kZSBjb21wbGV0ZWx5LgoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIGluY2x1ZGUvd2luZG93cy5oLCB0b29scy9mbnQyYmRmLmM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCUltcHJvdmVkIHRoZSBoYW5kbGluZyBvZiBmb250IGVuY29kaW5ncy4KCgkqIG1zZG9zL2RwbWkuYywgaW5jbHVkZS9taXNjZW11Lmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgRFBNSSBSTUNCcyB1c2luZyB0aGUgRE9TIHN1YnN5c3RlbSwgYW5kIGEgZmV3IG90aGVyCglpbXByb3ZlbWVudHMuIEFsc28sIHNvbWUgc3BlY2lhbC1jYXNlZCBzaG9ydGN1dCBwYXRocyB3aWxsIGFsbG93IHNvbWUKCWNvbW1vbiByZWFsLW1vZGUgY2FsbC9STUNCIGNvbWJpbmF0aW9ucyB0byB3b3JrIGV2ZW4gd2l0aG91dCBjYWxsaW5nIHRoZQoJRE9TIHN1YnN5c3RlbSwgdGh1cyBsZXR0aW5nIEFQSXMgbGlrZSBET1NBU1BJIHdvcmsgd2l0aG91dCBhbnkgZGlydHkgaGFja3MKCWV2ZW4gb24gcGxhdGZvcm1zIHRoYXQgY2Fubm90IHVzZSBkb3Ntb2QuCgoJKiBtdWx0aW1lZGlhL3RpbWUuYywgb2xlL2NvbXBvYmouYywgZmlsZXMvY2hhbmdlLmMsIGxvYWRlci9tb2R1bGUuYywgbWlzYy9semV4cGFuZC5jLCBtaXNjL21haW4uYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU29tZSB1bm5lY2Vzc2FyeSAjaW5jbHVkZSBhbmQgbWVzc2FnZXMgcmVtb3ZlZC4KCgkqIG9sZS9vbGUybmxzLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVNvbWUgc21hbGwgY29ycmVjdGlvbnMgdG8gRW51bVN5c3RlbUxvY2FsZXMzMkFXCgpUdWUgRGVjICA4IDE1OjA2OjM5IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS90c194Zjg2dm1vZGUuYywgZ3JhcGhpY3MvZGRyYXcuYzoKCVRyaWVkIGFub3RoZXIga2x1ZGdlIGZvciB0aGUgWG1kLmggcHJvYmxlbS4KCgkqIHRzeDExL01ha2VmaWxlLmluLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hmODZ2bW9kZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9hY2NvbmZpZy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3RzX3hmODZ2bW9kZS5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzOgoJU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CglBZGRlZCBmdWxsc2NyZWVuIERHQSBzdXBwb3J0LgoKCSogbWlzYy9tYWluLmM6IFBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJRml4ZWQgZHVtbXkgZW50cmllcyBpbiBNQUlOX1BhcnNlTGFuZ3VhZ2VPcHRpb24oKS4KCgkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgbXVsdGltZWRpYS9tY2ljZGEuYzoKCUJyaWFuIEdlcnN0IDxiZ2Vyc3RAcXVhcmsudnBwbHVzLmNvbT4KCVByb3Blcmx5IGltcGxlbWVudCBNQ0lfQ0RBX1NUQVRVU19UWVBFX1RSQUNLLgoJRml4IGFuIG9mZi1ieS1vbmUgYnVnIHdpdGggTUNJX1NUQVRVU19MRU5HVEguCgoJKiB3aW5kb3dzL3gxMWRydi9ldmVudC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVN1cGVyZmxvdXMgV0lOQVBJIHJlbW92ZWQuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglXYXJuIGFib3V0IGludmFsaWQgZW50cnlwb2ludHMgKGNyZWF0ZWQgYnkgdmlydXNlcykgd2hpY2ggcmVzdWx0IGluCglXaW5lIGNyYXNoZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUNyZWF0ZSBYMTEgcGFsZXR0ZSBvbiBEaXJlY3REcmF3U3VyZmFjZTo6U2V0UGFsZXR0ZSwgbm90IGJlZm9yZSAod2UKCW1pZ2h0IG5vdCBoYXZlIGFuIFgxMSB3aW5kb3cgeWV0KS4KCgkqIGxvYWRlci9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW92ZSBUV0VBS19Jbml0IGZyb20gVVNFUiB0byBHRElJbml0LgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaCwgbWlzYy9wcmludGRydi5jLCBtaXNjL3Nwb29sZXIuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggZm9yIFNldEFib3J0UHJvYzE2LCBzdHViIGZvciBTZXRBYm9ydFByb2MzMiBhbmQgdGlkeSB1cCBzb21lIG90aGVyCglwcmludGluZyBmdW5jdGlvbnMuCgoJKiB3aW5kb3dzL2ZvY3VzLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IGluY2x1ZGVzLgoKCSogZ3JhcGhpY3MveDExZHJ2L3RleHQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4IFgxMURSVl9FeHRUZXh0T3V0IGZvciByb3RhdGVkIHRleHQgaWYgZWl0aGVyIG9mIGxwRHgsIGJyZWFrRXh0cmEKCW9yIGNoYXJFeHRyYSBhcmUgbm9uLXplcm8uCgoJKiBpbmNsdWRlL0F0dGljL2dyYXBoaWNzLmgsIG1pc2Mvc2hlbGwuYywgd2luZG93cy9BdHRpYy9ncmFwaGljcy5jLCB3aW5kb3dzL01ha2VmaWxlLmluLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3Njcm9sbC5jLCBjb250cm9scy9idXR0b24uYywgY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvZGVza3RvcC5jLCBjb250cm9scy9pY29udGl0bGUuYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYywgZGxscy9jb21jdGwzMi91cGRvd24uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVJlcGxhY2UgR1JBUEhfIGZ1bmN0aW9ucyB3aXRoIFdpbiBTREsgZXF1aXZhbGVudHMuCgpNb24gRGVjICA3IDE2OjIzOjQyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9kb3NfZnMuYzogQWxleGFuZGVyIExhcnNzb24gPGFsbGFAbHlzYXRvci5saXUuc2U+CglSZXZlcnRlZCBwcmV2aW91cyBwYXRjaC4KCgkqIGluY2x1ZGUvZG9zZXhlLmg6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRG9uJ3QgZGVmaW5lIE1aX1NVUFBPUlRFRCBvbiBub24taTM4NiBwbGF0Zm9ybXMuCgoJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgRFBNSV9DYWxsUk1Qcm9jIChJIHRoaW5rKS4KCgkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViIGZvciBOUFNHZXRQcm92aWRlckhhbmRsZUEuCgoJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBCcmlhbiBHZXJzdCA8YmdlcnN0QHF1YXJrLnZwcGx1cy5jb20+CglUaGUgc2NhbmNvZGUgV2luZG93cyBzZW5kIGZvciBleHRlbmRlZCBrZXlzIGlzIHRoZSBzY2FuY29kZSBvZiB0aGUKCXVuZXh0ZW5kZWQgZXF1aXZhbGVudCBvZiB0aGUga2V5LCBwbHVzIHRoZSBleHRlbmRlZCBmbGFnLgoKCSogZGxscy93aW5hc3BpL3dpbmFzcGkxNi5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYSByZWFsIG1vZGUgcHJvYmxlbS4KCgkqIGxvYWRlci9uZS9tb2R1bGUuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU5FX01PRFVMRS5zdGFja19zaXplIHdhcyBzZXQgdG8gYSByaWRpY3Vsb3VzbHkgc21hbGwgdmFsdWUgb2YgNS4KCVdpbmRvd3Mgc2V0cyAweDE0MDAgaW4gc3VjaCBjYXNlcyBmb3IgcHJvZ3JhbXMuCgoJKiBjb250cm9scy9zdGF0aWMuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglXZSBkb24ndCB5ZXQgd2FudCB0aGUgc3RhdGljIGNvbnRyb2wgdG8gY2FsbCBEZXN0cm95SWNvbi4KCgkqIHdpbmRvd3MvY2xhc3MuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglBZGRlZCBjYXNlIGZvciBHQ1dfQVRPTSBpbnQgR2V0Q2xhc3NMb25nMzJBLgoKCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6IEdhZWwgZGUgQ2hhbGVuZGFyIDxnYWVsQGxpbXNpLmZyPgoJU3R1YiBmb3IgV05ldE9wZW5FbnVtMzJXLgoKCSogbXVsdGltZWRpYS9kc291bmQuYywgcmVsYXkzMi9kc291bmQuc3BlYzoKCVJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglNb3JlIGdlbmVyYWwgY29kZSBjbGVhbnVwIGZvciByZWFkYWJpbGl0eS4KCUEgZmV3IG1vcmUgcGFyYW1ldGVyIHZhbGlkYXRpb24gY2hlY2tzLgoJUmV0dXJuIERTX09LIHJhdGhlciB0aGFuIDAgaW4gYSBudW1iZXIgb2YgZnVuY3Rpb25zLgoJRml4ZWQgcHJpbWFyeSBidWZmZXIgcmVmIGNvdW50IGJ1ZyBpbiBDcmVhdGVTb3VuZEJ1ZmZlcigpLgoJSGFuZGxlIDEtMyBieXRlIHNvdW5kIGZyYWdtZW50cyB0aGF0IHdvdWxkIGNhdXNlIGJ1ZmZlciBvdmVycnVucy4KCUNsZWFyIHByaW1hcnkgYnVmZmVyIHdpdGggYSBuZXV0cmFsIHZhbHVlIGluc3RlYWQgb2YgYWx3YXlzIDAKCShiZWNhdXNlIDEyOCBpcyBuZXV0cmFsIGZvciA4LWJpdCBzb3VuZCkuCglGaXggYnVnIHdpdGggbWl4aW5nIDgtYml0IHNvdW5kIGludG8gdGhlIHByaW1hcnkgYnVmZmVyLgoJQnJva2Ugb3V0IHRoZSBtYWluIGJsb2NrIGluIERTT1VORF90aHJlYWQoKSB0byBhbm90aGVyIGZ1bmN0aW9uIGZvcgoJcmVhZGFiaWxpdHkuCglIYW5kbGUgIm5vIGF1ZGlvIiBhbmQgImF1ZGlvIGJ1c3kiIGNhc2VzIHByb3Blcmx5IHdoZW4gaW5pdGlhbGl6aW5nCglkc291bmQuIFJlbmFtZSBEbGxDYW5VbmxvYWROb3coKSB0byBEU09VTkRfRGxsQ2FuVW5sb2FkTm93KCkuCgoJKiBkZWJ1Z2dlci9oYXNoLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJTWFkZSB2YXJpYWJsZXMgb3B0aW1pemVkIGludG8gcmVnaXN0ZXJzIGFjY2Vzc2libGUuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJVGhlIHNwZWMgZGVmaW5pdGlvbiBmb3IgTW9uaXRvckZyb21XaW5kb3cgd2FzIHdyb25nLgoKCSogbXNkb3MvaW50MjEuYzogU3RlZmFuIExlaWNodGVyIDxzbGVAY2FtbGluZS5jb20+CglGaWxlIGhhbmRsZSBidWcgZml4LgoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBwYXJhZ3JhcGggYWJvdXQgZGlmZmVyZW50IGRsbCB2ZXJzaW9ucyBhbmQgc3RydWN0dXJlIHNpemVzLgoKCSogaW5jbHVkZS9jb21tY3RybC5oOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgbWlzc2luZyBUT09MSU5GTyBzdHJ1Y3R1cmUuCgoJKiBtdWx0aW1lZGlhL21tc3lzdGVtLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUZpeGVkIGEgaGVhcCBidWcuCgoJKiBsb2FkZXIvdGFzay5jLCBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2MvY2FsbGJhY2suYywgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQ0MS5jLCBtc2Rvcy92eGQuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBpbmNsdWRlL2xkdC5oLCBpbmNsdWRlL3dpbmRvd3MuaDoKCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCS0gU2V2ZXJhbCBrZXJuZWwuc3BlYyByZXR1cm4gdHlwZSBtaXNtYXRjaCBmaXhlcwoJLSBbR1NdZXRTZWxlY3RvckJhc2UgV2luMzJzIG9mZnNldCBzdXBwb3J0IGJ5IFVscmljaCBXZWlnYW5kICh0aGFua3Mgdi5tLiAhISkKCS0gTW92ZSBBcHBUb1dpbmUvV2luZVRvQXBwIG1hY3JvcyBhcyBXMzJTX0FQUDJXSU5FIGV0Yy4gdG8gbGR0LmgKCS0gTG9jYWxOb3RpZnkoKSBiYXNpYyBzdXBwb3J0CgktIEZpeGVzIGZvciBsb2NhbCBoZWFwIGhhbmRsaW5nIHdpdGggaGVhcCBoYW5kbGVzIGNyZWF0ZWQgYnkgVmlydHVhbCooKQoKCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogLW1pY3Jvc29mdC1zeW1ib2wgZW5jb2Rpbmcgd2FzIG5vdCByZWNvZ25pemVkLgoKCSogd2luZG93cy93aW4uYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFdJTl9SZXNldFF1ZXVlV2luZG93cyB3b3VsZCBza2lwIHNvbWUgd2luZG93cy4KCgkqIHRvb2xzL2J1aWxkLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWxsb3cgcmVjdXJzaXZlbHkgcmVlbnRlcmluZyBDQUxMMzJfTGFyZ2VTdGFjay4KCgkqIGluY2x1ZGUvdHR5ZHJ2LmgsIHdpbmRvd3MvdHR5ZHJ2Ly5jdnNpZ25vcmUsIHdpbmRvd3MvdHR5ZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3R0eWRydi9jbGlwYm9hcmQuYywgd2luZG93cy90dHlkcnYvZXZlbnQuYywgd2luZG93cy90dHlkcnYvaW5pdC5jLCB3aW5kb3dzL3R0eWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9tb3VzZS5jLCB3aW5kb3dzL3R0eWRydi93bmQuYywgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglBZGRlZCB0aGUgbmV3IFRUWSBkcml2ZXIuCgoJKiBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgbW9yZSBjb2RlIHRvIHRoZSBYMTEgZHJpdmVyLgoKVGh1IERlYyAgMyAxNjoyOTo1NiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbXNkb3MvaW50MTAuYywgbXNkb3MvaW50MTYuYywgbXNkb3MvaW50MjEuYywgbXNkb3MvaW50MjkuYzoKCUpvc2VwaCBQcmFuZXZpY2ggPGpwcmFuZXZpY2hAbHljb3MuY29tPgoJQ2FsbCB0aGUgbmV3IGNvbnNvbGUgZHJpdmVyIGZvciBzb21lIHJvdXRpbmVzLiBUaGlzIGlzIG5vdCBjb21wbGV0ZWx5Cglkb25lIHlldCBhbmQgbW9yZSBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KCldlZCBEZWMgIDIgMTk6NTg6MDkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiwgY29uc29sZS8uY3ZzaWdub3JlLCBjb25zb2xlL01ha2VmaWxlLmluLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUvdHR5LmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9jb25zb2xlLmgsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CglKb3NlcGggUHJhbmV2aWNoIDxqcHJhbmV2aWNoQGx5Y29zLmNvbT4KCUFkZGVkIGNvbnNvbGUgc3VwcG9ydC4KCgkqIGdyYXBoaWNzL3gxMWRydi9vZW1iaXRtYXAuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgbG9hZGVyL21haW4uYywgb2JqZWN0cy9BdHRpYy9vZW1iaXRtYXAuYywgb2JqZWN0cy9NYWtlZmlsZS5pbiwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jdXJzb3JpY29uLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYywgZ3JhcGhpY3MvcHNkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L3Blbi5jLCBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9pbml0LmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vdmUgT0VNIHJlc291cmNlcyB0byB0aGUgeDExZHJ2LgoKCSogZmlsZXMvZG9zX2ZzLmM6IEFsZXhhbmRlciBMYXJzc29uIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoJT3BlbmluZyBhIGZpbGUgaW4gYSBkaXJlY3Rvcnkgd2hpY2ggZG9lc24ndCBleGlzdCByZXR1cm5zCglFUlJPUl9GSUxFX05PVF9GT1VORCBpbnN0ZWFkIG9mIEVSUk9SX1BBVEhfTk9UX0ZPVU5ELgoKCSogbWVtb3J5L2F0b20uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglIYW5kbGUgYXRvbXMgIiMgbm9uIG51bWJlciIgKG9yYWNsZSBjbGllbnQpLgoKVHVlIERlYyAgMSAxNjoyMzoxOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBtaXNjL2Vycm9yLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJlbmFtZWQgS0VSTkVMLjMyNyB0byBIYW5kbGVQYXJhbUVycm9yIChhcyBpbiAnVW5kb2MuIFdpbmRvd3MnKS4KCUZpeGVkIHdyb25nIG9yZGluYWxzL3Byb3RvdHlwZSBmb3IgTWFwUHJvY2Vzc0hhbmRsZS9HZXRNb2R1bGVGaWxlTmFtZTMyLgoJQWRkZWQgbmFtZXMgZm9yIHNvbWUgdW5kb2N1bWVudGVkIGV4cG9ydHMuCgoJKiBtZW1vcnkvZ2xvYmFsLmMsIGlmMTYzMi90aHVuay5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBHbG9iYWxDaGFuZ2VMb2NrQ291bnQgKEtFUk5FTC4zNjUpLgoKCSogaWYxNjMyL3Rvb2xoZWxwLnNwZWMsIGluY2x1ZGUvdG9vbGhlbHAuaCwgbWVtb3J5L2hlYXAuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgTG9jYWwzMkluZm8sIHN0dWJzIGZvciBMb2NhbDMyRmlyc3QvTmV4dCAoS0VSTkVMLjQ0NC00NDYpLgoKCSogaWYxNjMyL2dkaS5zcGVjLCBvYmplY3RzL2dkaW9iai5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRlZCBHZGlGcmVlUmVzb3VyY2VzIChHREkuNjA5KS4KCgkqIGluY2x1ZGUvZHNvdW5kLmgsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJRml4ZWQgOC1iaXQgV0FWIGZvcm1hdCBoYW5kbGluZyAoaXQgaXMgdW5zaWduZWQgZGF0YSkuCglGaXhlZCBvZmYtYnktb25lIGNoZWNrcyBmb3IgYnVmZmVyIHdyYXAuCglJbmNyZW1lbnQgcmVmIGNvdW50IGZvciBwcmltYXJ5IGJ1ZmZlciBpbiBDcmVhdGVTb3VuZEJ1ZmZlcigpLgoJQWRkZWQgRFNCUE5fT0ZGU0VUU1RPUCBzdXBwb3J0IHRvIHBvc2l0aW9uIG5vdGlmaWNhdGlvbiBjb2RlLgoJTG90cyBvZiBtaW5vciBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBjaGVja3MuCglTdHVicyBmb3I6IElEaXJlY3RTb3VuZF9pbml0aWFsaXplKCksIElEaXJlY3RTb3VuZF9Db21wYWN0KCksCglhbmQgSURpcmVjdFNvdW5kX0dldFNwZWFrZXJDb25maWcoKS4KCUZpeGVkIGZyZXEgc2hpZnRpbmcgd2l0aCAxNi1iaXQgZGF0YSBwcm9ibGVtLCBmaXhlZCA4Yml0PC0+MTZiaXQKCWNvbnZlcnNpb24uCglMb3RzIG9mIHRocmVhZCBsb2NraW5nIGZvciBEaXJlY3RTb3VuZCBidWZmZXJzLgoJRGVhbGxvYyBwcmltYXJ5IGJ1ZmZlciB3aGVuIGRzb3VuZCBpcyBkZWFsbG9jYXRlZC4KCgkqIGluY2x1ZGUvd2ludHlwZXMuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUFkZGVkIHRoZSBURVhUKCkgYW5kIE1BS0VMUkVTVUxUKCkgZGVmaW5pdGlvbnMuCgoJKiB3aW5kb3dzL3F1ZXVlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgY2hhbmdlLgoKCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCVJldmVydCBtaXNndWlkZWQgY2hhbmdlIHRvIGluc3RhbGxfbGliIHRoYXQgYnJva2UgLWRpc2FibGUtbGliCgljb25maWd1cmUgb3B0aW9uLgoKCSogbWlzYy9tYWluLmMsIGluY2x1ZGUvd2luZG93cy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgcGFyYW1ldGVyIFNQSV9HRVREUkFHRlVMTFdJTkRPVy4KCU9uZSBtaXNzaW5nIGJyZWFrIGluIFNQSV9HRVREUkFHRlVMTFdJTkRPVy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZnVuY3Rpb25zIElMR2xvYmFsQ2xvbmUvSUxHbG9iYWxGcmVlLgoKCSogZG9jdW1lbnRhdGlvbi9wcmludGluZzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkIGEgbm90ZSBhYm91dCBXaW5QcmludGVycy4KCgkqIHJlbGF5MzIvbnRkbGwuc3BlYywgcmVsYXkzMi9vbGUzMi5zcGVjLCByZWxheTMyL3VzZXIzMi5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBZGRlZCBzb21lIHN0dWJzLCBzb21lIHB0ci0+c3RyIGNvbnZlcnNpb25zLgoKCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oLCByZWxheTMyL2RkcmF3LnNwZWM6CglMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCS0gYWRkZWQgZGVmaW5pdGlvbiBvZiBEaXJlY3REcmF3Q3JlYXRlQ2xpcHBlci4KCS0gbW9yZSB2ZXJzYXRpbGUgc3VwcG9ydCBvZiBzdXJmYWNlcyAvIGJldHRlciBzdXJmYWNlIGRlc2NyaXB0aW9uIHN1cHBvcnQuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uaCwgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGVsbHBhdGguYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYywgaW5jbHVkZS9zaGVsbC5oLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgd3JvbmcgcGFyYW1ldGVyIGNvdW50IGZvciBTSENoYW5nZU5vdGlmeURlcmVnaXN0ZXIsICBTSEZyZWVVbnVzZWRMaWJyYXJpZXMuCglOZXcgZnVuY3Rpb25zIFBhcnNlRmllbGQsIEdldC9TZXRJbnN0YW5jZUV4cGxvcmVyKCksIFBhdGhJc1VOQywgUGF0aElzUmVsYXRpdmUuCglTdHVicyBTSFdhaXRGb3JGaWxlVG9PcGVuLCBQYXRoRmluZE9uUGF0aC4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgY2hhbmdlcyB0byBwcmludCB0aGUgc3RyaW5ncyBpbiB0aGUgcmVsYXktdHJhY2UuCgoJKiB3aW5kb3dzL2NsYXNzLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJVGhlIGNsYXNzIG5hbWUgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIGEgZ2V0cHRyLgoKCSogbXVsdGltZWRpYS9tY2ltaWRpLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgbWVtb3J5L3N0YXR1cyByZWNvdmVyeSB3aGVuIGVycm9yIG9jY3VyZWQgaW4gTUlESV9tY2lPcGVuLgoJRml4ZWQgc3VwcG9ydCBmb3IgUk1JRCBmaWxlcyBpbiBNSURJX21jaU9wZW4uCglGaXhlZCBidWcgZm9yIHBsYXlpbmcgTUlESSBmaWxlcyB3aXRoIHRlbXBvIGNoYW5nZXMuIFNvdW5kIG91dHB1dCBpcwoJbm93IGNvcnJlY3QsIGJ1dCBsZW5ndGggb2YgdHJhY2tzIChhbmQgdGhlcmVmb3JlIG9mIHdob2xlIGZpbGUpIGlzIG5vdAoJY29ycmVjdC4KCUNoYW5nZWQgZXJyb3IgdmFsdWVzIChJTlRFUk5BTCA9PiBJTlZBTElEX0ZJTEUpIHdoZW4gZmlsZSBjYW5ub3QgYmUgcmVhZC4KCgkqIG11bHRpbWVkaWEvbWNpd2F2ZS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZpeGVkIG1lbW9yeS9zdGF0dXMgcmVjb3Zlcnkgd2hlbiBlcnJvciBvY2N1cmVkIGluIFdBVkVfbWNpT3Blbi4KCUNoYW5nZWQgZXJyb3IgdmFsdWVzIChJTlRFUk5BTCA9PiBJTlZBTElEX0ZJTEUpIHdoZW4gZmlsZSBjYW5ub3QKCWJlIHJlYWQuCgoJKiBtdWx0aW1lZGlhL21zdmlkZW8uYywgcmVsYXkzMi9tc3ZmdzMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWJzIGZvciBNQ0lXbmRDcmVhdGVbQXxXXS4KCgkqIG1pc2MvdmVyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJVmVyUXVlcnlWYWx1ZSwgYnVnZml4OiB3ZSBjYW50IGNvbnZlcnQgYmluYXJ5IGRhdGEgd2l0aAoJSEVBUF9zdHJkdXBXdG9BIChcVmFyRmlsZUluZm9cVHJhbnNsYXRpb24pLgoKTW9uIE5vdiAzMCAxNzo0MToxNyAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9hZHZhcGkzMi5zcGVjLCB3aW4zMi9hZHZhcGkuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YnMgZm9yIEVudW1TZXJ2aWNlU3RhdHVzMzIsIHNtYWxsIGNoYW5nZXMuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglMb2FkIG5vdyB0aGUgZmlyc3QgaWNvbiBmcm9tIHRoZSAqLmFuaSBmaWxlIGluc3RlYWQgb2YgY3Jhc2hpbmcuCgoJKiBtaXNjZW11L21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXggd2FybmluZ3MgaW4gbWlzY2VtdS9tYWluLmMuCgoJKiBpbmNsdWRlL3dpbmRvd3MuaDoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCS0gYWRkZWQgc29tZSBkZWZpbmVzIGFyb3VuZCB0aGUgQ29tbVBvcnQgKFBVUkdFX1hYWCBhbmQgTVNfWFhYX09OKQoJLSBhZGRlZCB0aGUgRExHVEVNUExBVEUgYW5kIERMR0lURU1URU1QTEFURSBzdHJ1Y3R1cmVzCgktIGFkZGVkIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGZvciBTdGFydFBhZ2UsRW5kUGFnZSxHZXRDb21tTWFzaywKCQlHZXRDb21tTW9kZW1TdGF0dXMgYW5kIFB1cmdDb21tLFdhaXRDb21tRXZlbnQuCgoJKiB3aW5kb3dzL2RlZnduZC5jOiBQYXVsIFF1aW5uIDxQYXVsUUBjb3JlbC5jb20+CglGaXhlZCBhY3RpdmF0aW9uL0ZvY3VzIG1lc3NhZ2Ugb3JkZXIgcHJvYmxlbSB3aGVuIGNyZWF0aW5nIGEgbmV3IEhXTkQuCgoJKiB3aW5kb3dzL3dpbnBvcy5jLCBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaCwgcmVsYXkzMi91c2VyMzIuc3BlYzoKCVBhdWwgUXVpbm4gPFBhdWxRQGNvcmVsLmNvbT4KCUltcGxlbWVudGF0aW9uIG9mIENoaWxkV2luZG93RnJvbVBvaW50RXggZnVuY3Rpb25zLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+CglGaXhlZCByZWdpc3RyeSBxdWVyeSBlcnJvciB2YWx1ZTogbm93IHJldHVybnMgRVJST1JfRklMRV9OT1RfRk9VTkQuCgoJKiBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2N1cnNvcmljb24uYywgb2JqZWN0cy9kaWIuYywgb2JqZWN0cy9wYWxldHRlLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUdldFN5c3RlbVBhbGV0dGVFbnRyaWVzIHJldHVybnMgcGFsZXR0ZSBzaXplIGlmIGVudHJpZXM9PU5VTEwuCglVc2UgdGhpcyBpbnN0ZWFkIG9mIENPTE9SX0dldFN5c3RlbVBhbGV0dGVTaXplLgoKCSogcmVsYXkzMi9kc291bmQuc3BlYywgbXVsdGltZWRpYS9kc291bmQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJSW1wbGVtZW50ZWQgY2xhc3MgZmFjdG9yeSBmb3IgZHNvdW5kLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBtaXNjL2NvbW0uYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCS0gZml4ZWQgYSBtaW5pbWFsIGVycm9yIGluIEdldENvbW1NYXNrIGRlZmluaXRpb24uCgktIGFkZHMgc3R1YnMgZm9yIEdldENvbW1Nb2RlbVN0YXR1cyBhbmQgV2FpdENvbW1FdmVudC4KCgkqIGluY2x1ZGUveG1hbGxvYy5oLCBsaWJyYXJ5L3dpbmVzdHViLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlcyBmb3IgQysrIFdpbmVsaWIgY29tcGlsYXRpb24uCgoJKiBvbGUvY29tcG9iai5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUJ1Z2ZpeDogc2Vjb25kIFJlZ09wZW5LZXkgc2hvdWxkIHVzZSBDTFNJRGtleSBpbnN0ZWFkIG9mIEhLRVlfQ0xBU1NFU19ST09ULgoKRnJpIE5vdiAyNyAxNjowNjowOCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQlVHUywgZG9jdW1lbnRhdGlvbi9idWdyZXBvcnRzLCBkb2N1bWVudGF0aW9uL2RlYnVnZ2luZywgZG9jdW1lbnRhdGlvbi9uby13aW5kb3dzLCBkb2N1bWVudGF0aW9uL3dpbmUubWFuOgoJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KCUZpeGVkICdtYWtlIGluc3RhbGwnIHRvIHJlYWxseSBjaGVjayBmb3IgbGlid2luZS5hIGJlZm9yZSBpbnN0YWxsaW5nCglpdC4KCgkqIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvb3B0aW9ucy5oLCBtaXNjL21haW4uYzoKCVN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgoJQWRkZWQgYSBuZXcgY21kbGluZSBzd2l0Y2ggdG8gZGlzYWJsZSBYRjg2IERHQSBFeHRlbnNpb25zLCAtbm9kZ2EuCgoJKiBmaWxlcy9kcml2ZS5jOiBBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CglJbXByb3ZlZCBHZXREaXNrRnJlZVNwYWNlMzJBKCkuCgpUaHUgTm92IDI2IDE2OjMyOjAwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbi5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCVJlbW92ZSBpbmNsdWRlZCBjb2xvci5oLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlIHVubmVjZXNzYXJ5IGNoZWNrIGZvciBlbnRyeXBvaW50IGFkZHJlc3MgKHRlc3QgYmluYXJ5IHdhcwoJaW5mZWN0ZWQgYnkgYSB2aXJ1cyB3aGljaCB1c2VzIGludmFsaWQgUEUgbG9hZGluZyBzdHVmZikuCgoJKiBncmFwaGljcy9wYWludGluZy5jLCByZWxheTMyL2dkaTMyLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdHVicyBmb3IgU3RhcnRwYWdlIGFuZCBFbmRQYWdlLgoKCSogaWYxNjMyL3RodW5rLmMsIG9iamVjdHMvZGMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IEZJWE1FIG91dHB1dHMuCgoJKiBpZjE2MzIva2VybmVsLnNwZWMsIGxvYWRlci90YXNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIEtFUk5FTC42MDIgYW5kIHN0dWIgZm9yIEtFUk5FTC40OTAuCgoJKiBvbGUvb2xlMm5scy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogRG8gKm5vdCogemVybyBvdXQgb3V0cHV0IGJ1ZmZlciBpbiBHZXROdW1iZXJGb3JtYXQzMltBV10uCgpXZWQgTm92IDI1IDE4OjE1OjUzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvbmxzL2dyYy5ubHMsIG9sZS9ubHMvc2t5Lm5scywgb2xlL25scy90aGEubmxzLCBvbGUvbmxzL3Ryay5ubHMsIG9sZS9vbGUybmxzLmM6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCVNtYWxsIGZpeGVzLgoKCSogbG9hZGVyL25lL3Jlc291cmNlLmMsIGluY2x1ZGUvbW9kdWxlLmgsIGxvYWRlci9yZXNvdXJjZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCAuLi5SZXNvdXJjZTE2IHJvdXRpbmVzIHRvIGxvYWRlci9yZXNvdXJjZS5jLgoJSW1wbGVtZW50ZWQgYWNjZXNzaW5nIFBFLWZpbGUgcmVzb3VyY2VzIHdpdGggMTYtYml0IHJlc291cmNlIHJvdXRpbmVzLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBsb2FkZXIvbmUvTWFrZWZpbGUuaW4sIGxvYWRlci9uZS9jb252ZXJ0LmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGF0aW9uIG9mIFBFLT5ORSByZXNvdXJjZSBjb252ZXJzaW9uIHJvdXRpbmVzIChLRVJORUwuNjE1LTYxOCkuCgoJKiBpbmNsdWRlL29sZWF1dG8uaCwgb2xlL29sZTJkaXNwLmMsIHJlbGF5MzIvb2xlYXV0MzIuc3BlYzoKCUZyYW5jaXMgQmVhdWRldCA8ZnJhbmNpc0BtYWNhZGFtaWFuLmNvbT4KCUltcGxlbWVudGVkIDMgbWV0aG9kczogU3lzQWxsb2NTdHJpbmdMZW4oKSwgU3lzUmVBbGxvY1N0cmluZ0xlbigpCglhbmQgU3lzU3RyaW5nTGVuKCkuIEVuc3VyZSB0aGF0IHRoZSBCU1RSIG9iamVjdHMgd2VyZSBhbGxvY2F0ZWQKCWFjY29yZGluZyB0byB0aGUgV2luZG93cyBkb2N1bWVudGF0aW9uLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvcGlkbC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hlbGwuaCwgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vdmVkIGV4aXN0aW5nIHBhdGggLSBmdW5jdGlvbnMgdG8gc2hlbGxwYXRjaC5jLgoJTmV3OiBQYXRoUmVtb3ZlQmxhbmtzMzJBfFcsICBQYXRoTWF0Y2hTcGVjMzJBfFcsCglQYXRoU2V0RGxnSXRlbVBhdGgzMkF8Vy4KCgkqIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbGxpbmsuYywgZGxscy9zaGVsbDMyL3NoZWxsb2xlLmMsIGluY2x1ZGUvc2hsb2JqLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1vdmVkIGV4aXN0aW5nIElTaGVsbExpbmsgY2xhc3MuIE5ldyBzdHVicyBmb3IgSVNoZWxsTGlua1cuCgoJKiBpbmNsdWRlL2JpdG1hcC5oLCBpbmNsdWRlL2NvbG9yLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIGluY2x1ZGUveDExZm9udC5oLCBtaXNjL21haW4uYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jb2xvci5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIHdpbmRvd3MvQXR0aWMvZ3JhcGhpY3MuYywgd2luZG93cy9kY2UuYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21vdXNlLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIHdpbmRvd3Mvc3lzbWV0cmljcy5jLCB3aW5kb3dzL3VzZXIuYywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3Mvd2luZy5jLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2JydXNoLmMsIGdyYXBoaWNzL3gxMWRydi9jbGlwcGluZy5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvaW5pdC5jLCBncmFwaGljcy94MTFkcnYvcGVuLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglSZW1vdmUgWF9EQ19JTkZPIGZyb20gREMgYW5kIG1ha2UgaXQgYmVoYXZlIGxpa2UgYW55IG90aGVyIFBERVZJQ0UuCgoJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy94bXMuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hhbmdlZCBDVFhfU0VHX09GRl9UT19MSU4gdG8gYWxsb3cgbGluZWFyIGFkZHJlc3NlcyBpbiAzMi1iaXQKCXJlZ2lzdGVycyAodXNlZCBieSBEZXZpY2VJb0NvbnRyb2wpLiBBZGFwdGVkIGFsbCB1c2Vycy4KCgkqIGluY2x1ZGUvd2luaW9jdGwuaCwgd2luMzIvZGV2aWNlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIChtb3N0KSBWV2luMzIuVnhEIERldmljZUlvQ29udHJvbCByb3V0aW5lcy4KClR1ZSBOb3YgMjQgMjA6NDc6MTcgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci90aHJlYWQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBTZXQgdGhlIFRFQkZfV0lOMzIgZmxhZyBpbiB0ZWIuZmxhZ3MgZm9yIDMyLWJpdCB0aHJlYWRzLgoKCSogbG9hZGVyL3Rhc2suYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IENhbGwgSW5pdFRocmVhZElucHV0IGluIEdldEZhc3RRdWV1ZSB3aXRoIGNvcnJlY3QgcGFyYW1ldGVyCglmb3IgMzItYml0IHF1ZXVlcy4KCgkqIHdpbjMyL2tlcm5lbDMyLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBbUUZdVF9UaHVuayBzaG91bGQgY2xlYXIgSElXT1JEKEVBWCkgb24gcmV0dXJuLgoJQnVnZml4OiBoYWNrIGZvciBzdHVwaWQgVVNFUjMyIENhbGxiYWNrR2x1ZUxTIHJvdXRpbmUgaW4gQ29tbW9uMzJUaGtMUy4KCgkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogQmFkIGp1bXAgZ2VuZXJhdGVkIGluIFRIVU5LX0FsbG9jTFNUaHVua2xldC4KCUJ1Z2ZpeDogRm9yZ290IHRvIGNvbnZlcnQgc2VncHRyIGluIEFsbG9jTFNUaHVua2xldENhbGxiYWNrRXguCgoJKiBncmFwaGljcy94MTFkcnYveGZvbnQuYzogRXJpYyBXYXJua2UgPGVyaWNAc25vd21vb24uY29tPgoJRG9uJ3QgbWF0Y2ggYWdhaW5zdCBTeW1ib2wgb3IgTmlsIGZvbnRzLgoKCSogbWVtb3J5L2dsb2JhbC5jOiBTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCVJldHVybiB0aGUgImJ1ZmZlcnMiIGFuZCAiY2FjaGVkIiBtZW1vcnkgYXMgZnJlZSBzaW5jZSBpdCBpcwoJZGVhbGxvY2F0ZWQgd2hlbiBhIHByb2dyYW0gbmVlZHMgaXQgYW55d2F5LgoKCSogd2luZG93cy9kaWFsb2cuYywgaW5jbHVkZS93aW5kb3dzLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUJ1Z2ZpeDogU2V0RGxnSXRlbVRleHQzMiByZXR1cm5zIEJPT0wgbm90IHZvaWQuCgoJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzIEdldFVzZXJPYmplY3RJbmZvcm1hdGlvbkF8Vy4KCgkqIHJlbGF5MzIvcmVsYXkzODYuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIGxlZnQgb3ZlciAnc2hvdycgYW5kIHVzZWxlc3MgZGVhZGJlZWYgY2hlY2tpbmcgd2hpY2ggZG9lc24ndAoJd29yay4KCgkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkanVzdCBicm9rZW4gZW50cnlwb2ludCBhZGRyZXNzZXMuICh3aW45OCBub3RlcGFkLmV4ZSkKCgkqIGRvY3VtZW50YXRpb24vc3RhdHVzL211bHRpbWVkaWE6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJVXBkYXRlZCBhY2NvcmRpbmcgdG8gZGV2ZWxvcG1lbnQuCgoJKiBpZjE2MzIvbW1zeXN0ZW0uc3BlYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTb21lIG5ldyBzdHVicyAobWlkaVN0cmVhbVhYWCBmdW5jdGlvbnMsIHNvbWUgbWNpIGZ1bmN0aW9ucywgYW5kCglzb21lIG1taW8gZnVuY3Rpb25zKS4KCgkqIG11bHRpbWVkaWEvbWlkaS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1vdmVkIE1DSSBwYXJ0IHRvIG1jaW1pZGkuYyA7IGFkZGVkIERyaXZlclByb2MuCgoJKiBtdWx0aW1lZGlhL2F1ZGlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJTW92ZWQgTUNJIHBhcnQgdG8gbWNpd2F2ZS5jIDsgYWRkZWQgc29tZSBlcnJvciBjaGVja2luZyA7IGFkZGVkCglEcml2ZXJQcm9jCgoJKiBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIG11bHRpbWVkaWEvTWFrZWZpbGUuaW46CglFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIG1jaW1pZGkgYW5kIG1jaXdhdmUuCgoJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglGaXhlZCBidWcgaW4gTUNJX0lORk8gY29tbWFuZCA7IGZpeGVkIHBhdXNlL3Jlc3VtZSBjb21tYW5kcyA7IGZpeGVkCglzZWVrIGNvbW1hbmQuCgoJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglTdGFydGluZyB3cml0aW5nIE1DSSBwYXJ0IDsgZml4ZWQgYnVnIGluIE1DSV9JTkZPIGNvbW1hbmQuCgoJKiBtdWx0aW1lZGlhL21taW8uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglBZGRlZCBzb21lIG1pc3Npbmcgc3R1YnMgaW4gMzIgYml0IHBhcnQuCgoJKiBtdWx0aW1lZGlhL21jaXN0cmluZy5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCU1hZGUgdXNlIG9mIG5ldyAxNi8zMiBNQ0kgbWVzc2FnZSBoYW5kbGluZyBpbiBtbXN5c3RlbS5jLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaDoKCUVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBuZXcgZnVuY3Rpb25zL3N0cnVjdHVyZXMgZGVmaW5pdGlvbnMuKEkgY291bGRuJ3QgZ2V0IGFsbAoJdGhlIG1hbmlmZXN0IGNvbnN0YW50cyB2YWx1ZXMgdGhhdCBNUyB3YXMgcmVmZXJyaW5nIHRvIGluIGl0cyBzcGVjcy4uLgoJaWYgc29tZW9uZSBoYXMgdGhlbS4uLikKCgkqIG11bHRpbWVkaWEvbWNpYW5pbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUFkZGVkIHNvbWUgZXJyb3IgY2hlY2tpbmcgOyBtYWRlIHVzZSBvZiBuZXcgMTYvMzIgTUNJIG1lc3NhZ2UgaGFuZGxpbmcKCWluIG1tc3lzdGVtLmMgOyBmaXhlZCBidWcgaW4gTUNJX0lORk8gY29tbWFuZC4KCgkqIG11bHRpbWVkaWEvbWNpY2RhLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJQWRkZWQgc29tZSBlcnJvciBjaGVja2luZyA7IG1hZGUgdXNlIG9mIG5ldyAxNi8zMiBNQ0kgbWVzc2FnZQoJaGFuZGxpbmcgaW4gbW1zeXN0ZW0uYy4KCUFkZGVkIFdpbjk1IGNvbW1hbmQgdG8gaGFuZGxlIGNkLXJvbSB3aXRoIGJvdGggZGF0YSBhbmQgYXVkaW8gOyBmaXhlZAoJYnVnIGluIE1DSV9JTkZPIGNvbW1hbmQgOyBzaGFkb3dpbmcgTUNJIHN0YXR1cyBmb3IgZGV2aWNlcyB0aGF0IGNhbid0CglnZXQgY3VycmVudCBzdGF0dXMgOyBmaXhlZCBzdGF0dXMgbm90IGJlaW5nIHVwZGF0ZWQgb24gY2QgY2hhbmdlLgoKCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KCUZhY3Rvcml6ZWQgMTYvMzIgYml0IE1DSSBmdW5jdGlvbiBieSB1c2luZyAgbWVzc2FnZSBtYXBwaW5nIGZyb20gMTYKCXRvIDMyIGJpdHMgOyBhZGRlZCBzb21lIG5ldyBwcm90b3R5cGVzIG1jaVNlbmRDb21tYW5kLCBtY2lTZW5kU3RyaW5nLAoJbWNpKFNldC9HZXQpWWllbGRQcm9jIDsgc3RhcnRlZCB3cml0aW5nIG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zIC0gbm90Cgl5ZXQgd29ya2luZy4gRml4ZWQgc29tZSBpc3N1ZXMgcmVnYXJkaW5nIGFzeW5jaHJvbm91cyBNQ0kgY29tbWFuZHMgOwoJZml4ZWQgTUNJX1NZU0lORk8gY29tbWFuZC4KCgkqIHJlc291cmNlcy9zeXNyZXNfRnIucmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgoJRml4ZWQgc29tZSBxdWlya3MuCgpTdW4gTm92IDIyIDE4OjI5OjUwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL2ljb25jYWNoZS5jLCBkbGxzL3NoZWxsMzIvcGlkbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU1hbnkgZml4ZXMuCgoJKiBkbGxzL3NoZWxsMzIvcGlkbC5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBmdW5jdGlvbjogX0lMR2V0RXh0ZW5zaW9uLgoKCSogZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY2xhc3Nlcy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZS4gSEtFWV9DTEFTU0VTX1JPT1QgaGFuZGxpbmcuCgoJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVVwZGF0ZWQuCgoJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2hlYWRlci5oLCBpbmNsdWRlL2xpc3R2aWV3LmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3JlYmFyLmgsIGluY2x1ZGUvc3RhdHVzLmgsIGluY2x1ZGUvdG9vbGJhci5oLCBpbmNsdWRlL3Rvb2x0aXBzLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgVW5pY29kZSBzdXBwb3J0IChhdCBsZWFzdCBwYXJ0aWFsbHkpLgoKCSogb2xlL01ha2VmaWxlLmluLCBvbGUvY29tcG9iai5jLCBvbGUvb2xlb2JqLmMsIGluY2x1ZGUvb2xlb2JqLmgsIGluY2x1ZGUvc2hsb2JqLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgSU9sZUFkdmlzZUhvbGVyIGludGVyZmFjZSAoc3RpbGwgYSBkdW1teSkgYW5kIGZpeGVkCglDcmVhdGVPbGVBZHZpc2VIb2xkZXIoKS4KCgkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIGdsb2JhbCBzdWJjbGFzc2luZyBhdG9tLCB1c2VkIGJ5IHRvb2x0aXBzIGFuZCB1cGRvd24gKG5vdCB5ZXQpLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgbGF5b3V0IGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL2ltYWdlbGlzdC5jLCByZWxheTMyL2NvbWN0bDMyLnNwZWM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgSW1hZ2VMaXN0X0xvYWRJbWFnZSgpLgoKCSogZGxscy9jb21jdGwzMi9jb21ib2V4LmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBDTUVNX1NFVElURU0zMkEgYW5kIG1lc3NhZ2UgZm9yd2FyZGluZyB0byBjb21ib2JveC4KCgkqIG9sZS9tb25pa2VyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBzdHViIGZvciBDcmVhdGVJdGVtTW9uaWtlcigpLgoKCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBzb21lIHVuZG9jdW1lbnRlZCBmdW5jdGlvbiBuYW1lcyBhbmQgaW1wbGVtZW50ZWQgRFBBX01lcmdlCglwYXJ0aWFsbHkuCgoJKiBjb250cm9scy9idXR0b24uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUVuYWJsZWQgZG91YmxlIGNsaWNrIGZvciBidXR0b25zLgoKCSogaW5jbHVkZS93aW5kb3dzLmg6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBjb21tYW5kIGFuZCByZXR1cm4gY29uc3RhbnRzIHVzZWQgYnkgV01fTk9USUZZRk9STUFULgoKCSogb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2RjLmMsIG9iamVjdHMvZ2Rpb2JqLmMsIG9iamVjdHMvcGVuLmMsIHdpbmRvd3MvQXR0aWMvZ3JhcGhpY3MuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvZGliLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLCBncmFwaGljcy94MTFkcnYvdGV4dC5jLCBpbmNsdWRlL2RjLmgsIGluY2x1ZGUveDExZHJ2Lmg6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vdmVkIERDX1NldHVwR0MgZnVuY3Rpb25zIHRvIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLgoKCSogaW5jbHVkZS9vcHRpb25zLmgsIG1pc2MvbWFpbi5jLCBvbGUvb2xlMm5scy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTbWFsbCBmaXhlcyB0byBnZXQgdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgdG8gYSBzZW5zaWJsZSB2YWx1ZS4KCVRoYW5rcyB0byBQYWJsby4KCgkqIEFOTk9VTkNFLCBERVZFTE9QRVJTLUhJTlRTLCBSRUFETUUsIGRvY3VtZW50YXRpb24vUkVBRE1FLmRvY3VtZW50YXRpb24sIGRvY3VtZW50YXRpb24vaG93LXRvLXBvcnQsIGRvY3VtZW50YXRpb24vd2luZS5tYW4sIGRvY3VtZW50YXRpb24vd2luZS50ZXhpbmZvOgoJRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglNaXNjZWxsYW5lb3VzIHNtYWxsIGZpeGVzLgoKCSogZ3JhcGhpY3Mvd2luMTZkcnYvcHJ0ZHJ2LmMsIGlmMTYzMi9nZGkuc3BlYywgaW5jbHVkZS93aW5kb3dzLmgsIG9iamVjdHMvbWV0YWZpbGUuYywgb2JqZWN0cy9yZWdpb24uYywgcmVsYXkzMi9nZGkzMi5zcGVjOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgV2luMTYgaW1wbGVtZW50YXRpb24gZm9yIEdldFJlZ2lvbkRhdGEoKS4KCgkqIG9sZS90eXBlbGliLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KCUVuaGFuY2VkIE9BQnVpbGRWZXJzaW9uKCkgdG8gcmV0dXJuIGRpZmZlcmVudCB2ZXJzaW9uIHZhbHVlcyBmb3IKCWRpZmZlcmVudCB3aW52ZXJzLgoKCSogbXNkb3MvaW50MjEuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgSU5UMjFfUGFyc2VGaWxlTmFtZUludG9GQ0IoKSBhbmQgc29tZSBvdGhlciB0aGluZ3MgdG8gZ2V0CglDT01NQU5ELkNPTSB3b3JraW5nLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIG1pc3NpbmcgZW50cnkgZm9yIEdldE51bWJlckZvcm1hdFcuCgoJKiBvYmplY3RzL3BhbGV0dGUuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGVja2luZyBmb3IgTlVMTC1wb2ludGVyLgoKCSogb2xlL25scy9mcmEubmxzLCBvbGUvbmxzL2ZyYi5ubHMsIG9sZS9ubHMvZnJjLm5scywgb2xlL25scy9mcmwubmxzOgoJUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCUJldHRlciBPTEUgc3VwcG9ydCBpbiBGcmVuY2ggbGFuZ3VhZ2VzLgoKCSogbG9hZGVyL21vZHVsZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGF0aW9uIG9mIENyZWF0ZVByb2Nlc3MzMlcuCgoJKiB3aW5kb3dzL2V2ZW50LmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCVF1ZXVpbmcgb2YgZGVmZXJyZWQgRXhwb3NlIGV2ZW50cy4KCgkqIGNvbnRyb2xzL2xpc3Rib3guYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglMQl9HRVRURVhUOiBIYW5kbGUgcGFzc2VkIE5VTEwgYnVmZmVyLgoKCSogY29udHJvbHMvY29tYm8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglDQl9HRVRURVhUOiBVc2UgbHBCdWZmZXIgaW5zdGVhZCBvZiBscFRleHQgZm9yIExCX0dFVFRFWFQzMiwgaGFuZGxlIDAKCWJ5dGUgTlVMTCBidWZmZXIuCgoJKiBvbGUvbmxzL2Zycy5ubHMsIG9sZS9ubHMvc2t5Lm5scywgb2xlL29sZTJubHMuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVHVybiBtZWdhIGRvdWJsZSBzd2l0Y2ggaW50byBzdGF0aWMgdGFibGUgKHJlZHVjZXMgY29tcGlsZSB0aW1lKS4KCgkqIEFVVEhPUlMsIGluY2x1ZGUvYXV0aG9ycy5oOiBBZGRlZCBSb2JlcnQgUmlnZ3MuCgoJKiBpbmNsdWRlL2QzZC5oOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJaW5jbHVkZSBkZHJhdy5oLCBxdWVzdGlvbmFibGUgZml4IGZvciBxdWVzdGlvbmFibGUgc3RydWN0L3VuaW9uCgljb25zdHJ1Y3QgaW4gTVMncyBEM0RWRUNUT1IgZGVmaW5pdGlvbi4KCgkqIGluY2x1ZGUvZHNvdW5kLmg6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CglNb3JlIGZsYWdzIChEaXJlY3RYIDUuMiksIERpcmVjdFNvdW5kM0RMaXN0ZW5lciBhbmQKCURpcmVjdFNvdW5kM0RCdWZmZXIgc3RydWN0dXJlcywgaW5jbHVkZSBzb21lIHJlcXVpcmVkIGZpbGVzCgkod2luZG93cy5oLCBjb21wb2JqLmgsIGFuZCBkM2QuaCkuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgoJRGlyZWN0U291bmQzRExpc3RlbmVyIGFuZCBEaXJlY3RTb3VuZDNEQnVmZmVyIHN0dWJzLCBuZXcgbWl4ZXIgY29kZSwKCXByaW1hcnkgYnVmZmVyIGlzIGltcGxlbWVudGVkIGNsb3NlciB0byB3aGF0IHRoZSBTREsgZG9jcyBzcGVjaWZ5LAoJb3RoZXIgU0RLIGRvY3VtZW50ZWQgYmVoYXZpb3VyIGVuZm9yY2VkLiBDb21wbGV0ZWQgdGhlIGRldmNhcHMgbGlzdC4KCgkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicyBzdHJkYXRlLCBzdHJ0aW1lLgoKCSogbWVtb3J5L3NlbGVjdG9yLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogdHlwbyBpbiBTVW5NYXBMU19JUF9FQlBfOCBsZWFkIHRvIHN0YWNrIGNvcnJ1cHRpb24uCgoJKiBtaXNjL2NvbW0uYzogQ2xpZmYgV3JpZ2h0IDxjbGlmZkBzbmlwZTQ0NC5vcmc+CglGaXhlZCBhIG1hc2sgc2V0LCBhbmQgb3RoZXIgcGFyaXR5IHNldHRpbmcgYnVncyBmb3Igc2VyaWFsIHBvcnRzLgoKCSogaW5jbHVkZS9zaWdfY29udGV4dC5oOiBWYXN1ZGV2IE11bGNoYW5kYW5pIDx2YXN1QHRlaWwuc29mdC5uZXQ+CglBZGRlZCBCU0RJIHNpZ2NvbnRleHQgZGVmaW5pdGlvbnMuCgoJKiB3aW5kb3dzL2NsYXNzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglGaXhlZCB0eXBvLgoKCSogcmVsYXkzMi9yZWxheTM4Ni5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVJlbW92ZSBub3cgdXNlbGVzcyBSRUxBWV9TaG93RGVidWdtc2dzUmVsYXkgY2hlY2suCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEbyBub3QgcmVsb2NhdGUgdGhlIHBvaW50ZXJzIGluIHRoZSBJTUFHRV9USFJFQURfTE9DQUxfU1RPUkFHRQoJZGlyZWN0b3J5LCBmb3IgdGhleSBzZWVtIHRvIGJlIHJlbG9jYXRlZCBieSB0aGUgc3RhbmRhcmQgcmVsb2NhdGluZwoJbWVjaGFuaXNtLiAoRXhwbGljaXRseSBjaGVja2VkIG9uZSBwcm9ncmFtIHVzaW5nIGl0KQoKCSogZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGluY2x1ZGUvc2hlbGwuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUGF0aEFkZEJhY2tzaGxhc2gsIFBhdGhSZW1vdmVCYWNrc2xhc2g6IGFyZ3VtZW50IGlzIG5vdCBjb25zdGFudC4KCgkqIHdpbmRvd3Mvd2luLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2hlY2sgd25kUHRyIGZvciBOVUxMLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglCbHRGYXN0OiBIb25vciBsUGl0Y2gsIExvY2svVW5sb2NrIHN1cmZhY2VzICh4bGliIG5lZWRzIHVubG9jayB0byBkcmF3KS4KCgkqIG1pc2Mvc3Bvb2xlci5jLCBtaXNjL01ha2VmaWxlLmluLCBtaXNjZW11L21haW4uYywgTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgbG9hZGVyL21haW4uYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJVGFrZXMgcHJpbnQgc3Bvb2xlciBmdW5jdGlvbnMgb3V0IG9mIHdpbjE2ZHJ2LgoJQWxsb3dzIHRoZSBQb3N0U2NyaXB0IGRyaXZlciB0byBnbyBpbnRvIGxpYndpbmUuCgoJKiBpZjE2MzIvZ2RpLnNwZWMsIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9wYWxldHRlLmM6CglJYW4gU2NobWlkdCA8aXJzbWFuQGlhZy5uZXQ+CglBZGRlZCBzdHVicyBmb3IgdHdvIHVuZG9jdW1lbnRlZCBHREkgcm91dGluZXMsIFNldE1hZ2ljQ29sb3JzIGFuZAoJU2V0U29saWRCcnVzaC4gVGhpcyBhbGxvd3MgV2luOTggbmF0aXZlIFVTRVIgdG8gc3RhcnQgdXAuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KCUZpeGVkIHRoZSBER0EgZGV0ZWN0aW9uIGNvZGUgaW4gZGRyYXcuIFlvdSBkb24ndCBuZWVkIHJvb3QgYWNjZXNzLAoJaGF2aW5nIHIrdyBhY2Nlc3MgdG8gL2Rldi9tZW0gaXMgZW5vdWdoLgoKCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0ZHJhdywgZ3JhcGhpY3MvZGRyYXcuYywgZ3JhcGhpY3Mvd2luZy5jLCBpbmNsdWRlL2RkcmF3Lmg6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURpcmVjdERyYXcgc3RhdHVzIHVwZGF0ZWQuCglVc2UgY29vcGVyYXRpdmUgd2luZG93IGZvciBkcmF3aW5nIGluIHhsaWIgaW1wbGVtZW50YXRpb24gaWYgcG9zc2libGUuCglTbGlnaHRseSByZXN0cnVjdHVyZWQgSURpcmVjdERyYXdTdXJmYWNlOjpCbHQgc28gaXQgZG9lc24ndCBjcmFzaC4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPERhdmlkLkZhdXJlQGluc2EtbHlvbi5mcj4KCU1pY3JvIHBhdGNoIGZvciBBbHRHciBrZXkgb24gZ2VybWFuIGtleWJvYXJkcy4KCgkqIGZpbGVzL2Rvc19mcy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUZpeGVzIGVycm9yIGhhbmRsaW5nIChTZXRMYXN0RXJyb3IoKSBhbmQgcmV0dXJuIHZhbHVlKS4KCgkqIG9iamVjdHMvdGV4dC5jLCBpbmNsdWRlL3dpbmRvd3MuaDogR2FlbCBkZSBDaGFsZW5kYXIgPGdhZWxAbGltc2kuZnI+CglQYXJ0aWFsbHkgY29tcGxldGUgR2V0VGV4dENoYXJzZXRJbmZvIGFuZCBjb3JyZWN0cyByZXR1cm4gdmFsdWVzIGZvcgoJdGhpcyBmYW1pbHkgb2YgZnVuY3Rpb25zLgoKU3VuIE5vdiAxNSAxODoxMjoxMiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogb2xlL2NvbXBvYmouYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglCdWcgZml4LgoKCSogb2JqZWN0cy9kaWIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUZpeGVkIHJldHJpZXZhbCBvZiBpbnZhbGlkIHBhbGV0dGUgZGF0YSBpbiBHZXRESUJpdHMoKS4KCgkqIHdpbmRvd3Mvd2lucG9zLmM6IEpvaG4gUmljaGFyZHNvbiA8anJpY2hhcmRAemVhbGFuZC5tdi5jb20+CglBbGxvdyBTV1BfSElERVdJTkRPVyB0byBiZSBjYWxsZWQgb24gd2luZG93cyB0aGF0IGFyZSBhbHJlYWR5IGhpZGRlbgoJd2l0aG91dCB1bm1hcHBpbmcgdGhlbSBhZ2Fpbi4KCgkqIHdpbmRvd3Mvc2Nyb2xsLmM6IFBpbSBCb2xsZW4gPHBpbUBnaW1saS5pYWVodi5ubD4KCUZpeGVkIHNjcm9sbCBidWcgaW4gU2Nyb2xsV2luZG93RXgzMiB3aGljaCBjYXVzZWQgZ2FyYmFnZSBvbiBzY3JlZW4KCW91dHNpZGUgZGVza3RvcCB3aW5kb3cgd2l0aCBndHdpbi5leGUgKER1dGNoIGJhbmtpbmcgcHJvZ3JhbSkuCgoJKiBsb2FkZXIvbWFpbi5jLCBtZW1vcnkvYXRvbS5jLCBtaXNjL2RkZW1sLmMsIHdpbmRvd3MvY2xhc3MuYywgd2luZG93cy9tZXNzYWdlLmMsIGluY2x1ZGUvQXR0aWMvYXRvbS5oLCBpbmNsdWRlL2dsb2JhbC5oOgoJU21hbGwgYXRvbSBmaXhlcy4KCgkqIG9iamVjdHMvZGliLmM6IERpcmsgVGhpZXJiYWNoIDx0aGllcmJhY2hAbWF0aGVtYXRpay50dS1kYXJtc3RhZHQuZGU+CglGaXhlZCBidWcgaW4gU3RyZXRjaERJQml0czMyICh3cm9uZyBvcmlnaW4pLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgZml4ZXMuCgoJKiBpbmNsdWRlL2RkcmF3LmgsIGluY2x1ZGUvdHNfeHNobS5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hzaG0uYywgZ3JhcGhpY3MvZGRyYXcuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJU29tZSBjb3JyZWN0aW9ucyB0byB0aGUgaGFuZGxpbmcgb2Ygb2ZmLXNjcmVlbiBidWZmZXJzLgoJQ29ycmVjdGlvbiB0byB0aGUgRW51bURpc3BsYXlNb2RlcyBmdW5jdGlvbi4KCUFkZGVkIFhTaG0gc3VwcG9ydCB0byBYbGliIGRyaXZlci4KCU9wZW4gYSBEaXJlY3RYIHdpbmRvdyBldmVuIHdoZW4gdXNpbmcgdGhlIERHQSBkcml2ZXIuCgoJKiBpbmNsdWRlL3NoZWxsLmgsIGluY2x1ZGUvc2hsb2JqLmgsIG1pc2Mvc2hlbGwuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ2xlYW51cCwgc21hbGwgZml4ZXMsIGEgZmV3IG5ldyBzdHVicy4KCgkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSGFuZGxpbmcgZm9yIGxpc3R2aWV3c3R5bGVzLCB2aWV3IG1vZGUgYnV0dG9ucyBpbiBmaWxlZGlhbG9ncwoJZW5hYmxlZCBhbmQgaGFuZGxlZC4KCU5ldyBsaXN0dmlldyBjb2x1bW5zIFNpemUsIFR5cGUsIE1vZGlmaWVkIGZvciByZXBvcnR2aWV3CgljcmVhdGVkIGFuZCBoYW5kbGVkLgoKCSogZGxscy9zaGVsbDMyL2lmX21hY3Jvcy5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgZmlsZSwgd3JhcHBlciBmb3IgSVNoZWxsQnJvd3NlciBjbGFzcy4KCgkqIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IGZpbGUsIHNvbWUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgaWNvbiBjYWNoZS4KCUltcGxlbWVudGVkIEV4dHJhY3RJY29uRXg7IG1vdmVkIFNITWFwUElETFRvU3lzdGVtSW1hZ2VMaXN0SW5kZXgsCglTaGVsbF9HZXRJbWFnZUxpc3QgaW4gdGhpcyBmaWxlLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3BpZGwuaDoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJSW1wbGVtZW50ZWQ6IElMSXNFcWFsLCBJTEZpbmRDaGlsZCwgX0lMR2V0RmlsZURhdGUsIF9JTEdldEZpbGVTaXplLgoKCSogbG9hZGVyL21vZHVsZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUxvYWRMaWJyYXJ5RXg6IHNob3cgYSB3YXJuaW5nIHdoZW4gY2FsbGVkIHdpdGggdW5pbXBsZW1lbnRlZCBwYXJtLgoKCSogbWlzY2VtdS9pbnN0ci5jOiBDbGVhbmVkIHVwIGEgYml0LgoKCSogbWVtb3J5L3NlbGVjdG9yLmMsIG1pc2NlbXUvaW5zdHIuYywgdG9vbHMvYnVpbGQuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQ2xlYW4gaW52YWxpZCBzZWxlY3RvcnMgb24gdGhlIHBvcCAleHMgZnJvbSB0aGUgU1RBQ0tGUkFNRSBpdHNlbGYKCWluc3RlYWQgb2YgdXNpbmcgbGlua2VkIGxpc3QgaGFjay4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmVkIGdldHMgbWVzc2FnZS4KCgkqIG9sZS9ubHMvdGhhLm5sczogRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJQWRkZWQgVGhhaSBubHMtcmVzb3VyY2VzLgoKCSogb2xlL25scy9SRUFETUUsIG9sZS9ubHMvY3plLm5scywgb2xlL25scy9lc2UubmxzLCBvbGUvbmxzL2VzZy5ubHMsIG9sZS9ubHMvZXN0Lm5scywgb2xlL25scy9ldXEubmxzLCBvbGUvbmxzL2Zvcy5ubHMsIG9sZS9ubHMvaHJ2Lm5scywgb2xlL25scy9odW4ubmxzLCBvbGUvbmxzL2lzbC5ubHMsIG9sZS9ubHMvbm9yLm5scywgb2xlL25scy9wbGsubmxzLCBvbGUvbmxzL3B0Zy5ubHMsIG9sZS9ubHMvcm9tLm5scywgb2xlL25scy9zbHYubmxzLCBvbGUvbmxzL3N2ZS5ubHMsIG9sZS9vbGUybmxzLmMsIGluY2x1ZGUvd2lubmxzLmg6CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCURpc3BsYXkgdGhlIGxhbmd1YWdlIGlkIGZvciAiWFhYIG5vdCBzdXBwb3J0ZWQgZm9yIHlvdXIgbGFuZ3VhZ2UiCgltZXNzYWdlcy4KCUFkZGVkIGFsbCBsYW5ndWFnZXMgYW5kIHN1Ymxhbmd1YWdlcyBmb3IgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBpbgoJcmVzb3VyY2VzL3N5c3Jlc19YeC4KCgkqIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzogR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY29tPgoJQWRkIHN0dWJzIGZvciBHZXRSdW5uaW5nT2JqZWN0VGFibGUzMiBhbmQgT2xlUmVnR2V0VXNlclR5cGUuCgoJKiBvbGUvbW9uaWtlci5jOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+CglFbnN1cmUgdGhhdCBDcmVhdGVGaWxlTW9uaWtlciBmdW5jdGlvbnMgZG9uJ3QgcmV0dXJuIGEgYm9ndXMgbW9uaWtlcgoJb2JqZWN0IG9uIGZhaWx1cmUuCgoJKiBpbmNsdWRlL2NsYXNzLmgsIHdpbmRvd3MvY2xhc3MuYzogR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY29tPgoJQWRkZWQgY29kZSB0byBtYW5hZ2UgQXNjaWkgYW5kIFdpZGVDaGFyIGNsYXNzIG5hbWVzLCBhbmQgdG8gcmV0dXJuIHRoZQoJbmFtZXMgaW4gdGhlIEdldENsYXNzSW5mbyBmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL3dpbnNvY2suaDogQ29uc3RhbnRpbmUgU2FwdW50emFraXMgPGNzYXB1bnR6QHN0YW5mb3JkLmVkdT4KCUZpeCB0byBMaW51eCBJUFggc28gY29tcGlsZXMgb24gbm9uLWxpbnV4IHBsYXRmb3Jtcy4KCgkqIG1pc2MvbWFpbi5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCU93biBYMTEgZXJyb3JoYW5kbGVyIHRvIGxvY2F0ZSBYMTEgZXJyb3JzLiBVc2VmdWwgb25seSB3aXRoIC1zeW5jLgoKU2F0IE5vdiAxNCAxODo1OTozMCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogaW5jbHVkZS9jb2xvci5oLCBpbmNsdWRlL2ltYWdlaGxwLmgsIGluY2x1ZGUvcGFsZXR0ZS5oLCBtZW1vcnkvZ2xvYmFsLmMsIG1pc2MvcmVnaXN0cnkuYywgd2luZG93cy9kZWZ3bmQuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgd2FybmluZ3MsIHNvbWUgb25seSB2aXNpYmxlIHdpdGggLVdzdHJpY3QtcHJvdG90eXBlcyBvciAtcGVkYW50aWMuCgoJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgaW5jbHVkZS9kaXNwbGF5LmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCBpZjE2MzIvZGlzcGxheS5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNb3ZlZCBYMTEgbW91c2UgY3Vyc29yIGhhbmRsaW5nIHRvIHRoZSBESVNQTEFZIGRyaXZlci4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIG1pc2MvY2FsbGJhY2suYywgbWlzY2VtdS9tYWluLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVNvbWUgZml4ZXMgdG8gV2luZSBzdGFydHVwL3Rlcm1pbmF0aW9uIHNlcXVlbmNlIHdpdGggbmF0aXZlIFVTRVIuCglEbyBub3QgY2FsbCBidWlsdC1pbiBVU0VSIHNpZ25hbCBoYW5kbGVyIHdoZW4gdXNpbmcgbmF0aXZlIFVTRVIuCgoJKiBkZWJ1Z2dlci9icmVhay5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvdGFzay5oOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IC1kZWJ1ZyBkaWRuJ3Qgd29yayBhbnltb3JlIGFmdGVyIHRoZSBsYXN0IHN0YXJ0dXAgc2VxdWVuY2UgcGF0Y2guCgoJKiBvbGUvY29tcG9iai5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgbGlzdCBpbnNlcnRpb24gYnVnIGluIENvTG9hZExpYnJhcnkoKS4KCgkqIGlmMTYzMi93cHJvY3Muc3BlYywgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludDJmLmMsIG1zZG9zL2ludDQxLmMsIG1zZG9zL3Z4ZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzdHVicyBmb3Igc2V2ZXJhbCBWeERzIC8gaW50ZXJydXB0cy4KCgkqIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIG1pc2MvY2FsbGJhY2suYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTaG91bGQgZ2V0IHdpbjE2ZHJ2IEFib3J0UHJvYyB3b3JraW5nLiBIb3BlZnVsbHkuCgoJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJTW92ZWQgR2V0S2V5Ym9hcmRMYXlvdXROYW1lMTYgdG8gd2luZG93cy9pbnB1dC5jLgoKCSogaW5jbHVkZS9pbWFnZWhscC5oLCBpbmNsdWRlL3dpbm50LmgsIGluY2x1ZGUvd2ludHlwZXMuaDoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJTW92ZWQgc29tZSBkZWNsYXJhdGlvbnMgZnJvbSBpbWFnZWhscC5oIHRvIGNvbW1vbiBpbmNsdWRlIGZpbGVzLgoKCSogcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi90aHJlYWQuYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglBZGRlZCBpbXBsZW1lbnRhdGlvbnMgZm9yIEludGVybG9ja2VkRXhjaGFuZ2VBZGQoKSBhbmQKCUludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlKCkuCgoJKiB3aW4zMi9jb25zb2xlLmMsIG9iamVjdHMvZGliLmMsIG9iamVjdHMvZW5obWV0YWZpbGUuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJRml4ZXMgYSBmZXcgb2YgdGhlIG1hbnkgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBtaXNjZW11L2luc3RyLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRW11bGF0ZSAibW92IGNyNCxlYXgiICh0b21icmFpZGVyIDMgZGVtbykuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCURvIG5vdCBlbnVtZXJhdGUgRDNEIGRldmljZXMgd2UgY2FuJ3QgaGFuZGxlIGFueXdheS4KCVJldHVybiBiaXRtYXNrcyBmb3IgaGkvdHJ1ZWNvbG9yIGRlcHRocyBpbiBFbnVtRGlzcGxheU1vZGVzLgoKCSogaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvc25vb3AuaCwgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9zbm9vcC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTcGVlZCB1cCByZWxheTMyLCBzbm9vcDE2IGFuZCBzbm9vcDMyIGluY2x1ZGUvZXhjbHVkZXMgYnkgZG9pbmcgdGhlbQoJanVzdCBvbmNlIGF0IGNyZWF0aW9uIHRpbWUuCgoJKiByZWxheTMyL29sZTMyLnNwZWMsIG9sZS9jb21wb2JqLmMsIG9sZS9vbGUyLmM6CglQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoJQWRkZWQgc3R1YnMgZm9yIENvUmV2b2tlQ2xhc3NPYmplY3QgYW5kIE9sZVNldENsaXBib2FyZC4KCgkqIHdpbmRvd3Mvd2luLmM6IFBlciDFbmdzdHL2bSA8cGFuZ0BtaW5kLm51PgoJRW51bVRhc2tXaW5kb3dzMTY6IEJhc2luZyB0aGUgc2VsZWN0aW9uIG9uIGEgd2luZG93J3MgdGFzayBpcyBub3Qgb25seQoJbW9yZSBzdHJhaWdodGZvcndhcmQgdGhhbiBjb21wYXJpbmcgbWVzc2FnZSBxdWV1ZXMsIGl0IGFsc28gd29ya3MKCWJldHRlciBmb3IgV2luMzIgYXBwbGljYXRpb25zLgoKCSogbWVtb3J5L2xvY2FsLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQ2hhbmdlZCBzb21lIG9mIHRoZSBtZXNzYWdlIGNsYXNzZXMuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxEYXZpZC5GYXVyZUBpbnNhLWx5b24uZnI+CglTcGVjaWFsIGNhc2UgaGFuZGxpbmcgb2YgOiBTaGlmdCArIGFycm93LCBzaGlmdCArIGhvbWUsIC4uLgoJWCByZXR1cm5zIGEgY2hhciBmb3IgaXQsIGJ1dCBXaW5kb3dzIGRvZXNuJ3QuIElnbm9yZSBYIGNoYXIuCglBbHNvIGFkZGVkIHNvbWUgZG9jdW1lbnRhdGlvbi4KCgkqIGluY2x1ZGUvd2luc29jay5oLCBtaXNjL3dpbnNvY2suYzoKCVN0ZXBoZW4gTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglCdWdmaXhlcyBmb3IgSVBYIGNvZGUgYW5kIHByZWxpbWluYXJ5IGdyb3VuZHdvcmsgZm9yIG90aGVyIGFkZHJlc3MKCWZhbWlseSBzdXBwb3J0LgoKCSogb2xlL2NvbXBvYmouYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CgkoQ29HZXRDbGFzc09iamVjdCkgb25lIG1pc3NpbmcgQ0FMTEJBQ0ssIGV4dHJlbWVseSBzaW1wbGlmaWVkIGNsc2lkCglsb29rdXAgKFJlZ2lzdHJ5IGlzIGNhc2UgaW5zZW5zaXRpdmUpLgoKCSogcmVsYXkzMi9udGRsbC5zcGVjLCB3aW4zMi9hZHZhcGkuYywgZGxscy9udGRsbC9ydGwuYywgcmVsYXkzMi9hZHZhcGkzMi5zcGVjOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTdHViczogU2V0U2VydmljZVN0YXR1cywgUmVnaXN0ZXJTZXJ2aWNlQ3RybEhhbmRsZXJBL1csCglTdGFydFNlcnZpY2VDdHJsRGlzcGF0Y2hlcjMyQS9XLCBSdGxTeXN0ZW1UaW1lVG9Mb2NhbFRpbWUsCglSdGxUaW1lVG9UaW1lRmllbGRzLgoKCSogaW5jbHVkZS93aW5kb3dzLmgsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgZm9yIEdldE51bWJlckZvcm1hdDMyVy4KCgkqIG1pc2MvY3J0ZGxsLmM6IERhdmlkIEEuIEN1dGhiZXJ0IDxkYWN1dEBlY2UuY211LmVkdT4KCWdldHMoKSBmaXhlcy4KCgkqIG9sZS9ubHMvcnVzLm5sczogQWxleGFuZGVyIFYuIEx1a3lhbm92IDxsYXZAbG9uZy55YXIucnU+CglGaXggU0NPVU5UUlksIFNOQVRJVkVDVFJZTkFNRSwgU0FCQlJFVkRBWU5BTUUzOyBjaGFuZ2Ugc29tZSBTTU9OVEhOQU1FKgoJdG8gYmUgaW4gbm9taW5hdGl2ZSBjYXNlLgoKCSogd2luZG93cy9xdWV1ZS5jOiBQZXIgxW5nc3Ry9m0gPHBhbmdAbWluZC5udT4KCUZpeGVkIFNldE1lc3NhZ2VRdWV1ZTMyIHRvIHJldHVybiBGQUxTRSwgbm90IFRSVUUsIHdoZW4gY2FsbGVkIHdpdGgKCWFuIGludmFsaWQgc2l6ZSBwYXJhbWV0ZXIuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgR2V0Q2FwcywgY2hhbmdlZCBQbGF5IGFuZCBTdG9wIGhhbmRsaW5nCglvZiBwb3NpdGlvbnMgaW5kZXhlcywgc3VwcHJlc3NlZCB3YXJuaW5ncy4KCgkqIG1lbW9yeS9sb2NhbC5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUNvcnJlY3RlZCBidWcgaW4gVFJBQ0UgZnVuY3Rpb24uCgoJKiBBVVRIT1JTLCBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL2F1dGhvcnMuaCwgaW5jbHVkZS9kZHJhdy5oOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDb3JyZWN0ZWQgYnVnIGluIERpcmVjdERyYXdTdXJmYWNlIGNyZWF0aW9uIGFuZCBoYW5kbGluZyBmb3IgZHJpdmVyCgliYXNlZCB1cG9uIFhsaWxiLgoKCSogd2luZG93cy9kaW5wdXQuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglXaW5lIGtleWJvYXJkIGFuZCBtb3VzZSBoYXZlIG5vdyB0aGVpciBvd24gVUlEcy4KCgkqIG9iamVjdHMvYnJ1c2guYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXggYWxsb2NhdGlvbiBzaXplIGluIENyZWF0ZURJQlBhdHRlcm5CcnVzaCouCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClN1biBOb3YgIDggMTY6NDQ6NDEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlhbG9nLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4ZWQga2V5c3Ryb2tlIGFjY2VsZXJhdG9ycyBpbiBkaWFsb2dzIHdoaWNoIGhhdmUgY29udHJvbHMgY29udGFpbmluZwoJb3RoZXIgY29udHJvbHMgYXMgY2hpbGQgd2luZG93cy4KCgkqIGluY2x1ZGUvd2lucHJvYy5oLCBtaXNjL2NvbW1kbGcuYywgd2luZG93cy9ob29rLmMsIHdpbmRvd3Mvd2lucHJvYy5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlczogTEJfL0NCXy9FTV8gbWVzc2FnZXMgZm9yIGdldHRpbmcvc2V0dGluZyB0ZXh0IGFuZCBhIGJ1ZyBpbgoJMTYtPjMyIGJpdCBjb252ZXJzaW9uLgoKCSogb2JqZWN0cy9kaWIuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglQcmV2ZW50IENyZWF0ZURJQlNlY3Rpb24gZnJvbSBzZWcgZmF1bHRpbmcgd2hlbiBvbmUgZGltZW5zaW9uIG9mCglzZWN0aW9uIGlzIDAuCgoJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS93aW5zb2NrLmgsIG1pc2Mvd2luc29jay5jOgoJU3RlcGhlbiBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KCVN1cHBvcnQgZm9yIElQWCBuZXR3b3JraW5nIHZpYSB3aW5zb2NrIHVuZGVyIExpbnV4LgoKCSogcmVsYXkzMi9nZGkzMi5zcGVjLCBncmFwaGljcy9wYWludGluZy5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYSBzdHViIGZvciBTdGFydERvY0EgYW5kIEVuZERvYy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgd2luMzIvY29uc29sZS5jOgoJSmFtZXMgU3V0aGVybGFuZCA8SmFtZXNTdXRoZXJsYW5kQGdteC5kZT4KCU1vcmUgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNldEN0cmxIYW5kbGVyKCkgZnVuY3Rpb24gKGFuZCB0aGUKCXJlbGF0ZWQgY29uc29sZSBmdW5jdGlvbnMpLgoKCSogb2JqZWN0cy9icnVzaC5jLCByZWxheTMyL2dkaTMyLnNwZWM6IEplZmYgSm9oYW5uIDxqam9oYW5uQGtpdmEubmV0PgoJQWRkZWQgQ3JlYXRlRElCUGF0dGVybkJydXNoUHQgKEdESTMyLjM1KSB3aXRoIG1pbm9yIGRvY3VtZW50YXRpb24KCXVwZGF0ZXMuCgoJKiBncmFwaGljcy92Z2EuYywgaW5jbHVkZS92Z2EuaCwgbXNkb3MvaW9wb3J0cy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglTaW11bGF0ZSB0aGUgVkdBIHZlcnRpY2FsIHJlZnJlc2guCgoJKiBncmFwaGljcy9kZHJhdy5jOiBMaW9uZWwgVWxtZXIgPHVsbWVyQGRpcmVjdHByb3ZpZGVyLm5ldD4KCUFkZGVkIHN1cHBvcnQgb2Ygc291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWN0YW5nbGVzIGluIEJsaXQgZnVuY3Rpb24uCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglBZGRlZCBkZXZpY2UgdHlwZSBjb25zdGFudHMgYW5kIHVzZWQgdGhlbSBpbiBkZXZpY2UgZW51bWVyYXRpb24KCWZ1bmN0aW9uLgoKCSogbWlzYy9yZWdpc3RyeS5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBUEkgZG9jdW1lbnRhdGlvbiBzYXlzIHRoYXQgUmVnRW51bUtleUV4LCBSZWdFbnVtVmFsdWUgYW5kCglSZWdRdWVyeUluZm9LZXkgdGFrZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlcnMgYXMgY2hhcmFjdGVycy4KCgkqIG9sZS9jb21wb2JqLmM6IEFkZGVkIG1pc3NpbmcgI2luY2x1ZGUgImNvbmZpZy5oIgoKCSogQVVUSE9SUywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvYXV0aG9ycy5oLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBvbGUvY29tcG9iai5jOgoJSnVzdGluIEJyYWRmb3JkIDxqdXN0aW5AdWthbnMuZWR1PgoJUmVwbGFjZXMgQ29DcmVhdGVHdWlkIHN0dWIgd2l0aCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBEQ0UncyBVVUlECglzcGVjaWZpY2F0aW9uLiBBbHNvIHJlbW92ZXMgc29tZSB1bm5lY2Vzc2FyeSBjb2RlIGZyb20gU3RyaW5nRnJvbUNMU0lELgoKCSogaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL3dpbmJhc2UuaCwgaW5jbHVkZS93aW50eXBlcy5oOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgYW4gZXh0ZXJuICJDIiBzYWZlZ3VhcmQuCgoJKiBpbmNsdWRlL2NvbW1kbGcuaCwgaW5jbHVkZS93aW5kb3dzLmgsIHdpbmRvd3MvaW5wdXQuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCS0gYWRkcyBHZXRFeGl0Q29kZVByb2Nlc3MKCS0gY29ycmVjdHMgdGhlIHJldHVybi10eXBlIG9mIEdldEtleVN0YXRlCgktIGNvcnJlY3RzIHRoZSB3aW5lbGliIGRlZmluaXRpb24gb2YgSXNEaWFsb2dNZXNzYWdlCgktIGFkZHMgd2luZWxpYiBkZWZpbml0aW9ucyBmb3IgUHJpbnREbGcKCgkqIG9iamVjdHMvY2xpcHBpbmcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUV4dFNlbGVjdENsaXBSZ24gZml4OiBSR05fRElGRiBkaWQgbm90IHdvcmsuCgoJKiBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL21lc3NhZ2UuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBuZXcgaW5wdXQgZXZlbnQgaGFuZGxpbmcuCgoJKiBpZjE2MzIvdGh1bmsuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS9pbnB1dC5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9pbnB1dC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglVU0VSLXNpZGUgcGFydCBvZiBpbnB1dCBldmVudCBoYW5kbGluZzogY29udGFpbnMgaW1wbGVtZW50YXRpb24gb2YKCWtleWJkX2V2ZW50IGFuZCBtb3VzZV9ldmVudCwgYW5kIFVTRVItcmVsYXRlZCBjb2RlIHJlbW92ZWQgZnJvbQoJd2luZG93cy9ldmVudC5jIGFuZCB3aW5kb3dzL2tleWJvYXJkLmMuCgoJKiB3aW5kb3dzL2Rpc3BsYXkuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJU3R1YnMgZm9yIERJU1BMQVkuRFJWIHJlbW92ZWQgZnJvbSBrZXlib2FyZC5jLgoKCSogaWYxNjMyL21vdXNlLnNwZWMsIGluY2x1ZGUvbW91c2UuaCwgd2luZG93cy9tb3VzZS5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBNT1VTRS5EUlYgKGNvbnRhaW5zIHNvbWUgY29kZSB0YWtlbiBmcm9tCgl3aW5kb3dzL2V2ZW50LmMpLgoKCSogaWYxNjMyL2tleWJvYXJkLnNwZWMsIGluY2x1ZGUva2V5Ym9hcmQuaCwgd2luZG93cy9rZXlib2FyZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglJbXBsZW1lbnRhdGlvbiBvZiBLRVlCT0FSRC5EUlYgKGNvZGUgbW9zdGx5IHRha2VuIGZyb20gcHJldmlvdXMKCXdpbmRvd3Mva2V5Ym9hcmQuYykuCgoJKiBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjZW11L21haW4uYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiByZWFsbHkgKmRvKiBzd2l0Y2ggdG8gdGhlIGluaXRpYWwgdGFzaydzIHN0YWNrLgoJQ2FsbExhcmdlU3RhY2sgbWVjaGFuaXNtIHJlLWVuYWJsZWQuCgoJKiBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmg6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJTmV3IEZpbGVzLiBBZGRlZCAnZGF0ZSBhbmQgdGltZSBwaWNrZXInIGFuZCAnbW9udGggY2FsZW5kYXInIGNvbnRyb2wKCWR1bW1pZXMuIFRoZXkgYXJlIHVzZWQgYnkgT3V0bG9vayBFeHByZXNzLgoKCSogb2xlL29sZTIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHN0dWIgZm9yIENyZWF0ZUJpbmRDdHgoKSBhbmQgYWRkZWQgbWlzc2luZyBDb0dldENsYXNzT2JqZWN0KCkKCXRvICouc3BlYyBmaWxlLiBNYWtlcyBJbnRlcm5ldCBFeHBsb3JlciA0LjAxIGhhcHB5IDstKQoKCSogZGxscy9jb21jdGwzMi9wYWdlci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJTGl0dGxlIGltcHJvdmVtZW50LgoKCSogZGxscy9jb21jdGwzMi9saXN0dmlldy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgcHJlbGltaW5hcnkgaGl0IHRlc3RpbmcuIE1ha2VzIHJlZ2VkaXQuZXhlIGhhcHB5IDstKQoKCSogZG9jdW1lbnRhdGlvbi9jb21tb25fY29udHJvbHMsIGRsbHMvY29tY3RsMzIvaW1hZ2VsaXN0LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgZG9jdW1lbnRhdGlvbiBhbmQgZml4ZWQgdHlwb3MuCgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmMsIHJlbGF5MzIvY29tY3RsMzIuc3BlYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglBZGRlZCBEcmF3U3RhdHVzVGV4dDMyQVcoKSBhbmQgQ3JlYXRlU3RhdHVzV2luZG93MzJBVygpLgoKCSogZGxscy9jb21jdGwzMi9yZWJhci5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJSW1wcm92ZWQgZGlzcGxheSBhbmQgbGF5b3V0IGNvZGUuCgoJKiBkbGxzL2NvbWN0bDMyL01ha2VmaWxlLmluLCBkbGxzL2NvbWN0bDMyL2RhdGV0aW1lLmMsIGRsbHMvY29tY3RsMzIvbW9udGhjYWwuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RhdGV0aW1lLmgsIGluY2x1ZGUvbW9udGhjYWwuaDoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglOZXcgRmlsZXMuIEFkZGVkICdkYXRlIGFuZCB0aW1lIHBpY2tlcicgYW5kICdtb250aCBjYWxlbmRhcicgY29udHJvbAoJZHVtbWllcy4gVGhleSBhcmUgdXNlZCBieSBPdXRsb29rIEV4cHJlc3MuCgpTYXQgTm92ICA3IDEyOjU2OjMyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvYmplY3RzL2VuaG1ldGFmaWxlLmMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgaW5jbHVkZS93aW5kb3dzLmg6CglDaGFybGVzIFN1cHJpbiA8Y3N1cHJpbkBseW54LmRhYy5uZXUuZWR1PgoJQWRkZWQgc3R1YnMgZm9yIFNldFdpbk1ldGFGaWxlQml0cyBhbmQgR2V0RW5oTWV0YUZpbGVQYWxldHRlRW50cmllcy4KCgkqIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgoJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglTdG9wIFgxMURSVl9Sb3VuZFJlY3QgY2FsbGluZyBYRHJhd0FyYyB3aXRoIC12ZSB3aWR0aC9oZWlnaHQgcGFyYW1zCgl3aGljaCBpdCBkaWQgaWYgZWl0aGVyIGVsbGlwc2UgZGltZW5zaW9uIHdhcyB6ZXJvLgoKCSogZ3JhcGhpY3MvcGFpbnRpbmcuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglPcHRpbWl6ZSBSb3VuZFJlY3QzMiB0byBjYWxsIFJlY3RhbmdsZTMyIGlmIGVpdGhlciBlbGxpcHNlIGRpbWVuc2lvbgoJaXMgemVyby4KCgkqIHJlbGF5MzIvbXByLnNwZWMsIG1pc2MvbmV0d29yay5jOgoJQW5kcmVhcyBNb2hyIDxtb2hyQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWRkZWQgc3R1YiBXTmV0RW51bUNhY2hlZFBhc3N3b3Jkcy4KCgkqIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI1LmM6CglBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglNYWRlIHRoaXMgZmlsZSBET1NNT0QgZnJpZW5kbHkuCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jLCBsb2FkZXIvcGVfaW1hZ2UuYzoKCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVVuaWZpZWQgIk5vIGltcGxlbWVudGF0aW9uIGZvci4uLiIgd2FybmluZ3MuCgoJKiB3aW4zMi9kZXZpY2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+Cgltb25vZGViZy52eGQgdXNlZCBieSBzb21lIE9yaWdpbiBwcm9ncmFtcyBpbXBsZW1lbnRlZC4KCgkqIG9iamVjdHMvYml0bWFwLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglGYWlsIGlmIGxlc3MgdGhlbiBvbmUgZW50aXJlIGxpbmUgcmVxdWVzdGVkIGluIEdldEJpdG1hcEJpdHMzMi4KCgkqIHdpbmRvd3Mvd2lucHJvYy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJQWRkZWQgV01fR0VURExHQ09ERSBoYW5kbGluZyBpbiAoVW4pTWFwTXNnMzJBdG8xNi4KCgkqIGlmMTYzMi9jb21wb2JqLnNwZWMsIGluY2x1ZGUvb2xlLmgsIG9sZS9jb21wb2JqLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzoKCUpvaG4gUmljaGFyZHNvbiA8anJpY2hhcmRAemVhbGFuZC5tdi5jb20+CglJbXBsZW1lbnRhdGlvbiBvZiBDb0xvYWRMaWJyYXJ5LCBDb0ZyZWVBbGxMaWJyYXJpZXMsCglDb0ZyZWVVbnVzZWRMaWJyYXJpZXMsIENvRnJlZUxpYnJhcnkuCglGaXhlZCBtaXNzcGVsbGluZyBvZiBDb1VuaW5pdGlhbGl6ZS4KCgkqIHByb2dyYW1zL2Nsb2NrL0NoYW5nZUxvZywgcHJvZ3JhbXMvY2xvY2svbWFpbi5jOgoJUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KCUZpeGVzIGZvciBvdGhlciBsYW5ndWFnZXMuCgpGcmkgTm92ICA2IDE3OjM2OjEzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBtaXNjL3JlZ2lzdHJ5LmM6IEpvaG4gUmljaGFyZHNvbiA8anJpY2hhcmRAemVhbGFuZC5tdi5jb20+CglGaXggd2lkZSBjaGFyYWN0ZXIgZnVuY3Rpb25zIHRvIHJldHVybiBjaGFyYWN0ZXIgY291bnQgaW4gY2hhcmFjdGVyCglxdWFudGl0aWVzIG5vdCBieXRlIHF1YW50aXRpZXMuICBNYWtlIFJlZ1F1ZXJ5SW5mb0tleSBhbmQKCVJlZ1F1ZXJ5SW5mb0tleSBiZWhhdmUgY29ycmVjdGx5IGluIHdpbjk1IG1vZGUuCgoJKiBpbmNsdWRlL2RpbnB1dC5oLCB3aW5kb3dzL2RpbnB1dC5jOgoJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CglDaGFuZ2VkIG1vdXNlIGJ1dHRvbiBtYXBwaW5nIGFuZCBjaGVjayBzaXplIG9mIHJldHVybiBidWZmZXIuCgoJKiBvYmplY3RzL2NsaXBwaW5nLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglFeHRTZWxlY3RDbGlwUmduKCkgd2l0aCBSR05fQ09QWSBjb3BpZXMgdGhlIHdyb25nIHJlZ2lvbi4KCgkqIGZpbGVzL2ZpbGUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgYW4gZXJyb3IgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIEZJTEVfU2hhcmVEZW55LgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jLCBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9kZWJ1Z3Rvb2xzLmgsIGluY2x1ZGUvc2lnX2NvbnRleHQuaCwgbXVsdGltZWRpYS9tbXN5c3RlbS5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTb2xhcmlzIHJlZGVmaW5lcyBFUlIgYW5kIENTLCBmaXhlZCBvY2N1cmFuY2VzLgoJU29sYXJpcyBoYXMgVFJBUE5PIGluIGl0cyBzaWdjb250ZXh0LCBhZGRlZCB0byBzaWdfY29udGV4dC5oCgoJKiBpbmNsdWRlL21tc3lzdGVtLmgsIG11bHRpbWVkaWEvbW1pby5jLCByZWxheTMyL3dpbm1tLnNwZWMsIGlmMTYzMi9tbXN5c3RlbS5zcGVjOgoJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CglNYWRlIG1taW9TZXRCdWZmZXIgY2FsbGFibGUgZnJvbSAxNiBhbmQgMzIgYml0IGNvZGUuCgoJKiBjb250cm9scy9tZW51LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgd3JvbmcgYXJnIHR5cGUuCgoJKiBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2dkaW9iai5jLCBncmFwaGljcy94MTFkcnYvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgaW5jbHVkZS94MTFkcnYuaDoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJTW92ZWQgWDExIERJQiBzdHVmZiB0byB4MTFkcnYuCgoJKiB3aW4zMi9jb2RlX3BhZ2UuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRoZSBBUEkgZm9yIFdpZGVDaGFyVG9NdWx0aUJ5dGUgc2F5cyB0aGF0IHRoZSBzcmMtc3RyaW5nIGhhcyBvbmx5IHRvIGJlCgl0cmVhdGVkIGFzIE5VTEwtdGVybWluYXRlZCBpZiBzcmNsZW4gaXMgLTEuCgoJKiBpbmNsdWRlL3dpbi5oLCB3aW5kb3dzL2V2ZW50LmMsIHdpbmRvd3Mvd2luLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1hZGUgc3VyZSBDb25maWd1cmVOb3RpZnkgaXMgcHJvY2Vzc2VkIGJlZm9yZSBFeHBvc2UsIGRlZmVycmluZyB0aGUKCUV4cG9zZSBldmVudCBpZiBuZWNlc3NhcnksIHRodXMgd29ya2luZyBhcm91bmQgYSBXTSBmbGF3IHdpdGggdmlydHVhbAoJZGVza3RvcCBzY3JvbGxpbmcgaW4gLW1hbmFnZWQgbW9kZS4KCgkqIHJlc291cmNlcy9zeXNyZXNfRnIucmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEBsZW1lbC5mcj4KCVRyYW5zbGF0ZWQgaW4gRnJlbmNoIChub3Qgc28gZ29vZCBhbnlob3cpIG1lc3NhZ2UgZm9yIHRoZSBtYXJrIG9uCglzeXN0ZW0gbWVudS4KCgkqIG1pc2MvbWFpbi5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNoYW5nZWQgdGhlIGRlZmF1bHQgZnJvbSAwIHRvIDB4NDA5IChlbmctdXMpLgoKCSogd2luZG93cy9tZGkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglUd28gbWlzc2luZyBXSU5BUElzLgoKCSogaW5jbHVkZS9pbnRlcmZhY2VzLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgb25lIHdyb25nIHBhcmFtZXRlci4KCgkqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUZpeGVkIC0tZGlzYWJsZS1saWIuCgpUaHUgTm92ICA1IDEwOjMzOjE4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQ29uc3RhbnRzIGZvciBjb250cm9scyBpbiBjb21tb24gZGlhbG9ncy4KCldlZCBOb3YgIDQgMTg6MDg6MzMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY3J0ZGxsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJRml4ZWQgc29tZSBjb21waWxlciB3YXJuaW5ncy4KClN1biBOb3YgIDEgMTk6Mjc6MjQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvbWVzc2FnZS5jLCB3aW5kb3dzL25vbmNsaWVudC5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvd2luaGVscC5jLCB3aW5kb3dzL3dpbnBvcy5jLCBtaXNjL2NvbW1kbGcuYywgbWlzYy9zaGVsbC5jLCBtaXNjL3dpbnNvY2suYywgbWlzY2VtdS9pbnN0ci5jLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvam95c3RpY2suYywgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9jbGlwcGluZy5jLCBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL2RpYi5jLCB0b29scy93cmMvZHVtcHJlcy5jLCB0b29scy93cmMvcGFyc2VyLmwsIHdpbmRvd3MvY2xpcGJvYXJkLmMsIHdpbmRvd3MvbWRpLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmMsIG1lbW9yeS9oZWFwLmM6CglKZXNwZXIgU2tvdiA8anNrb3ZAY3lnbnVzLmNvLnVrPgoJZWdjcyAnYW1iaWd1b3VzIGVsc2UnIHdhcm5pbmdzIGZpeGVzLgoKCSogaW5jbHVkZS90b29saGVscC5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJR2V0IHJpZCBvZiB0aGUgcmVkZWZpbml0aW9uIG9mIE1BWF9QQVRIIGFuZCBtb3ZlIFBST0NFU1NFTlRSWTMyCglkZWZpbml0aW9uIHRvIHRvb2xoZWxwLmguCgoJKiB3aW5kb3dzL3dpbi5jLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGxpYnJhcnkvd2luZXN0dWIuYywgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9yZXNvdXJjZS5jLCBtaXNjL2NhbGxiYWNrLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVJ1biBXaW5lbGliIGFwcGxpY2F0aW9ucyBhcyAzMi1iaXQgcHJvY2Vzc2VzIGluIHRoZSBpbml0aWFsIHRhc2suCglTaW1wbGlmaWVkL3JlbW92ZWQgc2V2ZXJhbCBzcGVjaWFsICdpZiAoX193aW5lbGliKScgY2FzZXMgaW4KCVdpbmUgbWFpbiBjb2RlIG9ic29sZXRlZCBieSB0aGF0IGNoYW5nZS4KCgkqIHdpbmRvd3MvZXZlbnQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglDYWxsIG1vdXNlIGRyaXZlciBjYWxsYmFjayBhbHNvIGlmIHdpbmRvd3MgYXJlIG5vdCByZWdpc3RlcmVkIHdpdGggWAoJKGlmIHVzaW5nIG5hdGl2ZSBVU0VSLkVYRSkuCgoJKiBtZW1vcnkvYXRvbS5jLCBpbmNsdWRlL2F0b20uaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRhcHRlZCB0byBzZXBhcmF0aW9uIGJldHdlZW4gS0VSTkVMIGFuZCBVU0VSLgoKCSogaWYxNjMyL2J1aWx0aW4uYywgaW5jbHVkZS9tYWluLmgsIGxvYWRlci9tYWluLmMsIGxvYWRlci90YXNrLmMsIG1pc2NlbXUvbWFpbi5jLCByZWxheTMyL2dkaTMyLnNwZWMsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgbmV3IFdpbmUgc3RhcnR1cCBzZXF1ZW5jZSwgc2VwYXJhdGluZyBzdGFydHVwIGludG8KCUtFUk5FTC9VU0VSL0dESSByZWxhdGVkIHBhcnRzLCBhbGxvd2luZyBuYXRpdmUgcmVwbGFjZW1lbnQuCglJbXBsZW1lbnRlZCBpbml0aWFsICdrZXJuZWwnIHRhc2suCgoJKiBpbmNsdWRlL29sZS5oLCBpbmNsdWRlL3dpbmVycm9yLmgsIG9sZS9jb21wb2JqLmM6CglKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuY29tPgoJSW1wbGVtZW50YXRpb24gb2YgSW5wcm9jU2VydmVyMzIgQ29HZXRDbGFzc09iamVjdC4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL29lbWJpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYml0bWFwLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCU1vcmUgYml0bWFwIGZpeGVzLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEZpeGVkIGNyYXNoZXMgd2l0aCBXTV9HRVRETEdDT0RFIHRyYW5zbGF0aW9uLgoKCSogcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvd2ludmVyL01ha2VmaWxlLmluLCB3aW5kb3dzL3dpbi5jLCB3aW5kb3dzL3gxMWRydi8uY3ZzaWdub3JlLCB3aW5kb3dzL3gxMWRydi9NYWtlZmlsZS5pbiwgd2luZG93cy94MTFkcnYvaW5pdC5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL3dpbi5oLCBsaWJ0ZXN0L01ha2VmaWxlLmluLCBwcm9ncmFtcy9jbG9jay9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY29udHJvbC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvbm90ZXBhZC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcHJvZ21hbi9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvcmVndGVzdC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvdmlldy9NYWtlZmlsZS5pbiwgTWFrZS5ydWxlcy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL2FjY29uZmlnLmg6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgbW92aW5nIHNvbWUgWDExIHdpbmRvdyBtYW5hZ2VtZW50IGNvZGUgdG8gd2luZG93cy94MTFkcnYuCgoJKiBpZjE2MzIvdXNlci5zcGVjLCB3aW5kb3dzL2RpYWxvZy5jLCB3aW5kb3dzL3dpbnByb2MuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgSXNEaWFsb2dNZXNzYWdlMTYuCgoJKiBNYWtlZmlsZS5pbjogRG91Z2xhcyBSaWRnd2F5IDxyaWRnd2F5QHdpbmVocS5jb20+CglUZWxsIHBlb3BsZSB0byBpZ25vcmUgdGhlICdnZXRzJyB3YXJuaW5nLiBTb21lIHdpbGwgbGlzdGVuLgoKCSogZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCB3aW5kb3dzL2dyYXBoaWNzLmM6CglIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUEgY291cGxlIG9mIHNtYWxsIGZpeGVzIHRvIG15IGJpdG1hcCBwYXRjaC4KCgkqIHJlc291cmNlcy9UT0RPLCByZXNvdXJjZXMvc3lzcmVzX0RlLnJjLCByZXNvdXJjZXMvc3lzcmVzX0VuLnJjLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJQWxsb3cgdGhlIHVzZXIgdG8gcHV0IGEgbWFyayBpbiB0aGUgZGVidWcgbG9nIGJ5IGFkZGluZyBhIGl0ZW0gaW4gdGhlCglTWVNNRU5VLiBUaGUgbWVzc2FnZXMgbmVlZHMgaW1wbGVtZW50YXRpb24gaW4gYWxsIG90aGVyIGxhbmd1YWdlcyB0aGFuCglFbmdsaXNoIGFuZCBHZXJtYW4uCgoJKiBmaWxlcy9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCUdpdmUgdGVtcGZpbGUgYSBkaWZmZXJlbnQgbmFtZSBldmVuIGlmIHRoZXkgYXJlIGNyZWF0ZWQgaW4gdGhlIHNhbWUKCXNlY29uZC4gUmVtb3ZlZCBzb21lIGZpeG1lcyBmcm9tIHRoZSBTaGFyZURlbnkgc3R1ZmYuCgoJKiBpbmNsdWRlL21kaS5oLCBpbmNsdWRlL3dpbmRvd3MuaCwgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy9tZGkuYywgd2luZG93cy93aW4uYzoKCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDcmVhdGVXaW5kb3dFeDMyW0FXXSBub3cgY3JlYXRlcyBhbiBNREkgY2hpbHMgd2hlbiB0aGUgV01fRVhfTURJQ0hJTEQKCWV4dGVuZGVkIHN0eWxlIGlzIHNwZWNpZmllZC4gQWxzbyBpbXBsZW1lbnRlZCBDcmVhdGVNRElXaW5kb3czMkEoKQoJY2FsbCAtIHNpbmdsZSB0aHJlYWQgb25seSAtLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVycmVkIGluIHRoZSBiaXQgbWFjcm9zIGluIHRyZWV2aWV3LmMuIFNoaWZ0Y291bnRzIHdlcmUgd3JvbmcuCgoJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiBpbXBvcnRzIHdpdGggQ2hhcmFjdGVyaXN0aWNzIDAgZmFpbCBmb3IgQm9ybGFuZAoJcHJvZ3JhbXMgKHdoaWNoIHNlZW0gdG8gaGF2ZSBhbHdheXMgY2hhcmFjdGVyaXN0aWNzIDApLiBDaGFuZ2VkIHRvIGFsZ29yaXRobQoJdG8gc29tZXRoaW5nIGEgYml0IG1vcmUgaW50ZWxsaWdlbnQuCgoJKiBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJQWRkZWQgQ29GcmVlTGlicmFyeSBzdHViLgoKCSogUkVBRE1FOiBVcGRhdGVkIEZBUSBsb2NhdGlvbi4KCgkqIGdyYXBoaWNzL2VzY2FwZS5jOiBIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KCUltcGxlbWVudCBTRUdQVFIgY29udmVyc2lvbiBmb3IgU1RBUlRET0MgaW4gRXNjYXBlMzIoKS4KCgkqIG9iamVjdHMvZGMuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXg6IFNldERDU3RhdGUgZGlkIG5vdCByZXNldCBjbGlwcGluZyByZWdpb24gdG8gZW1wdHkuCgoJKiB3aW4zMi9pbml0LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRml4ZWQgc21hbGwgb2ZmIGJ5IG9uZSBlcnJvciBpbiBHZXRDb21wdXRlck5hbWUzMlcsIGFsd2F5cyBraWxsZWQgdGhlCglsYXN0IGNoYXJhY3RlciBvZiBhIGhvc3RuYW1lLgoKCSogb2JqZWN0cy9kaWIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEb24ndCBIZWFwRnJlZSgpIGNvbG9ybWFwIGlmIHdlIGRpZG4ndCBhbGxvY2F0ZSBvbmUuCgoJKiB3aW4zMi9hZHZhcGkuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvdXNlci5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS93aW50eXBlcy5oLCBtaXNjL2NydGRsbC5jLCBtaXNjL3ByaW50ZHJ2LmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYywgcmVsYXkzMi9jcnRkbGwuc3BlYywgcmVsYXkzMi9tcHIuc3BlYywgcmVsYXkzMi9zaGVsbDMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHJlbGF5MzIvd2luc3Bvb2wuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgc3R1YnMgZm9yIHVzZXIzMixhZHZhcGkzMiBmdW5jdGlvbnMuCgoJKiBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRsbHMvTWFrZWZpbGUuaW4sIGRsbHMvbnRkbGwvKiwgaW5jbHVkZS9udGRsbC5oLCBtaXNjL0F0dGljL250ZGxsLmMsIG1pc2MvTWFrZWZpbGUuaW4sIHJlbGF5MzIvbnRkbGwuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTW9yZSBOdCogYW5kIFJ0bCogZnVuY3Rpb24gc3R1YnMsIG1vdmVkIG50ZGxsLmMgdG8gZGxscy9udGRsbC8uCgoJKiBtZW1vcnkvbG9jYWwuYywgbWVtb3J5L2hlYXAuYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQ2hhbmdlZCBtYW55IFdBUk4oKXMgcmVsYXRlZCB0byBpbnRlcm5hbCBXaW5lIG1lbW9yeSBmYWlsdXJlcyB0bwoJRVJSKClzLgoKCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBzY2hlZHVsZXIvcHJvY2Vzcy5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgLnNwZWMgZW50cnkgZm9yIEtFUk5FTC5SZWdpc3RlclNlcnZpY2VQcm9jZXNzLgoKCSogaWYxNjMyL2Rpc3BsYXkuc3BlYywgd2luZG93cy9rZXlib2FyZC5jOgoJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgoJQWRkZWQgc3R1YiBmb3IgQ2hlY2tDdXJzb3IoKS4KCgkqIGluY2x1ZGUvZGlhbG9nLmgsIHdpbmRvd3MvZGVmZGxnLmM6IFRpbSBOZXdzb21lIDxudWlzYW5jZUBjbXUuZWR1PgoJRml4IGZvciBub24tbW9kYWwgZGlhbG9nIGNsb3NpbmcuCgoJKiB3aW5kb3dzL2RpbnB1dC5jOiBEYXZpZCBGYXVyZSAgPGZhdXJlQGtkZS5vcmc+CglSZXdyb3RlIHRoZSB0d28gcm91dGluZXMgdXNpbmcgdGhlIHZrZXktPnNjYW5jb2RlIGFycmF5IHRvIHVzZQoJa2V5YzJ2a2V5IGZvciBlYWNoIGtleWNvZGUsIGluc3RlYWQuIE5vdCB0ZXN0ZWQuCglSZW1vdmVkIHVudXNlZCBJRGlyZWN0SW5wdXREZXZpY2VBX0dldERldmljZVN0YXRlLgoJRml4ZWQgd2FybmluZyBpbiBUUkFDRSgpIGNhbGwuCgoJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxmYXVyZUBrZGUub3JnPgoJRGVsZXRlZCB0aGUgdmtleS0+c2FuY29kZSBhcnJheSwgYmVjYXVzZSBRV0VSVFkgc3BlY2lmaWMuCglCYWNrIHRvIHVzaW5nIHRoZSBYIGtleWNvZGUgaW5zdGVhZCBhcyB0aGUgc2NhbmNvZGUuIFRlc3RlZC4KCgkqIGdyYXBoaWNzL3BzZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJUHJpbnQgYSBtZXNzYWdlIGlmIHRoZSBQb3N0U2NyaXB0IGRyaXZlciBjYW4ndCBmaW5kIGEgUFBEIGZpbGUuCgoJKiBtc2Rvcy9pbnQxMC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIFZHQSAyNTYtY29sb3IgbW9kZSAweDEzIHVzaW5nIHRoZSBEaXNwbGF5RGliIFZHQSBlbXVsYXRpb24uCgkoRE9TIGFwcHMvZ2FtZXMgdXNpbmcgdGhpcyBtb2RlIGNvbWVzIHVwIG5vdywgYWx0aG91Z2ggeW91IGNhbid0CglyZWFsbHkgZG8gYW55dGhpbmcgd2l0aCB0aGVtICh5ZXQ/KS4pCgoJKiBtc2Rvcy9kcG1pLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJVXNlIG1hY3JvIFY4Nl9GTEFHLgoKCSogbXNkb3MvZG9zbWVtLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJU2V0IGRlZmF1bHQgdmlkZW8gbW9kZSB0byAzICg4MHgyNSBjb2xvcikuCgoJKiBsb2FkZXIvZG9zL2Rvc21vZC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUlnbm9yZXMgYSBjb3VwbGUgb2Ygc2lnbmFscy4KCgkqIGdyYXBoaWNzL01ha2VmaWxlLmluLCBncmFwaGljcy9kaXNwZGliLmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL3ZnYS5oLCBtc2Rvcy9pb3BvcnRzLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIFZHQS1lbXVsYXRpbmcgRGlyZWN0WCBjb2RlIGZyb20gZGlzcGRpYi5jIHRvIGEgc2VwYXJhdGUKCWZpbGUuIE1hZGUgaXQgdXNlIGEgc3lzdGVtIHRpbWVyIGFuZCB0cmFwIEkvTyBhY2Nlc3NlcyB0byB0aGUgVkdBCglEQUMgcmVnaXN0ZXJzIHRvIGFjY29tbW9kYXRlIERpc3BsYXlEaWItdXNpbmcgcHJvZ3JhbXMgdGhhdCB0cnkgdG8KCWFjY2VzcyB0aGUgVkdBIGhhcmR3YXJlIGRpcmVjdGx5LgoKCSogbWlzY2VtdS9pbnN0ci5jLCBpZjE2MzIvc2lnbmFsLmMsIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbWlzYy9zeXN0ZW0uYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW5kaXJlY3Rpb24gZm9yIElOU1RSX0VtdWxhdGVJbnN0cnVjdGlvbiBmb3IgdXNlIGJ5IERPUyBjb2RlLgoJQWRkZWQgc3VwcG9ydCBmb3IgYSA1NUh6IHN5c3RlbSB0aW1lciwgbGV0dGluZyBET1MgYXBwcyBjYWxpYnJhdGUKCXRoZWlyIGRlbGF5IGxvb3BzIGFuZCBzdWNoLiBDYWxscyBJTlNUUl9FbXVsYXRlSW5zdHJ1Y3Rpb24gZm9yCglpbnN0cnVjdGlvbiBlbXVsYXRpb24gKHByaW5jaXBhbGx5IEkvTyBwb3J0IGFjY2VzcykuIEFkZGVkIG1hY3JvCglWODZfRkxBRy4KClNhdCBPY3QgMzEgMTI6MjA6NTYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvZGlucHV0LmMsIG11bHRpbWVkaWEvZHNvdW5kLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIGZpeGVzLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglSZW1vdmVkIHRoZSBGSVhNRSgpIGFuZCBtb3ZlZCBTZXRMYXN0RXJyb3IoMCkgdG8gdGhlIGVuZCAoc28gdGhhdAoJR2V0VGVtcEZpbGVOYW1lIGV0LmFsLiBjYW4ndCBvdmVyd3JpdGUgaXQpLgoKCSogbWlzYy9BdHRpYy9udGRsbC5jLCByZWxheTMyL250ZGxsLnNwZWMsIHJlbGF5MzIvcmVsYXkzODYuYywgcmVsYXkzMi91c2VyMzIuc3BlYywgd2luZG93cy91c2VyLmM6CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUxvdHMgb2Ygc3R1YnMgdG8gZ2V0IHdpbmxvZ29uLmV4ZSBmcm9tIG50My41MSBhbmQgb3RoZXIgTlQzLjUxIGFwcGxldHMKCWEgYml0IGZ1cnRoZXIuCgoJKiB3aW5kb3dzL21kaS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJTURJY2hpbGQgY3JlYXRlZCB3aGVuIHRoZSBNREkgY2xpZW50IGhhcyB0aGUgTURJU19BTExDSElMRFNUWUxFUwoJc3R5bGUsIHNob3VsZCBub3QgYmUgc2hvd24gYXQgY3JlYXRpb24gbm9yIGFjdGl2YXRlZCB1bmxlc3MgdGhlCglXU19WSVNJQkxFIGZsYWcgaXMgc2V0LgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IFN0ZXBoZW4gTGFuZ2FzZWsgPHZvcmxvbkBkb2Rkcy5uZXQ+CglCdWdmaXggZm9yIGZpeHVwX2ltcG9ydHM6IEVuYWJsZSBjaGVja2luZyBmb3IgdGVybWluYXRpbmcgaW1wb3J0CglzdHJ1Y3Qgd2l0aCBDaGFyYWN0ZXJpc3RpY3MgYml0ZmllbGQgc2V0IHRvIDAuCgoJKiB3aW5kb3dzL3dpbi5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRGVsYXkgbGlua2luZyBuZXdseSBjcmVhdGVkIHdpbmRvdyBpbiBsaW5rZWQgbGlzdCB1bnRpbCBhZnRlciB0aGUKCVdNX05DQ1JFQVRFIG1lc3NhZ2UuCgoJKiBmaWxlcy9maWxlLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglTbWFsbCBidWcgaW4gRklMRV9JblVzZSBkb2VzIG5vdCBkbyBhIHJlbGVhc2Ugb24gZXZlcnkgYWNxdWlyZWQgZmlsZQoJcG9pbnRlci4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCWxwc3pOYW1lIG9mIE5VTEwgaXMgaGFuZGxlZCAocmVtb3ZlcyBzb21lIHdhcm5pbmdzKS4KCgkqIHRvb2xzL3Rlc3RydW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTm93IGFsbG93cyBzcGVjaWZpY2F0aW9uIG9mIGEgc3RhcnQgZGlyZWN0b3J5IG9uIHRoZSBjbWRsaW5lLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdldHMgcmlkIG9mIHRoZSBhcmNoLWRlcGVuZGVudCBiaXQgb3BlcmF0aW9ucyAodGVzdGVkIG9uIExpbnV4IGFuZAoJU29sYXJpcy94ODYpLgoKV2VkIE9jdCAyOCAxNDo1ODowMiAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy93aW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglBIGRlc3QgYnVmZmVyIHdhcyBwcmludGVkIG91dCBhcyBzdHJpbmcuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUNvcnJlY3RlZCAyIHdyb25nIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCVBhdHJpY2sgU3BpbmxlciA8c3Bpbmxlci5wYXRyaWNrQG1heW8uZWR1PgoJQWRkZWQgc3R1YnMgZm9yIFByb2Nlc3MzMkZpcnN0L1Byb2Nlc3MzMk5leHQuCgoJKiBpbmNsdWRlL3gxMWRydi5oLCBvYmplY3RzL2NsaXBwaW5nLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9kY3ZhbHVlcy5jLCBvYmplY3RzL3BhbGV0dGUuYywgb2JqZWN0cy9yZWdpb24uYywgZ3JhcGhpY3MvZXNjYXBlLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3BhdGguYywgZ3JhcGhpY3MvcHNkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3Mvd2luMTZkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGluY2x1ZGUvZGVidWdnZXIuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS9tZXRhZmlsZWRydi5oLCBpbmNsdWRlL3BzZHJ2LmgsIGluY2x1ZGUvd2luMTZkcnYuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgZGVidWdnZXIvZGJnLnksIGRlYnVnZ2VyL21zYy5jLCBkZWJ1Z2dlci9zdGFicy5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJRnJhbudvaXMgR291Z2V0IDxnb3VnZXRAbWV0YWludGVncmF0aW9uLm5ldD4KCUZpeGVkIHNvbWUgTFBQT0lOVC9MUFNJWkUgbWlzbWF0Y2hlcyBhbmQgc29tZSBtaXNzaW5nICJjb25zdCIgaW4gdGhlCgloZWFkZXJzIHByb3RvdHlwZXMuCgoJKiBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3dpbjE2ZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYywgZ3JhcGhpY3MveDExZHJ2L29iamVjdHMuYywgaW5jbHVkZS9iaXRtYXAuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgb2JqZWN0cy9iaXRtYXAuYywgb2JqZWN0cy9icnVzaC5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL29lbWJpdG1hcC5jLCB3aW5kb3dzL2dyYXBoaWNzLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2luaXQuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkZWQgcEJpdG1hcEJpdHMgYW5kIHBDcmVhdGVCaXRtYXAgdG8gdGhlIEdESSBmdW5jdGlvbiB0YWJsZSBhbmQKCW1vdmVkIHRoZSBYMTEgZGVwZW5kZW50IHN0dWZmIG91dCBvZiBvYmplY3RzL2JpdG1hcC5jIGludG8geDExZHJ2LgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgaW5jbHVkZS9zaGVsbC5oLCBkbGxzL3NoZWxsMzIvcGlkbC5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgU0hHZXRTaW1wbGVJRExpc3RGcm9tUGF0aDMyQVcuCglVbmljb2RlLXNhZmU6IFBhdGhGaW5kRmlsZW5hbWUzMkFXLgoKCSogaW5jbHVkZS9zaGxvYmouaDogSnVzdGluIEJyYWRmb3JkIDxqdXN0aW5AYnVzYm95LnNwZWQudWthbnMuZWR1PgoJSUV4dHJhY3RJY29uIGhhZCBhbiBleHRyYSBjIGluIGEgc3RydWN0IGRlZmluaXRpb24uCgoJKiByZWxheTMyL2RwbGF5LnNwZWM6CglKb2huIFJpY2hhcmRzb24gPGpyaWNoYXJkQHplYWxhbmQubXYuc3BhbWxlc3MuY29tPgoJQWRkZWQgZW50cnkgZm9yIERpcmVjdFBsYXlFbnVtZXJhdGUuCgoJKiBvbGUvbmxzL3NreS5ubHMsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIFNsb3ZhayBubHMtcmVzb3VyY2VzLgoKCSogb2JqZWN0cy9yZWdpb24uYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CglGaXhlZCBkaWZmZXJlbmNlcyBiZXR3ZWVuIFNldFJlY3RSZ24xNiBhbmQgU2V0UmVjdFJnbjMyLiBBbHNvIGEgYnVnIGZpeCBmb3IKCUNyZWF0ZVJvdW5kUmVjdFJnbi4KClR1ZSBPY3QgMjcgMTU6NDE6NTQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHdpbmRvd3MvdXNlci5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUVudW1EaXNwbGF5TW9kZXMqIHJldHVybnMgYSBzdGF0aWMgbGlzdCBvZiBtb2RlcyB3aXRoIGFsbCBkZXB0aHMKCShoZWxwcyBoZXhlbjJkZW1vKSwgQ2hhbmdlRGlzcGxheVNldHRpbmdzIHJldHVybnMgdHJ1ZSBhbGwgdGhlIHRpbWUuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmgsIG11bHRpbWVkaWEvbW1zeXN0ZW0uYywgcmVsYXkzMi93aW5tbS5zcGVjOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdHViIGZvciBtaWRpT3BlblN0cmVhbSAoaGVscHMgaGV4ZW4yZGVtbykuCgoJKiBvbGUvbmxzL2VuYy5ubHMsIG9sZS9ubHMvZnJjLm5scywgcmVzb3VyY2VzL3N5c3Jlc19Gci5yYzoKCVJvYmVydCBQb3VsaW90IDxrcnlub3NAY2xpYy5uZXQ+CglTbWFsbCBwYXRjaCBmb3IgYmV0dGVyIEZyZW5jaCBzdXBwb3J0LgoKCSogbG9hZGVyL2VsZi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUJ1Z2ZpeDogbWVtb3J5IG92ZXJ3cml0ZSBidWcuCgpNb24gT2N0IDI2IDExOjA0OjEzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBjb250cm9scy9lZGl0LmMsIHdpbmRvd3MvY2xpcGJvYXJkLmM6IFBhc2NhbCBDdW9xIDxwY3VvcUBlbnMtbHlvbi5mcj4KCTMyLWJpdCBjbGlwYm9hcmQgc3VwcG9ydC4KCgkqIHdpbmRvd3MvcXVldWUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglCdWdmaXggZm9yIFFVRVVFX1NpZ25hbDogQWx3YXlzIHVzZSBQb3N0RXZlbnQgaWYgbm8gdGhyZWFkIGlzIHdhaXRpbmcKCW9uIHRoZSBxdWV1ZS4KCgkqIHdpbmRvd3MvbWRpLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4ZWQgYSBtaW5vciBwcm9ibGVtIHdpdGggdGhlIG1lbnVzIGZvciBtZGkgY2hpbGQgd2luZG93cy4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJUmVtb3ZlZCBubyBsb25nZXIgbmVjZXNzYXJ5IGNvbW1lbnRlZCBvdXQgY29kZSwgZGVzdHJveSBvbGQgd2luZG93Cgl3aGVuIFNldERpc3BsYXlNb2RlIGlzIGNhbGxlZCBhZ2FpbiwgRW51bURpc3BsYXlNb2RlcyBub3cgcmV0dXJucwoJYWxsIHBvc3NpYmxlIG1vZGVzICh1c2luZyBhIHN0YXRpYyBsaXN0KS4KCgkqIG1lbW9yeS92aXJ0dWFsLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQW5vbiBzaGFyZWQgbWFwcGluZyBmaXhlZCBmb3IgZmlsZSBzaGFyaW5nLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gT2N0IDI1IDEwOjMyOjIzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBvbGUvb2xlMm5scy5jLCBpbmNsdWRlL3dpbm5scy5oOiBBbmRyZWFzIE1vaHIgPDEwMC4zMDkzNkBnZXJtYW55Lm5ldD4KCUZpeGVzIGZvciBMQU5HX05FVVRSQUwuCgoJKiBpbmNsdWRlL3Rhc2suaDoKCUFkZGVkIHNvbWUgcGFkZGluZyB0byB0aGUgUERCIGZvciBpbGwtYmVoYXZpbmcgYXBwcyAocHJvYmxlbSByZXBvcnRlZAoJYnkgQW5kcmVhcyBNb2hyKS4KCgkqIGRvY3VtZW50YXRpb24vaW9wb3J0LXRyYWNlLWhpbnRzLCBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIG1pc2NlbXUvaW5zdHIuYzoKCUpvbmF0aGFuIEJ1enphcmQgPGphYkBoZXgucHJlc3RlbC5jby51az4KCUFkZGVkIGEgbmV3IGRlYnVnZ2luZyBjaGFubmVsIGlvIHRvIGFsbG93IHJlYWQvd3JpdGVzIG9uIGEgcG9ydCB0byBiZQoJbG9nZ2VkIHRvIGEgZmlsZS4KCgkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPERhdmlkLkZhdXJlQGluc2EtbHlvbi5mcj4KCVJlcGxhY2VkIDB4MDAgd2l0aCAweDAxIGluIHRoZSB2a2V5LT5zYW5jb2RlIGFycmF5LCBzbyB0aGF0IG5vIGtleSBpcwoJaWdub3JlZC4gMHgwMCBpcyB1c2VkIGZvciBnZW5lcmF0ZWQga2V5IGV2ZW50cyBvbmx5LgoKCSogd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3MvcXVldWUuYzoKCURvdWdsYXMgUmlkZ3dheSA8cmlkZ3dheUB3aW5laHEuY29tPgoJQVBJIERvY3VtZW50YXRpb24gZm9yIFNlbmRNZXNzYWdlLCBHZXRUaWNrQ291bnQsIFBvc3RRdWl0TWVzc2FnZSwKCUdldE1lc3NhZ2VQb3MsIEdldE1lc3NhZ2VUaW1lLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglEZWxldGUgdGhlIGZpbGVuYW1lIGZvciB0aGUgbWFwcGluZyBpbnN0YW50bHkuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgcmVsYXkzMi9zaGVsbDMyLnNwZWM6CglNaWNoYWVsIFBvb2xlIDxwb29sZUBncmF2aXRvbi5yZXMuY211LmVkdT4KCVN0dWIgZm9yIFNIU2ltcGxlSURMaXN0RnJvbVBhdGguCgoJKiBsb2FkZXIvdGFzay5jOiBGaXhlZCBidWcgaW4gU3dpdGNoU3RhY2tUby4KClNhdCBPY3QgMjQgMTM6MDY6MTYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCUNoZWNrIGlmIHNjcm9sbGJhciBhbmQgcGFyZW50IGFyZSB2aXNpYmxlIGJlZm9yZSByZWRyYXcuCgoJKiBpZjE2MzIvc2hlbGwuc3BlYywgaW5jbHVkZS9zaGVsbC5oLCBtaXNjL3NoZWxsLmMsIHByb2dyYW1zL25vdGVwYWQvbWFpbi5jLCByZWxheTMyL3NoZWxsMzIuc3BlYzoKCUthaSBNb3JpY2ggPGthaS5tb3JpY2hAZGFybXN0YWR0Lm5ldHN1cmYuZGU+CglBZGRlZCBEcmFnKjMyIGZ1bmN0aW9ucy4KCgkqIHdpbmRvd3MvZXZlbnQuYzogS2FpIE1vcmljaCA8a2FpLm1vcmljaEBkYXJtc3RhZHQubmV0c3VyZi5kZT4KCUFkZGVkIERyYWcmRHJvcCBmcm9tIEtERSBhcHAgdG8gMTYvMzIgYml0IFdpbmRvemUgYXBwLgoKCSogd2luZG93cy9tZXNzYWdlLmM6IEthaSBNb3JpY2ggPGthaS5tb3JpY2hAZGFybXN0YWR0Lm5ldHN1cmYuZGU+CglBZGRlZCBGSVhNRSBtZXNzYWdlIGluIFBvc3RNZXNzYWdlMzJ4IGlmIHBhcmFtZXRlcnMgYXJlIHRydW5jYXRlZAoJd2hlbiBjYWxsaW5nIFBvc3RNZXNzYWdlMTYuCgoJKiBpbmNsdWRlL3Byb2Nlc3MuaCwgc2NoZWR1bGVyL2V2ZW50LmMsIHNjaGVkdWxlci9oYW5kbGUuYywgc2NoZWR1bGVyL3Byb2Nlc3MuYywgc2NoZWR1bGVyL3RocmVhZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglBZGRlZCBzdXBwb3J0IGZvciBnbG9iYWwgaGFuZGxlcywgaW1wbGVtZW50ZWQgQ29udmVydFRvR2xvYmFsSGFuZGxlLgoJQWxsb2NhdGUgc3RhcnR1cCBkYXRhIGFuZCAxNi1iaXQgc3RhY2sgZm9yIGluaXRpYWwgcHJvY2Vzcy4KCgkqIGRvY3VtZW50YXRpb24vd2luZS50ZXhpbmZvOiBMZWlnaCBXZWRkaW5nIDxsd2VkZGluZ0Bjb3JwbGluay5jb20uYXU+CglTbWFsbCBmaXguCgoJKiBwcm9ncmFtcy9wcm9nbWFuLy5jdnNpZ25vcmUsIHByb2dyYW1zL3Byb2dtYW4vRXMucmMsIHByb2dyYW1zL3Byb2dtYW4vTWFrZWZpbGUuaW4sIHByb2dyYW1zL3dpbmhlbHAvLmN2c2lnbm9yZSwgcHJvZ3JhbXMvd2luaGVscC9Fcy5yYywgcHJvZ3JhbXMvd2luaGVscC9NYWtlZmlsZS5pbiwgcHJvZ3JhbXMvY2xvY2svLmN2c2lnbm9yZSwgcHJvZ3JhbXMvY2xvY2svRXMucmMsIHByb2dyYW1zL2Nsb2NrL01ha2VmaWxlLmluLCBwcm9ncmFtcy9ub3RlcGFkLy5jdnNpZ25vcmUsIHByb2dyYW1zL25vdGVwYWQvRXMucmMsIHByb2dyYW1zL25vdGVwYWQvTWFrZWZpbGUuaW46CglQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KCUFkZGVkIFNwYW5pc2ggcmVzb3VyY2VzLgoKCSogb2xlL25scy9ldXEubmxzLCByZXNvdXJjZXMvc3lzcmVzX0VzLnJjOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglTbWFsbCBjb3JyZWN0aW9ucy4KCgkqIHJlbGF5MzIva2VybmVsMzIuc3BlYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJTG9hZExpYnJhcnlFeFcgc3BlYyBhZGRlZCAoZnVuY3Rpb24gd2FzIHRoZXJlKS4KCVNldFByb2Nlc3NQcmlvcml0eUJvb3N0IHN0dWIgYWRkZWQuCgoJKiBtc2Rvcy9kcG1pLmM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIFNvbGFyaXMuCgoJKiBpZjE2MzIvLmN2c2lnbm9yZSwgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvZGlzcGRpYi5zcGVjLCBpbmNsdWRlL2Rpc3BkaWIuaCwgZ3JhcGhpY3MvTWFrZWZpbGUuaW4sIGdyYXBoaWNzL2Rpc3BkaWIuYzoKCU92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSW1wbGVtZW50ZWQgRGlzcGxheURpYi4KCgkqIGNvbnRyb2xzL3N0YXRpYy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUhhY2sgdG8gc3VwcG9ydCBpbnRlZ2VyIGlkcyBpbiBhbGwgc3RhdGljIGNvbnRyb2xzLgoKCSogaW5jbHVkZS9kaW5wdXQuaCwgd2luZG93cy9kaW5wdXQuYzoKCUxpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgoJQmVnaW5uaW5nIG9mIG1vdXNlIHN1cHBvcnQgaW4gRGlyZWN0SW5wdXQgKG9ubHkgInN0YW5kYXJkIiBtb3VzZQoJY29uZmlndXJhdGlvbiBzdXBwb3J0ZWQgZm9yIG5vdykuCgoJKiBpbmNsdWRlLyouaCwgZGxscy9jb21jdGwzMi8qLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgeHh4X1VucmVnaXN0ZXIoKSBmdW5jdGlvbnMgdG8gYWxsIGNvbW1vbiBjb250cm9scy4KCgkqIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3BhZ2VyLmMsIGRsbHMvY29tY3RsMzIvdG9vbGJhci5jLCBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9scywgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVNvbWUgbWlub3IgaW1wcm92ZW1lbnRzIGFuZCBmaXhlcy4KCgkqIGRsbHMvY29tY3RsMzIvcmViYXIuYywgaW5jbHVkZS9yZWJhci5oOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIHRoZSByZWJhciBjb250cm9sLgoKCSogZGxscy9jb21jdGwzMi90b29sdGlwcy5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgc3VwcG9ydCBmb3IgdHJhbnNwYXJlbnQgYW5kIHRyYWNraW5nIHRvb2x0aXBzLgoKCSogY29udHJvbHMvbWVudS5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgYSBwb3B1cCBtZW51IHNlbGVjdGlvbiBidWcuCgoJKiB3aW5kb3dzL25vbmNsaWVudC5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgRHJhd0NhcHRpb24xNigpIGFuZCBEcmF3Q2FwdGlvblRlbXAxNigpLgoKCSogd2luZG93cy9rZXlib2FyZC5jOiBEYXZpZCBGYXVyZSA8RGF2aWQuRmF1cmVAaW5zYS1seW9uLmZyPgoJRml4ZWQgd2FybmluZy4KCgkqIGdyYXBoaWNzL3BzZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy9wc2Rydi9iaXRtYXAuYywgZ3JhcGhpY3MvcHNkcnYvYnJ1c2guYywgZ3JhcGhpY3MvcHNkcnYvZm9udC5jLCBncmFwaGljcy9wc2Rydi9ncmFwaGljcy5jLCBncmFwaGljcy9wc2Rydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L3BzLmMsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUvcHNkcnYuaCwgb2JqZWN0cy9kaWIuYzoKCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgoJQWRkcyBBcmMsIENob3JkLCBHZXRDaGFyV2lkdGgsIFBpZSwgUG9seVBvbHlnb24sIFBvbHlQb2x5bGluZSwgUm91bmRSZWN0LAoJU2V0UGl4ZWwsIGhhdGNoZWQgYnJ1c2hlcyBhbmQgYSBzdHViIGZvciBTdHJldGNoRElCaXRzIHRvIHRoZSBQb3N0U2NyaXB0Cglkcml2ZXIuCgoJKiBpbmNsdWRlL2RlYnVnLmgsIGluY2x1ZGUvZGVidWdkZWZzLmgsIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9NYWtlZmlsZS5pbiwgbXNkb3MvaW50ZXJydXB0cy5jOgoJSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgc3VwcG9ydCBmb3IgaW50MTcgYW5kIGludDE5LgoKCSogbXNkb3MvaW50MTkuYzogQ2FybCB2YW4gU2NoYWlrIDxjYXJsQGRyZWFtY29hdC5jaGUudWN0LmFjLnphPgoJU3R1YnMgZm9yIGRvcyBtb2RlIHJlYm9vdCBpbnRlcnJ1cHQuCgoJKiBtc2Rvcy9pbnQxNy5jOiBDYXJsIHZhbiBTY2hhaWsgPGNhcmxAZHJlYW1jb2F0LmNoZS51Y3QuYWMuemE+CglTb21lIHByaW50ZXIgc3R1YnMgZm9yIERPUyBhZGRlZC4KCgkqIG1zZG9zL2ludDEzLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCU1vcmUgc3R1YnMgYWRkZWQuIFRoZXNlIGNoYW5nZXMgYXJlIG9ubHkgcGFydGlhbGx5IG1pbmUsIEkganVzdCBtYWRlCgl0aGVtIGNvbXBpbGUuCgoJKiBtc2Rvcy9pbnQxMC5jOiBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglBZGRlZCBzb21lIHRyYWNlcyBhbmQgY2xlYW5lZCB1cCBhIGNvdXBsZSBvZiB0aGluZ3MuCgoJKiBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBkbGxzL3NoZWxsMzIvc2hsZm9sZGVyLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmMsIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgbWVtb3J5L3N0cmluZy5jLCBvbGUvb2xlMm5scy5jLCByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2VudW1pZGxpc3QuYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglDaGFuZ2VkIHNvbWUgc3RyaW5nLXNoZWxsMzIgZnVuY3Rpb25zIHRvIDMyQVcsIHBhcmFtZXRlciBhcmUKCW9zIGRlcGVuZGluZyAzMkEgb3IgMzJXICgtd2ludmVyIG50MzUxIG9yIG50NDApLCBzb21lIG5ldyBmdW5jdGlvbnMuCglTb21lIGZpeGVzIGluIG9sZTJubHMuCglOZXcgT0xFMk5MU19DaGVja0xvY2FsZSgpIHRvIGhhbmRsZSBMb2NhbGVfVXNlcl9EZWZhdWx0IGFuZAoJTG9jYWxlX1N5c3RlbV9EZWZhdWx0LgoJU2hlbGwzMiBub3cgZHluYW1pY2x5IGxpbmtzIHRvIERQQV8qKCksIGNvbWRsZzMyIHdvcmtzIGFnYWluCgkoY29tY3RsMzIgaGVhcCBhbGxvYyBwYXRjaCBicm9rZSBpdCkuCgoJKiBpbmNsdWRlL3dpbnZlcnNpb24uaCwgbWlzYy92ZXJzaW9uLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUFkZGVkIFZFUlNJT05fSXNPc1VuaWNvZGUoKS4KCgkqIHNjaGVkdWxlci9oYW5kbGUuYzoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCU1vcmUgb2ZmLWJ5LW9uZSBlcnJvcnMgZml4ZWQuCgoJKiBpbmNsdWRlL2ZpbGUuaCwgbWlzYy9jcnRkbGwuYywgbXNkb3MvdnhkLmMsIHdpbjMyL2ZpbGUuYywgZmlsZXMvZmlsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRmlsZSBzaGFyaW5nIGZpeGVzLgoKRnJpIE9jdCAyMyAxNzoyNjo0NCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogbWlzYy9jb21tZGxnLmM6IE5pY2sgSG9sbG93YXkgPGFsZmllQGFsZmllLmRlbW9uLmNvLnVrPgoJQnVnIGZpeC4KCgkqIGxvYWRlci9kb3MvbW9kdWxlLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJRml4ZWQgRE9TIGVudmlyb25tZW50IHBhc3NpbmcuCgoJKiBtaXNjL21haW4uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglTeXNtZXRyaWNzMzJXIGZvciBTUElfR0VUSUNPTlRJVExFTE9HRk9OVCByZXR1cm5zIGNvcnJlY3QgZm9udG5hbWUuCgoJKiBpbmNsdWRlL2ZvbnQuaCwgb2JqZWN0cy9mb250LmMsIG9iamVjdHMvZ2Rpb2JqLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBGT05UX0dldE9iamVjdDMyVygpLCBHZXRPYmplY3QzMlcoKS4KCgkqIHJlbGF5MzIvdXNlcjMyLnNwZWMsIHdpbjMyL29yZGluYWxzLmMsIHdpbmRvd3MvdXNlci5jOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglOZXcgc3R1YiBSZWdpc3RlclRhc2tMaXN0LgoJTmV3IGZ1bmN0aW9uIEVudW1EaXNwbGF5U2V0dGluZ3MzMlcoKS4KCgkqIG1pc2MvbnRkbGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNb3JlIHBhcmFtZXRlciBjaGVja2luZyBpbiBSbHRDb3B5U2lkLgoKCSogd2luZG93cy93aW5wcm9jLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTW9yZSBtZXNzYWdlIG1hcHBpbmcgMzJBPC0tPjMyVyBmb3IgRU1fLCBDQl8sIExCXyBmb3IgVW5pY29kZS4KCgkqIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9hdmlmaWwzMi5zcGVjLCByZWxheTMyL2J1aWx0aW4zMi5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBuZXcgZGxsIGF2aWZpbDMyLmRsbC4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvZHBtaS5jLCBpbmNsdWRlL2Rvc2V4ZS5oOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglGaXJzdCBzaG90IGF0IERQTUkgcmVhbG1vZGUgY2FsbHMuCgoJKiBsb2FkZXIvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUZpeGVkIHNldmVyYWwgYnVncyB3aXRoIERMTCBpbml0aWFsaXphdGlvbi4KClRodSBPY3QgMjIgMTc6MDI6MjUgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIHNjaGVkdWxlci9zeXNsZXZlbC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIG9yZGluYWwgZm9yIHR3byBzeXNsZXZlbCBmdW5jdGlvbnMuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglBbm90aGVyIG1pc3NpbmcgV0lOQVBJLgoKCSogaW5jbHVkZS9tbXN5c3RlbS5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNtYWxsIGNvcnJlY3Rpb25zIGluIG1taW8gZGVjbGFyYXRpb25zLgoKCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJVGFrZSB2aXJ0dWFsIHNpemVzIGluIGFjY291bnQgZm9yIHRoZSB0b3RhbCB2bWEgc2l6ZS4KCgkqIG9sZS9ubHMvcm9tLm5sczogRGltaXRyaWUgTy4gUGF1biA8ZGltaUBjcy50b3JvbnRvLmVkdT4KCUFkZCBzb21lIG1vcmUgTkxTIGRlZmluaXRpb25zIGZvciB0aGUgUm9tYW5pYW4gbGFuZ3VhZ2UuCgoJKiBtdWx0aW1lZGlhL2Rzb3VuZC5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCVNvbWUgcHJvZ3JhbXMgKHF1YWtlMiBldCBhbCkgZG8gY2hlY2sgZm9yIERTQ0FQU19FTVVMRFJJVkVSIGFuZCBzdG9wCgl0byB3b3JrLiAnQWRqdXN0JyBjYXBzIGZsYWdzIGFjY29yZGluZ2x5LgoKCSogb2xlL2NvbXBvYmouYywgcmVsYXkzMi9vbGUzMi5zcGVjOgoJUGV0ZSBSYXR6bGFmZiA8cHJhdHpsYWZmQGNmYS5oYXJ2YXJkLmVkdT4KCVN0dWIgZm9yIENvQ3JlYXRlR3VpZCgpLgoKCSogZGxscy9jb21jdGwzMi90cmVldmlldy5jLCBtdWx0aW1lZGlhL21jaWNkYS5jOgoJQnJpYW4gTGl0emluZ2VyIDxicmlhbkBsaXR6aW5nZXIuY29tPgoJRml4ZXMgZm9yIEZyZWVCU0QuCgoJKiBsaWJ0ZXN0Ly5jdnNpZ25vcmUsIGxpYnRlc3QvTWFrZWZpbGUuaW46CglQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQG1pbmVydmEuY2MudWl0Lm5vPgoJTWFrZSBzdXJlIGhlbGxvM3Jlcy5oIGlzIGdlbmVyYXRlZCBldmVuIGlmICdtYWtlIGRlcGVuZCcgbmV2ZXIgaGFzCgliZWVuIHJ1bi4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgoJRml4ZWQgbW92aW5nIGFuZCBzaXppbmcgb2YgY2hpbGQgd2luZG93cy4KCgkqIGluY2x1ZGUvdHNfeGxpYi5oLCB0b29scy9tYWtlX1gxMXdyYXBwZXJzLCB0c3gxMS9YMTFfY2FsbHMsIHRzeDExL3RzX3hsaWIuYywgd2luZG93cy9rZXlib2FyZC5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglYUXVlcnlLZXltYXAgLT4gVFNYUXVlcnlLZXltYXAgKGZpeGVzIHRoZSBYSU8gZXJyb3JzIHJlcG9ydGVkKS4KCldlZCBPY3QgMjEgMTc6MjA6NDggMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIGluY2x1ZGUvZG9zZXhlLmgsIGxvYWRlci9kb3MvZG9zdm0uYywgbWlzY2VtdS9tYWluLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUFkZGVkIGluZGlyZWN0aW9uIGZvciBjdHhfZGVidWcgdG8gdGhlIERPUyBsb2FkZXIsIHNvIFdpbmVsaWIgd29ya3MKCWFnYWluLgoKCSogbWVtb3J5L3ZpcnR1YWwuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglTdXBwb3J0IGFub24gc2hhcmVkIG1hcHBpbmdzIHVzaW5nIHRlbXBvcmFyeSBmaWxlcyAod29udCBiZSBkZWxldGVkCgl5ZXQpLgoKCSogbWlzYy9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJV2FzIGZyZWVpbmcgdGhlIGluY29ycmVjdCBwb2ludGVycyAtPiBjcmFzaCBpbiBtYWxsb2NzL2ZyZWVzLgoKCSogZmlsZXMvZG9zX2ZzLmMsIHJlbGF5MzIva2VybmVsMzIuc3BlYzoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJRGVmaW5lRG9zRGV2aWNlIHN0dWIgYWRkZWQuCgoJKiBtaXNjZW11L21haW4uYywgd2luZS5pbmk6IENoYWQgUG93ZWxsIChweHB4QHVzYS5uZXQpCglBZGRlZCBhIGRlZmF1bHQgcHJvZ3JhbSBvcHRpb24gaW4gd2luZS5jb25mIGluIHNlY3Rpb24gW3Byb2dyYW1zXSBrZXkKCURlZmF1bHQuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6IERhdmlkIEN1dGhiZXJ0IDxkYWN1dEBlY2UuY211LmVkdT4KCUJldHRlciBmaXggZm9yIHRoaXNfaXNfYV9zeW50YXhfZXJyb3IuCgoJKiBvbGUvbmxzLyoubmxzOgoJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglBZGRlZCB0aGUgZW50cmllcyBmb3IgTE9DQUxFX1NJU082MzlMQU5HTkFNRSBhbmQKCUxPQ0FMRV9TSVNPMzE2NkNUUllOQU1FLgoKCSogZG9jdW1lbnRhdGlvbi93aW5lLm1hbjogSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgoJVXBkYXRlZCBtYW5wYWdlLgoKCSogcmVsYXkzMi9tc2FjbTMyLnNwZWM6IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJRml4ZWQgd3Jvbmcgb3JkaW5hbHMuCgoJKiBvYmplY3RzL3JlZ2lvbi5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUZpeGVkIGEgYnVnIGluIFJlY3RJblJlZ2lvbi4KClR1ZSBPY3QgMjAgMTU6MjY6MjYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1zZG9zL2ludGVycnVwdHMuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CglSZW1vdmVkIGFuIGluY29ycmVjdCBlcnJvciBtZXNzYWdlLgoKCSogZmlsZXMvZHJpdmUuYzogUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUBtaW5lcnZhLmNjLnVpdC5ubz4KCU1ha2Ugc3VyZSB0aGUgYWNjZXNzIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIHVzZWQgdG8gZ2V0IGxhYmVsIGFuZCBzZXJpYWwKCW51bWJlci4KCk1vbiBPY3QgMTkgMDg6NDg6MjQgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG9sZS9vbGUybmxzLmM6IEVyaWMgUG91ZWNoIDxlcmljLnBvdWVjaEBob2wuZnI+CglGaXhlZCBidWcgb24gcGxhdGZvcm1zIHdlcmUgYnVmZmVycyByZXR1cm5lZCBieSBnZXRlbnYoKSBzaGFsbCBub3QgYmUKCWZyZWUoKSdlZC4gQWRkZWQgRnJlbmNoIChkZWZhdWx0KSBpbiBsb2NhbGUgaGFuZGxpbmcuCgoJKiBpbmNsdWRlL3dpbnR5cGVzLmg6IERhdmUgQ3V0aGJlcnQgPGRhY3V0QGVjZS5jbXUuZWR1PgoJQ2hhbmdlZCAidGhpcyBpcyBhIHN5bnRheCBlcnJvciIgdG8gInRoaXNfaXNfYV9zeW50YXhfZXJyb3IiIHRvIG1ha2UgYQoJY29tcGlsZS10aW1lIGVycm9yIG1lc3NhZ2UgbWFrZSBtb3JlIHNlbnNlLgoKCSogc2NoZWR1bGVyL2hhbmRsZS5jOgoJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgoJRml4ZWQgb2ZmIGJ5IG9uZSBlcnJvciBpbiBIQU5ETEVfR2V0T2JqUHRyLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTdW4gT2N0IDE4IDE0OjQ4OjMxIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBmaWxlcy9maWxlLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KCVRyeSB0byBpbXBsZW1lbnQgdGhlIE9GX1NIQVJFX1hYWCBvcHRpb25zLgoJTW92ZSB0aGUgbW9kZSB0cmFuc2xhdGlvbnMgdG8gZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9tYWluLmgsIG9sZS9jb21wb2JqLmMsIG9sZS9pZnMuYywgb2xlL29sZTJkaXNwLmMsIG9sZS9vbGUybmxzLmMsIG9sZS9vbGVzdnIuYywgb2xlL3N0b3JhZ2UuYzoKCU1hdHRoZXcgQmVja2VyIDxtYmVja2VyQGdsYXNzY2l0eS5uZXQ+CglEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgoJKiBvbGUvY29tcG9iai5jLCByZWxheTMyL29sZTMyLnNwZWM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglBZGRlZCBzdHViIGZvciBDb1NldFN0YXRlMzIuCgoJKiBtaXNjZW11L21haW4uYzogQ2hhZCBQb3dlbGwgPHB4cHhAdXNhLm5ldD4KCUFkZGVkIGFiaWxpdHkgdG8gcmVhZCBhIHN0YXJ0dXAgcHJvZ3JhbSBmcm9tIHdpbmUuaW5pIGZpbGUuCglQdXQgaXQgaW4gc2VjdGlvbiBbcHJvZ3JhbXNdIGtleSBTdGFydHVwLgoKCSogaW5jbHVkZS90cmFja2Jhci5oLCBpbmNsdWRlL3RyZWV2aWV3LmgsIGRsbHMvY29tY3RsMzIvdHJhY2tiYXIuYywgZGxscy9jb21jdGwzMi90cmVldmlldy5jOgoJQWxleCBQcmllbSA8YWxleHBAc2NpLmt1bi5ubD4KCUZ1cnRoZXIgaW1wcm92ZW1lbnRzLgoKCSogaW5jbHVkZS9jdXJzb3JpY29uLmgsIG9iamVjdHMvY3Vyc29yaWNvbi5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglJbXBsZW1lbnRlZCBMb2FkQ3Vyc29yRnJvbUZpbGUsIGZpeGVkIERyYXdJY29uRXggdG8gc3VwcG9ydCBvZmZzY3JlZW4KCWRyYXdpbmcsIGZpeGVkIENVUlNPUklDT05fQ3JlYXRlRnJvbVJlc291cmNlIHRvIHN1cHBvcnQgTFJfIHNlbWFudGljcy4KCgkqIGluY2x1ZGUvYml0bWFwLmgsIG9iamVjdHMvYml0bWFwLmM6CglUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUZpeGVkIExvYWRJbWFnZSB0byBzdXBwb3J0IGFsbW9zdCBhbGwgTFJfIGZsYWdzLgoKCSogb2JqZWN0cy9kaWIuYzogVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXhlZCBidWcgaW4gRElCX1NldEltYWdlQml0c19STEU4IChiZWNhdXNlICdjb2xvcicgdmFyIHdhcyBXT1JELCBhbGwKCUNPTE9SRUZzIGhhZCByZWQgcGFydCB6ZXJvZWQpIHRoYXQgbWFkZSBwbGVudHkgb2YgY3lhbiBjb2xvcnMsIG1pbm9yCglidWcgZml4ZXMsIGNoYW5nZXMgdG8gc3VwcG9ydCBMUl8gZmxhZ3MuCgoJKiBpbmNsdWRlL2dsb2JhbC5oLCBtZW1vcnkvdmlydHVhbC5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglBZGRlZCBWSVJUVUFMX01hcEZpbGVXIHRvIG1hcCBmaWxlIHRvIG1lbW9yeSBpbiBvbmUgZnVuY3Rpb24gY2FsbC4KCgkqIGluY2x1ZGUvZGRyYXcuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgd2luZG93cy9tdWx0aW1vbi5jOgoJVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglNb3ZlZCBNdWx0aW1vbml0b3IgQVBJIGRlY2xhcmF0aW9ucyB0byB3aW5kb3dzLmguCgoJKiBpZjE2MzIvdXNlci5zcGVjLCBpbmNsdWRlL2RyaXZlci5oLCBtdWx0aW1lZGlhL2F1ZGlvLmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCByZWxheTMyL3dpbm1tLnNwZWMsIHdpbmRvd3MvZHJpdmVyLmM6CglUdXJjaGFub3YgU2VyZ2V5IDx0dXJjaGFub3ZAdXNhLm5ldD4KCUltcGxlbWVudGVkIERlZkRyaXZlclByb2MzMiBmcm9tIHdpbm1tLmRsbC4KCgkqIGNvbnRyb2xzL3Njcm9sbC5jLCBpbmNsdWRlL3Njcm9sbC5oLCB3aW5kb3dzL21kaS5jLCB3aW5kb3dzL25vbmNsaWVudC5jOgoJQWxleCBLb3JvYmthIDxrb3JvYmthQGFtcy5zdW55c2IuZWR1PgoJR290IHJpZCBvZiBmbGlja2VyaW5nIHNjcm9sbGJhciBhcnJvd3MuIE1ESSBzY3JvbGxpbmcgc3BlZWRlZCB1cCBhCgliaXQuCgoJKiBpbmNsdWRlL3dpbm5scy5oLCBvbGUvbmxzL2RldS5ubHMsIG9sZS9vbGUybmxzLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUdldExvY2FsZUluZm8zMkEgY2FuIGhhbmRsZSBsZW49MCBub3csIHNldHMgTGFzdEVycm9yIGFuZCB0b3VjaGVzCglidWZmZXIgb25seSB3aGVuIG5lY2Vzc2FyeS4KCVVwZGF0ZWQgZGV1Lm5scyBhbmQgc29tZSBMQ1RZUEVTIGluIHdpbm5scy5oLgoKCSogaWYxNjMyL3JlbGF5LmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglDYWxsUHJvY1tFeF0zMlcgY2FsbGVkIHdpdGggbHBQcm9jQWRkcmVzcz09TlVMTCBzaG91bGQgcmV0dXJuIHplcm8gYW5kCglub3QgY3Jhc2guCgpTYXQgT2N0IDE3IDEzOjA3OjQ4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiBkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJUmVkdWNlZCBodWdlICgxR0IpIGhlYXAgY3JlYXRpb24gdGhhdCBjYXVzZWQgU3RhcmNyYWZ0IHRvIGZhaWwuCgoJKiBpbmNsdWRlL2Rvc2V4ZS5oLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvZG9zL2Rvc3ZtLmMsIG11bHRpbWVkaWEvZHBsYXkuYywgd2luZG93cy9kaWFsb2cuYzoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJQ29tcGlsZSBmaXggZm9yIFNvbGFyaXMuCgoJKiBtdWx0aW1lZGlhL21pZGkuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDb21waWxlIGZpeCBmb3Igbm9uIE9TUyBzeXN0ZW1zLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglDb21waWxlIGZpeCBmb3Igbm9uIFhGODYtREdBIHN5c3RlbXMuCgoJKiBsaWJ0ZXN0L01ha2VmaWxlLmluLCBsaWJ0ZXN0L3ZvbGluZm8uYzoKCVBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAdGQub3JnLnVpdC5ubz4KCU5ldyBmaWxlIHRvIHRlc3QgRFJJVkVfR2V0TGFiZWwuCgoJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBQZXRlciBIdW5uaXNldHQgPGh1bm5pc2VAbm9ydGVsLmNhPgoJU21hbGwsIHN1Ym9wdGltYWwsIGZpeCBmb3IgMzIgYml0IGNkYXVkaW8gb3BlbiByb3V0aW5lcy4gTmVlZHMgcHJvcGVyCgkzMmJpdCBjZGF1ZGlvIGJpdCBzdXBwb3J0IGJlZm9yZSBpdCBjYW4gYmUgcmVtb3ZlZC4uLgoKCSogZ3JhcGhpY3MvZGRyYXcuYzogUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbC5jYT4KCUFkZGVkIGEgYnVuY2ggb2Ygc3R1YnMgZm9yIGRkcmF3IHN1ZmFjZSByb3V0aW5lcy4gQWxsIHN0dWJzIGZvcgoJc3VyZmFjZSBwcmVzZW50IG5vdy4KCUNvbW1lbnRlZCBvdXQgbWVzc2FnZSBwdW1wIGNhbGxzLiBJIGRvbid0IHNlZSBhIHJlYXNvbiBmb3IgdGhlbSBiZWluZwoJdGhlcmUuIEV2ZXJ5dGhpbmcgd29ya3MgZmluZSB3aXRoIC1kZXNrdG9wIGFuZCAtbWFuYWdlZCBzdGlsbCBoYXMKCXByb2JsZW1zLiBEaXNhZ3JlZW1lbnRzPwoKCSogb2xlL29sZTJubHMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglGaXhlZCBHZXRMb2NhbGVJbmZvMzJBIGZvciBvdGhlciBsYW5ndWFnZXMgdGhhbiBlbl91ay4KCU1hZGUgaXQgcmVjb2duaXNlIExPQ0FMRV9TWVNURU1fREVGQVVMVCwgTE9DQUxFX1NZU1RFTV9ERUZBVUxUIGFuZAoJbGFzdCBidXQgbm90IGxlYXN0IHRoZSBmaXJzdCBhcmd1bWVudCBsY2lkIHdoZXJlIGlzIGFsbCBhYm91dC4uLgoKCSogaW5jbHVkZS9zeXNsZXZlbC5oLCBtaXNjL3JlZ2lzdHJ5LmMsIG11bHRpbWVkaWEvZHBsYXkuYywgbXVsdGltZWRpYS9kc291bmQuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBtdWx0aW1lZGlhL3RpbWUuYywgd2luZG93cy9jYXJldC5jLCBkbGxzL21zYWNtMzIvYnVpbHRpbi5jOgoJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CglGaXhlZCBzb21lIG1vcmUgbWlzc2luZyBXSU5BUElzIChob3BlZnVsbHkgY29ycmVjdCkuCgoJKiBvbGUvb2xlMm5scy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIHRoZSA9IC0+ID09IGJ1Zy4KCgkqIG1zZG9zL2ludDJmLmM6IEpvc2VwaCBQcmFuZXZpY2ggPGtuaWdodEBiYWx0aW1vcmUud3dhdmVzLmNvbT4KCVNoZWxsIHBhcmFtZXRlcnMgKGNvbmZpZy5zeXMpIGFuZCBBTlNJIHN1cHBvcnQgc3R1YnMuCgoJKiBtc2Rvcy9NYWtlZmlsZS5pbjogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgaW50MTYuYyBhbmQgaW50MjkuYy4KCgkqIGluY2x1ZGUvbWlzY2VtdS5oLCBtc2Rvcy9pbnRlcnJ1cHRzLmM6CglKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CglNb3JlIGludGVycnVwdHMgdGhhdCBjYW4gYmUgZG9uZSBmcm9tIERPUyBtb2RlLgoKCSogbXNkb3MvaW50MjkuYzogSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgaW50MjkgKEZhc3QgV3JpdGUgdG8gU2NyZWVuKSBzdXBwb3J0LgoKCSogbXNkb3MvaW50MTYuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oOgoJSm9zZXBoIFByYW5ldmljaCA8a25pZ2h0QGJhbHRpbW9yZS53d2F2ZXMuY29tPgoJQWRkZWQgaW50MTYgKEtleWJvYXJkKSBzdXBwb3J0LCBtb3N0bHkgc3R1YnMuCgpGcmkgT2N0IDE2IDE1OjQwOjIxIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NobG9iai5oOgoJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CglNYW55IGJ1Z2ZpeGVzLCBuZXcgc3R1YnMgU0hHZXRSZWFsSURMLCBTSFJlZ1F1ZXJ5VmFsdWUzMlcsCglTSFJlZ1F1ZXJ5VmFsdWVFeDMyVywgU3RyUmV0VG9TdHJOLCBTdHJDaHJXLCBTSEFsbG9jU2hhcmVkLAoJU0hMb2NrU2hhcmVkLCBTSFVubG9ja1NoYXJlZCwgU0hGcmVlU2hhcmVkLCBTZXRBcHBTdGFydGluZ0N1cnNvcjMyLAoJU0hMb2FkT0xFMzIsIFNoZWxsX01lcmdlTWVudXMzMiwgUGF0aEdldERyaXZlTnVtYmVyMzIsIERyaXZlVHlwZTMyLAoJU0hBYm9ydEludm9rZUNvbW1hbmQsIFNIT3V0T2ZNZW1vcnlNZXNzYWdlQm94LCBTSEZsdXNoQ2xpcGJvYXJkLgoKCSogbWlzYy9udGRsbC5jLCByZWxheTMyL250ZGxsLnNwZWM6CglEaWV0bWFyIEtsaW5nIDxkaWV0bWFyLmtsaW5nQHVzYS5uZXQ+CglBZGRlZCB1bmRvY3VtZW50ZWQgZnVuY3Rpb24gUnRsT3BlbkN1cnJlbnRVc2VyLgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmMsIG1pc2Mvc2hlbGwuYywgbWlzYy92ZXIuYywgbWlzYy92ZXJzaW9uLmMsIGxvYWRlci9lbGYuYywgbG9hZGVyL21vZHVsZS5jLCBsb2FkZXIvcGVfaW1hZ2UuYywgbG9hZGVyL3BlX3Jlc291cmNlLmMsIGluY2x1ZGUvbmVleGUuaCwgaW5jbHVkZS9wZV9pbWFnZS5oLCBpbmNsdWRlL3BlZXhlLmgsIGRlYnVnZ2VyL2RiZ21haW4uYywgZGVidWdnZXIvbXNjLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CglSZW5hbWVkIGFsbCBMUElNQUdFXyogdHlwZXMgdG8gUElNQUdFXyouCgpUaHUgT2N0IDE1IDEzOjAzOjEwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL3dpbnBvcy5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJRml4ZWQgYW4gZXJyb3Igd2hlbiBhbiBvd25lZCB3aW5kb3cgYWN0aXZhdGVzIGl0cyBvd25lciBkdXJpbmcKCWNyZWF0aW9uLgoKCSogd2luZG93cy9kZWZkbGcuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUNsb3NpbmcgYSBkaWFsb2cgdXNpbmcgdGhlIG1lbnUgYmFyICgieCIgb3IgIi0iIGJ1dHRvbiBvciB3aW5kb3dzCgltZW51KSBtdXN0IGdlbmVyYXRlIGEgV01fQ09NTUFORCtJRENBTkNFTCBtZXNzYWdlLCB1bmxpa2UgY2xvc2luZwoJbm9ybWFsIHdpbmRvd3Mgd2hlbiBEZXN0cm95V2luZG93KCkgaXMgY2FsbGVkLgoKCSogZGxscy9zaGVsbDMyL3BpZGwuYzoKCU1hcmN1cyBNZWlzc25lciA8bXNtZWlzc25AY2lwLmluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQWRkZWQgbWlzc2luZyBXSU5BUElzLgoKCSogd2luZG93cy93aW5wb3MuYywgd2luMzIvb3JkaW5hbHMuYywgcmVsYXkzMi91c2VyMzIuc3BlYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzIFByaXZhdGVFeHRyYWN0SWNvbkV4W0FXXSwgUHJpdmF0ZUV4dHJhY3RJY29uc1csCglSZWdpc3RlclNoZWxsSG9va1dpbmRvdywgRGVyZWdpc3RlclNoZWxsSG9va1dpbmRvdywgR2V0UHJvZ21hbldpbmRvdywKCUdldFRhc2ttYW5XaW5kb3csIFNldFByb2dtYW5XaW5kb3csIFNldFNoZWxsV2luZG93RXgsCglTZXRUYXNrbWFuV2luZG93LgoKCSogcmVsYXkzMi9udGRsbC5zcGVjLCBtaXNjL250ZGxsLmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHVicyBOdFF1ZXJ5SW5mb3JtYXRpb25UaHJlYWQsIE50UXVlcnlJbmZvcm1hdGlvblRva2VuLAoJUnRsQWxsb2NhdGVBbmRJbml0aWFsaXplU2lkLCBSdGxFcXVhbFNpZCwgUnRsRnJlZVNpZC4KCgkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogVHVyY2hhbm92IFNlcmdleSA8dHVyY2hhbm92QHVzYS5uZXQ+CglGaXhlZCBQbGF5U291bmQgdG8gc3RhcnQgaXRzIHRocmVhZCB0aGUgcmlnaHQgd2F5LgoKV2VkIE9jdCAxNCAxODo0MDozNSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogY29udHJvbHMvY29tYm8uYywgY29udHJvbHMvbGlzdGJveC5jOgoJQWxleCBLb3JvYmthIDxrb3JvYmthQGFtcy5zdW55c2IuZWR1PgoJQ0JfU0VUQ1VSU0VMIGFuZCBzb21lIG90aGVyIGZpeGVzLgoKCSogd2luZG93cy9xdWV1ZS5jOiBBbGV4IEtvcm9ia2EgPGtvcm9ia2FAYW1zLnN1bnlzYi5lZHU+CglCZXR0ZXIgUVVFVUVfRmx1c2hNZXNzYWdlcygpLgoKCSogcmVsYXkzMi9nZGkzMi5zcGVjLCBvYmplY3RzL2ZvbnQuYywgaW5jbHVkZS93aW5kb3dzLmgsIGlmMTYzMi9nZGkuc3BlYzoKCU1vc2hlIFZhaW5lciA8bW9zaGV2QGVhc3liYXNlLmNvbT4KCVBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgR2V0T3V0bGluZVRleHRNZXRyaWNzMzJBLgoJQWRkZWQgc3RydWN0dXJlcyBmb3IgT1VUTElORVRFWFRNRVRSSUNTLgoKCSogb2JqZWN0cy9kYy5jLCBpbmNsdWRlL2dkaS5oLCBncmFwaGljcy94MTFkcnYvYml0Ymx0LmMsIGdyYXBoaWNzL3gxMWRydi9iaXRtYXAuYywgZ3JhcGhpY3MveDExZHJ2L2luaXQuYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJRG8gbm90IGNsaXAgc291cmNlIHJlY3RhbmdsZSBldmVuIGJ5IHZpc2libGUgcmVnaW9uIGZvciBiaXRibHRzLgoJQWRkZWQgZmllbGQgJ3RvdGFsRXh0ZW50JyB0byBXSU5fRENfSU5GTy4KCgkqIG1zZG9zL3Z4ZC5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUFkZGVkIHN0dWIgZm9yIFZNTSBQTSBBUEkgQUg9MDI2W2RlXSAobmV2ZXIgc2F5ICdzYWZlIG1vZGUnKS4KCgkqIG1lbW9yeS9oZWFwLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQnVnZml4OiBMb2NhbDMyRnJlZSBjYXVzZWQgZnJlZSBoYW5kbGVzIGxpc3QgY29ycnVwdGlvbi4KCgkqIGluY2x1ZGUvZGVidWd0b29scy5oOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUZpeGVkIC0tZGlzYWJsZS1kZWJ1ZyBjb25maWcgb3B0aW9uLgoKVHVlIE9jdCAxMyAxMjo1MDowNCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJUGV0dGVyIFJlaW5ob2xkdHNlbiA8cGVyZUB0ZC5vcmcudWl0Lm5vPgoJQWRkZWQgc3R1YnMgU0hSZWdDbG9zZUtleSgpLCBTSFJlZ09wZW5LZXlbQVddKCksIFNIUmVnUXVlcnlWYWx1ZUV4QSgpCglhbmQgRmlsZUljb25Jbml0KCkgbmVlZGVkIGJ5IFdpbjk1IGV4cGxvcmVyLgoKTW9uIE9jdCAxMiAwNzoyNTo1NCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogd2luZG93cy9kaWFsb2cuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL21lbnUuYzoKCU5vcm1hbiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KCUltcHJvdmluZyBrZXlib2FyZCBoYW5kbGluZywgaW5jbHVkaW5nIGFjY2VsZXJhdG9yIGtleXMgaW4gZGlhbG9nCglib3hlcy4gQWxzbyBmaXhlcyBlbnRlciBrZXkgaW4gQWdlbnQzMiBlZGl0IGJveC4KClN1biBPY3QgMTEgMTk6Mzc6MjMgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAd2luZWhxLmNvbT4KCgkqIG1pc2MvY29tbWRsZy5jOiBFcmljIFBvdWVjaCAgPGVyaWMucG91ZWNoQGxlbWVsLmZyPgoJQWRkZWQgc3VwcG9ydCBpbiBmaWxlIGRpYWxvZyBib3hlcyBoYW5kbGluZyBmb3IgZmlsdGVycyBsaWtlCgkiKi50eHQ7Ki5iYXQiLgoKCSogd2luMzIva2VybmVsMzIuYywgc2NoZWR1bGVyL3RocmVhZC5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBsb2FkZXIvdGFzay5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIG5ldyBQRSBETEwgaW5pdGFsaXphdGlvbiBjb2RlLCB0cnlpbmcgdG8gY2FsbCB0aGUKCURsbEVudHJ5UG9pbnQgcm91dGluZXMgYWx3YXlzIGluIGNvcnJlY3Qgb3JkZXIgOi0pCglCeXBhc3Mgc25vb3Bpbmcgd2hlbiBnZXR0aW5nIGRhdGEgYnVmZmVyIGFkZHJlc3NlcyAodGh1bmsgYnVmZmVycywKCV9fR1AgaGFuZGxlcnMpIGFuZCBmb3IgMzItYml0IHJvdXRpbmVzIGRpcmVjdGx5IGNhbGxlZCBmcm9tIDE2LWJpdAoJKGR1ZSB0byBzdGFjayBhZGRyZXNzIHNpemUgcHJvYmxlbXMpLgoKCSogd2luMzIvb3JkaW5hbHMuYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCBsb2FkZXIvbmUvbW9kdWxlLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIENvbW1vblVuaW1wU3R1YiwgTWFwSEluc3QoTFN8U0wpX1BOLCBXMzJTX0JhY2tUbzMyLgoJU3R1YiBmb3IgSG91c2VDbGVhbkxvZ2ljYWxseURlYWRIYW5kbGVzLCBmaXhlZCBrMzJ3dnNwcmludGZBLgoKCSogdG9vbHMvYnVpbGQuYywgaWYxNjMyL2tlcm5lbC5zcGVjLCBpZjE2MzIvcmVsYXkuYywgaWYxNjMyL3RodW5rLmM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUltcGxlbWVudGVkIChwYXJ0aWFsbHkpIHRoZSBLRVJORUwgVGh1bmtsZXQgQVBJIGFuZCBDYWxsYmFjayBDbGllbnQKCUFQSSAoS0VSTkVMLjU2MC01NjgsNjA0LTYxMiw2MTktNjIyKS4KCUFkZGVkIHN0dWJzIGZvciBLMjI4LCBLMjM3LCBLRVJORUwuMzY1LCBLRVJORUwuNDQ3LgoKCSogb2JqZWN0cy9iaXRtYXAuYywgaWYxNjMyL2dkaS5zcGVjOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglTdHVicyBmb3IgQ3JlYXRlVXNlcihEaXNjYXJkYWJsZSlCaXRtYXAxNi4KCgkqIG1lbW9yeS9oZWFwLmMsIGluY2x1ZGUvd2lubnQuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJSW1wbGVtZW50ZWQgSEVBUF9XSU5FX0NPREUxNlNFRyBTRUdQVFIgaGVhcHMgd2l0aCAxNi1iaXQgY29kZSBzZWdtZW50cy4KCgkqIG1lbW9yeS9nbG9iYWwuYywgaW5jbHVkZS93aW5kb3dzLmg6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCUdsb2JhbEZpeDE2IGlzIHN1cHBvc2VkIHRvIHJldHVybiBzZWxlY3RvciB0byB0aGUgbWVtb3J5IGFyZWEuCgoJKiBtc2Rvcy92eGQuYywgaWYxNjMyL01ha2VmaWxlLmluLCBpZjE2MzIvYnVpbHRpbi5jLCBpZjE2MzIvY29tbS5zcGVjLCBpZjE2MzIvd3Byb2NzLnNwZWM6CglVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KCVN0dWJzIGZvciBDT01NLkRSViwgUkVCT09ULlZYRCwgVkRELlZYRC4KCgkqIHNjaGVkdWxlci9wcm9jZXNzLmMsIHNjaGVkdWxlci9zeXNsZXZlbC5jLCBpbmNsdWRlL3NpZ19jb250ZXh0LmgsIGluY2x1ZGUvc3lzbGV2ZWwuaDoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJVXNlIGVtZXJnZW5jeSBURUIgc2VsZWN0b3IgdG8gYXZvaWQgZGVidWdnZXIgY3Jhc2hlcyB3aGVuIHN0ZXBwaW5nCgl0aHJvdWdoIHJlbGF5IHN0dWJzIChvciB3aGVuIEZTIGlzIGludmFsaWQgb3RoZXJ3aXNlKS4KCgkqIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9rZXlib2FyZC5jOgoJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CglNT1VTRS5EUlYgcm91dGluZXMgbW92ZWQgdG8gZXZlbnQuYy4gQ2FsbCBtb3VzZSBldmVudCBwcm9jZWR1cmUuCgoJKiB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL3BhaW50aW5nLmMsIHdpbmRvd3Mvc2Nyb2xsLmMsIG9iamVjdHMvY2xpcHBpbmcuYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2RjdmFsdWVzLmMsIGluY2x1ZGUvZGMuaCwgaW5jbHVkZS93aW5kb3dzLmgsIGlmMTYzMi9nZGkuc3BlYywgZ3JhcGhpY3MveDExZHJ2L2JpdGJsdC5jLCBncmFwaGljcy94MTFkcnYvY2xpcHBpbmcuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi90ZXh0LmMsIGdyYXBoaWNzL3BhdGguYzoKCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgoJQ2hhbmdlZCBEQyBtZW1iZXJzIHcuaFZpc1Jnbiwgdy5oQ2xpcFJnbiwgYW1kIHcuaEdDQ2xpcFJnbiB0bwoJY29vcmRpbmF0ZXMgcmVsYXRpdmUgdG8gdGhlIGRldmljZSwgbm90IHRoZSBEQyBvcmlnaW4uIFRoaXMgaXMKCW5lY2Vzc2FyeSB0byBjb3JyZWN0bHkgaW1wbGVtZW50IEdldENsaXBSZ24xNiBhbmQgSW5xdWlyZVZpc1Jnbi4KCVNlbGVjdFZpc1JnbiBhbHNvIGV4cGVjdHMgcmVnaW9uIGluIGRldmljZS1yZWxhdGl2ZSBjb29yZGluYXRlcy4KCUFkYXB0ZWQgdGhlIHJlc3Qgb2YgV2luZSB0byB0aGlzIGNvb3JkaW5hdGUgY2hhbmdlLgoJSW1wbGVtZW50ZWQgRXh0U2VsZWN0Q2xpcFJnbi4KCgkqIHRvb2xzL3dpbmFwaS1jaGVjaywgc2NoZWR1bGVyL3N5c2xldmVsLmMsIGZpbGVzL2Rvc19mcy5jOgoJQW5kcmVhcyBNb2hyIDwxMDAuMzA5MzZAZ2VybWFueS5uZXQ+CglTbWFsbCBmaXguCgoJKiBsb2FkZXIvbmUvc2VnbWVudC5jLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL25lZXhlLmgsIGlmMTYzMi9rZXJuZWwuc3BlYzoKCUFuZHJlYXMgTW9ociA8MTAwLjMwOTM2QGdlcm1hbnkubmV0PgoJWWV0IGFub3RoZXIgc21hbGwgc2VsZi1sb2FkZXIgZml4LgoKCSogZmlsZXMvZHJpdmUuYzogQW5kcmVhcyBNb2hyIDwxMDAuMzA5MzZAZ2VybWFueS5uZXQ+CglGaXhlZCBzZXZlcmUgYnVnOiBTZXRDdXJyZW50RGlyZWN0b3J5MzJBIGRpZG4ndCBzZXQgcFRhc2stPmN1cmRpcgoJY29ycmVjdGx5IGR1ZSB0byBjdXJyZW50IGRyaXZlIGJlaW5nIHNldCB0b28gbGF0ZS4KCgkqIE1ha2UucnVsZXMuaW46IFBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJVXNlICQoQVMpIGluc3RlYWQgb2YgJChDQykgdG8gY29tcGlsZSAucyBmaWxlcy4KCgkqIHJlbGF5MzIvLmN2c2lnbm9yZSwgcmVsYXkzMi9NYWtlZmlsZS5pbiwgcmVsYXkzMi9idWlsdGluMzIuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL21tcmVnLmgsIGlmMTYzMi8uY3ZzaWdub3JlLCBpZjE2MzIvTWFrZWZpbGUuaW4sIGlmMTYzMi9idWlsdGluLmMsIGRsbHMvTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVBhdHJpayBTdHJpZHZhbGwgPHBzQGxlaXNzbmVyLnNlPgoJU3RhcnRlZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgTVNBQ00uRExMLCBNU0FDTTMyLkRMTCBhbmQgSU1BR0VITFAuRExMLgoKCSogaW5jbHVkZS9pbWFnZWhscC5oLCByZWxheTMyL2ltYWdlaGxwLnNwZWMsIGRsbHMvaW1hZ2VobHAvLmN2c2lnbm9yZSwgZGxscy9pbWFnZWhscC9NYWtlZmlsZS5pbiwgZGxscy9pbWFnZWhscC9hY2Nlc3MuYywgZGxscy9pbWFnZWhscC9kZWJ1Zy5jLCBkbGxzL2ltYWdlaGxwL2ltYWdlaGxwX21haW4uYywgZGxscy9pbWFnZWhscC9pbnRlZ3JpdHkuYywgZGxscy9pbWFnZWhscC9pbnRlcm5hbC5jLCBkbGxzL2ltYWdlaGxwL21vZGlmeS5jLCBkbGxzL2ltYWdlaGxwL3N5bWJvbC5jOgoJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglTdGFydGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBJTUFHRUhMUC5ETEwuCgoJKiBpbmNsdWRlL21zYWNtLmgsIGluY2x1ZGUvbXNhY21kcnYuaCwgcmVsYXkzMi9tc2FjbTMyLnNwZWMsIGlmMTYzMi9tc2FjbS5zcGVjLCBkbGxzL21zYWNtMzIvLmN2c2lnbm9yZSwgZGxscy9tc2FjbTMyL01ha2VmaWxlLmluLCBkbGxzL21zYWNtMzIvYnVpbHRpbi5jLCBkbGxzL21zYWNtMzIvZHJpdmVyLmMsIGRsbHMvbXNhY20zMi9maWx0ZXIuYywgZGxscy9tc2FjbTMyL2Zvcm1hdC5jLCBkbGxzL21zYWNtMzIvaW50ZXJuYWwuYywgZGxscy9tc2FjbTMyL21zYWNtMzJfbWFpbi5jLCBkbGxzL21zYWNtMzIvc3RyZWFtLmMsIGRsbHMvbXNhY20vLmN2c2lnbm9yZSwgZGxscy9tc2FjbS9NYWtlZmlsZS5pbiwgZGxscy9tc2FjbS9tc2FjbV9tYWluLmM6CglQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVN0YXJ0ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIE1TQUNNLkRMTCBhbmQgTVNBQ00zMi5ETEwuCgoJKiB3aW4zMi9kZXZpY2UuYzogUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CglSZW1vdmVkIHRoaW5ncyB0aGF0IHdlcmUgZWFybGllciBhZGRlZCBieSBtaXN0YWtlLgoKCSogcmVsYXkzMi93aW5tbS5zcGVjOiBQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KCVRoZSBpbXBsZW1lbnRhdGlvbiBvZiBtbWlvV3JpdGUgaXMgbm93IGNhbGxlZCBpbnN0ZWFkIG9mIHRoZSBzdHViLgoKCSogaW5jbHVkZS9zaGVsbC5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvbGUuYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGRsbHMvc2hlbGwzMi9zaGxmb2xkZXIuYywgZGxscy9zaGVsbDMyL3NobHZpZXcuYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJQnVnZml4ZXMsIHNoZWxsdmlldyB1c2VzIERQQSdzIG5vdywgSVNoZWxsVmlld19HZXRJdGVtT2JqZWN0IGltcGxlbWVudGVkLgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYzoKCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJTmV3IHN0dWJzOiBTSEdldEZpbGVJbmZvMzJXLCBSZWFkQ2FiaW5ldFN0YXRlLCBXcml0ZUNhYmluZXRTdGF0ZSwgSXNVc2VyQWRtaW4uCglJbXBsZW1lbnRlZDogU0hHZXRQYXRoRnJvbUlETGlzdDMyVy4KCUNoYW5nZWQgUGF0aENvbWJpbmUuCgoJKiBpbmNsdWRlL3NobG9iai5oOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBzdHJ1Y3R1cmVzIERWQVNQRUNULCBUWU1FRCwgSURMTGlzdC4KCVNoZWxsIHNwZWNpZmljIGNsaXBib2FyZCBmb3JtYXRzLgoKCSogcmVsYXkzMi93aW5zcG9vbC5zcGVjLCBtaXNjL3ByaW50ZHJ2LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCVN0dWIgRW51bVByaW50ZXJzVy4KCgkqIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmM6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCUltcGxlbWVudGVkIGZpcnN0IGZ1bmN0aW9ucy4KCgkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CglKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KCU5ldyBjbGFzcyBJRExMaXN0ICJJdGVtIElEIExpc3QgTGlzdCIgKGludGVybmFsKS4KCgkqIG1pc2MvdmVyLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU21hbGwgY2hhbmdlcyAodXNlcyBISVdPUkQvTE9XT1JEKS4KCgkqIHdpbmRvd3MvZGlhbG9nLmMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CglTYXQgT2N0IDEwIDEyOjAwOjAwIDE5OTggIEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgoJU3R1YiBDcmVhdGVEaWFsb2dJbmRpcmVjdFBhcmFtQW9yVy4KCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdD4KCURvbid0IGluc3RhbGwgb2JqZWN0IGZpbGVzIHdoZW4gLS1kaXNhYmxlLWxpYiBpcyBzZWxlY3RlZC4KCgkqIGRlYnVnZ2VyL2hhc2guYywgZGVidWdnZXIvbXNjLmM6CglVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQ+CglEb24ndCBwcmludCBuYW1lIGZvciAzMiBiaXQgbGliIG11bHRpcGxlIHRpbWVzLgoJQ2xlYW4gdXAgcHJpbnRpbmcgaW4gREVCVUdfUHJvY2Vzc0RlZmVycmVkRGVidWcuCgoJKiBtZW1vcnkvaGVhcC5jLCBkbGxzL2NvbWN0bDMyL3RhYi5jLCBjb250cm9scy9jb21iby5jOgoJRGF2aWQgTHV5ZXIgPGx1eWVyQHVjcy51d2EuZWR1LmF1PgoJU21hbGwgZml4ZXMuCgoJKiBmaWxlcy9kcml2ZS5jOiBQZXR0ZXIgUmVpbmhvbGR0c2VuIDxwZXJlQHRkLm9yZy51aXQubm8+CglCdWdmaXg6IENoYW5nZWQgR2V0RHJpdmVUeXBlMzJBKE5VTEwpIHRvIHVzZSBjd2QncyByb290LgoKCSogb2xlL3R5cGVsaWIuYywgb2xlL2NvbXBvYmouYywgb2xlL2lmcy5jLCBvbGUvbW9uaWtlci5jLCBvbGUvb2xlMi5jLCBvbGUvb2xlMmRpc3AuYywgb2xlL29sZTJubHMuYywgb2xlL29sZWNsaS5jLCBvbGUvb2xlc3ZyLmMsIG9sZS9zdG9yYWdlLmMsIG1pc2MvbnRkbGwuYywgbWlzYy9yZWdpc3RyeS5jOgoJTWF0dGhldyBCZWNrZXIgPG1iZWNrZXJAZ2xhc3NjaXR5Lm5ldD4KCURvY3VtZW50YXRpb24gY29ycmVjdGlvbnMvc3RhbmRhcmRpemF0aW9ucy4KCgkqIG11bHRpbWVkaWEvYXVkaW8uYywgbXVsdGltZWRpYS9pbml0LmMsIG11bHRpbWVkaWEvbWNpYW5pbS5jLCBtdWx0aW1lZGlhL21jaWNkYS5jLCBtdWx0aW1lZGlhL21jaXN0cmluZy5jLCBtdWx0aW1lZGlhL21pZGkuYywgbXVsdGltZWRpYS9tbXN5c3RlbS5jLCBpbmNsdWRlL21tc3lzdGVtLmgsIGluY2x1ZGUvbXVsdGltZWRpYS5oOgoJRXJpYyBQb3VlY2ggIDxlcmljLnBvdWVjaEBsZW1lbC5mcj4KCVN0YXJ0ZWQgY29kaW5nIDMyIGJpdCBNQ0kgaGFuZGxpbmcuCglBZGRlZCBPcGVuL0Nsb3NlIHRvIGxvdy1sZXZlbCBNQ0kgZHJpdmVycyAoYXVkaW8sIG1pZGksIGFuaW0sIGNkYSkuCglXcm90ZSBNQ0kgTUlESSBzdXBwb3J0LgoKCSogZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmM6IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CglZZXQgYW5vdGhlciBpbXByb3ZlbWVudCB0byB0aGUgYmV6aWVyIGNvZGUuCgoJKiB3aW5kb3dzL21lc3NhZ2UuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KCUdldFRpY2tDb3VudHMoKSBoYXMgYSBncmFudWxhcml0eSBpbiB3aW5kb3dzIG9mIDI1IG1zZWMncy4KCUdpcm90ZWwncyBzZXJpYWwgY29tbXVuaWNhdGlvbiBhcHBlYXJzIHRvIGRlcGVuZCBvbiBpdCwgc28gSSBndWVzcwoJaXQncyBhIGZlYXR1cmUuLi4KCgkqIG1pc2MvY29tbS5jOiBSZWluIEtsYXplcyA8cmtsYXplc0BjYXNlbWEubmV0PgoJVXBkYXRlIHRoZSBtb2RlbW4gc3RhdHVzIGJpdCB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBSTFNEIGxpbmUgaXMKCWFjdGl2ZSBpbiBldmVyeSBjYWxsIHRvIEdldENvbW1FcnJvcigpLiBUaGlzIGlzIG5vdCB0aGUgcHJvcGVyIHBsYWNlLAoJYnV0IHNpbmNlIHdpbmUgZG9lc24ndCBkbyBhbnkgZXZlbnQtc3R1ZmYuLi4KCUZpeGVkIHNvbWUgVFJBQ0UgY2FsbCdzIGZhY2VkIHdpdGggbm9uIHplcm8gdGVybWluYXRlZCBzdHJpbmdzLgoJUmVzdG9yZSB0aGUgdGVybWluYWwgc3RhdGUgYXQgQ2xvc2VDb21tdCB0byB0aGUgc3RhdGUgaXQgd2FzIGF0CglPcGVuQ29tbSgpLCBzbyB0aGUgbW9kZW0gd2lsbCBnbyBvZmYtaG9vay4KCgkqIGxvYWRlci9tb2R1bGUuYzogQWxleGFuZGVyIExhcnNzb24gIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoJR2V0TW9kdWxlRmlsZU5hbWUzMkEoKSByZXR1cm5zIGxvbmcgZmlsZW5hbWUgaWYgYXBwIHNldHMgb3N2ZXJzaW9uID49Cgk0LjAuIEFsc28gbW92ZWQgdGhlIGxvbmcgZmlsZW5hbWUgaGFja2VyeSB0byBHZXRMb25nUGF0aE5hbWUzMkEoKSBzbwoJaXQgY2FuIGJlIHVzZWQgYnkgd2luMzIgcHJvZ3JhbXMuCgoJKiBmaWxlcy9kb3NfZnMuYzogQWxleGFuZGVyIExhcnNzb24gPGFsbGFAbHlzYXRvci5saXUuc2U+CglHZXRMb25nUGF0aE5hbWUzMkEoKSByZXR1cm5zIGRvcyBmb3JtYXQgbG9uZyBmaWxlbmFtZSBpbnN0ZWFkIG9mIHVuaXgKCWZvcm1hdC4KCgkqIGRsbHMvY29tY3RsMzIvbGlzdHZpZXcuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCVNtYWxsIGZpeGVzLgoKCSogcmVsYXkzMi9zaGVsbDMyLnNwZWMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIFNIRmx1c2hDbGlwYm9hcmQuCgoJKiByZWxheTMyL2NvbWN0bDMyLnNwZWMsIGluY2x1ZGUvY29tbWN0cmwuaCwgZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJRml4ZWQgc29tZSB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zLgoJQ2hhbmdlZCBhbGdvcml0aG0gaW4gRFBBX1F1aWNrU29ydCgpLgoJRml4ZWQgaGVhcCBjcmVhdGlvbi9kZXN0cnVjdGlvbiBhbmQgY29udHJvbCBbdW5dcmVnaXN0cmF0aW9uIGluCglDb21DdGwzMkxpYk1haW4oKS4KCgkqIGRsbHMvY29tY3RsMzIvaGVhZGVyLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBhIGJ1Zy4KCgkqIGluY2x1ZGUvdG9vbHRpcHMuaCwgZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIHRyYWNraW5nIHN1cHBvcnQgYW5kIGZpeGVkIGxvYWRpbmcgb2YgcmVzb3VyY2Ugc3RyaW5ncy4KCUFkZGVkIHVucmVnaXN0ZXIgY29kZS4KCgkqIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgaW5jbHVkZS9pcGFkZHJlc3MuaCwgaW5jbHVkZS9uYXRpdmVmb250LmgsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi9pcGFkZHJlc3MuYywgZGxscy9jb21jdGwzMi9uYXRpdmVmb250LmM6CglFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJQWRkZWQgSVBBZGRyZXNzIGFuZCBOYXRpdmVGb250IGNvbnRyb2xzLgoKCSogaW5jbHVkZS9pbWFnZWxpc3QuaCwgZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglTb21lIG1pbm9yIGltcHJvdmVtZW50cy4KCgkqIGluY2x1ZGUvdG9vbGJhci5oLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYzoKCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglJbXByb3ZlZCBkcmF3aW5nIGFuZCBwbGFjZW1lbnQgY29kZS4gRXhwbG9yZXIgc3R5bGUgY29tbW9uIGRpYWxvZ3MgYXJlCglsb29raW5nIGdvb2Qgbm93LgoKCSogb2JqZWN0cy9jdXJzb3JpY29uLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CglGaXhlZCBidWcgaW4gRHJhd0ljb25FeDMyKCkuCgoJKiBtaXNjL21haW4uYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUltcHJvdmVkIEdldFN5c3RlbUluZm9ybWF0aW9uMzJbQS9XXS4KCgkqIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHJlbGF5MzIvdXNlcjMyLnNwZWMsIGluY2x1ZGUvd2luZG93cy5oLCBpZjE2MzIvdXNlci5zcGVjOgoJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCUFkZGVkIERyYXdDYXB0aW9uWzE2LzMyXSBhbmQgRHJhd0NhcHRpb25UZW1wWzE2LzMyQS8zMlddLgoJRml4ZWQgaGFuZGxpbmcgb2YgV1NfRVhfVE9PTFdJTkRPVy4KCgkqIGRvY3VtZW50YXRpb24vY29tbW9uX2NvbnRyb2xzOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgoJVXBkYXRlZC4KCgkqIHdpbmRvd3MvZXZlbnQuYywgd2luZG93cy9rZXlib2FyZC5jLCBpbmNsdWRlL2tleWJvYXJkLmg6CglEYXZpZCBGYXVyZSA8ZmF1cmVAa2RlLm9yZz4KCUFkZGVkIEtFWUJPQVJEX1VwZGF0ZVN0YXRlLCB0byByZWFkIHRoZSBtb2RpZmllcnMgd2hlbiB0aGUgd2luZSBhcHAgaXMKCWFjdGl2YXRlZC4gVXNlcyB0aGUgbmV3IEtFWUJPQVJEX1VwZGF0ZU9uZVN0YXRlLgoJRml4ZWQgYSBwcm9ibGVtIHdpdGggbWVudSBhY2NlbGVyYXRvcnMgKEFsdC1sZXR0ZXIgZ2VuZXJhdGVzIGEgZG93bgoJYXJyb3cgZXZlbnQgd2hpY2ggYmVlcHMgaWYgbm90IGZpbHRlcmVkKS4KCVNwZWVkZWQgdXAgVG9Bc2NpaTE2LzMyKCkgYSBsaXR0bGUgYml0LgoKCSogZGVidWdnZXIvYnJlYWsuYywgZGVidWdnZXIvZGJfZGlzYXNtLmMsIGRlYnVnZ2VyL2RiZy55LCBkZWJ1Z2dlci9leHByLmMsIGRlYnVnZ2VyL3NvdXJjZS5jLCBkZWJ1Z2dlci90eXBlcy5jOgoJT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglNYWRlIFdpbmUncyBkZWJ1Z2dlciB3b3JrIHNhdGlzZmFjdG9yaWx5IHdpdGggRE9TIGFwcHMuCglQZXJoYXBzIGRlcmVmZXJlbmNpbmcgd29yayBiZXR0ZXIgZm9yIFdpbjE2IGFwcHMgdG9vIG5vdywgYnV0CglpdCBhcHBlYXJzIHRoZSBkZWJ1Z2dlciBjb3JlIHdhc24ndCBkZXNpZ25lZCBmb3Igc2VnbWVudGF0aW9uLgoKCSogbXNkb3MvZHBtaS5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCVNpbXVsYXRlcyBEUE1JIG1lbW9yeSBtYXAgYnkgY29udmVydGluZyBsb3dlci1NQiBzZWdtZW50IGJhc2UKCWFkZHJlc3NlcyBhcyBuZWNlc3NhcnkuIEltcGxlbWVudGVkIGFsbG9jYXRpbmcvZnJlZWluZyBET1MgbWVtb3J5CglibG9ja3MuIEFkZGVkIFhNUyBob29rLiAoRFBNSSByZW1haW5zIGRpc2FibGVkIGJ5IGRlZmF1bHQgdW50aWwKCXNvbWVvbmUgaW1wbGVtZW50cyB0aGUgcmF3IG1vZGUgc3dpdGNoIGVudHJ5IHBvaW50cyBwa3VuemlwIG5lZWRzLikKCgkqIG1zZG9zL2ludDIxLmM6IE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoJSSB0aGluayBpdCdzIHRpbWUgdG8gcmV0aGluayB0aGUgSEZJTEUxNl9UT19IRklMRTMyIHN0cmF0ZWd5LAoJY2FuJ3Qga2VlcCB3b3JraW5nIGFyb3VuZCBmbGF3cyBpbiBpdCBsaWtlIHRoaXMgKG5vdyBzdGRpbwoJd2FzIGdldHRpbmcgY2xvc2VkIHdoZW4gcHJvZ3JhbXMgY2xvc2UgaGFuZGxlcyA+PTUpCgoJKiBtc2Rvcy94bXMuYywgbXNkb3MvTWFrZWZpbGUuaW4sIG1zZG9zL2ludDJmLmM6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCUltcGxlbWVudGVkIGJhc2ljIFhNUyBmdW5jdGlvbnMuIHdjYi5leGUgKFdpbjE2IGRpc2Fzc2VtYmxlcikgbm93CglzZWVtcyB0byB3b3JrIGZpbmUgdW5kZXIgV2luZS4KCgkqIGxvYWRlci9kb3MvZG9zdm0uYywgbG9hZGVyL2Rvcy9tb2R1bGUuYywgaW5jbHVkZS9kb3NleGUuaCwgaW5jbHVkZS9taXNjZW11Lmg6CglPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KCU1vdmVkIHNvbWUgc3lzdGVtIGRlcGVuZGVuY2llcyB0byBsb2FkZXIvZG9zL2Rvc3ZtLmMuIEltcGxlbWVudGVkCgllbnZpcm9ubWVudGFsIGFyZ3ZbMF0gcGFzc2luZyB0byBET1MgYXBwcy4gQWRkZWQgWE1TIGhvb2tzLgoKCSogZGVidWdnZXIvc3RhYnMuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CglBZGRlZCBhIG1lbXNldCgpIHRvIHByZXZlbnQgYSBkZWJ1Z2dlciBzZWdmYXVsdCBjYXVzZWQgYnkKCXVuaW5pdGlhbGl6ZWQgcG9pbnRlcnMgaW4gdGhlIHN0YWJzIGxvb2t1cCB0YWJsZXMuCgoJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUEgZmV3IGZpeGVzLgoKCSogcmVsYXkzMi9udGRsbC5zcGVjOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUFkZGVkIFJ0bEFsbG9jYXRlQW5kSW5pdGlhbGl6ZVNpZCBlbnRyeS4KCgkqIGxvYWRlci9NYWtlZmlsZS5pbiwgbG9hZGVyL2VsZi5jLCBsb2FkZXIvbW9kdWxlLmMsIGxvYWRlci9wZV9pbWFnZS5jLCBpbmNsdWRlL2NvbmZpZy5oLmluLCBpbmNsdWRlL21vZHVsZS5oLCBpbmNsdWRlL3BlX2ltYWdlLmgsIGluY2x1ZGUvcGVleGUuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CglNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KCUdlbmVyaWMgZHluYW1pYyBkbGwgbG9hZGVyIHVzaW5nIGRsKigpIEFQSS4KCUluY2x1ZGVzOiBzdGRjYWxsLT5jZGVjbCBtYXBwaW5nIGFiaWxpdHksIHNub29waW5nLgoJKFRlc3RlZCBvbmx5IHdpdGggZ2xpZGUyeC5kbGwgLT4gbGliZ2xpZGUyeC5zbykKCgkqIG11bHRpbWVkaWEvaW5pdC5jLCBtdWx0aW1lZGlhL3RpbWUuYywgaW5jbHVkZS9tbXN5c3RlbS5oLCBpbmNsdWRlL211bHRpbWVkaWEuaDoKCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgd2luMzIgZW5oYW5jZWQgZnVuY3Rpb25hbGl0eSB0byB0aW1lciBjYWxsYmFja3MuCgoJKiB3aW4zMi9jb25zb2xlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJQWRkZWQgYmFkIGhhY2tzIHNvIFdyaXRlQ29uc29sZU91dHB1dCB3b3JrcyBvbiB2dDEwMCBhbmQgUGVla01lc3NhZ2UKCWRvZXMgYXQgbGVhc3QgYSBiaXQgb2Yga2V5Ym9hcmQgaW5wdXQuCgoJKiByZWxheTMyL3Nub29wLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoJU2hvdWxkIGRpc3BsYXkgYWdhaW4uCgpTYXQgT2N0IDEwIDE1OjUyOjQ2IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQHdpbmVocS5jb20+CgoJKiB3aW5kb3dzL2RpYWxvZy5jOiBEYXZlIFBpY2tsZXMgPGRhdmVwQG51Z2F0ZS5kZW1vbi5jby51az4KCUltcGxlbWVudGVkIERTX0NFTlRFUiBkaWFsb2cgc3R5bGUuCgoJKiBtaXNjL21haW4uYzogUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CglBZGRlZCBmdW5jdGlvbiB0byBidWlsZCB0aGUgV2luZG93cyBudW1lcmljIGxhbmd1YWdlIElEIGZyb20gbGFuZ3VhZ2UsCgljb2RlLCBjaGFyc2V0IGFuZCBkaWFsZWN0IHN0cmluZ3MsIGxpa2UgdXNlZCBieSBVbml4IExBTkcgdmFyaWFibGUuCgoJKiBvbGUvb2xlMm5scy5jLCBvbGUvbmxzL1JFQURNRSwgaW5jbHVkZS93aW5ubHMuaCwgb2xlL25scy8qLm5sczoKCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgoJTW9yZSBOTFMgZGF0YS4KCgkqIGdyYXBoaWNzL2RkcmF3LmM6IFBldGVyIFNjaGxhaWxlIDx1ZGJ6QHJ6LnVuaS1rYXJsc3J1aGUuZGU+CglGaXhlZCBhIGxvdCBvZiBidWdzIGluIGRkcmF3LmMgdG8gbWFrZSB4bGliIHN1cHBvcnQgd29yay4KCVJ1bnMgc3VjY2Vzc2Z1bGx5IFRSMkRlbW8gYW5kIEphenogSmFja3JhYmJpdCBJSSBEZW1vIQoKCSogb2JqZWN0cy9nZGlvYmouYzogQ2xpZmYgV3JpZ2h0IDxjbGlmZkBzbmlwZTQ0NC5vcmc+CglBZGRlZCBEQyBvYmplY3QgdHlwZSB0byB0aGUgbGlzdCBvZiB2YWxpZCBvYmplY3RzIHRoYXQgY2FuIGJlIGRlbGV0ZWQKCWJ5IERlbGV0ZU9iamVjdDMyLgoKU3VuIE9jdCAgNCAxODoyMDoyOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgoKCSogQ2hhbmdlTG9nOgoJU3RhcnRpbmcgbmV3IGZvcm1hdCBjaGFuZ2Vsb2cgKG9sZGVyIGNoYW5nZXMgbW92ZWQgdG8KCWRvY3VtZW50YXRpb24vQ2hhbmdlTG9nLk9MRCkuCg==