V2Fzbid0IHRoaXMgcGFydCBvZiBBdWRpb0NkQ29sbGVjdGlvbj8gSG93IGRpZCB0aGF0IGV2ZXIg d29yaz8KCk9uIFN1biwgRmViIDE3LCAyMDEzIGF0IDY6MzkgUE0sIE1hdMSbaiBMYWl0bCA8bWF0 ZWpAbGFpdGwuY3o+IHdyb3RlOgo+IEdpdCBjb21taXQgZDYyNTFlMDgwMTIwNTZiMWUzOTIwZWRi N2FlMmQ0NTFiY2RmOTIxOCBieSBNYXTEm2ogTGFpdGwuCj4gQ29tbWl0dGVkIG9uIDE3LzAyLzIw MTMgYXQgMTg6MzguCj4gUHVzaGVkIGJ5IGxhaXRsIGludG8gYnJhbmNoICdtYXN0ZXInLgo+Cj4g UmVtb3ZlIHVudXNlZCBBdWRpb0NkVHJhY2tQcm92aWRlcgo+Cj4gQW1vdW50IG9mIGNyYXAgd2Ug aGF2ZSBuZXZlciBzdG9wcyB0byBzdXJwcmlzZSBtZS4KPgo+IE0gICswICAgIC0xMSAgIHNyYy9D TWFrZUxpc3RzLnR4dAo+IEQgICswICAgIC00OSAgIHNyYy9jb3JlLWltcGwvbWV0YS9jZGRhL0F1 ZGlvQ2RUcmFja1Byb3ZpZGVyLmNwcAo+IEQgICswICAgIC00NiAgIHNyYy9jb3JlLWltcGwvbWV0 YS9jZGRhL0F1ZGlvQ2RUcmFja1Byb3ZpZGVyLmgKPiBEICArMCAgICAtMTIzICBzcmMvY29yZS1p bXBsL21ldGEvY2RkYS9BdWRpb0NkVHJhY2tQcm92aWRlcl9wLmNwcAo+IEQgICswICAgIC00MiAg IHNyYy9jb3JlLWltcGwvbWV0YS9jZGRhL0F1ZGlvQ2RUcmFja1Byb3ZpZGVyX3AuaAo+Cj4gaHR0 cDovL2NvbW1pdHMua2RlLm9yZy9hbWFyb2svZDYyNTFlMDgwMTIwNTZiMWUzOTIwZWRiN2FlMmQ0 NTFiY2RmOTIxOAo+Cj4gZGlmZiAtLWdpdCBhL3NyYy9DTWFrZUxpc3RzLnR4dCBiL3NyYy9DTWFr ZUxpc3RzLnR4dAo+IGluZGV4IDA0M2RjNjQuLjExNTJjYTkgMTAwNjQ0Cj4gLS0tIGEvc3JjL0NN YWtlTGlzdHMudHh0Cj4gKysrIGIvc3JjL0NNYWtlTGlzdHMudHh0Cj4gQEAgLTQyOCwxNyArNDI4 LDYgQEAga2RlNF9hZGRfdWlfZmlsZXMobGlicGxheWxpc3RfU1JDUwo+ICApCj4KPiAgIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCj4gLSMgQVVESU8gQ0QgU1VQUE9SVAo+IC0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAtCj4gLWlmKEtE RU1VTFRJTUVESUFfRk9VTkQpCj4gLSAgICBzZXQoYXVkaW9jZHN1cHBvcnRfU1JDUwo+IC0gICAg ICAgIGNvcmUtaW1wbC9tZXRhL2NkZGEvQXVkaW9DZFRyYWNrUHJvdmlkZXIuY3BwCj4gLSAgICAg ICAgY29yZS1pbXBsL21ldGEvY2RkYS9BdWRpb0NkVHJhY2tQcm92aWRlcl9wLmNwcAo+IC0gICAg ICAgKQo+IC1lbmRpZihLREVNVUxUSU1FRElBX0ZPVU5EKQo+IC0KPiAtIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCj4g ICMgRFlOQU1JQwo+ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPiAgc2V0KGxpYmR5bmFtaWNfU1JDUwo+IGRpZmYg LS1naXQgYS9zcmMvY29yZS1pbXBsL21ldGEvY2RkYS9BdWRpb0NkVHJhY2tQcm92aWRlci5jcHAg Yi9zcmMvY29yZS1pbXBsL21ldGEvY2RkYS9BdWRpb0NkVHJhY2tQcm92aWRlci5jcHAKPiBkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCA3MDJlMzI0Li4wMDAwMDAwCj4gLS0tIGEvc3Jj L2NvcmUtaW1wbC9tZXRhL2NkZGEvQXVkaW9DZFRyYWNrUHJvdmlkZXIuY3BwCj4gKysrIC9kZXYv bnVsbAo+IEBAIC0xLDQ5ICswLDAgQEAKPiAtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKPiAtICogQ29weXJpZ2h0IChjKSAyMDA4IE1heGltaWxpYW4gS29zc2ljayA8bWF4aW1pbGlh bi5rb3NzaWNrQGdvb2dsZW1haWwuY29tPiAgICAgICAgICAgICoKPiAtICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICoKPiAtICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgICAgICAgICoKPiAt ICogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgICAgICAgICoKPiAtICogRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg ICAgICAgICAgICoKPiAtICogdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKPiAtICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICoKPiAtICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSAg ICAgICoKPiAtICogV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSAgICAgICoKPiAtICogUEFSVElDVUxB UiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuICAgICAgICAgICAgICoKPiAtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoK PiAtICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aCAgICAgICAgICoKPiAtICogdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgICAgICAgICAgICAg ICAgICAgICAgICAgICoKPiAtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCj4gLQo+ IC0jaW5jbHVkZSAiQ0REQU1hbmFnZXIuaCIKPiAtI2luY2x1ZGUgIkNEREFNYW5hZ2VyX3AuaCIK PiAtCj4gLUNEREFNYW5hZ2VyOjpDRERBTWFuYWdlciggUU9iamVjdCAqcGFyZW50ICkKPiAtICAg IDogUU9iamVjdCggcGFyZW50ICkKPiAtICAgICwgZCggbmV3IFByaXZhdGUoKSApCj4gLXsKPiAt fQo+IC0KPiAtQ0REQU1hbmFnZXI6On5DRERBTWFuYWdlcigpCj4gLXsKPiAtICAgIGRlbGV0ZSBk Owo+IC19Cj4gLQo+IC1RU3RyaW5nTGlzdAo+IC1DRERBTWFuYWdlcjo6YXVkaW9DZFVkaXMoKSBj b25zdAo+IC17Cj4gLSAgICByZXR1cm4gUVN0cmluZ0xpc3QoKTsKPiAtfQo+IC0KPiAtUVN0cmlu Zwo+IC1DRERBTWFuYWdlcjo6YXVkaW9DZE5hbWUoIGNvbnN0IFFTdHJpbmcgJnVkaSApIGNvbnN0 Cj4gLXsKPiAtICAgIHJldHVybiBRU3RyaW5nKCk7Cj4gLX0KPiAtCj4gLXZvaWQKPiAtQ0REQU1h bmFnZXI6OnBsYXlBdWRpb0NkKCBjb25zdCBRU3RyaW5nICZ1ZGkgKSBjb25zdAo+IC17Cj4gLX0K PiAtCj4gLSNpbmNsdWRlICJDRERBTWFuYWdlci5tb2MiCj4gLQo+IGRpZmYgLS1naXQgYS9zcmMv Y29yZS1pbXBsL21ldGEvY2RkYS9BdWRpb0NkVHJhY2tQcm92aWRlci5oIGIvc3JjL2NvcmUtaW1w bC9tZXRhL2NkZGEvQXVkaW9DZFRyYWNrUHJvdmlkZXIuaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDJmNDRjNjMuLjAwMDAwMDAKPiAtLS0gYS9zcmMvY29yZS1pbXBsL21ldGEv Y2RkYS9BdWRpb0NkVHJhY2tQcm92aWRlci5oCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDQ2ICsw LDAgQEAKPiAtLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiAtICogQ29weXJpZ2h0 IChjKSAyMDA4IE1heGltaWxpYW4gS29zc2ljayA8bWF4aW1pbGlhbi5rb3NzaWNrQGdvb2dsZW1h aWwuY29tPiAgICAgICAgICAgICoKPiAtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoK PiAtICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgICAgICAgICoKPiAtICogdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgICAgICAgICoKPiAtICogRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgICAgICAgICAgICoKPiAtICog dmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKPiAtICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICoKPiAtICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSAgICAgICoKPiAtICogV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSAgICAgICoKPiAtICogUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAg ICoKPiAtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKPiAtICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxv bmcgd2l0aCAgICAgICAgICoKPiAtICogdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgICAgICAgICAgICAgICAgICAgICAgICAgICoKPiAt ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCj4gLQo+IC0jaWZuZGVmIEFVRElPQ0RU UkFDS1BST1ZJREVSX0gKPiAtI2RlZmluZSBBVURJT0NEVFJBQ0tQUk9WSURFUl9ICj4gLQo+IC0j aW5jbHVkZSAiY29yZS9tZXRhL01ldGEuaCIKPiAtCj4gLSNpbmNsdWRlIDxRT2JqZWN0Pgo+IC0j aW5jbHVkZSA8UVN0cmluZ0xpc3Q+Cj4gLQo+IC0vKioKPiAtICogVGhpcyBtYW5hZ2VyIGhhbmRs ZXMgYXVkaW8gY2RzLiBBdWRpbyBDRHMgcmVxdWlyZSBzcGVjaWFsIHRyZWF0bWVudCBiZWNhdXNl Cj4gLSAqIHdlIGFyZSBub3Qgb3BlcmF0aW5nIG9uIGZpbGVzLCBpbnN0ZWFkIHdlIHRlbGwgdGhl IGVuZ2luZSB0byBwbGF5IHRoZSBjZCBkaXJlY3RseS4KPiAtICogVGhlcmVmb3JlIENvbGxlY3Rp b25NYW5hZ2VyOjp0cmFja0ZvclVybCBjYW5ub3QgYmUgdXNlZC4KPiAtICovCj4gLWNsYXNzIENE REFNYW5hZ2VyIDogcHVibGljIFFPYmplY3QKPiAtewo+IC0gICAgUV9PQkpFQ1QKPiAtICAgIHB1 YmxpYzoKPiAtICAgICAgICBDRERBTWFuYWdlciggUU9iamVjdCAqcGFyZW50ICk7Cj4gLSAgICAg ICAgfkNEREFNYW5hZ2VyKCk7Cj4gLQo+IC0gICAgICAgIFFTdHJpbmdMaXN0IGF1ZGlvQ2RVZGlz KCkgY29uc3Q7Cj4gLSAgICAgICAgUVN0cmluZyBhdWRpb0NkTmFtZSggY29uc3QgUVN0cmluZyAm dWRpICkgY29uc3Q7Cj4gLSAgICAgICAgdm9pZCBwbGF5QXVkaW9DZCggY29uc3QgUVN0cmluZyAm dWRpICkgY29uc3Q7Cj4gLQo+IC0gICAgcHJpdmF0ZToKPiAtICAgICAgICBjbGFzcyBQcml2YXRl Owo+IC0gICAgICAgIFByaXZhdGUgKiBjb25zdCBkOwo+IC19Owo+IC0KPiAtI2VuZGlmCj4gZGlm ZiAtLWdpdCBhL3NyYy9jb3JlLWltcGwvbWV0YS9jZGRhL0F1ZGlvQ2RUcmFja1Byb3ZpZGVyX3Au Y3BwIGIvc3JjL2NvcmUtaW1wbC9tZXRhL2NkZGEvQXVkaW9DZFRyYWNrUHJvdmlkZXJfcC5jcHAK PiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCBlNjk3MzY3Li4wMDAwMDAwCj4gLS0t IGEvc3JjL2NvcmUtaW1wbC9tZXRhL2NkZGEvQXVkaW9DZFRyYWNrUHJvdmlkZXJfcC5jcHAKPiAr KysgL2Rldi9udWxsCj4gQEAgLTEsMTIzICswLDAgQEAKPiAtLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKPiAtICogQ29weXJpZ2h0IChjKSAyMDA4IE1heGltaWxpYW4gS29zc2ljayA8 bWF4aW1pbGlhbi5rb3NzaWNrQGdvb2dsZW1haWwuY29tPiAgICAgICAgICAgICoKPiAtICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICoKPiAtICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgICAg ICAgICoKPiAtICogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgICAgICAgICoKPiAtICogRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgICAgICAgICAgICoKPiAtICogdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoK PiAtICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKPiAtICogVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRI T1VUIEFOWSAgICAgICoKPiAtICogV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSAgICAgICoKPiAtICog UEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICoKPiAtICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICoKPiAtICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aCAgICAgICAgICoKPiAtICogdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgICAg ICAgICAgICAgICAgICAgICAgICAgICoKPiAtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCj4gLQo+IC0jaW5jbHVkZSAiQXVkaW9DZFRyYWNrUHJvdmlkZXJfcC5oIgo+IC0KPiAtI2lu Y2x1ZGUgImNvcmUvc3VwcG9ydC9EZWJ1Zy5oIgo+IC0KPiAtI2luY2x1ZGUgPHNvbGlkL2Jsb2Nr Lmg+Cj4gLSNpbmNsdWRlIDxzb2xpZC9kZXZpY2UuaD4KPiAtI2luY2x1ZGUgPHNvbGlkL2Rldmlj ZWludGVyZmFjZS5oPgo+IC0jaW5jbHVkZSA8c29saWQvZGV2aWNlbm90aWZpZXIuaD4KPiAtI2lu Y2x1ZGUgPHNvbGlkL3N0b3JhZ2V2b2x1bWUuaD4KPiAtCj4gLSNpbmNsdWRlIDxrY29tcGFjdGRp c2MuaD4KPiAtCj4gLSNpbmNsdWRlIDxRTGlzdD4KPiAtCj4gLUF1ZGlvQ2RUcmFja1Byb3ZpZGVy OjpQcml2YXRlOjpQcml2YXRlKCkKPiAtICAgIDogUU9iZWpjdCgpCj4gLXsKPiAtICAgIGNvbm5l Y3QoIFNvbGlkOjpEZXZpY2VOb3RpZmllcjo6aW5zdGFuY2UoKSwgU0lHTkFMKCBkZXZpY2VBZGRl ZCggY29uc3QgUVN0cmluZyApICksIFNMT1QoIGRldmljZUFkZGVkKCBjb25zdCBRU3RyaW5nICkg KSApOwo+IC0gICAgY29ubmVjdCggU29saWQ6OkRldmljZU5vdGlmaWVyOjppbnN0YW5jZSgpLCBT SUdOQUwoIGRldmljZVJlbW92ZWQoIGNvbnN0IFFTdHJpbmcgKSApLCBTTE9UKCBkZXZpY2VSZW1v dmVkKCBjb25zdCBRU3RyaW5nICkgKSApOwo+IC0gICAgUUxpc3Q8U29saWQ6OkRldmljZT4gZGV2 aWNlcyA9IFNvbGlkOjpEZXZpY2U6Omxpc3RGcm9tVHlwZSggU29saWQ6OkRldmljZUludGVyZmFj ZTo6T3B0aWNhbERpc2MgKTsKPiAtICAgIGZvcmVhY2goIGNvbnN0IFNvbGlkOjpEZXZpY2UgJmRl dmljZSwgZGV2aWNlcyApCj4gLSAgICB7Cj4gLSAgICAgICAgU29saWQ6Ok9wdGljYWxEaXNjICpv ZCA9IGRldmljZS5hczxTb2xpZDo6T3B0aWNhbERpc2M+KCk7Cj4gLSAgICAgICAgaWYoIG9kLT5h dmFpbGFibGVDb250ZW50KCkgIT0gU29saWQ6Ok9wdGljYWxEaXNjOjpBdWRpbyApCj4gLSAgICAg ICAgewo+IC0gICAgICAgICAgICBjb250aW51ZTsKPiAtICAgICAgICB9Cj4gLSAgICAgICAgaWYo IGRldmljZS5pczxTb2xpZDo6U3RvcmFnZVZvbHVtZT4oKSApCj4gLSAgICAgICAgewo+IC0gICAg ICAgICAgICBTb2xpZDo6U3RvcmFnZVZvbHVtZSAqc3YgPSBkZXZpY2UuYXM8U29saWQ6OlN0b3Jh Z2VWb2x1bWU+KCk7Cj4gLSAgICAgICAgICAgIGlmKCBzdi0+aXNJZ25vcmVkKCkgKQo+IC0gICAg ICAgICAgICB7Cj4gLSAgICAgICAgICAgICAgICBjb250aW51ZTsKPiAtICAgICAgICAgICAgfQo+ IC0gICAgICAgIH0KPiAtICAgICAgICBpZiggZGV2aWNlLmlzPFNvbGlkOjpCbG9jaz4oKSApCj4g LSAgICAgICAgewo+IC0gICAgICAgICAgICAvL2RvZXMgdGhpcyBhY3R1YWxseSB3b3JrIG9uIHdp bmRvd3M/Pz8KPiAtICAgICAgICAgICAgU29saWQ6OkJsb2NrICpzYiA9IGRldmljZS5hczxTb2xp ZDo6QmxvY2s+KCk7Cj4gLSAgICAgICAgICAgIG1fY2RkYURldmljZXMuaW5zZXJ0KCBkZXZpY2Uu dWRpKCksIHNiLT5kZXZpY2UoKSApOwo+IC0gICAgICAgIH0KPiAtICAgIH0KPiAtfQo+IC0KPiAt QXVkaW9DZFRyYWNrUHJvdmlkZXI6OlByaXZhdGU6On5Qcml2YXRlKCkKPiAtewo+IC19Cj4gLQo+ IC12b2lkCj4gLUF1ZGlvQ2RUcmFja1Byb3ZpZGVyOjpQcml2YXRlOjpkZXZpY2VBZGRlZCggY29u c3QgUVN0cmluZyAmdWRpICkKPiAtewo+IC0gICAgU29saWQ6OkRldmljZSBkZXZpY2UoIHVkaSAp Owo+IC0gICAgaWYoICFkZXZpY2UuaXM8U29saWQ6Ok9wdGljYWxEaXNjPigpICkKPiAtICAgIHsK PiAtICAgICAgICByZXR1cm47Cj4gLSAgICB9Cj4gLSAgICBpZiggZGV2aWNlLmlzPFNvbGlkOjpT dG9yYWdlVm9sdW1lPigpICkKPiAtICAgIHsKPiAtICAgICAgICBTb2xpZDo6U3RvcmFnZVZvbHVt ZSAqc3YgPSBkZXZpY2UuYXM8U29saWQ6OlN0b3JhZ2VWb2x1bWU+KCk7Cj4gLSAgICAgICAgaWYo IHN2LT5pc0lnbm9yZWQoKSApCj4gLSAgICAgICAgewo+IC0gICAgICAgICAgICByZXR1cm47Cj4g LSAgICAgICAgfQo+IC0gICAgfQo+IC0gICAgaWYoIGRldmljZS5pczxTb2xpZDo6QmxvY2s+KCkg KQo+IC0gICAgewo+IC0gICAgICAgICAgICAvL2RvZXMgdGhpcyBhY3R1YWxseSB3b3JrIG9uIHdp bmRvd3M/Pz8KPiAtICAgICAgICBTb2xpZDo6QmxvY2sgKnNiID0gZGV2aWNlLmFzPFNvbGlkOjpC bG9jaz4oKTsKPiAtICAgICAgICBtX2NkZGFEZXZpY2VzLmluc2VydCggZGV2aWNlLnVkaSgpLCBz Yi0+ZGV2aWNlKCkgKTsKPiAtICAgICAgICBLQ29tcGFjdERpc2MgY2Q7Cj4gLSAgICAgICAgY2Qu c2V0RGV2aWNlKCBzYi0+ZGV2aWNlKCkgKTsKPiAtICAgICAgICBRTGlzdDx1bnNpZ25lZD4gc2ln bmF0dXJlID0gY2QuZGlzY1NpZ25hdHVyZSgpOwo+IC0gICAgICAgIGlmKCBzaWduYXR1cmUuaXNF bXB0eSgpICkKPiAtICAgICAgICB7Cj4gLSAgICAgICAgICAgIHdhcm5pbmcoKSA8PCAiQ291bGQg bm90IGdldCBDRERCIGRpc2Mgc2lnbmF0dXJlIGZvciAiIDw8IHNiLT5kZXZpY2UoKTsKPiAtICAg ICAgICAgICAgcmV0dXJuOwo+IC0gICAgICAgIH0KPiAtICAgIH0KPiAtfQo+IC0KPiAtdm9pZAo+ IC1BdWRpb0NkVHJhY2tQcm92aWRlcjo6UHJpdmF0ZTo6ZGV2aWNlUmVtb3ZlZCggY29uc3QgUVN0 cmluZyAmdWRpICkKPiAtewo+IC0gICAgbV9jZGRhRGV2aWNlcy5yZW1vdmUoIHVkaSApOwo+IC19 Cj4gLQo+IC1ib29sCj4gLUF1ZGlvQ2RUcmFja1Byb3ZpZGVyOjpQcml2YXRlOjppc1BhdGhPbkNk KCBjb25zdCBRU3RyaW5nICZwYXRoICkgY29uc3QKPiAtewo+IC0gICAgY29uc3QgUVN0cmluZ0xp c3QgcGF0aHMgPSBtX2NkTW91bnRQYXRocy52YWx1ZXMoKTsKPiAtICAgIGZvcmVhY2goIGNvbnN0 IFFTdHJpbmcgJm1vdW50UG9pbnQsIHBhdGhzICkKPiAtICAgIHsKPiAtICAgICAgICAvL3BhdGgg Y2FuIGJlIGVudGVyZWQgYnkgdGhlIHVzZXIsIHRoZXJlZm9yZSB3ZSBjYW5ub3QgbWFrZSBhbnkg YXNzdW1wdGlvbnMgYWJvdXQgdGhlIGNhc2UKPiAtICAgICAgICAvL29mIHRoZSBwYXRoIG9uIHdp bmRvd3MgLT4gZDovIGFuZCBEOi8gYXJlIGVxdWl2YWxlbnQKPiAtI2lmZGVmIFFfV1NfV0lOCj4g LSAgICAgICAgaWYoIHBhdGguc3RhcnRzV2l0aCggbW91bnRQb2ludCwgUXQ6OkNhc2VJbnNlbnNp dGl2ZSApICk7Cj4gLSNlbHNlCj4gLSAgICAgICAgaWYoIHBhdGguc3RhcnRzV2l0aCggbW91bnRQ b2ludCApICkKPiAtI2VuZGlmCj4gLSAgICAgICAgewo+IC0gICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKPiAtICAgICAgICB9Cj4gLSAgICB9Cj4gLSAgICByZXR1cm4gZmFsc2U7Cj4gLX0KPiAtCj4g LSNpbmNsdWRlICJBdWRpb0NkVHJhY2tQcm92aWRlcl9wLm1vYyIKPiBkaWZmIC0tZ2l0IGEvc3Jj L2NvcmUtaW1wbC9tZXRhL2NkZGEvQXVkaW9DZFRyYWNrUHJvdmlkZXJfcC5oIGIvc3JjL2NvcmUt aW1wbC9tZXRhL2NkZGEvQXVkaW9DZFRyYWNrUHJvdmlkZXJfcC5oCj4gZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMTdjZTI3ZS4uMDAwMDAwMAo+IC0tLSBhL3NyYy9jb3JlLWltcGwv bWV0YS9jZGRhL0F1ZGlvQ2RUcmFja1Byb3ZpZGVyX3AuaAo+ICsrKyAvZGV2L251bGwKPiBAQCAt MSw0MiArMCwwIEBACj4gLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gLSAqIENv cHlyaWdodCAoYykgMjAwOCBNYXhpbWlsaWFuIEtvc3NpY2sgPG1heGltaWxpYW4ua29zc2lja0Bn b29nbGVtYWlsLmNvbT4gICAgICAgICAgICAqCj4gLSAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqCj4gLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyICAgICAgICAqCj4gLSAqIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlICAgICAgICAqCj4gLSAqIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyICAgICAgICAgICAq Cj4gLSAqIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCj4gLSAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqCj4gLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgICAgICAqCj4gLSAq IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgICAgICAqCj4gLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4g U2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAg ICAgICAgICAqCj4gLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCj4gLSAqIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFsb25nIHdpdGggICAgICAgICAqCj4gLSAqIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICAgICAgICAgICAgICAgICAgICAgICAg ICAqCj4gLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo+IC0KPiAtI2lmbmRlZiBB TUFST0tfQVVESU9DRFRSQUNLUFJPVklERVJfUF9ICj4gLSNkZWZpbmUgQU1BUk9LX0FVRElPQ0RU UkFDS1BST1ZJREVSX1BfSAo+IC0KPiAtI2luY2x1ZGUgPFFNYXA+Cj4gLSNpbmNsdWRlIDxRT2Jq ZWN0Pgo+IC0jaW5jbHVkZSA8UVN0cmluZz4KPiAtCj4gLWNsYXNzIEF1ZGlvQ2RUcmFja1Byb3Zp ZGVyOjpQcml2YXRlIDogcHVibGljIFFPYmplY3QKPiAtewo+IC0gICAgUV9PQkpFQ1QKPiAtICAg IHB1YmxpYzoKPiAtICAgICAgICBQcml2YXRlKCk7Cj4gLSAgICAgICAgflByaXZhdGUoKTsKPiAt Cj4gLSAgICAgICAgYm9vbCBpc1BhdGhPbkNkKCBjb25zdCBRU3RyaW5nICZwYXRoICkgY29uc3Q7 Cj4gLQo+IC0KPiAtICAgIHB1YmxpYyBzbG90czoKPiAtICAgICAgICB2b2lkIGRldmljZUFkZGVk KCBjb25zdCBRU3RyaW5nICZ1ZGkgKTsKPiAtICAgICAgICB2b2lkIGRldmljZVJlbW92ZWQoIGNv bnN0IFFTdHJpbmcgJnVkaSApOwo+IC0KPiAtICAgIHByaXZhdGU6Cj4gLSAgICAgICAgUU1hcDxR U3RyaW5nLCBRU3RyaW5nPiBtX2NkZGFEZXZpY2VzOwo+IC19Owo+IC0KPiAtI2VuZGlmCj4KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQW1hcm9rLWRldmVs IG1haWxpbmcgbGlzdApBbWFyb2stZGV2ZWxAa2RlLm9yZwpodHRwczovL21haWwua2RlLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtYXJvay1kZXZlbAo=