RnJvbSBrZXJuZWwvc3VzcGVuZC5jOgoKICogQklHIEZBVCBXQVJOSU5HICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiBJZiB5b3UgaGF2ZSB1bnN1cHBvcnRlZCAoKikgZGV2aWNlcyB1c2luZyBETUEuLi4KICoJCQkJLi4uc2F5IGdvb2RieWUgdG8geW91ciBkYXRhLgogKgogKiBJZiB5b3UgdG91Y2ggYW55dGhpbmcgb24gZGlzayBiZXR3ZWVuIHN1c3BlbmQgYW5kIHJlc3VtZS4uLgogKgkJCQkuLi5raXNzIHlvdXIgZGF0YSBnb29kYnllLgogKgogKiBJZiB5b3VyIGRpc2sgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgc3VzcGVuZC4uLiAoSURFIGRvZXMpCiAqCQkJCS4uLnlvdSdkIGJldHRlciBmaW5kIG91dCBob3cgdG8gZ2V0IGFsb25nCiAqCQkJCSAgIHdpdGhvdXQgeW91ciBkYXRhLgogKgogKiBJZiB5b3UgY2hhbmdlIGtlcm5lbCBjb21tYW5kIGxpbmUgYmV0d2VlbiBzdXNwZW5kIGFuZCByZXN1bWUuLi4KICoJCQkgICAgICAgIC4uLnByZXBhcmUgZm9yIG5hc3R5IGZzY2sgb3Igd29yc2UuCiAqCiAqIElmIHlvdSBjaGFuZ2UgeW91ciBoYXJkd2FyZSB3aGlsZSBzeXN0ZW0gaXMgc3VzcGVuZGVkLi4uCiAqCQkJICAgICAgICAuLi53ZWxsLCBpdCB3YXMgbm90IGdvb2QgaWRlYS4KICoKICogKCopIHN1c3BlbmQvcmVzdW1lIHN1cHBvcnQgaXMgbmVlZGVkIHRvIG1ha2UgaXQgc2FmZS4KCllvdSBuZWVkIHRvIGFwcGVuZCByZXN1bWU9L2Rldi95b3VyX3N3YXBfcGFydGl0aW9uIHRvIGtlcm5lbCBjb21tYW5kCmxpbmUuIFRoZW4geW91IHN1c3BlbmQgYnkKCmVjaG8gc2h1dGRvd24gPiAvc3lzL3Bvd2VyL2Rpc2s7IGVjaG8gZGlzayA+IC9zeXMvcG93ZXIvc3RhdGUKCi4gSWYgeW91IGZlZWwgQUNQSSB3b3JrcyBwcmV0dHkgd2VsbCBvbiB5b3VyIHN5c3RlbSwgeW91IG1pZ2h0IHRyeQoKZWNobyBwbGF0Zm9ybSA+IC9zeXMvcG93ZXIvZGlzazsgZWNobyBkaXNrID4gL3N5cy9wb3dlci9zdGF0ZQoKCgpBcnRpY2xlIGFib3V0IGdvYWxzIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBTb2Z0d2FyZSBTdXNwZW5kIGZvciBMaW51eAp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgpBdXRob3I6IEeC4WJvciBLdXRpCkxhc3QgcmV2aXNlZDogMjAwMy0xMC0yMCBieSBQYXZlbCBNYWNoZWsKCklkZWEgYW5kIGdvYWxzIHRvIGFjaGlldmUKCk5vd2FkYXlzIGl0IGlzIGNvbW1vbiBpbiBzZXZlcmFsIGxhcHRvcHMgdGhhdCB0aGV5IGhhdmUgYSBzdXNwZW5kIGJ1dHRvbi4gSXQKc2F2ZXMgdGhlIHN0YXRlIG9mIHRoZSBtYWNoaW5lIHRvIGEgZmlsZXN5c3RlbSBvciB0byBhIHBhcnRpdGlvbiBhbmQgc3dpdGNoZXMKdG8gc3RhbmRieSBtb2RlLiBMYXRlciByZXN1bWluZyB0aGUgbWFjaGluZSB0aGUgc2F2ZWQgc3RhdGUgaXMgbG9hZGVkIGJhY2sgdG8KcmFtIGFuZCB0aGUgbWFjaGluZSBjYW4gY29udGludWUgaXRzIHdvcmsuIEl0IGhhcyB0d28gcmVhbCBiZW5lZml0cy4gRmlyc3Qgd2UKc2F2ZSBvdXJzZWx2ZXMgdGhlIHRpbWUgbWFjaGluZSBnb2VzIGRvd24gYW5kIGxhdGVyIGJvb3RzIHVwLCBlbmVyZ3kgY29zdHMKYXJlIHJlYWwgaGlnaCB3aGVuIHJ1bm5pbmcgZnJvbSBiYXR0ZXJpZXMuIFRoZSBvdGhlciBnYWluIGlzIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0bwppbnRlcnJ1cHQgb3VyIHByb2dyYW1zIHNvIHByb2Nlc3NlcyB0aGF0IGFyZSBjYWxjdWxhdGluZyBzb21ldGhpbmcgZm9yIGEgbG9uZwp0aW1lIHNob3VsZG4ndCBuZWVkIHRvIGJlIHdyaXR0ZW4gaW50ZXJydXB0aWJsZS4KCnN3c3VzcCBzYXZlcyB0aGUgc3RhdGUgb2YgdGhlIG1hY2hpbmUgaW50byBhY3RpdmUgc3dhcHMgYW5kIHRoZW4gcmVib290cyBvcgpwb3dlcmRvd25zLiAgWW91IG11c3QgZXhwbGljaXRseSBzcGVjaWZ5IHRoZSBzd2FwIHBhcnRpdGlvbiB0byByZXN1bWUgZnJvbSB3aXRoCmBgcmVzdW1lPScnIGtlcm5lbCBvcHRpb24uIElmIHNpZ25hdHVyZSBpcyBmb3VuZCBpdCBsb2FkcyBhbmQgcmVzdG9yZXMgc2F2ZWQKc3RhdGUuIElmIHRoZSBvcHRpb24gYGBub3Jlc3VtZScnIGlzIHNwZWNpZmllZCBhcyBhIGJvb3QgcGFyYW1ldGVyLCBpdCBza2lwcwp0aGUgcmVzdW1pbmcuCgpJbiB0aGUgbWVhbnRpbWUgd2hpbGUgdGhlIHN5c3RlbSBpcyBzdXNwZW5kZWQgeW91IHNob3VsZCBub3QgYWRkL3JlbW92ZSBhbnkKb2YgdGhlIGhhcmR3YXJlLCB3cml0ZSB0byB0aGUgZmlsZXN5c3RlbXMsIGV0Yy4KClNsZWVwIHN0YXRlcyBzdW1tYXJ5Cj09PT09PT09PT09PT09PT09PT09CgpUaGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IGludGVyZmFjZXMgeW91IGNhbiB1c2UsIC9wcm9jL2FjcGkgc2hvdWxkCndvcmsgbGlrZSB0aGlzOgoKSW4gYSByZWFsbHkgcGVyZmVjdCB3b3JsZDoKZWNobyAxID4gL3Byb2MvYWNwaS9zbGVlcCAgICAgICAjIGZvciBzdGFuZGJ5CmVjaG8gMiA+IC9wcm9jL2FjcGkvc2xlZXAgICAgICAgIyBmb3Igc3VzcGVuZCB0byByYW0KZWNobyAzID4gL3Byb2MvYWNwaS9zbGVlcCAgICAgICAjIGZvciBzdXNwZW5kIHRvIHJhbSwgYnV0IHdpdGggbW9yZSBwb3dlciBjb25zZXJ2YXRpdmUKZWNobyA0ID4gL3Byb2MvYWNwaS9zbGVlcCAgICAgICAjIGZvciBzdXNwZW5kIHRvIGRpc2sKZWNobyA1ID4gL3Byb2MvYWNwaS9zbGVlcCAgICAgICAjIGZvciBzaHV0ZG93biB1bmZyaWVuZGx5IHRoZSBzeXN0ZW0KCmFuZCBwZXJoYXBzCmVjaG8gNGIgPiAvcHJvYy9hY3BpL3NsZWVwICAgICAgIyBmb3Igc3VzcGVuZCB0byBkaXNrIHZpYSBzNGJpb3MKCkZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09CgpROiB3ZWxsLCBzdXNwZW5kaW5nIGEgc2VydmVyIGlzIElNSE8gYSByZWFsbHkgc3R1cGlkIHRoaW5nLApidXQuLi4gKERpZWdvIFp1Y2NhdG8pOgoKQTogWW91IGJvdWdodCBuZXcgVVBTIGZvciB5b3VyIHNlcnZlci4gSG93IGRvIHlvdSBpbnN0YWxsIGl0IHdpdGhvdXQKYnJpbmdpbmcgbWFjaGluZSBkb3duPyBTdXNwZW5kIHRvIGRpc2ssIHJlYXJyYW5nZSBwb3dlciBjYWJsZXMsCnJlc3VtZS4KCllvdSBoYXZlIHlvdXIgc2VydmVyIG9uIFVQUy4gUG93ZXIgZGllZCwgYW5kIFVQUyBpcyBpbmRpY2F0aW5nIDMwCnNlY29uZHMgdG8gZmFpbHVyZS4gV2hhdCBkbyB5b3UgZG8/IFN1c3BlbmQgdG8gZGlzay4KCkV0aGVybmV0IGNhcmQgaW4geW91ciBzZXJ2ZXIgZGllZC4gWW91IHdhbnQgdG8gcmVwbGFjZSBpdC4gWW91cgpzZXJ2ZXIgaXMgbm90IGhvdHBsdWcgY2FwYWJsZS4gV2hhdCBkbyB5b3UgZG8/IFN1c3BlbmQgdG8gZGlzaywKcmVwbGFjZSBldGhlcm5ldCBjYXJkLCByZXN1bWUuIElmIHlvdSBhcmUgZmFzdCB5b3VyIHVzZXJzIHdpbGwgbm90CmV2ZW4gc2VlIGJyb2tlbiBjb25uZWN0aW9ucy4KCgpROiBNYXliZSBJJ20gbWlzc2luZyBzb21ldGhpbmcsIGJ1dCB3aHkgZG9uJ3QgdGhlIHJlZ3VsYXIgSS9PIHBhdGhzIHdvcms/CgpBOiBXZSBkbyB1c2UgdGhlIHJlZ3VsYXIgSS9PIHBhdGhzLiBIb3dldmVyIHdlIGNhbm5vdCByZXN0b3JlIHRoZSBkYXRhCnRvIGl0cyBvcmlnaW5hbCBsb2NhdGlvbiBhcyB3ZSBsb2FkIGl0LiBUaGF0IHdvdWxkIGNyZWF0ZSBhbgppbmNvbnNpc3RlbnQga2VybmVsIHN0YXRlIHdoaWNoIHdvdWxkIGNlcnRhaW5seSByZXN1bHQgaW4gYW4gb29wcy4KSW5zdGVhZCwgd2UgbG9hZCB0aGUgaW1hZ2UgaW50byB1bnVzZWQgbWVtb3J5IGFuZCB0aGVuIGF0b21pY2FsbHkgY29weQppdCBiYWNrIHRvIGl0IG9yaWdpbmFsIGxvY2F0aW9uLiBUaGlzIGltcGxpZXMsIG9mIGNvdXJzZSwgYSBtYXhpbXVtCmltYWdlIHNpemUgb2YgaGFsZiB0aGUgYW1vdW50IG9mIG1lbW9yeS4KClRoZXJlIGFyZSB0d28gc29sdXRpb25zIHRvIHRoaXM6CgoqIHJlcXVpcmUgaGFsZiBvZiBtZW1vcnkgdG8gYmUgZnJlZSBkdXJpbmcgc3VzcGVuZC4gVGhhdCB3YXkgeW91IGNhbgpyZWFkICJuZXciIGRhdGEgb250byBmcmVlIHNwb3RzLCB0aGVuIGNsaSBhbmQgY29weQoKKiBhc3N1bWUgd2UgaGFkIHNwZWNpYWwgInBvbGxpbmciIGlkZSBkcml2ZXIgdGhhdCBvbmx5IHVzZXMgbWVtb3J5CmJldHdlZW4gMC02NDBLQi4gVGhhdCB3YXksIEknZCBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IDAtNjQwS0IgaXMgZnJlZQpkdXJpbmcgc3VzcGVuZGluZywgYnV0IG90aGVyd2lzZSBpdCB3b3VsZCB3b3JrLi4uCgpzdXNwZW5kMiBzaGFyZXMgdGhpcyBmdW5kYW1lbnRhbCBsaW1pdGF0aW9uLCBidXQgZG9lcyBub3QgaW5jbHVkZSB1c2VyCmRhdGEgYW5kIGRpc2sgY2FjaGVzIGludG8gInVzZWQgbWVtb3J5IiBieSBzYXZpbmcgdGhlbSBpbgphZHZhbmNlLiBUaGF0IG1lYW5zIHRoYXQgdGhlIGxpbWl0YXRpb24gZ29lcyBhd2F5IGluIHByYWN0aWNlLgoKUTogRG9lcyBsaW51eCBzdXBwb3J0IEFDUEkgUzQ/CgpBOiBZZXMuIFRoYXQncyB3aGF0IGVjaG8gcGxhdGZvcm0gPiAvc3lzL3Bvd2VyL2Rpc2sgZG9lcy4KClE6IE15IG1hY2hpbmUgZG9lc24ndCB3b3JrIHdpdGggQUNQSS4gSG93IGNhbiBJIHVzZSBzd3N1c3AgdGhhbiA/CgpBOiBEbyBhIHJlYm9vdCgpIHN5c2NhbGwgd2l0aCByaWdodCBwYXJhbWV0ZXJzLiBXYXJuaW5nOiBnbGliYyBnZXRzIGluCml0cyB3YXksIHNvIGNoZWNrIHdpdGggc3RyYWNlOgoKcmVib290KExJTlVYX1JFQk9PVF9NQUdJQzEsIExJTlVYX1JFQk9PVF9NQUdJQzIsIDB4ZDAwMGZjZTIpCgooVGhhbmtzIHRvIFBldGVyIE9zdGVybHVuZDopCgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzeXNjYWxsLmg+CgojZGVmaW5lIExJTlVYX1JFQk9PVF9NQUdJQzEgICAgIDB4ZmVlMWRlYWQKI2RlZmluZSBMSU5VWF9SRUJPT1RfTUFHSUMyICAgICA2NzIyNzQ3OTMKI2RlZmluZSBMSU5VWF9SRUJPT1RfQ01EX1NXX1NVU1BFTkQgICAgIDB4RDAwMEZDRTIKCmludCBtYWluKCkKewogICAgc3lzY2FsbChTWVNfcmVib290LCBMSU5VWF9SRUJPT1RfTUFHSUMxLCBMSU5VWF9SRUJPT1RfTUFHSUMyLAogICAgICAgICAgICBMSU5VWF9SRUJPT1RfQ01EX1NXX1NVU1BFTkQsIDApOwogICAgcmV0dXJuIDA7Cn0KCkFsc28gL3N5cy8gaW50ZXJmYWNlIHNob3VsZCBiZSBzdGlsbCBwcmVzZW50LgoKUTogV2hhdCBpcyAnc3VzcGVuZDInPwoKQTogc3VzcGVuZDIgaXMgJ1NvZnR3YXJlIFN1c3BlbmQgMicsIGEgZm9ya2VkIGltcGxlbWVudGF0aW9uIG9mCnN1c3BlbmQtdG8tZGlzayB3aGljaCBpcyBhdmFpbGFibGUgYXMgc2VwYXJhdGUgcGF0Y2hlcyBmb3IgMi40IGFuZCAyLjYKa2VybmVscyBmcm9tIHN3c3VzcC5zb3VyY2Vmb3JnZS5uZXQuIEl0IGluY2x1ZGVzIHN1cHBvcnQgZm9yIFNNUCwgNEdCCmhpZ2htZW0gYW5kIHByZWVtcHRpb24uIEl0IGFsc28gaGFzIGEgZXh0ZW5zaWJsZSBhcmNoaXRlY3R1cmUgdGhhdAphbGxvd3MgZm9yIGFyYml0cmFyeSB0cmFuc2Zvcm1hdGlvbnMgb24gdGhlIGltYWdlIChjb21wcmVzc2lvbiwKZW5jcnlwdGlvbikgYW5kIGFyYml0cmFyeSBiYWNrZW5kcyBmb3Igd3JpdGluZyB0aGUgaW1hZ2UgKGVnIHRvIHN3YXAKb3IgYW4gTkZTIHNoYXJlW1dvcmsgSW4gUHJvZ3Jlc3NdKS4gUXVlc3Rpb25zIHJlZ2FyZGluZyBzdXNwZW5kMgpzaG91bGQgYmUgc2VudCB0byB0aGUgbWFpbGluZyBsaXN0IGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBzdXNwZW5kMgp3ZWJzaXRlLCBhbmQgbm90IHRvIHRoZSBMaW51eCBLZXJuZWwgTWFpbGluZyBMaXN0LiBXZSBhcmUgd29ya2luZwp0b3dhcmQgbWVyZ2luZyBzdXNwZW5kMiBpbnRvIHRoZSBtYWlubGluZSBrZXJuZWwuCgpROiBBIGtlcm5lbCB0aHJlYWQgbXVzdCB2b2x1bnRhcmlseSBmcmVlemUgaXRzZWxmIChjYWxsICdyZWZyaWdlcmF0b3InKS4KSSBmb3VuZCBzb21lIGtlcm5lbCB0aHJlYWRzIHRoYXQgZG9uJ3QgZG8gaXQsIGFuZCB0aGV5IGRvbid0IGZyZWV6ZQpzbyB0aGUgc3lzdGVtIGNhbid0IHNsZWVwLiBJcyB0aGlzIGEga25vd24gYmVoYXZpb3I/CgpBOiBBbGwgc3VjaCBrZXJuZWwgdGhyZWFkcyBuZWVkIHRvIGJlIGZpeGVkLCBvbmUgYnkgb25lLiBTZWxlY3QgdGhlCnBsYWNlIHdoZXJlIHRoZSB0aHJlYWQgaXMgc2FmZSB0byBiZSBmcm96ZW4gKG5vIGtlcm5lbCBzZW1hcGhvcmVzCnNob3VsZCBiZSBoZWxkIGF0IHRoYXQgcG9pbnQgYW5kIGl0IG11c3QgYmUgc2FmZSB0byBzbGVlcCB0aGVyZSksIGFuZAphZGQ6CgogICAgICAgICAgICBpZiAoY3VycmVudC0+ZmxhZ3MgJiBQRl9GUkVFWkUpCiAgICAgICAgICAgICAgICAgICAgcmVmcmlnZXJhdG9yKFBGX0ZSRUVaRSk7CgpJZiB0aGUgdGhyZWFkIGlzIG5lZWRlZCBmb3Igd3JpdGluZyB0aGUgaW1hZ2UgdG8gc3RvcmFnZSwgeW91IHNob3VsZAppbnN0ZWFkIHNldCB0aGUgUEZfTk9GUkVFWkUgcHJvY2VzcyBmbGFnIHdoZW4gY3JlYXRpbmcgdGhlIHRocmVhZC4KCgpROiBXaGF0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYmV0d2VlbiAicGxhdGZvcm0iLCAic2h1dGRvd24iIGFuZAoiZmlybXdhcmUiIGluIC9zeXMvcG93ZXIvZGlzaz8KCkE6CgpzaHV0ZG93bjogc2F2ZSBzdGF0ZSBpbiBsaW51eCwgdGhlbiB0ZWxsIGJpb3MgdG8gcG93ZXJkb3duCgpwbGF0Zm9ybTogc2F2ZSBzdGF0ZSBpbiBsaW51eCwgdGhlbiB0ZWxsIGJpb3MgdG8gcG93ZXJkb3duIGFuZCBibGluawogICAgICAgICAgInN1c3BlbmRlZCBsZWQiCgpmaXJtd2FyZTogdGVsbCBiaW9zIHRvIHNhdmUgc3RhdGUgaXRzZWxmIFtuZWVkcyBCSU9TLXNwZWNpZmljIHN1c3BlbmQKCSAgcGFydGl0aW9uLCBhbmQgaGFzIHZlcnkgbGl0dGxlIHRvIGRvIHdpdGggc3dzdXNwXQoKInBsYXRmb3JtIiBpcyBhY3R1YWxseSByaWdodCB0aGluZyB0byBkbywgYnV0ICJzaHV0ZG93biIgaXMgbW9zdApyZWxpYWJsZS4KClE6IEkgZG8gbm90IHVuZGVyc3RhbmQgd2h5IHlvdSBoYXZlIHN1Y2ggc3Ryb25nIG9iamVjdGlvbnMgdG8gaWRlYSBvZgpzZWxlY3RpdmUgc3VzcGVuZC4KCkE6IERvIHNlbGVjdGl2ZSBzdXNwZW5kIGR1cmluZyBydW50aW1lIHBvd2VyIG1hbmFnbWVudCwgdGhhdCdzIG9rYXkuIEJ1dAppdHMgdXNlbGVzcyBmb3Igc3VzcGVuZC10by1kaXNrLiAoQW5kIEkgZG8gbm90IHNlZSBob3cgeW91IGNvdWxkIHVzZQppdCBmb3Igc3VzcGVuZC10by1yYW0sIEkgaG9wZSB5b3UgZG8gbm90IHdhbnQgdGhhdCkuCgpMZXRzIHNlZSwgc28geW91IHN1Z2dlc3QgdG8KCiogU1VTUEVORCBhbGwgYnV0IHN3YXAgZGV2aWNlIGFuZCBwYXJlbnRzCiogU25hcHNob3QKKiBXcml0ZSBpbWFnZSB0byBkaXNrCiogU1VTUEVORCBzd2FwIGRldmljZSBhbmQgcGFyZW50cwoqIFBvd2VyZG93bgoKT2ggbm8sIHRoYXQgZG9lcyBub3Qgd29yaywgaWYgc3dhcCBkZXZpY2Ugb3IgaXRzIHBhcmVudHMgdXNlcyBETUEsCnlvdSd2ZSBjb3JydXB0ZWQgZGF0YS4gWW91J2QgaGF2ZSB0byBkbwoKKiBTVVNQRU5EIGFsbCBidXQgc3dhcCBkZXZpY2UgYW5kIHBhcmVudHMKKiBGUkVFWkUgc3dhcCBkZXZpY2UgYW5kIHBhcmVudHMKKiBTbmFwc2hvdAoqIFVORlJFRVpFIHN3YXAgZGV2aWNlIGFuZCBwYXJlbnRzCiogV3JpdGUKKiBTVVNQRU5EIHN3YXAgZGV2aWNlIGFuZCBwYXJlbnRzCgpXaGljaCBtZWFucyB0aGF0IHlvdSBzdGlsbCBuZWVkIHRoYXQgRlJFRVpFIHN0YXRlLCBhbmQgeW91IGdldCBtb3JlCmNvbXBsaWNhdGVkIGNvZGUuIChBbmQgSSBoYXZlIG5vdCB5ZXQgaW50cm9kdWNlIGRldGFpbHMgbGlrZSBzeXN0ZW0KZGV2aWNlcykuCgpROiBUaGVyZSBkb24ndCBzZWVtIHRvIGJlIGFueSBnZW5lcmFsbHkgdXNlZnVsIGJlaGF2aW9yYWwKZGlzdGluY3Rpb25zIGJldHdlZW4gU1VTUEVORCBhbmQgRlJFRVpFLgoKQTogRG9pbmcgU1VTUEVORCB3aGVuIHlvdSBhcmUgYXNrZWQgdG8gZG8gRlJFRVpFIGlzIGFsd2F5cyBjb3JyZWN0LApidXQgaXQgbWF5IGJlIHVubmVjY2Vzc2FyaWx5IHNsb3cuIElmIHlvdSB3YW50IFVTQiB0byBzdGF5IHNpbXBsZSwKc2xvd25lc3MgbWF5IG5vdCBtYXR0ZXIgdG8geW91LiBJdCBjYW4gYWx3YXlzIGJlIGZpeGVkIGxhdGVyLgoKRm9yIGRldmljZXMgbGlrZSBkaXNrIGl0IGRvZXMgbWF0dGVyLCB5b3UgZG8gbm90IHdhbnQgdG8gc3BpbmRvd24gZm9yCkZSRUVaRS4KClE6IEFmdGVyIHJlc3VtaW5nLCBzeXN0ZW0gaXMgcGFnaW5nIGhlYXZpbGx5LCBsZWFkaW5nIHRvIHZlcnkgYmFkIGludGVyYWN0aXZpdHkuCgpBOiBUcnkgcnVubmluZwoKY2F0IGBjYXQgL3Byb2MvWzAtOV0qL21hcHMgfCBncmVwIC8gfCBzZWQgJ3M6LiogLzovOicgfCBzb3J0IC11YCA+IC9kZXYvbnVsbAoKYWZ0ZXIgcmVzdW1lLiBzd2Fwb2ZmIC1hOyBzd2Fwb24gLWEgbWF5IGFsc28gYmUgdXNlZnVsbC4K