ZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAppbmRleCBjNjEwZjA5Li5hZTljZGMyIDEwMDY0NAotLS0gYS9SRUFETUUubWQKKysrIGIvUkVBRE1FLm1kCkBAIC00Niw3ICs0Niw3IEBACiBbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9hcGFjaGUvY29tbW9ucy1sYW5nLnN2ZyldKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9hcGFjaGUvY29tbW9ucy1sYW5nKQogWyFbQ292ZXJhZ2UgU3RhdHVzXShodHRwczovL2NvdmVyYWxscy5pby9yZXBvcy9hcGFjaGUvY29tbW9ucy1sYW5nL2JhZGdlLnN2ZyldKGh0dHBzOi8vY292ZXJhbGxzLmlvL3IvYXBhY2hlL2NvbW1vbnMtbGFuZykKIFshW01hdmVuIENlbnRyYWxdKGh0dHBzOi8vbWF2ZW4tYmFkZ2VzLmhlcm9rdWFwcC5jb20vbWF2ZW4tY2VudHJhbC9vcmcuYXBhY2hlLmNvbW1vbnMvY29tbW9ucy1sYW5nMy9iYWRnZS5zdmcpXShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvb3JnLmFwYWNoZS5jb21tb25zL2NvbW1vbnMtbGFuZzMvKQotWyFbSmF2YWRvY3NdKGh0dHBzOi8vamF2YWRvYy5pby9iYWRnZS9vcmcuYXBhY2hlLmNvbW1vbnMvY29tbW9ucy1sYW5nMy8zLjguMS5zdmcpXShodHRwczovL2phdmFkb2MuaW8vZG9jL29yZy5hcGFjaGUuY29tbW9ucy9jb21tb25zLWxhbmczLzMuOC4xKQorWyFbSmF2YWRvY3NdKGh0dHBzOi8vamF2YWRvYy5pby9iYWRnZS9vcmcuYXBhY2hlLmNvbW1vbnMvY29tbW9ucy1sYW5nMy8zLjkuc3ZnKV0oaHR0cHM6Ly9qYXZhZG9jLmlvL2RvYy9vcmcuYXBhY2hlLmNvbW1vbnMvY29tbW9ucy1sYW5nMy8zLjkpCiAKIEFwYWNoZSBDb21tb25zIExhbmcsIGEgcGFja2FnZSBvZiBKYXZhIHV0aWxpdHkgY2xhc3NlcyBmb3IgdGhlCiAgIGNsYXNzZXMgdGhhdCBhcmUgaW4gamF2YS5sYW5nJ3MgaGllcmFyY2h5LCBvciBhcmUgY29uc2lkZXJlZCB0byBiZSBzbwpkaWZmIC0tZ2l0IGEvcG9tLnhtbCBiL3BvbS54bWwKaW5kZXggN2RkNTQ1Ni4uZDQ0Yjg4ZCAxMDA2NDQKLS0tIGEvcG9tLnhtbAorKysgYi9wb20ueG1sCkBAIC00Nyw3ICs0Nyw3IEBACiAgICAgPGNvbm5lY3Rpb24+c2NtOmdpdDpodHRwOi8vZ2l0LXdpcC11cy5hcGFjaGUub3JnL3JlcG9zL2FzZi9jb21tb25zLWxhbmcuZ2l0PC9jb25uZWN0aW9uPgogICAgIDxkZXZlbG9wZXJDb25uZWN0aW9uPnNjbTpnaXQ6aHR0cHM6Ly9naXQtd2lwLXVzLmFwYWNoZS5vcmcvcmVwb3MvYXNmL2NvbW1vbnMtbGFuZy5naXQ8L2RldmVsb3BlckNvbm5lY3Rpb24+CiAgICAgPHVybD5odHRwczovL2dpdC13aXAtdXMuYXBhY2hlLm9yZy9yZXBvcy9hc2Y/cD1jb21tb25zLWxhbmcuZ2l0PC91cmw+Ci0gICAgPHRhZz5MQU5HXzNfOF8xPC90YWc+CisgICAgPHRhZz5jb21tb25zLWxhbmctMy45PC90YWc+CiAgIDwvc2NtPgogCiAgIDxkZXZlbG9wZXJzPgpkaWZmIC0tZ2l0IGEvc3JjL3NpdGUvcmVzb3VyY2VzL3JlbGVhc2Utbm90ZXMvUkVMRUFTRS1OT1RFUy0zLjkudHh0IGIvc3JjL3NpdGUvcmVzb3VyY2VzL3JlbGVhc2Utbm90ZXMvUkVMRUFTRS1OT1RFUy0zLjkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YmJiMjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvc2l0ZS9yZXNvdXJjZXMvcmVsZWFzZS1ub3Rlcy9SRUxFQVNFLU5PVEVTLTMuOS50eHQKQEAgLTAsMCArMSwxMjkzIEBACisgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgQ29tbW9ucyBMYW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAzLjkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMKKworCitJTlRST0RVQ1RJT046CisKK1RoaXMgZG9jdW1lbnQgY29udGFpbnMgdGhlIHJlbGVhc2Ugbm90ZXMgZm9yIHRoZSAzLjkgdmVyc2lvbiBvZiBBcGFjaGUgQ29tbW9ucyBMYW5nLgorQ29tbW9ucyBMYW5nIGlzIGEgc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGFuZCByZXVzYWJsZSBjb21wb25lbnRzIHRoYXQgc2hvdWxkIGJlIG9mIHVzZSBpbiBhbnkgCitKYXZhIGVudmlyb25tZW50LgorCitMYW5nIDMuOSBhbmQgb253YXJkcyBub3cgdGFyZ2V0cyBKYXZhIDguMCwgbWFraW5nIHVzZSBvZiBmZWF0dXJlcyB0aGF0IGFycml2ZWQgd2l0aCBKYXZhIDguMC4KKworRm9yIHRoZSBhZHZpY2Ugb24gdXBncmFkaW5nIGZyb20gMi54IHRvIDMueCwgc2VlIHRoZSBmb2xsb3dpbmcgcGFnZTogCisKKyAgICBodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL2xhbmcvYXJ0aWNsZTNfMC5odG1sCisKK0FwYWNoZSBDb21tb25zIExhbmcsIGEgcGFja2FnZSBvZiBKYXZhIHV0aWxpdHkgY2xhc3NlcyBmb3IgdGhlCitjbGFzc2VzIHRoYXQgYXJlIGluIGphdmEubGFuZydzIGhpZXJhcmNoeSwgb3IgYXJlIGNvbnNpZGVyZWQgdG8gYmUgc28KK3N0YW5kYXJkIGFzIHRvIGp1c3RpZnkgZXhpc3RlbmNlIGluIGphdmEubGFuZy4KKworTmV3IGZlYXR1cmVzIGFuZCBidWcgZml4ZXMuIFJlcXVpcmVzIEphdmEgOCwgc3VwcG9ydHMgSmF2YSA5LCAxMCwgMTEKKworQ2hhbmdlcyBpbiB0aGlzIHZlcnNpb24gaW5jbHVkZToKKworTmV3IGZlYXR1cmVzOgorbyBMQU5HLTE0NDI6IEphdmFkb2MgcG9pbnRpbmcgdG8gQ29tbW9ucyBSTkcuCitvICAgICAgICAgICAgQWRkaW5nIHRoZSBGdW5jdGlvbnMgY2xhc3MuCitvIExBTkctMTQxMTogQWRkIGlzRW1wdHkgbWV0aG9kIHRvIE9iamVjdFV0aWxzIFRoYW5rcyB0byBBbGV4YW5kZXIgVHN2ZXRrb3YuCitvIExBTkctMTQyMjogQWRkIG51bGwtc2FmZSBTdHJpbmdVdGlscy52YWx1ZU9mKGNoYXJbXSkgdG8gZGVsZWdhdGUgdG8gU3RyaW5nLnZhbHVlT2YoY2hhcltdKQorbyBMQU5HLTE0Mjc6IEFkZCBBUEkgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLlN5c3RlbVV0aWxzLmlzSmF2YVZlcnNpb25BdE1vc3QoSmF2YVZlcnNpb24pCisKKworQ2hhbmdlczoKK28gTEFORy0xNDE2OiBBZGQgbW9yZSBTeXN0ZW1VdGlscy5JU19KQVZBX1hYIHZhcmlhbnRzLgorbyBMQU5HLTE0MTY6IFVwZGF0ZSB0byBKVW5pdCA1CitvIExBTkctMTQxNzogQWRkIEBGdW5jdGlvbmFsSW50ZXJmYWNlIHRvIFRocmVhZFByZWRpY2F0ZSBhbmQgVGhyZWFkR3JvdXBQcmVkaWNhdGUKK28gTEFORy0xNDE1OiBVcGRhdGUgSmF2YSBMYW5ndWFnZSByZXF1aXJlbWVudCB0byAxLjgKK28gTEFORy0xNDM2OiBDb25zb2xpZGF0ZSB0aGUgU3RyaW5nVXRpbHMgZXF1YWxzIGFuZCBlcXVhbHNJZ25vcmVDYXNlIEphdmFkb2MgYW5kIGltcGxlbWVudGF0aW9uCitvICAgICAgICAgICAgKGRvYykgRml4IGphdmFkb2MgZm9yICdzdGFydEluZGV4JyBwYXJhbWV0ZXIgb2YgU3RyaW5nVXRpbHMuam9pbigpIG1ldGhvZHMuIEdpdEh1YiBQUiAjNDEyLiBUaGFua3MgdG8gQW5kcmVpIFRyb2llIGFmdDkwLgorCisKK0hpc3RvcmljYWwgbGlzdCBvZiBjaGFuZ2VzOiBodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL3Byb3Blci9jb21tb25zLWxhbmcvY2hhbmdlcy1yZXBvcnQuaHRtbAorCitGb3IgY29tcGxldGUgaW5mb3JtYXRpb24gb24gQXBhY2hlIENvbW1vbnMgTGFuZywgaW5jbHVkaW5nIGluc3RydWN0aW9ucyBvbiBob3cgdG8gc3VibWl0IGJ1ZyByZXBvcnRzLAorcGF0Y2hlcywgb3Igc3VnZ2VzdGlvbnMgZm9yIGltcHJvdmVtZW50LCBzZWUgdGhlIEFwYWNoZSBBcGFjaGUgQ29tbW9ucyBMYW5nIHdlYnNpdGU6CisKK2h0dHA6Ly9jb21tb25zLmFwYWNoZS5vcmcvcHJvcGVyL2NvbW1vbnMtbGFuZy8KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIENvbW1vbnMgTGFuZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMy44LjEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMKKworCitJTlRST0RVQ1RJT046CisKK1RoaXMgZG9jdW1lbnQgY29udGFpbnMgdGhlIHJlbGVhc2Ugbm90ZXMgZm9yIHRoZSAzLjguMSB2ZXJzaW9uIG9mIEFwYWNoZSBDb21tb25zIExhbmcuCitDb21tb25zIExhbmcgaXMgYSBzZXQgb2YgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIHJldXNhYmxlIGNvbXBvbmVudHMgdGhhdCBzaG91bGQgYmUgb2YgdXNlIGluIGFueQorSmF2YSBlbnZpcm9ubWVudC4KKworTGFuZyAzLjAgYW5kIG9ud2FyZHMgbm93IHRhcmdldHMgSmF2YSA3LjAsIG1ha2luZyB1c2Ugb2YgZmVhdHVyZXMgdGhhdCBhcnJpdmVkIHdpdGggSmF2YSA3LjAuCisKK0ZvciB0aGUgYWR2aWNlIG9uIHVwZ3JhZGluZyBmcm9tIDIueCB0byAzLngsIHNlZSB0aGUgZm9sbG93aW5nIHBhZ2U6CisKKyAgICBodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL2xhbmcvYXJ0aWNsZTNfMC5odG1sCisKK0FwYWNoZSBDb21tb25zIExhbmcsIGEgcGFja2FnZSBvZiBKYXZhIHV0aWxpdHkgY2xhc3NlcyBmb3IgdGhlCitjbGFzc2VzIHRoYXQgYXJlIGluIGphdmEubGFuZydzIGhpZXJhcmNoeSwgb3IgYXJlIGNvbnNpZGVyZWQgdG8gYmUgc28KK3N0YW5kYXJkIGFzIHRvIGp1c3RpZnkgZXhpc3RlbmNlIGluIGphdmEubGFuZy4KKworVGhpcyByZWxlYXNlIGlzIGEgYnVnZml4IGZvciBSZXN0b3JpbmcgQnVuZGxlLVN5bWJvbGljTmFtZSBpbiB0aGUgTUFOSUZFU1QubWYgZmlsZS4KKworQ2hhbmdlcyBpbiB0aGlzIHZlcnNpb24gaW5jbHVkZToKKworCitGaXhlZCBCdWdzOgorbyBMQU5HLTE0MTk6IFJlc3RvcmUgQnVuZGxlU3ltYm9saWNOYW1lIGZvciBPU0dpCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgICAgICAgICAgICAgICAgIEFwYWNoZSBDb21tb25zIExhbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMuOAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSBOb3RlcworCisKK0lOVFJPRFVDVElPTjoKKworVGhpcyBkb2N1bWVudCBjb250YWlucyB0aGUgcmVsZWFzZSBub3RlcyBmb3IgdGhlIDMuOCB2ZXJzaW9uIG9mIEFwYWNoZSBDb21tb25zIExhbmcuCitDb21tb25zIExhbmcgaXMgYSBzZXQgb2YgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIHJldXNhYmxlIGNvbXBvbmVudHMgdGhhdCBzaG91bGQgYmUgb2YgdXNlIGluIGFueQorSmF2YSBlbnZpcm9ubWVudC4KKworTGFuZyAzLjAgYW5kIG9ud2FyZHMgbm93IHRhcmdldHMgSmF2YSA3LjAsIG1ha2luZyB1c2Ugb2YgZmVhdHVyZXMgdGhhdCBhcnJpdmVkIHdpdGggSmF2YSA3LjAuCisKK0ZvciB0aGUgYWR2aWNlIG9uIHVwZ3JhZGluZyBmcm9tIDIueCB0byAzLngsIHNlZSB0aGUgZm9sbG93aW5nIHBhZ2U6CisKKyAgICBodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL2xhbmcvYXJ0aWNsZTNfMC5odG1sCisKK0FwYWNoZSBDb21tb25zIExhbmcsIGEgcGFja2FnZSBvZiBKYXZhIHV0aWxpdHkgY2xhc3NlcyBmb3IgdGhlCitjbGFzc2VzIHRoYXQgYXJlIGluIGphdmEubGFuZydzIGhpZXJhcmNoeSwgb3IgYXJlIGNvbnNpZGVyZWQgdG8gYmUgc28KK3N0YW5kYXJkIGFzIHRvIGp1c3RpZnkgZXhpc3RlbmNlIGluIGphdmEubGFuZy4KKworTmV3IGZlYXR1cmVzIGFuZCBidWcgZml4ZXMuIFJlcXVpcmVzIEphdmEgNywgc3VwcG9ydHMgSmF2YSA4LCA5LCAxMC4KKworQ2hhbmdlcyBpbiB0aGlzIHZlcnNpb24gaW5jbHVkZToKKworTmV3IGZlYXR1cmVzOgorbyBMQU5HLTEzNTI6IEVudW1VdGlscy5nZXRFbnVtSWdub3JlQ2FzZSBhbmQgaXNWYWxpZEVudW1JZ25vcmVDYXNlIG1ldGhvZHMgYWRkZWQgVGhhbmtzIHRvIFJ1c2xhbiBTaWJnYXR1bGxpbi4KK28gTEFORy0xMzcyOiBBZGQgVG9TdHJpbmdTdW1tYXJ5IGFubm90YXRpb24gVGhhbmtzIHRvIFPpcmdpbyBPemFraS4KK28gTEFORy0xMzU2OiBBZGQgYnlwYXNzIG9wdGlvbiBmb3IgY2xhc3NlcyB0byByZWN1cnNpdmUgYW5kIHJlZmxlY3RpdmUgRXF1YWxzQnVpbGRlciBUaGFua3MgdG8gWWF0aG9zIFVHLgorbyBMQU5HLTEzOTE6IEltcHJvdmUgSmF2YWRvYyBmb3IgU3RyaW5nVXRpbHMuaXNBbnlFbXB0eShudWxsKSBUaGFua3MgdG8gU2F1cm8gTWF0dWxsaSwgT2xlZyBDaHViYXJ5b3YuCitvIExBTkctMTM5MzogQWRkIEFQSSBTeXN0ZW1VdGlscy5TdHJpbmcgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZShmaW5hbCBTdHJpbmcgbmFtZSwgZmluYWwgU3RyaW5nIGRlZmF1bHRWYWx1ZSkgVGhhbmtzIHRvIEdhcnkgR3JlZ29yeS4KK28gTEFORy0xMzk0OiBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuU3lzdGVtVXRpbHMgc2hvdWxkIG5vdCB3cml0ZSB0byBTeXN0ZW0uZXJyLiBUaGFua3MgdG8gU2ViYiwgR2FyeSBHcmVnb3J5LgorbyBMQU5HLTEyMzg6IEFkZCBSZWdleFV0aWxzIGNsYXNzIGluc3RlYWQgb2Ygb3ZlcmxvYWRpbmcgbWV0aG9kcyBpbiBTdHJpbmdVdGlscyB0aGF0IHRha2UgYSByZWdleCB0byB0YWtlIHByZWNvbXBpbGVkIFBhdHRlcm4uIFRoYW5rcyB0byBDaHJpc3RvcGhlciBDb3JkZWlybywgR2FyeSBHcmVnb3J5LCBCcnVubyBQLiBLaW5vc2hpdGEsIE9sZWcgQ2h1YmFyeW92LgorbyBMQU5HLTEzOTA6IFN0cmluZ1V0aWxzLmpvaW4oKSB3aXRoIHN1cHBvcnQgZm9yIExpc3Q8Pz4gd2l0aCBjb25maWd1cmFibGUgc3RhcnQvZW5kIGluZGljZXMuIFRoYW5rcyB0byBKb2NoZW4gU2NoYWxhbmRhLgorbyBMQU5HLTEzOTI6IE1ldGhvZHMgZm9yIGdldHRpbmcgZmlyc3Qgbm9uIGVtcHR5IG9yIG5vbiBibGFuayB2YWx1ZSBUaGFua3MgdG8gSmVmZiBOZWxzb24uCitvIExBTkctMTQwODogUm91bmRpbmcgdXRpbGl0aWVzIGZvciBjb252ZXJ0aW5nIHRvIEJpZ0RlY2ltYWwKKworRml4ZWQgQnVnczoKK28gTEFORy0xMzgwOiBGYXN0RGF0ZVBhcnNlciB0b28gc3RyaWN0IG9uIGFiYnJldmlhdGVkIHNob3J0IG1vbnRoIHN5bWJvbHMgVGhhbmtzIHRvIE1hcmt1cyBKZWxzbWEuCitvIExBTkctMTM5NjogSnNvblRvU3RyaW5nU3R5bGUgZG9lcyBub3QgZXNjYXBlIHN0cmluZyBuYW1lcworbyBMQU5HLTEzOTU6IEpzb25Ub1N0cmluZ1N0eWxlIGRvZXMgbm90IGVzY2FwZSBkb3VibGUgcXVvdGUgaW4gYSBzdHJpbmcgdmFsdWUgVGhhbmtzIHRvIEppbSBHYW4uCitvIExBTkctMTM4NDogTmV3IEphdmEgdmVyc2lvbiAoIjExIikgbXVzdCBiZSBoYW5kbGVkIFRoYW5rcyB0byBJYW4gWW91bmcuCitvIExBTkctMTM2NDogRXhjZXB0aW9uVXRpbHMjZ2V0Um9vdENhdXNlKFRocm93YWJsZSB0KSBzaG91bGQgcmV0dXJuIHQgaWYgbm8gbG93ZXIgbGV2ZWwgY2F1c2UgZXhpc3RzIFRoYW5rcyB0byBaaGVuZyBYaWUuCitvIExBTkctMTA2MDogTnVtYmVyVXRpbHMuaXNOdW1iZXIgYXNzdW1lcyBudW1iZXIgc3RhcnRpbmcgd2l0aCBaZXJvIFRoYW5rcyB0byBQaW90ciBLb3NtYWxhLgorbyBMQU5HLTEzNzU6IGRlZmF1bHRTdHJpbmcoZmluYWwgU3RyaW5nIHN0cikgaW4gU3RyaW5nVXRpbHMgdG8gcmV1c2UgZGVmYXVsdFN0cmluZyhmaW5hbCBTdHJpbmcgc3RyLCBmaW5hbCBTdHJpbmcgZGVmYXVsdFN0cikgVGhhbmtzIHRvIEplcnJ5IFpoYW8uCitvIExBTkctMTM3NDogUGFyc2luZyBKc29uIEFycmF5IGZhaWxlZCBUaGFua3MgdG8gSmFzd2FudGggQmFsYS4KK28gTEFORy0xMzcxOiBGaXggVHlwZVV0aWxzI3BhcmFtZXRlcml6ZSB0byB3b3JrIGNvcnJlY3RseSB3aXRoIG5hcnJvd2VyLXR5cGVkIGFycmF5IFRoYW5rcyB0byBEbWl0cnkgT3ZjaGlubmlrb3YuCitvIExBTkctMTM3MDogRml4IEV2ZW50Q291bnRDaXJjdWl0QnJlYWtlciBpbmNyZW1lbnQgYmF0Y2ggVGhhbmtzIHRvIEFuZHJlIERpZWIuCitvIExBTkctMTM4NTogTnVtYmVyVXRpbHMuY3JlYXRlTnVtYmVyKCkgdGhyb3dzIFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaW5zdGVhZCBvZiBOdW1iZXJGb3JtYXRFeGNlcHRpb24gVGhhbmtzIHRvIFJvaGFuIFBhZGh5ZS4KK28gTEFORy0xMzk3OiBXb3JkVXRpbHMud3JhcCB0aHJvd3MgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiB3aGVuIHdyYXBMZW5ndGggaXMgSW50ZWdlci5NQVhfVkFMVUUuIFRoYW5rcyB0byBUYWthbm9idSBBc2FudW1hLgorbyBMQU5HLTE0MDE6IFR5cG8gaW4gSmF2YURvYyBmb3IgbGFzdEluZGV4T2YgVGhhbmtzIHRvIFJvbWFuIEdvbHlzaGV2LCBBbGV4IE1hbWVkb3YuCisKK0NoYW5nZXM6CitvIExBTkctMTM2NzogT2JqZWN0VXRpbHMuaWRlbnRpdHlUb1N0cmluZyhPYmplY3QpIGFuZCBmcmllbmRzIHNob3VsZCBhbGxvY2F0ZSBidWlsZGVycyBhbmQgYnVmZmVycyB3aXRoIGEgc2l6ZSBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LgorbyBMQU5HLTE0MDU6IFJlbW92ZSBjaGVja3MgZm9yIGphdmEgdmVyc2lvbnMgYmVsb3cgdGhlIG1pbmltdW0gc3VwcG9ydGVkIG9uZSBUaGFua3MgdG8gTGFycyBHcmVmZXIuCitvIExBTkctMTQwMjogTnVsbC9pbmRleCBzYWZlIGdldCBtZXRob2RzIGZvciBBcnJheVV0aWxzIFRoYW5rcyB0byBNYXJrIERhY2VrLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgQ29tbW9ucyBMYW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAzLjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMKKworCitJTlRST0RVQ1RJT046CisKK1RoaXMgZG9jdW1lbnQgY29udGFpbnMgdGhlIHJlbGVhc2Ugbm90ZXMgZm9yIHRoZSAzLjcgdmVyc2lvbiBvZiBBcGFjaGUgQ29tbW9ucyBMYW5nLgorQ29tbW9ucyBMYW5nIGlzIGEgc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGFuZCByZXVzYWJsZSBjb21wb25lbnRzIHRoYXQgc2hvdWxkIGJlIG9mIHVzZSBpbiBhbnkKK0phdmEgZW52aXJvbm1lbnQuCisKK0xhbmcgMy4wIGFuZCBvbndhcmRzIG5vdyB0YXJnZXRzIEphdmEgNS4wLCBtYWtpbmcgdXNlIG9mIGZlYXR1cmVzIHRoYXQgYXJyaXZlZCB3aXRoIEphdmEgNS4wIHN1Y2ggYXMgZ2VuZXJpY3MsCit2YXJpYWJsZSBhcmd1bWVudHMsIGF1dG9ib3hpbmcsIGNvbmN1cnJlbmN5IGFuZCBmb3JtYXR0ZWQgb3V0cHV0LgorCitGb3IgdGhlIGFkdmljZSBvbiB1cGdyYWRpbmcgZnJvbSAyLnggdG8gMy54LCBzZWUgdGhlIGZvbGxvd2luZyBwYWdlOgorCisgICAgaHR0cDovL2NvbW1vbnMuYXBhY2hlLm9yZy9sYW5nL2FydGljbGUzXzAuaHRtbAorCitBcGFjaGUgQ29tbW9ucyBMYW5nLCBhIHBhY2thZ2Ugb2YgSmF2YSB1dGlsaXR5IGNsYXNzZXMgZm9yIHRoZQorY2xhc3NlcyB0aGF0IGFyZSBpbiBqYXZhLmxhbmcncyBoaWVyYXJjaHksIG9yIGFyZSBjb25zaWRlcmVkIHRvIGJlIHNvCitzdGFuZGFyZCBhcyB0byBqdXN0aWZ5IGV4aXN0ZW5jZSBpbiBqYXZhLmxhbmcuCisKK05ldyBmZWF0dXJlcyBhbmQgYnVnIGZpeGVzLiBSZXF1aXJlcyBKYXZhIDcsIHN1cHBvcnRzIEphdmEgOCwgOSwgMTAuCisKK0NoYW5nZXMgaW4gdGhpcyB2ZXJzaW9uIGluY2x1ZGU6CisKK05ldyBmZWF0dXJlczoKK28gTEFORy0xMzU1OiBUaW1lWm9uZS5nZXRUaW1lWm9uZSgpIGluIEZhc3REYXRlUGFyc2VyIGNhdXNlcyByZXNvdXJjZSBjb250ZW50aW9uIChQUiAjMjk2LikgVGhhbmtzIHRvIENoYXMgSG9udG9uLgorbyBMQU5HLTEzNjA6IEFkZCBtZXRob2RzIHRvIE9iamVjdFV0aWxzIHRvIGdldCB2YXJpb3VzIGZvcm1zIG9mIGNsYXNzIG5hbWVzIGluIGEgbnVsbC1zYWZlIG1hbm5lciBUaGFua3MgdG8gR2FyeSBHcmVnb3J5LgorCitGaXhlZCBCdWdzOgorbyBMQU5HLTEzNjI6IEZpeCB0ZXN0cyBEYXRlVXRpbHNUZXN0IGZvciBKYXZhIDkgd2l0aCBlbl9HQiBsb2NhbGUgVGhhbmtzIHRvIFN0ZXBoZW4gQ29sZWJvdXJuZS4KK28gTEFORy0xMzY1OiBGaXggTnVsbFBvaW50ZXJFeGNlcHRpb24gaW4gaXNKYXZhVmVyc2lvbkF0TGVhc3Qgb24gSmF2YSAxMCwgYWRkIFN5c3RlbVV0aWxzLklTX0pBVkFfMTAsIGFkZCBKYXZhVmVyc2lvbi5KQVZBXzEwIFRoYW5rcyB0byBHYXJ5IEdyZWdvcnkuCitvIExBTkctMTM0ODogU3RhY2tPdmVyZmxvd0Vycm9yIG9uIFR5cGVVdGlscy50b1N0cmluZyguLi4pIGZvciBhIGdlbmVyaWMgcmV0dXJuIHR5cGUgb2YgRW51bS52YWx1ZU9mIFRoYW5rcyB0byBtYnVzc28uCitvIExBTkctMTM1MDogQ29uc3RydWN0b3JVdGlscy5pbnZva2VDb25zdHJ1Y3RvcihDbGFzcywgT2JqZWN0Li4uKSByZWdyZXNzaW9uIFRoYW5rcyB0byBCcmV0dCBLYWlsLgorbyBMQU5HLTEzNDk6IEVxdWFsc0J1aWxkZXIjaXNSZWdpc3RlcmVkOiBzd2FwcGVkUGFpciBjb25zdHJ1Y3Rpb24gYnVnIFRoYW5rcyB0byBOYW1hbiBOaWdhbS4KK28gTEFORy0xMzU3OiBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMudGltZS5GYXN0RGF0ZVBhcnNlciBzaG91bGQgdXNlIHRvVXBwZXJDYXNlKExvY2FsZSkgVGhhbmtzIHRvIEJydWNlS3VpTGl1LgorCitDaGFuZ2VzOgorbyBMQU5HLTEzNTg6IEltcHJvdmUgU3RyaW5nVXRpbHMjcmVwbGFjZSB0aHJvdWdocHV0IFRoYW5rcyB0byBTdGVwaGFuZSBMYW5kZWxsZS4KK28gTEFORy0xMzQ2OiBSZW1vdmUgZGVwcmVjYXRpb24gZnJvbSBSYW5kb21TdHJpbmdVdGlscworbyBMQU5HLTEzNjE6IEV4Y2VwdGlvblV0aWxzLmdldFRocm93YWJsZUxpc3QoKSBpcyB1c2luZyBkZXByZWNhdGVkIEV4Y2VwdGlvblV0aWxzLmdldENhdXNlKCkgVGhhbmtzIHRvIEFuYS4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgQ29tbW9ucyBMYW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAzLjYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMKKworCitJTlRST0RVQ1RJT046CisKK1RoaXMgZG9jdW1lbnQgY29udGFpbnMgdGhlIHJlbGVhc2Ugbm90ZXMgZm9yIHRoZSAzLjYgdmVyc2lvbiBvZgorQXBhY2hlIENvbW1vbnMgTGFuZyBhcyB3ZWxsIGFzIGEgaGlzdG9yeSBhbGwgY2hhbmdlcyBpbiB0aGUgQ29tbW9ucyBMYW5nIDMueAorcmVsZWFzZSBsaW5lLiBDb21tb25zIExhbmcgaXMgYSBzZXQgb2YgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIHJldXNhYmxlCitjb21wb25lbnRzIHRoYXQgc2hvdWxkIGJlIG9mIHVzZSBpbiBhbnkgSmF2YSBlbnZpcm9ubWVudC4gQ29tbW9ucyBMYW5nIDMuNiBhdAorbGVhc3QgcmVxdWlyZXMgSmF2YSA3LjAuIE5vdGUgdGhhdCB0aGlzIGhhcyBjaGFuZ2VkIGZyb20gQ29tbW9ucyBMYW5nIDMuNSwgd2hpY2gKK29ubHkgcmVxdWlyZWQgSmF2YSAxLjYuCisKK0ZvciB0aGUgYWR2aWNlIG9uIHVwZ3JhZGluZyBmcm9tIDIueCB0byAzLngsIHNlZSB0aGUgZm9sbG93aW5nIHBhZ2U6CisKKyAgICBodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL2xhbmcvYXJ0aWNsZTNfMC5odG1sCisKK0hJR0hMSUdIVFMKKz09PT09PT09PT0KKworU29tZSBvZiB0aGUgaGlnaGxpZ2h0cyBpbiB0aGlzIHJlbGVhc2UgaW5jbHVkZToKKworbyBUaGUgY2xhc3Mgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLmNvbmN1cnJlbnQuTWVtb2l6ZXIgaXMgYW4gaW1wbGVtZW50YXRpb24KKyAgICBvZiB0aGUgTWVtb2l6ZXIgcGF0dGVybiBhcyBzaG93biBpbgorICAgIEdvZXR6LCBCcmlhbiBldCBhbC4gKDIwMDYpIC0gSmF2YSBDb25jdXJyZW5jeSBpbiBQcmFjdGljZSwgcC4gMTA4LgorbyBUaGUgY2xhc3Mgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLkFyY2hVdGlscyBoYXMgYmVlbiBhZGRlZC4gQXJjaFV0aWxzIGlzCisgICAgYSB1dGlsaXR5IGNsYXNzIGZvciB0aGUgIm9zLmFyY2giIHN5c3RlbSBwcm9wZXJ0eS4KKworREVQUkVDQVRJT05TCis9PT09PT09PT09PT0KKworVGhlIEFwYWNoZSBDb21tb25zIENvbW11bml0eSBoYXMgcmVjZW50bHkgc2V0IHVwIHRoZSBDb21tb25zIFRleHQgY29tcG9uZW50CithcyBhIGhvbWUgZm9yIGFsZ29yaXRobXMgd29ya2luZyBvbiBzdHJpbmdzLiBGb3IgdGhpcyByZWFzb24gbW9zdCBvZiB0aGUgc3RyaW5nCitmb2N1c2VkIGZ1bmN0aW9uYWxpdHkgaW4gQ29tbW9ucyBMYW5nIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIG1vdmVkIHRvCitDb21tb25zIFRleHQuIFRoaXMgaW5jbHVkZXM6CisKK28gQWxsIGNsYXNzZXMgaW4gdGhlIG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy50ZXh0IGFuZCB0aGUKKyAgICBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMudGV4dC50cmFuc2xhdGUgcGFja2FnZXMKK28gb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLlN0cmluZ0VzY2FwZVV0aWxzCitvIG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5SYW5kb21TdHJpbmdVdGlscworbyBUaGUgbWV0aG9kcyBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuU3RyaW5nVXRpbHMuZ2V0SmFyb1dpbmtsZXJEaXN0YW5jZSBhbmQKKyAgICBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuU3RyaW5nVXRpbHMuZ2V0TGV2ZW5zaHRlaW5EaXN0YW5jZQorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIENvbW1vbnMgVGV4dCB3ZWJzaXRlOgorCisgICAgaHR0cDovL2NvbW1vbnMuYXBhY2hlLm9yZy90ZXh0CisKK1RoZSBjbGFzcyBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuQ2hhckVuY29kaW5nIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YKK2phdmEubmlvLmNoYXJzZXQuU3RhbmRhcmRDaGFyc2V0cy4KKworVGhlIGZvbGxvd2luZyBtZXRob2RzIGhhdmUgYmVlbiBkZXByZWNhdGVkIGluCitvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuQXJyYXlVdGlscyBpbiBmYXZvciBvZiB0aGUgY29ycmVzcG9uZGluZyBpbnNlcnQKK21ldGhvZHMuIE5vdGUgdGhhdCB0aGUgaGFuZGxpbmcgZm9yIG51bGwgaW5wdXRzIGRpZmZlcnMgYmV0d2VlbiBhZGQgYW5kIGluc2VydC4KKworbyBhZGQoYm9vbGVhbltdLCBpbnQsIGJvb2xlYW4pIC0+IGluc2VydChpbnQsIGJvb2xlYW5bXSwgYm9vbGVhbi4uLikKK28gYWRkKGJ5dGVbXSwgaW50LCBib29sZWFuKSAgICAtPiBpbnNlcnQoaW50LCBieXRlW10sIGJ5dGUuLi4pCitvIGFkZChjaGFyW10sIGludCwgYm9vbGVhbikgICAgLT4gaW5zZXJ0KGludCwgY2hhcltdLCBjaGFyLi4uKQorbyBhZGQoZG91YmxlW10sIGludCwgYm9vbGVhbikgIC0+IGluc2VydChpbnQsIGRvdWJsZVtdLCBkb3VibGUuLi4pCitvIGFkZChmbG9hdFtdLCBpbnQsIGJvb2xlYW4pICAgLT4gaW5zZXJ0KGludCwgZmxvYXRbXSwgZmxvYXQuLi4pCitvIGFkZChpbnRbXSwgaW50LCBib29sZWFuKSAgICAgLT4gaW5zZXJ0KGludCwgaW50W10sIGludC4uLikKK28gYWRkKGxvbmdbXSwgaW50LCBib29sZWFuKSAgICAtPiBpbnNlcnQoaW50LCBsb25nW10sIGxvbmcuLi4pCitvIGFkZChzaG9ydFtdLCBpbnQsIGJvb2xlYW4pICAgLT4gaW5zZXJ0KGludCwgc2hvcnRbXSwgc2hvcnQuLi4pCitvIGFkZChUW10sIGludCwgYm9vbGVhbikgICAgICAgLT4gaW5zZXJ0KGludCwgVFtdLCBULi4uKQorCisKK0NPTVBBVElCSUxJVFkgV0lUSCBKQVZBIDkKKz09PT09PT09PT09PT09PT09PQorCitUaGUgTUFOSUZFU1QuTUYgbm93IGNvbnRhaW5zIGFuIGFkZGl0aW9uYWwgZW50cnk6CisKKyAgQXV0b21hdGljLU1vZHVsZS1OYW1lOiBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMKKworVGhpcyBzaG91bGQgbWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgQ29tbW9ucyBMYW5nIDMuNiBhcyBhIG1vZHVsZSBpbiB0aGUgSmF2YSA5Cittb2R1bGUgc3lzdGVtLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIGNvcnJlc3BvbmRpbmcgaXNzdWUgYW5kIHRoZQorcmVmZXJlbmNlZCBtYWlsaW5nIGxpc3QgZGlzY3Vzc2lvbnM6CisKKyAgICBodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL0xBTkctMTMzOAorCitUaGUgYnVpbGQgcHJvYmxlbXMgcHJlc2VudCBpbiB0aGUgMy41IHJlbGVhc2UgaGF2ZSBiZWVuIHJlc29sdmVkLiBCdWlsZGluZworQ29tbW9ucyBMYW5nIDMuNiBzaG91bGQgd29yayBvdXQgb2YgdGhlIGJveCB3aXRoIHRoZSBsYXRlc3QgSmF2YSA5IEVBIGJ1aWxkLgorUGxlYXNlIHJlcG9ydCBhbnkgSmF2YSA5IHJlbGF0ZWQgaXNzdWVzIGF0OgorCisgICAgaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9MQU5HCisKK05FVyBGRUFUVVJFUworPT09PT09PT09PT09CisKK28gTEFORy0xMzM2OiBBZGQgTlVMIEJ5dGUgVG8gQ2hhclV0aWxzLiBUaGFua3MgdG8gQmVsdWdhIEJlaHIuCitvIExBTkctMTMwNDogQWRkIG1ldGhvZCBpbiBTdHJpbmdVdGlscyB0byBkZXRlcm1pbmUgaWYgc3RyaW5nIGNvbnRhaW5zIGJvdGgKKyAgICAgICAgICAgICBtaXhlZCBjYXNlZCBjaGFyYWN0ZXJzLiBUaGFua3MgdG8gQW5keSBLbGltY3phay4KK28gTEFORy0xMzI1OiBJbmNyZWFzZSB0ZXN0IGNvdmVyYWdlIG9mIFRvU3RyaW5nQnVpbGRlciBjbGFzcyB0byAxMDAlLgorICAgICAgICAgICAgIFRoYW5rcyB0byBBcnNoYWQgQmFzaGEuCitvIExBTkctMTMwNzogQWRkIGEgbWV0aG9kIGluIFN0cmluZ1V0aWxzIHRvIGV4dHJhY3Qgb25seSBkaWdpdHMgb3V0IG9mIGlucHV0CisgICAgICAgICAgICAgc3RyaW5nLiBUaGFua3MgdG8gQXJzaGFkIEJhc2hhLgorbyBMQU5HLTEyNTY6IEFkZCBKTUggbWF2ZW4gZGVwZW5kZW5jaWVzLiBUaGFua3MgdG8gQzByV2luLgorbyBMQU5HLTExNjc6IEFkZCBudWxsIGZpbHRlciB0byBSZWZsZWN0aW9uVG9TdHJpbmdCdWlsZGVyLgorICAgICAgICAgICAgIFRoYW5rcyB0byBNYXJrIERhY2VrLgorbyBMQU5HLTEyOTk6IEFkZCBtZXRob2QgZm9yIGNvbnZlcnRpbmcgc3RyaW5nIHRvIGFuIGFycmF5IG9mIGNvZGUgcG9pbnRzLgorbyBMQU5HLTY2MDogIEFkZCBtZXRob2RzIHRvIGluc2VydCBhcnJheXMgaW50byBhcnJheXMgYXQgYW4gaW5kZXguCitvIExBTkctMTAzNDogQWRkIHN1cHBvcnQgZm9yIHJlY3Vyc2l2ZSBjb21wYXJpc29uIHRvCisgICAgICAgICAgICAgRXF1YWxzQnVpbGRlciNyZWZsZWN0aW9uRXF1YWxzLiBUaGFua3MgdG8gWWF0aG9zIFVHLgorbyBMQU5HLTEwNjc6IEFkZCBhIHJlZmxlY3Rpb24tYmFzZWQgdmFyaWFudCBvZiBEaWZmQnVpbGRlci4KK28gTEFORy03NDA6ICBJbXBsZW1lbnRhdGlvbiBvZiBhIE1lbW9taXplci4gVGhhbmtzIHRvIEphbWVzIFNhd2xlLgorbyBMQU5HLTEyNTg6IEFkZCBBcnJheVV0aWxzI3RvU3RyaW5nQXJyYXkgbWV0aG9kLgorICAgICAgICAgICAgIFRoYW5rcyB0byBJRywgR3J6ZWdvcnogUm8/bmllY2tpLgorbyBMQU5HLTExNjA6IFN0cmluZ1V0aWxzI2FiYnJldmlhdGUgc2hvdWxkIHN1cHBvcnQgJ2N1c3RvbSBlbGxpcHNlcycgcGFyYW1ldGVyLgorbyBMQU5HLTEyOTM6IEFkZCBTdHJpbmdVdGlscyNpc0FsbEVtcHR5IGFuZCAjaXNBbGxCbGFuayBtZXRob2RzLgorICAgICAgICAgICAgIFRoYW5rcyB0byBQaWVycmUgVGVtcGxpZXIsIE1hcnRpbiBUYXJqYW55aS4KK28gTEFORy0xMzEzOiBBZGQgQXJjaFV0aWxzIC0gQW4gdXRpbGl0eSBjbGFzcyBmb3IgdGhlICJvcy5hcmNoIiBzeXN0ZW0gcHJvcGVydHkuCisgICAgICAgICAgICAgVGhhbmtzIHRvIFRvbXNjaGkuCitvIExBTkctMTI3MjogQWRkIHNodWZmbGUgbWV0aG9kcyB0byBBcnJheVV0aWxzLgorbyBMQU5HLTEzMTc6IEFkZCBNZXRob2RVdGlscyNmaW5kQW5ub3RhdGlvbiBhbmQgZXh0ZW5kCisgICAgICAgICAgICAgTWV0aG9kVXRpbHMjZ2V0TWV0aG9kc1dpdGhBbm5vdGF0aW9uIGZvciBub24tcHVibGljLCBzdXBlci1jbGFzcworICAgICAgICAgICAgIGFuZCBpbnRlcmZhY2UgbWV0aG9kcy4gVGhhbmtzIHRvIFlhc3NlciBaYW1hbmkuCitvIExBTkctMTMzMTogQWRkIEltbXV0YWJsZVBhaXIubnVsbFBhaXIoKS4KK28gTEFORy0xMzMyOiBBZGQgSW1tdXRhYmxlVHJpcGxlLm51bGxUcmlwbGUoKS4KKworRklYRUQgQlVHUworPT09PT09PT09PQorCitvIExBTkctMTMzNzogRml4IHRlc3QgZmFpbHVyZXMgaW4gSUJNIEpESyA4IGZvciBUb1N0cmluZ0J1aWxkZXJUZXN0LgorbyBMQU5HLTEzMTk6IE11bHRpbGluZVJlY3Vyc2l2ZVRvU3RyaW5nU3R5bGUgU3RhY2tPdmVyZmxvd0Vycm9yIHdoZW4gb2JqZWN0IGlzCisgICAgICAgICAgICAgYW4gYXJyYXkuCitvIExBTkctMTMyMDogTG9jYWxlVXRpbHMjdG9Mb2NhbGUgZG9lcyBub3Qgc3VwcG9ydCBsYW5ndWFnZSBmb2xsb3dlZCBieSBVTiBNLjQ5CisgICAgICAgICAgICAgbnVtZXJpYy0zIGFyZWEgY29kZSBmb2xsb3dlZCBieSB2YXJpYW50LgorbyBMQU5HLTEzMDA6IENsYXJpZnkgb3IgaW1wcm92ZSBiZWhhdmlvdXIgb2YgaW50LWJhc2VkIGluZGV4T2YgbWV0aG9kcyBpbgorICAgICAgICAgICAgIFN0cmluZ1V0aWxzLiBUaGFua3MgdG8gTWFyayBEYWNlay4KK28gTEFORy0xMjg2OiBSYW5kb21TdHJpbmdVdGlscyByYW5kb20gbWV0aG9kIGNhbiBvdmVyZmxvdyBhbmQgcmV0dXJuIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICBvdXRzaWRlIG9mIHNwZWNpZmllZCByYW5nZS4KK28gTEFORy0xMjkyOiBXb3JkVXRpbHMud3JhcCB0aHJvd3MgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbi4KK28gTEFORy0xMjg3OiBSYW5kb21TdHJpbmdVdGlscyNyYW5kb20gY2FuIGVudGVyIGluZmluaXRlIGxvb3AgaWYgZW5kIHBhcmFtZXRlcgorICAgICAgICAgICAgIGlzIHRvIHNtYWxsLiBUaGFua3MgdG8gSXZhbiBNb3Jvem92LgorbyBMQU5HLTEyODU6IE51bGxQb2ludGVyRXhjZXB0aW9uIGluIEZhc3REYXRlUGFyc2VyJFRpbWVab25lU3RyYXRlZ3kuCisgICAgICAgICAgICAgVGhhbmtzIHRvIEZyYW5jZXNjbyBDaGljY2hpcmljY/IuCitvIExBTkctMTI4MTogSmF2YWRvYyBvZiBTdHJpbmdVdGlscy5vcmRpbmFsSW5kZXhPZiBpcyBjb250cmFkaWN0b3J5LgorICAgICAgICAgICAgIFRoYW5rcyB0byBBbmRyZWFzIEx1bmRibGFkLgorbyBMQU5HLTExODg6IFN0cmluZ1V0aWxzI2pvaW4oVC4uLik6IHdhcm5pbmc6IFt1bmNoZWNrZWRdIFBvc3NpYmxlIGhlYXAKKyAgICAgICAgICAgICBwb2xsdXRpb24gZnJvbSBwYXJhbWV0ZXJpemVkIHZhcmFyZyB0eXBlIFQuCitvIExBTkctMTE0NDogTXVsdGlwbGUgY2FsbHMgb2YKKyAgICAgICAgICAgICBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuY29uY3VycmVudC5MYXp5SW5pdGlhbGl6ZXIuaW5pdGlhbGl6ZSgpCisgICAgICAgICAgICAgYXJlIHBvc3NpYmxlLiBUaGFua3MgdG8gV2FsZGVtYXIgTWFpZXIsIEdhcnkgR3JlZ29yeS4KK28gTEFORy0xMjc2OiBTdHJCdWlsZGVyI3JlcGxhY2VBbGwgQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLgorICAgICAgICAgICAgIFRoYW5rcyB0byBBbmR5IEtsaW1jemFrLgorbyBMQU5HLTEyNzg6IEJvb2xlYW5VdGlscyBqYXZhZG9jIGlzc3Vlcy4gVGhhbmtzIHRvIER1a2UgWWluLgorbyBMQU5HLTEwNzA6IEFycmF5VXRpbHMjYWRkIGNvbmZ1c2luZyBleGFtcGxlIGluIGphdmFkb2MuCisgICAgICAgICAgICAgVGhhbmtzIHRvIFBhdWwgUG9nb255c2hldi4KK28gTEFORy0xMjcxOiBTdHJpbmdVdGlscyNpc0FueUVtcHR5IGFuZCAjaXNBbnlCbGFuayBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBhbgorICAgICAgICAgICAgIGVtcHR5IGFycmF5LiBUaGFua3MgdG8gUGllcnJlIFRlbXBsaWVyLgorbyBMQU5HLTExNTU6IEFkZCBTdHJpbmdVdGlscyN1bndyYXAuIFRoYW5rcyB0byBTYWlmIEFzaWYsIFRoaWFnbyBBbmRyYWRlLgorbyBMQU5HLTEzMTE6IFR5cGVVdGlscy50b1N0cmluZygpIGRvZXNuJ3QgaGFuZGxlIHByaW1pdGl2ZSBhbmQgT2JqZWN0IGFycmF5cworICAgICAgICAgICAgIGNvcnJlY3RseS4gVGhhbmtzIHRvIEFhcm9uIERpZ3VsbGEuCitvIExBTkctMTMxMjogTG9jYWxlVXRpbHMjdG9Mb2NhbGUgZG9lcyBub3Qgc3VwcG9ydCBsYW5ndWFnZSBmb2xsb3dlZCBieSBVTiBNLjQ5CisgICAgICAgICAgICAgbnVtZXJpYy0zIGFyZWEgY29kZS4KK28gTEFORy0xMjY1OiBCdWlsZCBmYWlsdXJlcyB3aGVuIGJ1aWxkaW5nIHdpdGggSmF2YSA5IEVBLgorbyBMQU5HLTEzMTQ6IGphdmFkb2MgY3JlYXRpb24gYnJva2VuIHdpdGggSmF2YSA4LiBUaGFua3MgdG8gQWxsb24gTXVyaWVuaWsuCitvIExBTkctMTMxMDogTWV0aG9kVXRpbHMuaW52b2tlTWV0aG9kIHRocm93cyBBcnJheVN0b3JlRXhjZXB0aW9uIGlmIHVzaW5nCisgICAgICAgICAgICAgdmFyYXJncyBhcmd1bWVudHMgYW5kIHNtYWxsZXIgdHlwZXMgdGhhbiB0aGUgbWV0aG9kIGRlZmluZXMuCisgICAgICAgICAgICAgVGhhbmtzIHRvIERvbiBKZWJhLgorCitDSEFOR0VTCis9PT09PT09CisKK28gTEFORy0xMzM4OiBBZGQgQXV0b21hdGljLU1vZHVsZS1OYW1lIE1BTklGRVNUIGVudHJ5IGZvciBKYXZhIDkKKyAgICAgICAgICAgICBjb21wYXRpYmlsaXR5LgorbyBMQU5HLTEzMzQ6IERlcHJlY2F0ZSBDaGFyRW5jb2RpbmcgaW4gZmF2b3VyIG9mCisgICAgICAgICAgICAgamF2YS5uaW8uY2hhcnNldC5TdGFuZGFyZENoYXJzZXRzLgorbyBMQU5HLTExMTA6IEltcGxlbWVudCBIYXNoU2V0dkJpdFNldFRlc3QgdXNpbmcgSk1ILgorICAgICAgICAgICAgIFRoYW5rcyB0byBCcnVubyBQLiBLaW5vc2hpdGEuCitvIExBTkctMTI5MDogSW5jcmVhc2UgdGVzdCBjb3ZlcmFnZSBvZiBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuQXJyYXlVdGlscy4KKyAgICAgICAgICAgICBUaGFua3MgdG8gQW5kcmlpIEFicmFtb3YuCitvIExBTkctMTI3NDogU3RyU3Vic3RpdHV0b3Igc2hvdWxkIHN0YXRlIGl0cyB0aHJlYWQgc2FmZXR5LgorbyBMQU5HLTEyNzc6IFN0cmluZ1V0aWxzI2dldExldmVuc2h0ZWluRGlzdGFuY2UgcmVkdWNlIG1lbW9yeSBjb25zdW1wdGlvbi4KKyAgICAgICAgICAgICBUaGFua3MgdG8geXVmY3V5LgorbyBMQU5HLTEyNzk6IFVwZGF0ZSBKYXZhIHJlcXVpcmVtZW50IGZyb20gSmF2YSA2IHRvIDcuCitvIExBTkctMTE0MzogU3RyaW5nVXRpbHMgc2hvdWxkIHVzZSB0b1h4eHhDYXNlKGludCkgcmF0aGVyIHRoYW4KKyAgICAgICAgICAgICB0b1h4eHhDYXNlKGNoYXIpLiBUaGFua3MgdG8gc2ViYi4KK28gTEFORy0xMjk3OiBBZGQgU3lzdGVtVXRpbHMuZ2V0SG9zdE5hbWUoKSBBUEkuCitvIExBTkctMTMwMTogTW92aW5nIGFwYWNoZS1yYXQtcGx1Z2luIGNvbmZpZ3VyYXRpb24gaW50byBwbHVnaW5NYW5hZ2VtZW50LgorICAgICAgICAgICAgIFRoYW5rcyB0byBLYXJsIEhlaW56IE1hcmJhaXNlLgorbyBMQU5HLTEzMTY6IERlcHJlY2F0ZSBjbGFzc2VzL21ldGhvZHMgbW92ZWQgdG8gY29tbW9ucy10ZXh0LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIE5vdGVzIGZvciB2ZXJzaW9uIDMuNQorCisKK0hJR0hMSUdIVFMKKz09PT09PT09PT0KKworU29tZSBvZiB0aGUgaGlnaGxpZ2h0cyBpbiB0aGlzIHJlbGVhc2UgaW5jbHVkZToKKworbyBBZGRlZCBKYXZhIDkgZGV0ZWN0aW9uIHRvIG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5TeXN0ZW1VdGlscy4KK28gU3VwcG9ydCBmb3Igc2hpZnRpbmcgYW5kIHN3YXBwaW5nIGVsZW1lbnRzIGluCisgICAgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLkFycmF5VXRpbHMuCitvIE5ldyBtZXRob2RzIGZvciBnZW5lcmF0aW5nIHJhbmRvbSBzdHJpbmdzIGZyb20gZGlmZmVyZW50IGNoYXJhY3RlciBjbGFzc2VzCisgICAgaW5jbHVkaW5nIGFscGhhYmV0aWMsIGFscGhhLW51bWVyaWMgYW5kIEFTQ0lJIGFkZGVkIHRvCisgICAgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLlJhbmRvbVN0cmluZ1V0aWxzLgorbyBOdW1lcm91cyBleHRlbnNpb25zIHRvIG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5TdHJpbmdVdGlscyBpbmNsdWRpbmcKKyAgICBudWxsIHNhZmUgY29tcGFyZSB2YXJpYW50cywgbW9yZSByZW1vdmUgYW5kIHJlcGxhY2UgdmFyaWFudHMsIHJvdGF0aW9uIGFuZAorICAgIHRydW5jYXRpb24uCitvIEFkZGVkIG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5UaHJlYWRVdGlscyAtIGEgdXRpbGl0eSBjbGFzcyB0byB3b3JrIHdpdGgKKyAgICBpbnN0YW5jZXMgb2YgamF2YS5sYW5nLlRocmVhZCBhbmQgamF2YS5sYW5nLlRocmVhZEdyb3VwLgorbyBBZGRlZCBhbm5vdGF0aW9ucyBARXF1YWxzRXhjbHVkZSwgQEhhc2hDb2RlRXhjbHVkZSBhbmQgQFRvU3RyaW5nRWNsdWRlIHRvCisgICAgbWFyayBmaWVsZHMgd2hpY2ggc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIHJlZmxlY3RpdmUgYnVpbGRlcnMgaW4gdGhlCisgICAgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLmJ1aWxkZXIgcGFja2FnZS4KK28gU3VwcG9ydCBmb3IgdmFyaW91cyBtb2RpZnkgYW5kIHJldHJpZXZlIHZhbHVlIHVzZSBjYXNlcyBhZGRlZCB0byB0aGUgY2xhc3NlcworICAgIGluIG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5tdXRhYmxlLgorCitDT01QQVRJQklMSVRZCis9PT09PT09PT09PT09CisKK0FwYWNoZSBDb21tb25zIExhbmcgMy41IGlzIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggdGhlIDMuNCByZWxlYXNlLiBVc2Vycworc2hvdWxkIG5vdCBleHBlcmllbmNlIGFueSBwcm9ibGVtcyB3aGVuIHVwZ3JhZGluZyBmcm9tIDMuNCB0byAzLjUuCisKK1RoZXJlIGhhcyBiZWVuIGFuIGFkZGl0aW9uIHRvIHRoZSBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMudGltZS5EYXRlUHJpbnRlcgoraW50ZXJmYWNlOgorCitvIEFkZGVkIG1ldGhvZCAncHVibGljIGJvb2xlYW4gcGFyc2UoamF2YS5sYW5nLlN0cmluZywgamF2YS50ZXh0LlBhcnNlUG9zaXRpb24sCisgICAgamF2YS51dGlsLkNhbGVuZGFyKScKK28gQWRkZWQgbWV0aG9kICdwdWJsaWMgamF2YS5sYW5nLkFwcGVuZGFibGUgZm9ybWF0KGxvbmcsIGphdmEubGFuZy5BcHBlbmRhYmxlKScKK28gQWRkZWQgbWV0aG9kICdwdWJsaWMgamF2YS5sYW5nLkFwcGVuZGFibGUgZm9ybWF0KGphdmEudXRpbC5EYXRlLAorICAgIGphdmEubGFuZy5BcHBlbmRhYmxlKScKK28gQWRkZWQgbWV0aG9kICdwdWJsaWMgamF2YS5sYW5nLkFwcGVuZGFibGUgZm9ybWF0KGphdmEudXRpbC5DYWxlbmRhciwKKyAgICBqYXZhLmxhbmcuQXBwZW5kYWJsZSknCisKK0ZvciB0aGlzIHJlYXNvbiAzLjUgaXMgbm90IHN0cmljdGx5IHNvdXJjZSBjb21wYXRpYmxlIHRvIDMuNC4gU2luY2UgdGhlCitEYXRlUHJpbnRlciBpbnRlcmZhY2UgaXMgbm90IG1lYW50IHRvIGJlIGltcGxlbWVudGVkIGJ5IGNsaWVudHMsIHRoaXMKK2NoYW5nZSBpdCBub3QgY29uc2lkZXJlZCB0byBjYXVzZSBhbnkgcHJvYmxlbXMuCisKK0pBVkEgOSBTVVBQT1JUCis9PT09PT09PT09PT09PQorCitKYXZhIDkgaW50cm9kdWNlcyBhIG5ldyB2ZXJzaW9uLXN0cmluZyBzY2hlbWUuIERldGFpbHMgb2YgdGhpcyBuZXcgc2NoZW1lIGFyZQorZG9jdW1lbnRlZCBpbiBKRVAtMjIzIChodHRwOi8vb3Blbmpkay5qYXZhLm5ldC9qZXBzLzIyMykuIEluIG9yZGVyIHRvIHN1cHBvcnQKK0pFUC0yMjMgdHdvIGNsYXNzZXMgaGFkIHRvIGJlIGNoYW5nZWQ6CisKK28gb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLkphdmFWZXJzaW9uCisgICAgZGVwcmVjYXRlZCBlbnVtIGNvbnN0YW50IEpBVkFfMV85CisgICAgaW50cm9kdWNlZCBlbnVtIGNvbnN0YW50IEpBVkFfOQorCitvIG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5TeXN0ZW1VdGlscworICAgIGRlcHJlY2F0ZWQgY29uc3RhbnQgSVNfSkFWQV8xXzkKKyAgICBpbnRyb2R1Y2VkIGNvbnN0YW50IElTX0pBVkFfOQorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgTEFORy0xMTk3CisoaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9MQU5HLTExOTcpLiBBbGwgb3RoZXIgQVBJcyBhcmUgZXhwZWN0ZWQKK3RvIHdvcmsgd2l0aCBKYXZhIDkuCisKK0JVSUxESU5HIE9OIEpBVkEgOQorPT09PT09PT09PT09PT09PT09CisKK0phdmEgOCBpbnRyb2R1Y2VkIHRoZSBVbmljb2RlIENvbnNvcnRpdW0ncyBDb21tb24gTG9jYWxlIERhdGEgUmVwb3NpdG9yeSBhcworYWx0ZXJuYXRpdmUgc291cmNlIGZvciBsb2NhbGUgZGF0YS4gSmF2YSA5IHdpbGwgdXNlIHRoZSBDTERSIHByb3ZpZGVyIGFzCitkZWZhdWx0IHByb3ZpZGVyIGZvciBsb2NhbGUgZGF0YSAoc2VlIGh0dHA6Ly9vcGVuamRrLmphdmEubmV0L2plcHMvMjUyKS4gVGhpcworY2F1c2VzIGFuIG51bWJlciBvZiBsb2NhbGUtc2Vuc2l0aXZlIHRlc3QgaW4gQ29tbW9ucyBMYW5nIHRvIGZhaWwuIEluIG9yZGVyCit0byBidWlsZCBDb21tb25zIExhbmcgMy41IG9uIEphdmEgOSwgdGhlIGxvY2FsZSBwcm92aWRlciBoYXMgdG8gYmUgc2V0IHRvCisnSlJFJzoKKworICAgIG12biAtRGphdmEubG9jYWxlLnByb3ZpZGVycz1KUkUgY2xlYW4gaW5zdGFsbAorCitXZSBhcmUgY3VycmVudGx5IGludmVzdGlnYXRpbmcgd2F5cyB0byBzdXBwb3J0IGJ1aWxkaW5nIG9uIEphdmEgOSB3aXRob3V0CitmdXJ0aGVyIGNvbmZpZ3VyYXRpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZToKK2h0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvTEFORy0xMjY1CisKKworTkVXIEZFQVRVUkVTCis9PT09PT09PT09PT09PQorCitvIExBTkctMTI3NTogQWRkZWQgYSB0cnlBY3F1aXJlKCkgbWV0aG9kIHRvIFRpbWVkU2VtYXBob3JlLgorbyBMQU5HLTEyNTU6IEFkZCBEYXRlVXRpbHMudG9DYWxlbmRhcihEYXRlLCBUaW1lWm9uZSkuIFRoYW5rcyB0byBLYWl5dWFuIFdhbmcuCitvIExBTkctMTAyMzogQWRkIFdvcmRVdGlscy53cmFwIG92ZXJsb2FkIHdpdGggY3VzdG9taXphYmxlIGJyZWFrYWJsZSBjaGFyYWN0ZXIuCisgICAgICAgICAgICAgVGhhbmtzIHRvIE1hcmtvIEJla2h0YS4KK28gTEFORy03ODc6ICBBZGQgbWV0aG9kIHJlbW92ZUlnbm9yZUNhc2UoU3RyaW5nLCBTdHJpbmcpIHRvIFN0cmluZ1V0aWxzLiBUaGFua3MKKyAgICAgICAgICAgICB0byBHb2t1bCBOYW50aGFrdW1hciBDLgorbyBMQU5HLTEyMjQ6IEV4dGVuZCBSYW5kb21TdHJpbmdVdGlscyB3aXRoIG1ldGhvZHMgdGhhdCBnZW5lcmF0ZSBzdHJpbmdzCisgICAgICAgICAgICAgYmV0d2VlbiBhIG1pbiBhbmQgbWF4IGxlbmd0aC4gVGhhbmtzIHRvIENhbGViIEN1c2hpbmcuCitvIExBTkctMTI1NzogQWRkIEFQSXMgU3RyaW5nVXRpbHMud3JhcElmTWlzc2luZyhTdHJpbmcsIGNoYXJ8U3RyaW5nKS4gVGhhbmtzIHRvCisgICAgICAgICAgICAgR2FyeSBHcmVnb3J5LgorbyBMQU5HLTEyNTM6IEFkZCBSYW5kb21VdGlscyNuZXh0Qm9vbGVhbigpIG1ldGhvZC4gVGhhbmtzIHRvIGFkaWxlay4KK28gTEFORy0xMDg1OiBBZGQgYSBjaXJjdWl0IGJyZWFrZXIgaW1wbGVtZW50YXRpb24uIFRoYW5rcyB0byBPbGl2ZXIgSGVnZXIgYW5kCisgICAgICAgICAgICAgQnJ1bm8gUC4gS2lub3NoaXRhLgorbyBMQU5HLTEwMTM6IEFkZCBTdHJpbmdVdGlscy50cnVuY2F0ZSgpLiBUaGFua3MgdG8gVGhpYWdvIEFuZHJhZGUuCitvIExBTkctMTE5NTogRW5oYW5jZSBNZXRob2RVdGlscyB0byBhbGxvdyBpbnZvY2F0aW9uIG9mIHByaXZhdGUgbWV0aG9kcy4gVGhhbmtzCisgICAgICAgICAgICAgdG8gRGVyZWsgQy4gQXNobW9yZS4KK28gTEFORy0xMTg5OiBBZGQgZ2V0QW5kSW5jcmVtZW50L2dldEFuZERlY3JlbWVudC9nZXRBbmRBZGQvaW5jcmVtZW50QW5kR2V0LworICAgICAgICAgICAgIGRlY3JlbWVudEFuZEdldC9hZGRBbmRHZXQgaW4gTXV0YWJsZSogY2xhc3Nlcy4gVGhhbmtzIHRvCisgICAgICAgICAgICAgSGFpeWFuZyBMaSBhbmQgTWF0dGhldyBCYXJ0ZW5zY2hsYWcuCitvIExBTkctMTIyNTogQWRkIFJhbmRvbVN0cmluZ1V0aWxzI3JhbmRvbUdyYXBoIGFuZCAjcmFuZG9tUHJpbnQgd2hpY2ggbWF0Y2gKKyAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBjbGFzcy4gVGhhbmtzIHRvIENhbGViIEN1c2hpbmcuCitvIExBTkctMTIyMzogQWRkIFN0b3BXYXRjaCNnZXRUaW1lKFRpbWVVbml0KS4gVGhhbmtzIHRvIE5pY2sgTWFubGV5LgorbyBMQU5HLTc4MTogIEFkZCBtZXRob2RzIHRvIE9iamVjdFV0aWxzIGNsYXNzIHRvIGNoZWNrIGZvciBudWxsIGVsZW1lbnRzIGluIHRoZQorICAgICAgICAgICAgIGFycmF5LiBUaGFua3MgdG8gS3J6eXN6dG9mIFdvbG55LgorbyBMQU5HLTEyMjg6IFByZWZlciBUaHJvd2FibGUuZ2V0Q2F1c2UoKSBpbiBFeGNlcHRpb25VdGlscy5nZXRDYXVzZSgpLgorICAgICAgICAgICAgIFRoYW5rcyB0byBCcmFkIEhlc3MuCitvIExBTkctMTIzMzogRGlmZkJ1aWxkZXIgYWRkIG1ldGhvZCB0byBhbGxvdyBhcHBlbmRpbmcgZnJvbSBhIERpZmZSZXN1bHQuCisgICAgICAgICAgICAgVGhhbmtzIHRvIE5pY2sgTWFubGV5LgorbyBMQU5HLTExNjg6IEFkZCBTeXN0ZW1VdGlscy5JU19PU19XSU5ET1dTXzEwIHByb3BlcnR5LgorICAgICAgICAgICAgIFRoYW5rcyB0byBQYXNjYWwgU2NodW1hY2hlci4KK28gTEFORy0xMTE1OiBBZGQgc3VwcG9ydCBmb3IgdmFyYXJncyBpbiBDb25zdHJ1Y3RvclV0aWxzLCBNZW1iZXJVdGlscywgYW5kCisgICAgICAgICAgICAgTWV0aG9kVXRpbHMuIFRoYW5rcyB0byBKaW0gTGxveWQgYW5kIEpvZSBGZXJuZXIuCitvIExBTkctMTEzNDogQWRkIG1ldGhvZHMgdG8gY2hlY2sgbnVtYmVycyBhZ2FpbnN0IE5hTiBhbmQgaW5pZmluaXRlIHRvCisgICAgICAgICAgICAgVmFsaWRhdGUuIFRoYW5rcyB0byBBbGFuIFNtaXRoZWUuCitvIExBTkctMTIyMDogQWRkIHRlc3RzIGZvciBtaXNzZWQgYnJhbmNoZXMgaW4gRGF0ZVV0aWxzLgorICAgICAgICAgICAgIFRoYW5rcyB0byBDYXNleSBTY2FyYm9yb3VnaC4KK28gTEFORy0xMTQ2OiB6L09TIGlkZW50aWZpY2F0aW9uIGluIFN5c3RlbVV0aWxzLgorICAgICAgICAgICAgIFRoYW5rcyB0byBHYWJvciBMaXB0YWsuCitvIExBTkctMTE5MjogRmFzdERhdGVGb3JtYXQgc3VwcG9ydCBvZiB0aGUgd2Vlay15ZWFyIGNvbXBvbmVudCAodXBwZXJjYXNlICdZJykuCisgICAgICAgICAgICAgVGhhbmtzIHRvIERvbWluaWsgU3RhZGxlci4KK28gTEFORy0xMTY5OiBBZGQgU3RyaW5nVXRpbHMgbWV0aG9kcyB0byBjb21wYXJlIGEgc3RyaW5nIHRvIG11bHRpcGxlIHN0cmluZ3MuCisgICAgICAgICAgICAgVGhhbmtzIHRvIFJhZmFsIEdsb3dpbnNraSwgUm9iZXJ0IFBhcnIgYW5kIEFybWFuIFNoYXJpZi4KK28gTEFORy0xMTg1OiBBZGQgcmVtb3ZlIGJ5IHJlZ3VsYXIgZXhwcmVzc2lvbiBtZXRob2RzIGluIFN0cmluZ1V0aWxzLgorbyBMQU5HLTExMzk6IEFkZCByZXBsYWNlIGJ5IHJlZ3VsYXIgZXhwcmVzc2lvbiBtZXRob2RzIGluIFN0cmluZ1V0aWxzLgorbyBMQU5HLTExNzE6IEFkZCBjb21wYXJlIG1ldGhvZHMgaW4gU3RyaW5nVXRpbHMuCitvIExBTkctMTE3NDogQWRkIHN1Z2FyIHRvIFJhbmRvbVV0aWxzLiBUaGFua3MgdG8gUHVua3JhdHozMTIuCitvIExBTkctMTE1NDogRmFzdERhdGVGb3JtYXQgQVBJcyB0aGF0IHVzZSBhIFN0cmluZ0J1aWxkZXIuIFRoYW5rcyB0bworICAgICAgICAgICAgIEdhcnkgR3JlZ29yeS4KK28gTEFORy0xMTQ5OiBBYmlsaXR5IHRvIHRocm93IGNoZWNrZWQgZXhjZXB0aW9ucyB3aXRob3V0IGRlY2xhcmluZyB0aGVtLiBUaGFua3MKKyAgICAgICAgICAgICB0byBHcmVnb3J5IFphay4KK28gTEFORy0xMTUzOiBJbXBsZW1lbnQgUGFyc2VQb3NpdGlvbiBhcGkgZm9yIEZhc3REYXRlUGFyc2VyLgorbyBMQU5HLTExMzc6IEFkZCBjaGVjayBmb3IgZHVwbGljYXRlIGV2ZW50IGxpc3RlbmVyIGluIEV2ZW50TGlzdGVuZXJTdXBwb3J0LgorICAgICAgICAgICAgIFRoYW5rcyB0byBNYXR0aGV3IEFndWlycmUuCitvIExBTkctMTEzNTogQWRkIG1ldGhvZCBjb250YWluc0FsbFdvcmRzIHRvIFdvcmRVdGlscy4gVGhhbmtzIHRvCisgICAgICAgICAgICAgRWR1YXJkbyBNYXJ0aW5zLgorbyBMQU5HLTExMzI6IFJlZmxlY3Rpb25Ub1N0cmluZ0J1aWxkZXIgZG9lc24ndCB0aHJvdyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgICAgICAgICB3aGVuIHRoZSBjb25zdHJ1Y3RvcidzIG9iamVjdCBwYXJhbSBpcyBudWxsLiBUaGFua3MgdG8gSmFjayBUYW4uCitvIExBTkctNzAxOiAgU3RyaW5nVXRpbHMgam9pbiB3aXRoIHZhciBhcmdzLiBUaGFua3MgdG8gSmFtZXMgU2F3bGUuCitvIExBTkctMTEwNTogQWRkIFRocmVhZFV0aWxzIC0gQSB1dGlsaXR5IGNsYXNzIHdoaWNoIHByb3ZpZGVzIGhlbHBlciBtZXRob2RzCisgICAgICAgICAgICAgcmVsYXRlZCB0byBqYXZhLmxhbmcuVGhyZWFkICBJc3N1ZTogTEFORy0xMTA1LiBUaGFua3MgdG8KKyAgICAgICAgICAgICBIZW5kcmlrIFNhbHkuCitvIExBTkctMTAzMTogQWRkIGFubm90YXRpb25zIHRvIGV4Y2x1ZGUgZmllbGRzIGZyb20gUmVmbGVjdGlvbkVxdWFsc0J1aWxkZXIsCisgICAgICAgICAgICAgUmVmbGVjdGlvblRvU3RyaW5nQnVpbGRlciBhbmQgUmVmbGVjdGlvbkhhc2hDb2RlQnVpbGRlci4gVGhhbmtzCisgICAgICAgICAgICAgdG8gRmVsaXBlIEFkb3Juby4KK28gTEFORy0xMTI3OiBVc2UgSlVuaXQgcnVsZXMgdG8gc2V0IGFuZCByZXNldCB0aGUgZGVmYXVsdCBMb2NhbGUgYW5kIFRpbWVab25lLgorbyBMQU5HLTExMTk6IEFkZCByb3RhdGUoc3RyaW5nLCBpbnQpIG1ldGhvZCB0byBTdHJpbmdVdGlscy4gVGhhbmtzIHRvCisgICAgICAgICAgICAgTG9pYyBHdWliZXJ0LgorbyBMQU5HLTEwOTk6IEFkZCBzd2FwIGFuZCBzaGlmdCBvcGVyYXRpb25zIGZvciBhcnJheXMgdG8gQXJyYXlVdGlscy4gVGhhbmtzIHRvCisgICAgICAgICAgICAgQWRyaWFuIEJlci4KK28gTEFORy0xMDUwOiBDaGFuZ2UgbnVsbFRvRW1wdHkgbWV0aG9kcyB0byBnZW5lcmljcy4gVGhhbmtzIHRvIEphbWVzIFNhd2xlLgorbyBMQU5HLTEwNzQ6IEFkZCBhIG1ldGhvZCB0byBBcnJheVV0aWxzIGZvciByZW1vdmluZyBhbGwgb2NjdXJyZW5jZXMgb2YgYSBnaXZlbgorICAgICAgICAgICAgIGVsZW1lbnQgIElzc3VlOiBMQU5HLTEwNzQuIFRoYW5rcyB0byBIYWl5YW5nIExpLgorCitGSVhFRCBCVUdTCis9PT09PT09PT09PT0KKworbyBMQU5HLTEyNjE6IEFycmF5VXRpbHMuY29udGFpbnMgcmV0dXJucyBmYWxzZSBmb3IgaW5zdGFuY2VzIG9mIHN1YnR5cGVzLgorbyBMQU5HLTEyNTI6IFJlbmFtZSBOdW1iZXJVdGlscy5pc051bWJlciwgaXNDcmVhdGFibGUgdG8gYmV0dGVyIHJlZmxlY3QKKyAgICAgICAgICAgICBjcmVhdGVOdW1iZXIuIEFsc28sIGFjY29tbW9kYXRlZCBmb3IgIisiIHN5bWJvbCBhcyBwcmVmaXggaW4KKyAgICAgICAgICAgICBpc0NyZWF0YWJsZSBhbmQgaXNOdW1iZXIuIFRoYW5rcyB0byBSb2IgVG9tcGtpbnMuCitvIExBTkctMTIzMDogUmVtb3ZlIHVubmVjZXNzYXJ5IHN5bmNocm9uaXphdGlvbiBmcm9tIHJlZ2lzdHJ5IGxvb2t1cCBpbgorICAgICAgICAgICAgIEVxdWFsc0J1aWxkZXIgYW5kIEhhc2hDb2RlQnVpbGRlci4gVGhhbmtzIHRvIFBoaWxpcHBlIE1hcnNjaGFsbC4KK28gTEFORy0xMjE0OiBIYW5kbGUgInZvaWQiIGluIENsYXNzVXRpbHMuZ2V0Q2xhc3MoKS4gVGhhbmtzIHRvIEhlbnJ5IFR1bmcuCitvIExBTkctMTI1MDogU2VyaWFsaXphdGlvblV0aWxzI2Rlc2VyaWFsaXplIGhhcyB1bm5lY2Vzc2FyeSBjb2RlIGFuZCBhIGNvbW1lbnQKKyAgICAgICAgICAgICBmb3IgdGhhdC4gVGhhbmtzIHRvIEdsZWFzZSBXYW5nLgorbyBMQU5HLTExOTA6IFR5cGVVdGlscy5pc0Fzc2lnbmFibGUgdGhyb3dzIE51bGxQb2ludGVyRXhjZXB0aW9uIHdoZW4gZnJvbVR5cGUKKyAgICAgICAgICAgICBoYXMgdHlwZSB2YXJpYWJsZXMgYW5kIHRvVHlwZSBnZW5lcmljIHN1cGVyY2xhc3Mgc3BlY2lmaWVzIHR5cGUKKyAgICAgICAgICAgICB2YXJpYWJsZS4gVGhhbmtzIHRvIFBhc2NhbCBTY2h1bWFjaGVyLgorbyBMQU5HLTEyMjY6IFN0cmluZ1V0aWxzI25vcm1hbGl6ZVNwYWNlIGRvZXMgbm90IHRyaW0gdGhlIHN0cmluZyBhbnltb3JlLgorICAgICAgICAgICAgIFRoYW5rcyB0byBQYXNjYWwgU2NodW1hY2hlci4KK28gTEFORy0xMjUxOiBTZXJpYWxpemF0aW9uVXRpbHMuQ2xhc3NMb2FkZXJBd2FyZU9iamVjdElucHV0U3RyZWFtIHNob3VsZCB1c2UKKyAgICAgICAgICAgICBzdGF0aWMgaW5pdGlhbGl6ZXIgdG8gaW5pdGlhbGl6ZSBwcmltaXRpdmVUeXBlcyBtYXAuIFRoYW5rcyB0bworICAgICAgICAgICAgIFRha3V5YSBVZXNoaW4uCitvIExBTkctMTI0ODogRmFzdERhdGVQcmludGVyIE1lbW9yeSBhbGxvY2F0aW9uIHJlZ3Jlc3Npb24uIFRoYW5rcyB0bworICAgICAgICAgICAgIEJlbm9pdCBXaWFydC4KK28gTEFORy0xMDE4OiBGaXggcHJlY2lzaW9uIGxvc3Mgb24gTnVtYmVyVXRpbHMuY3JlYXRlTnVtYmVyKFN0cmluZykuIFRoYW5rcyB0bworICAgICAgICAgICAgIE5pY2sgTWFubGV5LgorbyBMQU5HLTExOTk6IEZpeCBpbXBsZW1lbnRhdGlvbiBvZiBTdHJpbmdVdGlscy5nZXRKYXJvV2lua2xlckRpc3RhbmNlKCkuIFRoYW5rcworICAgICAgICAgICAgIHRvIE0uIFN0ZWlnZXIuCitvIExBTkctMTI0NDogRml4IGRlYWQgbGlua3MgaW4gU3RyaW5nVXRpbHMuZ2V0TGV2ZW5zaHRlaW5EaXN0YW5jZSgpIGphdmFkb2MuCisgICAgICAgICAgICAgVGhhbmtzIHRvIGpqYmFua2VydC4KK28gTEFORy0xMjQyOiAiXHUyMjg0IjoiPyIgbWFwcGluZyBtaXNzaW5nIGZyb20KKyAgICAgICAgICAgICBFbnRpdHlBcnJheXMjSFRNTDQwX0VYVEVOREVEX0VTQ0FQRS4gVGhhbmtzIHRvIE5lYWwgU3Rld2FydC4KK28gTEFORy05MDE6ICBTdHJpbmdVdGlscyNzdGFydHNXaXRoQW55L2VuZHNXaXRoQW55IGlzIGNhc2Ugc2Vuc2l0aXZlIC0KKyAgICAgICAgICAgICBkb2N1bWVudGVkIGFzIGNhc2UgaW5zZW5zaXRpdmUuIFRoYW5rcyB0byBNYXR0aGV3IEJhcnRlbnNjaGxhZy4KK28gTEFORy0xMjMyOiBEaWZmQnVpbGRlcjogQWRkIG51bGwgY2hlY2sgb24gZmllbGROYW1lIHdoZW4gYXBwZW5kaW5nIE9iamVjdCBvcgorICAgICAgICAgICAgIE9iamVjdFtdLiBUaGFua3MgdG8gTmljayBNYW5sZXkuCitvIExBTkctMTE3ODogQXJyYXlVdGlscy5yZW1vdmVBbGwoT2JqZWN0IGFycmF5LCBpbnQuLi4gaW5kaWNlcykgc2hvdWxkIGRvIHRoZQorICAgICAgICAgICAgIGNsb25lLCBub3QgaXRzIGNhbGxlcnMuIFRoYW5rcyB0byBIZW5yaSBZYW5kZWxsLgorbyBMQU5HLTExMjA6IFN0cmluZ1V0aWxzLnN0cmlwQWNjZW50cyBzaG91bGQgcmVtb3ZlIGFjY2VudHMgZnJvbSAiPyIgYW5kICI/Ii4KKyAgICAgICAgICAgICBUaGFua3MgdG8ga2FjaGluZzg4LgorbyBMQU5HLTEyMDU6IE51bWJlclV0aWxzLmNyZWF0ZU51bWJlcigpIGJlaGF2ZXMgaW5jb25zaXN0ZW50bHkgd2l0aAorICAgICAgICAgICAgIE51bWJlclV0aWxzLmlzTnVtYmVyKCkuIFRoYW5rcyB0byBwYnJvc2UuCitvIExBTkctMTIyMjogRml4IGZvciBpbmNvcnJlY3QgY29tbWVudCBvbiBTdHJpbmdVdGlscy5jb250YWluc0lnbm9yZUNhc2UKKyAgICAgICAgICAgICBtZXRob2QuIFRoYW5rcyB0byBBZGFtIEouCitvIExBTkctMTIyMTogRml4IHR5cG8gb24gYXBwZW5kSWZNaXNzaW5nIGphdmFkb2MuIFRoYW5rcyB0byBQaWVycmUgVGVtcGxpZXIuCitvIExBTkctMTIwMjogcGFyc2VEYXRlU3RyaWN0bHkgZG9lcyd0IHBhc3Mgc3BlY2lmaWVkIGxvY2FsZS4gVGhhbmtzIHRvCisgICAgICAgICAgICAgTWFya3VzIEplbHNtYS4KK28gTEFORy0xMjE5OiBGYXN0RGF0ZUZvcm1hdCBkb2Vzbid0IHJlc3BlY3Qgc3VtbWVyIGRheWxpZ2h0IGluIHNvbWUgbG9jYWxpemVkCisgICAgICAgICAgICAgc3RyaW5ncy4gVGhhbmtzIHRvIEphcmVrLgorbyBMQU5HLTExNzU6IFJlbW92ZSBBbnQtYmFzZWQgYnVpbGQuCitvIExBTkctMTE5NDogTGltaXQgbWF4IGhlYXAgbWVtb3J5IGZvciBjb25zaXN0ZW50IFRyYXZpcyBDSSBidWlsZC4KK28gTEFORy0xMTg2OiBGaXggTnVsbFBvaW50ZXJFeGNlcHRpb24gaW4gRmFzdERhdGVQYXJzZXIkVGltZVpvbmVTdHJhdGVneS4KKyAgICAgICAgICAgICBUaGFua3MgdG8gTmlja01hbmxleS4KK28gTEFORy0xMTkzOiBvcmRpbmFsSW5kZXhPZigiYWJjIiwgImFiIiwgMSkgZ2l2ZXMgaW5jb3JyZWN0IGFuc3dlciBvZiAtMQorICAgICAgICAgICAgIChjb3JyZWN0IGFuc3dlciBzaG91bGQgYmUgMCk7IHJldmVydCBmaXggZm9yIExBTkctMTA3Ny4gVGhhbmtzIHRvCisgICAgICAgICAgICAgUWluIExpLgorbyBMQU5HLTEwMDI6IFNldmVyYWwgcHJlZGVmaW5lZCBJU08gRmFzdERhdGVGb3JtYXRzIGluIERhdGVGb3JtYXRVdGlscyBhcmUKKyAgICAgICAgICAgICBpbmNvcnJlY3QuIFRoYW5rcyB0byBNaWNoYWVsIE9zaXBvdi4KK28gTEFORy0xMTUyOiBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIG9yIGZpZWxkIG92ZXItd3JpdGUgZm9yIGxhcmdlIHllYXIKKyAgICAgICAgICAgICBmaWVsZHMgaW4gRmFzdERhdGVQYXJzZXIuIFRoYW5rcyB0byBQYXMgRmlsaXAuCitvIExBTkctMTE0MTogU3RyTG9va3VwLnN5c3RlbVByb3BlcnRpZXNMb29rdXAoKSBubyBsb25nZXIgcmVhY3RzIG9uIGNoYW5nZXMgb24KKyAgICAgICAgICAgICBzeXN0ZW0gcHJvcGVydGllcy4KK28gTEFORy0xMTQ3OiBFbnVtVXRpbHMgKkJpdFZlY3RvciBpc3N1ZSB3aXRoIG1vcmUgdGhhbiAzMiB2YWx1ZXMgRW51bS4gVGhhbmtzCisgICAgICAgICAgICAgdG8gTG9pYyBHdWliZXJ0LgorbyBMQU5HLTEwNTk6IENhcGl0YWxpemUgamF2YWRvYyBpcyBpbmNvcnJlY3QuIFRoYW5rcyB0byBDb2xpbiBDYXNleS4KK28gTEFORy0xMTIyOiBJbmNvbnNpc3RlbnQgYmVoYXZpb3Igb2Ygc3dhcCBmb3IgbWFsZm9ybWVkIGlucHV0cy4gVGhhbmtzIHRvCisgICAgICAgICAgICAgQWRyaWFuIEJlci4KK28gTEFORy0xMTMwOiBGaXggY3JpdGljYWwgaXNzdWVzIHJlcG9ydGVkIGJ5IFNvbmFyUXViZS4KK28gTEFORy0xMTMxOiBTdHJCdWlsZGVyLmVxdWFscyhTdHJCdWlsZGVyKSBkb2Vzbid0IGNoZWNrIGZvciBudWxsIGlucHV0cy4KK28gTEFORy0xMTI4OiBKc29uVG9TdHJpbmdTdHlsZSBkb2Vzbid0IGhhbmRsZSBjaGFycyBhbmQgb2JqZWN0cyBjb3JyZWN0bHkuCisgICAgICAgICAgICAgVGhhbmtzIHRvIEphY2sgVGFuLgorbyBMQU5HLTExMjY6IERhdGVGb3JtYXRVdGlsc1Rlc3QudGVzdFNNVFAgZGVwZW5kcyBvbiB0aGUgZGVmYXVsdCBMb2NhbGUuCitvIExBTkctMTEyMzogVW5pdCB0ZXN0IEZhc3REYXRlUHJpbnRlclRpbWVab25lc1Rlc3QgbmVlZHMgYSB0aW1lem9uZSBzZXQuCisgICAgICAgICAgICAgVGhhbmtzIHRvIENocmlzdGlhbiBQLiBNb21vbi4KK28gTEFORy05MTY6ICBEYXRlRm9ybWF0VXRpbHMuZm9ybWF0IGRvZXMgbm90IGNvcnJlY3RseSBjaGFuZ2UgQ2FsZW5kYXIKKyAgICAgICAgICAgICBUaW1lWm9uZSBpbiBjZXJ0YWluIHNpdHVhdGlvbnMuIFRoYW5rcyB0byBDaHJpc3RpYW4gUC4gTW9tb24uCitvIExBTkctMTExNjogRGF0ZVV0aWxzVGVzdC50ZXN0TGFuZzUzMCBmYWlscyBmb3Igc29tZSB0aW1lem9uZXMuIFRoYW5rcyB0bworICAgICAgICAgICAgIEFhcm9uIFNoZWxkb24uCitvIExBTkctMTExNDogVHlwZVV0aWxzLlBhcmFtZXRlcml6ZWRUeXBlI2VxdWFscyBkb2Vzbid0IHdvcmsgd2l0aCB3aWxkY2FyZAorICAgICAgICAgICAgIHR5cGVzLiBUaGFua3MgdG8gQW5keSBDb2F0ZXMuCitvIExBTkctMTExODogU3RyaW5nVXRpbHMucmVwZWF0KCd6JywgLTEpIHRocm93cyBOZWdhdGl2ZUFycmF5U2l6ZUV4Y2VwdGlvbi4KKyAgICAgICAgICAgICBUaGFua3MgdG8gTG9pYyBHdWliZXJ0LgorbyBMQU5HLTExMTE6IEZpeCBGaW5kQnVncyB3YXJuaW5ncyBpbiBEdXJhdGlvbkZvcm1hdFV0aWxzLgorbyBMQU5HLTExNjI6IFN0cmluZ1V0aWxzI2VxdWFscyBmYWlscyB3aXRoIEluZGV4IE9PQkUgb24gbm9uLVN0cmluZ3Mgd2l0aAorICAgICAgICAgICAgIGlkZW50aWNhbCBsZWFkaW5nIHByZWZpeC4uCitvIExBTkctMTE2MzogVGhlcmUgYXJlIG5vIHRlc3RzIGZvciBDaGFyU2VxdWVuY2VVdGlscy5yZWdpb25NYXRjaGVzLgorbyBMQU5HLTEyMDA6IEZpeCBKYXZhZG9jIG9mIFN0cmluZ1V0aWxzLm9yZGluYWxJbmRleE9mLiBUaGFua3MgdG8gQmFya1poYW5nLgorbyBMQU5HLTExOTE6IEluY29ycmVjdCBKYXZhZG9jCisgICAgICAgICAgICAgU3RyaW5nVXRpbHMuY29udGFpbnNBbnkoQ2hhclNlcXVlbmNlLCBDaGFyU2VxdWVuY2UuLi4pLiBUaGFua3MgdG8KKyAgICAgICAgICAgICBxZWQsIEJyZW50IFdvcmRlbiBhbmQgR2FyeSBHcmVnb3J5LgorCitDSEFOR0VTCis9PT09PT09PT0KK28gTEFORy0xMTk3OiBQcmVwYXJlIEphdmEgOSBkZXRlY3Rpb24uCitvIExBTkctMTI2MjogQ29tcGFyZVRvQnVpbGRlci5hcHBlbmQoT2JqZWN0LCBPYmplY3QsIENvbXBhcmF0b3IpIG1ldGhvZCBpcyB0b28KKyAgICAgICAgICAgICBiaWcgdG8gYmUgaW5saW5lZC4gVGhhbmtzIHRvIFJ1c2xhbiBDaGVyZW1pbi4KK28gTEFORy0xMjU5OiBKYXZhZG9jIGZvciBBcnJheVV0aWxzLmlzTm90RW1wdHkoKSBpcyBzbGlnaHRseSBtaXNsZWFkaW5nLiBUaGFua3MKKyAgICAgICAgICAgICB0byBEb21pbmlrIFN0YWRsZXIuCitvIExBTkctMTI0NzogRmFzdERhdGVQcmludGVyIGdlbmVyYXRlcyBleHRyYSBEYXRlIG9iamVjdHMuIFRoYW5rcyB0bworICAgICAgICAgICAgIEJlbm9pdCBXaWFydC4KK28gTEFORy0xMjI5OiBIYXNoQ29kZUJ1aWxkZXIuYXBwZW5kKE9iamVjdCxPYmplY3QpIGlzIHRvbyBiaWcgdG8gYmUgaW5saW5lZCwKKyAgICAgICAgICAgICB3aGljaCBwcmV2ZW50cyB3aG9sZSBidWlsZGVyIHRvIGJlIHNjYWxhcml6ZWQuIFRoYW5rcyB0bworICAgICAgICAgICAgIFJ1c2xhbiBDaGVyZW1pbi4KK28gTEFORy0xMjQzOiBTaW1wbGlmeSBBcnJheVV0aWxzIHJlbW92ZUVsZW1lbnRzIGJ5IHVzaW5nIG5ldyBkZWNyZW1lbnRBbmRHZXQoKQorICAgICAgICAgICAgIG1ldGhvZC4KK28gTEFORy0xMjQwOiBPcHRpbWl6ZSBCaXRGaWVsZCBjb25zdHJ1Y3RvciBpbXBsZW1lbnRhdGlvbi4gVGhhbmtzIHRvIHpoYW5oYi4KK28gTEFORy0xMjA2OiBJbXByb3ZlIENoYXJTZXRVdGlscy5zcXVlZXplKCkgcGVyZm9ybWFuY2UuIFRoYW5rcyB0bworICAgICAgICAgICAgIE1vaGFtbWVkIEFsZmFsbGFqLgorbyBMQU5HLTExNzY6IEltcHJvdmUgQXJyYXlVdGlscyByZW1vdmVFbGVtZW50cyB0aW1lIGNvbXBsZXhpdHkgdG8gTyhuKS4gVGhhbmtzCisgICAgICAgICAgICAgdG8gSmVmZmVyeSBZdWFuLgorbyBMQU5HLTEyMzQ6IGdldExldmVuc2h0ZWluRGlzdGFuY2Ugd2l0aCBhIHRocmVzaG9sZDogb3B0aW1pemUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgICAgICBpZiB0aGUgc3RyaW5ncyBsZW5ndGhzIGRpZmZlciBtb3JlIHRoYW4gdGhlIHRocmVzaG9sZC4gVGhhbmtzIHRvCisgICAgICAgICAgICAgSm9uYXRhbiBK9m5zc29uLgorbyBMQU5HLTExNTE6IFBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyBmb3IgTnVtYmVyVXRpbHMuaXNQYXJzYWJsZS4gVGhhbmtzIHRvCisgICAgICAgICAgICAgSnVhbiBQYWJsbyBTYW50b3MgUm9kcu1ndWV6LgorbyBMQU5HLTEyMTg6IEVxdWFsc0J1aWxkZXIuYXBwZW5kKE9iamVjdCxPYmplY3QpIGlzIHRvbyBiaWcgdG8gYmUgaW5saW5lZCwKKyAgICAgICAgICAgICB3aGljaCBwcmV2ZW50cyB3aG9sZSBidWlsZGVyIHRvIGJlIHNjYWxhcml6ZWQuIFRoYW5rcyB0bworICAgICAgICAgICAgIFJ1c2xhbiBDaGVyZW1pbi4KK28gTEFORy0xMjEwOiBTdHJpbmdVdGlscyNzdGFydHNXaXRoQW55IGhhcyBlcnJvciBpbiBKYXZhZG9jLiBUaGFua3MgdG8KKyAgICAgICAgICAgICBNYXR0aGlhcyBOaWVob2ZmLgorbyBMQU5HLTEyMDg6IFN0clN1YnN0aXR1dG9yIGNhbiBwcmVzZXJ2ZSBlc2NhcGVzLiBUaGFua3MgdG8gU2FtdWVsIEthcnAuCitvIExBTkctMTE4MjogQ2xhcmlmeSBKYXZhZG9jIG9mIFN0cmluZ1V0aWxzLmNvbnRhaW5zQW55KCkuIFRoYW5rcyB0bworICAgICAgICAgICAgIExhcnJ5IFdlc3QgYW5kIFBhc2NhbCBTY2h1bWFjaGVyLgorbyBMQU5HLTExODM6IE1ha2luZyByZXBsYWNlUGF0dGVybi9yZW1vdmVQYXR0ZXJuIG1ldGhvZHMgbnVsbCBzYWZlIGluCisgICAgICAgICAgICAgU3RyaW5nVXRpbHMuCitvIExBTkctMTA1NzogUmVwbGFjZSBTdHJpbmdCdWlsZGVyIHdpdGggU3RyaW5nIGNvbmNhdGVuYXRpb24gZm9yIGJldHRlcgorICAgICAgICAgICAgIG9wdGltaXphdGlvbi4gVGhhbmtzIHRvIE904XZpbyBTYW50YW5hLgorbyBMQU5HLTEwNzU6IERlcHJlY2F0ZSBTeXN0ZW1VdGlscy5GSUxFX1NFUEFSQVRPUiBhbmQKKyAgICAgICAgICAgICBTeXN0ZW1VdGlscy5QQVRIX1NFUEFSQVRPUi4KK28gTEFORy05Nzk6ICBUeXBlVXRpbHMucGFyYW1ldGVyaXplV2l0aE93bmVyIC0gd3JvbmcgZm9ybWF0IGRlc2NyaXB0b3IgZm9yCisgICAgICAgICAgICAgImludmFsaWQgbnVtYmVyIG9mIHR5cGUgcGFyYW1ldGVycyIuIFRoYW5rcyB0byBCcnVubyBQLiBLaW5vc2hpdGEuCitvIExBTkctMTExMjogTXVsdGlsaW5lUmVjdXJzaXZlVG9TdHJpbmdTdHlsZSBsYXJnZWx5IHVudXNhYmxlIGR1ZSB0byBiZWluZworICAgICAgICAgICAgIHBhY2thZ2UtcHJpdmF0ZS4KK28gTEFORy0xMDU4OiBTdHJpbmdVdGlscy51bmNhcGl0YWxpemUgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQuIFRoYW5rcyB0bworICAgICAgICAgICAgIExlbyBXYW5nLgorbyBMQU5HLTEwNjk6IENoYXJTZXQuZ2V0SW5zdGFuY2UgZG9jdW1lbnRhdGlvbiBkb2VzIG5vdCBjbGVhcmx5IGV4cGxhaW4gaG93CisgICAgICAgICAgICAgdG8gaW5jbHVkZSBuZWdhdGlvbiBjaGFyYWN0ZXIgaW4gc2V0LiBUaGFua3MgdG8gQXJubyBOb29yZG92ZXIuCitvIExBTkctMTEwNzogRml4IHBhcnNpbmcgZWRnZSBjYXNlcyBpbiBGYXN0RGF0ZVBhcnNlci4KK28gTEFORy0xMjczOiBBZGRlZCBuZXcgcHJvcGVydHkgSVNfT1NfTUFDX09TWF9FTF9DQVBJVEFOIGluIFN5c3RlbVV0aWxzLiBUaGFua3MKKyAgICAgICAgICAgICB0byBKYWtlIFdhbmcuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMgZm9yIHZlcnNpb24gMy40CisKKworQ09NUEFUSUJJTElUWQorPT09PT09PT09PT09PQorCitDb21tb25zIExhbmcgMy40IGlzIGZ1bGx5IGJpbmFyeSBjb21wYXRpYmxlIHRvIHRoZSBsYXN0IHJlbGVhc2UgYW5kIGNhbgordGhlcmVmb3JlIGJlIHVzZWQgYXMgYSBkcm9wIGluIHJlcGxhY2VtZW50IGZvciAzLjMuMi4gTm90ZSB0aGF0IHRoZSB2YWx1ZSBvZgorb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLnRpbWUuRHVyYXRpb25Gb3JtYXRVdGlscy5JU09fRVhURU5ERURfRk9STUFUX1BBVFRFUk4KK2hhcyBjaGFuZ2VkLCB3aGljaCBtYXkgYWZmZWN0IGNsaWVudHMgdXNpbmcgdGhlIGNvbnN0YW50LiBGdXJ0aGVybW9yZSB0aGUKK2NvbnN0YW50IGlzIHVzZWQgaW50ZXJuYWxseSBpbgorbyBEdXJhdGlvbkZvcm1hdFV0aWxzLmZvcm1hdER1cmF0aW9uSVNPKGxvbmcpCitvIER1cmF0aW9uRm9ybWF0VXRpbHMuZm9ybWF0UGVyaW9kSVNPKGxvbmcsIGxvbmcpCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL0xBTkctMTAwMC4KKworTkVXIEZFQVRVUkVTCis9PT09PT09PT09PT09PQorCitvIExBTkctODIxOiAgU3VwcG9ydCBPUyBYIHZlcnNpb25zIGluIFN5c3RlbVV0aWxzLiBUaGFua3MgdG8gVGltbyBLb2NrZXJ0LgorbyBMQU5HLTExMDM6IEFkZCBTeXN0ZW1VdGlscy5JU19KQVZBXzFfOQorbyBMQU5HLTEwOTM6IEFkZCBDbGFzc1V0aWxzLmdldEFiYnJldmlhdGVkTmFtZSgpLiBUaGFua3MgdG8gRmFiaWFuIExhbmdlLgorbyBMQU5HLTEwODI6IEFkZCBvcHRpb24gdG8gZGlzYWJsZSB0aGUgIm9iamVjdHNUcml2aWFsbHlFcXVhbCIgdGVzdCBpbgorICAgICAgICAgICAgIERpZmZCdWlsZGVyLiBUaGFua3MgdG8gSm9uYXRoYW4gQmFrZXIuCitvIExBTkctMTAxNTogQWRkIEpzb25Ub1N0cmluZ1N0eWxlIGltcGxlbWVudGF0aW9uIHRvIFRvU3RyaW5nU3R5bGUuIFRoYW5rcyB0bworICAgICAgICAgICAgIFRoaWFnbyBBbmRyYWRlLgorbyBMQU5HLTEwODA6IEFkZCBOb0NsYXNzTmFtZVRvU3RyaW5nU3R5bGUgaW1wbGVtZW50YXRpb24gb2YgVG9TdHJpbmdTdHlsZS4KKyAgICAgICAgICAgICBUaGFua3MgdG8gSW5ub2tlbnR5IFNodXZhbG92LgorbyBMQU5HLTg4MzogIEFkZCBTdHJpbmdVdGlscy5jb250YWluc0FueShDaGFyU2VxdWVuY2UsIENoYXJTZXF1ZW5jZS4uLikgbWV0aG9kLgorICAgICAgICAgICAgIFRoYW5rcyB0byBEYW5pZWwgU3Rld2FydC4KK28gTEFORy0xMDUyOiBNdWx0aWxpbmUgcmVjdXJzaXZlIHRvIHN0cmluZyBzdHlsZS4gVGhhbmtzIHRvIEphbiBNYXTocm5lLgorbyBMQU5HLTUzNjogIEFkZCBpc1NvcnRlZCgpIHRvIEFycmF5VXRpbHMuIFRoYW5rcyB0byBKYW1lcyBTYXdsZS4KK28gTEFORy0xMDMzOiBBZGQgU3RyaW5nVXRpbHMuY291bnRNYXRjaGVzKENoYXJTZXF1ZW5jZSwgY2hhcikKK28gTEFORy0xMDIxOiBQcm92aWRlIG1ldGhvZHMgdG8gcmV0cmlldmUgYWxsIGZpZWxkcy9tZXRob2RzIGFubm90YXRlZCB3aXRoIGEKKyAgICAgICAgICAgICBzcGVjaWZpYyB0eXBlLiBUaGFua3MgdG8gQWxleGFuZGVyIE38bGxlci4KK28gTEFORy0xMDE2OiBOdW1iZXJVdGlscyNpc1BhcnNhYmxlIG1ldGhvZChzKS4gVGhhbmtzIHRvCisgICAgICAgICAgICAgSnVhbiBQYWJsbyBTYW50b3MgUm9kcu1ndWV6LgorbyBMQU5HLTk5OTogIEFkZCBmdXp6eSBTdHJpbmcgbWF0Y2hpbmcgbG9naWMgdG8gU3RyaW5nVXRpbHMuIFRoYW5rcyB0bworICAgICAgICAgICAgIEJlbiBSaXBrZW5zLgorbyBMQU5HLTk5NDogIEFkZCB6ZXJvIGNvcHkgcmVhZCBtZXRob2QgdG8gU3RyQnVpbGRlci4gVGhhbmtzIHRvCisgICAgICAgICAgICAgTWlraGFpbCBNYXp1cnNreS4KK28gTEFORy05OTM6ICBBZGQgemVybyBjb3B5IHdyaXRlIG1ldGhvZCB0byBTdHJCdWlsZGVyLiBUaGFua3MgdG8KKyAgICAgICAgICAgICBNaWtoYWlsIE1henVyc2t5LgorbyBMQU5HLTEwNDQ6IEFkZCBtZXRob2QgTWV0aG9kVXRpbHMuaW52b2tlRXhhY3RNZXRob2QoT2JqZWN0LCBTdHJpbmcpCitvIExBTkctMTA0NTogQWRkIG1ldGhvZCBNZXRob2RVdGlscy5pbnZva2VNZXRob2QoT2JqZWN0LCBTdHJpbmcpCisKK0ZJWEVEIEJVR1MKKz09PT09PT09PT09PQorCitvIExBTkctNzk0OiAgU3lzdGVtVXRpbHMuSVNfT1NfV0lORE9XU18yMDA4LCBWSVNUQSBhcmUgaW5jb3JyZWN0LiBUaGFua3MgdG8KKyAgICAgICAgICAgICBUaW1vIEtvY2tlcnQuCitvIExBTkctMTEwNDogUGFyc2UgdGVzdCBmYWlscyBmb3IgVGltZVpvbmUgQW1lcmljYS9TYW9fUGF1bG8KK28gTEFORy05NDg6ICBFeGNlcHRpb24gd2hpbGUgdXNpbmcgRXh0ZW5kZWRNZXNzYWdlRm9ybWF0IGFuZCBlc2NhcGluZyBicmFjZXMuCisgICAgICAgICAgICAgVGhhbmtzIHRvIEFuZHJleSBLaG9ibnlhLgorbyBMQU5HLTEwOTI6IFdyb25nIGZvcm1hdGluZyBvZiB0aW1lIHpvbmVzIHdpdGggZGF5bGlnaHQgc2F2aW5nIHRpbWUgaW4KKyAgICAgICAgICAgICBGYXN0RGF0ZVByaW50ZXIKK28gTEFORy0xMDkwOiBGYXN0RGF0ZVBhcnNlciBkb2VzIG5vdCBzZXQgZXJyb3IgaW5kaWNhdGlvbiBpbiBQYXJzZVBvc2l0aW9uCitvIExBTkctMTA4OTogRmFzdERhdGVQYXJzZXIgZG9lcyBub3QgaGFuZGxlIGV4Y2VzcyBob3VycyBhcyBwZXIKKyAgICAgICAgICAgICBTaW1wbGVEYXRlRm9ybWF0CitvIExBTkctMTA2MTogRmFzdERhdGVQYXJzZXIgZXJyb3IgLSB0aW1lem9uZXMgbm90IGhhbmRsZWQgY29ycmVjdGx5LiBUaGFua3MgdG8KKyAgICAgICAgICAgICBkbWVuZXNlcy4KK28gTEFORy0xMDg3OiBOdW1iZXJVdGlscyNjcmVhdGVOdW1iZXIoKSByZXR1cm5zIHBvc2l0aXZlIEJpZ0RlY2ltYWwgd2hlbgorICAgICAgICAgICAgIG5lZ2F0aXZlIEZsb2F0IGlzIGV4cGVjdGVkLiBUaGFua3MgdG8gUmVuYXQgWmhpbGtpYmFldi4KK28gTEFORy0xMDgxOiBEaWZmQnVpbGRlci5hcHBlbmQoU3RyaW5nLCBPYmplY3QgbGVmdCwgT2JqZWN0IHJpZ2h0KSBkb2VzIG5vdCBkbworICAgICAgICAgICAgIGEgbGVmdC5lcXVhbHMocmlnaHQpIGNoZWNrLiBUaGFua3MgdG8gSm9uYXRoYW4gQmFrZXIuCitvIExBTkctMTA1NTogU3RyU3Vic3RpdHV0b3IucmVwbGFjZVN5c3RlbVByb3BlcnRpZXMgZG9lcyBub3Qgd29yayBjb25zaXN0ZW50bHkuCisgICAgICAgICAgICAgVGhhbmtzIHRvIEpvbmF0aGFuIEJha2VyLgorbyBMQU5HLTEwODM6IEFkZCAoVCkgY2FzdHMgdG8gZ2V0IHVuaXQgdGVzdHMgdG8gcGFzcyBpbiBvbGQgSkRLLiBUaGFua3MgdG8KKyAgICAgICAgICAgICBKb25hdGhhbiBCYWtlci4KK28gTEFORy0xMDczOiBSZWFkIHdyb25nIGNvbXBvbmVudCB0eXBlIG9mIGFycmF5IGluIGFkZCBpbiBBcnJheVV0aWxzLgorICAgICAgICAgICAgIFRoYW5rcyB0byBoYWl5YW5nIGxpLgorbyBMQU5HLTEwNzc6IFN0cmluZ1V0aWxzLm9yZGluYWxJbmRleE9mKCJhYWFhYWEiLCAiYWEiLCAyKSAhPSAzIGluIFN0cmluZ1V0aWxzLgorICAgICAgICAgICAgIFRoYW5rcyB0byBoYWl5YW5nIGxpLgorbyBMQU5HLTEwNzI6IER1cGxpY2F0ZWQgIjB4IiBjaGVjayBpbiBjcmVhdGVCaWdJbnRlZ2VyIGluIE51bWJlclV0aWxzLiBUaGFua3MKKyAgICAgICAgICAgICB0byBoYWl5YW5nIGxpLgorbyBMQU5HLTEwNjQ6IFN0cmluZ1V0aWxzLmFiYnJldmlhdGUgZGVzY3JpcHRpb24gZG9lc24ndCBhZ3JlZSB3aXRoIHRoZQorICAgICAgICAgICAgIGV4YW1wbGVzLiBUaGFua3MgdG8gQi5KLiBIZXJiaXNvbi4KK28gTEFORy0xMDQxOiBGaXggTWV0aG9kVXRpbHNUZXN0IHNvIGl0IGRvZXMgbm90IGRlcGVuZCBvbiBKREsgbWV0aG9kIG9yZGVyaW5nLgorICAgICAgICAgICAgIFRoYW5rcyB0byBBbGV4YW5kcmUgQmFydGVsLgorbyBMQU5HLTEwMDA6IFBhcnNlRXhjZXB0aW9uIHdoZW4gdHJ5aW5nIHRvIHBhcnNlIFVUQyBkYXRlcyB3aXRoIFogYXMgem9uZQorICAgICAgICAgICAgIGRlc2lnbmF0b3IgdXNpbmcgRGF0ZUZvcm1hdFV0aWxzLklTT19EQVRFVElNRV9USU1FX1pPTkVfRk9STUFUCitvIExBTkctMTAzNTogSmF2YWRvYyBmb3IgRXF1YWxzQnVpbGRlci5yZWZsZWN0aW9uRXF1YWxzKCkgaXMgdW5jbGVhcgorbyBMQU5HLTEwMDE6IElTTyA4NjAxIG1pc3NwZWxsZWQgdGhyb3VnaG91dCB0aGUgSmF2YWRvY3MuIFRoYW5rcyB0bworICAgICAgICAgICAgIE1pY2hhZWwgT3NpcG92LgorbyBMQU5HLTEwODg6IEZhc3REYXRlUGFyc2VyIHNob3VsZCBiZSBjYXNlIGluc2Vuc2l0aXZlCitvIExBTkctOTk1OiAgRml4IGJ1ZyB3aXRoIHN0cmlwcGluZyBzcGFjZXMgb24gbGFzdCBsaW5lIGluIFdvcmRVdGlscy53cmFwKCkuCisgICAgICAgICAgICAgVGhhbmtzIHRvIEFuZHJleSBLaG9ibnlhLgorCitDSEFOR0VTCis9PT09PT09PT0KKworbyBMQU5HLTExMDI6IE1ha2UgbG9naWMgZm9yIGNvbXBhcmluZyBPUyB2ZXJzaW9ucyBpbiBTeXN0ZW1VdGlscyBzbWFydGVyCitvIExBTkctMTA5MTogU2h1dGRvd24gdGhyZWFkIHBvb2xzIGluIHRlc3QgY2FzZXMuIFRoYW5rcyB0byBGYWJpYW4gTGFuZ2UuCitvIExBTkctMTEwMTogRmFzdERhdGVQYXJzZXIgYW5kIEZhc3REYXRlUHJpbnRlciBzdXBwb3J0ICdYJyBmb3JtYXQKK28gTEFORy0xMTAwOiBBdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiB3aGVuIHVzaW5nIGRhdGUgZm9ybWF0aW5nIHRvIFN0cmluZ0J1ZmZlci4KKyAgICAgICAgICAgICBUaGFua3MgdG8gbWJyYWNoZXIuCitvIExBTkctOTM1OiAgUG9zc2libGUgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgb24gc3RyaW5nIGVzY2FwZSBmdW5jdGlvbnMuCisgICAgICAgICAgICAgVGhhbmtzIHRvIEZhYmlhbiBMYW5nZSwgVGhvbWFzIE5laWRoYXJ0LgorbyBMQU5HLTEwOTg6IEF2b2lkIFN0cmluZyBhbGxvY2F0aW9uIGluIFN0ckJ1aWxkZXIuYXBwZW5kKENoYXJTZXF1ZW5jZSkuIFRoYW5rcworICAgICAgICAgICAgIHRvIE1pa2hhaWwgTWF6dXJza2l5LCBGYWJpYW4gTGFuZ2UuCitvIExBTkctMTA5ODogVXBkYXRlIG1hdmVuLWNoZWNrc3R5bGUtcGx1Z2luIHRvIDIuMTQuIFRoYW5rcyB0byBNaWNoYT8gS29yZGFzLgorbyBMQU5HLTEwOTc6IFVwZGF0ZSBvcmcuZWFzeW1vY2s6ZWFzeW1vY2sgdG8gMy4zLjEuIFRoYW5rcyB0byBNaWNoYT8gS29yZGFzLgorbyBMQU5HLTEwOTY6IFVwZGF0ZSBtYXZlbi1wbWQtcGx1Z2luIHRvIDMuNC4gVGhhbmtzIHRvIE1pY2hhPyBLb3JkYXMuCitvIExBTkctMTA5NTogVXBkYXRlIG1hdmVuLWFudHJ1bi1wbHVnaW4gdG8gMS44LiBUaGFua3MgdG8gTWljaGE/IEtvcmRhcy4KK28gTEFORy04Nzc6ICBQZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgZm9yIFN0cmluZ0VzY2FwZVV0aWxzLiBUaGFua3MgdG8KKyAgICAgICAgICAgICBGYWJpYW4gTGFuZ2UuCitvIExBTkctMTA3MTogRml4IHdyb25nIGV4YW1wbGVzIGluIEphdmFkb2Mgb2YKKyAgICAgICAgICAgICBTdHJpbmdVdGlscy5yZXBsYWNlRWFjaFJlcGVhdGVkbHkoLi4uKSwKKyAgICAgICAgICAgICBTdHJpbmdVdGlscy5yZXBsYWNlRWFjaCguLi4pIFRoYW5rcyB0byBBcm5vIE5vb3Jkb3Zlci4KK28gTEFORy04Mjc6ICBDb21wYXJlVG9CdWlsZGVyJ3MgZG9jIGRvZXNuJ3Qgc3BlY2lmeSBwcmVjZWRlbmNlIG9mIGZpZWxkcyBpdAorICAgICAgICAgICAgIHVzZXMgaW4gcGVyZm9ybWluZyBjb21wYXJpc29ucworbyBMQU5HLTEwMjA6IEltcHJvdmUgcGVyZm9ybWFuY2Ugb2Ygbm9ybWFsaXplIHNwYWNlLiBUaGFua3MgdG8gTGlib3IgT25kcnVzZWsuCitvIExBTkctMTAyNzogb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLlN5c3RlbVV0aWxzI2lzSmF2YVZlcnNpb25BdExlYXN0IHNob3VsZAorICAgICAgICAgICAgIHJldHVybiB0cnVlIGJ5IGRlZmF1bHQKK28gTEFORy0xMDI2OiBCcmluZyBzdGF0aWMgbWV0aG9kIHJlZmVyZW5jZXMgaW4gU3RyaW5nVXRpbHMgdG8gY29uc2lzdGVudCBzdHlsZS4KKyAgICAgICAgICAgICBUaGFua3MgdG8gQWxleCBZdXJzaGEuCitvIExBTkctMTAxNzogVXNlIG5vbi1BU0NJSSBkaWdpdHMgaW4gSmF2YWRvYyBleGFtcGxlcyBmb3IKKyAgICAgICAgICAgICBTdHJpbmdVdGlscy5pc051bWVyaWMuIFRoYW5rcyB0byBDaHJpc3RvcGggU2NobmVlZ2Fucy4KK28gTEFORy0xMDA4OiBDaGFuZ2UgbWluL21heCBtZXRob2RzIGluIE51bWJlclV0aWxzL0lFRUU3NTRyVXRpbHMgZnJvbSBhcnJheQorICAgICAgICAgICAgIGlucHV0IHBhcmFtZXRlcnMgdG8gdmFyYXJncy4gVGhhbmtzIHRvIFRoaWFnbyBBbmRyYWRlLgorbyBMQU5HLTEwMDY6IEFkZCB3cmFwICh3aXRoIFN0cmluZyBvciBjaGFyKSB0byBTdHJpbmdVdGlscy4gVGhhbmtzIHRvCisgICAgICAgICAgICAgVGhpYWdvIEFuZHJhZGUuCitvIExBTkctMTAwNTogRXh0ZW5kIER1cmF0aW9uRm9ybWF0VXRpbHMjZm9ybWF0RHVyYXRpb25JU08gZGVmYXVsdCBwYXR0ZXJuIHRvCisgICAgICAgICAgICAgbWF0Y2ggI2Zvcm1hdER1cmF0aW9uSE1TLiBUaGFua3MgdG8gTWljaGFlbCBPc2lwb3YuCitvIExBTkctMTAwNzogRml4aW5nIE51bWJlclV0aWxzIEpBVkFEb2MgY29tbWVudHMgZm9yIG1heCBtZXRob2RzLiBUaGFua3MgdG8KKyAgICAgICAgICAgICBUaGlhZ28gQW5kcmFkZS4KK28gTEFORy03MzE6ICBCZXR0ZXIgSmF2YWRvYyBmb3IgQml0RmllbGQgY2xhc3MKK28gTEFORy0xMDA0OiBEdXJhdGlvbkZvcm1hdFV0aWxzI2Zvcm1hdER1cmF0aW9uSE1TIGltcGxlbWVudGF0aW9uIGRvZXMgbm90CisgICAgICAgICAgICAgY29ycmVzcG9uZCB0byBKYXZhZG9jIGFuZCB2aWNlIHZlcnNhLiBUaGFua3MgdG8gTWljaGFlbCBPc2lwb3YuCitvIExBTkctMTAwMzogRHVyYXRpb25Gb3JtYXRVdGlscyBhcmUgbm90IGFibGUgdG8gaGFuZGxlIG5lZ2F0aXZlCisgICAgICAgICAgICAgZHVyYXRpb25zL3BlcmlvZHMKK28gTEFORy05OTg6ICBKYXZhZG9jIGlzIG5vdCBjbGVhciBvbiBwcmVmZXJyZWQgcGF0dGVybiB0byBpbnN0YW50aWF0ZQorICAgICAgICAgICAgIEZhc3REYXRlUGFyc2VyIC8gRmFzdERhdGVQcmludGVyCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMgZm9yIHZlcnNpb24gMy4zLjIKKworTkVXIEZFQVRVUkVTCis9PT09PT09PT09PT09PQorCitvIExBTkctOTg5OiAgQWRkIG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nMy5TeXN0ZW1VdGlscy5JU19KQVZBXzFfOAorCitGSVhFRCBCVUdTCis9PT09PT09PT09PT0KKworbyBMQU5HLTk5MjogIE51bWJlclV0aWxzI2lzTnVtYmVyKCkgcmV0dXJucyBmYWxzZSBmb3IgIjAuMCIsICIwLjQ3OTAiLCBldCBhbAorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIE5vdGVzIGZvciB2ZXJzaW9uIDMuMy4xCisKK0ZJWEVEIEJVR1MKKz09PT09PT09PT09PQorCitvIExBTkctOTg3OiAgRGF0ZVV0aWxzLmdldEZyYWdtZW50SW5EYXlzKERhdGUsIENhbGVuZGFyLk1PTlRIKSByZXR1cm5zIHdyb25nCisgICAgICAgICAgICAgZGF5cworbyBMQU5HLTk4MzogIER1cmF0aW9uRm9ybWF0VXRpbHMgZG9lcyBub3QgZGVzY3JpYmUgZm9ybWF0IHN0cmluZyBmdWxseQorbyBMQU5HLTk4MTogIER1cmF0aW9uRm9ybWF0VXRpbHMjbGV4eCBkb2VzIG5vdCBkZXRlY3QgdW5tYXRjaGVkIHF1b3RlIGNoYXIKK28gTEFORy05ODQ6ICBEdXJhdGlvbkZvcm1hdFV0aWxzIGRvZXMgbm90IGhhbmRsZSBsYXJnZSBkdXJhdGlvbnMgY29ycmVjdGx5CitvIExBTkctOTgyOiAgRHVyYXRpb25Gb3JtYXRVdGlscy5mb3JtYXREdXJhdGlvbig2MTk5OSwgInMuU1NTUyIpIC0gbXMgZmllbGQKKyAgICAgICAgICAgICBzaXplIHNob3VsZCBiZSA0IGRpZ2l0cworbyBMQU5HLTk3ODogIEZhaWxpbmcgdGVzdHMgd2l0aCBKYXZhIDggYjEyOAorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIE5vdGVzIGZvciB2ZXJzaW9uIDMuMworCitORVcgRkVBVFVSRVMKKz09PT09PT09PT09PT09CisKK28gTEFORy05NTU6ICBBZGQgbWV0aG9kcyBmb3IgcmVtb3ZpbmcgYWxsIGludmFsaWQgY2hhcmFjdGVycyBhY2NvcmRpbmcgdG8KKyAgICAgICAgICAgICBYTUwgMS4wIGFuZCBYTUwgMS4xIGluIGFuIGlucHV0IHN0cmluZyB0byBTdHJpbmdFc2NhcGVVdGlscy4KKyAgICAgICAgICAgICBUaGFua3MgdG8gQWRhbSBIb29wZXIuCitvIExBTkctOTcwOiAgQWRkIEFQSXMgTXV0YWJsZUJvb2xlYW4gc2V0VHJ1ZSgpIGFuZCBzZXRGYWxzZSgpCitvIExBTkctOTYyOiAgQWRkIFNlcmlhbGl6YXRpb25VdGlscy5yb3VuZHRyaXAoVCBleHRlbmRzIFNlcmlhbGl6YWJsZSkgdG8KKyAgICAgICAgICAgICBzZXJpYWxpemUgdGhlbiBkZXNlcmlhbGl6ZQorbyBMQU5HLTYzNzogIFRoZXJlIHNob3VsZCBiZSBhIERpZmZlcmVuY2VCdWlsZGVyIHdpdGggYQorICAgICAgICAgICAgIFJlZmxlY3Rpb25EaWZmZXJlbmNlQnVpbGRlciBpbXBsZW1lbnRhdGlvbgorbyBMQU5HLTk0NDogIEFkZCB0aGUgSmFyby1XaW5rbGVyIHN0cmluZyBkaXN0YW5jZSBhbGdvcml0aG0gdG8gU3RyaW5nVXRpbHMuCisgICAgICAgICAgICAgVGhhbmtzIHRvIFJla2hhIEpvc2hpLgorbyBMQU5HLTQxNzogIE5ldyBjbGFzcyBDbGFzc1BhdGhVdGlscyB3aXRoIG1ldGhvZHMgZm9yIHR1cm5pbmcgRlFOIGludG8KKyAgICAgICAgICAgICByZXNvdXJjZSBwYXRoCitvIExBTkctODM0OiAgVmFsaWRhdGU6IGFkZCBpbmNsdXNpdmVCZXR3ZWVuIGFuZCBleGNsdXNpdmVCZXR3ZWVuIG92ZXJsb2FkcworICAgICAgICAgICAgIGZvciBwcmltaXRpdmUgdHlwZXMKK28gTEFORy05MDA6ICBOZXcgUmFuZG9tVXRpbHMgY2xhc3MuIFRoYW5rcyB0byBEdW5jYW4gSm9uZXMuCitvIExBTkctOTY2OiAgQWRkIElCTSBPUy80MDAgZGV0ZWN0aW9uCisKK0ZJWEVEIEJVR1MKKz09PT09PT09PT09PQorCitvIExBTkctNjIxOiAgUmVmbGVjdGlvblRvU3RyaW5nQnVpbGRlci50b1N0cmluZyBkb2VzIG5vdCBkZWJ1ZyAzcmQgcGFydHkgb2JqZWN0CisgICAgICAgICAgICAgZmllbGRzIHdpdGhpbiAzcmQgcGFydHkgb2JqZWN0LiBUaGFua3MgdG8gUGhpbGlwIEhvZGdlcywKKyAgICAgICAgICAgICBUaG9tYXMgTmVpZGhhcnQuCitvIExBTkctOTc3OiAgTnVtZXJpY0VudGl0eUVzY2FwZXIgaW5jb3JyZWN0bHkgZW5jb2RlcyBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMuCisgICAgICAgICAgICAgVGhhbmtzIHRvIENocmlzIEthcmNoZXIuCitvIExBTkctOTczOiAgTWFrZSBzb21lIHByaXZhdGUgZmllbGRzIGZpbmFsCitvIExBTkctOTcxOiAgTnVtYmVyVXRpbHMjaXNOdW1iZXIoU3RyaW5nKSBmYWlscyB0byByZWplY3QgaW52YWxpZCBPY3RhbCBudW1iZXJzCitvIExBTkctOTcyOiAgTnVtYmVyVXRpbHMjaXNOdW1iZXIgZG9lcyBub3QgYWxsb3cgZm9yIGhleCAwWEFCQ0QKK28gTEFORy05Njk6ICBTdHJpbmdVdGlscy50b0VuY29kZWRTdHJpbmcoYnl0ZVtdLCBDaGFyc2V0KSBuZWVkbGVzc2x5IHRocm93cworICAgICAgICAgICAgIFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24uIFRoYW5rcyB0byBNYXR0IEJpc2hvcC4KK28gTEFORy05NDY6ICBDb25zdGFudEluaXRpYWxpemVyVGVzdCBmYWlscyB3aGVuIGJ1aWxkaW5nIHdpdGggSUJNIEpESyA3CitvIExBTkctOTU0OiAgdW5jYXVnaHQgUGF0dGVyblN5bnRheEV4Y2VwdGlvbiBpbiBGYXN0RGF0ZUZvcm1hdCBvbiBBbmRyb2lkLgorICAgICAgICAgICAgIFRoYW5rcyB0byBNaWNoYWVsIEtlcHBsZXIuCitvIExBTkctOTM2OiAgU3RyaW5nVXRpbHMuZ2V0TGV2ZW5zaHRlaW5EaXN0YW5jZSB3aXRoIHRvbyBiaWcgb2YgYSB0aHJlc2hvbGQKKyAgICAgICAgICAgICByZXR1cm5zIHdyb25nIHJlc3VsdC4gVGhhbmtzIHRvIFlhbml2IEt1bmRhLCBFbGkgTGluZHNleS4KK28gTEFORy05NDM6ICBUZXN0IER1cmF0aW9uRm9ybWF0VXRpbHNUZXN0LnRlc3RFZGdlRHVyYXRpb24gZmFpbHMgaW4KKyAgICAgICAgICAgICBKREsgMS42LCAxLjcgYW5kIDEuOCwgQlJTVCB0aW1lIHpvbmUKK28gTEFORy02MTM6ICBDb25zdHJ1Y3RvclV0aWxzLmdldEFjY2Vzc2libGVDb25zdHJ1Y3RvcigpIERvZXMgTm90IENoZWNrIHRoZQorICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHkgb2YgRW5jbG9zaW5nIENsYXNzZXMKK28gTEFORy05NTE6ICBGcmFnbWVudHMgYXJlIHdyb25nIGJ5IDEgZGF5IHdoZW4gdXNpbmcgZnJhZ21lbnQgWUVBUiBvciBNT05USC4KKyAgICAgICAgICAgICBUaGFua3MgdG8gU2ViYXN0aWFuIEf2dHouCitvIExBTkctOTUwOiAgRmFzdERhdGVQYXJzZXIgZG9lcyBub3QgaGFuZGxlIHR3byBkaWdpdCB5ZWFyIHBhcnNpbmcgbGlrZQorICAgICAgICAgICAgIFNpbXBsZURhdGVGb3JtYXQKK28gTEFORy05NDk6ICBGYXN0RGF0ZVBhcnNlclRlc3QudGVzdFBhcnNlcyBkb2VzIG5vdCB0ZXN0IEZhc3REYXRlUGFyc2VyCitvIExBTkctOTE1OiAgV3JvbmcgbG9jYWxlIGhhbmRsaW5nIGluIExvY2FsZVV0aWxzLnRvTG9jYWxlKCkuCisgICAgICAgICAgICAgVGhhbmtzIHRvIFNlcmdpbyBGZXJu4W5kZXouCisKK0NIQU5HRVMKKz09PT09PT09PQorCitvIExBTkctOTYxOiAgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLnJlZmxlY3QuRmllbGRVdGlscy5yZW1vdmVGaW5hbE1vZGlmaWVyKEZpZWxkKQorICAgICAgICAgICAgIGRvZXMgbm90IGNsZWFuIHVwIGFmdGVyIGl0c2VsZgorbyBMQU5HLTk1ODogIEZhc3REYXRlUGFyc2VyIGphdmFkb2MgaW5jb3JyZWN0bHkgc3RhdGVzIHRoYXQgU2ltcGxlRGF0ZUZvcm1hdAorICAgICAgICAgICAgIGlzIHVzZWQgaW50ZXJuYWxseQorbyBMQU5HLTk1NjogIEltcHJvdmUgSmF2YWRvYyBvZiBXb3JkVXRpbHMud3JhcCBtZXRob2RzCitvIExBTkctOTM5OiAgTW92ZSBEb2N1bWVudGF0aW9uIGZyb20gdXNlciBndWlkZSB0byBwYWNrYWdlLWluZm8gZmlsZXMKK28gTEFORy05NTM6ICBDb252ZXJ0IHBhY2thZ2UuaHRtbCBmaWxlcyB0byBwYWNrYWdlLWluZm8uamF2YSBmaWxlcworbyBMQU5HLTk0MDogIEZpeCBkZXByZWNhdGlvbiB3YXJuaW5ncworbyBMQU5HLTgxOTogIEVudW1VdGlscy5nZW5lcmF0ZUJpdFZlY3RvciBuZWVkcyBhICI/IGV4dGVuZHMiCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMgZm9yIHZlcnNpb24gMy4yLjEKKworQlVHIEZJWEVTCis9PT09PT09PT09PQorCitvIExBTkctOTM3OiAgRml4IG1pc3NpbmcgSGFtY3Jlc3QgZGVwZW5kZW5jeSBpbiBBbnQgQnVpbGQKK28gTEFORy05NDE6ICBUZXN0IGZhaWx1cmUgaW4gTG9jYWxlVXRpbHNUZXN0IHdoZW4gYnVpbGRpbmcgd2l0aCBKREsgOAorbyBMQU5HLTk0MjogIFRlc3QgZmFpbHVyZSBpbiBGYXN0RGF0ZVBhcnNlclRlc3QgYW5kIEZhc3REYXRlRm9ybWF0X1BhcnNlclRlc3QKKyAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIHdpdGggSkRLOC4gVGhhbmtzIHRvIEJydW5vIFAuIEtpbm9zaGl0YSwKKyAgICAgICAgICAgICBIZW5yaSBZYW5kZWxsLgorbyBMQU5HLTkzODogIEJ1aWxkIGZhaWxzIHdpdGggdGVzdCBmYWlsdXJlcyB3aGVuIGJ1aWxkaW5nIHdpdGggSkRLIDgKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSBOb3RlcyBmb3IgdmVyc2lvbiAzLjIKKworQ09NUEFUSUJJTElUWSBXSVRIIDMuMQorPT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgcmVsZWFzZSBpbnRyb2R1Y2VzIGJhY2t3YXJkcyBpbmNvbXBhdGlibGUgY2hhbmdlcyBpbgorb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLnRpbWUuRmFzdERhdGVGb3JtYXQ6CitvIE1ldGhvZCAncHJvdGVjdGVkIGphdmEudXRpbC5MaXN0IHBhcnNlUGF0dGVybigpJyBoYXMgYmVlbiByZW1vdmVkCitvIE1ldGhvZCAncHJvdGVjdGVkIGphdmEubGFuZy5TdHJpbmcgcGFyc2VUb2tlbihqYXZhLmxhbmcuU3RyaW5nLCBpbnRbXSknIGhhcworICBiZWVuIHJlbW92ZWQKK28gTWV0aG9kICdwcm90ZWN0ZWQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLnRpbWUuRmFzdERhdGVGb3JtYXQkTnVtYmVyUnVsZQorICBzZWxlY3ROdW1iZXJSdWxlKGludCwgaW50KScgaGFzIGJlZW4gcmVtb3ZlZAorCitUaGVzZSBjaGFuZ2VzIHdlcmUgdGhlIHJlc3VsdCBvZiBbTEFORy00NjJdLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhpcyBjaGFuZ2UKK3dpbGwgbm90IGJyZWFrIGNsaWVudHMgYXMgQ2hhcmxlcyBIb250b24gcG9pbnRlZCBvdXQgb24gMjUvSmFuLzEyOgorIgorIDEuIE1ldGhvZHMgIkZhc3REYXRlRm9ybWF0JE51bWJlclJ1bGUgc2VsZWN0TnVtYmVyUnVsZShpbnQsIGludCkiIGFuZAorICAgICJMaXN0PFJ1bGU+IHBhcnNlUGF0dGVybigpIiBjb3VsZG4ndCBoYXZlIGJlZW4gb3ZlcnJpZGRlbiBiZWNhdXNlCisgICAgTnVtYmVyUnVsZSBhbmQgUnVsZSB3ZXJlIHByaXZhdGUgdG8gRmFzdERhdGVGb3JtYXQuCisgMi4gRHVlIHRvIHRoZSBmYWN0b3J5IHBhdHRlcm4gdXNlZCwgaXQncyB1bmxpa2VseSBvdGhlciB0d28gbWV0aG9kcyB3b3VsZCBoYXZlCisgICAgYmVlbiBvdmVycmlkZGVuLgorIDMuIFRoZSBmb3VyIG1ldGhvZHMgYXJlIGhpZ2hseSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYy4gSSBjb25zaWRlciBpdCBhCisgICAgbWlzdGFrZSB0aGF0IHRoZSBtZXRob2RzIHdlcmUgZXhwb3NlZC4KKyIKK0ZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL0xBTkctNDYyLgorCitORVcgRkVBVFVSRVMKKz09PT09PT09PT09PT09CisKK28gTEFORy05MzQ6ICBBZGQgcmVtb3ZlRmluYWxNb2RpZmllciB0byBGaWVsZFV0aWxzCitvIExBTkctODYzOiAgTWV0aG9kIHJldHVybnMgbnVtYmVyIG9mIGluaGVyaXRhbmNlIGhvcHMgYmV0d2VlbiBwYXJlbnQgYW5kCisgICAgICAgICAgICAgc3ViY2xhc3MuIFRoYW5rcyB0byBEYW5lZWwgUy4gWWFpdHNrb3YuCitvIExBTkctNzc0OiAgQWRkZWQgaXNTdGFydGVkLCBpc1N1c3BlbmRlZCBhbmQgaXNTdG9wcGVkIHRvIFN0b3BXYXRjaC4KKyAgICAgICAgICAgICBUaGFua3MgdG8gRXJoYW4gQmFnZGVtaXIuCitvIExBTkctODQ4OiAgQWRkZWQgU3RyaW5nVXRpbHMuaXNCbGFuay9pc0VtcHR5IENoYXJTZXF1ZW5jZS4uLiBtZXRob2RzLgorICAgICAgICAgICAgIFRoYW5rcyB0byBBbGV4YW5kZXIgTXV0aG1hbm4uCitvIExBTkctOTI2OiAgQWRkZWQgQXJyYXlVdGlscy5yZXZlcnNlKGFycmF5LCBmcm9tLCB0bykgbWV0aG9kcy4KK28gTEFORy03OTU6ICBTdHJpbmdVdGlscy50b1N0cmluZyhieXRlW10sIFN0cmluZykgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgYSBuZXcKKyAgICAgICAgICAgICBTdHJpbmdVdGlscy50b1N0cmluZyhieXRlW10sIENoYXJTZXQpLiBUaGFua3MgdG8gQWFyb24gRGlndWxsYS4KK28gTEFORy04OTM6ICBTdHJTdWJzdGl0dXRvciBub3cgc3VwcG9ydHMgZGVmYXVsdCB2YWx1ZXMgZm9yIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICBUaGFua3MgdG8gV29vbnNhbiBLby4KK28gTEFORy05MTM6ICBBZGRpbmcgLmdpdGlnbm9yZSB0byBjb21tb25zLWxhbmcuIFRoYW5rcyB0byBBbGxvbiBNdXJlaW5pay4KK28gTEFORy04Mzc6ICBBZGQgT2JqZWN0VXRpbHMudG9JZGVudGl0eVN0cmluZyBtZXRob2RzIHRoYXQgc3VwcG9ydAorICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIsIFN0ckJ1aWxkZXIsIGFuZCBBcHBlbmRhYmxlLgorbyBMQU5HLTg4NjogIEFkZGVkIENoYXJTZXRVdGlscy5jb250YWluc0FueShTdHJpbmcsIFN0cmluZykuCitvIExBTkctNzk3OiAgQWRkZWQgZXNjYXBlL3VuZXNjYXBlSnNvbiB0byBTdHJpbmdFc2NhcGVVdGlscy4KK28gTEFORy04NzU6ICBBZGRlZCBhcHBlbmRJZk1pc3NpbmcgYW5kIHByZXBlbmRJZk1pc3NpbmcgbWV0aG9kcyB0byBTdHJpbmdVdGlscy4KK28gTEFORy04NzA6ICBBZGQgU3RyaW5nVXRpbHMuTEYgYW5kIFN0cmluZ1V0aWxzLkNSIHZhbHVlcy4KK28gTEFORy04NzM6ICBBZGQgRmllbGRVdGlscyBnZXRBbGxGaWVsZHMoKSB0byByZXR1cm4gYWxsIHRoZSBmaWVsZHMgZGVmaW5lZCBpbgorICAgICAgICAgICAgIHRoZSBnaXZlbiBjbGFzcyBhbmQgc3VwZXIgY2xhc3Nlcy4KK28gTEFORy04MzU6ICBTdHJCdWlsZGVyIHNob3VsZCBzdXBwb3J0IFN0cmluZ0J1aWxkZXIgYXMgYW4gaW5wdXQgcGFyYW1ldGVyLgorbyBMQU5HLTg1NzogIFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaW4gQ2hhclNlcXVlbmNlVHJhbnNsYXRvci4KK28gTEFORy04NTY6ICBDb2RlIHJlZmFjdG9yaW5nIGluIE51bWJlclV0aWxzLgorbyBMQU5HLTg1NTogIE51bWJlclV0aWxzI2NyZWF0ZUJpZ0ludGVnZXIgZG9lcyBub3QgYWxsb3cgZm9yIGhleCBhbmQgb2N0YWwKKyAgICAgICAgICAgICBudW1iZXJzLgorbyBMQU5HLTg1NDogIE51bWJlclV0aWxzI2NyZWF0ZU51bWJlciAtIGRvZXMgbm90IGFsbG93IGZvciBoZXggbnVtYmVycyB0byBiZQorICAgICAgICAgICAgIGxhcmdlciB0aGFuIExvbmcuCitvIExBTkctODUzOiAgU3RyaW5nVXRpbHMgam9pbiBBUElzIGZvciBwcmltaXRpdmVzLgorbyBMQU5HLTg0MTogIEFkZCBTdHJpbmdVdGlscyBBUEkgdG8gY2FsbCBTdHJpbmcucmVwbGFjZUFsbCBpbiBET1RBTEwgYS5rLmEuCisgICAgICAgICAgICAgc2luZ2xlLWxpbmUgbW9kZS4KK28gTEFORy04MjU6ICBDcmVhdGUgU3RyQnVpbGRlciBBUElzIHNpbWlsYXIgdG8KKyAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KFN0cmluZywgT2JqZWN0Li4uKS4KK28gTEFORy02NzU6ICBBZGQgVHJpcGxlIGNsYXNzICh0ZXJuYXJ5IHZlcnNpb24gb2YgUGFpcikuCitvIExBTkctNDYyOiAgRmFzdERhdGVGb3JtYXQgc3VwcG9ydHMgcGFyc2UgbWV0aG9kcy4KKworQlVHIEZJWEVTCis9PT09PT09PT09PQorCitvIExBTkctOTMyOiAgU3BlbGxpbmcgZml4ZXMuIFRoYW5rcyB0byBWaWxsZSBTa3l0dOQuCitvIExBTkctOTI5OiAgT2N0YWxVbmVzY2FwZXIgdHJpZWQgdG8gcGFyc2UgYWxsIG9mIFwyNzkuCitvIExBTkctOTI4OiAgT2N0YWxVbmVzY2FwZXIgaGFkIGJ1Z3Mgd2hlbiBwYXJzaW5nIG9jdGFscyBzdGFydGluZyB3aXRoIGEgemVyby4KK28gTEFORy05MDU6ICBFcXVhbHNCdWlsZGVyIHJldHVybmVkIHRydWUgd2hlbiBjb21wYXJpbmcgYXJyYXlzLCBldmVuIHdoZW4gdGhlCisgICAgICAgICAgICAgZWxlbWVudHMgYXJlIGRpZmZlcmVudC4KK28gTEFORy05MTc6ICBGaXhlZCBleGNlcHRpb24gd2hlbiBjb21iaW5pbmcgY3VzdG9tIGFuZCBjaG9pY2UgZm9ybWF0IGluCisgICAgICAgICAgICAgRXh0ZW5kZWRNZXNzYWdlRm9ybWF0LiBUaGFua3MgdG8gQXJuZSBCdXJtZWlzdGVyLgorbyBMQU5HLTkwMjogIFJhbmRvbVN0cmluZ1V0aWxzLnJhbmRvbSBqYXZhZG9jIHdhcyBpbmNvcnJlY3RseSBwcm9taXNpbmcgbGV0dGVycworICAgICAgICAgICAgIGFuZCBudW1iZXJzIHdvdWxkLCBhcyBvcHBvc2VkIHRvIG1heSwgYXBwZWFyICBJc3N1ZTouIFRoYW5rcyB0bworICAgICAgICAgICAgIEFuZHJ6ZWogV2lubmlja2kuCitvIExBTkctOTIxOiAgQm9vbGVhblV0aWxzLnhvcihib29sZWFuLi4uKSBwcm9kdWNlcyB3cm9uZyByZXN1bHRzLgorbyBMQU5HLTg5NjogIEJvb2xlYW5VdGlscy50b0Jvb2xlYW4oU3RyaW5nIHN0cikgamF2YWRvYyBpcyBub3QgdXBkYXRlZC4gVGhhbmtzCisgICAgICAgICAgICAgdG8gTWFyayBCcnlhbiBZdS4KK28gTEFORy04Nzk6ICBMb2NhbGVVdGlscyB0ZXN0IGZhaWxzIHdpdGggbmV3IExvY2FsZSAiamFfSlBfSlBfI3UtY2EtamFwYW5lc2UiCisgICAgICAgICAgICAgb2YgSkRLNy4KK28gTEFORy04MzY6ICBTdHJTdWJzdGl0dXRvciBkb2VzIG5vdCBzdXBwb3J0IFN0cmluZ0J1aWxkZXIgb3IgQ2hhclNlcXVlbmNlLgorICAgICAgICAgICAgIFRoYW5rcyB0byBBcm5hdWQgQnJ1bmV0LgorbyBMQU5HLTY5MzogIE1ldGhvZCBjcmVhdGVOdW1iZXIgZnJvbSBOdW1iZXJVdGlscyBkb2Vzbid0IHdvcmsgZm9yIGZsb2F0aW5nCisgICAgICAgICAgICAgcG9pbnQgbnVtYmVycyBvdGhlciB0aGFuIEZsb2F0ICBJc3N1ZTogTEFORy02OTMuIFRoYW5rcyB0bworICAgICAgICAgICAgIENhbHZpbiBFY2hvbHMuCitvIExBTkctODg3OiAgRmFzdERhdGVGb3JtYXQgZG9lcyBub3QgdXNlIHRoZSBsb2NhbGUgc3BlY2lmaWMgY2FjaGUgY29ycmVjdGx5LgorbyBMQU5HLTc1NDogIENsYXNzVXRpbHMuZ2V0U2hvcnROYW1lKFN0cmluZykgd2lsbCBub3cgb25seSBkbyBhIHJldmVyc2UgbG9va3VwCisgICAgICAgICAgICAgZm9yIGFycmF5IHR5cGVzLgorbyBMQU5HLTg4MTogIE51bWJlclV0aWxzLmNyZWF0ZU51bWJlcigpIEphdmFkb2Mgc2F5cyBpdCBkb2VzIG5vdCB3b3JrIGZvciBvY3RhbAorICAgICAgICAgICAgIG51bWJlcnMuCitvIExBTkctODY1OiAgTG9jYWxlVXRpbHMudG9Mb2NhbGUgZG9lcyBub3QgcGFyc2Ugc3RyaW5ncyBzdGFydGluZyB3aXRoIGFuCisgICAgICAgICAgICAgdW5kZXJzY29yZS4KK28gTEFORy04NTg6ICBTdHJpbmdFc2NhcGVVdGlscy5lc2NhcGVKYXZhKCkgYW5kIGVzY2FwZUVjbWFTY3JpcHQoKSBkbyBub3QKKyAgICAgICAgICAgICBvdXRwdXQgdGhlIGVzY2FwZWQgc3Vycm9nYXRlIHBhaXJzIHRoYXQgYXJlIEphdmEgcGFyc2FibGUuCitvIExBTkctODQ5OiAgRmFzdERhdGVGb3JtYXQgYW5kIEZhc3REYXRlUHJpbnRlciBnZW5lcmF0ZXMgRGF0ZSBvYmplY3RzCisgICAgICAgICAgICAgd2FzdGVmdWxseS4KK28gTEFORy04NDU6ICBTcGVsbGluZyBmaXhlcy4KK28gTEFORy04NDQ6ICBGaXggZXhhbXBsZXMgY29udGFpbmVkIGluIGphdmFkb2Mgb2YgU3RyaW5nVXRpbHMuY2VudGVyIG1ldGhvZHMuCitvIExBTkctODMyOiAgRmFzdERhdGVQYXJzZXIgZG9lcyBub3QgaGFuZGxlIHVudGVybWluYXRlZCBxdW90ZXMgY29ycmVjdGx5LgorbyBMQU5HLTgzMTogIEZhc3REYXRlUGFyc2VyIGRvZXMgbm90IGhhbmRsZSB3aGl0ZS1zcGFjZSBwcm9wZXJseS4KK28gTEFORy04MzA6ICBGYXN0RGF0ZVBhcnNlciBjb3VsZCB1c2UgXFEgXEUgdG8gcXVvdGUgcmVnZXhlcy4KK28gTEFORy04Mjg6ICBGYXN0RGF0ZVBhcnNlciBkb2VzIG5vdCBoYW5kbGUgbm9uLUdyZWdvcmlhbiBjYWxlbmRhcnMgcHJvcGVybHkuCitvIExBTkctODI2OiAgRmFzdERhdGVQYXJzZXIgZG9lcyBub3QgaGFuZGxlIG5vbi1BU0NJSSBkaWdpdHMgY29ycmVjdGx5LgorbyBMQU5HLTgyMjogIE51bWJlclV0aWxzI2NyZWF0ZU51bWJlciAtIGJhZCBiZWhhdmlvdXIgZm9yIGxlYWRpbmcgIi0tIi4KK28gTEFORy04MTg6ICBGYXN0RGF0ZUZvcm1hdCdzICJ6IiBwYXR0ZXJuIGRvZXMgbm90IHJlc3BlY3QgdGltZXpvbmUgb2YgQ2FsZW5kYXIKKyAgICAgICAgICAgICBpbnN0YW5jZXMgcGFzc2VkIHRvIGZvcm1hdCgpLgorbyBMQU5HLTgxNzogIEFkZCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuU3lzdGVtVXRpbHMuSVNfT1NfV0lORE9XU184LgorbyBMQU5HLTgxMzogIFN0cmluZ1V0aWxzLmVxdWFsc0lnbm9yZUNhc2UgZG9lc24ndCBjaGVjayBzdHJpbmcgcmVmZXJlbmNlCisgICAgICAgICAgICAgZXF1YWxpdHkuCitvIExBTkctODEwOiAgU3RyaW5nVXRpbHMuam9pbigpIGVuZEluZGV4LCBidWdnZWQgZm9yIGxvb3AuCitvIExBTkctODA3OiAgUmFuZG9tU3RyaW5nVXRpbHMgdGhyb3dzIGNvbmZ1c2luZyBJQUUgd2hlbiBlbmQgPD0gc3RhcnQuCitvIExBTkctODA1OiAgUmFuZG9tU3RyaW5nVXRpbHMucmFuZG9tKGNvdW50LCAwLCAwLCBmYWxzZSwgZmFsc2UsIHVuaXZlcnNlLAorICAgICAgICAgICAgIHJhbmRvbSkgYWx3YXlzIHRocm93cyBqYXZhLmxhbmcuQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uLgorbyBMQU5HLTgwMjogIExvY2FsZVV0aWxzIC0gdW5uZWNlc3NhcnkgcmVjdXJzaXZlIGNhbGwgaW4gU3luY0F2b2lkIGNsYXNzLgorbyBMQU5HLTgwMDogIEphdmFkb2MgYnVnIGluIERhdGVVdGlscyNjZWlsaW5nIGZvciBDYWxlbmRhciBhbmQgT2JqZWN0IHZlcnNpb25zLgorbyBMQU5HLTc4ODogIFNlcmlhbGl6YXRpb25VdGlscyB0aHJvd3MgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB3aGVuIGNsb25pbmcKKyAgICAgICAgICAgICBwcmltaXRpdmUgY2xhc3Nlcy4KK28gTEFORy03ODY6ICBTdHJpbmdVdGlscyBlcXVhbHMoKSByZWxpZXMgb24gdW5kZWZpbmVkIGJlaGF2aW9yLgorbyBMQU5HLTc4MzogIERvY3VtZW50YXRpb24gYnVnOiBTdHJpbmdVdGlscy5zcGxpdC4KK28gTEFORy03Nzc6ICBqYXIgY29udGFpbnMgdmVsb2NpdHkgdGVtcGxhdGUgb2YgcmVsZWFzZSBub3Rlcy4KK28gTEFORy03NzY6ICBUeXBlVXRpbHNUZXN0IGNvbnRhaW5zIGluY29ycmVjdCB0eXBlIGFzc2lnbmFiaWxpdHkgYXNzZXJ0aW9uLgorbyBMQU5HLTc3NTogIFR5cGVVdGlscy5nZXRUeXBlQXJndW1lbnRzKCkgbWlzc2VzIHR5cGUgYXJndW1lbnRzIGZvcgorICAgICAgICAgICAgIHBhcnRpYWxseS1hc3NpZ25lZCBjbGFzc2VzLgorbyBMQU5HLTc3MzogIEltbXV0YWJsZVBhaXIgZG9jIGNvbnRhaW5zIG5vbnNlbnNlIHRleHQuCitvIExBTkctNzcyOiAgQ2xhc3NVdGlscy5QQUNLQUdFX1NFUEFSQVRPUiBKYXZhZG9jIGNvbnRhaW5zIGdhcmJhZ2UgdGV4dC4KK28gTEFORy03NjU6ICBFdmVudExpc3RlbmVyU3VwcG9ydC5Qcm94eUludm9jYXRpb25IYW5kbGVyIG5vIGxvbmdlciBkZWZpbmVzCisgICAgICAgICAgICAgc2VyaWFsVmVyc2lvblVJRC4KK28gTEFORy03NjQ6ICBTdHJCdWlsZGVyIGlzIG5vdyBzZXJpYWxpemFibGUuCitvIExBTkctNzYxOiAgRml4IEphdmFkb2MgQW50IHdhcm5pbmdzLgorbyBMQU5HLTc0NzogIE51bWJlclV0aWxzIGRvZXMgbm90IGhhbmRsZSBMb25nIEhleCBudW1iZXJzLgorbyBMQU5HLTc0MzogIEphdmFkb2MgYnVnIGluIHN0YXRpYyBpbm5lciBjbGFzcyBEYXRlSXRlcmF0b3IuCisKK0NIQU5HRVMKKz09PT09PT09PQorCitvIExBTkctOTMxOiAgTWlzbGVhZGluZyBKYXZhZG9jIGNvbW1lbnQgaW4gU3RyQnVpbGRlclJlYWRlciBjbGFzcy4gVGhhbmtzCisgICAgICAgICAgICAgdG8gQ2hyaXN0b3BoIFNjaG5lZWdhbnMuCitvIExBTkctOTEwOiAgU3RyaW5nVXRpbHMubm9ybWFsaXplU3BhY2Ugbm93IGhhbmRsZXMgbm9uLWJyZWFraW5nIHNwYWNlcworICAgICAgICAgICAgIChVbmljb2RlIDAwQTApLiBUaGFua3MgdG8gVGltdXIgWWFyb3NoLgorbyBMQU5HLTgwNDogIFJlZHVuZGFudCBjaGVjayBmb3IgemVybyBpbiBIYXNoQ29kZUJ1aWxkZXIgY3Rvci4gVGhhbmtzIHRvCisgICAgICAgICAgICAgQWxsb24gTXVyZWluaWsuCitvIExBTkctODg0OiAgU2ltcGxpZnkgRmFzdERhdGVGb3JtYXQ7IGVsaW1pbmF0ZSBib3hpbmcuCitvIExBTkctODgyOiAgTG9va3VwVHJhbnNsYXRvciBub3cgd29ya3Mgd2l0aCBpbXBsZW1lbnRhdGlvbnMgb2YgQ2hhclNlcXVlbmNlCisgICAgICAgICAgICAgb3RoZXIgdGhhbiBTdHJpbmcuCitvIExBTkctODQ2OiAgUHJvdmlkZSBDaGFyU2VxdWVuY2VVdGlscy5yZWdpb25NYXRjaGVzIHdpdGggYSBwcm9wZXIgZ3JlZW4KKyAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIG9mIGluZWZmaWNpZW50bHkgY29udmVydGluZyB0byBTdHJpbmdzLgorbyBMQU5HLTgzOTogIEFycmF5VXRpbHMgcmVtb3ZlRWxlbWVudHMgbWV0aG9kcyB1c2UgdW5uZWNlc3NhcnkgSGFzaFNldC4KK28gTEFORy04Mzg6ICBBcnJheVV0aWxzIHJlbW92ZUVsZW1lbnRzIG1ldGhvZHMgY2xvbmUgdGVtcG9yYXJ5IGluZGV4IGFycmF5cworICAgICAgICAgICAgIHVubmVjZXNzYXJpbHkuCitvIExBTkctNzk5OiAgRGF0ZVV0aWxzI3BhcnNlRGF0ZSB1c2VzIGRlZmF1bHQgbG9jYWxlOyBhZGQgTG9jYWxlIHN1cHBvcnQuCitvIExBTkctNzk4OiAgVXNlIGdlbmVyaWNzIGluIFNlcmlhbGl6YXRpb25VdGlscy4KKworQ0hBTkdFUyBXSVRIT1VUIFRJQ0tFVAorPT09PT09PT09PT09PT09PT09PT09PT09CisKK28gRml4ZWQgVVJMcyBpbiBqYXZhZG9jIHRvIHBvaW50IHRvIG5ldyBvcmFjbGUuY29tIHBhZ2VzCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMgZm9yIHZlcnNpb24gMy4xCisKK05FVyBGRUFUVVJFUworPT09PT09PT09PT09PT0KKworbyBMQU5HLTgwMTogIEFkZCBDb252ZXJzaW9uIHV0aWxpdHkgdG8gY29udmVydCBiZXR3ZWVuIGRhdGEgdHlwZXMgb24gYnl0ZSBsZXZlbAorbyBMQU5HLTc2MDogIEFkZCBBUEkgU3RyaW5nVXRpbHMudG9TdHJpbmcoYnl0ZVtdIGludHB1dCwgU3RyaW5nIGNoYXJzZXROYW1lKQorbyBMQU5HLTc1NjogIEFkZCBBUElzIENsYXNzVXRpbHMuaXNQcmltaXRpdmVXcmFwcGVyKENsYXNzPD8+KSBhbmQKKyAgICAgICAgICAgICBpc1ByaW1pdGl2ZU9yV3JhcHBlcihDbGFzczw/PikKK28gTEFORy02OTU6ICBTeXN0ZW1VdGlscy5JU19PU19VTklYIGRvZXNuJ3QgcmVjb2duaXplIEZyZWVCU0QgYXMgYSBVbml4IHN5c3RlbQorCitCVUcgRklYRVMKKz09PT09PT09PT09CisKK28gTEFORy03NDk6ICBJbmNvcnJlY3QgQnVuZGxlLVN5bWJvbGljTmFtZSBpbiBNYW5pZmVzdAorbyBMQU5HLTc0NjogIE51bWJlclV0aWxzIGRvZXMgbm90IGhhbmRsZSB1cHBlci1jYXNlIGhleDogMFggYW5kIC0wWAorbyBMQU5HLTc0NDogIFN0cmluZ1V0aWxzIHRocm93cyBqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xFeGNlcHRpb24gb24gR29vZ2xlCisgICAgICAgICAgICAgQXBwIEVuZ2luZQorbyBMQU5HLTc0MTogIEFudCBidWlsZCBoYXMgd3JvbmcgY29tcG9uZW50Lm5hbWUKK28gTEFORy02OTg6ICBEb2N1bWVudCB0aGF0IHRoZSBNdXRhYmxlIG51bWJlcnMgZG9uJ3Qgd29yayBhcyBleHBlY3RlZCB3aXRoCisgICAgICAgICAgICAgU3RyaW5nLmZvcm1hdAorCitDSEFOR0VTCis9PT09PT09PT0KKworbyBMQU5HLTc1ODogIEFkZCBhbiBleGFtcGxlIHdpdGggd2hpdGVzcGFjZSBpbiBTdHJpbmdVdGlscy5kZWZhdWx0SWZFbXB0eQorbyBMQU5HLTc1MjogIEZpeCBjcmVhdGVMb25nKCkgc28gaXQgYmVoYXZlcyBsaWtlIGNyZWF0ZUludGVnZXIoKQorbyBMQU5HLTc1MTogIEluY2x1ZGUgdGhlIGFjdHVhbCB0eXBlIGluIHRoZSBWYWxpZGF0ZS5pc0luc3RhbmNlIGFuZAorICAgICAgICAgICAgIGlzQXNzaWduYWJsZUZyb20gZXhjZXB0aW9uIG1lc3NhZ2VzCitvIExBTkctNzQ4OiAgRGVwcmVjYXRpbmcgY2hvbXAoU3RyaW5nLCBTdHJpbmcpCitvIExBTkctNzM2OiAgQ2hhclV0aWxzIHN0YXRpYyBmaW5hbCBhcnJheSBDSEFSX1NUUklORyBpcyBub3QgbmVlZGVkIHRvIGNvbXB1dGUKKyAgICAgICAgICAgICBDSEFSX1NUUklOR19BUlJBWQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIE5vdGVzIGZvciB2ZXJzaW9uIDMuMAorCitBRERJVElPTlMKKz09PT09PT09PT09CisKK28gTEFORy0yNzY6ICBNdXRhYmxlQmlnRGVjaW1hbCBhbmQgTXV0YWJsZUJpZ0ludGVnZXIuCitvIExBTkctMjg1OiAgV2lzaCA6IG1ldGhvZCB1bmFjY2VudC4KK28gTEFORy0zNTg6ICBPYmplY3RVdGlscy5jb2FsZXNjZS4KK28gTEFORy0zODY6ICBMZWZ0T2YvUmlnaHRPZk51bWJlciBpbiBSYW5nZSBjb252ZW5pZW5jZSBtZXRob2RzIG5lY2Vzc2FyeS4KK28gTEFORy00MzU6ICBBZGQgQ2xhc3NVdGlscy5pc0Fzc2lnbmFibGUoKSB2YXJpYW50cyB3aXRoIGF1dG9ib3hpbmcuCitvIExBTkctNDQ0OiAgU3RyaW5nVXRpbHMuZW1wdHlUb051bGwuCitvIExBTkctNDgyOiAgRW5oYW5jZSBTdHJTdWJzdGl0dXRvciB0byBzdXBwb3J0IG5lc3RlZCAke3Zhci0ke3N1YnZyfX0gZXhwYW5zaW9uCitvIExBTkctNDgyOiAgU3RyU3Vic3RpdHV0b3Igbm93IHN1cHBvcnRzIHN1YnN0aXR1dGlvbiBpbiB2YXJpYWJsZSBuYW1lcy4KK28gTEFORy00OTY6ICBBIGdlbmVyaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlIExhenkgaW5pdGlhbGl6YXRpb24gcGF0dGVybi4KK28gTEFORy00OTc6ICBBZGRpdGlvbiBvZiBDb250ZXh0ZWRFeGNlcHRpb24gYW5kIENvbnRleHRlZFJ1bnRpbWVFeGNlcHRpb24uCitvIExBTkctNDk4OiAgQWRkIFN0cmluZ0VzY2FwZVV0aWxzLmVzY2FwZVRleHQoKSBtZXRob2RzLgorbyBMQU5HLTQ5OTogIEFkZCBzdXBwb3J0IGZvciB0aGUgaGFuZGxpbmcgb2YgRXhlY3V0aW9uRXhjZXB0aW9ucy4KK28gTEFORy01MDE6ICBBZGQgc3VwcG9ydCBmb3IgYmFja2dyb3VuZCBpbml0aWFsaXphdGlvbi4KK28gTEFORy01Mjk6ICBBZGQgYSBjb25jdXJyZW50IHBhY2thZ2UuCitvIExBTkctNTMzOiAgVmFsaWRhdGU6IHN1cHBvcnQgZm9yIHZhbGlkYXRpbmcgYmxhbmsgc3RyaW5ncy4KK28gTEFORy01Mzc6ICBBZGQgQXJyYXlVdGlscy50b0FycmF5IHRvIGNyZWF0ZSBnZW5lcmljIGFycmF5cy4KK28gTEFORy01NDU6ICBBZGQgYWJpbGl0eSB0byBjcmVhdGUgYSBGdXR1cmUgZm9yIGEgY29uc3RhbnQuCitvIExBTkctNTQ2OiAgQWRkIG1ldGhvZHMgdG8gVmFsaWRhdGUgdG8gY2hlY2sgd2hldGhlciB0aGUgaW5kZXggaXMgdmFsaWQgZm9yCisgICAgICAgICAgICAgdGhlIGFycmF5L2xpc3Qvc3RyaW5nLgorbyBMQU5HLTU1MzogIEFkZCBUeXBlVXRpbHMgY2xhc3MgdG8gcHJvdmlkZSB1dGlsaXR5IGNvZGUgZm9yIHdvcmtpbmcgd2l0aCBnZW5lcmljCisgICAgICAgICAgICAgdHlwZXMuCitvIExBTkctNTU5OiAgQWRkZWQgaXNBc3NpZ25hYmxlRnJvbSBhbmQgaXNJbnN0YW5jZU9mIHZhbGlkYXRpb24gbWV0aG9kcy4KK28gTEFORy01NTk6ICBBZGRlZCB2YWxpZFN0YXRlIHZhbGlkYXRpb24gbWV0aG9kLgorbyBMQU5HLTU2MDogIE5ldyBUaW1lZFNlbWFwaG9yZSBjbGFzcy4KK28gTEFORy01ODI6ICBQcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBUaHJlYWRGYWN0b3J5IGludGVyZmFjZS4KK28gTEFORy01ODg6ICBDcmVhdGUgYSBiYXNpYyBQYWlyPEwsIFI+IGNsYXNzLgorbyBMQU5HLTU5NDogIERhdGVVdGlscyBlcXVhbCAmIGNvbXBhcmUgZnVuY3Rpb25zIHVwIHRvIG1vc3Qgc2lnbmlmaWNhbnQgZmllbGQuCitvIExBTkctNjAxOiAgQWRkIEJ1aWxkZXIgSW50ZXJmYWNlIC8gVXBkYXRlIEJ1aWxkZXJzIHRvIEltcGxlbWVudCBJdC4KK28gTEFORy02MDk6ICBTdXBwb3J0IGxhenkgaW5pdGlhbGl6YXRpb24gdXNpbmcgYXRvbWljIHZhcmlhYmxlcworbyBMQU5HLTYxMDogIEV4dGVuZCBleGNlcHRpb24gaGFuZGxpbmcgaW4gQ29uY3VycmVudFV0aWxzIHRvIHJ1bnRpbWUgZXhjZXB0aW9ucy4KK28gTEFORy02MTQ6ICBTdHJpbmdVdGlscy5lbmRzV2l0aEFueSBtZXRob2QKK28gTEFORy02NDA6ICBBZGQgbm9ybWFsaXplU3BhY2UgdG8gU3RyaW5nVXRpbHMKK28gTEFORy02NDQ6ICBQcm92aWRlIGRvY3VtZW50YXRpb24gYWJvdXQgdGhlIG5ldyBjb25jdXJyZW50IHBhY2thZ2UKK28gTEFORy02NDk6ICBCb29sZWFuVXRpbHMudG9Cb29sZWFuT2JqZWN0IHRvIHN1cHBvcnQgc2luZ2xlIGNoYXJhY3RlciBpbnB1dAorbyBMQU5HLTY1MTogIEFkZCBBbm5vdGF0aW9uVXRpbHMKK28gTEFORy02NTM6ICBQcm92aWRlIGEgdmVyeSBiYXNpYyBDb25jdXJyZW50SW5pdGlhbGl6ZXIgaW1wbGVtZW50YXRpb24KK28gTEFORy02NTU6ICBBZGQgU3RyaW5nVXRpbHMuZGVmYXVsdElmQmxhbmsoKQorbyBMQU5HLTY2NzogIEFkZCBhIE51bGwtc2FmZSBjb21wYXJlKCkgbWV0aG9kIHRvIE9iamVjdFV0aWxzCitvIExBTkctNjc2OiAgRG9jdW1lbnRlZCBwb3RlbnRpYWwgTlBFIGlmIGF1dG8tYm94aW5nIG9jY3VycyBmb3Igc29tZSBCb29sZWFuVXRpbHMKKyAgICAgICAgICAgICBtZXRob2RzCitvIExBTkctNjc4OiAgQWRkIHN1cHBvcnQgZm9yIENvbmN1cnJlbnRNYXAucHV0SWZBYnNlbnQoKQorbyBMQU5HLTY5MjogIEFkZCBoYXNoQ29kZU11bHRpIHZhcmFyZ3MgbWV0aG9kCitvIExBTkctNjk3OiAgQWRkIEZvcm1hdHRhYmxlVXRpbHMgY2xhc3MKK28gTEFORy02ODQ6ICBMZXZlbnNodGVpbiBEaXN0YW5jZSBXaXRoaW4gYSBHaXZlbiBUaHJlc2hvbGQKKworUkVNT1ZBTFMKKz09PT09PT09PT0KKworbyBMQU5HLTQzODogIFJlbW92ZSBAZGVwcmVjYXRlZHMuCitvIExBTkctNDkyOiAgUmVtb3ZlIGNvZGUgaGFuZGxlZCBub3cgYnkgdGhlIEpESy4KK28gTEFORy00OTM6ICBSZW1vdmUgY29kZSB0aGF0IGRvZXMgbm90IGhvbGQgZW5vdWdoIHZhbHVlIHRvIHJlbWFpbi4KK28gTEFORy01OTA6ICBSZW1vdmUgSkRLIDEuMi8xLjMgYnVnIGhhbmRsaW5nIGluCisgICAgICAgICAgICAgU3RyaW5nVXRpbHMuaW5kZXhPZihTdHJpbmcsIFN0cmluZywgaW50KS4KK28gTEFORy02NzM6ICBXb3JkVXRpbHMuYWJicmV2aWF0ZSgpIHJlbW92ZWQKK28gTEFORy02OTE6ICBSZW1vdmVkIERhdGVVdGlscy5VVENfVElNRV9aT05FCisKK0lNUFJPVkVNRU5UUworPT09PT09PT09PT09PT0KKworbyBMQU5HLTI5MDogIEVudW1VdGlscyBmb3IgSkRLIDUuMC4KK28gTEFORy0zMzY6ICBGaW5hbGx5IHN0YXJ0IHVzaW5nIGdlbmVyaWNzLgorbyBMQU5HLTM1NTogIFN0ckJ1aWxkZXIgc2hvdWxkIGltcGxlbWVudCBDaGFyU2VxdWVuY2UgYW5kIEFwcGVuZGFibGUuCitvIExBTkctMzk2OiAgSW52ZXN0aWdhdGUgZm9yIHZhcmFyZyB1c2FnZXMuCitvIExBTkctNDI0OiAgSW1wcm92ZSBKYXZhZG9jIGZvciBTdHJpbmdVdGlscyBjbGFzcy4KK28gTEFORy00NTg6ICBSZWZhY3RvciBWYWxpZGF0ZS5qYXZhIHRvIGVsaW1pbmF0ZSBjb2RlIHJlZHVuZGFuY3kuCitvIExBTkctNDc5OiAgRG9jdW1lbnQgd2hlcmUgaW4gU1ZOIHRydW5rIGlzLgorbyBMQU5HLTUwNDogIGJyaW5nIEFycmF5VXRpbHMuaXNFbXB0eSB0byB0aGUgZ2VuZXJpY3Mgd29ybGQuCitvIExBTkctNTA1OiAgUmV3cml0ZSBTdHJpbmdFc2NhcGVVdGlscy4KK28gTEFORy01MDc6ICBTdHJpbmdFc2NhcGVVdGlscy51bmVzY2FwZUphdmEgc2hvdWxkIHN1cHBvcnQgXHUrIG5vdGF0aW9uLgorbyBMQU5HLTUxMDogIENvbnZlcnQgU3RyaW5nVXRpbHMgQVBJIHRvIHRha2UgQ2hhclNlcXVlbmNlLgorbyBMQU5HLTUxMzogIEJldHRlciBFbnVtVXRpbHMuCitvIExBTkctNTI4OiAgTXV0YWJsZSBjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQgYW4gYXBwcm9wcmlhdGVseSB0eXBlZCBNdXRhYmxlCisgICAgICAgICAgICAgaW50ZXJmYWNlLgorbyBMQU5HLTUzOTogIENvbXBpbGUgY29tbW9ucy5sYW5nIGZvciBDREMgMS4xL0ZvdW5kYXRpb24gMS4xLgorbyBMQU5HLTU0MDogIE1ha2UgTnVtZXJpY0VudGl0eUVzY2FwZXIgaW1tdXRhYmxlLgorbyBMQU5HLTU0MTogIFJlcGxhY2UgU3RyaW5nQnVmZmVyIHdpdGggU3RyaW5nQnVpbGRlci4KK28gTEFORy01NDg6ICBVc2UgSXRlcmFibGUgb24gQVBJIGluc3RlYWQgb2YgQ29sbGVjdGlvbi4KK28gTEFORy01NTE6ICBSZXBsYWNlIFJhbmdlIGNsYXNzZXMgd2l0aCBnZW5lcmljIHZlcnNpb24uCitvIExBTkctNTYyOiAgQ2hhbmdlIE1hdmVuIGdyb3VwSWQuCitvIExBTkctNTYzOiAgQ2hhbmdlIEphdmEgcGFja2FnZSBuYW1lLgorbyBMQU5HLTU3MDogIERvIHRoZSB0ZXN0IGNhc2VzIHJlYWxseSBzdGlsbCByZXF1aXJlIG1haW4oKSBhbmQgc3VpdGUoKSBtZXRob2RzPworbyBMQU5HLTU3OTogIEFkZCBuZXcgVmFsaWRhdGUgbWV0aG9kcy4KK28gTEFORy01OTk6ICBDbGFzc1V0aWxzLmdldENsYXNzKCk6IEFsbG93IERvdHMgYXMgSW5uZXIgQ2xhc3MgU2VwYXJhdG9ycy4KK28gTEFORy02MDU6ICBEZWZhdWx0RXhjZXB0aW9uQ29udGV4dCBvdmVyd3JpdGVzIHZhbHVlcyBpbiByZWN1cnNpdmUgc2l0dWF0aW9ucy4KK28gTEFORy02Njg6ICBDaGFuZ2UgT2JqZWN0VXRpbHMgbWluKCkgJiBtYXgoKSBmdW5jdGlvbnMgdG8gdXNlIHZhcmFyZ3MgcmF0aGVyCisgICAgICAgICAgICAgdGhhbiBqdXN0IHR3byBwYXJhbWV0ZXJzCitvIExBTkctNjgxOiAgUHVzaCBkb3duIFdvcmRVdGlscyB0byAidGV4dCIgc3ViLXBhY2thZ2UuCitvIExBTkctNzExOiAgQWRkIGluY2x1ZGVhbnRydW50aW1lPWZhbHNlIHRvIGphdmFjIHRhcmdldHMgdG8gcXVlbGwgd2FybmluZ3MgaW4KKyAgICAgICAgICAgICBhbnQgMS44LjEgYW5kIGJldHRlciAoYW5kIG1vZGVzdCBwZXJmb3JtYW5jZSBnYWluKS4KK28gTEFORy03MTM6ICBJbmNyZWFzZSB0ZXN0IGNvdmVyYWdlIG9mIEZpZWxkVXRpbHMgcmVhZCBtZXRob2RzIGFuZCB0d2VhaworICAgICAgICAgICAgIGphdmFkb2MuCitvIExBTkctNzE4OiAgYnVpbGQueG1sIEphdmEgMS41KyB1cGRhdGVzLgorCitCVUcgRklYRVMKKz09PT09PT09PT09CisKK28gTEFORy0xMTogICBEZXBlbmQgb24gSkRLIDEuNSsuCitvIExBTkctMzAyOiAgU3RyQnVpbGRlciBkb2VzIG5vdCBpbXBsZW1lbnQgY2xvbmUoKS4KK28gTEFORy0zMzk6ICBTdHJpbmdFc2NhcGVVdGlscy5lc2NhcGVIdG1sKCkgZXNjYXBlcyBtdWx0aWJ5dGUgY2hhcmFjdGVycyBsaWtlCisgICAgICAgICAgICAgQ2hpbmVzZSwgSmFwYW5lc2UsIGV0Yy4KK28gTEFORy0zNjk6ICBFeGNlcHRpb25VdGlscyBub3QgdGhyZWFkLXNhZmUuCitvIExBTkctNDE4OiAgSmF2YWRvYyBpbmNvcnJlY3QgZm9yIFN0cmluZ1V0aWxzLmVuZHNXaXRoSWdub3JlQ2FzZS4KK28gTEFORy00Mjg6ICBTdHJpbmdVdGlscy5pc0FscGhhLCBpc0FscGhhbnVtZXJpYyBhbmQgaXNOdW1lcmljIG5vdyByZXR1cm4gZmFsc2UKKyAgICAgICAgICAgICBmb3IgIiIKK28gTEFORy00Mzk6ICBTdHJpbmdFc2NhcGVVdGlscy5lc2NhcGVIVE1MKCkgZG9lcyBub3QgZXNjYXBlIGNoYXJzICgweDAwLTB4MjApLgorbyBMQU5HLTQ0ODogIExvd2VyIEFzY2lpIENoYXJhY3RlcnMgZG9uJ3QgZ2V0IGVuY29kZWQgYnkgRW50aXRpZXMuamF2YS4KK28gTEFORy00Njg6ICBKREsgMS41IGJ1aWxkL3J1bnRpbWUgZmFpbHVyZSBvbiBMQU5HLTM5MyAoRXF1YWxzQnVpbGRlcikuCitvIExBTkctNDc0OiAgRml4ZXMgZm9yIHRocmVhZCBzYWZldHkuCitvIExBTkctNDc4OiAgU3RvcFdhdGNoIGRvZXMgbm90IHJlc2lzdCB0byBzeXN0ZW0gdGltZSBjaGFuZ2VzLgorbyBMQU5HLTQ4MDogIFN0cmluZ0VzY2FwZVV0aWxzLmVzY2FwZUh0bWwgaW5jb3JyZWN0bHkgY29udmVydHMgdW5pY29kZQorICAgICAgICAgICAgIGNoYXJhY3RlcnMgYWJvdmUgVSswMEZGRkYgaW50byAyIGNoYXJhY3RlcnMuCitvIExBTkctNDgxOiAgUG9zc2libGUgcmFjZS1jb25kaXRpb25zIGluIGhhc2hDb2RlIG9mIHRoZSByYW5nZSBjbGFzc2VzLgorbyBMQU5HLTU2NDogIEltcHJvdmUgU3RyTG9va3VwIEFQSSBkb2N1bWVudGF0aW9uLgorbyBMQU5HLTU2ODogIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKSBpcyB1c2VkIHRvbyBnZW5lcmFsbHkuCitvIExBTkctNTcxOiAgQXJyYXlVdGlscy5hZGQoVFs6ICBhcnJheSwgVCBlbGVtZW50KSBjYW4gY3JlYXRlIHVuZXhwZWN0ZWQKKyAgICAgICAgICAgICBDbGFzc0Nhc3RFeGNlcHRpb24uCitvIExBTkctNTg1OiAgZXhjZXB0aW9uLkRlZmF1bHRFeGNlcHRpb25Db250ZXh0LmdldEZvcm1hdHRlZEV4Y2VwdGlvbk1lc3NhZ2UKKyAgICAgICAgICAgICBjYXRjaGVzIFRocm93YWJsZS4KK28gTEFORy01OTY6ICBTdHJTdWJzdGl0dXRvciBzaG91bGQgYWxzbyBoYW5kbGUgdGhlIGRlZmF1bHQgcHJvcGVydGllcyBvZiBhCisgICAgICAgICAgICAgamF2YS51dGlsLlByb3BlcnRpZXMgY2xhc3MKK28gTEFORy02MDA6ICBKYXZhZG9jIGlzIGluY29ycmVjdCBmb3IgcHVibGljIHN0YXRpYyBpbnQKKyAgICAgICAgICAgICBsYXN0SW5kZXhPZihTdHJpbmcgc3RyLCBTdHJpbmcgc2VhcmNoU3RyKS4KK28gTEFORy02MDI6ICBDb250ZXh0ZWRSdW50aW1lRXhjZXB0aW9uIG5vIGxvbmdlciBhbiAndW5jaGVja2VkJyBleGNlcHRpb24uCitvIExBTkctNjA2OiAgRXF1YWxzQnVpbGRlciBjYXVzZXMgU3RhY2tPdmVyZmxvd0V4Y2VwdGlvbi4KK28gTEFORy02MDg6ICBTb21lIFN0cmluZ1V0aWxzIG1ldGhvZHMgc2hvdWxkIHRha2UgYW4gaW50IGNoYXJhY3RlciBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgY2hhciB0byB1c2UgU3RyaW5nIEFQSSBmZWF0dXJlcy4KK28gTEFORy02MTc6ICBTdHJpbmdFc2NhcGVVdGlscy5lc2NhcGVYTUwoKSBjYW4ndCBwcm9jZXNzIFVURi0xNiBzdXBwbGVtZW50YXJ5CisgICAgICAgICAgICAgY2hhcmFjdGVycworbyBMQU5HLTYyNDogIFN5c3RlbVV0aWxzLmdldEphdmFWZXJzaW9uQXNGbG9hdCB0aHJvd3MKKyAgICAgICAgICAgICBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIG9uIEFuZHJvaWQgcnVudGltZS9EYWx2aWsgVk0KK28gTEFORy02Mjk6ICBDaGFyc2V0IG1heSBub3QgYmUgdGhyZWFkc2FmZSwgYmVjYXVzZSB0aGUgSGFzaFNldCBpcyBub3Qgc3luY2guCitvIExBTkctNjM4OiAgTnVtYmVyVXRpbHMgY3JlYXRlTnVtYmVyIHRocm93cyBhIFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24KKyAgICAgICAgICAgICB3aGVuIGFyZ3VtZW50IGNvbnRhaW5pbmcgImUiIGFuZCAiRSIgaXMgcGFzc2VkIGluCitvIExBTkctNjQzOiAgSmF2YWRvYyBTdHJpbmdVdGlscy5sZWZ0KCkgY2xhaW1zIHRvIHRocm93IG9uIG5lZ2F0aXZlIGxlbiwgYnV0CisgICAgICAgICAgICAgZG9lc24ndAorbyBMQU5HLTY0NTogIEZhc3REYXRlRm9ybWF0LmZvcm1hdCgpIG91dHB1dHMgaW5jb3JyZWN0IHdlZWsgb2YgeWVhciBiZWNhdXNlCisgICAgICAgICAgICAgbG9jYWxlIGlzbid0IHJlc3BlY3RlZAorbyBMQU5HLTY0NjogIFN0cmluZ0VzY2FwZVV0aWxzLnVuZXNjYXBlSmF2YSBkb2Vzbid0IGhhbmRsZSBvY3RhbCBlc2NhcGVzIGFuZAorICAgICAgICAgICAgIFVuaWNvZGUgd2l0aCBleHRyYSB1CitvIExBTkctNjU2OiAgRXhhbXBsZSBTdHJpbmdVdGlscy5pbmRleE9mQW55QnV0KCJ6emFieXljZHh4IiwgJycpID0gMCBpbmNvcnJlY3QKK28gTEFORy02NTg6ICBTb21lIEVudGl0eXMgbGlrZSAmT3VtbDsgYXJlIG5vdCBtYXRjaGVkIHByb3Blcmx5IGFnYWluc3QgaXRzCisgICAgICAgICAgICAgSVNPODg1OS0xIHJlcHJlc2VudGF0aW9uCitvIExBTkctNjU5OiAgRW50aXR5QXJyYXlzIHR5cG86IHsiXHUyMTIyIiwgIiZtaW51czsifSwgLy8gbWludXMgc2lnbiwgVSsyMjEyCisgICAgICAgICAgICAgSVNPdGVjaAorbyBMQU5HLTY2OiAgIFN0cmluZ0VzY2FwZXIuZXNjYXBlWG1sKCkgZXNjYXBlcyBjaGFyYWN0ZXJzID4gMHg3Zi4KK28gTEFORy02NjI6ICBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMubWF0aC5GcmFjdGlvbiBkb2VzIG5vdCByZWR1Y2UKKyAgICAgICAgICAgICAoSW50ZWdlci5NSU5fVkFMVUUsIDJeaykKK28gTEFORy02NjM6ICBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMubWF0aC5GcmFjdGlvbiBkb2VzIG5vdCBhbHdheXMgc3VjY2VlZCBpbgorICAgICAgICAgICAgIG11bHRpcGx5QnkgYW5kIGRpdmlkZUJ5CitvIExBTkctNjY0OiAgTnVtYmVyVXRpbHMuaXNOdW1iZXIoU3RyaW5nKSBpcyBub3QgcmlnaHQgd2hlbiB0aGUgU3RyaW5nIGlzCisgICAgICAgICAgICAgIjEuMUwiCitvIExBTkctNjcyOiAgRG9jIGJ1ZyBpbiBEYXRlVXRpbHMjY2VpbGluZworbyBMQU5HLTY3NzogIERhdGVVdGlscy5pc1NhbWVMb2NhbFRpbWUgY29tcGFyZXMgdXNpbmcgMTIgaG91ciBjbG9jayBhbmQgbm90CisgICAgICAgICAgICAgMjQgaG91cgorbyBMQU5HLTY4NTogIEVxdWFsc0J1aWxkZXIgc3luY2hyb25pemVzIG9uIEhhc2hDb2RlQnVpbGRlci4KK28gTEFORy03MDM6ICBTdHJpbmdVdGlscy5qb2luIHRocm93cyBOUEUgd2hlbiB0b1N0cmluZyByZXR1cm5zIG51bGwgZm9yIG9uZSBvZgorICAgICAgICAgICAgIG9iamVjdHMgaW4gY29sbGVjdGlvbgorbyBMQU5HLTcxMDogIFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gd2hlbiBjYWxsaW5nIHVuZXNjYXBlSHRtbDQoIiYjMDMiKQorbyBMQU5HLTcxNDogIFN0cmluZ1V0aWxzIGRvYy9jb21tZW50IHNwZWxsaW5nIGZpeGVzLgorbyBMQU5HLTcxNTogIENoYXJTZXRVdGlscy5zcXVlZXplKCkgc3BlZWR1cC4KK28gTEFORy03MTY6ICBzd2FwQ2FzZSBhbmQgKmNhcGl0YWxpemUgc3BlZWR1cHMuCisKKworSGlzdG9yaWNhbCBsaXN0IG9mIGNoYW5nZXM6IGh0dHA6Ly9jb21tb25zLmFwYWNoZS5vcmcvbGFuZy9jaGFuZ2VzLXJlcG9ydC5odG1sCisKK0ZvciBjb21wbGV0ZSBpbmZvcm1hdGlvbiBvbiBDb21tb25zIExhbmcsIGluY2x1ZGluZyBpbnN0cnVjdGlvbnMgb24gaG93IHRvCitzdWJtaXQgYnVnIHJlcG9ydHMsIHBhdGNoZXMsIG9yIHN1Z2dlc3Rpb25zIGZvciBpbXByb3ZlbWVudCwgc2VlIHRoZQorQXBhY2hlIENvbW1vbnMgTGFuZyB3ZWJzaXRlOgorCitodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL2xhbmcvCisKK0hhdmUgZnVuIQorLUFwYWNoZSBDb21tb25zIExhbmcgdGVhbQorCg==