ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL2ZiLzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZTg5YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiLzAwLUlOREVYCkBAIC0wLDAgKzEsMjUgQEAKK0luZGV4IG9mIGZpbGVzIGluIERvY3VtZW50YXRpb24vZmIuICBJZiB5b3UgdGhpbmsgc29tZXRoaW5nIGFib3V0IGZyYW1lCitidWZmZXIgZGV2aWNlcyBuZWVkcyBhbiBlbnRyeSBoZXJlLCBuZWVkcyBjb3JyZWN0aW9uIG9yIHlvdSd2ZSB3cml0dGVuIG9uZQorcGxlYXNlIG1haWwgbWUuCisJCQkJICAgIEdlZXJ0IFV5dHRlcmhvZXZlbiA8Z2VlcnRAbGludXgtbTY4ay5vcmc+CisKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUKK2ZyYW1lYnVmZmVyLnR4dAorCS0gaW50cm9kdWN0aW9uIHRvIGZyYW1lIGJ1ZmZlciBkZXZpY2VzCitpbnRlcm5hbHMudHh0CisJLSBxdWljayBvdmVydmlldyBvZiBmcmFtZSBidWZmZXIgZGV2aWNlIGludGVybmFscworbW9kZWRiLnR4dAorCS0gaW5mbyBvbiB0aGUgdmlkZW8gbW9kZSBkYXRhYmFzZQorYXR5MTI4ZmIudHh0CisJLSBpbmZvIG9uIHRoZSBBVEkgUmFnZTEyOCBmcmFtZSBidWZmZXIgZHJpdmVyCitjbGdlbmZiLnR4dAorCS0gaW5mbyBvbiB0aGUgQ2lycnVzIExvZ2ljIGZyYW1lIGJ1ZmZlciBkcml2ZXIKK21hdHJveGZiLnR4dAorCS0gaW5mbyBvbiB0aGUgTWF0cm94IGZyYW1lIGJ1ZmZlciBkcml2ZXIKK3B2cjJmYi50eHQKKwktIGluZm8gb24gdGhlIFBvd2VyVlIgMiBmcmFtZSBidWZmZXIgZHJpdmVyCit0Z2FmYi50eHQKKwktIGluZm8gb24gdGhlIFRHQSAoREVDQ2hpcCAyMTAzMCkgZnJhbWUgYnVmZmVyIGRyaXZlcgordmVzYWZiLnR4dAorCS0gaW5mbyBvbiB0aGUgVkVTQSBmcmFtZSBidWZmZXIgZGV2aWNlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL2F0eTEyOGZiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvYXR5MTI4ZmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2OTI2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL2F0eTEyOGZiLnR4dApAQCAtMCwwICsxLDcyIEBACitbVGhpcyBmaWxlIGlzIGNsb25lZCBmcm9tIFZlc2FGQi9tYXRyb3hmYl0KKworV2hhdCBpcyBhdHkxMjhmYj8KKz09PT09PT09PT09PT09PT09CisKK1RoaXMgaXMgYSBkcml2ZXIgZm9yIGEgZ3JhcGhpYyBmcmFtZWJ1ZmZlciBmb3IgQVRJIFJhZ2UxMjggYmFzZWQgZGV2aWNlcworb24gSW50ZWwgYW5kIFBQQyBib3hlcy4KKworQWR2YW50YWdlczoKKworICogSXQgcHJvdmlkZXMgYSBuaWNlIGxhcmdlIGNvbnNvbGUgKDEyOCBjb2xzICsgNDggbGluZXMgd2l0aCAxMDI0eDc2OCkKKyAgIHdpdGhvdXQgdXNpbmcgdGlueSwgdW5yZWFkYWJsZSBmb250cy4KKyAqIFlvdSBjYW4gcnVuIFhGNjhfRkJEZXYgb24gdG9wIG9mIC9kZXYvZmIwCisgKiBNb3N0IGltcG9ydGFudDogYm9vdCBsb2dvIDotKQorCitEaXNhZHZhbnRhZ2VzOgorCisgKiBncmFwaGljIG1vZGUgaXMgc2xvd2VyIHRoYW4gdGV4dCBtb2RlLi4uIGJ1dCB5b3Ugc2hvdWxkIG5vdCBub3RpY2UKKyAgIGlmIHlvdSB1c2Ugc2FtZSByZXNvbHV0aW9uIGFzIHlvdSB1c2VkIGluIHRleHRtb2RlLgorICogc3RpbGwgZXhwZXJpbWVudGFsLgorCisKK0hvdyB0byB1c2UgaXQ/Cis9PT09PT09PT09PT09PQorCitTd2l0Y2hpbmcgbW9kZXMgaXMgZG9uZSB1c2luZyB0aGUgIHZpZGVvPWF0eTEyOGZiOjxyZXNvbHV0aW9uPi4uLiBtb2RlZGIKK2Jvb3QgcGFyYW1ldGVyIG9yIHVzaW5nIGBmYnNldCcgcHJvZ3JhbS4KKworU2VlIERvY3VtZW50YXRpb24vZmIvbW9kZWRiLnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBtb2RlZGIKK3Jlc29sdXRpb25zLgorCitZb3Ugc2hvdWxkIGNvbXBpbGUgaW4gYm90aCB2Z2Fjb24gKHRvIGJvb3QgaWYgeW91IHJlbW92ZSB5b3VyIFJhZ2UxMjggZnJvbQorYm94KSBhbmQgYXR5MTI4ZmIgKGZvciBncmFwaGljcyBtb2RlKS4gWW91IHNob3VsZCBub3QgY29tcGlsZS1pbiB2ZXNhZmIKK3VubGVzcyB5b3UgaGF2ZSBwcmltYXJ5IGRpc3BsYXkgb24gbm9uLVJhZ2UxMjggVkJFMi4wIGRldmljZSAoc2VlIAorRG9jdW1lbnRhdGlvbi9mYi92ZXNhZmIudHh0IGZvciBkZXRhaWxzKS4KKworCitYMTEKKz09PQorCitYRjY4X0ZCRGV2IHNob3VsZCBnZW5lcmFsbHkgd29yayBmaW5lLCBidXQgaXQgaXMgbm9uLWFjY2VsZXJhdGVkLiBBcyBvZgordGhpcyBkb2N1bWVudCwgOCBhbmQgMzJicHAgd29ya3MgZmluZS4gIFRoZXJlIGhhdmUgYmVlbiBwYWxldHRlIGlzc3Vlcword2hlbiBzd2l0Y2hpbmcgZnJvbSBYIHRvIGNvbnNvbGUgYW5kIGJhY2sgdG8gWC4gIFlvdSB3aWxsIGhhdmUgdG8gcmVzdGFydAorWCB0byBmaXggdGhpcy4KKworCitDb25maWd1cmF0aW9uCis9PT09PT09PT09PT09CisKK1lvdSBjYW4gcGFzcyBrZXJuZWwgY29tbWFuZCBsaW5lIG9wdGlvbnMgdG8gdmVzYWZiIHdpdGgKK2B2aWRlbz1hdHkxMjhmYjpvcHRpb24xLG9wdGlvbjI6dmFsdWUyLG9wdGlvbjMnIChtdWx0aXBsZSBvcHRpb25zIHNob3VsZAorYmUgc2VwYXJhdGVkIGJ5IGNvbW1hLCB2YWx1ZXMgYXJlIHNlcGFyYXRlZCBmcm9tIG9wdGlvbnMgYnkgYDonKS4gCitBY2NlcHRlZCBvcHRpb25zOgorCitub2FjY2VsICAtIGRvIG5vdCB1c2UgYWNjZWxlcmF0aW9uIGVuZ2luZS4gSXQgaXMgZGVmYXVsdC4KK2FjY2VsICAgIC0gdXNlIGFjY2VsZXJhdGlvbiBlbmdpbmUuIE5vdCBmaW5pc2hlZC4KK3Ztb2RlOnggIC0gY2hvb3NlcyBQb3dlck1hY2ludG9zaCB2aWRlbyBtb2RlIDx4Pi4gRGVwcmVjaWF0ZWQuCitjbW9kZTp4ICAtIGNob29zZXMgUG93ZXJNYWNpbnRvc2ggY29sb3VyIG1vZGUgPHg+LiBEZXByZWNpYXRlZC4KKzxYeFhAWD4gIC0gc2VsZWN0cyBzdGFydHVwIHZpZGVvbW9kZS4gU2VlIG1vZGVkYi50eHQgZm9yIGRldGFpbGVkCisJICAgZXhwbGFuYXRpb24uIERlZmF1bHQgaXMgNjQweDQ4MHg4YnBwLgorCisKK0xpbWl0YXRpb25zCis9PT09PT09PT09PQorCitUaGVyZSBhcmUga25vd24gYW5kIHVua25vd24gYnVncywgZmVhdHVyZXMgYW5kIG1pc2ZlYXR1cmVzLgorQ3VycmVudGx5IHRoZXJlIGFyZSBmb2xsb3dpbmcga25vd24gYnVnczoKKyArIFRoaXMgZHJpdmVyIGlzIHN0aWxsIGV4cGVyaW1lbnRhbCBhbmQgaXMgbm90IGZpbmlzaGVkLiAgVG9vIG1hbnkKKyAgIGJ1Z3MvZXJyYXRhIHRvIGxpc3QgaGVyZS4KKworLS0KK0JyYWQgRG91Z2xhcyA8YnJhZEBuZXJ1by5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL2NpcnJ1c2ZiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvY2lycnVzZmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NDM2ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL2NpcnJ1c2ZiLnR4dApAQCAtMCwwICsxLDk3IEBACisKKwkJRnJhbWVidWZmZXIgZHJpdmVyIGZvciBDaXJydXMgTG9naWMgY2hpcHNldHMKKwkJQ29weXJpZ2h0IDE5OTkgSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAcG9ib3guY29tPgorCisKKworeyBqdXN0IGEgbGl0dGxlIHNvbWV0aGluZyB0byBnZXQgcGVvcGxlIGdvaW5nOyBjb250cmlidXRvcnMgd2VsY29tZSEgfQorCisKKworQ2hpcCBmYW1pbGllcyBzdXBwb3J0ZWQ6CisJU0Q2NAorCVBpY2NvbG8KKwlQaWNhc3NvCisJU3BlY3RydW0KKwlBbHBpbmUgKEdELTU0M3gvNHgpCisJUGljYXNzbzQgKEdELTU0NDYpCisJR0QtNTQ4MAorCUxhZ3VuYSAoR0QtNTQ2eCkKKworQnVzJ3Mgc3VwcG9ydGVkOgorCVBDSQorCVpvcnJvCisKK0FyY2hpdGVjdHVyZXMgc3VwcG9ydGVkOgorCWkzODYKKwlBbHBoYQorCVBQQyAoTW90b3JvbGEgUG93ZXJzdGFjaykKKwltNjhrIChBbWlnYSkKKworCisKK0RlZmF1bHQgdmlkZW8gbW9kZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KK0F0IHRoZSBtb21lbnQsIHRoZXJlIGFyZSB0d28ga2VybmVsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgc3VwcG9ydGVkOgorCittb2RlOjY0MHg0ODAKK21vZGU6ODAweDYwMAorCW9yCittb2RlOjEwMjR4NzY4CisKK0Z1bGwgc3VwcG9ydCBmb3Igc3RhcnR1cCB2aWRlbyBtb2RlcyAobW9kZWRiKSB3aWxsIGJlIGludGVncmF0ZWQgc29vbi4KKworVmVyc2lvbiAxLjkuOS4xCistLS0tLS0tLS0tLS0tLS0KKyogRml4IG1lbW9yeSBkZXRlY3Rpb24gZm9yIDUxMmtCIGNhc2UKKyogODAweDYwMCBtb2RlCisqIEZpeGVkIHRpbWluZ3MKKyogSGludCBmb3IgQVhQOiBVc2UgLWFjY2VsIGZhbHNlIC12eXJlcyAtMSB3aGVuIGNoYW5naW5nIHJlc29sdXRpb24KKworCitWZXJzaW9uIDEuOS40LjQKKy0tLS0tLS0tLS0tLS0tLQorKiBQcmVsaW1pbmFyeSBMYWd1bmEgc3VwcG9ydAorKiBPdmVyaGF1bCBjb2xvciByZWdpc3RlciByb3V0aW5lcy4KKyogQXNzb2NpYXRlZCB3aXRoIHRoZSBhYm92ZSwgY29uc29sZSBjb2xvcnMgYXJlIG5vdyBvYnRhaW5lZCBmcm9tIGEgTFVUCisgIGNhbGxlZCAncGFsZXR0ZScgaW5zdGVhZCBvZiBmcm9tIHRoZSBWR0EgcmVnaXN0ZXJzLiAgVGhpcyBjb2RlIHdhcworICBtb2RlbGVkIGFmdGVyIHRoYXQgaW4gYXR5ZmIgYW5kIG1hdHJveGZiLgorKiBDb2RlIGNsZWFudXAsIGFkZCBjb21tZW50cy4KKyogT3ZlcmhhdWwgU1IwNyBoYW5kbGluZy4KKyogQnVnIGZpeGVzLgorCisKK1ZlcnNpb24gMS45LjQuMworLS0tLS0tLS0tLS0tLS0tCisqIENvcnJlY3RseSBzZXQgZGVmYXVsdCBzdGFydHVwIHZpZGVvIG1vZGUuCisqIERvIG5vdCBvdmVycmlkZSByYW0gc2l6ZSBzZXR0aW5nLiAgRGVmaW5lCisgIENMR0VOX1VTRV9IQVJEQ09ERURfUkFNX1NFVFRJTkdTIGlmIHlvdSBfZG9fIHdhbnQgdG8gb3ZlcnJpZGUgdGhlIFJBTQorICBzZXR0aW5nLgorKiBDb21waWxlIGZpeGVzIHJlbGF0ZWQgdG8gbmV3IDIuMy54IElPUkVTT1VSQ0VfSU9bUE9SVF0gc3ltYm9sIGNoYW5nZXMuCisqIFVzZSBuZXcgMi4zLnggcmVzb3VyY2UgYWxsb2NhdGlvbi4KKyogU29tZSBjb2RlIGNsZWFudXAuCisKKworVmVyc2lvbiAxLjkuNC4yCistLS0tLS0tLS0tLS0tLS0KKyogQ2FzdGluZyBmaXhlcy4KKyogQXNzZXJ0aW9ucyBubyBsb25nZXIgY2F1c2UgYW4gb29wcyBvbiBwdXJwb3NlLgorKiBCdWcgZml4ZXMuCisKKworVmVyc2lvbiAxLjkuNC4xCistLS0tLS0tLS0tLS0tLS0KKyogQWRkIGNvbXBhdGliaWxpdHkgc3VwcG9ydC4gIE5vdyByZXF1aXJlcyBhIDIuMS54LCAyLjIueCBvciAyLjMueCBrZXJuZWwuCisKKworVmVyc2lvbiAxLjkuNAorLS0tLS0tLS0tLS0tLQorKiBTZXZlcmFsIGVuaGFuY2VtZW50cywgc21hbGxlciBtZW1vcnkgZm9vdHByaW50LCBhIGZldyBidWdmaXhlcy4KKyogUmVxdWlyZXMga2VybmVsIDIuMy4xNC1wcmUxIG9yIGxhdGVyLgorCisKK1ZlcnNpb24gMS45LjMKKy0tLS0tLS0tLS0tLS0KKyogQnVuZGxlZCB3aXRoIGtlcm5lbCAyLjMuMTQtcHJlMSBvciBsYXRlci4KKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL2ZyYW1lYnVmZmVyLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvZnJhbWVidWZmZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMGU3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL2ZyYW1lYnVmZmVyLnR4dApAQCAtMCwwICsxLDM0NSBAQAorCQkJVGhlIEZyYW1lIEJ1ZmZlciBEZXZpY2UKKwkJCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01haW50YWluZWQgYnkgR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVydEBsaW51eC1tNjhrLm9yZz4KK0xhc3QgcmV2aXNlZDogTWF5IDEwLCAyMDAxCisKKworMC4gSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0tLS0KKworVGhlIGZyYW1lIGJ1ZmZlciBkZXZpY2UgcHJvdmlkZXMgYW4gYWJzdHJhY3Rpb24gZm9yIHRoZSBncmFwaGljcyBoYXJkd2FyZS4gSXQKK3JlcHJlc2VudHMgdGhlIGZyYW1lIGJ1ZmZlciBvZiBzb21lIHZpZGVvIGhhcmR3YXJlIGFuZCBhbGxvd3MgYXBwbGljYXRpb24KK3NvZnR3YXJlIHRvIGFjY2VzcyB0aGUgZ3JhcGhpY3MgaGFyZHdhcmUgdGhyb3VnaCBhIHdlbGwtZGVmaW5lZCBpbnRlcmZhY2UsIHNvCit0aGUgc29mdHdhcmUgZG9lc24ndCBuZWVkIHRvIGtub3cgYW55dGhpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCAoaGFyZHdhcmUKK3JlZ2lzdGVyKSBzdHVmZi4KKworVGhlIGRldmljZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHNwZWNpYWwgZGV2aWNlIG5vZGVzLCB1c3VhbGx5IGxvY2F0ZWQgaW4gdGhlCisvZGV2IGRpcmVjdG9yeSwgaS5lLiAvZGV2L2ZiKi4KKworCisxLiBVc2VyJ3MgVmlldyBvZiAvZGV2L2ZiKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRnJvbSB0aGUgdXNlcidzIHBvaW50IG9mIHZpZXcsIHRoZSBmcmFtZSBidWZmZXIgZGV2aWNlIGxvb2tzIGp1c3QgbGlrZSBhbnkKK290aGVyIGRldmljZSBpbiAvZGV2LiBJdCdzIGEgY2hhcmFjdGVyIGRldmljZSB1c2luZyBtYWpvciAyOTsgdGhlIG1pbm9yCitzcGVjaWZpZXMgdGhlIGZyYW1lIGJ1ZmZlciBudW1iZXIuCisKK0J5IGNvbnZlbnRpb24sIHRoZSBmb2xsb3dpbmcgZGV2aWNlIG5vZGVzIGFyZSB1c2VkIChudW1iZXJzIGluZGljYXRlIHRoZSBkZXZpY2UKK21pbm9yIG51bWJlcnMpOgorCisgICAgICAwID0gL2Rldi9mYjAJRmlyc3QgZnJhbWUgYnVmZmVyCisgICAgICAxID0gL2Rldi9mYjEJU2Vjb25kIGZyYW1lIGJ1ZmZlcgorCSAgLi4uCisgICAgIDMxID0gL2Rldi9mYjMxCTMybmQgZnJhbWUgYnVmZmVyCisKK0ZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgeW91IG1heSB3YW50IHRvIGNyZWF0ZSB0aGUgZm9sbG93aW5nIHN5bWJvbGljCitsaW5rczoKKworICAgIC9kZXYvZmIwY3VycmVudCAtPiBmYjAKKyAgICAvZGV2L2ZiMWN1cnJlbnQgLT4gZmIxCisKK2FuZCBzbyBvbi4uLgorCitUaGUgZnJhbWUgYnVmZmVyIGRldmljZXMgYXJlIGFsc28gYG5vcm1hbCcgbWVtb3J5IGRldmljZXMsIHRoaXMgbWVhbnMsIHlvdSBjYW4KK3JlYWQgYW5kIHdyaXRlIHRoZWlyIGNvbnRlbnRzLiBZb3UgY2FuLCBmb3IgZXhhbXBsZSwgbWFrZSBhIHNjcmVlbiBzbmFwc2hvdCBieQorCisgIGNwIC9kZXYvZmIwIG15ZmlsZQorCitUaGVyZSBhbHNvIGNhbiBiZSBtb3JlIHRoYW4gb25lIGZyYW1lIGJ1ZmZlciBhdCBhIHRpbWUsIGUuZy4gaWYgeW91IGhhdmUgYQorZ3JhcGhpY3MgY2FyZCBpbiBhZGRpdGlvbiB0byB0aGUgYnVpbHQtaW4gaGFyZHdhcmUuIFRoZSBjb3JyZXNwb25kaW5nIGZyYW1lCitidWZmZXIgZGV2aWNlcyAoL2Rldi9mYjAgYW5kIC9kZXYvZmIxIGV0Yy4pIHdvcmsgaW5kZXBlbmRlbnRseS4KKworQXBwbGljYXRpb24gc29mdHdhcmUgdGhhdCB1c2VzIHRoZSBmcmFtZSBidWZmZXIgZGV2aWNlIChlLmcuIHRoZSBYIHNlcnZlcikgd2lsbAordXNlIC9kZXYvZmIwIGJ5IGRlZmF1bHQgKG9sZGVyIHNvZnR3YXJlIHVzZXMgL2Rldi9mYjBjdXJyZW50KS4gWW91IGNhbiBzcGVjaWZ5CithbiBhbHRlcm5hdGl2ZSBmcmFtZSBidWZmZXIgZGV2aWNlIGJ5IHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCiskRlJBTUVCVUZGRVIgdG8gdGhlIHBhdGggbmFtZSBvZiBhIGZyYW1lIGJ1ZmZlciBkZXZpY2UsIGUuZy4gKGZvciBzaC9iYXNoCit1c2Vycyk6CisKKyAgICBleHBvcnQgRlJBTUVCVUZGRVI9L2Rldi9mYjEKKworb3IgKGZvciBjc2ggdXNlcnMpOgorCisgICAgc2V0ZW52IEZSQU1FQlVGRkVSIC9kZXYvZmIxCisKK0FmdGVyIHRoaXMgdGhlIFggc2VydmVyIHdpbGwgdXNlIHRoZSBzZWNvbmQgZnJhbWUgYnVmZmVyLgorCisKKzIuIFByb2dyYW1tZXIncyBWaWV3IG9mIC9kZXYvZmIqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBcyB5b3UgYWxyZWFkeSBrbm93LCBhIGZyYW1lIGJ1ZmZlciBkZXZpY2UgaXMgYSBtZW1vcnkgZGV2aWNlIGxpa2UgL2Rldi9tZW0gYW5kCitpdCBoYXMgdGhlIHNhbWUgZmVhdHVyZXMuIFlvdSBjYW4gcmVhZCBpdCwgd3JpdGUgaXQsIHNlZWsgdG8gc29tZSBsb2NhdGlvbiBpbgoraXQgYW5kIG1tYXAoKSBpdCAodGhlIG1haW4gdXNhZ2UpLiBUaGUgZGlmZmVyZW5jZSBpcyBqdXN0IHRoYXQgdGhlIG1lbW9yeSB0aGF0CithcHBlYXJzIGluIHRoZSBzcGVjaWFsIGZpbGUgaXMgbm90IHRoZSB3aG9sZSBtZW1vcnksIGJ1dCB0aGUgZnJhbWUgYnVmZmVyIG9mCitzb21lIHZpZGVvIGhhcmR3YXJlLgorCisvZGV2L2ZiKiBhbHNvIGFsbG93cyBzZXZlcmFsIGlvY3RscyBvbiBpdCwgYnkgd2hpY2ggbG90cyBvZiBpbmZvcm1hdGlvbiBhYm91dAordGhlIGhhcmR3YXJlIGNhbiBiZSBxdWVyaWVkIGFuZCBzZXQuIFRoZSBjb2xvciBtYXAgaGFuZGxpbmcgd29ya3MgdmlhIGlvY3RscywKK3Rvby4gTG9vayBpbnRvIDxsaW51eC9mYi5oPiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IGlvY3RscyBleGlzdCBhbmQgb24KK3doaWNoIGRhdGEgc3RydWN0dXJlcyB0aGV5IHdvcmsuIEhlcmUncyBqdXN0IGEgYnJpZWYgb3ZlcnZpZXc6CisKKyAgLSBZb3UgY2FuIHJlcXVlc3QgdW5jaGFuZ2VhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBoYXJkd2FyZSwgbGlrZSBuYW1lLAorICAgIG9yZ2FuaXphdGlvbiBvZiB0aGUgc2NyZWVuIG1lbW9yeSAocGxhbmVzLCBwYWNrZWQgcGl4ZWxzLCAuLi4pIGFuZCBhZGRyZXNzCisgICAgYW5kIGxlbmd0aCBvZiB0aGUgc2NyZWVuIG1lbW9yeS4KKworICAtIFlvdSBjYW4gcmVxdWVzdCBhbmQgY2hhbmdlIHZhcmlhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBoYXJkd2FyZSwgbGlrZQorICAgIHZpc2libGUgYW5kIHZpcnR1YWwgZ2VvbWV0cnksIGRlcHRoLCBjb2xvciBtYXAgZm9ybWF0LCB0aW1pbmcsIGFuZCBzbyBvbi4KKyAgICBJZiB5b3UgdHJ5IHRvIGNoYW5nZSB0aGF0IGluZm9ybWF0aW9uLCB0aGUgZHJpdmVyIG1heWJlIHdpbGwgcm91bmQgdXAgc29tZQorICAgIHZhbHVlcyB0byBtZWV0IHRoZSBoYXJkd2FyZSdzIGNhcGFiaWxpdGllcyAob3IgcmV0dXJuIEVJTlZBTCBpZiB0aGF0IGlzbid0CisgICAgcG9zc2libGUpLgorCisgIC0gWW91IGNhbiBnZXQgYW5kIHNldCBwYXJ0cyBvZiB0aGUgY29sb3IgbWFwLiBDb21tdW5pY2F0aW9uIGlzIGRvbmUgd2l0aCAxNgorICAgIGJpdHMgcGVyIGNvbG9yIHBhcnQgKHJlZCwgZ3JlZW4sIGJsdWUsIHRyYW5zcGFyZW5jeSkgdG8gc3VwcG9ydCBhbGwgCisgICAgZXhpc3RpbmcgaGFyZHdhcmUuIFRoZSBkcml2ZXIgZG9lcyBhbGwgdGhlIGNvbXB1dGF0aW9ucyBuZWVkZWQgdG8gYXBwbHkgCisgICAgaXQgdG8gdGhlIGhhcmR3YXJlIChyb3VuZCBpdCBkb3duIHRvIGxlc3MgYml0cywgbWF5YmUgdGhyb3cgYXdheSAKKyAgICB0cmFuc3BhcmVuY3kpLgorCitBbGwgdGhpcyBoYXJkd2FyZSBhYnN0cmFjdGlvbiBtYWtlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgYXBwbGljYXRpb24gcHJvZ3JhbXMKK2Vhc2llciBhbmQgbW9yZSBwb3J0YWJsZS4gRS5nLiB0aGUgWCBzZXJ2ZXIgd29ya3MgY29tcGxldGVseSBvbiAvZGV2L2ZiKiBhbmQKK3RodXMgZG9lc24ndCBuZWVkIHRvIGtub3csIGZvciBleGFtcGxlLCBob3cgdGhlIGNvbG9yIHJlZ2lzdGVycyBvZiB0aGUgY29uY3JldGUKK2hhcmR3YXJlIGFyZSBvcmdhbml6ZWQuIFhGNjhfRkJEZXYgaXMgYSBnZW5lcmFsIFggc2VydmVyIGZvciBiaXRtYXBwZWQsCit1bmFjY2VsZXJhdGVkIHZpZGVvIGhhcmR3YXJlLiBUaGUgb25seSB0aGluZyB0aGF0IGhhcyB0byBiZSBidWlsdCBpbnRvCithcHBsaWNhdGlvbiBwcm9ncmFtcyBpcyB0aGUgc2NyZWVuIG9yZ2FuaXphdGlvbiAoYml0cGxhbmVzIG9yIGNodW5reSBwaXhlbHMKK2V0Yy4pLCBiZWNhdXNlIGl0IHdvcmtzIG9uIHRoZSBmcmFtZSBidWZmZXIgaW1hZ2UgZGF0YSBkaXJlY3RseS4KKworRm9yIHRoZSBmdXR1cmUgaXQgaXMgcGxhbm5lZCB0aGF0IGZyYW1lIGJ1ZmZlciBkcml2ZXJzIGZvciBncmFwaGljcyBjYXJkcyBhbmQKK3RoZSBsaWtlIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBrZXJuZWwgbW9kdWxlcyB0aGF0IGFyZSBsb2FkZWQgYXQgcnVudGltZS4gU3VjaAorYSBkcml2ZXIganVzdCBoYXMgdG8gY2FsbCByZWdpc3Rlcl9mcmFtZWJ1ZmZlcigpIGFuZCBzdXBwbHkgc29tZSBmdW5jdGlvbnMuCitXcml0aW5nIGFuZCBkaXN0cmlidXRpbmcgc3VjaCBkcml2ZXJzIGluZGVwZW5kZW50bHkgZnJvbSB0aGUga2VybmVsIHdpbGwgc2F2ZQorbXVjaCB0cm91YmxlLi4uCisKKworMy4gRnJhbWUgQnVmZmVyIFJlc29sdXRpb24gTWFpbnRlbmFuY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZyYW1lIGJ1ZmZlciByZXNvbHV0aW9ucyBhcmUgbWFpbnRhaW5lZCB1c2luZyB0aGUgdXRpbGl0eSBgZmJzZXQnLiBJdCBjYW4KK2NoYW5nZSB0aGUgdmlkZW8gbW9kZSBwcm9wZXJ0aWVzIG9mIGEgZnJhbWUgYnVmZmVyIGRldmljZS4gSXRzIG1haW4gdXNhZ2UgaXMKK3RvIGNoYW5nZSB0aGUgY3VycmVudCB2aWRlbyBtb2RlLCBlLmcuIGR1cmluZyBib290IHVwIGluIG9uZSBvZiB5b3VyIC9ldGMvcmMuKgorb3IgL2V0Yy9pbml0LmQvKiBmaWxlcy4KKworRmJzZXQgdXNlcyBhIHZpZGVvIG1vZGUgZGF0YWJhc2Ugc3RvcmVkIGluIGEgY29uZmlndXJhdGlvbiBmaWxlLCBzbyB5b3UgY2FuCitlYXNpbHkgYWRkIHlvdXIgb3duIG1vZGVzIGFuZCByZWZlciB0byB0aGVtIHdpdGggYSBzaW1wbGUgaWRlbnRpZmllci4KKworCis0LiBUaGUgWCBTZXJ2ZXIKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgWCBzZXJ2ZXIgKFhGNjhfRkJEZXYpIGlzIHRoZSBtb3N0IG5vdGFibGUgYXBwbGljYXRpb24gcHJvZ3JhbSBmb3IgdGhlIGZyYW1lCitidWZmZXIgZGV2aWNlLiBTdGFydGluZyB3aXRoIFhGcmVlODYgcmVsZWFzZSAzLjIsIHRoZSBYIHNlcnZlciBpcyBwYXJ0IG9mCitYRnJlZTg2IGFuZCBoYXMgMiBtb2RlczoKKworICAtIElmIHRoZSBgRGlzcGxheScgc3Vic2VjdGlvbiBmb3IgdGhlIGBmYmRldicgZHJpdmVyIGluIHRoZSAvZXRjL1hGODZDb25maWcKKyAgICBmaWxlIGNvbnRhaW5zIGEKKworCU1vZGVzICJkZWZhdWx0IgorCisgICAgbGluZSwgdGhlIFggc2VydmVyIHdpbGwgdXNlIHRoZSBzY2hlbWUgZGlzY3Vzc2VkIGFib3ZlLCBpLmUuIGl0IHdpbGwgc3RhcnQKKyAgICB1cCBpbiB0aGUgcmVzb2x1dGlvbiBkZXRlcm1pbmVkIGJ5IC9kZXYvZmIwIChvciAkRlJBTUVCVUZGRVIsIGlmIHNldCkuIFlvdQorICAgIHN0aWxsIGhhdmUgdG8gc3BlY2lmeSB0aGUgY29sb3IgZGVwdGggKHVzaW5nIHRoZSBEZXB0aCBrZXl3b3JkKSBhbmQgdmlydHVhbAorICAgIHJlc29sdXRpb24gKHVzaW5nIHRoZSBWaXJ0dWFsIGtleXdvcmQpIHRob3VnaC4gVGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlCisgICAgY29uZmlndXJhdGlvbiBmaWxlIHN1cHBsaWVkIHdpdGggWEZyZWU4Ni4gSXQncyB0aGUgbW9zdCBzaW1wbGUKKyAgICBjb25maWd1cmF0aW9uLCBidXQgaXQgaGFzIHNvbWUgbGltaXRhdGlvbnMuCisKKyAgLSBUaGVyZWZvcmUgaXQncyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgcmVzb2x1dGlvbnMgaW4gdGhlIC9ldGMvWEY4NkNvbmZpZworICAgIGZpbGUuIFRoaXMgYWxsb3dzIGZvciBvbi10aGUtZmx5IHJlc29sdXRpb24gc3dpdGNoaW5nIHdoaWxlIHJldGFpbmluZyB0aGUKKyAgICBzYW1lIHZpcnR1YWwgZGVza3RvcCBzaXplLiBUaGUgZnJhbWUgYnVmZmVyIGRldmljZSB0aGF0J3MgdXNlZCBpcyBzdGlsbAorICAgIC9kZXYvZmIwY3VycmVudCAob3IgJEZSQU1FQlVGRkVSKSwgYnV0IHRoZSBhdmFpbGFibGUgcmVzb2x1dGlvbnMgYXJlCisgICAgZGVmaW5lZCBieSAvZXRjL1hGODZDb25maWcgbm93LiBUaGUgZGlzYWR2YW50YWdlIGlzIHRoYXQgeW91IGhhdmUgdG8KKyAgICBzcGVjaWZ5IHRoZSB0aW1pbmdzIGluIGEgZGlmZmVyZW50IGZvcm1hdCAoYnV0IGBmYnNldCAteCcgbWF5IGhlbHApLgorCitUbyB0dW5lIGEgdmlkZW8gbW9kZSwgeW91IGNhbiB1c2UgZmJzZXQgb3IgeHZpZHR1bmUuIE5vdGUgdGhhdCB4dmlkdHVuZSBkb2Vzbid0Cit3b3JrIDEwMCUgd2l0aCBYRjY4X0ZCRGV2OiB0aGUgcmVwb3J0ZWQgY2xvY2sgdmFsdWVzIGFyZSBhbHdheXMgaW5jb3JyZWN0LgorCisKKzUuIFZpZGVvIE1vZGUgVGltaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgbW9uaXRvciBkcmF3cyBhbiBpbWFnZSBvbiB0aGUgc2NyZWVuIGJ5IHVzaW5nIGFuIGVsZWN0cm9uIGJlYW0gKDMgZWxlY3Ryb24KK2JlYW1zIGZvciBjb2xvciBtb2RlbHMsIDEgZWxlY3Ryb24gYmVhbSBmb3IgbW9ub2Nocm9tZSBtb25pdG9ycykuIFRoZSBmcm9udCBvZgordGhlIHNjcmVlbiBpcyBjb3ZlcmVkIGJ5IGEgcGF0dGVybiBvZiBjb2xvcmVkIHBob3NwaG9ycyAocGl4ZWxzKS4gSWYgYSBwaG9zcGhvcgoraXMgaGl0IGJ5IGFuIGVsZWN0cm9uLCBpdCBlbWl0cyBhIHBob3RvbiBhbmQgdGh1cyBiZWNvbWVzIHZpc2libGUuCisKK1RoZSBlbGVjdHJvbiBiZWFtIGRyYXdzIGhvcml6b250YWwgbGluZXMgKHNjYW5saW5lcykgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBhbmQKK2Zyb20gdGhlIHRvcCB0byB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uIEJ5IG1vZGlmeWluZyB0aGUgaW50ZW5zaXR5IG9mIHRoZQorZWxlY3Ryb24gYmVhbSwgcGl4ZWxzIHdpdGggdmFyaW91cyBjb2xvcnMgYW5kIGludGVuc2l0aWVzIGNhbiBiZSBzaG93bi4KKworQWZ0ZXIgZWFjaCBzY2FubGluZSB0aGUgZWxlY3Ryb24gYmVhbSBoYXMgdG8gbW92ZSBiYWNrIHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlCitzY3JlZW4gYW5kIHRvIHRoZSBuZXh0IGxpbmU6IHRoaXMgaXMgY2FsbGVkIHRoZSBob3Jpem9udGFsIHJldHJhY2UuIEFmdGVyIHRoZQord2hvbGUgc2NyZWVuIChmcmFtZSkgd2FzIHBhaW50ZWQsIHRoZSBiZWFtIG1vdmVzIGJhY2sgdG8gdGhlIHVwcGVyIGxlZnQgY29ybmVyOgordGhpcyBpcyBjYWxsZWQgdGhlIHZlcnRpY2FsIHJldHJhY2UuIER1cmluZyBib3RoIHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbAorcmV0cmFjZSwgdGhlIGVsZWN0cm9uIGJlYW0gaXMgdHVybmVkIG9mZiAoYmxhbmtlZCkuCisKK1RoZSBzcGVlZCBhdCB3aGljaCB0aGUgZWxlY3Ryb24gYmVhbSBwYWludHMgdGhlIHBpeGVscyBpcyBkZXRlcm1pbmVkIGJ5IHRoZQorZG90Y2xvY2sgaW4gdGhlIGdyYXBoaWNzIGJvYXJkLiBGb3IgYSBkb3RjbG9jayBvZiBlLmcuIDI4LjM3NTE2IE1IeiAobWlsbGlvbnMKK29mIGN5Y2xlcyBwZXIgc2Vjb25kKSwgZWFjaCBwaXhlbCBpcyAzNTI0MiBwcyAocGljb3NlY29uZHMpIGxvbmc6CisKKyAgICAxLygyOC4zNzUxNkU2IEh6KSA9IDM1LjI0MkUtOSBzCisKK0lmIHRoZSBzY3JlZW4gcmVzb2x1dGlvbiBpcyA2NDB4NDgwLCBpdCB3aWxsIHRha2UKKworICAgIDY0MCozNS4yNDJFLTkgcyA9IDIyLjU1NUUtNiBzCisKK3RvIHBhaW50IHRoZSA2NDAgKHhyZXMpIHBpeGVscyBvbiBvbmUgc2NhbmxpbmUuIEJ1dCB0aGUgaG9yaXpvbnRhbCByZXRyYWNlCithbHNvIHRha2VzIHRpbWUgKGUuZy4gMjcyIGBwaXhlbHMnKSwgc28gYSBmdWxsIHNjYW5saW5lIHRha2VzCisKKyAgICAoNjQwKzI3MikqMzUuMjQyRS05IHMgPSAzMi4xNDFFLTYgcworCitXZSdsbCBzYXkgdGhhdCB0aGUgaG9yaXpvbnRhbCBzY2FucmF0ZSBpcyBhYm91dCAzMSBrSHo6CisKKyAgICAxLygzMi4xNDFFLTYgcykgPSAzMS4xMTNFMyBIegorCitBIGZ1bGwgc2NyZWVuIGNvdW50cyA0ODAgKHlyZXMpIGxpbmVzLCBidXQgd2UgaGF2ZSB0byBjb25zaWRlciB0aGUgdmVydGljYWwKK3JldHJhY2UgdG9vIChlLmcuIDQ5IGBsaW5lcycpLiBTbyBhIGZ1bGwgc2NyZWVuIHdpbGwgdGFrZQorCisgICAgKDQ4MCs0OSkqMzIuMTQxRS02IHMgPSAxNy4wMDJFLTMgcworCitUaGUgdmVydGljYWwgc2NhbnJhdGUgaXMgYWJvdXQgNTkgSHo6CisKKyAgICAxLygxNy4wMDJFLTMgcykgPSA1OC44MTUgSHoKKworVGhpcyBtZWFucyB0aGUgc2NyZWVuIGRhdGEgaXMgcmVmcmVzaGVkIGFib3V0IDU5IHRpbWVzIHBlciBzZWNvbmQuIFRvIGhhdmUgYQorc3RhYmxlIHBpY3R1cmUgd2l0aG91dCB2aXNpYmxlIGZsaWNrZXIsIFZFU0EgcmVjb21tZW5kcyBhIHZlcnRpY2FsIHNjYW5yYXRlIG9mCithdCBsZWFzdCA3MiBIei4gQnV0IHRoZSBwZXJjZWl2ZWQgZmxpY2tlciBpcyB2ZXJ5IGh1bWFuIGRlcGVuZGVudDogc29tZSBwZW9wbGUKK2NhbiB1c2UgNTAgSHogd2l0aG91dCBhbnkgdHJvdWJsZSwgd2hpbGUgSSdsbCBub3RpY2UgaWYgaXQncyBsZXNzIHRoYW4gODAgSHouCisKK1NpbmNlIHRoZSBtb25pdG9yIGRvZXNuJ3Qga25vdyB3aGVuIGEgbmV3IHNjYW5saW5lIHN0YXJ0cywgdGhlIGdyYXBoaWNzIGJvYXJkCit3aWxsIHN1cHBseSBhIHN5bmNocm9uaXphdGlvbiBwdWxzZSAoaG9yaXpvbnRhbCBzeW5jIG9yIGhzeW5jKSBmb3IgZWFjaAorc2NhbmxpbmUuICBTaW1pbGFybHkgaXQgc3VwcGxpZXMgYSBzeW5jaHJvbml6YXRpb24gcHVsc2UgKHZlcnRpY2FsIHN5bmMgb3IKK3ZzeW5jKSBmb3IgZWFjaCBuZXcgZnJhbWUuIFRoZSBwb3NpdGlvbiBvZiB0aGUgaW1hZ2Ugb24gdGhlIHNjcmVlbiBpcworaW5mbHVlbmNlZCBieSB0aGUgbW9tZW50cyBhdCB3aGljaCB0aGUgc3luY2hyb25pemF0aW9uIHB1bHNlcyBvY2N1ci4KKworVGhlIGZvbGxvd2luZyBwaWN0dXJlIHN1bW1hcml6ZXMgYWxsIHRpbWluZ3MuIFRoZSBob3Jpem9udGFsIHJldHJhY2UgdGltZSBpcwordGhlIHN1bSBvZiB0aGUgbGVmdCBtYXJnaW4sIHRoZSByaWdodCBtYXJnaW4gYW5kIHRoZSBoc3luYyBsZW5ndGgsIHdoaWxlIHRoZQordmVydGljYWwgcmV0cmFjZSB0aW1lIGlzIHRoZSBzdW0gb2YgdGhlIHVwcGVyIG1hcmdpbiwgdGhlIGxvd2VyIG1hcmdpbiBhbmQgdGhlCit2c3luYyBsZW5ndGguCisKKyAgKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLSsKKyAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIHx1cHBlcl9tYXJnaW4gICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIKUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgKy0tLS0tLS0tLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tLS0tLS0tLS0rLS0tLS0tLSsKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgIGxlZnQgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgcmlnaHQgICB8IGhzeW5jIHwKKyAgfCAgbWFyZ2luICAjICAgICAgICAgICAgICAgIHwgICAgICAgeHJlcyAgICAgICAgICAgICAgICAgIyAgbWFyZ2luICB8ICBsZW4gIHwKKyAgfDwtLS0tLS0tLT4jPC0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IzwtLS0tLS0tLT58PC0tLS0tPnwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHx5cmVzICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIKUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgKy0tLS0tLS0tLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tLS0tLS0tLS0rLS0tLS0tLSsKKyAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIHxsb3dlcl9tYXJnaW4gICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIKUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLSsKKyAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIHx2c3luY19sZW4gICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIKUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLSsKKworVGhlIGZyYW1lIGJ1ZmZlciBkZXZpY2UgZXhwZWN0cyBhbGwgaG9yaXpvbnRhbCB0aW1pbmdzIGluIG51bWJlciBvZiBkb3RjbG9ja3MKKyhpbiBwaWNvc2Vjb25kcywgMUUtMTIgcyksIGFuZCB2ZXJ0aWNhbCB0aW1pbmdzIGluIG51bWJlciBvZiBzY2FubGluZXMuCisKKworNi4gQ29udmVydGluZyBYRnJlZTg2IHRpbWluZyB2YWx1ZXMgaW5mbyBmcmFtZSBidWZmZXIgZGV2aWNlIHRpbWluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuIFhGcmVlODYgbW9kZSBsaW5lIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgZmllbGRzOgorICI4MDB4NjAwIiAgICAgNTAgICAgICA4MDAgIDg1NiAgOTc2IDEwNDAgICAgNjAwICA2MzcgIDY0MyAgNjY2CisgPCBuYW1lID4gICAgIERDRiAgICAgICBIUiAgU0gxICBTSDIgIEhGTCAgICAgVlIgIFNWMSAgU1YyICBWRkwKKworVGhlIGZyYW1lIGJ1ZmZlciBkZXZpY2UgdXNlcyB0aGUgZm9sbG93aW5nIGZpZWxkczoKKworICAtIHBpeGNsb2NrOiBwaXhlbCBjbG9jayBpbiBwcyAocGljbyBzZWNvbmRzKQorICAtIGxlZnRfbWFyZ2luOiB0aW1lIGZyb20gc3luYyB0byBwaWN0dXJlCisgIC0gcmlnaHRfbWFyZ2luOiB0aW1lIGZyb20gcGljdHVyZSB0byBzeW5jCisgIC0gdXBwZXJfbWFyZ2luOiB0aW1lIGZyb20gc3luYyB0byBwaWN0dXJlCisgIC0gbG93ZXJfbWFyZ2luOiB0aW1lIGZyb20gcGljdHVyZSB0byBzeW5jCisgIC0gaHN5bmNfbGVuOiBsZW5ndGggb2YgaG9yaXpvbnRhbCBzeW5jCisgIC0gdnN5bmNfbGVuOiBsZW5ndGggb2YgdmVydGljYWwgc3luYworCisxKSBQaXhlbGNsb2NrOgorICAgeGZyZWU6IGluIE1IegorICAgZmI6IGluIHBpY29zZWNvbmRzIChwcykKKworICAgcGl4Y2xvY2sgPSAxMDAwMDAwIC8gRENGCisKKzIpIGhvcml6b250YWwgdGltaW5nczoKKyAgIGxlZnRfbWFyZ2luID0gSEZMIC0gU0gyCisgICByaWdodF9tYXJnaW4gPSBTSDEgLSBIUgorICAgaHN5bmNfbGVuID0gU0gyIC0gU0gxCisKKzMpIHZlcnRpY2FsIHRpbWluZ3M6CisgICB1cHBlcl9tYXJnaW4gPSBWRkwgLSBTVjIKKyAgIGxvd2VyX21hcmdpbiA9IFNWMSAtIFZSCisgICB2c3luY19sZW4gPSBTVjIgLSBTVjEKKworR29vZCBleGFtcGxlcyBmb3IgVkVTQSB0aW1pbmdzIGNhbiBiZSBmb3VuZCBpbiB0aGUgWEZyZWU4NiBzb3VyY2UgdHJlZSwKK3VuZGVyICJ4Yy9wcm9ncmFtcy9Yc2VydmVyL2h3L3hmcmVlODYvZG9jL21vZGVEQi50eHQiLgorCisKKzcuIFJlZmVyZW5jZXMKKy0tLS0tLS0tLS0tLS0KKworRm9yIG1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZyYW1lIGJ1ZmZlciBkZXZpY2UgYW5kIGl0cworYXBwbGljYXRpb25zLCBwbGVhc2UgcmVmZXIgdG8gdGhlIExpbnV4LWZiZGV2IHdlYnNpdGU6CisKKyAgICBodHRwOi8vbGludXgtZmJkZXYuc291cmNlZm9yZ2UubmV0LworCithbmQgdG8gdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uOgorCisgIC0gVGhlIG1hbnVhbCBwYWdlcyBmb3IgZmJzZXQ6IGZic2V0KDgpLCBmYi5tb2Rlcyg1KQorICAtIFRoZSBtYW51YWwgcGFnZXMgZm9yIFhGcmVlODY6IFhGNjhfRkJEZXYoMSksIFhGODZDb25maWcoNC81KQorICAtIFRoZSBtaWdodHkga2VybmVsIHNvdXJjZXM6CisgICAgICBvIGxpbnV4L2RyaXZlcnMvdmlkZW8vCisgICAgICBvIGxpbnV4L2luY2x1ZGUvbGludXgvZmIuaAorICAgICAgbyBsaW51eC9pbmNsdWRlL3ZpZGVvLworCisKKworOC4gTWFpbGluZyBsaXN0CistLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHNldmVyYWwgZnJhbWUgYnVmZmVyIGRldmljZSByZWxhdGVkIG1haWxpbmcgbGlzdHMgYXQgU291cmNlRm9yZ2U6CisgIC0gbGludXgtZmJkZXYtYW5ub3VuY2VAbGlzdHMuc291cmNlZm9yZ2UubmV0LCBmb3IgYW5ub3VuY2VtZW50cywKKyAgLSBsaW51eC1mYmRldi11c2VyQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCwgZm9yIGdlbmVyaWMgdXNlciBzdXBwb3J0LAorICAtIGxpbnV4LWZiZGV2LWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCwgZm9yIHByb2plY3QgZGV2ZWxvcGVycy4KKworUG9pbnQgeW91ciB3ZWIgYnJvd3NlciB0byBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpbnV4LWZiZGV2LyBmb3IKK3N1YnNjcmlwdGlvbiBpbmZvcm1hdGlvbiBhbmQgYXJjaGl2ZSBicm93c2luZy4KKworCis5LiBEb3dubG9hZGluZworLS0tLS0tLS0tLS0tLS0KKworQWxsIG5lY2Vzc2FyeSBmaWxlcyBjYW4gYmUgZm91bmQgYXQKKworICAgIGZ0cDovL2Z0cC51bmktZXJsYW5nZW4uZGUvcHViL0xpbnV4L0xPQ0FMLzY4MHgwLworCithbmQgb24gaXRzIG1pcnJvcnMuCisKK1RoZSBsYXRlc3QgdmVyc2lvbiBvZiBmYnNldCBjYW4gYmUgZm91bmQgYXQKKworICAgIGh0dHA6Ly9ob21lLnR2ZC5iZS9jcjI2ODY0L0xpbnV4L2ZiZGV2LworCisgIAorMTAuIENyZWRpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIAorVGhpcyByZWFkbWUgd2FzIHdyaXR0ZW4gYnkgR2VlcnQgVXl0dGVyaG9ldmVuLCBwYXJ0bHkgYmFzZWQgb24gdGhlIG9yaWdpbmFsCitgWC1mcmFtZWJ1ZmZlci5SRUFETUUnIGJ5IFJvbWFuIEhvZGVrIGFuZCBNYXJ0aW4gU2NoYWxsZXIuIFNlY3Rpb24gNiB3YXMKK3Byb3ZpZGVkIGJ5IEZyYW5rIE5ldW1hbm4uCisKK1RoZSBmcmFtZSBidWZmZXIgZGV2aWNlIGFic3RyYWN0aW9uIHdhcyBkZXNpZ25lZCBieSBNYXJ0aW4gU2NoYWxsZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL2ludGVsODEwLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvaW50ZWw4MTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNjhiMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL2ludGVsODEwLnR4dApAQCAtMCwwICsxLDI3MiBAQAorSW50ZWwgODEwLzgxNSBGcmFtZWJ1ZmZlciBkcml2ZXIKKyAJVG9ueSBEYXBsYXMgPGFkYXBsYXNAcG9sLm5ldD4KKwlodHRwOi8vaTgxMGZiLnNvdXJjZWZvcmdlLm5ldAorCisJTWFyY2ggMTcsIDIwMDIKKworCUZpcnN0IFJlbGVhc2VkOiBKdWx5IDIwMDEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQS4gSW50cm9kdWN0aW9uCisJVGhpcyBpcyBhIGZyYW1lYnVmZmVyIGRyaXZlciBmb3IgdmFyaW91cyBJbnRlbCA4MTAvODE1IGNvbXBhdGlibGUKK2dyYXBoaWNzIGRldmljZXMuICBUaGVzZSB3b3VsZCBpbmNsdWRlOgorCisJSW50ZWwgODEwCisJSW50ZWwgODEwRQorCUludGVsIDgxMC1EQzEwMAorCUludGVsIDgxNSBJbnRlcm5hbCBncmFwaGljcyBvbmx5LCAxMDBNaHogRlNCCisJSW50ZWwgODE1IEludGVybmFsIGdyYXBoaWNzIG9ubHkKKwlJbnRlbCA4MTUgSW50ZXJuYWwgZ3JhcGhpY3MgYW5kIEFHUAorCitCLiAgRmVhdHVyZXMKKworICAgICAgICAtIENob2ljZSBvZiB1c2luZyBEaXNjcmV0ZSBWaWRlbyBUaW1pbmdzLCBWRVNBIEdlbmVyYWxpemVkIFRpbWluZworCSAgRm9ybXVsYSwgb3IgYSBmcmFtZWJ1ZmZlciBzcGVjaWZpYyBkYXRhYmFzZSB0byBzZXQgdGhlIHZpZGVvIG1vZGUKKworCS0gU3VwcG9ydHMgYSB2YXJpYWJsZSByYW5nZSBvZiBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCByZXNvbHV0aW9uLCBhbmQKKwkgIHZlcnRpY2FsIHJlZnJlc2ggcmF0ZXMgaWYgdGhlIFZFU0EgR2VuZXJhbGl6ZWQgVGltaW5nIEZvcm11bGEgaXMgCisJICBlbmFibGVkLgorCisgICAgICAgIC0gU3VwcG9ydHMgY29sb3IgZGVwdGhzIG9mIDgsIDE2LCAyNCBhbmQgMzIgYml0cyBwZXIgcGl4ZWwKKworCS0gU3VwcG9ydHMgcHNldWRvY29sb3IsIGRpcmVjdGNvbG9yLCBvciB0cnVlY29sb3IgdmlzdWFscworCisgICAgICAgIC0gRnVsbCBhbmQgb3B0aW1pemVkIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBhdCA4LCAxNiBhbmQgMjQgYnBwCisKKwktIFJvYnVzdCB2aWRlbyBzdGF0ZSBzYXZlIGFuZCByZXN0b3JlCisKKyAgICAgICAgLSBNVFJSIHN1cHBvcnQgCisKKwktIFV0aWxpemVzIHVzZXItZW50ZXJlZCBtb25pdG9yIHNwZWNpZmljYXRpb25zIHRvIGF1dG9tYXRpY2FsbHkKKwkgIGNhbGN1bGF0ZSByZXF1aXJlZCB2aWRlbyBtb2RlIHBhcmFtZXRlcnMuCisKKwktIENhbiBjb25jdXJyZW50bHkgcnVuIHdpdGggeGZyZWU4NiBydW5uaW5nIHdpdGggbmF0aXZlIGk4MTAgZHJpdmVycyAKKworCS0gSGFyZHdhcmUgQ3Vyc29yIFN1cHBvcnQKKyAKK0MuICBMaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zCisJCisgICBhLiAidmlkZW89aTgxMGZiIiAgCisJZW5hYmxlcyB0aGUgaTgxMCBkcml2ZXIKKworCVJlY29tbWVuZGF0aW9uOiByZXF1aXJlZAorIAorICAgYi4gInhyZXM6PHZhbHVlPiIgIAorCXNlbGVjdCBob3Jpem9udGFsIHJlc29sdXRpb24gaW4gcGl4ZWxzCisKKwlSZWNvbW1lbmRhdGlvbjogdXNlciBwcmVmZXJlbmNlIAorCShkZWZhdWx0ID0gNjQwKQorCisgICBjLiAieXJlczo8dmFsdWU+IgorCXNlbGVjdCB2ZXJ0aWNhbCByZXNvbHV0aW9uIGluIHNjYW5saW5lcy4gSWYgRGlzY3JldGUgVmlkZW8gVGltaW5ncworCWlzIGVuYWJsZWQsIHRoaXMgd2lsbCBiZSBpZ25vcmVkIGFuZCBjb21wdXRlZCBhcyAzKnhyZXMvNC4gIAorCisJUmVjb21tZW5kYXRpb246IHVzZXIgcHJlZmVyZW5jZQorCShkZWZhdWx0ID0gNDgwKQorCQkKKyAgIGQuICJ2eXJlczo8dmFsdWU+IiAKKwlzZWxlY3QgdmlydHVhbCB2ZXJ0aWNhbCByZXNvbHV0aW9uIGluIHNjYW5saW5lcy4gSWYgKDApIG9yIG5vbmUKKwlpcyBzcGVjaWZpZWQsIHRoaXMgd2lsbCBiZSBjb21wdXRlZCBhZ2FpbnN0IG1heGltdW0gYXZhaWxhYmxlIG1lbW9yeS4gCisKKwlSZWNvbW1lbmRhdGlvbjogZG8gbm90IHNldAorCShkZWZhdWx0ID0gNDgwKQorCisgICBlLiAidnJhbTo8dmFsdWU+IgorCXNlbGVjdCBhbW91bnQgb2Ygc3lzdGVtIFJBTSBpbiBNQiB0byBhbGxvY2F0ZSBmb3IgdGhlIHZpZGVvIG1lbW9yeSAKKworCVJlY29tbWVuZGF0aW9uOiAxIC0gNCBNQi4KKwkoZGVmYXVsdCA9IDQpCisKKyAgIGYuICJicHA6PHZhbHVlPiIgICAKKwlzZWxlY3QgZGVzaXJlZCBwaXhlbCBkZXB0aCAKKworCVJlY29tbWVuZGF0aW9uOiA4CisJKGRlZmF1bHQgPSA4KQorCisgICBnLiAiaHN5bmMxL2hzeW5jMjo8dmFsdWU+IiAKKwlzZWxlY3QgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gSG9yaXpvbnRhbCBTeW5jIEZyZXF1ZW5jeSBvZiB0aGUgCisJbW9uaXRvciBpbiBLSHouICBJZiBhIHVzaW5nIGEgZml4ZWQgZnJlcXVlbmN5IG1vbml0b3IsIGhzeW5jMSBtdXN0IAorCWJlIGVxdWFsIHRvIGhzeW5jMi4gCisKKwlSZWNvbW1lbmRhdGlvbjogY2hlY2sgbW9uaXRvciBtYW51YWwgZm9yIGNvcnJlY3QgdmFsdWVzCisJZGVmYXVsdCAoMjkvMzApCisKKyAgIGguICJ2c3luYzEvdnN5bmMyOjx2YWx1ZT4iIAorCXNlbGVjdCB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBWZXJ0aWNhbCBTeW5jIEZyZXF1ZW5jeSBvZiB0aGUgbW9uaXRvcgorCWluIEh6LiBZb3UgY2FuIGFsc28gdXNlIHRoaXMgb3B0aW9uIHRvIGxvY2sgeW91ciBtb25pdG9yJ3MgcmVmcmVzaCAKKwlyYXRlLgorCisJUmVjb21tZW5kYXRpb246IGNoZWNrIG1vbml0b3IgbWFudWFsIGZvciBjb3JyZWN0IHZhbHVlcworCShkZWZhdWx0ID0gNjAvNjApCisKKwlJTVBPUlRBTlQ6ICBJZiB5b3UgbmVlZCB0byBjbGFtcCB5b3VyIHRpbWluZ3MsIHRyeSB0byBnaXZlIHNvbWUgCisJbGVld2F5IGZvciBjb21wdXRhdGlvbmFsIGVycm9ycyAob3Zlci91bmRlcmZsb3dzKS4gIEV4YW1wbGU6IGlmIAorCXVzaW5nIHZzeW5jMS92c3luYzIgPSA2MC82MCwgbWFrZSBzdXJlIGhzeW5jMS9oc3luYzIgaGFzIGF0IGxlYXN0CisJYSAxIHVuaXQgZGlmZmVyZW5jZSwgYW5kIHZpY2UgdmVyc2EuCisKKyAgIGkuICJ2b2Zmc2V0Ojx2YWx1ZT4iCQorICAgICAgICBzZWxlY3QgYXQgd2hhdCBvZmZzZXQgaW4gTUIgb2YgdGhlIGxvZ2ljYWwgbWVtb3J5IHRvIGFsbG9jYXRlIHRoZSAKKwlmcmFtZWJ1ZmZlciBtZW1vcnkuICBUaGUgaW50ZW50IGlzIHRvIGF2b2lkIHRoZSBtZW1vcnkgYmxvY2tzCisJdXNlZCBieSBzdGFuZGFyZCBncmFwaGljcyBhcHBsaWNhdGlvbnMgKFhGcmVlODYpLiAgVGhlIGRlZmF1bHQKKyAgICAgICAgb2Zmc2V0ICgxNiBNQiBmb3IgYSA2NE1CIGFwZXJ0dXJlLCA4IE1CIGZvciBhIDMyTUIgYXBlcnR1cmUpIHdpbGwKKyAgICAgICAgYXZvaWQgWEZyZWU4NidzIHVzYWdlIGFuZCBhbGxvd3MgdXAgdG8gN01CLzE1TUIgb2YgZnJhbWVidWZmZXIKKyAgICAgICAgbWVtb3J5LiAgRGVwZW5kaW5nIG9uIHlvdXIgdXNhZ2UsIGFkanVzdCB0aGUgdmFsdWUgdXAgb3IgZG93biwgCisJKDAgZm9yIG1heGltdW0gdXNhZ2UsIDMxLzYzIE1CIGZvciB0aGUgbGVhc3QgYW1vdW50KS4gIE5vdGUsIGFuIAorCWFyYml0cmFyeSBzZXR0aW5nIG1heSBjb25mbGljdCB3aXRoIFhGcmVlODYuCisKKwlSZWNvbW1lbmRhdGlvbjogZG8gbm90IHNldAorCShkZWZhdWx0ID0gOCBvciAxNiBNQikKKyAgICAgIAorICAgai4gImFjY2VsIiAKKwllbmFibGUgdGV4dCBhY2NlbGVyYXRpb24uICBUaGlzIGNhbiBiZSBlbmFibGVkL3JlZW5hYmxlZCBhbnl0aW1lIAorCWJ5IHVzaW5nICdmYnNldCAtYWNjZWwgdHJ1ZS9mYWxzZScuIAorCisJUmVjb21tZW5kYXRpb246IGVuYWJsZQorCShkZWZhdWx0ID0gbm90IHNldCkgCisKKyAgIGsuICJtdHJyIiAKKwllbmFibGUgTVRSUi4gIFRoaXMgYWxsb3dzIGRhdGEgdHJhbnNmZXJzIHRvIHRoZSBmcmFtZWJ1ZmZlciBtZW1vcnkKKwl0byBvY2N1ciBpbiBidXJzdHMgd2hpY2ggY2FuIHNpZ25pZmljYW50bHkgaW5jcmVhc2UgcGVyZm9ybWFuY2UuCisJTm90IHZlcnkgaGVscGZ1bCB3aXRoIHRoZSBpODEwL2k4MTUgYmVjYXVzZSBvZiAnc2hhcmVkIG1lbW9yeScuIAorCisJUmVjb21tZW5kYXRpb246IGRvIG5vdCBzZXQKKwkoZGVmYXVsdCA9IG5vdCBzZXQpIAorCisgICBsLiAiZXh0dmdhIgorCWlmIHNwZWNpZmllZCwgc2Vjb25kYXJ5L2V4dGVybmFsIFZHQSBvdXRwdXQgd2lsbCBhbHdheXMgYmUgZW5hYmxlZC4KKwlVc2VmdWwgaWYgdGhlIEJJT1MgdHVybnMgb2ZmIHRoZSBWR0EgcG9ydCB3aGVuIG5vIG1vbml0b3IgaXMgYXR0YWNoZWQuCisJVGhlIGV4dGVybmFsIFZHQSBtb25pdG9yIGNhbiB0aGVuIGJlIGF0dGFjaGVkIHdpdGhvdXQgcmVib290aW5nLiAKKworCVJlY29tbWVuZGF0aW9uOiBkbyBub3Qgc2V0CisJKGRlZmF1bHQgPSBub3Qgc2V0KQorCQorICAgbS4gInN5bmMiIAorCUZvcmNlcyB0aGUgaGFyZHdhcmUgZW5naW5lIHRvIGRvIGEgInN5bmMiIG9yIHdhaXQgZm9yIHRoZSBoYXJkd2FyZQorCXRvIGZpbmlzaCBiZWZvcmUgc3RhcnRpbmcgYW5vdGhlciBpbnN0cnVjdGlvbi4gVGhpcyB3aWxsIHByb2R1Y2UgYSAKKwltb3JlIHN0YWJsZSBzZXR1cCwgYnV0IHdpbGwgYmUgc2xvd2VyLgorCisJUmVjb21tZW5kYXRpb246IGRvIG5vdCBzZXQKKwkoZGVmYXVsdCA9IG5vdCBzZXQpCisKKyAgIG4uICJkY29sb3IiCisgICAgICAgIFVzZSBkaXJlY3Rjb2xvciB2aXN1YWwgaW5zdGVhZCBvZiB0cnVlY29sb3IgZm9yIHBpeGVsIGRlcHRocyBncmVhdGVyCisJdGhhbiA4IGJwcC4gIFVzZWZ1bCBmb3IgY29sb3IgdHVuaW5nLCBzdWNoIGFzIGdhbW1hIGNvbnRyb2wuCisKKwlSZWNvbW1lbmRhdGlvbjogZG8gbm90IHNldAorCShkZWZhdWx0ID0gbm90IHNldCkKKwkJCQorRC4gS2VybmVsIGJvb3RpbmcKKworU2VwYXJhdGUgZWFjaCBvcHRpb24vb3B0aW9uLXBhaXIgYnkgY29tbWFzICgsKSBhbmQgdGhlIG9wdGlvbiBmcm9tIGl0cyB2YWx1ZQord2l0aCBhIGNvbG9uICg6KSBhcyBpbiB0aGUgZm9sbG93aW5nOgorCit2aWRlbz1pODEwZmI6b3B0aW9uMSxvcHRpb24yOnZhbHVlMgorCitTYW1wbGUgVXNhZ2UKKy0tLS0tLS0tLS0tLQorCitJbiAvZXRjL2xpbG8uY29uZiwgYWRkIHRoZSBsaW5lOgorCithcHBlbmQ9InZpZGVvPWk4MTBmYjp2cmFtOjIseHJlczoxMDI0LHlyZXM6NzY4LGJwcDo4LGhzeW5jMTozMCxoc3luYzI6NTUsIFwKKyAgICAgICAgdnN5bmMxOjUwLHZzeW5jMjo4NSxhY2NlbCxtdHJyIgorCitUaGlzIHdpbGwgaW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgdG8gMTAyNHg3NjggYXQgOGJwcC4gIFRoZSBmcmFtZWJ1ZmZlcgord2lsbCB1c2UgMiBNQiBvZiBTeXN0ZW0gUkFNLiBNVFJSIHN1cHBvcnQgd2lsbCBiZSBlbmFibGVkLiBUaGUgcmVmcmVzaCByYXRlIAord2lsbCBiZSBjb21wdXRlZCBiYXNlZCBvbiB0aGUgaHN5bmMxL2hzeW5jMiBhbmQgdnN5bmMxL3ZzeW5jMiB2YWx1ZXMuICAKKworSU1QT1JUQU5UOgorWW91IG11c3QgaW5jbHVkZSBoc3luYzEsIGhzeW5jMiwgdnN5bmMxIGFuZCB2c3luYzIgdG8gZW5hYmxlIHZpZGVvIG1vZGVzCitiZXR0ZXIgdGhhbiA2NDB4NDgwIGF0IDYwSHouCisKK0UuICBNb2R1bGUgb3B0aW9ucworCQorCVRoZSBtb2R1bGUgcGFyYW1ldGVycyBhcmUgZXNzZW50aWFsbHkgc2ltaWxhciB0byB0aGUga2VybmVsIAorcGFyYW1ldGVycy4gVGhlIG1haW4gZGlmZmVyZW5jZSBpcyB0aGF0IHlvdSBuZWVkIHRvIGluY2x1ZGUgYSBCb29sZWFuIHZhbHVlIAorKDEgZm9yIFRSVUUsIGFuZCAwIGZvciBGQUxTRSkgZm9yIHRob3NlIG9wdGlvbnMgd2hpY2ggZG9uJ3QgbmVlZCBhIHZhbHVlLiAKKworRXhhbXBsZSwgdG8gZW5hYmxlIE1UUlIsIGluY2x1ZGUgIm10cnI9MSIuCisKK1NhbXBsZSBVc2FnZQorLS0tLS0tLS0tLS0tCisKK1VzaW5nIHRoZSBzYW1lIHNldHVwIGFzIGRlc2NyaWJlZCBhYm92ZSwgbG9hZCB0aGUgbW9kdWxlIGxpa2UgdGhpczoKKworCW1vZHByb2JlIGk4MTBmYiB2cmFtPTIgeHJlcz0xMDI0IGJwcD04IGhzeW5jMT0zMCBoc3luYzI9NTUgdnN5bmMxPTUwIFwKKwkgICAgICAgICB2c3luYzI9ODUgYWNjZWw9MSBtdHJyPTEKKworT3IganVzdCBhZGQgdGhlIGZvbGxvd2luZyB0byAvZXRjL21vZHByb2JlLmNvbmYKKworCW9wdGlvbnMgaTgxMGZiIHZyYW09MiB4cmVzPTEwMjQgYnBwPTE2IGhzeW5jMT0zMCBoc3luYzI9NTUgdnN5bmMxPTUwIFwKKwl2c3luYzI9ODUgYWNjZWw9MSBtdHJyPTEKKworYW5kIGp1c3QgZG8gYSAKKworCW1vZHByb2JlIGk4MTBmYgorCisKK0YuICBTZXR1cAorCisJYS4gRG8geW91ciB1c3VhbCBtZXRob2Qgb2YgY29uZmlndXJpbmcgdGhlIGtlcm5lbC4gCisJCisJbWFrZSBtZW51Y29uZmlnL3hjb25maWcvY29uZmlnCisKKwliLiBVbmRlciAiQ29kZSBNYXR1cml0eSBPcHRpb25zIiwgZW5hYmxlICJQcm9tcHQgZm9yIGV4cGVyaW1lbnRhbC8KKwkgICBpbmNvbXBsZXRlIGNvZGUvZHJpdmVycyIuCisKKyAJYy4gRW5hYmxlIGFncGdhcnQgc3VwcG9ydCBmb3IgdGhlIEludGVsIDgxMC84MTUgb24tYm9hcmQgZ3JhcGhpY3MuCisJICAgVGhpcyBpcyByZXF1aXJlZC4gIFRoZSBvcHRpb24gaXMgdW5kZXIgIkNoYXJhY3RlciBEZXZpY2VzIgorCisJZC4gVW5kZXIgIkdyYXBoaWNzIFN1cHBvcnQiLCBzZWxlY3QgIkludGVsIDgxMC84MTUiIGVpdGhlciBzdGF0aWNhbGx5CisJICAgb3IgYXMgYSBtb2R1bGUuICBDaG9vc2UgInVzZSBWRVNBIEdURiBmb3IgdmlkZW8gdGltaW5ncyIgIGlmIHlvdSAKKwkgICBuZWVkIHRvIG1heGltaXplIHRoZSBjYXBhYmlsaXR5IG9mIHlvdXIgZGlzcGxheS4gIFRvIGJlIG9uIHRoZSAKKwkgICBzYWZlIHNpZGUsIHlvdSBjYW4gbGVhdmUgdGhpcyB1bnNlbGVjdGVkLiAgCisgIAorICAgICAgICBlLiBJZiB5b3Ugd2FudCBhIGZyYW1lYnVmZmVyIGNvbnNvbGUsIGVuYWJsZSBpdCB1bmRlciAiQ29uc29sZSAKKwkgICBEcml2ZXJzIgorCisJZi4gQ29tcGlsZSB5b3VyIGtlcm5lbC4gCisJICAJCisJZy4gTG9hZCB0aGUgZHJpdmVyIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIEQgYW5kIEUuCisJCisJT3B0aW9uYWw6CQorCWguICBJZiB5b3UgYXJlIGdvaW5nIHRvIHJ1biBYRnJlZTg2IHdpdGggaXRzIG5hdGl2ZSBkcml2ZXJzLCB0aGUgCisJICAgIHN0YW5kYXJkIFhGcmVlODYgNC4xLjAgYW5kIDQuMi4wIGRyaXZlcnMgc2hvdWxkIHdvcmsgYXMgaXMuCisgICAgICAgICAgICBIb3dldmVyLCB0aGVyZSdzIGEgYnVnIGluIHRoZSBYRnJlZTg2IGk4MTAgZHJpdmVycy4gIEl0IGF0dGVtcHRzIAorCSAgICB0byB1c2UgWEFBIGV2ZW4gd2hlbiBzd2l0Y2hlZCB0byB0aGUgY29uc29sZS4gVGhpcyB3aWxsIGNyYXNoCisJICAgIHlvdXIgc2VydmVyLiBJIGhhdmUgYSBmaXggYXQgdGhpcyBzaXRlOiAgCisJICAgIAorCSAgICBodHRwOi8vaTgxMGZiLnNvdXJjZWZvcmdlLm5ldC4gIAorCisJICAgIFlvdSBjYW4gZWl0aGVyIHVzZSB0aGUgcGF0Y2gsIG9yIGp1c3QgcmVwbGFjZSAKKwkgICAgCisgICAgICAgICAgICAvdXNyL1gxMVI2L2xpYi9tb2R1bGVzL2RyaXZlcnMvaTgxMF9kcnYubworCisJICAgIHdpdGggdGhlIG9uZSBwcm92aWRlZCBhdCB0aGUgd2Vic2l0ZS4gCQorCisJaS4gIFRyeSB0aGUgRGlyZWN0RkIgKGh0dHA6Ly93d3cuZGlyZWN0ZmIub3JnKSArIHRoZSBpODEwIGdmeGRyaXZlcgorCSAgICBwYXRjaCB0byBzZWUgdGhlIGNoaXBzZXQgaW4gYWN0aW9uIChvciBpbmFjdGlvbiA6LSkuCisKK0cuICBBY2tub3dsZWRnbWVudDoKKwkKKwkxLiAgR2VlcnQgVXl0dGVyaG9ldmVuIC0gaGlzIGV4Y2VsbGVudCBob3d0byBhbmQgdGhlIHZpcnR1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyIGRyaXZlciBjb2RlIG1hZGUgdGhpcyBwb3NzaWJsZS4KKworCTIuICBKZWZmIEhhcnRtYW5uIGZvciBoaXMgYWdwZ2FydCBjb2RlLiAgCisKKwkzLiAgVGhlIFggZGV2ZWxvcGVycy4gIEluc2lnaHRzIHdlcmUgcHJvdmlkZWQganVzdCBieSByZWFkaW5nIHRoZQorCSAgICBYRnJlZTg2IHNvdXJjZSBjb2RlLgorCisJNC4gIEludGVsKGMpLiAgRm9yIHRoaXMgdmFsdWUtb3JpZW50ZWQgY2hpcHNldCBkcml2ZXIgYW5kIGZvcgorICAgICAgICAgICAgcHJvdmlkaW5nIGRvY3VtZW50YXRpb24uCisKKwk1LiBNYXR0IFNvdHRlay4gIEhpcyBpbnB1dHMgYW5kIGlkZWFzICBoZWxwZWQgaW4gbWFraW5nIHNvbWUKKwlvcHRpbWl6YXRpb25zIHBvc3NpYmxlLgorCitILiAgSG9tZSBQYWdlOgorCisJQSBtb3JlIGNvbXBsZXRlLCBhbmQgcHJvYmFibHkgdXBkYXRlZCBpbmZvcm1hdGlvbiBpcyBwcm92aWRlZCBhdAoraHR0cDovL2k4MTBmYi5zb3VyY2Vmb3JnZS5uZXQuCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVG9ueQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL2ludGVybmFscy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL2ludGVybmFscy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIyYTJiMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvaW50ZXJuYWxzLnR4dApAQCAtMCwwICsxLDgyIEBACisKK1RoaXMgaXMgYSBmaXJzdCBzdGFydCBmb3Igc29tZSBkb2N1bWVudGF0aW9uIGFib3V0IGZyYW1lIGJ1ZmZlciBkZXZpY2UKK2ludGVybmFscy4KKworR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVydEBsaW51eC1tNjhrLm9yZz4sIDIxIEp1bHkgMTk5OAorSmFtZXMgU2ltbW9ucyA8anNpbW1vbnNAdXNlci5zZi5uZXQ+LCBOb3YgMjYgMjAwMgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJICAgICoqKiAgU1RSVUNUVVJFUyBVU0VEIEJZIFRIRSBGUkFNRSBCVUZGRVIgREVWSUNFIEFQSSAgKioqCisKK1RoZSBmb2xsb3dpbmcgc3RydWN0dXJlcyBwbGF5IGEgcm9sZSBpbiB0aGUgZ2FtZSBvZiBmcmFtZSBidWZmZXIgZGV2aWNlcy4gVGhleQorYXJlIGRlZmluZWQgaW4gPGxpbnV4L2ZiLmg+LgorCisxLiBPdXRzaWRlIHRoZSBrZXJuZWwgKHVzZXIgc3BhY2UpCisKKyAgLSBzdHJ1Y3QgZmJfZml4X3NjcmVlbmluZm8KKworICAgIERldmljZSBpbmRlcGVuZGVudCB1bmNoYW5nZWFibGUgaW5mb3JtYXRpb24gYWJvdXQgYSBmcmFtZSBidWZmZXIgZGV2aWNlIGFuZAorICAgIGEgc3BlY2lmaWMgdmlkZW8gbW9kZS4gVGhpcyBjYW4gYmUgb2J0YWluZWQgdXNpbmcgdGhlIEZCSU9HRVRfRlNDUkVFTklORk8KKyAgICBpb2N0bC4KKworICAtIHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbworCisgICAgRGV2aWNlIGluZGVwZW5kZW50IGNoYW5nZWFibGUgaW5mb3JtYXRpb24gYWJvdXQgYSBmcmFtZSBidWZmZXIgZGV2aWNlIGFuZCBhCisgICAgc3BlY2lmaWMgdmlkZW8gbW9kZS4gVGhpcyBjYW4gYmUgb2J0YWluZWQgdXNpbmcgdGhlIEZCSU9HRVRfVlNDUkVFTklORk8KKyAgICBpb2N0bCwgYW5kIHVwZGF0ZWQgd2l0aCB0aGUgRkJJT1BVVF9WU0NSRUVOSU5GTyBpb2N0bC4gSWYgeW91IHdhbnQgdG8gcGFuCisgICAgdGhlIHNjcmVlbiBvbmx5LCB5b3UgY2FuIHVzZSB0aGUgRkJJT1BBTl9ESVNQTEFZIGlvY3RsLgorCisgIC0gc3RydWN0IGZiX2NtYXAKKworICAgIERldmljZSBpbmRlcGVuZGVudCBjb2xvcm1hcCBpbmZvcm1hdGlvbi4gWW91IGNhbiBnZXQgYW5kIHNldCB0aGUgY29sb3JtYXAKKyAgICB1c2luZyB0aGUgRkJJT0dFVENNQVAgYW5kIEZCSU9QVVRDTUFQIGlvY3Rscy4KKworCisyLiBJbnNpZGUgdGhlIGtlcm5lbAorCisgIC0gc3RydWN0IGZiX2luZm8KKworICAgIEdlbmVyaWMgaW5mb3JtYXRpb24sIEFQSSBhbmQgbG93IGxldmVsIGluZm9ybWF0aW9uIGFib3V0IGEgc3BlY2lmaWMgZnJhbWUKKyAgICBidWZmZXIgZGV2aWNlIGluc3RhbmNlIChzbG90IG51bWJlciwgYm9hcmQgYWRkcmVzcywgLi4uKS4KKworICAtIHN0cnVjdCBgcGFyJworCisgICAgRGV2aWNlIGRlcGVuZGVudCBpbmZvcm1hdGlvbiB0aGF0IHVuaXF1ZWx5IGRlZmluZXMgdGhlIHZpZGVvIG1vZGUgZm9yIHRoaXMKKyAgICBwYXJ0aWN1bGFyIHBpZWNlIG9mIGhhcmR3YXJlLgorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkgICAgKioqICBWSVNVQUxTIFVTRUQgQlkgVEhFIEZSQU1FIEJVRkZFUiBERVZJQ0UgQVBJICAqKioKKworCitNb25vY2hyb21lIChGQl9WSVNVQUxfTU9OTzAxIGFuZCBGQl9WSVNVQUxfTU9OTzEwKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRWFjaCBwaXhlbCBpcyBlaXRoZXIgYmxhY2sgb3Igd2hpdGUuCisKKworUHNldWRvIGNvbG9yIChGQl9WSVNVQUxfUFNFVURPQ09MT1IgYW5kIEZCX1ZJU1VBTF9TVEFUSUNfUFNFVURPQ09MT1IpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSB3aG9sZSBwaXhlbCB2YWx1ZSBpcyBmZWQgdGhyb3VnaCBhIHByb2dyYW1tYWJsZSBsb29rdXAgdGFibGUgdGhhdCBoYXMgb25lCitjb2xvciAoaW5jbHVkaW5nIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGludGVuc2l0aWVzKSBmb3IgZWFjaCBwb3NzaWJsZSBwaXhlbAordmFsdWUsIGFuZCB0aGF0IGNvbG9yIGlzIGRpc3BsYXllZC4KKworCitUcnVlIGNvbG9yIChGQl9WSVNVQUxfVFJVRUNPTE9SKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBwaXhlbCB2YWx1ZSBpcyBicm9rZW4gdXAgaW50byByZWQsIGdyZWVuLCBhbmQgYmx1ZSBmaWVsZHMuCisKKworRGlyZWN0IGNvbG9yIChGQl9WSVNVQUxfRElSRUNUQ09MT1IpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBwaXhlbCB2YWx1ZSBpcyBicm9rZW4gdXAgaW50byByZWQsIGdyZWVuLCBhbmQgYmx1ZSBmaWVsZHMsIGVhY2ggb2Ygd2hpY2ggCithcmUgbG9va2VkIHVwIGluIHNlcGFyYXRlIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGxvb2t1cCB0YWJsZXMuCisKKworR3JheXNjYWxlIGRpc3BsYXlzCistLS0tLS0tLS0tLS0tLS0tLS0KK0dyYXlzY2FsZSBhbmQgc3RhdGljIGdyYXlzY2FsZSBhcmUgc3BlY2lhbCB2YXJpYW50cyBvZiBwc2V1ZG8gY29sb3IgYW5kIHN0YXRpYworcHNldWRvIGNvbG9yLCB3aGVyZSB0aGUgcmVkLCBncmVlbiBhbmQgYmx1ZSBjb21wb25lbnRzIGFyZSBhbHdheXMgZXF1YWwgdG8KK2VhY2ggb3RoZXIuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvbWF0cm94ZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9tYXRyb3hmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ3YTY3NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvbWF0cm94ZmIudHh0CkBAIC0wLDAgKzEsNDE1IEBACitbVGhpcyBmaWxlIGlzIGNsb25lZCBmcm9tIFZlc2FGQi4gVGhhbmtzIGdvIHRvIEdlcmQgS25vcnJdCisKK1doYXQgaXMgbWF0cm94ZmI/Cis9PT09PT09PT09PT09PT09PQorCitUaGlzIGlzIGEgZHJpdmVyIGZvciBhIGdyYXBoaWMgZnJhbWVidWZmZXIgZm9yIE1hdHJveCBkZXZpY2VzIG9uCitBbHBoYSwgSW50ZWwgYW5kIFBQQyBib3hlcy4KKworQWR2YW50YWdlczoKKworICogSXQgcHJvdmlkZXMgYSBuaWNlIGxhcmdlIGNvbnNvbGUgKDEyOCBjb2xzICsgNDggbGluZXMgd2l0aCAxMDI0eDc2OCkKKyAgIHdpdGhvdXQgdXNpbmcgdGlueSwgdW5yZWFkYWJsZSBmb250cy4KKyAqIFlvdSBjYW4gcnVuIFhGezY4LDg2fV9GQkRldiBvciBYRnJlZTg2IGZiZGV2IGRyaXZlciBvbiB0b3Agb2YgL2Rldi9mYjAKKyAqIE1vc3QgaW1wb3J0YW50OiBib290IGxvZ28gOi0pCisKK0Rpc2FkdmFudGFnZXM6CisKKyAqIGdyYXBoaWMgbW9kZSBpcyBzbG93ZXIgdGhhbiB0ZXh0IG1vZGUuLi4gYnV0IHlvdSBzaG91bGQgbm90IG5vdGljZQorICAgaWYgeW91IHVzZSBzYW1lIHJlc29sdXRpb24gYXMgeW91IHVzZWQgaW4gdGV4dG1vZGUuCisKKworSG93IHRvIHVzZSBpdD8KKz09PT09PT09PT09PT09CisKK1N3aXRjaGluZyBtb2RlcyBpcyBkb25lIHVzaW5nIHRoZSB2aWRlbz1tYXRyb3hmYjp2ZXNhOi4uLiBib290IHBhcmFtZXRlcgorb3IgdXNpbmcgYGZic2V0JyBwcm9ncmFtLgorCitJZiB5b3Ugd2FudCwgZm9yIGV4YW1wbGUsIGVuYWJsZSBhIHJlc29sdXRpb24gb2YgMTI4MHgxMDI0eDI0YnBwIHlvdSBzaG91bGQKK3Bhc3MgdG8gdGhlIGtlcm5lbCB0aGlzIGNvbW1hbmQgbGluZTogInZpZGVvPW1hdHJveGZiOnZlc2E6MHgxQkIiLgorCitZb3Ugc2hvdWxkIGNvbXBpbGUgaW4gYm90aCB2Z2Fjb24gKHRvIGJvb3QgaWYgeW91IHJlbW92ZSB5b3UgTWF0cm94IGZyb20KK2JveCkgYW5kIG1hdHJveGZiIChmb3IgZ3JhcGhpY3MgbW9kZSkuIFlvdSBzaG91bGQgbm90IGNvbXBpbGUtaW4gdmVzYWZiCit1bmxlc3MgeW91IGhhdmUgcHJpbWFyeSBkaXNwbGF5IG9uIG5vbi1NYXRyb3ggVkJFMi4wIGRldmljZSAoc2VlIAorRG9jdW1lbnRhdGlvbi9mYi92ZXNhZmIudHh0IGZvciBkZXRhaWxzKS4KKworQ3VycmVudGx5IHN1cHBvcnRlZCB2aWRlbyBtb2RlcyBhcmUgKHRocm91Z2ggdmVzYTouLi4gaW50ZXJmYWNlLCBQb3dlck1hYworaGFzIFthcyBhZGRvbl0gY29tcGF0aWJpbGl0eSBjb2RlKToKKworCitbR3JhcGhpYyBtb2Rlc10KKworYnBwIHwgNjQweDQwMCAgNjQweDQ4MCAgNzY4eDU3NiAgODAweDYwMCAgOTYweDcyMAorLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICA0IHwgICAgICAgICAgICAweDEyICAgICAgICAgICAgIDB4MTAyICAgICAgICAgICAgCisgIDggfCAgMHgxMDAgICAgMHgxMDEgICAgMHgxODAgICAgMHgxMDMgICAgMHgxODggICAKKyAxNSB8ICAgICAgICAgICAweDExMCAgICAweDE4MSAgICAweDExMyAgICAweDE4OSAgIAorIDE2IHwgICAgICAgICAgIDB4MTExICAgIDB4MTgyICAgIDB4MTE0ICAgIDB4MThBICAgCisgMjQgfCAgICAgICAgICAgMHgxQjIgICAgMHgxODQgICAgMHgxQjUgICAgMHgxOEMgICAKKyAzMiB8ICAgICAgICAgICAweDExMiAgICAweDE4MyAgICAweDExNSAgICAweDE4QiAgIAorCisKK1tHcmFwaGljIG1vZGVzIChjb250aW51ZWQpXQorCiticHAgfCAxMDI0eDc2OCAxMTUyeDg2NCAxMjgweDEwMjQgMTQwOHgxMDU2IDE2MDB4MTIwMAorLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgNCB8ICAgMHgxMDQgICAgICAgICAgICAgMHgxMDYKKyAgOCB8ICAgMHgxMDUgICAgMHgxOTAgICAgMHgxMDcgICAgIDB4MTk4ICAgICAweDExQworIDE1IHwgICAweDExNiAgICAweDE5MSAgICAweDExOSAgICAgMHgxOTkgICAgIDB4MTFECisgMTYgfCAgIDB4MTE3ICAgIDB4MTkyICAgIDB4MTFBICAgICAweDE5QSAgICAgMHgxMUUKKyAyNCB8ICAgMHgxQjggICAgMHgxOTQgICAgMHgxQkIgICAgIDB4MTlDICAgICAweDFCRgorIDMyIHwgICAweDExOCAgICAweDE5MyAgICAweDExQiAgICAgMHgxOUIKKworCitbVGV4dCBtb2Rlc10KKwordGV4dCB8IDY0MHg0MDAgIDY0MHg0ODAgIDEwNTZ4MzQ0ICAxMDU2eDQwMCAgMTA1Nng0ODAKKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDh4OCB8ICAweDFDMCAgICAweDEwOCAgICAgMHgxMEEgICAgIDB4MTBCICAgICAweDEwQworOHgxNiB8IDIsIDMsIDcgICAgICAgICAgICAgICAgICAgICAgIDB4MTA5CisKK1lvdSBjYW4gZW50ZXIgdGhlc2UgbnVtYmVyIGVpdGhlciBoZXhhZGVjaW1hbCAobGVhZGluZyBgMHgnKSBvciBkZWNpbWFsCisoMHgxMDAgPSAyNTYpLiBZb3UgY2FuIGFsc28gdXNlIHZhbHVlICsgNTEyIHRvIGFjaGlldmUgY29tcGF0aWJpbGl0eQord2l0aCB5b3VyIG9sZCBudW1iZXIgcGFzc2VkIHRvIHZlc2FmYi4KKworTm9uLWxpc3RlZCBudW1iZXIgY2FuIGJlIGFjaGlldmVkIGJ5IG1vcmUgY29tcGxpY2F0ZWQgY29tbWFuZC1saW5lLCBmb3IKK2V4YW1wbGUgMTYwMHgxMjAweDMyYnBwIGNhbiBiZSBzcGVjaWZpZWQgYnkgYHZpZGVvPW1hdHJveGZiOnZlc2E6MHgxMUMsZGVwdGg6MzInLgorCisKK1gxMQorPT09CisKK1hGezY4LDg2fV9GQkRldiBzaG91bGQgd29yayBqdXN0IGZpbmUsIGJ1dCBpdCBpcyBub24tYWNjZWxlcmF0ZWQuIE9uIG5vbi1pbnRlbAorYXJjaGl0ZWN0dXJlcyB0aGVyZSBhcmUgc29tZSBnbGl0Y2hlcyBmb3IgMjRicHAgdmlkZW9tb2Rlcy4gOCwgMTYgYW5kIDMyYnBwCit3b3JrcyBmaW5lLgorCitSdW5uaW5nIGFub3RoZXIgKGFjY2VsZXJhdGVkKSBYLVNlcnZlciBsaWtlIFhGODZfU1ZHQSB3b3JrcyB0b28uIEJ1dCAoYXQgbGVhc3QpCitYRnJlZSBzZXJ2ZXJzIGhhdmUgYmlnIHRyb3VibGVzIGluIG11bHRpaGVhZCBjb25maWd1cmF0aW9ucyAoZXZlbiBvbiBmaXJzdAoraGVhZCwgbm90IGV2ZW4gdGFsa2luZyBhYm91dCBzZWNvbmQpLiBSdW5uaW5nIFhGcmVlODYgNC54IGFjY2VsZXJhdGVkIG1nYSAKK2RyaXZlciBpcyBwb3NzaWJsZSwgYnV0IHlvdSBtdXN0IG5vdCBlbmFibGUgRFJJIC0gaWYgeW91IGRvLCByZXNvbHV0aW9uIGFuZAorY29sb3IgZGVwdGggb2YgeW91ciBYIGRlc2t0b3AgbXVzdCBtYXRjaCByZXNvbHV0aW9uIGFuZCBjb2xvciBkZXB0aHMgb2YgeW91cgordmlydHVhbCBjb25zb2xlcywgb3RoZXJ3aXNlIFggd2lsbCBjb3JydXB0IGFjY2VsZXJhdG9yIHNldHRpbmdzLgorCisKK1NWR0FMaWIKKz09PT09PT0KKworRHJpdmVyIGNvbnRhaW5zIFNWR0FMaWIgY29tcGF0aWJpbGl0eSBjb2RlLiBJdCBpcyB0dXJuZWQgb24gYnkgY2hvb3NpbmcgdGV4dHVhbAorbW9kZSBmb3IgY29uc29sZS4gWW91IGNhbiBkbyBpdCBhdCBib290IHRpbWUgYnkgdXNpbmcgdmlkZW9tb2RlCisyLDMsNywweDEwOC0weDEwQyBvciAweDFDMC4gQXQgcnVudGltZSwgYGZic2V0IC1kZXB0aCAwJyBkb2VzIHRoaXMgd29yay4KK1VuZm9ydHVuYXRlbHksIGFmdGVyIFNWR0FMaWIgYXBwbGljYXRpb24gZXhpdHMsIHNjcmVlbiBjb250ZW50cyBpcyBjb3JydXB0ZWQuCitTd2l0Y2hpbmcgdG8gYW5vdGhlciBjb25zb2xlIGFuZCBiYWNrIGZpeGVzIGl0LiBJIGhvcGUgdGhhdCBpdCBpcyBTVkdBTGliJ3MKK3Byb2JsZW0gYW5kIG5vdCBtaW5lLCBidXQgSSdtIG5vdCBzdXJlLgorCisKK0NvbmZpZ3VyYXRpb24KKz09PT09PT09PT09PT0KKworWW91IGNhbiBwYXNzIGtlcm5lbCBjb21tYW5kIGxpbmUgb3B0aW9ucyB0byBtYXRyb3hmYiB3aXRoCitgdmlkZW89bWF0cm94ZmI6b3B0aW9uMSxvcHRpb24yOnZhbHVlMixvcHRpb24zJyAobXVsdGlwbGUgb3B0aW9ucyBzaG91bGQgYmUgCitzZXBhcmF0ZWQgYnkgY29tbWEsIHZhbHVlcyBhcmUgc2VwYXJhdGVkIGZyb20gb3B0aW9ucyBieSBgOicpLiAKK0FjY2VwdGVkIG9wdGlvbnM6CisKK21lbTpYICAgIC0gc2l6ZSBvZiBtZW1vcnkgKFggY2FuIGJlIGluIG1lZ2FieXRlcywga2lsb2J5dGVzIG9yIGJ5dGVzKQorICAgICAgICAgICBZb3UgY2FuIG9ubHkgZGVjcmVhc2UgdmFsdWUgZGV0ZXJtaW5lZCBieSBkcml2ZXIgYmVjYXVzZSBvZgorCSAgIGl0IGFsd2F5cyBwcm9iZSBmb3IgbWVtb3J5LiBEZWZhdWx0IGlzIHRvIHVzZSB3aG9sZSBkZXRlY3RlZAorCSAgIG1lbW9yeSB1c2FibGUgZm9yIG9uLXNjcmVlbiBkaXNwbGF5IChpLmUuIG1heC4gOCBNQikuCitkaXNhYmxlZCAtIGRvIG5vdCBsb2FkIGRyaXZlcjsgeW91IGNhbiB1c2UgYWxzbyBgb2ZmJywgYnV0IGBkaXNhYmxlZCcKKyAgICAgICAgICAgaXMgaGVyZSB0b28uCitlbmFibGVkICAtIGxvYWQgZHJpdmVyLCBpZiB5b3UgaGF2ZSBgdmlkZW89bWF0cm94ZmI6ZGlzYWJsZWQnIGluIExJTE8KKyAgICAgICAgICAgY29uZmlndXJhdGlvbiwgeW91IGNhbiBvdmVycmlkZSBpdCBieSB0aGlzICh5b3UgY2Fubm90IG92ZXJyaWRlCisJICAgYG9mZicpLiBJdCBpcyBkZWZhdWx0Lgorbm9hY2NlbCAgLSBkbyBub3QgdXNlIGFjY2VsZXJhdGlvbiBlbmdpbmUuIEl0IGRvZXMgbm90IHdvcmsgb24gQWxwaGFzLgorYWNjZWwgICAgLSB1c2UgYWNjZWxlcmF0aW9uIGVuZ2luZS4gSXQgaXMgZGVmYXVsdC4KK25vcGFuICAgIC0gY3JlYXRlIGluaXRpYWwgY29uc29sZXMgd2l0aCB2eXJlcyA9IHlyZXMsIHRodXMgZGlzYWJsaW5nIHZpcnR1YWwKKyAgICAgICAgICAgc2Nyb2xsaW5nLgorcGFuICAgICAgLSBjcmVhdGUgaW5pdGlhbCBjb25zb2xlcyBhcyB0YWxsIGFzIHBvc3NpYmxlICh2eXJlcyA9IG1lbW9yeS92eHJlcykuCisgICAgICAgICAgIEl0IGlzIGRlZmF1bHQuCitub3BjaXJldHJ5IC0gZGlzYWJsZSBQQ0kgcmV0cmllcy4gSXQgaXMgbmVlZGVkIGZvciBzb21lIGJyb2tlbiBjaGlwc2V0cywKKyAgICAgICAgICAgaXQgaXMgYXV0b2RldGVjdGVkIGZvciBpbnRlbCdzIDgyNDM3LiBJbiB0aGlzIGNhc2UgZGV2aWNlIGRvZXMKKwkgICBub3QgY29tcGx5IHRvIFBDSSAyLjEgc3BlY3MgKGl0IHdpbGwgbm90IGd1YXJhbnRlZSB0aGF0IGV2ZXJ5CisJICAgdHJhbnNhY3Rpb24gdGVybWluYXRlIHdpdGggc3VjY2VzcyBvciByZXRyeSBpbiAzMiBQQ0xLKS4KK3BjaXJldHJ5IC0gZW5hYmxlIFBDSSByZXRyaWVzLiBJdCBpcyBkZWZhdWx0LCBleGNlcHQgZm9yIGludGVsJ3MgODI0MzcuCitub3ZnYSAgICAtIGRpc2FibGVzIFZHQSBJL08gcG9ydHMuIEl0IGlzIGRlZmF1bHQgaWYgQklPUyBkaWQgbm90IGVuYWJsZSBkZXZpY2UuCisgICAgICAgICAgIFlvdSBzaG91bGQgbm90IHVzZSB0aGlzIG9wdGlvbiwgc29tZSBib2FyZHMgdGhlbiBkbyBub3QgcmVzdGFydAorCSAgIHdpdGhvdXQgcG93ZXIgb2ZmLgordmdhICAgICAgLSBwcmVzZXJ2ZSBzdGF0ZSBvZiBWR0EgSS9PIHBvcnRzLiBJdCBpcyBkZWZhdWx0LiBEcml2ZXIgZG9lcyBub3QKKyAgICAgICAgICAgZW5hYmxlIFZHQSBJL08gaWYgQklPUyBkaWQgbm90IGl0IChpdCBpcyBub3Qgc2FmZSB0byBlbmFibGUgaXQgaW4KKwkgICBtb3N0IGNhc2VzKS4KK25vYmlvcyAgIC0gZGlzYWJsZXMgQklPUyBST00uIEl0IGlzIGRlZmF1bHQgaWYgQklPUyBkaWQgbm90IGVuYWJsZSBCSU9TIGl0c2VsZi4KKyAgICAgICAgICAgWW91IHNob3VsZCBub3QgdXNlIHRoaXMgb3B0aW9uLCBzb21lIGJvYXJkcyB0aGVuIGRvIG5vdCByZXN0YXJ0CisJICAgd2l0aG91dCBwb3dlciBvZmYuCitiaW9zICAgICAtIHByZXNlcnZlIHN0YXRlIG9mIEJJT1MgUk9NLiBJdCBpcyBkZWZhdWx0LiBEcml2ZXIgZG9lcyBub3QgZW5hYmxlCisgICAgICAgICAgIEJJT1MgaWYgQklPUyB3YXMgbm90IGVuYWJsZWQgYmVmb3JlLgorbm9pbml0ICAgLSB0ZWxscyBkcml2ZXIsIHRoYXQgZGV2aWNlcyB3ZXJlIGFscmVhZHkgaW5pdGlhbGl6ZWQuIFlvdSBzaG91bGQgdXNlCisgICAgICAgICAgIGl0IGlmIHlvdSBoYXZlIEcxMDAgYW5kL29yIGlmIGRyaXZlciBjYW5ub3QgZGV0ZWN0IG1lbW9yeSwgeW91IHNlZQorCSAgIHN0cmFuZ2UgcGF0dGVybiBvbiBzY3JlZW4gYW5kIHNvIG9uLiBEZXZpY2VzIG5vdCBlbmFibGVkIGJ5IEJJT1MKKwkgICBhcmUgc3RpbGwgaW5pdGlhbGl6ZWQuIEl0IGlzIGRlZmF1bHQuCitpbml0ICAgICAtIGRyaXZlciBpbml0aWFsaXplcyBldmVyeSBkZXZpY2UgaXQga25vd3MgYWJvdXQuCittZW10eXBlICAtIHNwZWNpZmllcyBtZW1vcnkgdHlwZSwgaW1wbGllcyAnaW5pdCcuIFRoaXMgaXMgdmFsaWQgb25seSBmb3IgRzIwMCAKKyAgICAgICAgICAgYW5kIEc0MDAgYW5kIGhhcyBmb2xsb3dpbmcgbWVhbmluZzoKKyAgICAgICAgICAgICBHMjAwOiAwIC0+IDJ4MTI4S3gzMiBjaGlwcywgMk1CIG9uYm9hcmQsIHByb2JhYmx5IHNncmFtCisgICAgICAgICAgICAgICAgICAgMSAtPiAyeDEyOEt4MzIgY2hpcHMsIDRNQiBvbmJvYXJkLCBwcm9iYWJseSBzZ3JhbQorICAgICAgICAgICAgICAgICAgIDIgLT4gMngyNTZLeDMyIGNoaXBzLCA0TUIgb25ib2FyZCwgcHJvYmFibHkgc2dyYW0KKyAgICAgICAgICAgICAgICAgICAzIC0+IDJ4MjU2S3gzMiBjaGlwcywgOE1CIG9uYm9hcmQsIHByb2JhYmx5IHNncmFtCisgICAgICAgICAgICAgICAgICAgNCAtPiAyeDUxMkt4MTYgY2hpcHMsIDgvMTZNQiBvbmJvYXJkLCBwcm9iYWJseSBzZHJhbSBvbmx5CisgICAgICAgICAgICAgICAgICAgNSAtPiBzYW1lIGFzIGFib3ZlCisgICAgICAgICAgICAgICAgICAgNiAtPiA0eDEyOEt4MzIgY2hpcHMsIDRNQiBvbmJvYXJkLCBwcm9iYWJseSBzZ3JhbQorICAgICAgICAgICAgICAgICAgIDcgLT4gNHgxMjhLeDMyIGNoaXBzLCA4TUIgb25ib2FyZCwgcHJvYmFibHkgc2dyYW0KKyAgICAgICAgICAgICBHNDAwOiAwIC0+IDJ4NTEyS3gxNiBTRFJBTSwgMTYvMzJNQgorICAgICAgICAgICAgICAgICAgICAgICAgMng1MTJLeDMyIFNHUkFNLCAxNi8zMk1CCisgICAgICAgICAgICAgICAgICAgMSAtPiAyeDI1Nkt4MzIgU0dSQU0sIDgvMTZNQgorICAgICAgICAgICAgICAgICAgIDIgLT4gNHgxMjhLeDMyIFNHUkFNLCA4LzE2TUIKKyAgICAgICAgICAgICAgICAgICAzIC0+IDR4NTEyS3gzMiBTRFJBTSwgMzJNQgorICAgICAgICAgICAgICAgICAgIDQgLT4gNHgyNTZLeDMyIFNHUkFNLCAxNi8zMk1CCisgICAgICAgICAgICAgICAgICAgNSAtPiAyeDFNeDMyIFNEUkFNLCAzMk1CCisgICAgICAgICAgICAgICAgICAgNiAtPiByZXNlcnZlZAorICAgICAgICAgICAgICAgICAgIDcgLT4gcmVzZXJ2ZWQKKyAgICAgICAgICAgWW91IHNob3VsZCB1c2Ugc2RyYW0gb3Igc2dyYW0gcGFyYW1ldGVyIGluIGFkZGl0aW9uIHRvIG1lbXR5cGUgCisgICAgICAgICAgIHBhcmFtZXRlci4KK25vbXRyciAgIC0gZGlzYWJsZXMgd3JpdGUgY29tYmluaW5nIG9uIGZyYW1lIGJ1ZmZlci4gVGhpcyBzbG93cyBkb3duIGRyaXZlciBidXQKKyAgICAgICAgICAgdGhlcmUgaXMgcmVwb3J0ZWQgbWlub3IgaW5jb21wYXRpYmlsaXR5IGJldHdlZW4gR1VTIERNQSBhbmQgWEZyZWUKKwkgICB1bmRlciBoaWdoIGxvYWRzIGlmIHdyaXRlIGNvbWJpbmluZyBpcyBlbmFibGVkIChzb3VuZCBkcm9wb3V0cykuCittdHJyICAgICAtIGVuYWJsZXMgd3JpdGUgY29tYmluaW5nIG9uIGZyYW1lIGJ1ZmZlci4gSXQgc3BlZWRzIHVwIHZpZGVvIGFjY2Vzc2VzCisgICAgICAgICAgIG11Y2guIEl0IGlzIGRlZmF1bHQuIFlvdSBtdXN0IGhhdmUgTVRSUiBzdXBwb3J0IGVuYWJsZWQgaW4ga2VybmVsCisJICAgYW5kIHlvdXIgQ1BVIG11c3QgaGF2ZSBNVFJSIChmLmUuIFBlbnRpdW0gSUkgaGF2ZSB0aGVtKS4KK3NncmFtICAgIC0gdGVsbHMgdG8gZHJpdmVyIHRoYXQgeW91IGhhdmUgR3h4MCB3aXRoIFNHUkFNIG1lbW9yeS4gSXQgaGFzIG5vCisgICAgICAgICAgIGVmZmVjdCB3aXRob3V0IGBpbml0Jy4KK3NkcmFtICAgIC0gdGVsbHMgdG8gZHJpdmVyIHRoYXQgeW91IGhhdmUgR3h4MCB3aXRoIFNEUkFNIG1lbW9yeS4KKyAgICAgICAgICAgSXQgaXMgYSBkZWZhdWx0LgoraW52MjQgICAgLSBjaGFuZ2UgdGltaW5ncyBwYXJhbWV0ZXJzIGZvciAyNGJwcCBtb2RlcyBvbiBNaWxsZW5pdW0gYW5kCisgICAgICAgICAgIE1pbGxlbml1bSBJSS4gU3BlY2lmeSB0aGlzIGlmIHlvdSBzZWUgc3RyYW5nZSBjb2xvciBzaGFkb3dzIGFyb3VuZAorCSAgIGNoYXJhY3RlcnMuCitub2ludjI0ICAtIHVzZSBzdGFuZGFyZCB0aW1pbmdzLiBJdCBpcyB0aGUgZGVmYXVsdC4KK2ludmVyc2UgIC0gaW52ZXJ0IGNvbG9ycyBvbiBzY3JlZW4gKGZvciBMQ0QgZGlzcGxheXMpCitub2ludmVyc2UgLSBzaG93IHRydWUgY29sb3JzIG9uIHNjcmVlbi4gSXQgaXMgZGVmYXVsdC4KK2RldjpYICAgIC0gYmluZCBkcml2ZXIgdG8gZGV2aWNlIFguIERyaXZlciBudW1iZXJzIGRldmljZSBmcm9tIDAgdXAgdG8gTiwKKyAgICAgICAgICAgd2hlcmUgZGV2aWNlIDAgaXMgZmlyc3QgYGtub3duJyBkZXZpY2UgZm91bmQsIDEgc2Vjb25kIGFuZCBzbyBvbi4KKwkgICBsc3BjaSBsaXN0cyBkZXZpY2VzIGluIHRoaXMgb3JkZXIuCisJICAgRGVmYXVsdCBpcyBgZXZlcnknIGtub3duIGRldmljZSBmb3IgZHJpdmVyIHdpdGggbXVsdGloZWFkIHN1cHBvcnQKKwkgICBhbmQgZmlyc3Qgd29ya2luZyBkZXZpY2UgKHVzdWFsbHkgZGV2OjApIGZvciBkcml2ZXIgd2l0aG91dAorCSAgIG11bHRpaGVhZCBzdXBwb3J0Lgorbm9od2N1cnNvciAtIGRpc2FibGVzIGhhcmR3YXJlIGN1cnNvciAodXNlIHNvZnR3YXJlIGN1cnNvciBpbnN0ZWFkKS4KK2h3Y3Vyc29yIC0gZW5hYmxlcyBoYXJkd2FyZSBjdXJzb3IuIEl0IGlzIGRlZmF1bHQuIElmIHlvdSBhcmUgdXNpbmcKKyAgICAgICAgICAgbm9uLWFjY2VsZXJhdGVkIG1vZGUgKGBub2FjY2VsJyBvciBgZmJzZXQgLWFjY2VsIGZhbHNlJyksIHNvZnR3YXJlCisJICAgY3Vyc29yIGlzIHVzZWQgKGV4Y2VwdCBmb3IgdGV4dCBtb2RlKS4KK25vYmxpbmsgIC0gZGlzYWJsZXMgY3Vyc29yIGJsaW5raW5nLiBDdXJzb3IgaW4gdGV4dCBtb2RlIGFsd2F5cyBibGlua3MgKGh3CisgICAgICAgICAgIGxpbWl0YXRpb24pLgorYmxpbmsgICAgLSBlbmFibGVzIGN1cnNvciBibGlua2luZy4gSXQgaXMgZGVmYXVsdC4KK25vZmFzdGZvbnQgLSBkaXNhYmxlcyBmYXN0Zm9udCBmZWF0dXJlLiBJdCBpcyBkZWZhdWx0LgorZmFzdGZvbnQ6WCAtIGVuYWJsZXMgZmFzdGZvbnQgZmVhdHVyZS4gWCBzcGVjaWZpZXMgc2l6ZSBvZiBtZW1vcnkgcmVzZXJ2ZWQgZm9yCisgICAgICAgICAgICAgZm9udCBkYXRhLCBpdCBtdXN0IGJlID49IChmb250d2lkdGgqZm9udGhlaWdodCpjaGFyc19pbl9mb250KS84LgorCSAgICAgSXQgaXMgZmFzdGVyIG9uIEd4MDAgc2VyaWVzLCBidXQgc2xvd2VyIG9uIG9sZGVyIGNhcmRzLgorZ3JheXNjYWxlIC0gZW5hYmxlIGdyYXlzY2FsZSBzdW1taW5nLiBJdCB3b3JrcyBpbiBQU0VVRE9DT0xPUiBtb2RlcyAodGV4dCwKKyAgICAgICAgICAgIDRicHAsIDhicHApLiBJbiBESVJFQ1RDT0xPUiBtb2RlcyBpdCBpcyBsaW1pdGVkIHRvIGNoYXJhY3RlcnMKKwkgICAgZGlzcGxheWVkIHRocm91Z2ggcHV0Yy9wdXRjcy4gRGlyZWN0IGFjY2Vzc2VzIHRvIGZyYW1lYnVmZmVyCisJICAgIGNhbiBwYWludCBjb2xvcnMuCitub2dyYXlzY2FsZSAtIGRpc2FibGUgZ3JheXNjYWxlIHN1bW1pbmcuIEl0IGlzIGRlZmF1bHQuCitjcm9zczRNQiAtIGVuYWJsZXMgdGhhdCBwaXhlbCBsaW5lIGNhbiBjcm9zcyA0TUIgYm91bmRhcnkuIEl0IGlzIGRlZmF1bHQgZm9yCisgICAgICAgICAgIG5vbi1NaWxsZW5pdW0uCitub2Nyb3NzNE1CIC0gcGl4ZWwgbGluZSBtdXN0IG5vdCBjcm9zcyA0TUIgYm91bmRhcnkuIEl0IGlzIGRlZmF1bHQgZm9yCisgICAgICAgICAgICAgTWlsbGVuaXVtIEkgb3IgSUksIGJlY2F1c2Ugb2YgdGhlc2UgZGV2aWNlcyBoYXZlIGhhcmR3YXJlCisJICAgICBsaW1pdGF0aW9ucyB3aGljaCBkbyBub3QgYWxsb3cgdGhpcy4gQnV0IHRoaXMgb3B0aW9uIGlzCisJICAgICBpbmNvbXBhdGlibGUgd2l0aCBzb21lIChpZiBub3QgYWxsIHlldCByZWxlYXNlZCkgdmVyc2lvbnMgb2YKKwkgICAgIFhGODZfRkJEZXYuCitkZnAgICAgICAtIGVuYWJsZXMgZGlnaXRhbCBmbGF0IHBhbmVsIGludGVyZmFjZS4gVGhpcyBvcHRpb24gaXMgaW5jb21wYXRpYmxlIHdpdGgKKyAgICAgICAgICAgc2Vjb25kYXJ5IChUVikgb3V0cHV0IC0gaWYgREZQIGlzIGFjdGl2ZSwgVFYgb3V0cHV0IG11c3QgYmUKKwkgICBpbmFjdGl2ZSBhbmQgdmljZSB2ZXJzYS4gREZQIGFsd2F5cyB1c2VzIHNhbWUgdGltaW5nIGFzIHByaW1hcnkKKwkgICAobW9uaXRvcikgb3V0cHV0LgorZGZwOlggICAgLSB1c2Ugc2V0dGluZ3MgWCBmb3IgZGlnaXRhbCBmbGF0IHBhbmVsIGludGVyZmFjZS4gWCBpcyBudW1iZXIgZnJvbQorICAgICAgICAgICAwIHRvIDB4RkYsIGFuZCBtZWFuaW5nIG9mIGVhY2ggaW5kaXZpZHVhbCBiaXQgaXMgZGVzY3JpYmVkIGluCisJICAgRzQwMCBtYW51YWwsIGluIGRlc2NyaXB0aW9uIG9mIERBQyByZWdpc3RlciAweDFGLiBGb3Igbm9ybWFsIG9wZXJhdGlvbgorCSAgIHlvdSBzaG91bGQgc2V0IGFsbCBiaXRzIHRvIHplcm8sIGV4Y2VwdCBsb3dlc3QgYml0LiBUaGlzIGxvd2VzdCBiaXQKKwkgICBzZWxlY3RzIHdobyBpcyBzb3VyY2Ugb2YgZGlzcGxheSBjbG9ja3MsIHdoZXRoZXIgRzQwMCwgb3IgcGFuZWwuCisJICAgRGVmYXVsdCB2YWx1ZSBpcyBub3cgcmVhZCBiYWNrIGZyb20gaGFyZHdhcmUgLSBzbyB5b3Ugc2hvdWxkIHNwZWNpZnkKKwkgICB0aGlzIHZhbHVlIG9ubHkgaWYgeW91IGFyZSBhbHNvIHVzaW5nIGBpbml0JyBwYXJhbWV0ZXIuCitvdXRwdXRzOlhZWiAtIHNldCBtYXBwaW5nIGJldHdlZW4gQ1JUQyBhbmQgb3V0cHV0cy4gRWFjaCBsZXR0ZXIgY2FuIGhhdmUgdmFsdWUKKyAgICAgICAgICAgb2YgMCAoZm9yIG5vIENSVEMpLCAxIChDUlRDMSkgb3IgMiAoQ1JUQzIpLCBhbmQgZmlyc3QgbGV0dGVyIGNvcnJlc3BvbmRzCisJICAgdG8gcHJpbWFyeSBhbmFsb2cgb3V0cHV0LCBzZWNvbmQgbGV0dGVyIHRvIHRoZSBzZWNvbmRhcnkgYW5hbG9nIG91dHB1dAorCSAgIGFuZCB0aGlyZCBsZXR0ZXIgdG8gdGhlIERWSSBvdXRwdXQuIERlZmF1bHQgc2V0dGluZyBpcyAxMDAgZm9yCisJICAgY2FyZHMgYmVsb3cgRzQwMCBvciBHNDAwIHdpdGhvdXQgREZQLCAxMDEgZm9yIEc0MDAgd2l0aCBERlAsIGFuZAorCSAgIDExMSBmb3IgRzQ1MCBhbmQgRzU1MC4gWW91IGNhbiBzZXQgbWFwcGluZyBvbmx5IG9uIGZpcnN0IGNhcmQsCisJICAgdXNlIG1hdHJveHNldCBmb3Igc2V0dGluZyB1cCBvdGhlciBkZXZpY2VzLgordmVzYTpYICAgLSBzZWxlY3RzIHN0YXJ0dXAgdmlkZW9tb2RlLiBYIGlzIG51bWJlciBmcm9tIDAgdG8gMHgxRkYsIHNlZSB0YWJsZQorICAgICAgICAgICBhYm92ZSBmb3IgZGV0YWlsZWQgZXhwbGFuYXRpb24uIERlZmF1bHQgaXMgNjQweDQ4MHg4YnBwIGlmIGRyaXZlcgorCSAgIGhhcyA4YnBwIHN1cHBvcnQuIE90aGVyd2lzZSBmaXJzdCBhdmFpbGFibGUgb2YgNjQweDM1MHg0YnBwLAorCSAgIDY0MHg0ODB4MTVicHAsIDY0MHg0ODB4MjRicHAsIDY0MHg0ODB4MzJicHAgb3IgODB4MjUgdGV4dAorCSAgICg4MHgyNSB0ZXh0IGlzIGFsd2F5cyBhdmFpbGFibGUpLgorCitJZiB5b3UgYXJlIG5vdCBzYXRpc2ZpZWQgd2l0aCB2aWRlb21vZGUgc2VsZWN0ZWQgYnkgYHZlc2EnIG9wdGlvbiwgeW91CitjYW4gbW9kaWZ5IGl0IHdpdGggdGhlc2Ugb3B0aW9uczoKKworeHJlczpYICAgLSBob3Jpem9udGFsIHJlc29sdXRpb24sIGluIHBpeGVscy4gRGVmYXVsdCBpcyBkZXJpdmVkIGZyb20gYHZlc2EnCisgICAgICAgICAgIG9wdGlvbi4KK3lyZXM6WCAgIC0gdmVydGljYWwgcmVzb2x1dGlvbiwgaW4gcGl4ZWwgbGluZXMuIERlZmF1bHQgaXMgZGVyaXZlZCBmcm9tIGB2ZXNhJworICAgICAgICAgICBvcHRpb24uCit1cHBlcjpYICAtIHRvcCBib3VuZGFyeTogbGluZXMgYmV0d2VlbiBlbmQgb2YgVlNZTkMgcHVsc2UgYW5kIHN0YXJ0IG9mIGZpcnN0CisgICAgICAgICAgIHBpeGVsIGxpbmUgb2YgcGljdHVyZS4gRGVmYXVsdCBpcyBkZXJpdmVkIGZyb20gYHZlc2EnIG9wdGlvbi4KK2xvd2VyOlggIC0gYm90dG9tIGJvdW5kYXJ5OiBsaW5lcyBiZXR3ZWVuIGVuZCBvZiBwaWN0dXJlIGFuZCBzdGFydCBvZiBWU1lOQworICAgICAgICAgICBwdWxzZS4gRGVmYXVsdCBpcyBkZXJpdmVkIGZyb20gYHZlc2EnIG9wdGlvbi4KK3ZzbGVuOlggIC0gbGVuZ3RoIG9mIFZTWU5DIHB1bHNlLCBpbiBsaW5lcy4gRGVmYXVsdCBpcyBkZXJpdmVkIGZyb20gYHZlc2EnCisgICAgICAgICAgIG9wdGlvbi4KK2xlZnQ6WCAgIC0gbGVmdCBib3VuZGFyeTogcGl4ZWxzIGJldHdlZW4gZW5kIG9mIEhTWU5DIHB1bHNlIGFuZCBmaXJzdCBwaXhlbC4KKyAgICAgICAgICAgRGVmYXVsdCBpcyBkZXJpdmVkIGZyb20gYHZlc2EnIG9wdGlvbi4KK3JpZ2h0OlggIC0gcmlnaHQgYm91bmRhcnk6IHBpeGVscyBiZXR3ZWVuIGVuZCBvZiBwaWN0dXJlIGFuZCBzdGFydCBvZiBIU1lOQworICAgICAgICAgICBwdWxzZS4gRGVmYXVsdCBpcyBkZXJpdmVkIGZyb20gYHZlc2EnIG9wdGlvbi4KK2hzbGVuOlggIC0gbGVuZ3RoIG9mIEhTWU5DIHB1bHNlLCBpbiBwaXhlbHMuIERlZmF1bHQgaXMgZGVyaXZlZCBmcm9tIGB2ZXNhJworICAgICAgICAgICBvcHRpb24uCitwaXhjbG9jazpYIC0gZG90Y2xvY2tzLCBpbiBwcyAocGljb3NlY29uZHMpLiBEZWZhdWx0IGlzIGRlcml2ZWQgZnJvbSBgdmVzYScKKyAgICAgICAgICAgICBvcHRpb24gYW5kIGZyb20gYGZoJyBhbmQgYGZ2JyBvcHRpb25zLgorc3luYzpYICAgLSBzeW5jLiBwdWxzZSAtIGJpdCAwIGludmVydHMgSFNZTkMgcG9sYXJpdHksIGJpdCAxIFZTWU5DIHBvbGFyaXR5LgorICAgICAgICAgICBJZiBiaXQgMyAodmFsdWUgMHgwOCkgaXMgc2V0LCBjb21wb3NpdGUgc3luYyBpbnN0ZWFkIG9mIEhTWU5DIGlzCisJICAgZ2VuZXJhdGVkLiBJZiBiaXQgNSAodmFsdWUgMHgyMCkgaXMgc2V0LCBzeW5jIG9uIGdyZWVuIGlzIHR1cm5lZCBvbi4KKwkgICBEbyBub3QgZm9yZ2V0IHRoYXQgaWYgeW91IHdhbnQgc3luYyBvbiBncmVlbiwgeW91IGFsc28gcHJvYmFibHkKKwkgICB3YW50IGNvbXBvc2l0ZSBzeW5jLgorCSAgIERlZmF1bHQgZGVwZW5kcyBvbiBgdmVzYScuCitkZXB0aDpYICAtIEJpdHMgcGVyIHBpeGVsOiAwPXRleHQsIDQsOCwxNSwxNiwyNCBvciAzMi4gRGVmYXVsdCBkZXBlbmRzIG9uCisgICAgICAgICAgIGB2ZXNhJy4KKworSWYgeW91IGtub3cgY2FwYWJpbGl0aWVzIG9mIHlvdXIgbW9uaXRvciwgeW91IGNhbiBzcGVjaWZ5IHNvbWUgKG9yIGFsbCkgb2YKK2BtYXhjbGsnLCBgZmgnIGFuZCBgZnYnLiBJbiB0aGlzIGNhc2UsIGBwaXhjbG9jaycgaXMgY29tcHV0ZWQgc28gdGhhdAorcGl4Y2xvY2sgPD0gbWF4Y2xrLCByZWFsX2ZoIDw9IGZoIGFuZCByZWFsX2Z2IDw9IGZ2LgorCittYXhjbGs6WCAtIG1heGltdW0gZG90Y2xvY2suIFggY2FuIGJlIHNwZWNpZmllZCBpbiBNSHosIGtIeiBvciBIei4gRGVmYXVsdCBpcworICAgICAgICAgICBgZG9uJ3QgY2FyZScuCitmaDpYICAgICAtIG1heGltdW0gaG9yaXpvbnRhbCBzeW5jaHJvbml6YXRpb24gZnJlcXVlbmN5LiBYIGNhbiBiZSBzcGVjaWZpZWQKKyAgICAgICAgICAgaW4ga0h6IG9yIEh6LiBEZWZhdWx0IGlzIGBkb24ndCBjYXJlJy4KK2Z2OlggICAgIC0gbWF4aW11bSB2ZXJ0aWNhbCBmcmVxdWVuY3kuIFggbXVzdCBiZSBzcGVjaWZpZWQgaW4gSHouIERlZmF1bHQgaXMKKyAgICAgICAgICAgNzAgZm9yIG1vZGVzIGRlcml2ZWQgZnJvbSBgdmVzYScgd2l0aCB5cmVzIDw9IDQwMCwgNjBIeiBmb3IKKwkgICB5cmVzID4gNDAwLgorCisKK0xpbWl0YXRpb25zCis9PT09PT09PT09PQorCitUaGVyZSBhcmUga25vd24gYW5kIHVua25vd24gYnVncywgZmVhdHVyZXMgYW5kIG1pc2ZlYXR1cmVzLgorQ3VycmVudGx5IHRoZXJlIGFyZSBmb2xsb3dpbmcga25vd24gYnVnczoKKyArIFNWR0FMaWIgZG9lcyBub3QgcmVzdG9yZSBzY3JlZW4gb24gZXhpdAorICsgZ2VuZXJpYyBmYmNvbi1jZmJYIHByb2NlZHVyZXMgZG8gbm90IHdvcmsgb24gQWxwaGFzLiBEdWUgdG8gdGhpcywKKyAgIGBub2FjY2VsJyAoYW5kIGNmYjQgYWNjZWwpIGRyaXZlciBkb2VzIG5vdCB3b3JrIG9uIEFscGhhLiBTbyBldmVyeW9uZQorICAgd2l0aCBhY2Nlc3MgdG8gL2Rldi9mYiogb24gQWxwaGEgY2FuIGhhbmcgbWFjaGluZSAoeW91IHNob3VsZCByZXN0cmljdAorICAgYWNjZXNzIHRvIC9kZXYvZmIqIC0gZXZlcnlvbmUgd2l0aCBhY2Nlc3MgdG8gdGhpcyBkZXZpY2UgY2FuIGRlc3Ryb3kKKyAgIHlvdXIgbW9uaXRvciwgYmVsaWV2ZSBtZS4uLikuCisgKyAyNGJwcCBkb2VzIG5vdCBzdXBwb3J0IGNvcnJlY3RseSBYRi1GQkRldiBvbiBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMuCisgKyBpbnRlcmxhY2VkIHRleHQgbW9kZSBpcyBub3Qgc3VwcG9ydGVkOyBpdCBsb29rcyBsaWtlIGhhcmR3YXJlIGxpbWl0YXRpb24sCisgICBidXQgSSdtIG5vdCBzdXJlLgorICsgR3h4MCBTR1JBTS9TRFJBTSBpcyBub3QgYXV0b2RldGVjdGVkLgorICsgSWYgeW91IGFyZSB1c2luZyBtb3JlIHRoYW4gb25lIGZyYW1lYnVmZmVyIGRldmljZSwgeW91IG11c3QgYm9vdCBrZXJuZWwKKyAgIHdpdGggJ3ZpZGVvPXNjcm9sbGJhY2s6MCcuCisgKyBtYXliZSBtb3JlLi4uCitBbmQgZm9sbG93aW5nIG1pc2ZlYXR1cmVzOgorICsgU1ZHQUxpYiBkb2VzIG5vdCByZXN0b3JlIHNjcmVlbiBvbiBleGl0LgorICsgcGl4Y2xvY2sgZm9yIHRleHQgbW9kZXMgaXMgbGltaXRlZCBieSBoYXJkd2FyZSB0bworICAgIDgzIE1IeiBvbiBHMjAwCisgICAgNjYgTUh6IG9uIE1pbGxlbm5pdW0gSQorICAgIDYwIE1IeiBvbiBNaWxsZW5uaXVtIElJCisgICBCZWNhdXNlIEkgaGF2ZSBubyBhY2Nlc3MgdG8gb3RoZXIgZGV2aWNlcywgSSBkbyBub3Qga25vdyBzcGVjaWZpYworICAgZnJlcXVlbmNpZXMgZm9yIHRoZW0uIFNvIGRyaXZlciBkb2VzIG5vdCBjaGVjayB0aGlzIGFuZCBhbGxvd3MgeW91IHRvCisgICBzZXQgZnJlcXVlbmN5IGhpZ2hlciB0aGF0IHRoaXMuIEl0IGNhdXNlcyBzcGFya3MsIGJsYWNrIGhvbGVzIGFuZCBvdGhlcgorICAgcHJldHR5IGVmZmVjdHMgb24gc2NyZWVuLiBEZXZpY2Ugd2FzIG5vdCBkZXN0cm95ZWQgZHVyaW5nIHRlc3RzLiA6LSkKKyArIG15IE1pbGxlbm5pdW0gRzIwMCBvc2NpbGxhdG9yIGhhcyBmcmVxdWVuY3kgcmFuZ2UgZnJvbSAzNSBNSHogdG8gMzgwIE1IegorICAgKGFuZCBpdCB3b3JrcyB3aXRoIDhicHAgb24gYWJvdXQgMzIwIE1IeiBkb3RjbG9ja3MgKGFuZCBjaGFuZ2VkIG1jbGspKS4KKyAgIEJ1dCBNYXRyb3ggc2F5cyBvbiBwcm9kdWN0IHNoZWV0IHRoYXQgVkNPIGxpbWl0IGlzIDUwLTI1MCBNSHosIHNvIEkgYmVsaWV2ZQorICAgdGhlbSAobWF5YmUgdGhhdCBjaGlwIG92ZXJoZWF0cywgYnV0IGl0IGhhcyBhIHZlcnkgYmlnIGNvb2xlciAoRzEwMCBoYXMKKyAgIG5vbmUpLCBzbyBpdCBzaG91bGQgd29yaykuCisgKyBzcGVjaWFsIG1peGVkIHZpZGVvL2dyYXBoaWNzIHZpZGVvbW9kZXMgb2YgTXlzdGlxdWUgYW5kIEd4MDAgLSAyRzhWMTYgYW5kCisgICBHMTZWMTYgYXJlIG5vdCBzdXBwb3J0ZWQKKyArIGNvbG9yIGtleWluZyBpcyBub3Qgc3VwcG9ydGVkCisgKyBmZWF0dXJlIGNvbm5lY3RvciBvZiBNeXN0aXF1ZSBhbmQgR3gwMCBpcyBzZXQgdG8gVkdBIG1vZGUgKGl0IGlzIGRpc2FibGVkCisgICBieSBCSU9TKQorICsgRERDIChtb25pdG9yIGRldGVjdGlvbikgaXMgc3VwcG9ydGVkIHRocm91Z2ggZHVhbGhlYWQgZHJpdmVyCisgKyBzb21lIGNoZWNrIGZvciBpbnB1dCB2YWx1ZXMgYXJlIG5vdCBzbyBzdHJpY3QgaG93IGl0IHNob3VsZCBiZSAoeW91IGNhbgorICAgc3BlY2lmeSB2c2xlbj00MDAwIGFuZCBzbyBvbikuCisgKyBtYXliZSBtb3JlLi4uCitBbmQgZm9sbG93aW5nIGZlYXR1cmVzOgorICsgNGJwcCBpcyBhdmFpbGFibGUgb25seSBvbiBNaWxsZW5uaXVtIEkgYW5kIE1pbGxlbm5pdW0gSUkuIEl0IGlzIGhhcmR3YXJlCisgICBsaW1pdGF0aW9uLgorICsgc2VsZWN0aW9uIGJldHdlZW4gMTo1OjU6NSBhbmQgNTo2OjUgMTZicHAgdmlkZW9tb2RlIGlzIGRvbmUgYnkgLXJnYmEgCisgICBvcHRpb24gb2YgZmJzZXQ6ICJmYnNldCAtZGVwdGggMTYgLXJnYmEgNSw1LDUiIHNlbGVjdHMgMTo1OjU6NSwgYW55dGhpbmcKKyAgIGVsc2Ugc2VsZWN0cyA1OjY6NSBtb2RlLgorICsgdGV4dCBtb2RlIHVzZXMgNiBiaXQgVkdBIHBhbGV0dGUgaW5zdGVhZCBvZiA4IGJpdCAob25lIG9mIDI2MjE0NCBjb2xvcnMKKyAgIGluc3RlYWQgb2Ygb25lIG9mIDE2TSBjb2xvcnMpLiBJdCBpcyBkdWUgdG8gaGFyZHdhcmUgbGltaXRhdGlvbiBvZiAKKyAgIE1pbGxlbm5pdW0gSS9JSSBhbmQgU1ZHQUxpYiBjb21wYXRpYmlsaXR5LgorCisKK0JlbmNobWFya3MKKz09PT09PT09PT0KK0l0IGlzIHRpbWUgdG8gcmVkcmF3IHdob2xlIHNjcmVlbiAxMDAwIHRpbWVzIGluIDEwMjR4NzY4LCA2MEh6LiBJdCBpcwordGltZSBmb3IgZHJhdyA2MTQ0MDAwIGNoYXJhY3RlcnMgb24gc2NyZWVuIHRocm91Z2ggL2Rldi92Y3NhCisoZm9yIDMyYnBwIGl0IGlzIGFib3V0IDNHQiBvZiBkYXRhIChleGFjdGx5IDMwMDAgTUIpOyBmb3IgOHgxNiBmb250IGluIAorMTYgc2Vjb25kcywgaS5lLiAxODcgTUJwcykuCitUaW1lcyB3ZXJlIG9idGFpbmVkIGZyb20gb25lIG9sZGVyIHZlcnNpb24gb2YgZHJpdmVyLCBub3cgdGhleSBhcmUgYWJvdXQgMyUKK2Zhc3RlciwgaXQgaXMga2VybmVsLXNwYWNlIG9ubHkgdGltZSBvbiBQLUlJLzM1MCBNSHosIE1pbGxlbm5pdW0gSSBpbiAzMyBNSHoKK1BDSSBzbG90LCBHMjAwIGluIEFHUCAyeCBzbG90LiBJIGRpZCBub3QgdGVzdCB2Z2Fjb24uCisKK05PQUNDRUwKKyAgICAgICAgOHgxNiAgICAgICAgICAgICAgICAgMTJ4MjIKKyAgICAgICAgTWlsbGVubml1bSBJICBHMjAwICAgTWlsbGVubml1bSBJICBHMjAwCis4YnBwICAgIDE2LjQyICAgICAgICAgOS41NCAgIDEyLjMzICAgICAgICAgOS4xMworMTZicHAgICAyMS4wMCAgICAgICAgMTUuNzAgICAxOS4xMSAgICAgICAgMTUuMDIKKzI0YnBwICAgMzYuNjYgICAgICAgIDM2LjY2ICAgMzUuMDAgICAgICAgIDM1LjAwCiszMmJwcCAgIDM1LjAwICAgICAgICAzMC4wMCAgIDMzLjg1ICAgICAgICAyOC42NgorCitBQ0NFTCwgbm9mYXN0Zm9udAorICAgICAgICA4eDE2ICAgICAgICAgICAgICAgICAxMngyMiAgICAgICAgICAgICAgICA2eDExCisJTWlsbGVubml1bSBJICBHMjAwICAgTWlsbGVubml1bSBJICBHMjAwICAgTWlsbGVubml1bSBJICBHMjAwCis4YnBwICAgICA3Ljc5ICAgICAgICAgNy4yNCAgIDEzLjU1ICAgICAgICAgNy43OCAgIDMwLjAwICAgICAgICAyMS4wMQorMTZicHAgICAgOS4xMyAgICAgICAgIDcuNzggICAxNi4xNiAgICAgICAgIDcuNzggICAzMC4wMCAgICAgICAgMjEuMDEKKzI0YnBwICAgMTQuMTcgICAgICAgIDEwLjcyICAgMTguNjkgICAgICAgIDEwLjI0ICAgMzQuOTkgICAgICAgIDIxLjAxCiszMmJwcCAgIDE2LjE1CSAgICAgMTYuMTYgICAxOC43MyAgICAgICAgMTMuMDkgICAzNC45OSAgICAgICAgMjEuMDEKKworQUNDRUwsIGZhc3Rmb250CisgICAgICAgIDh4MTYgICAgICAgICAgICAgICAgIDEyeDIyICAgICAgICAgICAgICAgIDZ4MTEKKwlNaWxsZW5uaXVtIEkgIEcyMDAgICBNaWxsZW5uaXVtIEkgIEcyMDAgICBNaWxsZW5uaXVtIEkgIEcyMDAKKzhicHAgICAgIDguNDEgICAgICAgICA2LjAxICAgIDYuNTQgICAgICAgICA0LjM3ICAgMTYuMDAgICAgICAgIDEwLjUxCisxNmJwcCAgICA5LjU0ICAgICAgICAgOS4xMiAgICA4Ljc2ICAgICAgICAgNi4xNyAgIDE3LjUyICAgICAgICAxNC4wMQorMjRicHAgICAxNS4wMCAgICAgICAgMTIuMzYgICAxMS42NyAgICAgICAgMTAuMDAgICAyMi4wMSAgICAgICAgMTguMzIKKzMyYnBwICAgMTYuMTggICAgICAgIDE4LjI5KiAgMTIuNzEgICAgICAgIDEyLjc0ICAgMjQuNDQgICAgICAgIDIxLjAwCisKK1RFWFQKKyAgICAgICAgOHgxNgorCU1pbGxlbm5pdW0gSSAgRzIwMAorVEVYVCAgICAgMy4yOSAgICAgICAgIDEuNTAKKworKiBZZXMsIGl0IGlzIHNsb3dlciB0aGFuIE1pbGxlbm5pdW0gSS4KKworCitEdWFsaGVhZCBHNDAwCis9PT09PT09PT09PT09CitEcml2ZXIgc3VwcG9ydHMgZHVhbGhlYWQgRzQwMCB3aXRoIHNvbWUgbGltaXRhdGlvbnM6CisgKyBzZWNvbmRhcnkgaGVhZCBzaGFyZXMgdmlkZW9tZW1vcnkgd2l0aCBwcmltYXJ5IGhlYWQuIEl0IGlzIG5vdCBwcm9ibGVtCisgICBpZiB5b3UgaGF2ZSAzMk1CIG9mIHZpZGVvcmFtLCBidXQgaWYgeW91IGhhdmUgb25seSAxNk1CLCB5b3UgbWF5IGhhdmUKKyAgIHRvIHRoaW5rIHR3aWNlIGJlZm9yZSBjaG9vc2luZyB2aWRlb21vZGUgKGZvciBleGFtcGxlIHR3aWNlIDE4ODB4MTQ0MHgzMmJwcAorICAgaXMgbm90IHBvc3NpYmxlKS4KKyArIGR1ZSB0byBoYXJkd2FyZSBsaW1pdGF0aW9uLCBzZWNvbmRhcnkgaGVhZCBjYW4gdXNlIG9ubHkgMTYgYW5kIDMyYnBwCisgICB2aWRlb21vZGVzLgorICsgc2Vjb25kYXJ5IGhlYWQgaXMgbm90IGFjY2VsZXJhdGVkLiBUaGVyZSB3ZXJlIGJhZCBwcm9ibGVtcyB3aXRoIGFjY2VsZXJhdGVkCisgICBYRnJlZSB3aGVuIHNlY29uZGFyeSBoZWFkIHVzZWQgdG8gdXNlIGFjY2VsZXJhdGlvbi4KKyArIHNlY29uZGFyeSBoZWFkIGFsd2F5cyBwb3dlcnVwcyBpbiA2NDB4NDgwQDYwLTMyIHZpZGVvbW9kZS4gWW91IGhhdmUgdG8gdXNlCisgICBmYnNldCB0byBjaGFuZ2UgdGhpcyBtb2RlLgorICsgc2Vjb25kYXJ5IGhlYWQgYWx3YXlzIHBvd2VydXBzIGluIG1vbml0b3IgbW9kZS4gWW91IGhhdmUgdG8gdXNlIGZibWF0cm94c2V0CisgICB0byBjaGFuZ2UgaXQgdG8gVFYgbW9kZS4gQWxzbywgeW91IG11c3Qgc2VsZWN0IGF0IGxlYXN0IDUyNSBsaW5lcyBmb3IKKyAgIE5UU0Mgb3V0cHV0IGFuZCA2MjUgbGluZXMgZm9yIFBBTCBvdXRwdXQuCisgKyBrZXJuZWwgaXMgbm90IGZ1bGx5IG11bHRpaGVhZCByZWFkeS4gU28gc29tZSB0aGluZ3MgYXJlIGltcG9zc2libGUgdG8gZG8uCisgKyBpZiB5b3UgY29tcGlsZWQgaXQgYXMgbW9kdWxlLCB5b3UgbXVzdCBpbnNlcnQgaTJjLW1hdHJveGZiLCBtYXRyb3hmYl9tYXZlbgorICAgYW5kIG1hdHJveGZiX2NydGMyIGludG8ga2VybmVsLgorCisKK0R1YWxoZWFkIEc0NTAKKz09PT09PT09PT09PT0KK0RyaXZlciBzdXBwb3J0cyBkdWFsaGVhZCBHNDUwIHdpdGggc29tZSBsaW1pdGF0aW9uczoKKyArIHNlY29uZGFyeSBoZWFkIHNoYXJlcyB2aWRlb21lbW9yeSB3aXRoIHByaW1hcnkgaGVhZC4gSXQgaXMgbm90IHByb2JsZW0KKyAgIGlmIHlvdSBoYXZlIDMyTUIgb2YgdmlkZW9yYW0sIGJ1dCBpZiB5b3UgaGF2ZSBvbmx5IDE2TUIsIHlvdSBtYXkgaGF2ZQorICAgdG8gdGhpbmsgdHdpY2UgYmVmb3JlIGNob29zaW5nIHZpZGVvbW9kZS4KKyArIGR1ZSB0byBoYXJkd2FyZSBsaW1pdGF0aW9uLCBzZWNvbmRhcnkgaGVhZCBjYW4gdXNlIG9ubHkgMTYgYW5kIDMyYnBwCisgICB2aWRlb21vZGVzLgorICsgc2Vjb25kYXJ5IGhlYWQgaXMgbm90IGFjY2VsZXJhdGVkLgorICsgc2Vjb25kYXJ5IGhlYWQgYWx3YXlzIHBvd2VydXBzIGluIDY0MHg0ODBANjAtMzIgdmlkZW9tb2RlLiBZb3UgaGF2ZSB0byB1c2UKKyAgIGZic2V0IHRvIGNoYW5nZSB0aGlzIG1vZGUuCisgKyBUViBvdXRwdXQgaXMgbm90IHN1cHBvcnRlZAorICsga2VybmVsIGlzIG5vdCBmdWxseSBtdWx0aWhlYWQgcmVhZHksIHNvIHNvbWUgdGhpbmdzIGFyZSBpbXBvc3NpYmxlIHRvIGRvLgorICsgaWYgeW91IGNvbXBpbGVkIGl0IGFzIG1vZHVsZSwgeW91IG11c3QgaW5zZXJ0IG1hdHJveGZiX2c0NTAgYW5kIG1hdHJveGZiX2NydGMyCisgICBpbnRvIGtlcm5lbC4KKwkKKy0tCitQZXRyIFZhbmRyb3ZlYyA8dmFuZHJvdmVAdmMuY3Z1dC5jej4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvbW9kZWRiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvbW9kZWRiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDQ0NThiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9tb2RlZGIudHh0CkBAIC0wLDAgKzEsNjEgQEAKKworCisJCQltb2RlZGIgZGVmYXVsdCB2aWRlbyBtb2RlIHN1cHBvcnQKKworCitDdXJyZW50bHkgYWxsIGZyYW1lIGJ1ZmZlciBkZXZpY2UgZHJpdmVycyBoYXZlIHRoZWlyIG93biB2aWRlbyBtb2RlIGRhdGFiYXNlcywKK3doaWNoIGlzIGEgbWVzcyBhbmQgYSB3YXN0ZSBvZiByZXNvdXJjZXMuIFRoZSBtYWluIGlkZWEgb2YgbW9kZWRiIGlzIHRvIGhhdmUKKworICAtIG9uZSByb3V0aW5lIHRvIHByb2JlIGZvciB2aWRlbyBtb2Rlcywgd2hpY2ggY2FuIGJlIHVzZWQgYnkgYWxsIGZyYW1lIGJ1ZmZlcgorICAgIGRldmljZXMKKyAgLSBvbmUgZ2VuZXJpYyB2aWRlbyBtb2RlIGRhdGFiYXNlIHdpdGggYSBmYWlyIGFtb3VudCBvZiBzdGFuZGFyZCB2aWRlb21vZGVzCisgICAgKHRha2VuIGZyb20gWEZyZWU4NikKKyAgLSB0aGUgcG9zc2liaWxpdHkgdG8gc3VwcGx5IHlvdXIgb3duIG1vZGUgZGF0YWJhc2UgZm9yIGdyYXBoaWNzIGhhcmR3YXJlIHRoYXQKKyAgICBuZWVkcyBub24tc3RhbmRhcmQgbW9kZXMsIGxpa2UgYW1pZmIgYW5kIE1hYyBmcmFtZSBidWZmZXIgZHJpdmVycyAod2hpY2gKKyAgICB1c2UgbWFjbW9kZXMuYykKKworV2hlbiBhIGZyYW1lIGJ1ZmZlciBkZXZpY2UgcmVjZWl2ZXMgYSB2aWRlbz0gb3B0aW9uIGl0IGRvZXNuJ3Qga25vdywgaXQgc2hvdWxkCitjb25zaWRlciB0aGF0IHRvIGJlIGEgdmlkZW8gbW9kZSBvcHRpb24uIElmIG5vIGZyYW1lIGJ1ZmZlciBkZXZpY2UgaXMgc3BlY2lmaWVkCitpbiBhIHZpZGVvPSBvcHRpb24sIGZibWVtIGNvbnNpZGVycyB0aGF0IHRvIGJlIGEgZ2xvYmFsIHZpZGVvIG1vZGUgb3B0aW9uLgorCitWYWxpZCBtb2RlIHNwZWNpZmllcnMgKG1vZGVfb3B0aW9uIGFyZ3VtZW50KToKKworICAgIDx4cmVzPng8eXJlcz5bLTxicHA+XVtAPHJlZnJlc2g+XQorICAgIDxuYW1lPlstPGJwcD5dW0A8cmVmcmVzaD5dCisKK3dpdGggPHhyZXM+LCA8eXJlcz4sIDxicHA+IGFuZCA8cmVmcmVzaD4gZGVjaW1hbCBudW1iZXJzIGFuZCA8bmFtZT4gYSBzdHJpbmcuCitUaGluZ3MgYmV0d2VlbiBzcXVhcmUgYnJhY2tldHMgYXJlIG9wdGlvbmFsLgorCitUbyBmaW5kIGEgc3VpdGFibGUgdmlkZW8gbW9kZSwgeW91IGp1c3QgY2FsbAorCitpbnQgX19pbml0IGZiX2ZpbmRfbW9kZShzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBjaGFyICptb2RlX29wdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmYl92aWRlb21vZGUgKmRiLCB1bnNpZ25lZCBpbnQgZGJzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZiX3ZpZGVvbW9kZSAqZGVmYXVsdF9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlZmF1bHRfYnBwKQorCit3aXRoIGRiL2Ric2l6ZSB5b3VyIG5vbi1zdGFuZGFyZCB2aWRlbyBtb2RlIGRhdGFiYXNlLCBvciBOVUxMIHRvIHVzZSB0aGUKK3N0YW5kYXJkIHZpZGVvIG1vZGUgZGF0YWJhc2UuCisKK2ZiX2ZpbmRfbW9kZSgpIGZpcnN0IHRyaWVzIHRoZSBzcGVjaWZpZWQgdmlkZW8gbW9kZSAob3IgYW55IG1vZGUgdGhhdCBtYXRjaGVzLAorZS5nLiB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgNjQweDQ4MCBtb2RlcywgZWFjaCBvZiB0aGVtIGlzIHRyaWVkKS4gSWYgdGhhdAorZmFpbHMsIHRoZSBkZWZhdWx0IG1vZGUgaXMgdHJpZWQuIElmIHRoYXQgZmFpbHMsIGl0IHdhbGtzIG92ZXIgYWxsIG1vZGVzLgorCitUbyBzcGVjaWZ5IGEgdmlkZW8gbW9kZSBhdCBib290dXAsIHVzZSB0aGUgZm9sbG93aW5nIGJvb3Qgb3B0aW9uczoKKyAgICB2aWRlbz08ZHJpdmVyPjo8eHJlcz54PHlyZXM+Wy08YnBwPl1bQHJlZnJlc2hdCisKK3doZXJlIDxkcml2ZXI+IGlzIGEgbmFtZSBmcm9tIHRoZSB0YWJsZSBiZWxvdy4gIFZhbGlkIGRlZmF1bHQgbW9kZXMgY2FuIGJlCitmb3VuZCBpbiBsaW51eC9kcml2ZXJzL3ZpZGVvL21vZGVkYi5jLiAgQ2hlY2sgeW91ciBkcml2ZXIncyBkb2N1bWVudGF0aW9uLgorVGhlcmUgbWF5IGJlIG1vcmUgbW9kZXMuCisKKyAgICBEcml2ZXJzIHRoYXQgc3VwcG9ydCBtb2RlZGIgYm9vdCBvcHRpb25zCisgICAgQm9vdCBOYW1lCSAgQ2FyZHMgU3VwcG9ydGVkCisKKyAgICBhbWlmYgktIEFtaWdhIGNoaXBzZXQgZnJhbWUgYnVmZmVyCisgICAgYXR5MTI4ZmIJLSBBVEkgUmFnZTEyOCAvIFBybyBmcmFtZSBidWZmZXIKKyAgICBhdHlmYgktIEFUSSBNYWNoNjQgZnJhbWUgYnVmZmVyCisgICAgdGRmeGZiCS0gM0QgRnggZnJhbWUgYnVmZmVyCisgICAgdHJpZGVudGZiCS0gVHJpZGVudCAoQ3liZXIpYmxhZGUgY2hpcHNldCBmcmFtZSBidWZmZXIKKworQlRXLCBvbmx5IGEgZmV3IGRyaXZlcnMgdXNlIHRoaXMgYXQgdGhlIG1vbWVudC4gT3RoZXJzIGFyZSB0byBmb2xsb3cKKyhmZWVsIGZyZWUgdG8gc2VuZCBwYXRjaGVzKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvcHZyMmZiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvcHZyMmZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmY2YzIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9wdnIyZmIudHh0CkBAIC0wLDAgKzEsNjEgQEAKKyRJZDogcHZyMmZiLnR4dCx2IDEuMSAyMDAxLzA1LzI0IDA1OjA5OjE2IG1yYnJvd24gRXhwICQKKworV2hhdCBpcyBwdnIyZmI/Cis9PT09PT09PT09PT09PT0KKworVGhpcyBpcyBhIGRyaXZlciBmb3IgUG93ZXJWUiAyIGJhc2VkIGdyYXBoaWNzIGZyYW1lIGJ1ZmZlcnMsIHN1Y2ggYXMgdGhlCitvbmUgZm91bmQgaW4gdGhlIERyZWFtY2FzdC4KKworQWR2YW50YWdlczoKKworICogSXQgcHJvdmlkZXMgYSBuaWNlIGxhcmdlIGNvbnNvbGUgKDEyOCBjb2xzICsgNDggbGluZXMgd2l0aCAxMDI0eDc2OCkKKyAgIHdpdGhvdXQgdXNpbmcgdGlueSwgdW5yZWFkYWJsZSBmb250cy4KKyAqIFlvdSBjYW4gcnVuIFhGODZfRkJEZXYgb24gdG9wIG9mIC9kZXYvZmIwCisgKiBNb3N0IGltcG9ydGFudDogYm9vdCBsb2dvIDotKQorCitEaXNhZHZhbnRhZ2VzOgorCisgKiBEcml2ZXIgaXMgY3VycmVudGx5IGxpbWl0ZWQgdG8gdGhlIERyZWFtY2FzdCBQb3dlclZSIDIgaW1wbGVtZW50YXRpb24KKyAgIGF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZy4KKworQ29uZmlndXJhdGlvbgorPT09PT09PT09PT09PQorCitZb3UgY2FuIHBhc3Mga2VybmVsIGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIHB2cjJmYiB3aXRoCitgdmlkZW89cHZyMmZiOm9wdGlvbjEsb3B0aW9uMjp2YWx1ZTIsb3B0aW9uMycgKG11bHRpcGxlIG9wdGlvbnMgc2hvdWxkIGJlCitzZXBhcmF0ZWQgYnkgY29tbWEsIHZhbHVlcyBhcmUgc2VwYXJhdGVkIGZyb20gb3B0aW9ucyBieSBgOicpLgorQWNjZXB0ZWQgb3B0aW9uczoKKworZm9udDpYICAgIC0gZGVmYXVsdCBmb250IHRvIHVzZS4gQWxsIGZvbnRzIGFyZSBzdXBwb3J0ZWQsIGluY2x1ZGluZyB0aGUKKyAgICAgICAgICAgIFNVTjEyeDIyIGZvbnQgd2hpY2ggaXMgdmVyeSBuaWNlIGF0IGhpZ2ggcmVzb2x1dGlvbnMuCisKK21vZGU6WCAgICAtIGRlZmF1bHQgdmlkZW8gbW9kZS4gVGhlIGZvbGxvd2luZyB2aWRlbyBtb2RlcyBhcmUgc3VwcG9ydGVkOgorICAgICAgICAgICAgNjQweDI0MC02MCwgNjQweDQ4MC02MC4KKwkgICAgCisgICAgICAgICAgICBOb3RlOiB0aGUgNjQweDI0MCBtb2RlIGlzIGN1cnJlbnRseSBicm9rZW4sIGFuZCBzaG91bGQgbm90IGJlCisgICAgICAgICAgICB1c2VkIGZvciBhbnkgcmVhc29uLiBJdCBpcyBvbmx5IG1lbnRpb25lZCBhcyBhIHJlZmVyZW5jZS4KKworaW52ZXJzZSAgIC0gaW52ZXJ0IGNvbG9ycyBvbiBzY3JlZW4gKGZvciBMQ0QgZGlzcGxheXMpCisKK25vbXRyciAgICAtIGRpc2FibGVzIHdyaXRlIGNvbWJpbmluZyBvbiBmcmFtZSBidWZmZXIuIFRoaXMgc2xvd3MgZG93biBkcml2ZXIKKyAgICAgICAgICAgIGJ1dCB0aGVyZSBpcyByZXBvcnRlZCBtaW5vciBpbmNvbXBhdGliaWxpdHkgYmV0d2VlbiBHVVMgRE1BIGFuZAorICAgICAgICAgICAgWEZyZWUgdW5kZXIgaGlnaCBsb2FkcyBpZiB3cml0ZSBjb21iaW5pbmcgaXMgZW5hYmxlZCAoc291bmQKKyAgICAgICAgICAgIGRyb3BvdXRzKS4gTVRSUiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gc3lzdGVtcyB0aGF0IGhhdmUgaXQKKyAgICAgICAgICAgIGNvbmZpZ3VyZWQgYW5kIHRoYXQgc3VwcG9ydCBpdC4KKworY2FibGU6WCAgIC0gY2FibGUgdHlwZS4gVGhpcyBjYW4gYmUgYW55IG9mIHRoZSBmb2xsb3dpbmc6IHZnYSwgcmdiLCBhbmQKKyAgICAgICAgICAgIGNvbXBvc2l0ZS4gSWYgbm9uZSBpcyBzcGVjaWZpZWQsIHdlIGd1ZXNzLgorCitvdXRwdXQ6WCAgLSBvdXRwdXQgdHlwZS4gVGhpcyBjYW4gYmUgYW55IG9mIHRoZSBmb2xsb3dpbmc6IHBhbCwgbnRzYywgYW5kCisgICAgICAgICAgICB2Z2EuIElmIG5vbmUgaXMgc3BlY2lmaWVkLCB3ZSBndWVzcy4KKworWDExCis9PT0KKworWEY4Nl9GQkRldiBzaG91bGQgd29yaywgaW4gdGhlb3J5LiBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcgaXQgaXMKK3RvdGFsbHkgdW50ZXN0ZWQgYW5kIG1heSBvciBtYXkgbm90IGV2ZW4gcG9ydHJheSB0aGUgYmVnaW5uaW5ncyBvZgord29ya2luZy4gSWYgeW91IGVuZCB1cCB0ZXN0aW5nIHRoaXMsIHBsZWFzZSBsZXQgbWUga25vdyEKKworLS0KK1BhdWwgTXVuZHQgPGxldGhhbEBsaW51eGRjLm9yZz4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi9weGFmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL3B4YWZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjliODUwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9weGFmYi50eHQKQEAgLTAsMCArMSw1NCBAQAorRHJpdmVyIGZvciBQWEEyNXggTENEIGNvbnRyb2xsZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBkcml2ZXIgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBvcHRpb25zLCBlaXRoZXIgdmlhCitvcHRpb25zPTxPUFRJT05TPiB3aGVuIG1vZHVsYXIgb3IgdmlkZW89cHhhZmI6PE9QVElPTlM+IHdoZW4gYnVpbHQgaW4uCisKK0ZvciBleGFtcGxlOgorCW1vZHByb2JlIHB4YWZiIG9wdGlvbnM9bW9kZTo2NDB4NDgwLTgscGFzc2l2ZQorb3Igb24gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUKKwl2aWRlbz1weGFmYjptb2RlOjY0MHg0ODAtOCxwYXNzaXZlCisKK21vZGU6WFJFU3hZUkVTWy1CUFBdCisJWFJFUyA9PSBMQ0NSMV9QUEwgKyAxCisJWVJFUyA9PSBMTENSMl9MUFAgKyAxCisJCVRoZSByZXNvbHV0aW9uIG9mIHRoZSBkaXNwbGF5IGluIHBpeGVscworCUJQUCA9PSBUaGUgYml0IGRlcHRoLiBWYWxpZCB2YWx1ZXMgYXJlIDEsIDIsIDQsIDggYW5kIDE2LgorCitwaXhjbG9jazpQSVhDTE9DSworCVBpeGVsIGNsb2NrIGluIHBpY29zZWNvbmRzCisKK2xlZnQ6TEVGVCA9PSBMQ0NSMV9CTFcgKyAxCityaWdodDpSSUdIVCA9PSBMQ0NSMV9FTFcgKyAxCitoc3luY2xlbjpIU1lOQyA9PSBMQ0NSMV9IU1cgKyAxCit1cHBlcjpVUFBFUiA9PSBMQ0NSMl9CRlcKK2xvd2VyOkxPV0VSID09IExDQ1IyX0VGUgordnN5bmNsZW46VlNZTkMgPT0gTENDUjJfVlNXICsgMQorCURpc3BsYXkgbWFyZ2lucyBhbmQgc3luYyB0aW1lcworCitjb2xvciB8IG1vbm8gPT4gTENDUjBfQ01TCisJdW1tLi4uCisKK2FjdGl2ZSB8IHBhc3NpdmUgPT4gTENDUjBfUEFTCisJQWN0aXZlIChURlQpIG9yIFBhc3NpdmUgKFNUTikgZGlzcGxheQorCitzaW5nbGUgfCBkdWFsID0+IExDQ1IwX1NEUworCVNpbmdsZSBvciBkdWFsIHBhbmVsIHBhc3NpdmUgZGlzcGxheQorCis0cGl4IHwgOHBpeCA9PiBMQ0NSMF9EUEQKKwk0IG9yIDggcGl4ZWwgbW9ub2Nocm9tZSBzaW5nbGUgcGFuZWwgZGF0YQorCitoc3luYzpIU1lOQwordnN5bmM6VlNZTkMKKwlIb3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBzeW5jLiAwID0+IGFjdGl2ZSBsb3csIDEgPT4gYWN0aXZlCisJaGlnaC4KKworZHBjOkRQQworCURvdWJsZSBwaXhlbCBjbG9jay4gMT0+dHJ1ZSwgMD0+ZmFsc2UKKworb3V0cHV0ZW46UE9MQVJJVFkKKwlPdXRwdXQgRW5hYmxlIFBvbGFyaXR5LiAwID0+IGFjdGl2ZSBsb3csIDEgPT4gYWN0aXZlIGhpZ2gKKworcGl4Y2xvY2twb2w6UE9MQVJJVFkKKwlwaXhlbCBjbG9jayBwb2xhcml0eQorCTAgPT4gZmFsbGluZyBlZGdlLCAxID0+IHJpc2luZyBlZGdlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL3NhMTEwMGZiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvc2ExMTAwZmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYjQyMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL3NhMTEwMGZiLnR4dApAQCAtMCwwICsxLDM5IEBACitbVGhpcyBmaWxlIGlzIGNsb25lZCBmcm9tIFZlc2FGQi9tYXRyb3hmYl0KKworV2hhdCBpcyBzYTExMDBmYj8KKz09PT09PT09PT09PT09PT09CisKK1RoaXMgaXMgYSBkcml2ZXIgZm9yIGEgZ3JhcGhpYyBmcmFtZWJ1ZmZlciBmb3IgdGhlIFNBLTExMDAgTENECitjb250cm9sbGVyLgorCitDb25maWd1cmF0aW9uCis9PT09PT09PT09PT09PQorCitGb3IgbW9zdCBjb21tb24gcGFzc2l2ZSBkaXNwbGF5cywgZ2l2aW5nIHRoZSBvcHRpb24KKwordmlkZW89c2ExMTAwZmI6YnBwOjx2YWx1ZT4sbGNjcjA6PHZhbHVlPixsY2NyMTo8dmFsdWU+LGxjY3IyOjx2YWx1ZT4sbGNjcjM6PHZhbHVlPgorCitvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBzaG91bGQgYmUgZW5vdWdoIHRvIGNvbmZpZ3VyZSB0aGUKK2NvbnRyb2xsZXIuIFRoZSBiaXRzIHBlciBwaXhlbCAoYnBwKSB2YWx1ZSBzaG91bGQgYmUgNCwgOCwgMTIsIG9yCisxNi4gTENDUiB2YWx1ZXMgYXJlIGRpc3BsYXktc3BlY2lmaWMgYW5kIHNob3VsZCBiZSBjb21wdXRlZCBhcworZG9jdW1lbnRlZCBpbiB0aGUgU0EtMTEwMCBEZXZlbG9wZXIncyBNYW51YWwsIFNlY3Rpb24gMTEuNy4gRHVhbC1wYW5lbAorZGlzcGxheXMgYXJlIHN1cHBvcnRlZCBhcyBsb25nIGFzIHRoZSBTRFMgYml0IGlzIHNldCBpbiBMQ0NSMDsgR1BJTzw5OjI+CithcmUgdXNlZCBmb3IgdGhlIGxvd2VyIHBhbmVsLgorCitGb3IgYWN0aXZlIGRpc3BsYXlzIG9yIGRpc3BsYXlzIHJlcXVpcmluZyBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24KKyhjb250cm9sbGluZyBiYWNrbGlnaHRzLCBwb3dlcmluZyBvbiB0aGUgTENELCBldGMuKSwgdGhlIGNvbW1hbmQgbGluZQorb3B0aW9ucyBtYXkgbm90IGJlIGVub3VnaCB0byBjb25maWd1cmUgdGhlIGRpc3BsYXkuIEFkZGluZyBzZWN0aW9ucyB0bworc2ExMTAwZmJfaW5pdF9mYmluZm8oKSwgc2ExMTAwZmJfYWN0aXZhdGVfdmFyKCksCitzYTExMDBmYl9kaXNhYmxlX2xjZF9jb250cm9sbGVyKCksIGFuZCBzYTExMDBmYl9lbmFibGVfbGNkX2NvbnRyb2xsZXIoKQord2lsbCBwcm9iYWJseSBiZSBuZWNlc3NhcnkuCisKK0FjY2VwdGVkIG9wdGlvbnM6CisKK2JwcDo8dmFsdWU+CUNvbmZpZ3VyZSBmb3IgPHZhbHVlPiBiaXRzIHBlciBwaXhlbAorbGNjcjA6PHZhbHVlPglDb25maWd1cmUgTENEIGNvbnRyb2wgcmVnaXN0ZXIgMCAoMTEuNy4zKQorbGNjcjE6PHZhbHVlPglDb25maWd1cmUgTENEIGNvbnRyb2wgcmVnaXN0ZXIgMSAoMTEuNy40KQorbGNjcjI6PHZhbHVlPglDb25maWd1cmUgTENEIGNvbnRyb2wgcmVnaXN0ZXIgMiAoMTEuNy41KQorbGNjcjM6PHZhbHVlPglDb25maWd1cmUgTENEIGNvbnRyb2wgcmVnaXN0ZXIgMyAoMTEuNy42KQorCistLQorTWFyayBIdWFuZyA8bWh1YW5nQGxpdmV0b3kuY29tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi9zaXNmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL3Npc2ZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjUwYzUxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9zaXNmYi50eHQKQEAgLTAsMCArMSwxNTggQEAKKworV2hhdCBpcyBzaXNmYj8KKz09PT09PT09PT09PT09CisKK3Npc2ZiIGlzIGEgZnJhbWVidWZmZXIgZGV2aWNlIGRyaXZlciBmb3IgU2lTIChTaWxpY29uIEludGVncmF0ZWQgU3lzdGVtcykKK2dyYXBoaWNzIGNoaXBzLiBTdXBwb3J0ZWQgYXJlOgorCistIFNpUyAzMDAgc2VyaWVzOiBTaVMgMzAwLzMwNSwgNTQwLCA2MzAoUyksIDczMChTKQorLSBTaVMgMzE1IHNlcmllczogU2lTIDMxNS9IL1BSTywgNTV4LCAoTSk2NXgsIDc0MCwgKE0pNjYxKEYvTSlYLCAoTSk3NDEoR1gpCistIFNpUyAzMzAgc2VyaWVzOiBTaVMgMzMwICgiWGFicmUiKSwgKE0pNzYwCisKKworV2h5IGRvIEkgbmVlZCBhIGZyYW1lYnVmZmVyIGRyaXZlcj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3Npc2ZiIGlzIGVnLiB1c2VmdWwgaWYgeW91IHdhbnQgYSBoaWdoLXJlc29sdXRpb24gdGV4dCBjb25zb2xlLiBCZXNpZGVzIHRoYXQsCitzaXNmYiBpcyByZXF1aXJlZCB0byBydW4gRGlyZWN0RkIgKHdoaWNoIGNvbWVzIHdpdGggYW4gYWRkaXRpb25hbCwgZGVkaWNhdGVkCitkcml2ZXIgZm9yIHRoZSAzMTUgc2VyaWVzKS4KKworT24gdGhlIDMwMCBzZXJpZXMsIHNpc2ZiIG9uIGtlcm5lbHMgb2xkZXIgdGhhbiAyLjYuMyBmdXJ0aGVybW9yZSBwbGF5cyBhbgoraW1wb3J0YW50IHJvbGUgaW4gY29ubmVjdGlvbiB3aXRoIERSTS9EUkk6IFNpc2ZiIG1hbmFnZXMgdGhlIG1lbW9yeSBoZWFwCit1c2VkIGJ5IERSTS9EUkkgZm9yIDNEIHRleHR1cmUgYW5kIG90aGVyIGRhdGEuIFRoaXMgbWVtb3J5IG1hbmFnZW1lbnQgaXMKK3JlcXVpcmVkIGZvciB1c2luZyBEUkkvRFJNLgorCitLZXJuZWxzID49IGFyb3VuZCAyLjYuMyBkbyBub3QgbmVlZCBzaXNmYiBhbnkgbG9uZ2VyIGZvciBEUkkvRFJNIG1lbW9yeQorbWFuYWdlbWVudC4gVGhlIFNpUyBEUk0gZHJpdmVyIGhhcyBiZWVuIHVwZGF0ZWQgYW5kIGZlYXR1cmVzIGEgbWVtb3J5IG1hbmFnZXIKK29mIGl0cyBvd24gKHdoaWNoIHdpbGwgYmUgdXNlZCBpZiBzaXNmYiBpcyBub3QgY29tcGlsZWQpLiBTbyB1bmxlc3MgeW91IHdhbnQKK2EgZ3JhcGhpY2FsIGNvbnNvbGUsIHlvdSBkb24ndCBuZWVkIHNpc2ZiIG9uIGtlcm5lbHMgPj0yLjYuMy4KKworU2lkZW5vdGU6IFNpbmNlIHRoaXMgc2VlbXMgdG8gYmUgYSBjb21tb25seSBtYWRlIG1pc3Rha2U6IHNpc2ZiIGFuZCB2ZXNhZmIKK2Nhbm5vdCBiZSBhY3RpdmUgYXQgdGhlIHNhbWUgdGltZSEgRG8gb25seSBzZWxlY3Qgb25lIG9mIHRoZW0gaW4geW91ciBrZXJuZWwKK2NvbmZpZ3VyYXRpb24uCisKKworSG93IGFyZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byBzaXNmYj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1dlbGwsIGl0IGRlcGVuZHM6IElmIGNvbXBpbGVkIHN0YXRpY2FsbHkgaW50byB0aGUga2VybmVsLCB1c2UgbGlsbydzIGFwcGVuZAorc3RhdGVtZW50IHRvIGFkZCB0aGUgcGFyYW1ldGVycyB0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4gUGxlYXNlIHNlZSBsaWxvJ3MKKyhvciBHUlVCJ3MpIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uIElmIHNpc2ZiIGlzIGEga2VybmVsIG1vZHVsZSwKK3BhcmFtZXRlcnMgYXJlIGdpdmVuIHdpdGggdGhlIG1vZHByb2JlIChvciBpbnNtb2QpIGNvbW1hbmQuCisKK0V4YW1wbGUgZm9yIHNpc2ZiIGFzIHBhcnQgb2YgdGhlIHN0YXRpYyBrZXJuZWw6IEFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8geW91cgorbGlsby5jb25mOgorCisgICAgIGFwcGVuZD0idmlkZW89c2lzZmI6bW9kZToxMDI0eDc2OHgxNixtZW06MTIyODgscmF0ZTo3NSIKKworRXhhbXBsZSBmb3Igc2lzZmIgYXMgYSBtb2R1bGU6IFN0YXJ0IHNpc2ZiIGJ5IHR5cGluZworCisgICAgIG1vZHByb2JlIHNpc2ZiIG1vZGU9MTAyNHg3Njh4MTYgcmF0ZT03NSBtZW09MTIyODgKKworQSBjb21tb24gbWlzdGFrZSBpcyB0aGF0IGZvbGtzIHVzZSBhIHdyb25nIHBhcmFtZXRlciBmb3JtYXQgd2hlbiB1c2luZyB0aGUKK2RyaXZlciBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwuIFBsZWFzZSBub3RlOiBJZiBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwsCit0aGUgcGFyYW1ldGVyIGZvcm1hdCBpcyB2aWRlbz1zaXNmYjptb2RlOm5vbmUgb3IgdmlkZW89c2lzZmI6bW9kZToxMDI0eDc2OHgxNgorKG9yIHdoYXRldmVyIG1vZGUgeW91IHdhbnQgdG8gdXNlLCBhbHRlcm5hdGl2ZWx5IHVzaW5nIGFueSBvdGhlciBmb3JtYXQKK2Rlc2NyaWJlZCBhYm92ZSBvciB0aGUgdmVzYSBrZXl3b3JkIGluc3RlYWQgb2YgbW9kZSkuIElmIGNvbXBpbGVkIGFzIGEgbW9kdWxlLAordGhlIHBhcmFtZXRlciBmb3JtYXQgcmVhZHMgbW9kZT1ub25lIG9yIG1vZGU9MTAyNHg3Njh4MTYgKG9yIHdoYXRldmVyIG1vZGUgeW91Cit3YW50IHRvIHVzZSkuIFVzaW5nIGEgIj0iIGZvciBhICI6IiAoYW5kIHZpY2UgdmVyc2EpIGlzIGEgaHVnZSBkaWZmZXJlbmNlIQorQWRkaXRpb25hbGx5OiBJZiB5b3UgZ2l2ZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IHRvIHRoZSBpbi1rZXJuZWwgc2lzZmIsIHRoZQorYXJndW1lbnRzIGFyZSBzZXBhcmF0ZWQgd2l0aCAiLCIuIEZvciBleGFtcGxlOgorCisgICB2aWRlbz1zaXNmYjptb2RlOjEwMjR4NzY4eDE2LHJhdGU6NzUsbWVtOjEyMjg4CisKKworSG93IGRvIEkgdXNlIGl0PworPT09PT09PT09PT09PT09PQorCitQcmVmYWNlIHN0YXRlbWVudDogVGhpcyBmaWxlIG9ubHkgY292ZXJzIHZlcnkgbGl0dGxlIG9mIHRoZSBkcml2ZXIncworY2FwYWJpbGl0aWVzIGFuZCBmZWF0dXJlcy4gUGxlYXNlIHJlZmVyIHRvIHRoZSBhdXRob3IncyBhbmQgbWFpbnRhaW5lcidzCit3ZWJzaXRlIGF0IGh0dHA6Ly93d3cud2luaXNjaGhvZmVyLm5ldC9saW51eHNpc3ZnYS5zaHRtbCBmb3IgbW9yZQoraW5mb3JtYXRpb24uIEFkZGl0aW9uYWxseSwgIm1vZGluZm8gc2lzZmIiIGdpdmVzIGFuIG92ZXJ2aWV3IG92ZXIgYWxsCitzdXBwb3J0ZWQgb3B0aW9ucyBpbmNsdWRpbmcgc29tZSBleHBsYW5hdGlvbi4KKworVGhlIGRlc2lyZWQgZGlzcGxheSBtb2RlIGNhbiBiZSBzcGVjaWZpZWQgdXNpbmcgdGhlIGtleXdvcmQgIm1vZGUiIHdpdGgKK2EgcGFyYW1ldGVyIGluIG9uZSBvZiB0aGUgZm9sbHdpbmcgZm9ybWF0czoKKyAgLSBYeFl4RGVwdGggb3IKKyAgLSBYeFktRGVwdGggb3IKKyAgLSBYeFktRGVwdGhAUmF0ZSBvcgorICAtIFh4WQorICAtIG9yIHNpbXBseSB1c2UgdGhlIFZFU0EgbW9kZSBudW1iZXIgaW4gaGV4YWRlY2ltYWwgb3IgZGVjaW1hbC4KKworRm9yIGV4YW1wbGU6IDEwMjR4NzY4eDE2LCAxMDI0eDc2OC0xNkA3NSwgMTI4MHgxMDI0LTE2LiBJZiBubyBkZXB0aCBpcworc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byA4LiBJZiBubyByYXRlIGlzIGdpdmVuLCBpdCBkZWZhdWx0cyB0byA2MEh6LiBEZXB0aCAzMgorbWVhbnMgMjRiaXQgY29sb3IgZGVwdGggKGJ1dCAzMiBiaXQgZnJhbWVidWZmZXIgZGVwdGgsIHdoaWNoIGlzIG5vdCByZWxldmFudAordG8gdGhlIHVzZXIpLgorCitBZGRpdGlvbmFsbHksIHNpc2ZiIHVuZGVyc3RhbmRzIHRoZSBrZXl3b3JkICJ2ZXNhIiBmb2xsb3dlZCBieSBhIFZFU0EgbW9kZQorbnVtYmVyIGluIGRlY2ltYWwgb3IgaGV4YWRlY2ltYWwuIEZvciBleGFtcGxlOiB2ZXNhPTc5MSBvciB2ZXNhPTB4MTE3LiBQbGVhc2UKK3VzZSBlaXRoZXIgIm1vZGUiIG9yICJ2ZXNhIiBidXQgbm90IGJvdGguCisKK0xpbnV4IDIuNCBvbmx5OiBJZiBubyBtb2RlIGlzIGdpdmVuLCBzaXNmYiBkZWZhdWx0cyB0byAibm8gbW9kZSIgKG1vZGU9bm9uZSkgaWYKK2NvbXBpbGVkIGFzIGEgbW9kdWxlOyBpZiBzaXNmYiBpcyBzdGF0aWNhbGx5IGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCwgaXQKK2RlZmF1bHRzIHRvIDgwMHg2MDB4OCB1bmxlc3MgQ1JUMiB0eXBlIGlzIExDRCwgaW4gd2hpY2ggY2FzZSB0aGUgTENEJ3MgbmF0aXZlCityZXNvbHV0aW9uIGlzIHVzZWQuIElmIHlvdSB3YW50IHRvIHN3aXRjaCB0byBhIGRpZmZlcmVudCBtb2RlLCB1c2UgdGhlIGZic2V0CitzaGVsbCBjb21tYW5kLgorCitMaW51eCAyLjYgb25seTogSWYgbm8gbW9kZSBpcyBnaXZlbiwgc2lzZmIgZGVmYXVsdHMgdG8gODAweDYwMHg4IHVubGVzcyBDUlQyCit0eXBlIGlzIExDRCwgaW4gd2hpY2ggY2FzZSBpdCBkZWZhdWx0cyB0byB0aGUgTENEJ3MgbmF0aXZlIHJlc29sdXRpb24uIElmCit5b3Ugd2FudCB0byBzd2l0Y2ggdG8gYW5vdGhlciBtb2RlLCB1c2UgdGhlIHN0dHkgc2hlbGwgY29tbWFuZC4KKworWW91IHNob3VsZCBjb21waWxlIGluIGJvdGggdmdhY29uICh0byBib290IGlmIHlvdSByZW1vdmUgeW91IFNpUyBjYXJkIGZyb20KK3lvdXIgc3lzdGVtKSBhbmQgc2lzZmIgKGZvciBncmFwaGljcyBtb2RlKS4gVW5kZXIgTGludXggMi42LCBhbHNvICJGcmFtZWJ1ZmZlcgorY29uc29sZSBzdXBwb3J0IiAoZmJjb24pIGlzIG5lZWRlZCBmb3IgYSBncmFwaGljYWwgY29uc29sZS4KKworWW91IHNob3VsZCAqbm90KiBjb21waWxlLWluIHZlc2FmYi4gQW5kIHBsZWFzZSBkbyBub3QgdXNlIHRoZSAidmdhPSIga2V5d29yZAoraW4gbGlsbydzIG9yIGdydWIncyBjb25maWd1cmF0aW9uIGZpbGU7IG1vZGUgc2VsZWN0aW9uIGlzIGRvbmUgdXNpbmcgdGhlCisibW9kZSIgb3IgInZlc2EiIGtleXdvcmRzIGFzIGEgcGFyYW1ldGVyLiBTZWUgYWJvdmUgYW5kIGJlbG93LgorCisKK1gxMQorPT09CisKK0lmIHVzaW5nIFhGcmVlODYgb3IgWC5vcmcsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvbid0IHVzZSB0aGUgImZiZGV2IgorZHJpdmVyIGJ1dCB0aGUgZGVkaWNhdGVkICJzaXMiIFggZHJpdmVyLiBUaGUgInNpcyIgWCBkcml2ZXIgYW5kIHNpc2ZiIGFyZQorZGV2ZWxvcGVkIGJ5IHRoZSBzYW1lIHBlcnNvbiAoVGhvbWFzIFdpbmlzY2hob2ZlcikgYW5kIGNvb3BlcmF0ZSB3ZWxsIHdpdGgKK2VhY2ggb3RoZXIuCisKKworU1ZHQUxpYgorPT09PT09PQorCitTVkdBTGliLCBpZiBkaXJlY3RseSBhY2Nlc3NpbmcgdGhlIGhhcmR3YXJlLCBuZXZlciByZXN0b3JlcyB0aGUgc2NyZWVuCitjb3JyZWN0bHksIGVzcGVjaWFsbHkgb24gbGFwdG9wcyBvciBpZiB0aGUgb3V0cHV0IGRldmljZXMgYXJlIExDRCBvciBUVi4KK1RoZXJlZm9yZSwgdXNlIHRoZSBjaGlwc2V0ICJGQkRFViIgaW4gU1ZHQUxpYiBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgbWFrZQorU1ZHQUxpYiB1c2UgdGhlIGZyYW1lYnVmZmVyIGRldmljZSBmb3IgbW9kZSBzd2l0Y2hlcyBhbmQgcmVzdG9yYXRpb24uCisKKworQ29uZmlndXJhdGlvbgorPT09PT09PT09PT09PQorCisoU29tZSkgYWNjZXB0ZWQgb3B0aW9uczoKKworb2ZmICAgICAgLSBEaXNhYmxlIHNpc2ZiLiBUaGlzIG9wdGlvbiBpcyBvbmx5IHVuZGVyc3Rvb2QgaWYgc2lzZmIgaXMKKyAgICAgICAgICAgaW4ta2VybmVsLCBub3QgYSBtb2R1bGUuCittZW06WCAgICAtIHNpemUgb2YgbWVtb3J5IGZvciB0aGUgY29uc29sZSwgcmVzdCB3aWxsIGJlIHVzZWQgZm9yIERSSS9EUk0uIFgKKyAgICAgICAgICAgaXMgaW4ga2lsb2J5dGVzLiBPbiAzMDAgc2VyaWVzLCB0aGUgZGVmYXVsdCBpcyA0MDk2LCA4MTkyIG9yCisJICAgMTYzODQgKGVhY2ggaW4ga2lsb2J5dGUpIGRlcGVuZGluZyBvbiBob3cgbXVjaCB2aWRlbyByYW0gdGhlIGNhcmQKKyAgICAgICAgICAgaGFzLiBPbiAzMTUvMzMwIHNlcmllcywgdGhlIGRlZmF1bHQgaXMgdGhlIG1heGltdW0gYXZhaWxhYmxlIHJhbQorCSAgIChzaW5jZSBEUkkvRFJNIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoZXNlIGNoaXBzZXRzKS4KK25vYWNjZWwgIC0gZG8gbm90IHVzZSAyRCBhY2NlbGVyYXRpb24gZW5naW5lLiAoRGVmYXVsdDogdXNlIGFjY2VsZXJhdGlvbikKK25veXBhbiAgIC0gZGlzYWJsZSB5LXBhbm5pbmcgYW5kIHNjcm9sbCBieSByZWRyYXdpbmcgdGhlIGVudGlyZSBzY3JlZW4uCisgICAgICAgICAgIFRoaXMgaXMgbXVjaCBzbG93ZXIgdGhhbiB5LXBhbm5pbmcuIChEZWZhdWx0OiB1c2UgeS1wYW5uaW5nKQordmVzYTpYICAgLSBzZWxlY3RzIHN0YXJ0dXAgdmlkZW9tb2RlLiBYIGlzIG51bWJlciBmcm9tIDAgdG8gMHgxRkYgYW5kCisgICAgICAgICAgIHJlcHJlc2VudHMgdGhlIFZFU0EgbW9kZSBudW1iZXIgKGNhbiBiZSBnaXZlbiBpbiBkZWNpbWFsIG9yCisJICAgaGV4YWRlY2ltYWwgZm9ybSwgdGhlIGxhdHRlciBwcmVmaXhlZCB3aXRoICIweCIpLgorbW9kZTpYICAgLSBzZWxlY3RzIHN0YXJ0dXAgdmlkZW9tb2RlLiBQbGVhc2Ugc2VlIGFib3ZlIGZvciB0aGUgZm9ybWF0IG9mCisgICAgICAgICAgICJYIi4KKworQm9vbGVhbiBvcHRpb25zIHN1Y2ggYXMgIm5vYWNjZWwiIG9yICJub3lwYW4iIGFyZSB0byBiZSBnaXZlbiB3aXRob3V0IGEKK3BhcmFtZXRlciBpZiBzaXNmYiBpcyBpbi1rZXJuZWwgKGZvciBleGFtcGxlICJ2aWRlbz1zaXNmYjpub3lwYW4pLiBJZgorc2lzZmIgaXMgYSBtb2R1bGUsIHRoZXNlIGFyZSB0byBiZSBzZXQgdG8gMSAoZm9yIGV4YW1wbGUgIm1vZHByb2JlIHNpc2ZiCitub3lwYW49MSIpLgorCistLQorVGhvbWFzIFdpbmlzY2hob2ZlciA8dGhvbWFzQHdpbmlzY2hob2Zlci5uZXQ+CitNYXkgMjcsIDIwMDQKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL3NzdGZiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvc3N0ZmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyOGQ3ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL3NzdGZiLnR4dApAQCAtMCwwICsxLDE3NCBAQAorCitJbnRyb2R1Y3Rpb24KKworCSAgVGhpcyBpcyBhIGZyYW1lIGJ1ZmZlciBkZXZpY2UgZHJpdmVyIGZvciAzZGZ4JyBWb29kb28gR3JhcGhpY3MgCisJKGFrYSB2b29kb28gMSwgYWthIHNzdDEpIGFuZCBWb29kb2+yIChha2EgVm9vZG9vIDIsIGFrYSBDVkcpIGJhc2VkIAorCXZpZGVvIGJvYXJkcy4gSXQncyBoaWdobHkgZXhwZXJpbWVudGFsIGNvZGUsIGJ1dCBpcyBndWFyYW50ZWVkIHRvIHdvcmsKKwlvbiBteSBjb21wdXRlciwgd2l0aCBteSAiTWF4aSBHYW1lciAzRCIgYW5kICJNYXhpIEdhbWVyIDNksiIgYm9hcmRzLAorCWFuZCB3aXRoIG1lICJiZXR3ZWVuIGNoYWlyIGFuZCBrZXlib2FyZCIuIFNvbWUgcGVvcGxlIHRlc3RlZCBvdGhlcgorCWNvbWJpbmF0aW9ucyBhbmQgaXQgc2VlbXMgdGhhdCBpdCB3b3Jrcy4KKwkgIFRoZSBtYWluIHBhZ2UgaXMgbG9jYXRlZCBhdCA8aHR0cDovL3NzdGZiLnNvdXJjZWZvcmdlLm5ldD4sIGFuZCBpZgorCXlvdSB3YW50IHRoZSBsYXRlc3QgdmVyc2lvbiwgY2hlY2sgb3V0IHRoZSBDVlMsIGFzIHRoZSBkcml2ZXIgaXMgYSB3b3JrCisJaW4gcHJvZ3Jlc3MsIEkgZmVlbCB1bmNvbWZvcnRhYmxlIHdpdGggcmVsZWFzaW5nIHRhcmJhbGxzIG9mIHNvbWV0aGluZworCW5vdCBjb21wbGV0ZWx5IHdvcmtpbmcuLi5Eb24ndCB3b3JyeSwgaXQncyBzdGlsbCBtb3JlIHRoYW4gdXNlYWJsZQorCShJIGVhdCBteSBvd24gZG9nIGZvb2QpCisKKwkgIFBsZWFzZSByZWFkIHRoZSBCdWcgc2VjdGlvbiwgYW5kIHJlcG9ydCBhbnkgc3VjY2VzcyBvciBmYWlsdXJlIHRvIG1lCisJKEdob3psYW5lIFRvdW1pIDxndG91bWlAbGFwb3N0ZS5uZXQ+KS4KKwkgIEJUVywgSWYgeW91IGhhdmUgb25seSBvbmUgbW9uaXRvciAsIGFuZCB5b3UgZG9uJ3QgZmVlbCBsaWtlIHBsYXlpbmcKKwl3aXRoIHRoZSB2Z2EgcGFzc3Rocm91IGNhYmxlLCBJIGNhbiBvbmx5IHN1Z2dlc3QgYm9ycm93aW5nIGEgc2NyZWVuCisJc29tZXdoZXJlLi4uIAorCisKK0luc3RhbGxhdGlvbiAKKworCSAgVGhpcyBkcml2ZXIgKHNob3VsZCkgd29yayBvbiBpeDg2LCB3aXRoICJsYXRlIiAyLjIueCBrZXJuZWwgKHRlc3RlZAorCXdpdGggeCA9IDE5KSBhbmQgInJlY2VudCIgMi40Lngga2VybmVsLCBhcyBhIG1vZHVsZSBvciBjb21waWxlZCBpbi4KKwkgIEl0IGhhcyBiZWVuIGluY2x1ZGVkIGluIG1haW5zdHJlYW0ga2VybmVsIHNpbmNlIHRoZSBpbmZhbW91cyAyLjQuMTAuCisJICBZb3UgY2FuIGFwcGx5IHRoZSBwYXRjaGVzIGZvdW5kIGluIHNzdGZiL2tlcm5lbC8qLTIuezJ8NH0ueC5wYXRjaCwKKwlhbmQgY29weSBzc3RmYi5jIHRvIGxpbnV4L2RyaXZlcnMvdmlkZW8vLCBvciBhcHBseSBhIHNpbmdsZSBwYXRjaCwgCisJc3N0ZmIvcGF0Y2gtMi57Mnw0fS54LXNzdGZiLXl5bW1kZCB0byB5b3VyIGxpbnV4IHNvdXJjZSB0cmVlLgorCisJICBUaGVuIGNvbmZpZ3VyZSB5b3VyIGtlcm5lbCBhcyB1c3VhbDogY2hvb3NlICJtIiBvciAieSIgdG8gM0RmeCBWb29kb28KKwlHcmFwaGljcyBpbiBzZWN0aW9uICJjb25zb2xlIi4gQ29tcGlsZSwgaW5zdGFsbCwgaGF2ZSBmdW4uLi4gYW5kIHBsZWFzZQorCWRyb3AgbWUgYSByZXBvcnQgOikKKworCitNb2R1bGUgVXNhZ2UKKwkKKwlXYXJuaW5ncy4KKwkjIFlvdSBzaG91bGQgcmVhZCBjb21wbGV0ZWx5IHRoaXMgc2VjdGlvbiBiZWZvcmUgaXNzdWluZyBhbnkgY29tbWFuZC4KKwkjIElmIHlvdSBoYXZlIG9ubHkgb25lIG1vbml0b3IgdG8gcGxheSB3aXRoLCBvbmNlIHlvdSBpbnNtb2QgdGhlCisJICBtb2R1bGUsIHRoZSAzZGZ4IHRha2VzIGNvbnRyb2wgb2YgdGhlIG91dHB1dCwgc28geW91J2xsIGhhdmUgdG8KKwkgIHBsdWcgdGhlIG1vbml0b3IgdG8gdGhlICJub3JtYWwiIHZpZGVvIGJvYXJkIGluIG9yZGVyIHRvIGlzc3VlCisJICB0aGUgY29tbWFuZHMsIG9yIHlvdSBjYW4gYmxpbmRseSB1c2Ugc3N0X2RiZ192Z2FwYXNzCisgICAgICAgICAgaW4gdGhlIHRvb2xzIGRpcmVjdG9yeSAoU2VlIFRvb2xzKS4gVGhlIGxhdGVzdCBzb2x1dGlvbiBpcyBwYXNzIHRoZQorCSAgcGFyYW1ldGVyIHZnYXBhc3M9MSB3aGVuIGluc21vZGRpbmcgdGhlIGRyaXZlci4gKFNlZSBLZXJuZWwvTW9kdWxlcworCSAgT3B0aW9ucykKKworCU1vZHVsZSBpbnNlcnRpb246CisJIyBpbnNtb2Qgc3N0ZmIubworCSAgeW91IHNob3VsZCBzZWUgc29tZSBzdHJhbmdlIG91dHB1dCBmcm9tZSB0aGUgYm9hcmQ6IAorCSAgYSBiaWcgYmx1ZSBzcXVhcmUsIGEgZ3JlZW4gYW5kIGEgcmVkIHNtYWxsIHNxdWFyZXMgYW5kIGEgdmVydGljYWwKKwkgIHdoaXRlIHJlY3RhbmdsZS4gd2h5ID8gdGhlIGZ1bmN0aW9uJ3MgbmFtZSBpcyBzZWxmIGV4cGxhbmF0b3J5IDoKKwkgICJzc3RmYl90ZXN0KCkiLi4uCisJICAoaWYgeW91IGRvbid0IGhhdmUgYSBzZWNvbmQgbW9uaXRvciwgeW91J2xsIGhhdmUgdG8gcGx1ZyB5b3VyIG1vbml0b3IKKwkgIGRpcmVjdGVseSB0byB0aGUgMkQgdmlkZW9jYXJkIHRvIHNlZSB3aGF0IHlvdSdyZSB0eXBpbmcpCisJIyBjb24yZmIgL2Rldi9mYnggL2Rldi90dHl4CisJICBiaW5kIGEgdHR5IHRvIHRoZSBuZXcgZnJhbWUgYnVmZmVyLiBpZiB5b3UgYWxyZWFkeSBoYXZlIGEgZnJhbWUKKwkgIGJ1ZmZlciBkcml2ZXIsIHRoZSB2b29kb28gZmIgd2lsbCBsaWtlbHkgYmUgL2Rldi9mYjEuIGlmIG5vdCwgCisJICB0aGUgZGV2aWNlIHdpbGwgYmUgL2Rldi9mYjAuIFlvdSBjYW4gY2hlY2sgdGhpcyBieSBkb2luZyBhIAorCSAgY2F0IC9wcm9jL2ZiLiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIGNvbjJmYiBpbiB0b29scy8gZGlyZWN0b3J5LgorCSAgaWYgeW91IGRvbid0IGhhdmUgYW5vdGhlciBmYiBkZXZpY2UsIHRoaXMgc3RlcCBpcyBzdXBlcmZsdW91cywKKwkgIGFzIHRoZSBjb25zb2xlIHN1YnN5c3RlbSBhdXRvbWFnaWNhbHkgYmluZHMgdHR5cyB0byB0aGUgZmIuCisJIyBzd2l0Y2ggdG8gdGhlIHZpcnR1YWwgY29uc29sZSB5b3UganVzdCBtYXBwZWQuICJ0YWRhYWEiIC4uLgorCisJTW9kdWxlIHJlbW92YWw6CisJIyBjb24yZmIgL2Rldi9mYnggL2Rldi90dHl4CisJICBiaW5kIHRoZSB0dHkgdG8gdGhlIG9sZCBmcmFtZSBidWZmZXIgc28gdGhlIG1vZHVsZSBjYW4gYmUgcmVtb3ZlZC4KKwkgIChob3cgZG9lcyBpdCB3b3JrIHdpdGggdmdhY29uID8gc2hvcnQgYW5zd2VyIDogaXQgZG9lc24ndCB3b3JrKQorCSMgcm1tb2Qgc3N0ZmIKKworCitLZXJuZWwvTW9kdWxlcyBPcHRpb25zCisKKwlZb3UgY2FuIHBhc3Mgc29tZSBvdGlvbnMgdG8gc3N0ZmIgbW9kdWxlLCBhbmQgdmlhIHRoZSBrZXJuZWwgY29tbWFuZAorCWxpbmUgd2hlbiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIGluIDoKKwlmb3IgbW9kdWxlIDogaW5zbW9kIHNzdGZiLm8gb3B0aW9uMT12YWx1ZTEgb3B0aW9uMj12YWx1ZTIgLi4uCisJaW4ga2VybmVsIDogIHZpZGVvPXNzdGZiOm9wdGlvbjEsb3B0aW9uMjp2YWx1ZTIsb3B0aW9uMyAuLi4KKwkKKwlzc3RmYiBzdXBwb3J0cyB0aGUgZm9sb3dpbmcgb3B0aW9ucyA6CisKK01vZHVsZQkJS2VybmVsCQlEZXNjcmlwdGlvbgorCit2Z2FwYXNzPTAJdmdhbm9wYXNzCUVuYWJsZSBvciBkaXNhYmxlIFZHQSBwYXNzdGhyb3UgY2FibGUuCit2Z2FwYXNzPTEJdmdhcGFzcwkJV2hlbiBlbmFibGVkLCB0aGUgbW9uaXRvciB3aWxsIGdldCB0aGUgc2lnbmFsCisJCQkJZnJvbSB0aGUgVkdBIGJvYXJkIGFuZCBub3QgZnJvbSB0aGUgdm9vZG9vLgorCQkJCURlZmF1bHQ6IG5vcGFzcworCittZW09eAkJbWVtOngJCUZvcmNlIGZyYW1lIGJ1ZmZlciBtZW1vcnkgaW4gTWlCCisJCQkJYWxsb3dlZCB2YWx1ZXM6IDAsIDEsIDIsIDQuCisJCQkJRGVmYXVsdDogMCAoPSBhdXRvZGV0ZWN0KQorCitpbnZlcnNlPTEJaW52ZXJzZQkJU3VwcG9zZWQgdG8gZW5hYmxlIGludmVyc2UgY29uc29sZS4KKwkJCQlkb2Vzbid0IHdvcmsgeWV0Li4uCisKK2NsaXBwaW5nPTEJY2xpcHBpbmcJRW5hYmxlIG9yIGRpc2FibGUgY2xpcHBpbmcuCitjbGlwcGluZz0wCW5vY2xpcHBpbmcJV2l0aCBjbGlwcGluZyBlbmFibGVkLCBhbGwgb2Zmc2NyZWVuCisJCQkJcmVhZHMgYW5kIHdyaXRlcyBhcmUgZGlzZ2FyZGVkLgorCQkJCURlZmF1bHQ6IGVuYWJsZSBjbGlwcGluZy4KKworZ2Z4Y2xrPXgJZ2Z4Y2xrOngJRm9yY2UgZ3JhcGhpYyBjbG9jayBmcmVxdWVuY3kgKGluIE1IeikuCisJCQkJQmUgY2FyZWZ1bGwgd2l0aCB0aGlzIG9wdGlvbiwgaXQgbWF5IGJlCisJCQkJREFOR0VST1VTLgorCQkJCURlZmF1bHQ6IGF1dG8gCisJCQkJCTUwTWh6IGZvciBWb29kb28gMSwKKwkJCQkJNzVNSHogZm9yIFZvb2RvbyAyLiAKKworc2xvd3BjaT0xCWZhc3RwY2kJCUVuYWJsZSBvciBkaXNhYmxlIGZhc3QgUENJIHJlYWQvd3JpdGVzLgorc2xvd3BjaT0xCXNsb3dwY2kJCURlZmF1bHQgOiBmYXN0cGNpCisKK2Rldj14CQlkZXY6eAkJQXR0YWNoIHRoZSBkcml2ZXIgdG8gZGV2aWNlIG51bWJlciB4LgorCQkJCTAgaXMgdGhlIGZpcnN0IGNvbXBhdGlibGUgYm9hcmQgKGluIAorCQkJCWxzcGNpIG9yZGVyKQorCitUb29scworCisJVGhlc2UgdG9vbHMgYXJlIG1vc3RseSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBidXQgeW91IGNhbiAKKwlmaW5kIHNvbWUgb2YgdGhlc2UgaW50ZXJlc3RpbmcgOgorCSAtIGNvbjJmYiAsIG1hcHMgYSB0dHkgdG8gYSBmYnJhbWVidWZmZXIgLgorCQljb24yZmIgL2Rldi9mYjEgL2Rldi90dHk1CisJIC0gc3N0X2RiZ192Z2FwYXNzICwgY2hhbmdlcyB2Z2EgcGFzc3Rocm91LiBZb3UgaGF2ZSB0byByZWNvbXBpbGUgdGhlCisJZHJpdmVyIHdpdGggU1NUX0RFQlVHIGFuZCBTU1RfREVCVUdfSU9DVEwgc2V0IHRvIDEKKwkJc3N0X2RiZ192Z2FwYXNzIC9kZXYvZmIxIDEgKGVuYWJsZXMgdmdhIGNhYmxlKQorCQlzc3RfZGJnX3ZnYXBhc3MgL2Rldi9mYjEgMCAoZGlzYWJsZXMgdmdhIGNhYmxlKQorCSAtIGdsaWRlX3Jlc2V0ICwgcmVzZXRzIHRoZSB2b29kb28gdXNpbmcgZ2xpZGUKKwkJdXNlIHRoaXMgYWZ0ZXIgcm1tb2Rpbmcgc3N0ZmIsIGlmIHRoZSBtb2R1bGUgcmVmdXNlcyB0bworCQlyZWluc2VydCAuCisKK0J1Z3MKKworCS0gRE8gTk9UIHVzZSBnbGlkZSB3aGlsZSB0aGUgc3N0ZmIgbW9kdWxlIGlzIGluLCB5b3UnbGwgbW9zdCBsaWtlbHkKKwloYW5nIHlvdXIgY29tcHV0ZXIuCisJLSBJZiB5b3Ugc2VlIHNvbWUgYXJ0ZWZhY3RzIChwaXhlbHMgbm90IGNsZWFuaW5nIGFuZCBzdHVmZiBsaWtlIHRoYXQpLCAKKwl0cnkgdHVybmluZyBvZmYgY2xpcHBpbmcgKGNsaXBwaW5nPTApLCBhbmQvb3IgdXNpbmcgc2xvd3BjaQorCS0gdGhlIGRyaXZlciBkb24ndCBkZXRlY3QgdGhlIDRNYiBmcmFtZSBidWZmZXIgdm9vZG9vcywgaXQgc2VlbXMgdGhhdAorCXRoZSAyIGxhc3QgTWJzIHdyYXAgYXJvdW5kLiBsb29raW5nIGludG8gdGhhdCAuCisJLSBUaGUgZHJpdmVyIGlzIDE2IGJwcCBvbmx5LCAyNC8zMiB3b24ndCB3b3JrLgorCS0gVGhlIGRyaXZlciBpcyBub3QgeW91cl9mYXZvcml0ZV90b3ktc2FmZS4gdGhpcyBpbmNsdWRlcyBTTVAuLi4KKyAgICAgICAgICBbQWN0dWFsbHkgZnJvbSBpbnNwZWN0aW9uIGl0IHNlZW1zIHRvIGJlIHNhZmUgLSBBbGFuXQorCS0gd2hlbiB1c2luZyBYRnJlZTg2IEZCZGV2IChYIG92ZXIgZmJkZXYpIHlvdSBtYXkgc2VlIHN0cmFuZ2UgY29sb3IKKwlwYXR0ZXJucyBhdCB0aGUgYm9yZGVyIG9mIHlvdXIgd2luZG93cyAodGhlIHBpeGVscyBsb3NlIHRoZSBsb3dlc3QKKwlieXRlIC0+IGJhc2ljYWx5IHRoZSBibHVlIGNvbXBvbmVudCBuZCBzb21lIG9mIHRoZSBncmVlbikgLiBJJ20gdW5hYmxlCisJdG8gcmVwcm9kdWNlIHRoaXMgd2l0aCBYRnJlZTg2LTMuMywgYnV0IG9uZSBvZiB0aGUgdGVzdGVycyBoYXMgdGhpcworCXByb2JsZW0gd2l0aCBYRnJlZTg2LTQuIGFwcGFyZW50bHkgcmVjZW50IFhmcmVlODYtNC54IHNvbHZlIHRoaXMKKwlwcm9ibGVtLgorCS0gSSBkaWRuJ3QgcmVhbGx5IHRlc3QgY2hhbmdpbmcgdGhlIHBhbGV0dGUsIHNvIHlvdSBtYXkgZmluZCBzb21lIHdlaXJkCisJdGhpbmdzIHdoZW4gcGxheWluZyB3aXRoIHRoYXQuCisJLSBTb21ldGltZXMgdGhlIGRyaXZlciB3aWxsIG5vdCByZWNvZ25pc2UgdGhlIERBQyAsIGFuZCB0aGUKKyAgICAgICAgaW5pdGlhbGlzYXRpb24gd2lsbCBmYWlsLiB0aGlzIGlzIHNwZWNpZmljYWx5IHRydWUgZm9yCisJdm9vZG9vIDIgYm9hcmRzICwgYnV0IGl0IHNob3VsZCBiZSBzb2x2ZWQgaW4gcmVjZW50IHZlcnNpb25zLiBwbGVhc2UKKwljb250YWN0IG1lIC4KKwktIHRoZSAyNC8zMiBpcyBub3QgbGlrZWx5IHRvIHdvcmsgYW55dGltZSBzb29uICwga25vd2luZyB0aGF0IHRoZQorCWhhcmR3YXJlIGRvZXMgLi4uIHVudXN1YWwgdGhpZ3MgaW4gMjQvMzIgYnBwCisJLSBXaGVuIHVzZWQgd2l0aCBhbnRoZXIgdmlkZW8gYm9hcmQsIGN1cnJlbnQgbGltaXRhdGlvbnMgb2YgbGludXgKKwljb25zb2xlIHN1YnN5c3RlbSBjYW4gY2F1c2Ugc29tZSB0cm91Ymxlcywgc3BlY2lmaWNhbHksIHlvdSBzaG91bGQKKwlkaXNhYmxlIHNvZnR3YXJlIHNjcm9sbGJhY2sgLCBhcyBpdCBjYW4gb29wcyBiYWRseSAuLi4KKworVG9kbworCisJLSBHZXQgcmlkIG9mIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGguCisJLSBCdXkgbW9yZSBjb2ZmZWUuCisJLSB0ZXN0L3BvcnQgdG8gb3RoZXIgYXJjaC4KKwktIHRyeSB0byBhZGQgcGFubmluZyB1c2luZyB0d2Vla3Mgd2l0aCBmcm9udCBhbmQgYmFjayBidWZmZXIgLgorCS0gdHJ5IHRvIGltcGxlbWVudCBhY2NlbCBvbiB2b29kb28yICwgdGhpcyBib2FyZCBjYW4gYWN0dWFseSBkbyBhIAorCSAgbG90IGluIDJEIGV2ZW4gaWYgaXQgd2FzIHNvbGQgYXMgYSAzRCBvbmx5IGJvYXJkIC4uLgorCitnaG96LgorCistLSAKK0dob3psYW5lIFRvdW1pIDxndG91bWlAbGFwb3N0ZS5uZXQ+CisKKworJERhdGU6IDIwMDIvMDUvMDkgMjA6MTE6NDUgJAoraHR0cDovL3NzdGZiLnNvdXJjZWZvcmdlLm5ldC9SRUFETUUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvdGdhZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi90Z2FmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUwMDgzYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvdGdhZmIudHh0CkBAIC0wLDAgKzEsNjkgQEAKKyRJZDogdGdhZmIudHh0LHYgMS4xLjIuMiAyMDAwLzA0LzA0IDA2OjUwOjE4IG1hdG8gRXhwICQKKworV2hhdCBpcyB0Z2FmYj8KKz09PT09PT09PT09PT09PQorCitUaGlzIGlzIGEgZHJpdmVyIGZvciBERUNDaGlwIDIxMDMwIGJhc2VkIGdyYXBoaWNzIGZyYW1lYnVmZmVycywgYS5rLmEuIFRHQQorY2FyZHMsIHdoaWNoIGFyZSB1c3VhbGx5IGZvdW5kIGluIG9sZGVyIERpZ2l0YWwgQWxwaGEgc3lzdGVtcy4gVGhlCitmb2xsb3dpbmcgbW9kZWxzIGFyZSBzdXBwb3J0ZWQ6CisKK1pMeFAtRTEgKDhicHAsIDIgTUIgVlJBTSkKK1pMeFAtRTIgKDMyYnBwLCA4IE1CIFZSQU0pCitaTHhQLUUzICgzMmJwcCwgMTYgTUIgVlJBTSwgWmJ1ZmZlcikKKworVGhpcyB2ZXJzaW9uIGlzIGFuIGFsbW9zdCBjb21wbGV0ZSByZXdyaXRlIG9mIHRoZSBjb2RlIHdyaXR0ZW4gYnkgR2VlcnQKK1V5dHRlcmhvZXZlbiwgd2hpY2ggd2FzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBUR0EgY29uc29sZSBjb2RlIHdyaXR0ZW4gYnkKK0pheSBFc3RhYnJvb2suCisKK01ham9yIG5ldyBmZWF0dXJlcyBzaW5jZSBMaW51eCAyLjAueDoKKworICogU3VwcG9ydCBmb3IgbXVsdGlwbGUgcmVzb2x1dGlvbnMKKyAqIFN1cHBvcnQgZm9yIGZpeGVkLWZyZXF1ZW5jeSBhbmQgb3RoZXIgb2RkYmFsbCBtb25pdG9ycyAKKyAgIChieSBhbGxvd2luZyB0aGUgdmlkZW8gbW9kZSB0byBiZSBzZXQgYXQgYm9vdCB0aW1lKQorCitVc2VyLXZpc2libGUgY2hhbmdlcyBzaW5jZSBMaW51eCAyLjIueDoKKworICogU3luYy1vbi1ncmVlbiBpcyBub3cgaGFuZGxlZCBwcm9wZXJseQorICogTW9yZSB1c2VmdWwgaW5mb3JtYXRpb24gaXMgcHJpbnRlZCBvbiBib290dXAKKyAgICh0aGlzIGhlbHBzIGlmIHBlb3BsZSBydW4gaW50byBwcm9ibGVtcykKKworVGhpcyBkcml2ZXIgZG9lcyBub3QgKHlldCkgc3VwcG9ydCB0aGUgVEdBMiBmYW1pbHkgb2YgZnJhbWVidWZmZXJzLCBzbyB0aGUKK1Bvd2VyU3Rvcm0gM0QzMC80RDIwIChhbHNvIGtub3duIGFzIFBCWEdCKSBjYXJkcyBhcmUgbm90IHN1cHBvcnRlZC4gVGhlc2UKK2NhbiBob3dldmVyIGJlIHVzZWQgd2l0aCB0aGUgc3RhbmRhcmQgVkdBIFRleHQgQ29uc29sZSBkcml2ZXIuCisKKworQ29uZmlndXJhdGlvbgorPT09PT09PT09PT09PQorCitZb3UgY2FuIHBhc3Mga2VybmVsIGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIHRnYWZiIHdpdGgKK2B2aWRlbz10Z2FmYjpvcHRpb24xLG9wdGlvbjI6dmFsdWUyLG9wdGlvbjMnIChtdWx0aXBsZSBvcHRpb25zIHNob3VsZCBiZQorc2VwYXJhdGVkIGJ5IGNvbW1hLCB2YWx1ZXMgYXJlIHNlcGFyYXRlZCBmcm9tIG9wdGlvbnMgYnkgYDonKS4KK0FjY2VwdGVkIG9wdGlvbnM6CisKK2ZvbnQ6WCAgICAtIGRlZmF1bHQgZm9udCB0byB1c2UuIEFsbCBmb250cyBhcmUgc3VwcG9ydGVkLCBpbmNsdWRpbmcgdGhlCisgICAgICAgICAgICBTVU4xMngyMiBmb250IHdoaWNoIGlzIHZlcnkgbmljZSBhdCBoaWdoIHJlc29sdXRpb25zLgorCittb2RlOlggICAgLSBkZWZhdWx0IHZpZGVvIG1vZGUuIFRoZSBmb2xsb3dpbmcgdmlkZW8gbW9kZXMgYXJlIHN1cHBvcnRlZDoKKyAgICAgICAgICAgIDY0MHg0ODAtNjAsIDgwMHg2MDAtNTYsIDY0MHg0ODAtNzIsIDgwMHg2MDAtNjAsIDgwMHg2MDAtNzIsIAorCSAgICAxMDI0eDc2OC02MCwgMTE1Mng4NjQtNjAsIDEwMjR4NzY4LTcwLCAxMDI0eDc2OC03NiwKKwkgICAgMTE1Mng4NjQtNzAsIDEyODB4MTAyNC02MSwgMTAyNHg3NjgtODUsIDEyODB4MTAyNC03MCwKKwkgICAgMTE1Mng4NjQtODQsIDEyODB4MTAyNC03NiwgMTI4MHgxMDI0LTg1CisgCisKK0tub3duIElzc3VlcworPT09PT09PT09PT09CisKK1RoZSBYRnJlZTg2IEZCRGV2IHNlcnZlciBoYXMgYmVlbiByZXBvcnRlZCBub3QgdG8gd29yaywgc2luY2UgdGdhZmIgZG9lc24ndCBkbworbW1hcCgpLiBSdW5uaW5nIHRoZSBzdGFuZGFyZCBYRjg2X1RHQSBzZXJ2ZXIgZnJvbSBYRnJlZTg2IDMuMy54IHdvcmtzIGZpbmUgZm9yCittZSwgaG93ZXZlciB0aGlzIHNlcnZlciBkb2VzIG5vdCBkbyBhY2NlbGVyYXRpb24sIHdoaWNoIG1ha2UgY2VydGFpbiBvcGVyYXRpb25zCitxdWl0ZSBzbG93LiBTdXBwb3J0IGZvciBhY2NlbGVyYXRpb24gaXMgYmVpbmcgcHJvZ3Jlc3NpdmVseSBpbnRlZ3JhdGVkIGluCitYRnJlZTg2IDQueC4KKworV2hlbiBydW5uaW5nIHRnYWZiIGluIHJlc29sdXRpb25zIGhpZ2hlciB0aGFuIDY0MHg0ODAsIG9uIHN3aXRjaGluZyBWQ3MgZnJvbQordGdhZmIgdG8gWEY4Nl9UR0EgMy4zLngsIHRoZSBlbnRpcmUgc2NyZWVuIGlzIG5vdCByZS1kcmF3biBhbmQgbXVzdCBiZSBtYW51YWxseQorcmVmcmVzaGVkLiBUaGlzIGlzIGFuIFggc2VydmVyIHByb2JsZW0sIG5vdCBhIHRnYWZiIHByb2JsZW0sIGFuZCBpcyBmaXhlZCBpbgorWEZyZWU4NiA0LjAuCisKK0Vuam95IQorCitNYXJ0aW4gTHVjaW5hIDxtYXRvQGtvdGVsbmEuc2s+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL3RyaWRlbnRmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL3RyaWRlbnRmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE2YzhhNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvdHJpZGVudGZiLnR4dApAQCAtMCwwICsxLDU0IEBACitUcmlkZW50ZmIgaXMgYSBmcmFtZWJ1ZmZlciBkcml2ZXIgZm9yIHNvbWUgVHJpZGVudCBjaGlwIGJhc2VkIGNhcmRzLgorCitUaGUgZm9sbG93aW5nIGxpc3Qgb2YgY2hpcHMgaXMgdGhvdWdodCB0byBiZSBzdXBwb3J0ZWQgYWx0aG91Z2ggbm90IGFsbCBhcmUKK3Rlc3RlZDoKKwordGhvc2UgZnJvbSB0aGUgSW1hZ2Ugc2VyaWVzIHdpdGggQ3liZXIgaW4gdGhlaXIgbmFtZXMgLSBhY2NlbGVyYXRlZAordGhvc2Ugd2l0aCBCbGFkZSBpbiB0aGVpciBuYW1lcyAoQmxhZGUzRCxDeWJlckJsYWRlLi4uKSAtIGFjY2VsZXJhdGVkCit0aGUgbmV3ZXIgQ3liZXJCbGFkZVhQIGZhbWlseSAgLSBub25hY2NlbGVyYXRlZAorCitPbmx5IFBDSS9BR1AgYmFzZWQgY2FyZHMgYXJlIHN1cHBvcnRlZCwgbm9uZSBvZiB0aGUgb2xkZXIgVHJpZGVudHMuCisKK0hvdyB0byB1c2UgaXQ/Cis9PT09PT09PT09PT09PQorCitXaGVuIGJvb3RpbmcgeW91IGNhbiBwYXNzIHRoZSB2aWRlbyBwYXJhbWV0ZXIuCit2aWRlbz10cmlkZW50ZmIKKworVGhlIHBhcmFtZXRlcnMgZm9yIHRyaWRlbnRmYiBhcmUgY29uY2F0ZW5hdGVkIHdpdGggYSAnOicgYXMgaW4gdGhpcyBleGFtcGxlLgorCit2aWRlbz10cmlkZW50ZmI6ODAweDYwMCxicHA9MTYsbm9hY2NlbAorCitUaGUgc2Vjb25kIGxldmVsIHBhcmFtZXRlcnMgdGhhdCB0cmlkZW50ZmIgdW5kZXJzdGFuZHMgYXJlOgorCitub2FjY2VsIC0gdHVybnMgb2ZmIGFjY2VsZXJhdGlvbiAod2hlbiBpdCBkb2Vzbid0IHdvcmsgZm9yIHlvdXIgY2FyZCkKK2FjY2VsIC0gZm9yY2UgdGV4dCBhY2NlbGVyYXRpb24gKGZvciBib2FyZHMgd2hpY2ggYnkgZGVmYXVsdCBhcmUgbm9hY2NlbGVkKQorCitmcAktIHVzZSBmbGF0IHBhbmVsIHJlbGF0ZWQgc3R1ZmYKK2NydCAJLSBhc3N1bWUgbW9uaXRvciBpcyBwcmVzZW50IGluc3RlYWQgb2YgZnAKKworY2VudGVyIAktIGZvciBmbGF0IHBhbmVscyBhbmQgcmVzb2x1dGlvbnMgc21hbGxlciB0aGFuIG5hdGl2ZSBzaXplIGNlbnRlciB0aGUKKwkgIGltYWdlLCBvdGhlcndpc2UgdXNlCitzdHJldGNoCisKK21lbXNpemUgLSBpbnRlZ2VyIHZhbHVlIGluIEtiLCB1c2UgaWYgeW91ciBjYXJkJ3MgbWVtb3J5IHNpemUgaXMgbWlzZGV0ZWN0ZWQuCisJICBsb29rIGF0IHRoZSBkcml2ZXIgb3V0cHV0IHRvIHNlZSB3aGF0IGl0IHNheXMgd2hlbiBpbml0aWFsaXppbmcuCittZW1kaWZmIC0gaW50ZWdlciB2YWx1ZSBpbiBLYixzaG91bGQgYmUgbm9uemVybyBpZiB5b3VyIGNhcmQgcmVwb3J0cworCSAgbW9yZSBtZW1vcnkgdGhhbiBpdCBhY3R1YWxseSBoYXMuRm9yIGluc3RhbmNlIG1pbmUgaXMgMTkySyBsZXNzIHRoYW4KKwkgIGRldGVjdGlvbiBzYXlzIGluIGFsbCB0aHJlZSBCSU9TIHNlbGVjdGFibGUgc2l0dWF0aW9ucyAyTSwgNE0sIDhNLgorCSAgT25seSB1c2UgaWYgeW91ciB2aWRlbyBtZW1vcnkgaXMgdGFrZW4gZnJvbSBtYWluIG1lbW9yeSBoZW5jZSBvZgorCSAgY29uZmlndXJhYmxlIHNpemUuT3RoZXJ3aXNlIHVzZSBtZW1zaXplLgorCSAgSWYgaW4gc29tZSBtb2RlcyB3aGljaCBiYXJlbHkgZml0IHRoZSBtZW1vcnkgeW91IHNlZSBnYXJiYWdlIGF0IHRoZSBib3R0b20KKwkgIHRoaXMgbWlnaHQgaGVscCBieSBub3QgbGV0dGluZyBjaGFuZ2UgdG8gdGhhdCBtb2RlIGFueW1vcmUuCisKK25hdGl2ZXggLSB0aGUgd2lkdGggaW4gcGl4ZWxzIG9mIHRoZSBmbGF0IHBhbmVsLklmIHlvdSBrbm93IGl0ICh1c3VhbGx5IDEwMjQKKwkgIDgwMCBvciAxMjgwKSBhbmQgaXQgaXMgbm90IHdoYXQgdGhlIGRyaXZlciBzZWVtcyB0byBkZXRlY3QgdXNlIGl0LgorCiticHAgIC0gYml0cyBwZXIgcGl4ZWwgKDgsMTYgb3IgMzIpCittb2RlIC0gYSBtb2RlIG5hbWUgbGlrZSA4MDB4NjAwIChhcyBkZXNjcmliZWQgaW4gRG9jdW1lbnRhdGlvbi9mYi9tb2RlZGIudHh0KQorCitVc2luZyBpbnNhbmUgdmFsdWVzIGZvciB0aGUgYWJvdmUgcGFyYW1ldGVycyB3aWxsIHByb2JhYmx5IHJlc3VsdCBpbiBkcml2ZXIKK21pc2JlaGF2aW91ciBzbyB0YWtlIGNhcmUoZm9yIGluc3RhbmNlIG1lbXNpemU9MTIzNDU2Nzggb3IgbWVtZGlmZj0yMzc4NCBvcgorbmF0aXZleD05MykKKworQ29udGFjdDogamFuaUBhc3RlY2huaXgucm8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvdmVzYWZiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvdmVzYWZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTRlMmY1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi92ZXNhZmIudHh0CkBAIC0wLDAgKzEsMTY3IEBACisKK1doYXQgaXMgdmVzYWZiPworPT09PT09PT09PT09PT09CisKK1RoaXMgaXMgYSBnZW5lcmljIGRyaXZlciBmb3IgYSBncmFwaGljIGZyYW1lYnVmZmVyIG9uIGludGVsIGJveGVzLgorCitUaGUgaWRlYSBpcyBzaW1wbGU6ICBUdXJuIG9uIGdyYXBoaWNzIG1vZGUgYXQgYm9vdCB0aW1lIHdpdGggdGhlIGhlbHAKK29mIHRoZSBCSU9TLCBhbmQgdXNlIHRoaXMgYXMgZnJhbWVidWZmZXIgZGV2aWNlIC9kZXYvZmIwLCBsaWtlIHRoZSBtNjhrCisoYW5kIG90aGVyKSBwb3J0cyBkby4KKworVGhpcyBtZWFucyB3ZSBkZWNpZGUgYXQgYm9vdCB0aW1lIHdoZW5ldmVyIHdlIHdhbnQgdG8gcnVuIGluIHRleHQgb3IKK2dyYXBoaWNzIG1vZGUuICBTd2l0Y2hpbmcgbW9kZSBsYXRlciBvbiAoaW4gcHJvdGVjdGVkIG1vZGUpIGlzCitpbXBvc3NpYmxlOyBCSU9TIGNhbGxzIHdvcmsgaW4gcmVhbCBtb2RlIG9ubHkuICBWRVNBIEJJT1MgRXh0ZW5zaW9ucworVmVyc2lvbiAyLjAgYXJlIHJlcXVpcmVkLCBiZWNhdXNlIHdlIG5lZWQgYSBsaW5lYXIgZnJhbWUgYnVmZmVyLgorCitBZHZhbnRhZ2VzOgorCisgKiBJdCBwcm92aWRlcyBhIG5pY2UgbGFyZ2UgY29uc29sZSAoMTI4IGNvbHMgKyA0OCBsaW5lcyB3aXRoIDEwMjR4NzY4KQorICAgd2l0aG91dCB1c2luZyB0aW55LCB1bnJlYWRhYmxlIGZvbnRzLgorICogWW91IGNhbiBydW4gWEY2OF9GQkRldiBvbiB0b3Agb2YgL2Rldi9mYjAgKD0+IG5vbi1hY2NlbGVyYXRlZCBYMTEKKyAgIHN1cHBvcnQgZm9yIGV2ZXJ5IFZCRSAyLjAgY29tcGxpYW50IGdyYXBoaWNzIGJvYXJkKS4KKyAqIE1vc3QgaW1wb3J0YW50OiBib290IGxvZ28gOi0pCisKK0Rpc2FkdmFudGFnZXM6CisKKyAqIGdyYXBoaWMgbW9kZSBpcyBzbG93ZXIgdGhhbiB0ZXh0IG1vZGUuLi4KKworCitIb3cgdG8gdXNlIGl0PworPT09PT09PT09PT09PT0KKworU3dpdGNoaW5nIG1vZGVzIGlzIGRvbmUgdXNpbmcgdGhlIHZnYT0uLi4gYm9vdCBwYXJhbWV0ZXIuICBSZWFkCitEb2N1bWVudGF0aW9uL3N2Z2EudHh0IGZvciBkZXRhaWxzLgorCitZb3Ugc2hvdWxkIGNvbXBpbGUgaW4gYm90aCB2Z2Fjb24gKGZvciB0ZXh0IG1vZGUpIGFuZCB2ZXNhZmIgKGZvcgorZ3JhcGhpY3MgbW9kZSkuIFdoaWNoIG9mIHRoZW0gdGFrZXMgb3ZlciB0aGUgY29uc29sZSBkZXBlbmRzIG9uCit3aGVuZXZlciB0aGUgc3BlY2lmaWVkIG1vZGUgaXMgdGV4dCBvciBncmFwaGljcy4KKworVGhlIGdyYXBoaWMgbW9kZXMgYXJlIE5PVCBpbiB0aGUgbGlzdCB3aGljaCB5b3UgZ2V0IGlmIHlvdSBib290IHdpdGgKK3ZnYT1hc2sgYW5kIGhpdCByZXR1cm4uIFRoZSBtb2RlIHlvdSB3aXNoIHRvIHVzZSBpcyBkZXJpdmVkIGZyb20gdGhlCitWRVNBIG1vZGUgbnVtYmVyLiBIZXJlIGFyZSB0aG9zZSBWRVNBIG1vZGUgbnVtYmVyczoKKworICAgIHwgNjQweDQ4MCAgODAweDYwMCAgMTAyNHg3NjggMTI4MHgxMDI0CistLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI1NiB8ICAweDEwMSAgICAweDEwMyAgICAweDEwNSAgICAweDEwNyAgIAorMzJrIHwgIDB4MTEwICAgIDB4MTEzICAgIDB4MTE2ICAgIDB4MTE5ICAgCis2NGsgfCAgMHgxMTEgICAgMHgxMTQgICAgMHgxMTcgICAgMHgxMUEgICAKKzE2TSB8ICAweDExMiAgICAweDExNSAgICAweDExOCAgICAweDExQiAgIAorCitUaGUgdmlkZW8gbW9kZSBudW1iZXIgb2YgdGhlIExpbnV4IGtlcm5lbCBpcyB0aGUgVkVTQSBtb2RlIG51bWJlciBwbHVzCisweDIwMC4KKyAKKyBMaW51eF9rZXJuZWxfbW9kZV9udW1iZXIgPSBWRVNBX21vZGVfbnVtYmVyICsgMHgyMDAKKworU28gdGhlIHRhYmxlIGZvciB0aGUgS2VybmVsIG1vZGUgbnVtYmVycyBhcmU6CisKKyAgICB8IDY0MHg0ODAgIDgwMHg2MDAgIDEwMjR4NzY4IDEyODB4MTAyNAorLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyNTYgfCAgMHgzMDEgICAgMHgzMDMgICAgMHgzMDUgICAgMHgzMDcgICAKKzMyayB8ICAweDMxMCAgICAweDMxMyAgICAweDMxNiAgICAweDMxOSAgIAorNjRrIHwgIDB4MzExICAgIDB4MzE0ICAgIDB4MzE3ICAgIDB4MzFBICAgCisxNk0gfCAgMHgzMTIgICAgMHgzMTUgICAgMHgzMTggICAgMHgzMUIgICAKKworVG8gZW5hYmxlIG9uZSBvZiB0aG9zZSBtb2RlcyB5b3UgaGF2ZSB0byBzcGVjaWZ5ICJ2Z2E9YXNrIiBpbiB0aGUKK2xpbG8uY29uZiBmaWxlIGFuZCByZXJ1biBMSUxPLiBUaGVuIHlvdSBjYW4gdHlwZSBpbiB0aGUgZGVzaXJlZAorbW9kZSBhdCB0aGUgInZnYT1hc2siIHByb21wdC4gRm9yIGV4YW1wbGUgaWYgeW91IGxpa2UgdG8gdXNlIAorMTAyNHg3Njh4MjU2IGNvbG9ycyB5b3UgaGF2ZSB0byBzYXkgIjMwNSIgYXQgdGhpcyBwcm9tcHQuCisKK0lmIHRoaXMgZG9lcyBub3Qgd29yaywgdGhpcyBtaWdodCBiZSBiZWNhdXNlIHlvdXIgQklPUyBkb2VzIG5vdCBzdXBwb3J0CitsaW5lYXIgZnJhbWVidWZmZXJzIG9yIGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG1vZGUgYXQgYWxsLgorRXZlbiBpZiB5b3VyIGJvYXJkIGRvZXMsIGl0IG1pZ2h0IGJlIHRoZSBCSU9TIHdoaWNoIGRvZXMgbm90LiAgVkVTQSBCSU9TCitFeHRlbnNpb25zIHYyLjAgYXJlIHJlcXVpcmVkLCAxLjIgaXMgTk9UIHN1ZmZpY2llbnQuICBZb3Ugd2lsbCBnZXQgYQorImJhZCBtb2RlIG51bWJlciIgbWVzc2FnZSBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZy4KKworMS4gTm90ZTogTElMTyBjYW5ub3QgaGFuZGxlIGhleCwgZm9yIGJvb3RpbmcgZGlyZWN0bHkgd2l0aCAKKyAgICAgICAgICJ2Z2E9bW9kZS1udW1iZXIiIHlvdSBoYXZlIHRvIHRyYW5zZm9ybSB0aGUgbnVtYmVycyB0byBkZWNpbWFsLgorMi4gTm90ZTogU29tZSBuZXdlciB2ZXJzaW9ucyBvZiBMSUxPIGFwcGVhciB0byB3b3JrIHdpdGggdGhvc2UgaGV4IHZhbHVlcywKKyAgICAgICAgIGlmIHlvdSBzZXQgdGhlIDB4IGluIGZyb250IG9mIHRoZSBudW1iZXJzLgorCitYMTEKKz09PQorCitYRjY4X0ZCRGV2IHNob3VsZCB3b3JrIGp1c3QgZmluZSwgYnV0IGl0IGlzIG5vbi1hY2NlbGVyYXRlZC4gIFJ1bm5pbmcKK2Fub3RoZXIgKGFjY2VsZXJhdGVkKSBYLVNlcnZlciBsaWtlIFhGODZfU1ZHQSBtaWdodCBvciBtaWdodCBub3Qgd29yay4KK0l0IGRlcGVuZHMgb24gWC1TZXJ2ZXIgYW5kIGdyYXBoaWNzIGJvYXJkLgorCitUaGUgWC1TZXJ2ZXIgbXVzdCByZXN0b3JlIHRoZSB2aWRlbyBtb2RlIGNvcnJlY3RseSwgZWxzZSB5b3UgZW5kIHVwCit3aXRoIGEgYnJva2VuIGNvbnNvbGUgKGFuZCB2ZXNhZmIgY2Fubm90IGRvIGFueXRoaW5nIGFib3V0IHRoaXMpLgorCisKK1JlZnJlc2ggcmF0ZXMKKz09PT09PT09PT09PT0KKworVGhlcmUgaXMgbm8gd2F5IHRvIGNoYW5nZSB0aGUgdmVzYWZiIHZpZGVvIG1vZGUgYW5kL29yIHRpbWluZ3MgYWZ0ZXIKK2Jvb3RpbmcgbGludXguICBJZiB5b3UgYXJlIG5vdCBoYXBweSB3aXRoIHRoZSA2MCBIeiByZWZyZXNoIHJhdGUsIHlvdQoraGF2ZSB0aGVzZSBvcHRpb25zOgorCisgKiBjb25maWd1cmUgYW5kIGxvYWQgdGhlIERPUy1Ub29scyBmb3IgeW91ciB0aGUgZ3JhcGhpY3MgYm9hcmQgKGlmCisgICBhdmFpbGFibGUpIGFuZCBib290IGxpbnV4IHdpdGggbG9hZGxpbi4KKyAqIHVzZSBhIG5hdGl2ZSBkcml2ZXIgKG1hdHJveGZiL2F0eWZiKSBpbnN0ZWFkIGlmIHZlc2FmYi4gIElmIG5vbmUKKyAgIGlzIGF2YWlsYWJsZSwgd3JpdGUgYSBuZXcgb25lIQorICogVkJFIDMuMCBtaWdodCB3b3JrIHRvby4gIEkgaGF2ZSBuZWl0aGVyIGEgZ2Z4IGJvYXJkIHdpdGggVkJFIDMuMAorICAgc3VwcG9ydCBub3IgdGhlIHNwZWNzLCBzbyBJIGhhdmUgbm90IGNoZWNrZWQgdGhpcyB5ZXQuCisKKworQ29uZmlndXJhdGlvbgorPT09PT09PT09PT09PQorCitUaGUgVkVTQSBCSU9TIHByb3ZpZGVzIHByb3RlY3RlZCBtb2RlIGludGVyZmFjZSBmb3IgY2hhbmdpbmcKK3NvbWUgcGFyYW1ldGVycy4gIHZlc2FmYiBjYW4gdXNlIGl0IGZvciBwYWxldHRlIGNoYW5nZXMgYW5kCit0byBwYW4gdGhlIGRpc3BsYXkuICBJdCBpcyB0dXJuZWQgb2ZmIGJ5IGRlZmF1bHQgYmVjYXVzZSBpdAorc2VlbXMgbm90IHRvIHdvcmsgd2l0aCBzb21lIEJJT1MgdmVyc2lvbnMsIGJ1dCB0aGVyZSBhcmUgb3B0aW9ucwordG8gdHVybiBpdCBvbi4KKworWW91IGNhbiBwYXNzIG9wdGlvbnMgdG8gdmVzYWZiIHVzaW5nICJ2aWRlbz12ZXNhZmI6b3B0aW9uIiBvbgordGhlIGtlcm5lbCBjb21tYW5kIGxpbmUuICBNdWx0aXBsZSBvcHRpb25zIHNob3VsZCBiZSBzZXBhcmF0ZWQKK2J5IGNvbW1hLCBsaWtlIHRoaXM6ICJ2aWRlbz12ZXNhZmI6eXBhbixpbnZlcnMiCisKK0FjY2VwdGVkIG9wdGlvbnM6CisKK2ludmVycwlubyBjb21tZW50Li4uCisKK3lwYW4JZW5hYmxlIGRpc3BsYXkgcGFubmluZyB1c2luZyB0aGUgVkVTQSBwcm90ZWN0ZWQgbW9kZSAKKwlpbnRlcmZhY2UuICBUaGUgdmlzaWJsZSBzY3JlZW4gaXMganVzdCBhIHdpbmRvdyBvZiB0aGUKKwl2aWRlbyBtZW1vcnksIGNvbnNvbGUgc2Nyb2xsaW5nIGlzIGRvbmUgYnkgY2hhbmdpbmcgdGhlCisJc3RhcnQgb2YgdGhlIHdpbmRvdy4KKwlwcm86CSogc2Nyb2xsaW5nIChmdWxsc2NyZWVuKSBpcyBmYXN0LCBiZWNhdXNlIHRoZXJlIGlzCisJCSAgbm8gbmVlZCB0byBjb3B5IGFyb3VuZCBkYXRhLgorCQkqIFlvdSdsbCBnZXQgc2Nyb2xsYmFjayAodGhlIFNoaWZ0LVBnVXAgdGhpbmcpLAorCQkgIHRoZSB2aWRlbyBtZW1vcnkgY2FuIGJlIHVzZWQgYXMgc2Nyb2xsYmFjayBidWZmZXIKKwlrb250cmE6ICogc2Nyb2xsaW5nIG9ubHkgcGFydHMgb2YgdGhlIHNjcmVlbiBjYXVzZXMgc29tZQorCQkgIHVnbHkgZmxpY2tlciBlZmZlY3RzIChib290IGxvZ28gZmxpY2tlcnMgZm9yCisJCSAgZXhhbXBsZSkuCisKK3l3cmFwCVNhbWUgYXMgeXBhbiwgYnV0IGFzc3VtZXMgeW91ciBnZnggYm9hcmQgY2FuIHdyYXAtYXJvdW5kIAorCXRoZSB2aWRlbyBtZW1vcnkgKGkuZS4gc3RhcnRzIHJlYWRpbmcgZnJvbSB0b3AgaWYgaXQKKwlyZWFjaGVzIHRoZSBlbmQgb2YgdmlkZW8gbWVtb3J5KS4gIEZhc3RlciB0aGFuIHlwYW4uCisKK3JlZHJhdwlzY3JvbGwgYnkgcmVkcmF3aW5nIHRoZSBhZmZlY3RlZCBwYXJ0IG9mIHRoZSBzY3JlZW4sIHRoaXMKKwlpcyB0aGUgc2FmZSAoYW5kIHNsb3cpIGRlZmF1bHQuCisKKwordmdhcGFsCVVzZSB0aGUgc3RhbmRhcmQgdmdhIHJlZ2lzdGVycyBmb3IgcGFsZXR0ZSBjaGFuZ2VzLgorCVRoaXMgaXMgdGhlIGRlZmF1bHQuCitwbWlwYWwJVXNlIHRoZSBwcm90ZWN0ZWQgbW9kZSBpbnRlcmZhY2UgZm9yIHBhbGV0dGUgY2hhbmdlcy4KKworbXRycglzZXR1cCBtZW1vcnkgdHlwZSByYW5nZSByZWdpc3RlcnMgZm9yIHRoZSB2ZXNhZmIgZnJhbWVidWZmZXIuCisKK3ZyZW1hcDpuCisgICAgICAgIHJlbWFwICduJyBNaUIgb2YgdmlkZW8gUkFNLiBJZiAwIG9yIG5vdCBzcGVjaWZpZWQsIHJlbWFwIG1lbW9yeQorCWFjY29yZGluZyB0byB2aWRlbyBtb2RlLiAoMi41LjY2IHBhdGNoL2lkZWEgYnkgQW50b25pbm8gRGFwbGFzCisJcmV2ZXJzZWQgdG8gZ2l2ZSBvdmVycmlkZSBwb3NzaWJpbGl0eSAoYWxsb2NhdGUgbW9yZSBmYiBtZW1vcnkKKwl0aGFuIHRoZSBrZXJuZWwgd291bGQpIHRvIDIuNCBieSB0bWJAaWtpLmZpKQorCit2dG90YWw6bgorICAgICAgICBpZiB0aGUgdmlkZW8gQklPUyBvZiB5b3VyIGNhcmQgaW5jb3JyZWN0bHkgZGV0ZXJtaW5lcyB0aGUgdG90YWwKKyAgICAgICAgYW1vdW50IG9mIHZpZGVvIFJBTSwgdXNlIHRoaXMgb3B0aW9uIHRvIG92ZXJyaWRlIHRoZSBCSU9TIChpbiBNaUIpLgorCitIYXZlIGZ1biEKKworICBHZXJkCisKKy0tCitHZXJkIEtub3JyIDxrcmF4ZWxAZ29sZGJhY2guaW4tYmVybGluLmRlPgorCitNaW5vciAobW9zdGx5IHR5cG8pIGNoYW5nZXMgCitieSBOaWNvIFNjaG1vaWdsIDxzY2htb2lnbEBydW1tcy51bmktbWFubmhlaW0uZGU+Cg==