From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jiri Vanek To: git-commits@fedoraproject.org Subject: [rpms/java-25-openjdk-portable] rawhide: Updated to OpenJDK 25.0.4 (2026-07-21) Date: Fri, 24 Jul 2026 13:20:07 GMT Message-ID: <178489920794.1.14468198612032240012.rpms-java-25-openjdk-portable-5a268016ad90@fedoraproject.org> List-ID: X-Git-Repo: rpms/java-25-openjdk-portable X-Git-Branch: rawhide X-Git-Rev: 5a268016ad909c415222f9453d4b2bcf17a48561 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvamF2YS0yNS1vcGVuamRrLXBvcnRhYmxlCiAgICAgICAgICAgIEJyYW5jaCA6 IHJhd2hpZGUKICAgICAgICAgICAgQ29tbWl0IDogNWEyNjgwMTZhZDkwOWM0MTUyMjJmOTQ1M2Q0 YjJiY2YxN2E0ODU2MQogICAgICAgICAgICBBdXRob3IgOiBKaXJpIFZhbmVrIDxqdmFuZWtAcmVk aGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAyNi0wNy0yNFQxNToxODozMiswMjowMAog ICAgICAgICAgICBTdGF0cyAgOiArMTkzMy8tMzEwIGluIDkgZmlsZShzKQogICAgICAgICAgICBV UkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2phdmEtMjUtb3Blbmpk ay1wb3J0YWJsZS9jLzVhMjY4MDE2YWQ5MDljNDE1MjIyZjk0NTNkNGIyYmNmMTdhNDg1NjE/YnJh bmNoPXJhd2hpZGUKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgVXBkYXRlZCB0byBPcGVu SkRLIDI1LjAuNCAoMjAyNi0wNy0yMSkKClJlYXJyYW5nZWQgc3BlY2ZpbGUgZm9yIGJldHRlciBy ZWFkYWJpbGl0eSBhbmQgcmVtb3ZlZCB1bnVzZWQgbWFjcm9zLAp3aGljaCB3ZXJlIGtlcHQgb25s eSBmb3IgcnBtcyBzeW5jaHJvbml6YXRpb24gd2hpY2ggaXMgb2Jzb2xldGVkLgpJbXByb3ZlZCBU ZXN0VHJhbnNhbHRpb25zIChnbnVfYW5kcmV3KQoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3Jl IGIvLmdpdGlnbm9yZQppbmRleCBmNTdmMjhlLi5hNGI0MzIyIDEwMDY0NAotLS0gYS8uZ2l0aWdu b3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTYsMyArNiw0IEBACiAvb3Blbmpkay0yNS4wLjErOC50 YXIueHoKIC9vcGVuamRrLTI1LjAuMisxMC50YXIueHoKIC9vcGVuamRrLTI1LjAuMys5LnRhci54 egorL29wZW5qZGstMjUuMC40KzcudGFyLnh6CgpkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKaW5k ZXggZTAwOWJhOC4uNjIyYzhmYSAxMDA2NDQKLS0tIGEvTkVXUworKysgYi9ORVdTCkBAIC0zLDYg KzMsMzYxIEBAIEtleToKIEpESy1YICAtIGh0dHBzOi8vYnVncy5vcGVuamRrLmphdmEubmV0L2Jy b3dzZS9KREstWAogQ1ZFLVhYWFgtWVlZWTogaHR0cHM6Ly9jdmUubWl0cmUub3JnL2NnaS1iaW4v Y3ZlbmFtZS5jZ2k/bmFtZT1YWFhYLVlZWVkKIAorTmV3IGluIHJlbGVhc2UgT3BlbkpESyAyNS4w LjQgKDIwMjYtMDctMjEpOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorTGl2ZSB2ZXJzaW9ucyBvZiB0aGVzZSByZWxlYXNlIG5vdGVzIGNhbiBiZSBmb3VuZCBh dDoKKyAgKiBodHRwczovL2JpdC5seS9vcGVuamRrMjUwNAorCisqIENWRXMKKyAgLSBDVkUtMjAy Ni00Njk2OAorICAtIENWRS0yMDI2LTQ2OTE3CisgIC0gQ1ZFLTIwMjYtNDcwMTAKKyAgLSBDVkUt MjAyNi00NzAyMQorICAtIENWRS0yMDI2LTQ3MDI3CisgIC0gQ1ZFLTIwMjYtNjAxNDcKKyAgLSBD VkUtMjAyNi00NzA1OQorICAtIENWRS0yMDI2LTQ3MDYzCisgIC0gQ1ZFLTIwMjYtNDEyNTQKKyog Q2hhbmdlcworICAtIEpESy03MTg0ODk5OiBUZXN0IHN1bi9qYXZhMmQvWDExU3VyZmFjZURhdGEv U2hhcmVkTWVtb3J5UGl4bWFwc1Rlc3QvU2hhcmVkTWVtb3J5UGl4bWFwc1Rlc3Quc2ggZmFpbAor ICAtIEpESy04MDE1NDQ0OiBqYXZhL2F3dC9Gb2N1cy9LZXlTdHJva2VUZXN0LmphdmEgc29tZXRp bWVzIGZhaWxzCisgIC0gSkRLLTgwNjQ5MjI6IFttYWNvc10gVGVzdCBqYXZheC9zd2luZy9KVGFi YmVkUGFuZS80NjI0MjA3L2J1ZzQ2MjQyMDcuamF2YSBmYWlscworICAtIEpESy04MDY4MjkzOiBb VEVTVF9CVUddIFRlc3QgY2xvc2VkL2NvbS9zdW4vamF2YS9zd2luZy9wbGFmL21vdGlmL0ludGVy bmFsRnJhbWUvNDE1MDU5MS9idWc0MTUwNTkxLmphdmEgZmFpbHMgd2l0aCBHVEtMb29rQW5kRmVl bAorICAtIEpESy04MDY4MzEwOiBbVEVTVF9CVUddIFRlc3QgamF2YXgvc3dpbmcvSkNvbG9yQ2hv b3Nlci9UZXN0NDIzNDc2MS5qYXZhIGZhaWxzIHdpdGggR1RLTCZGCisgIC0gSkRLLTgxNDQxMjQ6 IFttYWNvc3hdIFRoZSB0YWJzIGNhbid0IGJlIGFsaWduZWQgd2hlbiB3ZSBwcmVzc2luZyB0aGUg a2V5IG9mICdSJywnQicsJ0wnLCdDJyBvciAnVCcuCisgIC0gSkRLLTgyMDMwMDQ6IFVuaXhNdWx0 aVJlc29sdXRpb25TcGxhc2hUZXN0LmphdmEgZmFpbHMgb24gVWJ1bnR1MTYuMDQKKyAgLSBKREst ODIxMzUzMDogVGVzdCBqYXZhL2F3dC9Nb2RhbC9Ub0Zyb250L0RpYWxvZ1RvRnJvbnRNb2RlbGVz czFUZXN0LmphdmEgZmFpbHMgb24gTGludXgKKyAgLSBKREstODIyMTQ1MTogUElUOiBzdW4vamF2 YTJkL1gxMVN1cmZhY2VEYXRhL1NoYXJlZE1lbW9yeVBpeG1hcHNUZXN0L1NoYXJlZE1lbW9yeVBp eG1hcHNUZXN0LnNoIGZhaWxzCisgIC0gSkRLLTgyMjU3ODc6IGphdmEvYXd0L1dpbmRvdy9HZXRT Y3JlZW5Mb2NhdGlvbi9HZXRTY3JlZW5Mb2NhdGlvblRlc3QuamF2YSBmYWlscyBvbiBVYnVudHUK KyAgLSBKREstODI0MTA2NjogU2hlbmFuZG9haDogZml4IG9yIGNsZWFudXAgU0g6OmRvX2Z1bGxf Y29sbGVjdGlvbgorICAtIEpESy04MjYxNzQzOiBTaGVuYW5kb2FoOiBlbmFibGUgU3RyaW5nIGRl ZHVwbGljYXRpb24gd2l0aCBjb21wYWN0IGhldXJpc3RpY3MKKyAgLSBKREstODI2NDg1MTogU2hl bmFuZG9haDogUmV3b3JrIGNvbnRyb2wgbG9vcCBtZWNoYW5pY3MgdG8gdXNlIHRpbWVkIHdhaXRz CisgIC0gSkRLLTgyNzgxMDI6IGNvbnRhaW5lcnMvZG9ja2VyL1Rlc3RKY21kLmphdmEgZmFpbGVk IHdpdGggIlJ1bnRpbWVFeGNlcHRpb246IENvdWxkIG5vdCBmaW5kIHNwZWNpZmllZCBwcm9jZXNz IgorICAtIEpESy04Mjc5MTk2OiBUZXN0OiBqZGsvamZyL2V2ZW50L2djL3N0YWNrdHJhY2UvVGVz dEcxT2xkQWxsb2NhdGlvblBlbmRpbmdTdGFja1RyYWNlLmphdmEgdGltZWQgb3V0CisgIC0gSkRL LTgyOTcxOTE6IFttYWNvc10gUHJpbnRpbmcgYSBwYWdlIHJhbmdlIHdpdGggc3RhcnRpbmcgcGFn ZSA+IDEgcmVzdWx0cyBpbiBtaXNzaW5nIHBhZ2VzCisgIC0gSkRLLTgyOTg4MjM6IFttYWNvc10g amF2YS9hd3QvTW91c2UvRW50ZXJFeGl0RXZlbnRzL0RyYWdXaW5kb3dUZXN0LmphdmEgY29udGlu dWVzIHRvIGZhaWwgd2l0aCAiTm8gTW91c2VSZWxlYXNlZCBldmVudCBvbiBsYWJlbCEiCisgIC0g SkRLLTgzMTkzMjY6IEdDOiBNYWtlIFRlc3RQYXJhbGxlbFJlZlByb2MgdXNlIGNyZWF0ZVRlc3RK YXZhUHJvY2Vzc0J1aWxkZXIKKyAgLSBKREstODMxOTU0MDogR0M6IE1ha2UgVGVzdFNlbGVjdERl ZmF1bHRHQyB1c2UgY3JlYXRlVGVzdEphdmFQcm9jZXNzQnVpbGRlcgorICAtIEpESy04MzIxMzAz OiBJbnRlcm1pdHRlbnQgb3Blbi90ZXN0L2pkay9qYXZhL2F3dC9LZXlib2FyZEZvY3VzbWFuYWdl ci9Db25zdW1lTmV4dE1uZW1vbmljS2V5VHlwZWRUZXN0L0NvbnN1bWVOZXh0TW5lbW9uaWNLZXlU eXBlZFRlc3QuamF2YSBmYWlsdXJlIG9uIExpbnV4CisgIC0gSkRLLTgzMjE2ODc6IFRlc3Qgdm1U ZXN0YmFzZS9uc2svanZtdGkvc2NlbmFyaW9zL2NvbnRlbnRpb24vVEMwMy90YzAzdDAwMi9UZXN0 RGVzY3JpcHRpb24uamF2YSBmYWlsZWQ6IEpWTVRJX0VSUk9SX1RIUkVBRF9OT1RfQUxJVkUKKyAg LSBKREstODMyMzc5MjogVGhyZWFkU25hcHNob3Q6OmluaXRpYWxpemUgY2FuIGNhdXNlIGFzc2Vy dCBpbiBUaHJlYWQ6OmNoZWNrX2Zvcl9kYW5nbGluZ190aHJlYWRfcG9pbnRlciAocG9zc2liaWxp dHkgb2YgZGFuZ2xpbmcgVGhyZWFkIHBvaW50ZXIpCisgIC0gSkRLLTgzMjU0ODI6IFRlc3QgdGhh dCBkaXN0aW5jdCBzZWVkcyBwcm9kdWNlIGRpc3RpbmN0IHRyYWNlcyBmb3IgY29tcGlsZXIgc3Ry ZXNzIGZsYWdzCisgIC0gSkRLLTgzMzUzNTU6IFNoZW5hbmRvYWg6IEZpeCByYWNlIGNvbmRpdGlv biBpbiBnYy9zaGVuYW5kb2FoL214YmVhbnMvVGVzdFBhdXNlTm90aWZpY2F0aW9ucy5qYXZhCisg IC0gSkRLLTgzMzk1MjY6IEMyOiBzdG9yZSBpbmNvcnJlY3RseSByZW1vdmVkIGZvciBjbG9uZSgp IHRyYW5zZm9ybWVkIHRvIHNlcmllcyBvZiBsb2Fkcy9zdG9yZXMKKyAgLSBKREstODM0MDE4Mjog SmF2YSBIdHRwQ2xpZW50IGRvZXMgbm90IGZvbGxvdyBkZWZhdWx0IHJldHJ5IGxpbWl0IG9mIDMg cmV0cmllcworICAtIEpESy04MzQxNzM1OiBSZXdyaXRlIHRoZSBidWlsZC9BYnNQYXRoc0luSW1h Z2UuamF2YSB0ZXN0IHRvIG5vdCBsb2FkIHRoZSBlbnRpcmUgZmlsZSBhdCBvbmNlCisgIC0gSkRL LTgzNDQzNDU6IHRlc3QvaG90c3BvdC9ndGVzdC94ODYveDg2LWFzbXRlc3QucHkgaGFzIHRyYWls aW5nIHdoaXRlc3BhY2VzCisgIC0gSkRLLTgzNDU2MzE6IFRlc3RSZWdpb25TYW1wbGluZ0xvZ2dp bmcuamF2YSNnZW5lcmF0aW9uYWwtcm90YXRpb24gaW50ZXJtaXR0ZW50IGZhaWxzCisgIC0gSkRL LTgzNDcxNjc6IFJlZHVjZSBhbGxvY2F0aW9uIGluIGNvbS5zdW4ubmV0Lmh0dHBzZXJ2ZXIuSGVh ZGVyczo6bm9ybWFsaXplCisgIC0gSkRLLTgzNDc5Mzg6IEFkZCBTdXBwb3J0IGZvciB0aGUgTGF0 ZXN0IE1MLUtFTSBhbmQgTUwtRFNBIFByaXZhdGUgS2V5IEVuY29kaW5ncworICAtIEpESy04MzUx MDEwOiBUZXN0IGphdmEvaW8vRmlsZS9HZXRYU3BhY2UuamF2YSBmYWlsZWQ6IC8gdXNhYmxlIHNw YWNlIDU2MzgwODA5MjE2ID4gZnJlZSBzcGFjZSAxNDkxMjI0NDk0MAorICAtIEpESy04MzUyOTE0 OiBTaGVuYW5kb2FoOiBDaGFuZ2UgZGVmaW5pdGlvbiBvZiBTaGVuYW5kb2FoU2hhcmVkVmFsdWUg dG8gaW50MzJfdCB0byBsZXZlcmFnZSBwbGF0Zm9ybSBhdG9taWNzCisgIC0gSkRLLTgzNTMxMTU6 IEdlblNoZW46IG1peGVkIGV2YWN1YXRpb24gY2FuZGlkYXRlIHJlZ2lvbnMgbmVlZCBhY2N1cmF0 ZSBsaXZlX2RhdGEKKyAgLSBKREstODM1NDY1MDogW1BQQzY0XSBUcnkgdG8gcmVkdWNlIHJlZ2lz dGVyIGRlZmluaXRpb25zCisgIC0gSkRLLTgzNTUzMzk6IFRlc3QgamF2YS9pby9GaWxlL0dldENh bm9uaWNhbFBhdGguamF2YSBmYWlsZWQ6IFRoZSBzcGVjaWZpZWQgbmV0d29yayBuYW1lIGlzIG5v IGxvbmdlciBhdmFpbGFibGUKKyAgLSBKREstODM1NzA4Njogb3M6Onh4eCBmdW5jdGlvbnMgcmV0 dXJuaW5nIG1lbW9yeSBzaXplIHNob3VsZCByZXR1cm4gc2l6ZV90CisgIC0gSkRLLTgzNTg2MDA6 IFRlbXBsYXRlLUZyYW1ld29yayBMaWJyYXJ5OiBUZW1wbGF0ZSBmb3IgVGVzdEZyYW1ld29yayB0 ZXN0IGNsYXNzCisgIC0gSkRLLTgzNTg3NzI6IFRlbXBsYXRlLUZyYW1ld29yayBMaWJyYXJ5OiBQ cmltaXRpdmUgVHlwZXMKKyAgLSBKREstODM1OTA4MzogVGVzdCBqZGtDaGVja0h0bWwuamF2YSBz aG91bGQgcmVwb3J0IFNraXBwZWRFeGNlcHRpb24gcmF0aGVyIHRoYW4gcmVwb3J0IGZhaWxzIHdo ZW4gbWlzcyB0aWR5CisgIC0gSkRLLTgzNTkyMjM6IEh0dHBDbGllbnQ6IFJlbW92ZSBsZWZ0b3Zl cnMgZnJvbSB0aGUgU2VjdXJpdHlNYW5hZ2VyIGNsZWFudXAKKyAgLSBKREstODM1OTQxMjogVGVt cGxhdGUtRnJhbWV3b3JrIExpYnJhcnk6IE9wZXJhdGlvbnMgYW5kIEV4cHJlc3Npb25zCisgIC0g SkRLLTgzNTk0MzM6IFRoZSBmaW5hbCBtb2RpZmllciBvbiBXaW5kb3dzIEwmRiBpbnRlcm5hbCBV SSBjbGFzc2VzIHByZXZlbnRzIGV4dGVuZGluZyB0aGVtIGluIGFwcHMKKyAgLSBKREstODM2MTMz OTogVGVzdCBnYy9zaGVuYW5kb2FoL1Rlc3RMYXJnZU9iamVjdEFsaWdubWVudC5qYXZhI2dlbmVy YXRpb25hbCBmYWlscyBvbiBtYWNPUyBhYXJjaDY0IHdpdGggT09NOiBKYXZhIGhlYXAgc3BhY2UK KyAgLSBKREstODM2MTYwNjogQ29uc3VtZU5leHRNbmVtb25pY0tleVR5cGVkVGVzdC5qYXZhIGZh aWxzIG9uIFdpbmRvd3M6IGNoYXJhY3RlciB0eXBlZCB3aXRoIFZLX0E6IGEKKyAgLSBKREstODM2 MTY5OTogQzI6IGFzc2VydChjYW5fcmVkdWNlX3BoaShuLT5hc19QaGkoKSkpIGZhaWxlZDogU2Fu aXR5OiBwcmV2aW91cyByZWR1Y2libGUgUGhpIGlzIG5vIGxvbmdlciByZWR1Y2libGUgYmVmb3Jl IFNVVAorICAtIEpESy04MzYxNzI2OiBTaGVuYW5kb2FoOiBNb3JlIGRldGFpbGVkIGV2YWN1YXRp b24gaW5zdHJ1bWVudGF0aW9uCisgIC0gSkRLLTgzNjI0Mjg6IFVwZGF0ZSBJQU5BIExhbmd1YWdl IFN1YnRhZyBSZWdpc3RyeSB0byBWZXJzaW9uIDIwMjUtMDgtMjUKKyAgLSBKREstODM2Mzk0Mzog QVJNMzI6IFJlcHJlc2VudCBSZWdpc3RlcnMgYXMgdmFsdWVzCisgIC0gSkRLLTgzNjM5NDk6IElu Y29ycmVjdCBqdHJlZyBoZWFkZXIgaW4gTW9uaXRvcldpdGhEZWFkT2JqZWN0VGVzdC5qYXZhCisg IC0gSkRLLTgzNjM5ODY6IEhlYXAgcmVnaW9uIGluIENEUyBhcmNoaXZlIGlzIG5vdCBhdCBkZXRl cm1pbmlzdGljIGFkZHJlc3MKKyAgLSBKREstODM2NDMxNTogUmVtb3ZlIHVudXNlZCB4bWwgZmls ZXMgZnJvbSB0ZXN0L2pheHAvamF2YXgveG1sL2pheHAvZnVuY3Rpb25hbC9qYXZheC94bWwvdHJh bnNmb3JtL3htbGZpbGVzCisgIC0gSkRLLTgzNjQ2NTc6IENyYXNoIGZvciBTZWN1cmVSYW5kb20u Z2VuZXJhdGVTZWVkKDApIG9uIFdpbmRvd3MgeDg2LTY0CisgIC0gSkRLLTgzNjQ5Mjc6IEFkZCBA cmVxdWlyZXMgYW5ub3RhdGlvbiB0byBUZXN0UmVjbGFpbVN0cmluZ3NMZWFrc01lbW9yeS5qYXZh CisgIC0gSkRLLTgzNjUwNTc6IEFkZCBzdXBwb3J0IGZvciBqYXZhLnV0aWwuY29uY3VycmVudCBs b2NrIGluZm9ybWF0aW9uIHRvIFRocmVhZC5kdW1wX3RvX2ZpbGUKKyAgLSBKREstODM2NTM3OTog U1UzLmFwcGx5SW5zZXRzIG1heSBwcm9kdWNlIHdyb25nIHJlc3VsdHMKKyAgLSBKREstODM2NTQy MzogW21hY29zMjZdIGphdmEvYXd0L01lbnVCYXIvODAwNzAwNi9idWc4MDA3MDA2LmphdmEgZmFp bHMgb24gbWFjT1MgMjYKKyAgLSBKREstODM2NTQyNDogW21hY29zMjZdIGphdmEvYXd0L0ZyYW1l L0Rpc3Bvc2VUZXN0LmphdmEgZmFpbHMgb24gbWFjT1MgMjYKKyAgLSBKREstODM2NTYyMzogdGVz dC9qZGsvc3VuL3NlY3VyaXR5L3BrY3MxMS90bHMvIHRlc3RzIHNraXBwZWQgd2l0aG91dCBza2lw IGV4Y2VwdGlvbgorICAtIEpESy04MzY1NjI1OiBDYW4ndCBjaGFuZ2UgYWNjZWxlcmF0b3IgY29s b3JzIGluIFdpbmRvd3MgTCZGCisgIC0gSkRLLTgzNjU3OTI6IEdlblNoZW46IGFzc2VydGlvbiAi R2VuZXJhdGlvbnMgYXJlbid0IHJlY29uY2lsZWQiCisgIC0gSkRLLTgzNjY2OTI6IFNldmVyYWwg Z2Mvc2hlbmFuZG9haCB0ZXN0cyB0aW1lZCBvdXQKKyAgLSBKREstODM2NjY5NTogVGVzdCBzdW4v anZtc3RhdC9tb25pdG9yL01vbml0b3JlZFZtL01vbml0b3JWbVN0YXJ0VGVybWluYXRlLmphdmEg dGltZWQgb3V0CisgIC0gSkRLLTgzNjY4NTI6IGphdmEvYXd0L0Nob2ljZS9DaG9pY2VNb3VzZVdo ZWVsVGVzdC9DaG9pY2VNb3VzZVdoZWVsVGVzdC5qYXZhIHRlc3QgaXMgZmFpbGluZworICAtIEpE Sy04MzY3MDk2OiBqZGsvb3Blbi90ZXN0L2pkay9zdW4vc2VjdXJpdHkvcGtjczExLyByc2EsIGVj LCBjb25maWcsIHNlY21vZCBhbmQgc3NsZWNjIHRlc3RzIGFyZSBza2lwcGluZyBidXQgc2hvd2lu ZyBhcyBwYXNzCisgIC0gSkRLLTgzNjc0NTA6IFNoZW5hbmRvYWg6IExvZyB0aGUgY29tcG9zaXRp b24gb2YgdGhlIGNvbGxlY3Rpb24gc2V0CisgIC0gSkRLLTgzNjc0NTE6IEdlblNoZW46IFJlbW92 ZSB0aGUgb3B0aW9uIHRvIGNvbXB1dGUgYWdlIGNlbnN1cyBkdXJpbmcgZXZhY3VhdGlvbgorICAt IEpESy04MzY3NDczOiBTaGVuYW5kb2FoOiBNYWtlIHRoZSBkZXRhaWxlZCBldmFjdWF0aW9uIG1l dHJpY3MgYSBydW50aW1lIGRpYWdub3N0aWMgb3B0aW9uCisgIC0gSkRLLTgzNjc0ODU6IG9zOjpw aHlzaWNhbF9tZW1vcnkgaXMgYnJva2VuIGluIDMyLWJpdCBKVk1zIHdoZW4gcnVubmluZyBvbiA2 NC1iaXQgT1NlcworICAtIEpESy04MzY3NTMxOiBUZW1wbGF0ZSBGcmFtZXdvcms6IHVzZSBzY29w ZXMgYW5kIHRva2VucyBpbnN0ZWFkIG9mIG1pc2JlaGF2aW5nIGltbWVkaWF0ZS1yZXR1cm4tcXVl cmllcworICAtIEpESy04MzY3NjQ2OiBbR2VuU2hlbl0gQ29udHJvbCB0aHJlYWQgbWF5IG92ZXJ3 cml0ZSBnYyBjYW5jZWxsYXRpb24gY2F1c2Ugc2V0IGJ5IG11dGF0b3IKKyAgLSBKREstODM2Nzcw ODogR2VuU2hlbjogUmVkdWNlIHRvdGFsIGV2YWN1YXRpb24gYnVyZGVuCisgIC0gSkRLLTgzNjc3 MDk6IEdlblNoZW46IERpcnR5IGNhcmRzIGZvciBvYmplY3RzIHRoYXQgZ2V0IHByb21vdGVkIGJ5 IHNhZmVwb2ludCB0aGF0IGludGVydmVuZXMgYmV0d2VlbiBhbGxvY2F0aW9uIGFuZCBzdG9yZXMK KyAgLSBKREstODM2NzcyMjogW0dlblNoZW5dIFNoZW5hbmRvYWhFdmFjdWF0aW9uU3RhdHMgaXMg YWx3YXlzIGVtcHR5CisgIC0gSkRLLTgzNjc5NDk6IEpGUjogTWV0aG9kVHJhY2UgZG91YmxlLWNv dW50cyBtZXRob2RzIHRoYXQgY2F0Y2ggdGhlaXIgb3duIGV4Y2VwdGlvbnMKKyAgLSBKREstODM2 ODAwMTogamF2YS90ZXh0L0Zvcm1hdC9OdW1iZXJGb3JtYXQvTnVtYmVyUm91bmRUcmlwLmphdmEg dGltZWQgb3V0CisgIC0gSkRLLTgzNjgwMTU6IFNoZW5hbmRvYWg6IGZpeCBlcnJvciBpbiBjb21w dXRhdGlvbiBvZiBhdmVyYWdlIGFsbG9jYXRpb24gcmF0ZQorICAtIEpESy04MzY4MDQxOiBFbmhh bmNlIFRMUyBjZXJ0aWZpY2F0ZSBoYW5kbGluZworICAtIEpESy04MzY4MTU5OiBTaWduaWZpY2Fu dCBwZXJmb3JtYW5jZSBvdmVyaGVhZCB3aGVuIHN0YXJ0ZWQgd2l0aCBqZHdwIGFnZW50IGFuZCB1 bmF0dGFjaGVkIGRlYnVnZ2VyCisgIC0gSkRLLTgzNjgxODE6IFByb2JsZW1MaXN0IGphdmEvYXd0 L0RpYWxvZy9Nb2RhbEV4Y2x1ZGVkVGVzdC9Nb2RhbEV4Y2x1ZGVkVGVzdC5qYXZhCisgIC0gSkRL LTgzNjgzMDc6IFNoZW5hbmRvYWg6IGdldF9uZXh0X2JpdF9pbXBsIHNob3VsZCBzcGVjaWFsIGNh c2Ugd2VhayBhbmQgc3Ryb25nIG1hcmsgYml0cworICAtIEpESy04MzY4NDk5OiBHZW5TaGVuOiBE byBub3QgY29sbGVjdCBhZ2UgY2Vuc3VzIGR1cmluZyBldmFjIHdoZW4gYWRhcHRpdmUgdGVudXJp bmcgaXMgZGlzYWJsZWQKKyAgLSBKREstODM2ODUwMTogU2hlbmFuZG9haDogR0MgcHJvZ3Jlc3Mg ZXZhbHVhdGlvbiBkb2VzIG5vdCB1c2UgZ2VuZXJhdGlvbgorICAtIEpESy04MzY4NTI0OiBUZXN0 cyBhcmUgc2tpcHBlZCBhbmQgc2hvd24gYXMgcGFzc2VkIGluIHRlc3QvamRrL3N1bi9zZWN1cml0 eS9wa2NzMTEvQ2lwaGVyL0tleVdyYXAKKyAgLSBKREstODM2ODY4MTogU2hlbmFuZG9haDogQWRk IGRvY3VtZW50YXRpb24gY29tbWVudHMgZm9yIFNoZW5hbmRvYWhBbGxvY2F0aW9uUmF0ZQorICAt IEpESy04MzY5MTI4OiBQcm9ibGVtTGlzdCBqZGsvamZyL2V2ZW50L3Byb2ZpbGluZy9UZXN0Q1BV VGltZVNhbXBsZVF1ZXVlQXV0b1NpemVzLmphdmEgaW4gWGNvbXAgY29uZmlncworICAtIEpESy04 MzY5MTMyOiBEaXNhYmxlIHZtVGVzdGJhc2UvZ2MvdmVjdG9yL0NpcmN1bGFyTGlzdExvdyBhbmQg TGluZWFyTGlzdExvdyB3aXRoIFNlcmlhbEdDCisgIC0gSkRLLTgzNjkxMzM6IERpc2FibGUgZ2Mv ZzEvVGVzdFNocmlua0F1eGlsaWFyeURhdGFSdW5uZXIuamF2YSB3aXRoIFVzZUxhcmdlUGFnZXMg b3B0aW9uCisgIC0gSkRLLTgzNjkyNTE6IE9wZW5zb3VyY2UgZmV3IHRlc3RzCisgIC0gSkRLLTgz Njk1NjE6IHN1bi9qYXZhMmQvT3BlbkdML0RyYXdCaXRtYXNrSW1hZ2UuamF2YSNpZDA6IEluY29y cmVjdCBjb2xvciBmb3IgZmlyc3QgcGl4ZWwgKGFjdHVhbD1mZjAwMDAwMCkKKyAgLSBKREstODM2 OTY4MzogRXhjbHVkZSBydW50aW1lL01vbml0b3IvTW9uaXRvcldpdGhEZWFkT2JqZWN0VGVzdC5q YXZhI0R1bXBUaHJlYWRzQmVmb3JlRGV0YWNoIG9uIEFscGluZSBMaW51eCBkZWJ1ZworICAtIEpE Sy04MzY5NzM2OiBBZGQgbWFuYWdlbWVudCBpbnRlcmZhY2UgZm9yIEFPVCBjYWNoZSBjcmVhdGlv bgorICAtIEpESy04MzY5ODE3OiBbVEVTVEJVR10gRW1wdHlQYXRoOjp0b1N0cmluZyBpcyBpZ25v cmVkCisgIC0gSkRLLTgzNjk5MTI6IFtURVNUQlVHXSB0ZXN0bGlicmFyeV90ZXN0cy90ZW1wbGF0 ZV9mcmFtZXdvcmsvZXhhbXBsZXMvVGVzdEV4cHJlc3Npb25zLmphdmEgZmFpbHMgd2l0aCBBcml0 aG1ldGljRXhjZXB0aW9uOiAvIGJ5IHplcm8gLSBmb3Jnb3QgdG8gcmVzcGVjdCBFeHByZXNzaW9u LmluZm8KKyAgLSBKREstODM2OTk1MDogVExTIGNvbm5lY3Rpb24gdG8gSVB2NiBhZGRyZXNzIGZh aWxzIHdpdGggQkNKU1NFIGR1ZSB0byBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgLSBKREst ODM3MDM3MDogQWRkIHN0aWxsIG1vcmUgY2FzZXMgdG8gV29yc3RDYXNlVGVzdHMKKyAgLSBKREst ODM3MDQ4OTogU29tZSBjb21waWxlciB0ZXN0cyBtaXNzIHRoZSBAa2V5IHJhbmRvbW5lc3MKKyAg LSBKREstODM3MDUwMjogQzI6IHNlZ2ZhdWx0IHdoaWxlIGFkZGluZyBub2RlIHRvIElHVk4gd29y a2xpc3QKKyAgLSBKREstODM3MDUyMTogR2VuU2hlbjogVmFyaW91cyBjb2RlIGNsZWFudXAgcmVs YXRlZCB0byBwcm9tb3Rpb24KKyAgLSBKREstODM3MDkzOTogQzI6IFNJR1NFR1YgaW4gU2FmZVBv aW50Tm9kZTo6dmVyaWZ5X2lucHV0IHdoZW4gcHJvY2Vzc2luZyBNSCBjYWxsIGZyb20gQ29tcGls ZTo6cHJvY2Vzc19sYXRlX2lubGluZV9jYWxsc19ub19pbmxpbmUoKQorICAtIEpESy04MzcxMjg0 OiBHZW5TaGVuOiBBdm9pZCB1bm5lY2Vzc2FyeSBjYXJkIG1hcmtpbmcKKyAgLSBKREstODM3MTM4 MTogW1NoZW5hbmRvYWhdIFNldHRpbmcgZXJnbyBmbGFncyBzaG91bGQgdXNlIEZMQUdfU0VUX0VS R08KKyAgLSBKREstODM3MTUwMzogUkVUQUlOX0lNQUdFX0FGVEVSX1RFU1QgZG8gbm90IHdvcmsg Zm9yIHNvbWUgdGVzdHMKKyAgLSBKREstODM3MTc5MjogUmVmYWN0b3IgYmFycmllciBsb29wIHRl c3RzIG91dCBvZiBUZXN0SWZNaW5NYXgKKyAgLSBKREstODM3MTg5MzogW21hY09TXSB1c2UgZGVh ZF9zdHJpcCBsaW5rZXIgb3B0aW9uIHRvIHJlZHVjZSBiaW5hcnkgc2l6ZQorICAtIEpESy04Mzcy MjcyOiBIb3RzcG90IHNoYXJlZCBsaWIgbG9hZGluZyAtIGFkZCBsb2FkIGF0dGVtcHRzIHRvIEV2 ZW50czo6bG9nCisgIC0gSkRLLTgzNzIzNTE6IEFkZCAyIFdJU2VLZXkgcm9vdHMKKyAgLSBKREst ODM3MjM4MDogTWFrZSBoc19lcnIgcmVwb3J0aW5nIG1vcmUgcm9idXN0IGZvciB1bmF0dGFjaGVk IHRocmVhZHMKKyAgLSBKREstODM3MjUxMzogU2hlbmFuZG9haDogU2hlbmFuZG9haE1heFJlZ2lv blNpemUgY2FuIHByb2R1Y2UgYW4gdW5hbGlnbmVkIGhlYXAgYWxpZ25tZW50CisgIC0gSkRLLTgz NzI4NTE6IE1vZGlmeSBqYXZhL2lvL0ZpbGUvR2V0WFNwYWNlLmphdmEgdG8gcHJpbnQgcGF0aCBv biBmYWlsdXJlIG9mIG5hdGl2ZSBjYWxsCisgIC0gSkRLLTgzNzI4NjE6IEdlbnNoZW46IE92ZXJy aWRlIHBhcmFsbGVsX3JlZ2lvbl9zdHJpZGUgb2YgU2hlbmFuZG9haFJlc2V0Qml0bWFwQ2xvc3Vy ZSB0byBhIHJlYXNvbmFibGUgdmFsdWUgZm9yIGJldHRlciBwYXJhbGxlbGlzbQorICAtIEpESy04 MzczMDM5OiBSZW1vdmUgSW5jb3JyZWN0IEFzc2VydHMgaW4gc2hlbmFuZG9haFNjYW5SZW1lbWJl cmVkCisgIC0gSkRLLTgzNzMxMjA6IFZpcnR1YWwgdGhyZWFkIHN0dWNrIGluIEJMT0NLRUQgc3Rh dGUKKyAgLSBKREstODM3MzIzOTogVGVzdCBqYXZhL2F3dC9wcmludC9QcmludGVySm9iL1BhZ2VS YW5nZXMuamF2YSBmYWlscyB3aXRoIGluY29ycmVjdCBzZWxlY3Rpb24gb2YgcHJpbnRlZCBwYWdl cworICAtIEpESy04MzczMjc1OiBJbXByb3ZlIERUTFMgaGFuZHNoYWtpbmcKKyAgLSBKREstODM3 MzUxNTogTWlncmF0ZSAidGVzdC9qZGsvamF2YS9uZXQvaHR0cGNsaWVudC8iIHRvIG51bGwtc2Fm ZSAiU2ltcGxlU1NMQ29udGV4dCIgbWV0aG9kcworICAtIEpESy04MzczNTc5OiBQcm9ibGVtIGxp c3QgY29tcGlsZXIvcnVudGltZS9UZXN0NzE5NjE5OS5qYXZhCisgIC0gSkRLLTgzNzM2NTA6IFRl c3QgImphdmF4L3N3aW5nL0pNZW51SXRlbS82NDU4MTIzL01hbnVhbEJ1ZzY0NTgxMjMuamF2YSIg ZmFpbHMgYmVjYXVzZSB0aGUgY2hlY2sgaWNvbnMgYXJlIG5vdCBhbGlnbmVkIHByb3Blcmx5IGFz IGV4cGVjdGVkCisgIC0gSkRLLTgzNzM2NzY6IFRlc3QgamF2YXgvbmV0L3NzbC9IdHRwc1VSTENv bm5lY3Rpb24vU3ViamVjdEFsdE5hbWVJUC5qYXZhIGZhaWxzIG9uIGEgbWFjaGluZSB3aXRob3V0 IElQVjYKKyAgLSBKREstODM3MzY5MDogVW5leHBlY3RlZCBLZXlzdG9yZSBtZXNzYWdlIHVzaW5n IGpkay5jcnlwdG8uZGlzYWJsZWRBbGdvcml0aG1zCisgIC0gSkRLLTgzNzM3MTQ6IFNoZW5hbmRv YWg6IFJlZ2lzdGVyIGhldXJpc3RpYyBwZW5hbHRpZXMgZm9sbG93aW5nIGEgZGVnZW5lcmF0ZWQg R0MKKyAgLSBKREstODM3MzcxODogamRrL2ludGVybmFsL21pc2MvVk0vUnVudGltZUFyZ3VtZW50 cy5qYXZhIHRlc3QgZmFpbHMgaW4gVmlydHVhbCB0aHJlYWRzIG1vZGUKKyAgLSBKREstODM3Mzc5 NjogUmVmYWN0b3IgamF2YS9uZXQvaHR0cGNsaWVudC9UaHJvd2luZ1B1Ymxpc2hlcnMqLmphdmEg dGVzdHMgdG8gdXNlIEpVbml0NQorICAtIEpESy04MzczODQ3OiBUZXN0IGphdmF4L3N3aW5nL0pN ZW51SXRlbS9NZW51SXRlbVRlc3QvYnVnNjE5NzgzMC5qYXZhIGZhaWxlZCBiZWNhdXNlIFRoZSB0 ZXN0IGNhc2UgYXV0b21hdGljYWxseSBmYWlscyB3aGVuIGNsaWNraW5nIGFueSBpdGVtcyBpbiB0 aGUg4oCcTm90aGluZ+KAnSBtZW51IGluIGFsbCBmb3VyIHdpbmRvd3MgKExlZnQtdG8tcmlnaHQp LU1lbnUgSXRlbSBUZXN0IGFuZCAoUmlnaHQtdG8tbGVmdCktTWVudSBJdGVtIFRlc3QKKyAgLSBK REstODM3Mzg2NjogUmVmYWN0b3IgamF2YS9uZXQvaHR0cGNsaWVudC9UaHJvd2luZ1N1YnNjcmli ZXJzKi5qYXZhIHRlc3RzIHRvIHVzZSBKVW5pdDUKKyAgLSBKREstODM3Mzg5MzogUmVmYWN0b3Ig bmV0d29ya2luZyBodHRwIHNlcnZlciB0ZXN0cyB0byB1c2UgSlVuaXQKKyAgLSBKREstODM3Mzkx MzogUmVmYWN0b3Igc2VyaWFsaXphdGlvbiB0ZXN0cyB0byB1c2UgSlVuaXQKKyAgLSBKREstODM3 MzkyODogNCBEYW5nbGluZyBwb2ludGVyIGRlZmVjdCBncm91cHMgaW4gamF2YS5jCisgIC0gSkRL LTgzNzQwMDE6IHN1bi9zZWN1cml0eS8gc2tpcCB3aXRob3V0IEV4Y2VwdGlvbnMKKyAgLSBKREst ODM3NDA1ODogRW5oYW5jZSBKUEVHIGhhbmRsaW5nCisgIC0gSkRLLTgzNzQxNjg6IFJlc29sdmUg ZGlzYWJsZWQgd2FybmluZ3MgaW4gSkRXUCBhZ2VudAorICAtIEpESy04Mzc0MzA0OiBNdWx0aVJl c29sdXRpb25TcGxhc2hUZXN0LmphdmEgZmFpbHMgaW4gQ0k6ICJJbWFnZSB3aXRoIHdyb25nIHJl c29sdXRpb24gaXMgdXNlZCBmb3Igc3BsYXNoIHNjcmVlbiEiCisgIC0gSkRLLTgzNzQzMjI6IFRl c3RNZW1vcnlXaXRoU3ViZ3JvdXBzLmphdmEgZmFpbHMgUGVybWlzc2lvbiBkZW5pZWQKKyAgLSBK REstODM3NDM0MzogRml4IFNJR1NFR1Ygd2hlbiBsaWIvbW9kdWxlcyBpcyB1bnJlYWRhYmxlCisg IC0gSkRLLTgzNzQ0NDk6IFNoZW5hbmRvYWg6IExlYWYgbG9ja3MgdXNlZCBieSBTaGVuYW5kb2Fo IG5lZWQgbG93ZXIgcmFua3MKKyAgLSBKREstODM3NDUwNjogSW5jb3JyZWN0IHBvc2l0aW9uaW5n IG9mIGFycm93IGljb24gaW4gcGFyZW50IEpNZW51IGluIFdpbmRvd3MgTCZGCisgIC0gSkRLLTgz NzQ3MTI6IEFPVE1hcHBlZEhlYXBXcml0ZXI6OnJlbG9jYXRlX2ZpZWxkX2luX2J1ZmZlciBzaG91 bGQgdXNlIENvbXByZXNzZWRPb3BzOjpuYXJyb3dfb29wX2Nhc3QKKyAgLSBKREstODM3NDcyNzog QXVkaW8gY29uZmlndXJhdGlvbiBQbGF0Zm9ybSBjbGFzcyAtIHVzZSBuaW8gZm9yIGdldHRpbmcg ZW5kaWFubmVzcyBvZiB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybQorICAtIEpESy04Mzc0NzQ0OiBF bmFibGUgZHVtcGluZyBvZiBBUFggRUdQUnMgKFIxNuKAk1IzMSkgaW4gSlZNIGZhdGFsIGVycm9y IGxvZ3MKKyAgLSBKREstODM3NDc2OTogUFBDOiBNQVNNOjpwb3BfY29udF9mYXN0cGF0aCgpIHNo b3VsZCByZXNldCBfY29udF9mYXN0cGF0aCBpZiBTUCA9PSBfY29udF9mYXN0cGF0aAorICAtIEpE Sy04Mzc0ODg4OiBJbXBsZW1lbnQgaW50ZXJuYWwgdGVzdCBjYWNoZSB0byBoZWxwIFVzZXJJdGVy Q291bnQgdGVzdCBwZXJmb3JtYW5jZQorICAtIEpESy04Mzc0OTk4OiBGYWlsaW5nIG9zOjp3cml0 ZSAtIHJlbW92ZSBiYWQgZmlsZQorICAtIEpESy04Mzc1MDY1OiBVcGRhdGUgTENNUyB0byAyLjE4 CisgIC0gSkRLLTgzNzUxNzc6IEd0ZXN0IG9zX2xpbnV4LmRlY29kZXJfZ2V0X3NvdXJjZV9pbmZv X3ZhbGlkX3ZtIGZhaWxzIHdpdGggLWZmdW5jdGlvbi1zZWN0aW9ucworICAtIEpESy04Mzc1Mjk0 OiAoZnMpIEZpbGVzLmNvcHkgY2FuIGZhaWwgd2l0aCBFT1BOT1RTVVBQIHdoZW4gY29weV9maWxl X3JhbmdlIG5vdCBzdXBwb3J0ZWQKKyAgLSBKREstODM3NjAzMTogSHR0cHNVUkxDb25uZWN0aW9u LmdldFNlcnZlckNlcnRpZmljYXRlcygpIHRocm93cyAiamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4 Y2VwdGlvbjogY29ubmVjdGlvbiBub3QgeWV0IG9wZW4iIGZvciB0aGUgSEVBRCBtZXRob2QKKyAg LSBKREstODM3NjEwNDogQzIgY3Jhc2hlcyBpbiBQaGlOb2RlOjpJZGVhbChQaGFzZUdWTiosIGJv b2wpIGFjY2Vzc2luZyBOVUxMIHBvaW50ZXIKKyAgLSBKREstODM3NjE1MTogVGVzdCBqYXZheC9z d2luZy9KRmlsZUNob29zZXIvNDk2NjE3MS9idWc0OTY2MTcxLmphdmEgaXMgZmFpbGluZyB3aXRo IE9PTUUKKyAgLSBKREstODM3NjE1MjogVGVzdCBqYXZheC9zb3VuZC9zYW1wbGVkL0NsaXAvYnVn NTA3MDA4MS5qYXZhIHRpbWVkIG91dCB0aGVuIGNvbXBsZXRlZAorICAtIEpESy04Mzc2MTg1OiBO b1N1Y2hGaWVsZEVycm9yIHRocm93biBhZnRlciBhIHJlY29yZCB3aXRoIHR5cGUgYW5ub3RhdGlv biByZXRyYW5zZm9ybWVkCisgIC0gSkRLLTgzNzYyMzM6IENsZWFuIHVwIGNvZGUgaW4gRGVza3Rv cCBuYXRpdmUgcGVlcgorICAtIEpESy04Mzc2Mjg3OiBDcmFzaGVzIHdoZW4gdXNpbmcgLVhYOk9i akFycmF5TWFya2luZ1N0cmlkZT0wCisgIC0gSkRLLTgzNzY0MDI6IERlcGVuZGVuY2llczo6cHJp bnRfc3RhdGlzdGljcygpIGFuZCBBYnN0cmFjdENsYXNzSGllcmFyY2h5V2Fsa2VyOjpwcmludF9z dGF0aXN0aWNzKCkgYXJlIG5vdCBjYWxsZWQgZnJvbSBQUk9EVUNUIGNvZGUKKyAgLSBKREstODM3 NjY4NDogQ29tcGlsZSBPcGVuSkRLIGluIGhlYWRsZXNzIG1vZGUgd2l0aG91dCByZXF1aXJlZCBY MTEgbGlicmFyaWVzCisgIC0gSkRLLTgzNzY5NTY6IEFkZCBKVk1USSBwaGFzZSBlbnRlcmluZy9z ZXR0aW5nIHRvIGhzZXJyIGV2ZW50IGxvZworICAtIEpESy04Mzc2OTY5OiBTaGVuYW5kb2FoOiBH QyBzdGF0ZSBnZXR0ZXJzIHNob3VsZCBiZSBpbmxpbmVhYmxlCisgIC0gSkRLLTgzNzY5NzA6IFNo ZW5hbmRvYWg6IFZlcmlmaWVyIHNob3VsZCBkbyBiYXNpYyB2ZXJpZmljYXRpb24gYmVmb3JlIHRv dWNoaW5nIG9vcHMKKyAgLSBKREstODM3NzE1ODogRW5oYW5jZSBYQk0gaW1hZ2Ugc3VwcG9ydAor ICAtIEpESy04Mzc3MTY3OiBqYXZheC9pbWFnZWlvL1JlYWRBYm9ydFRlc3QuamF2YSB0aHJvdyBO UEUgd2hlbiB4MTEgdW5hdmFpbGFibGUKKyAgLSBKREstODM3NzQ5ODogSW1wcm92ZSBIdHRwU2Vy dmVyIGhhbmRsaW5nCisgIC0gSkRLLTgzNzc1MTI6IEFPVCBjYWNoZSBjcmVhdGlvbiBmYWlscyB3 aXRoIGludmFsaWQgbmF0aXZlIHBvaW50ZXIKKyAgLSBKREstODM3NzYwMjogQ3JlYXRlIGF1dG9t YXRlZCB0ZXN0IGZvciBQYWdlUmFuZ2UKKyAgLSBKREstODM3NzcyNzogR2hvc3QgY2FyZXQgYW5k IGZvY3VzIGFwcGVhciBpbiBub27igJFlZGl0YWJsZSB0ZXh0IGZpZWxkcworICAtIEpESy04Mzc3 ODMzOiBFbmhhbmNlIEphciBmaWxlIHByb2Nlc3NpbmcKKyAgLSBKREstODM3NzkwNzogKHByb2Nl c3MpIFJhY2UgaW4gUHJvY2Vzc0J1aWxkZXIgY2FuIGNhdXNlIEpWTSBoYW5ncworICAtIEpESy04 Mzc3OTEwOiBNaW5vciBjbGVhbnVwIG9mIGphdmEvaW8vRmlsZURlc2NyaXB0b3IvU2hhcmluZy5q YXZhCisgIC0gSkRLLTgzNzc5MzI6IEFPVCBjYWNoZSBpcyBub3QgcmVqZWN0ZWQgd2hlbiBKQVIg ZmlsZSBoYXMgY2hhbmdlZAorICAtIEpESy04Mzc3OTQ0OiBMb3dNZW1vcnlUZXN0Mi5qYXZhI2lk MSBpbnRlcm1pdHRlbnQgZmFpbHMgT09NRTogTWV0YXNwYWNlCisgIC0gSkRLLTgzNzc5NDk6IFRl c3RaUmVsb2NhdGlvblNldEV2ZW50LmphdmEgaW50ZXJtaXR0ZW50IGZhaWxzIE9PTUUKKyAgLSBK REstODM3ODA4MzogTWFyayBzaGVuYW5kb2FoL2dlbmVyYXRpb25hbC9UZXN0T2xkR3Jvd3RoVHJp Z2dlcnMuamF2YSBhcyBmbGFnbGVzcworICAtIEpESy04Mzc4MjAxOiBbT0dMXSBnbFhNYWtlQ29u dGV4dEN1cnJlbnQoKSBkcm9wcyB0aGUgYnVmZmVycyBvZiB0aGUgdW5ib3VuZCBkcmF3YWJsZQor ICAtIEpESy04Mzc4NDE3OiBQcmludGluZyBBbGwgcGFnZXMgcmVzdWx0cyBpbiBOUEUgZm9yIDEu MSBQcmludEpvYgorICAtIEpESy04Mzc4NTYxOiBNYXJrIGdjL3NoZW5hbmRvYWgvY29tcGlsZXIv VGVzdExpbmtUb05hdGl2ZVJCUC5qYXZhIGFzIC9uYXRpdmUKKyAgLSBKREstODM3ODY4NzogSW1w cm92ZSBkZWxlZ2F0aW9uIG9mIEh0dHBVUkxDb25uZWN0aW9uCisgIC0gSkRLLTgzNzg3Mjc6IFtt YWNPU10gTWlzc2luZyBkaXNwYXRjaF9yZWxlYXNlIGZvciBzZW1hcGhvcmVzIGluIENEZXNrdG9w UGVlcgorICAtIEpESy04Mzc4NzQ2OiBaR0M6IGpkay9qZnIvZXZlbnQvZ2MvZGV0YWlsZWQvVGVz dFpSZWxvY2F0aW9uU2V0R3JvdXBFdmVudC5qYXZhIGludGVybWl0dGVudCBPT01FCisgIC0gSkRL LTgzNzg3NjQ6IGZpbGVTdHJlYW06OmZpbGVTaXplKCkgZmFpbHMgZm9yID4yR0IgZmlsZXMgb24g V2luZG93cworICAtIEpESy04Mzc4Nzc0OiBCdW1wIHVwZGF0ZSB2ZXJzaW9uIGZvciBPcGVuSkRL OiBqZGstMjUuMC40CisgIC0gSkRLLTgzNzg4MTA6IEVuYWJsZSBtaXNzaW5nIEZGTSB0ZXN0IHZp YSBqdHJlZyByZXF1aXJlcyBmb3IgUklTQy1WCisgIC0gSkRLLTgzNzg4MzY6IEVuYWJsZSBsaW5r dGltZS1nYyBieSBkZWZhdWx0IG9uIExpbnV4IHBwYzY0bGUKKyAgLSBKREstODM3ODg3ODogUmVm YWN0b3IgamF2YS9uaW8vY2hhbm5lbHMvQXN5bmNocm9ub3VzU29ja2V0Q2hhbm5lbCB0ZXN0IHRv IHVzZSBKVW5pdAorICAtIEpESy04Mzc4ODg4OiBqZGsvaW5jdWJhdG9yL3ZlY3Rvci9GbG9hdDE2 T3BlcmF0aW9uc0JlbmNobWFyay5qYXZhIHVzZXMgd3JvbmcgcGFja2FnZSBuYW1lCisgIC0gSkRL LTgzNzkwMjE6IFNoZW5hbmRvYWg6IFNwZWVkdXAgU2hlbmFuZG9haFNpbXBsZUJpdE1hcFRlc3QK KyAgLSBKREstODM3OTIwMjogU3VwcG9ydCBsaW5rdGltZS1nYyBvbiBMaW51eCB3aXRoIGNsYW5n CisgIC0gSkRLLTgzNzk0MTY6IEFJWCBidWlsZCBmYWlscyBpZiBzeXN0ZW0gKG5vdCBHTlUpIGRh dGUgdG9vbCBpcyBpbiBQQVRICisgIC0gSkRLLTgzNzk0MjU6IFdpbmRvd3MgYW5kIG1hY09TIHNo b3VsZCBub3QgYWxsb3cgdW5zdXBwb3J0ZWQgaGVhZGxlc3Mtb25seSBidWlsZAorICAtIEpESy04 Mzc5NDU3OiBUZXN0IEVBVGVzdHMuamF2YSNpZDAgRVJST1I6IG1vbml0b3IgbGlzdCBlcnJvcnM6 IGVycm9yX2NudD0xCisgIC0gSkRLLTgzNzk0NjQ6IEVuYWJsZSBtaXNzaW5nIHN0YWNrIHdhbGtp bmcgdGVzdCB2aWEganRyZWcgcmVxdWlyZXMgZm9yIFJJU0MtVgorICAtIEpESy04Mzc5NDk5OiBb QUlYXSBoZWFkbGVzcy1vbmx5IGJ1aWxkIG9mIGxpYmphd3Quc28gZmFpbHMKKyAgLSBKREstODM3 OTUxNTogZHJhZnQtaWV0Zi1sYW1wcy1reWJlci1jZXJ0aWZpY2F0ZXMgaXMgbm93IFJGQyA5OTM1 CisgIC0gSkRLLTgzODAwMTE6IFBhdGgtdG8tZ2Nyb290cyBzZWFyY2ggc2hvdWxkIG5vdCB0cmln Z2VyIHN0YWNrIG92ZXJmbG93cworICAtIEpESy04MzgwMDQxOiBQUEM6IHJlbW92ZSBQT1dFUjYg cmVtbmFudHMKKyAgLSBKREstODM4MDIyMjogUmVmYWN0b3IgdGVzdC9qZGsvamF2YS9sYW5nL0No YXJhY3RlciBUZXN0TkcgdGVzdHMgdG8gSlVuaXQKKyAgLSBKREstODM4MDMxNjogVGVzdCBydW50 aW1lL29zL0F2YWlsYWJsZVByb2Nlc3NvcnMuamF2YSBmYWlscyBJbnZhbGlkIGFyZ3VtZW50Cisg IC0gSkRLLTgzODA0MDk6IEpWTSBjcmFzaGVzIHdoZW4gLVhYOkFPVE1vZGU9Y3JlYXRlIHVzZXMg YXBwLmFvdGNvbmYgZ2VuZXJhdGVkIHdpdGggSlZNVEkgYWdlbnQKKyAgLSBKREstODM4MDQyODog UHJvYmxlbUxpc3QgY29udGFpbmVycy9kb2NrZXIvVGVzdEpjbWRXaXRoU2lkZUNhci5qYXZhIG9u IGxpbnV4LWFsbAorICAtIEpESy04MzgwNDMxOiBTaGVuYW5kb2FoOiBDb25jdXJyZW50IG1vZGlm aWNhdGlvbiBvZiBzdGFjay1jaHVuayBvYmplY3RzIGR1cmluZyBldmFjdWF0aW9uCisgIC0gSkRL LTgzODA0NzQ6IENyYXNoIFNFR1YgaW4gVGhyZWFkSWRUYWJsZTo6bGF6eV9pbml0aWFsaXplICBh ZnRlciBKREstODMyMzc5MgorICAtIEpESy04MzgwNTY1OiBQUEM2NDogZGVvcHRpbWl6YXRpb24g c3R1YiBzaG91bGQgc2F2ZSB2ZWN0b3IgcmVnaXN0ZXJzCisgIC0gSkRLLTgzODA2NjM6IFVwZGF0 ZSBqY21kIG1hbiBwYWdlIHRvIGluY2x1ZGUgQU9ULmVuZF9yZWNvcmRpbmcgZGlhZ25vc3RpYyBj b21tYW5kCisgIC0gSkRLLTgzODA2NzI6IEltcHJvdmUgY2VydGlmaWNhdGlvbiBjaGVja2luZwor ICAtIEpESy04MzgwODQ2OiBHZW5TaGVuOiBSZW1vdmUgdGhlIGV4cGVyaW1lbnRhbCBvcHRpb24g dG8gZGlzYWJsZSBhZGFwdGl2ZSB0ZW51cmluZworICAtIEpESy04MzgwOTQ3OiBBZGQgcHVsbCBy ZXF1ZXN0IHRlbXBsYXRlCisgIC0gSkRLLTgzODEwMzk6IEVuaGFuY2UgQVdUIEltYWdpbmdMaWIK KyAgLSBKREstODM4MTA0OTogRW5oYW5jZSBKYXIgaGFuZGxpbmcKKyAgLSBKREstODM4MTIwNTog R0hBOiBVcGdyYWRlIE5vZGUuanMgMjAgdG8gMjQKKyAgLSBKREstODM4MTMxNTogY29tcGlsZXIv dmVjdG9yYXBpL1Rlc3RWZWN0b3JSZWFsbG9jYXRpb24uamF2YSBmYWlscyB3aXRoIC1YWDpVc2VB Vlg9MSBhZnRlciBKREstODM4MDU2NQorICAtIEpESy04MzgxMzgyOiBTaGVuYW5kb2FoOiBhc3Nl cnQoY2FwYWNpdHkgPiAwKSBmYWlsZWQ6IGZyZWUgcmVnaW9ucyBtdXN0IGhhdmUgYWxsb2NhdGlv biBjYXBhY2l0eQorICAtIEpESy04MzgxNTE5OiBFbmhhbmNlIERlciBWYWx1ZSBIYW5kbGluZwor ICAtIEpESy04MzgxNzk2OiBFbmhhbmNlIENlcnRpZmljYXRlIHBhcnNpbmcKKyAgLSBKREstODM4 MTg3MTogR2VuU2hlbjogU2hlbmFuZG9haEdDSGV1cmlzdGljcyBmbGFnIG5vdCByZXNldCBhZnRl ciBpZ25vcmluZyBub24tYWRhcHRpdmUgdmFsdWUKKyAgLSBKREstODM4MTkzNTogSW1wcm92ZSBu dW1DaHVua3MgcmFuZ2UgaW4gdGhlIFBQQzY0IENhbGxBcmFuZ2VyCisgIC0gSkRLLTgzODE5Mzc6 IE1ha2UgZXhjZXB0aW9ucyBpbiBKYXZhX3N1bl9zZWN1cml0eV9tc2NhcGlfQ0tleVBhaXJHZW5l cmF0b3IgZ2VuZXJhdGVDS2V5UGFpciBtb3JlIHNwZWNpZmljCisgIC0gSkRLLTgzODIwMTg6IHRl c3QvamRrL2phdmEvbmlvL2ZpbGUvc3BpL1NldERlZmF1bHRQcm92aWRlci5qYXZhIGxlYXZlcyBh IGRpcmVjdG9yeSBpbiAvdG1wCisgIC0gSkRLLTgzODIwMjA6IFRpbWUgWm9uZSBBYmJyZXZpYXRp b24gTm90IExvY2FsaXplZCBmb3IgTm9uLUVuZ2xpc2ggTG9jYWxlcworICAtIEpESy04MzgyMDM1 OiBbdWJzYW5dIFVuZGVyIFVCU0FOIGJ1aWxkcywgZGlzYWJsZSB0ZXN0cyB0aGF0IHJlbHkgb24g c2ltdWxhdGVkIEpWTSBjcmFzaGVzCisgIC0gSkRLLTgzODIwOTA6IFJlbW92ZSAucmVqIGFuZCAu b3JpZyBmcm9tIC5naXRpZ25vcmUKKyAgLSBKREstODM4MjI0MjogSkZSOiBNZXRhZGF0YSByZWNv bnN0cnVjdGlvbiBpbnZhbGlkYXRlcyBDb25zdGFudE1hcCBmb3IgamF2YS5sYW5nLlN0cmluZwor ICAtIEpESy04MzgyMjk1OiBTaGVuYW5kb2FoOiB3cm9uZyBkZW5vbWluYXRvciBpbiBmdWxsIGdj IHN1bW1hcnkKKyAgLSBKREstODM4MjM5NTogRGlzYWJsZSBzdHJpbmdvcC1vdmVyZmxvdyBpbiBz aGVuYW5kb2FoR2VuZXJhdGlvbmFsSGVhcC5jcHAKKyAgLSBKREstODM4MjQxOTogQWRkIG1pc3Nl ZCBAa2V5IHJhbmRvbW5lc3MgYWZ0ZXIgSkRLLTgzNzA0ODkKKyAgLSBKREstODM4MjUyMjogRGlz YWJsZSBzdHJpbmdvcC1vdmVyZmxvdyBpbiBzYWZlcG9pbnRNZWNoYW5pc20uY3BwCisgIC0gSkRL LTgzODI3NDA6IEpGUjogRGlzYWJsZSBqZGsuT2xkT2JqZWN0U2FtcGxlIGV2ZW50IGZvciBnZW5l cmF0aW9uYWwgWkdDCisgIC0gSkRLLTgzODI4Nzg6IFJJU0MtVjogTWlzc2luZyBJbmxpbmVTa2lw cGVkSW5zdHJ1Y3Rpb25zQ291bnRlciBpbiBaR0MgYmFycmllcnMgc3R1YnMKKyAgLSBKREstODM4 MjkzMjogWzI1dV0gVGVzdCBqYXZhL2xhbmcvaW5zdHJ1bWVudC9SZXRyYW5zZm9ybVJlY29yZFR5 cGVBbm4vVGVzdFJldHJhbnNmb3JtUmVjb3JkLmphdmHigI4gZmFpbHMgd2l0aCBjb21waWxhdGlv biBlcnJvcgorICAtIEpESy04MzgzMTYxOiBbUFBDNjRdIE1hY2hDYWxsRHluYW1pY0phdmFOb2Rl OjpyZXRfYWRkcl9vZmZzZXQoKSBuZWVkcyBhZGFwdGF0aW9uIGZvciBDT0gKKyAgLSBKREstODM4 MzE3NTogKHR6KSBVcGRhdGUgVGltZXpvbmUgRGF0YSB0byAyMDI2YgorICAtIEpESy04MzgzMTgz OiBTaGVuYW5kb2FoOiBNYW5nbGUgdHJhc2hlZCByZWdpb25zIHVwIHRvIHRvcCBpbnN0ZWFkIG9m IGVuZAorICAtIEpESy04MzgzMzU0OiBVcGRhdGUgTENNUyB0byAyLjE5LjEKKyAgLSBKREstODM4 MzQ3MzogRm9sbG93IG9uIGZyb20gdHpkYXRhMjAyNmIgdGltZSBjaGFuZ2UgdG8gaW5jbHVkZSB0 ZW1wb3JhcnkgaGFjayBCQyB0aW1lIGNoYW5nZQorICAtIEpESy04MzgzNjAxOiBSSVNDLVY6IFNo ZW5hbmRvYWhCYXJyaWVyU2V0QXNzZW1ibGVyOjpsb2FkX3JlZmVyZW5jZV9iYXJyaWVyIGNhbGxz ICJ3ZWFrIiBvbiAicGhhbnRvbSIgcGF0aAorICAtIEpESy04MzgzNjMwOiBGaXggaXRlcmF0aW9u IGluIHRlc3RzIGRvaW5nIGNsYXNzIHJlZGVmaW5pdGlvbgorICAtIEpESy04Mzg0MDQzOiBbUkVE T10gSW5jb3JyZWN0IGhhbmRsaW5nIG9mIEhhd2FpaV9BbGV1dGlhbiBtZXRhem9uZQorICAtIEpE Sy04Mzg0MTU4OiBHSEE6IERvd25ncmFkZSBXaW5kb3dzIEdIQSBydW5uZXJzIHRvIHdpbmRvd3Mt MjAyMiB0ZW1wb3JhcmlseQorICAtIEpESy04Mzg0MTYzOiAoc28pIFNvY2tldENoYW5uZWwuY29u bmVjdCBhbmQgZmluaXNoQ29ubmVjdCgpIGV4Y2VwdGlvbiBtZXNzYWdlcyBjb3VsZCBiZSBpbXBy b3ZlZAorICAtIEpESy04Mzg0MjIzOiBSSVNDLVY6IGVudHJ5X2JhcnJpZXJfb2Zmc2V0IHNob3Vs ZCBjb25zaWRlciBVc2VadHNvCisgIC0gSkRLLTgzODQ0ODY6IE5UTE0gdGVzdHMgZmFpbCBvbiBX aW5kb3dzIDExIGFuZCBXaW5kb3dzIFNlcnZlciAyMDI1CisgIC0gSkRLLTgzODQ0OTU6IFVwZGF0 ZSBMaWJwbmcgdG8gMS42LjU4CisgIC0gSkRLLTgzODQ1NDA6IFsyNXUsIDIxdSwgMTd1XSBVcGRh dGUgR0hBIEpES3MgYWZ0ZXIgQXByLzI2IHVwZGF0ZXMKKyAgLSBKREstODM4NDgxNTogU2VsZWN0 T25lS2V5T3V0T2ZNYW55IGFuZCBQcmVmZXJyZWRLZXkgZmFpbCBhZnRlciBleHBpcmVkIHRlc3Qg Y2VydGlmaWNhdGUKKyAgLSBKREstODM4NDkwMjogVXBkYXRlIEdJRmxpYiB0byA2LjEuMworICAt IEpESy04Mzg1MzkwOiBVcGRhdGUgRnJlZVR5cGUgdG8gMi4xNC4zCisgIC0gSkRLLTgzODU0OTA6 IFVwZGF0ZSBIYXJmQnV6eiB0byAxNC4yLjAKKyAgLSBKREstODM4NjU1MTogV2luZG93cyBidWls ZCBicm9rZW4gYmVjYXVzZSBvZiBNU3lzMi9NYWtlIHVwZGF0ZQorCitOb3RlcyBvbiBpbmRpdmlk dWFsIGlzc3VlczoKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitob3RzcG90L3N2YzoK KworSkRLLTgzNjUwNTc6IEFkZCBzdXBwb3J0IGZvciBqYXZhLnV0aWwuY29uY3VycmVudCBsb2Nr IGluZm9ybWF0aW9uIHRvIFRocmVhZC5kdW1wX3RvX2ZpbGUKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CitBbiBBYnN0cmFjdE93bmFibGVTeW5jaHJvbml6ZXIgbG9jayBvYmplY3Qg aGFzIGEgbm90aW9uIG9mIGV4Y2x1c2l2ZQorb3duZXJzaGlwIGJ5IGEgcGFydGljdWxhciB0aHJl YWQuICBXaGVuIGFub3RoZXIgdGhyZWFkIGlzIHBhcmtlZAord2FpdGluZyBvbiB0aGlzIGxvY2ss IHRoaXMgaW5mb3JtYXRpb24gaXMgbm93IG9idGFpbmVkIGFuZCBwcmVzZW50ZWQKK2FzIHBhcnQg b2YgdGhlIHRocmVhZCBkdW1wIHByb3ZpZGVkIGJ5IHRoZQorY29tLnN1bi5tYW5hZ2VtZW50Lkhv dFNwb3REaWFnbm9zdGljTVhCZWFuLmR1bXBUaHJlYWRzIEFQSSBhbmQgdGhlCitgamNtZCA8cGlk PiBUaHJlYWQuZHVtcF90b19maWxlYCBjb21tYW5kLgorCitzZWN1cml0eS1saWJzL2phdmF4LmNy eXB0bzoKKworSkRLLTgzNDc5Mzg6IEFkZCBTdXBwb3J0IGZvciB0aGUgTGF0ZXN0IE1MLUtFTSBh bmQgTUwtRFNBIFByaXZhdGUgS2V5IEVuY29kaW5ncworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor VGhpcyByZWxlYXNlIG9mIE9wZW5KREsgYWRkcyBzdXBwb3J0IGZvciBlbmNvZGluZyBNTC1LRU0g YW5kIE1MLURTQQora2V5cyB0byBQS0NTIzggZm9ybWF0IHVzaW5nIHRoZSBERVItZW5jb2RlZCBB U04uMSBDSE9JQ0UgZm9ybWF0cworZGVmaW5lZCBpbiBTZWN0aW9uIDYsICJQcml2YXRlIEtleSBG b3JtYXQiIG9mIFJGQyA5OTM1IFswXSBhbmQgUkZDCis5ODgxIFsxXS4gIFRoaXMgZm9ybWF0IGlz IHJlZmVycmVkIHRvIGFzICJzZWVkIi4KKworVGhpcyByZWxlYXNlIGFsc28gaW50cm9kdWNlcyB0 d28gbmV3IHNlY3VyaXR5IGFuZCBzeXN0ZW0gcHJvcGVydGllcyB0bworY29udHJvbCB3aGljaCBQ S0NTIzggZW5jb2RpbmcgaXMgdXNlZC4gIFRoaXMgZW5jb2RpbmcgaXMgdXNlZCB3aGVuCitnZW5l cmF0aW5nIG5ldyBrZXlzIHdpdGggYSBgS2V5UGFpckdlbmVyYXRvcmAgYW5kIGFzIHRoZSBvdXRw dXQgd2hlbgordHJhbnNsYXRpbmcgdGhlbSB3aXRoIGBLZXlGYWN0b3J5LnRyYW5zbGF0ZUtleWAu ICBUaGVzZSBwcm9wZXJ0aWVzIGFyZQorYGpkay5tbGtlbS5wa2NzOC5lbmNvZGluZ2AgYW5kIGBq ZGsubWxkc2EucGtjczguZW5jb2RpbmdgLgorCitUaGUgcG9zc2libGUgY2FzZS1pbnNlbnNpdGl2 ZSB2YWx1ZXMgb2YgdGhlc2UgcHJvcGVydGllcyBhcmU6CisKKyogYHNlZWRgOyB0aGUgbmV3IGZv cm1hdCBpbnRyb2R1Y2VkIGluIHRoaXMgcmVsZWFzZSBhbmQgdGhlIGRlZmF1bHQuCitUaGlzIGlz IDY0IGJ5dGVzIGZvciBNTC1LRU0gYW5kIDMyIGJ5dGVzIGZvciBNTC1EU0EuCisqIGBleHBhbmRl ZEtleWA7IHRoZSBmb3JtYXQgdXNlZCBvbiBpbnRyb2R1Y3Rpb24gb2YgTUwtS0VNIGFuZCBNTC1E U0EKK2tleXMgaW4gT3BlbkpESyAyNC4KKyogYGJvdGhgOyBhIHNlcXVlbmNlIGNvbnRhaW5pbmcg Ym90aCBlbmNvZGluZ3MuCisKK0FzIG9sZGVyIE9wZW5KREsgcmVsZWFzZXMgZG8gbm90IHN1cHBv cnQgdGhlIGVuY29kaW5nIGludHJvZHVjZWQgYnkKK3RoaXMgcmVsZWFzZSwgdGhleSB3aWxsIG5v dCBiZSBhYmxlIHRvIGRlY29kZSBrZXlzIGdlbmVyYXRlZCB1c2luZyB0aGUKK25ldyBkZWZhdWx0 LiAgVG8gcHJvZHVjZSBhIGtleSBjb21wYXRpYmxlIHdpdGggb2xkZXIgcmVsZWFzZXMsIHRoZQor ZW5jb2Rpbmcgc2hvdWxkIGJlIHNldCB0byBgZW5jb2RlZEtleWAgYW5kIHRoZW4gdGhlIGtleSBl aXRoZXIKK2dlbmVyYXRlZCBvciBhbiBleGlzdGluZyBrZXkgcGFzc2VkIHRvIGB0cmFuc2xhdGVL ZXlgLgorCitBcyB3aXRoIGFsbCBzZWN1cml0eSBhbmQgc3lzdGVtIHByb3BlcnR5IHBhaXJzLCBz cGVjaWZ5aW5nIGEgbm9uLWVtcHR5Cit2YWx1ZSBmb3IgdGhlIHN5c3RlbSBwcm9wZXJ0eSB0YWtl cyBwcmVjZWRlbmNlIG92ZXIgdGhlIHNlY3VyaXR5Citwcm9wZXJ0eS4KKworWzBdIGh0dHBzOi8v d3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM5OTM1Lmh0bWwjbmFtZS1wcml2YXRlLWtleS1mb3Jt YXQKK1sxXSBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjOTg4MS5odG1sI25hbWUt cHJpdmF0ZS1rZXktZm9ybWF0CisKK2hvdHNwb3QvamZyOgorCitKREstODM4Mjc0MDogSkZSOiBE aXNhYmxlIGpkay5PbGRPYmplY3RTYW1wbGUgZXZlbnQgZm9yIGdlbmVyYXRpb25hbCBaR0MKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorTGVhayBwcm9maWxpbmcgdXNpbmcgdGhlIEpGUiBldmVudCBgamRrLk9s ZE9iamVjdFNhbXBsZWAgaXMgbm93CitkaXNhYmxlZCBmb3IgZ2VuZXJhdGlvbmFsIFpHQyBkdWUg dG8gcGVyZm9ybWFuY2UgaXNzdWVzLiAgR2VuZXJhdGlvbmFsCitaR0Mgb25seSBkb2VzIHdlYWsg cmVmZXJlbmNlIHByb2Nlc3NpbmcgaW4gdGhlIG9sZCBnZW5lcmF0aW9uLCBzbworc2FtcGxpbmcg d2lsbCBjYXVzZSBnYXJiYWdlIHRvIGJlIGFydGlmaWNpYWxseSBrZXB0IGFsaXZlIHVudGlsIGFu IG9sZAorZ2VuZXJhdGlvbiBjb2xsZWN0aW9uLgorCitzZWN1cml0eS1saWJzL2phdmEuc2VjdXJp dHk6CisKK0pESy04MzcyMzUxOiBBZGQgMiBXSVNlS2V5IHJvb3RzCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorVGhlIGZvbGxvd2luZyByb290IGNlcnRpZmljYXRlcyBoYXZlIGJl ZW4gYWRkZWQgdG8gdGhlIGNhY2VydHMKK3RydXN0c3RvcmU6CisKK0FsaWFzIE5hbWU6IHdpc2Vr ZXlnbG9iYWxyb290Z2JjYQorRGlzdGluZ3Vpc2hlZCBOYW1lOiBDTj1PSVNURSBXSVNlS2V5IEds b2JhbCBSb290IEdCIENBLCBPVT1PSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkLCBPPVdJU2VLZXks IEM9Q0gKK1NlcmlhbCBOdW1iZXI6IDc2YjEyMDUyNzRmMDg1ODc0NmIzZjgyMzFhZjZjMmMwCitW YWxpZCBGcm9tOiBNb24gRGVjIDAxIDE1OjAwOjMyIEdNVCAyMDE0CitWYWxpZCBVbnRpbDogVGh1 IERlYyAwMSAxNToxMDozMSBHTVQgMjAzOQorCitBbGlhcyBOYW1lOiB3aXNla2V5Z2xvYmFscm9v dGdjY2EKK0Rpc3Rpbmd1aXNoZWQgTmFtZTogQ049T0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBH QyBDQSwgT1U9T0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZCwgTz1XSVNlS2V5LCBDPUNICitTZXJp YWwgTnVtYmVyOiAyMTJhNTYwY2FlZGEwY2FiNDA0NWJmMmJhMjJkM2FlYQorVmFsaWQgRnJvbTog VHVlIE1heSAwOSAwOTo0ODozNCBHTVQgMjAxNworVmFsaWQgVW50aWw6IEZyaSBNYXkgMDkgMDk6 NTg6MzMgR01UIDIwNDIKKworSkRLLTgzODE3OTY6IEVuaGFuY2UgQ2VydGlmaWNhdGUgcGFyc2lu ZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2l0aCB0aGlzIHJl bGVhc2Ugb2YgT3BlbkpESywgYSBzZWN1cml0eSBhbmQgc3lzdGVtIHByb3BlcnR5CitgY29tLnN1 bi5zZWN1cml0eS5jcmwubWF4U2l6ZWAgaXMgaW50cm9kdWNlZCB3aGljaCBhY3RzIGFzIGEgbWF4 aW11bQorc2l6ZSBsaW1pdCBvbiBhIENlcnRpZmljYXRlIFJldm9jYXRpb24gTGlzdCAoQ1JMKSBk b3dubG9hZGVkIG92ZXIgdGhlCituZXR3b3JrLiAgRm9yIFVSSUNlcnRTdG9yZSByZXF1ZXN0cywg dGhlIHZhbHVlIGlzIHRoZSBtYXhpbXVtIHNpemUgaW4KK2J5dGVzIG9mIHRoZSBERVItZW5jb2Rl ZCBDUkwuICBGb3IgTERBUENlcnRTdG9yZSBxdWVyaWVzLCB0aGUKK3RocmVzaG9sZCBpcyB0aGUg c3VtIG9mIGFsbCBDUkxzIGRvd25sb2FkZWQgZnJvbSBhIHNpbmdsZSBzZWFyY2guICBCeQorZGVm YXVsdCwgdGhlIG1heGltdW0gc2l6ZSBpcyAyME1pQiAoMjA5NzE1MjAgYnl0ZXMpIGFuZCBDUkxz IGxhcmdlcgordGhhbiB0aGlzIHdpbGwgYmUgZGlzY2FyZGVkLiAgQSB2YWx1ZSBsZXNzIHRoYW4g emVybyBtYXkgYmUgdXNlZCB0bwordHVybiBvZmYgdGhlIHNpemUgbGltaXQgYW5kIG5vbi1udW1l cmljIHZhbHVlcyB3aWxsIGJlIGlnbm9yZWQuICBBCitub24tZW1wdHkgdmFsdWUgZm9yIHRoZSBz eXN0ZW0gcHJvcGVydHkgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZQorc2VjdXJpdHkgcHJvcGVy dHkuICBFbmFibGluZyAnY2VydHBhdGgnIGRlYnVnIGxvZ2dpbmcgd2lsbCBvdXRwdXQgdGhlCitj dXJyZW50IHNpemUgbGltaXQgYW5kIG5vdGUgYW55IGRpc2NhcmRlZCBDUkxzLgorCiBOZXcgaW4g cmVsZWFzZSBPcGVuSkRLIDI1LjAuMyAoMjAyNi0wNC0yMSk6CiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiBMaXZlIHZlcnNpb25zIG9mIHRoZXNlIHJlbGVhc2Ug bm90ZXMgY2FuIGJlIGZvdW5kIGF0OgoKZGlmZiAtLWdpdCBhL1Rlc3RUcmFuc2xhdGlvbnMuamF2 YSBiL1Rlc3RUcmFuc2xhdGlvbnMuamF2YQppbmRleCAxYjAyYzA2Li45ZTQwMDJhIDEwMDY0NAot LS0gYS9UZXN0VHJhbnNsYXRpb25zLmphdmEKKysrIGIvVGVzdFRyYW5zbGF0aW9ucy5qYXZhCkBA IC0xLDUgKzEsNSBAQAogLyogVGVzdFRyYW5zbGF0aW9ucyAtLSBFbnN1cmUgdHJhbnNsYXRpb25z IGFyZSBhdmFpbGFibGUgZm9yIG5ldyB0aW1lem9uZXMKLSAgIENvcHlyaWdodCAoQykgMjAyMiBS ZWQgSGF0LCBJbmMuCisgICBDb3B5cmlnaHQgKEMpIDIwMjYgUmVkIEhhdCwgSW5jLgogCiBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMKQEAgLTUwLDI1ICs1MCwzOCBAQCBwdWJsaWMgY2xhc3MgVGVzdFRyYW5z bGF0aW9ucyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW91 bnRhaW4gRGF5bGlnaHQgVGltZSIsICJNRFQiLCAiTURUIiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJNb3VudGFpbiBUaW1lIiwgIk1UIiwgIk1UIn0pOwogICAg ICAgICBtYXAucHV0KExvY2FsZS5GUkFOQ0UsIG5ldyBTdHJpbmdbXSB7ICJoZXVyZSBub3JtYWxl IGRlcyBSb2NoZXVzZXMiLCAiVVRDXHUyMjEyMDc6MDAiLCAiTVNUIiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGV1cmUgZFx1MjAxOVx1MDBlOXRcdTAw ZTkgZGVzIFJvY2hldXNlcyIsICJVVENcdTIyMTIwNjowMCIsICJNU1QiLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZXVyZSBkZXMgUm9jaGV1c2VzIiwg IlVUQ1x1MjIxMjA3OjAwIiwgIk1TVCJ9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiaGV1cmUgZFx1MjAxOVx1MDBlOXRcdTAwZTkgZGVzIFJvY2hldXNl cyIsICJVVENcdTIyMTIwNjowMCIsICJNRFQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJoZXVyZSBkZXMgUm9jaGV1c2VzIiwgIlVUQ1x1MjIxMjA3OjAw IiwgIk1UIn0pOwogICAgICAgICBtYXAucHV0KExvY2FsZS5HRVJNQU5ZLCBuZXcgU3RyaW5nW10g eyAiUm9ja3ktTW91bnRhaW5zLU5vcm1hbHplaXQiLCAiR01ULTA3OjAwIiwgIk1TVCIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSb2NreS1Nb3VudGFp bnMtU29tbWVyemVpdCIsICJHTVQtMDY6MDAiLCAiTVNUIiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJvY2t5LU1vdW50YWlucy1aZWl0IiwgIkdNVC0w NzowMCIsICJNU1QifSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJSb2NreS1Nb3VudGFpbnMtU29tbWVyemVpdCIsICJHTVQtMDY6MDAiLCAiTURUIiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJvY2t5LU1v dW50YWlucy1aZWl0IiwgIkdNVC0wNzowMCIsICJNVCJ9KTsKICAgICAgICAgQ0lVREFEX0pVQVJF WiA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZU1hcChtYXApOwogICAgIH0KIAogCiAgICAgcHVi bGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewotICAgICAgICBpZiAoYXJncy5s ZW5ndGggPCAxKSB7Ci0gICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlRlc3QgbXVzdCBi ZSBzdGFydGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIGxvY2FsZSBwcm92aWRlci4iKTsKLSAgICAg ICAgICAgIFN5c3RlbS5leGl0KDEpOworICAgICAgICBib29sZWFuIGRlYnVnID0gZmFsc2U7CisK KyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgZGVidWcgPSBCb29s ZWFuLnBhcnNlQm9vbGVhbihhcmdzWzBdKTsKICAgICAgICAgfQogCisgICAgICAgIFN5c3RlbS5l cnIucHJpbnRmKCJEZWJ1Z2dpbmc6ICVzXG4iLCBkZWJ1Zyk7CisKKyAgICAgICAgdGVzdFpvbmVT dHJpbmdzKGRlYnVnKTsKKworICAgICAgICB0ZXN0Wm9uZShLWUlWLAorICAgICAgICAgICAgICAg ICBuZXcgU3RyaW5nW10geyAiRXVyb3BlL0tpZXYiLCAiRXVyb3BlL0t5aXYiLCAiRXVyb3BlL1V6 aGdvcm9kIiwgIkV1cm9wZS9aYXBvcm96aHllIiB9KTsKKyAgICAgICAgdGVzdFpvbmUoQ0lVREFE X0pVQVJFWiwKKyAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgIkFtZXJpY2EvQ2FtYnJp ZGdlX0JheSIsICJBbWVyaWNhL0NpdWRhZF9KdWFyZXoiIH0pOworICAgIH0KKworICAgIHByaXZh dGUgc3RhdGljIHZvaWQgdGVzdFpvbmVTdHJpbmdzKGZpbmFsIGJvb2xlYW4gZGVidWcpIHsKICAg ICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDaGVja2luZyBzYW5pdHkgb2YgZnVsbCB6b25lIHN0 cmluZyBzZXQuLi4iKTsKICAgICAgICAgYm9vbGVhbiBpbnZhbGlkID0gQXJyYXlzLnN0cmVhbShM b2NhbGUuZ2V0QXZhaWxhYmxlTG9jYWxlcygpKQotICAgICAgICAgICAgLnBlZWsobCAtPiBTeXN0 ZW0ub3V0LnByaW50bG4oIkxvY2FsZTogIiArIGwpKQorICAgICAgICAgICAgLnBlZWsobCAtPiBT eXN0ZW0ub3V0LnByaW50ZihkZWJ1ZyA/ICJMb2NhbGU6ICVzXG4iIDogIiIsIGwpKQogICAgICAg ICAgICAgLm1hcChsIC0+IERhdGVGb3JtYXRTeW1ib2xzLmdldEluc3RhbmNlKGwpLmdldFpvbmVT dHJpbmdzKCkpCisgICAgICAgICAgICAucGVlayhkZiAtPiBTeXN0ZW0ub3V0LnByaW50ZihkZWJ1 ZyA/ICJab25lIHN0cmluZyBzaXplOiAlc1xuIiA6ICIiLCBkZi5sZW5ndGgpKQogICAgICAgICAg ICAgLmZsYXRNYXAoenMgLT4gQXJyYXlzLnN0cmVhbSh6cykpCiAgICAgICAgICAgICAuZmxhdE1h cChuYW1lcyAtPiBBcnJheXMuc3RyZWFtKG5hbWVzKSkKICAgICAgICAgICAgIC5maWx0ZXIobmFt ZSAtPiBPYmplY3RzLmlzTnVsbChuYW1lKSB8fCBuYW1lLmlzRW1wdHkoKSkKQEAgLTc4LDE1ICs5 MSw5IEBAIHB1YmxpYyBjbGFzcyBUZXN0VHJhbnNsYXRpb25zIHsKICAgICAgICAgICAgIFN5c3Rl bS5lcnIucHJpbnRsbigiWm9uZSBzdHJpbmcgZm9yIGEgbG9jYWxlIHJldHVybmVkIG51bGwgb3Ig ZW1wdHkgc3RyaW5nIik7CiAgICAgICAgICAgICBTeXN0ZW0uZXhpdCgyKTsKICAgICAgICAgfQot Ci0gICAgICAgIFN0cmluZyBsb2NhbGVQcm92aWRlciA9IGFyZ3NbMF07Ci0gICAgICAgIHRlc3Ra b25lKGxvY2FsZVByb3ZpZGVyLCBLWUlWLAotICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10g eyAiRXVyb3BlL0tpZXYiLCAiRXVyb3BlL0t5aXYiLCAiRXVyb3BlL1V6aGdvcm9kIiwgIkV1cm9w ZS9aYXBvcm96aHllIiB9KTsKLSAgICAgICAgdGVzdFpvbmUobG9jYWxlUHJvdmlkZXIsIENJVURB RF9KVUFSRVosCi0gICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7ICJBbWVyaWNhL0NhbWJy aWRnZV9CYXkiLCAiQW1lcmljYS9DaXVkYWRfSnVhcmV6IiB9KTsKICAgICB9CiAKLSAgICBwcml2 YXRlIHN0YXRpYyB2b2lkIHRlc3Rab25lKFN0cmluZyBsb2NhbGVQcm92aWRlciwgTWFwPExvY2Fs ZSxTdHJpbmdbXT4gZXhwLCBTdHJpbmdbXSBpZHMpIHsKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lk IHRlc3Rab25lKE1hcDxMb2NhbGUsU3RyaW5nW10+IGV4cCwgU3RyaW5nW10gaWRzKSB7CiAgICAg ICAgIGZvciAoTG9jYWxlIGwgOiBleHAua2V5U2V0KCkpIHsKICAgICAgICAgICAgIFN0cmluZ1td IGV4cGVjdGVkID0gZXhwLmdldChsKTsKICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCJF eHBlY3RlZCB2YWx1ZXMgZm9yICVzIGFyZSAlc1xuIiwgbCwgQXJyYXlzLnRvU3RyaW5nKGV4cGVj dGVkKSk7CkBAIC05NywxNiArMTA0LDExIEBAIHB1YmxpYyBjbGFzcyBUZXN0VHJhbnNsYXRpb25z IHsKIAogICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCJDaGVja2luZyBsb2NhbGUg JXMgZm9yICVzLi4uXG4iLCBsLCBpZCk7CiAKLSAgICAgICAgICAgICAgICBpZiAoIkpSRSIuZXF1 YWxzKGxvY2FsZVByb3ZpZGVyKSB8fCAiQ0xEUiIuZXF1YWxzKGxvY2FsZVByb3ZpZGVyKSkgewot ICAgICAgICAgICAgICAgICAgICBleHBlY3RlZFNob3J0U3RkID0gZXhwZWN0ZWRbMl07Ci0gICAg ICAgICAgICAgICAgICAgIGV4cGVjdGVkU2hvcnREU1QgPSBleHBlY3RlZFs1XTsKLSAgICAgICAg ICAgICAgICAgICAgZXhwZWN0ZWRTaG9ydEdlbiA9IGV4cGVjdGVkWzhdOwotICAgICAgICAgICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRmKCJJbnZh bGlkIGxvY2FsZSBwcm92aWRlciAlc1xuIiwgbG9jYWxlUHJvdmlkZXIpOwotICAgICAgICAgICAg ICAgICAgICBTeXN0ZW0uZXhpdCgzKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg ICAgU3lzdGVtLm91dC5wcmludGYoIkxvY2FsZSBQcm92aWRlciBpcyAlcywgdXNpbmcgc2hvcnQg dmFsdWVzICVzLCAlcyBhbmQgJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbG9jYWxlUHJvdmlkZXIsIGV4cGVjdGVkU2hvcnRTdGQsIGV4cGVjdGVkU2hvcnREU1QsIGV4 cGVjdGVkU2hvcnRHZW4pOworICAgICAgICAgICAgICAgIGV4cGVjdGVkU2hvcnRTdGQgPSBleHBl Y3RlZFsyXTsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFNob3J0RFNUID0gZXhwZWN0ZWRbNV07 CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRTaG9ydEdlbiA9IGV4cGVjdGVkWzhdOworICAgICAg ICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCJVc2luZyBzaG9ydCB2YWx1ZXMgJXMsICVzIGFu ZCAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZFNob3J0 U3RkLCBleHBlY3RlZFNob3J0RFNULCBleHBlY3RlZFNob3J0R2VuKTsKIAogICAgICAgICAgICAg ICAgIFN0cmluZyBsb25nU3RkID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoaWQpLmdldERpc3BsYXlO YW1lKGZhbHNlLCBUaW1lWm9uZS5MT05HLCBsKTsKICAgICAgICAgICAgICAgICBTdHJpbmcgc2hv cnRTdGQgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShpZCkuZ2V0RGlzcGxheU5hbWUoZmFsc2UsIFRp bWVab25lLlNIT1JULCBsKTsKCmRpZmYgLS1naXQgYS9qYXZhLTI1LW9wZW5qZGstcG9ydGFibGUu c3BlYyBiL2phdmEtMjUtb3Blbmpkay1wb3J0YWJsZS5zcGVjCmluZGV4IDgzM2ZkOTEuLmNlZDhk NTYgMTAwNjQ0Ci0tLSBhL2phdmEtMjUtb3Blbmpkay1wb3J0YWJsZS5zcGVjCisrKyBiL2phdmEt MjUtb3Blbmpkay1wb3J0YWJsZS5zcGVjCkBAIC0xLDQgKzEsOTggQEAKLSMgZGVidWdfcGFja2Fn ZSAlJXtuaWx9IGlzIHBvcnRhYmxlLWpka3Mgc3BlY2lmaWMKKyMgTmV3IFZlcnNpb24tU3RyaW5n IHNjaGVtZS1zdHlsZSBkZWZpbmVzCislZ2xvYmFsIGZlYXR1cmV2ZXIgMjUKKyVnbG9iYWwgaW50 ZXJpbXZlciAwCislZ2xvYmFsIHVwZGF0ZXZlciA0CislZ2xvYmFsIHBhdGNodmVyIDAKKyVnbG9i YWwgYnVpbGR2ZXIgNworJWdsb2JhbCBwb3J0YWJsZXJlbGVhc2UgMgorJWdsb2JhbCBycG1yZWxl YXNlIDAKKworIyBEZWZpbmUgSWNlZFRlYSB2ZXJzaW9uIHVzZWQgZm9yIFN5c3RlbVRhcCB0YXBz ZXRzIGFuZCBkZXNrdG9wIGZpbGUKKyVnbG9iYWwgaWNlZHRlYXZlciAgICAgIDYuMC4wcHJlMDAt Yzg0OGI5M2E4NTk4CisjIERlZmluZSBjdXJyZW50IEdpdCByZXZpc2lvbiBmb3IgdGhlIEZJUFMg c3VwcG9ydCBwYXRjaGVzCislZ2xvYmFsIGZpcHN2ZXIgNTc3MjJhYWI4MDIKKyMgRGVmaW5lIEpE SyB2ZXJzaW9ucworJWdsb2JhbCBuZXdqYXZhdmVyICV7ZmVhdHVyZXZlcn0uJXtpbnRlcmltdmVy fS4le3VwZGF0ZXZlcn0uJXtwYXRjaHZlcn0KKyVnbG9iYWwgamF2YXZlciAgICAgICAgICV7ZmVh dHVyZXZlcn0KKyMgU3RyaXAgdXAgdG8gNiB0cmFpbGluZyB6ZXJvcyBpbiBuZXdqYXZhdmVyLCBh cyB0aGUgSkRLIGRvZXMsIHRvIGdldCB0aGUgY29ycmVjdCB2ZXJzaW9uIHVzZWQgaW4gZmlsZW5h bWVzCislZ2xvYmFsIGZpbGV2ZXIgJShzdm49JXtuZXdqYXZhdmVyfTsgZm9yIGkgaW4gMSAyIDMg NCA1IDYgOyBkbyBzdm49JHtzdm4lJS4wfSA7IGRvbmU7IGVjaG8gJHtzdm59KQorIyBUaGUgdGFn IHVzZWQgdG8gY3JlYXRlIHRoZSBPcGVuSkRLIHRhcmJhbGwKKyVnbG9iYWwgdmNzdGFnIGpkay0l e2ZpbGV2ZXJ9KyV7YnVpbGR2ZXJ9JXs/dGFnc3VmZml4Oi0le3RhZ3N1ZmZpeH19CisKKyMgU3Rh bmRhcmQgSlBhY2thZ2UgbmFtaW5nIGFuZCB2ZXJzaW9uaW5nIGRlZmluZXMKKyVnbG9iYWwgb3Jp Z2luICAgICAgICAgIG9wZW5qZGsKKyVnbG9iYWwgb3JpZ2luX25pY2UgICAgIE9wZW5KREsKKyVn bG9iYWwgdG9wX2xldmVsX2Rpcl9uYW1lICAgJXt2Y3N0YWd9CislZ2xvYmFsIHRvcF9sZXZlbF9k aXJfbmFtZV9iYWNrdXAgJXt0b3BfbGV2ZWxfZGlyX25hbWV9LWJhY2t1cAorIyBEZWZpbmUgYW4g b3B0aW9uYWwgc3VmZml4IGZvciB0aGUgT1MgdGhpcyBwYWNrYWdlIGlzIGJ1aWx0IG9uCislaWYg MCV7P3JoZWx9ID09IDcKKyVnbG9iYWwgcGtnb3MgcmhlbDcKKyVlbmRpZgorCisjIERlZmluZSBt aWxlc3RvbmUgKEVBIGZvciBwcmUtcmVsZWFzZXMsIEdBIGZvciByZWxlYXNlcykKKyMgUmVsZWFz ZSB3aWxsIGJlICh3aGVyZSBOIGlzIHVzdWFsbHkgYSBudW1iZXIgc3RhcnRpbmcgYXQgMSk6Cisj IC0gMC5OLmVhPGRpc3Q+IGZvciBFQSByZWxlYXNlcywKKyMgLSBOPGRpc3Q+IGZvciBHQSByZWxl YXNlcworJWdsb2JhbCBpc19nYSAgICAgICAgICAgMQorJWlmICV7aXNfZ2F9CislZ2xvYmFsIGJ1 aWxkX3R5cGUgR0EKKyVnbG9iYWwgZWFfZGVzaWduYXRvciAiIgorJWdsb2JhbCBlYV9kZXNpZ25h dG9yX3ppcCAle25pbH0KKyVnbG9iYWwgZXh0cmF2ZXIgJXtuaWx9CislZ2xvYmFsIGVhcHJlZml4 ICV7bmlsfQorJWVsc2UKKyVnbG9iYWwgYnVpbGRfdHlwZSBFQQorJWdsb2JhbCBlYV9kZXNpZ25h dG9yIGVhCislZ2xvYmFsIGVhX2Rlc2lnbmF0b3JfemlwIC0le2VhX2Rlc2lnbmF0b3J9CislZ2xv YmFsIGV4dHJhdmVyIC4le2VhX2Rlc2lnbmF0b3J9CislZ2xvYmFsIGVhcHJlZml4IDAuCislZW5k aWYKKworJWdsb2JhbCBjb21wYXRpYmxlbmFtZSAgamF2YS0le2phdmF2ZXJ9LSV7b3JpZ2lufQor CitOYW1lOiAgICBqYXZhLTI1LSV7b3JpZ2lufS1wb3J0YWJsZSV7P3BrZ29zOi0le3BrZ29zfX0K K1ZlcnNpb246ICV7bmV3amF2YXZlcn0uJXtidWlsZHZlcn0KK1JlbGVhc2U6ICV7P2VhcHJlZml4 fSV7cG9ydGFibGVyZWxlYXNlfS4le3JwbXJlbGVhc2V9JXs/ZXh0cmF2ZXJ9JXs/ZGlzdH0KKwor JWdsb2JhbCBmdWxsdmVyc2lvbiAgICAgJXtjb21wYXRpYmxlbmFtZX0tJXt2ZXJzaW9ufS0le3Jl bGVhc2V9CisKKyMgamF2YS0xLjUuMC1pYm0gZnJvbSBqcGFja2FnZS5vcmcgc2V0IEVwb2NoIHRv IDEgZm9yIHVua25vd24gcmVhc29ucworIyBhbmQgdGhpcyBjaGFuZ2Ugd2FzIGJyb3VnaHQgaW50 byBSSEVMLTQuIGphdmEtMS41LjAtaWJtIHBhY2thZ2VzCisjIGFsc28gaW5jbHVkZWQgdGhlIGVw b2NoIGluIHRoZWlyIHZpcnR1YWwgcHJvdmlkZXMuIFRoaXMgY3JlYXRlZCBhCisjIHNpdHVhdGlv biB3aGVyZSBpbi10aGUtd2lsZCBqYXZhLTEuNS4wLWlibSBwYWNrYWdlcyBwcm92aWRlZCAiamF2 YSA9CisjIDE6MS41LjAiLiBJbiBSUE0gdGVybXMsICIxLjYuMCA8IDE6MS41LjAiIHNpbmNlIDEu Ni4wIGlzCisjIGludGVycHJldGVkIGFzIDA6MS42LjAuIFNvIHRoZSAiamF2YSA+PSAxLjYuMCIg cmVxdWlyZW1lbnQgd291bGQgYmUKKyMgc2F0aXNmaWVkIGJ5IHRoZSAxOjEuNS4wIHBhY2thZ2Vz LiBUaHVzIHdlIG5lZWQgdG8gc2V0IHRoZSBlcG9jaCBpbgorIyBKREsgcGFja2FnZSA+PSAxLjYu MCB0byAxLCBhbmQgcGFja2FnZXMgcmVmZXJyaW5nIHRvIEpESyB2aXJ0dWFsCisjIHByb3ZpZGVz ID49IDEuNi4wIG11c3Qgc3BlY2lmeSB0aGUgZXBvY2gsICJqYXZhID49IDE6MS42LjAiLgorRXBv Y2g6ICAgMQorU3VtbWFyeTogJXtvcmlnaW5fbmljZX0gJXtmZWF0dXJldmVyfSBSdW50aW1lIEVu dmlyb25tZW50IHBvcnRhYmxlIGVkaXRpb24KKyMgR3JvdXBzIGFyZSBvbmx5IHVzZWQgdXAgdG8g UkhFTCA4IGFuZCBvbiBGZWRvcmEgdmVyc2lvbnMgcHJpb3IgdG8gRjMwCislaWYgKDAlez9yaGVs fSA+IDAgJiYgMCV7P3JoZWx9IDw9IDgpIHx8ICgwJXs/ZmVkb3JhfSA+PSAwICYmIDAlez9mZWRv cmF9IDwgMzApCitHcm91cDogICBEZXZlbG9wbWVudC9MYW5ndWFnZXMKKyVlbmRpZgorCisjIEhv dFNwb3QgY29kZSBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MgorIyBKREsgbGlicmFyeSBjb2RlIGlz IGxpY2Vuc2VkIHVuZGVyIEdQTHYyIHdpdGggdGhlIENsYXNzcGF0aCBleGNlcHRpb24KKyMgVGhl IEFwYWNoZSBsaWNlbnNlIGlzIHVzZWQgaW4gY29kZSB0YWtlbiBmcm9tIEFwYWNoZSBwcm9qZWN0 cyAocHJpbWFyaWx5IHhhbGFuICYgeGVyY2VzKQorIyBET00gbGV2ZWxzIDIgJiAzIGFuZCB0aGUg WE1MIGRpZ2l0YWwgc2lnbmF0dXJlIHNjaGVtYXMgYXJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBXM0Mg U29mdHdhcmUgTGljZW5zZQorIyBUaGUgSlNSMTY2IGNvbmN1cnJlbmN5IGNvZGUgaXMgaW4gdGhl IHB1YmxpYyBkb21haW4KKyMgVGhlIEJTRCBhbmQgTUlUIGxpY2Vuc2VzIGFyZSB1c2VkIGZvciBh IG51bWJlciBvZiB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgKHNlZSBBRERJVElPTkFMX0xJQ0VOU0Vf SU5GTykKKyMgVGhlIE9wZW5KREsgc291cmNlIHRyZWUgaW5jbHVkZXM6CisjIC0gSlBFRyBsaWJy YXJ5IChJSkcpLCB6bGliICYgbGlicG5nICh6bGliKSwgZ2lmbGliIChNSVQpLCBoYXJmYnV6eiAo SVNDKSwKKyMgLSBmcmVldHlwZSAoRlRMKSwgamxpbmUgKEJTRCkgYW5kIExDTVMgKE1JVCkKKyMg LSBqcXVlcnkgKE1JVCksIGpkay5jcnlwdG8uY3J5cHRva2kgUEtDUyAxMSB3cmFwcGVyIChSU0Ep CisjIC0gcHVibGljX3N1ZmZpeF9saXN0LmRhdCBmcm9tIHB1YmxpY3N1ZmZpeC5vcmcgKE1QTHYy LjApCisjIFRoZSB0ZXN0IGNvZGUgaW5jbHVkZXMgY29waWVzIG9mIE5TUyB1bmRlciB0aGUgTW96 aWxsYSBQdWJsaWMgTGljZW5zZSB2Mi4wCisjIFRoZSBQQ1NDbGl0ZSBoZWFkZXJzIGFyZSB1bmRl ciBhIEJTRCB3aXRoIGFkdmVydGlzaW5nIGxpY2Vuc2UKKyMgVGhlIGVsbGlwdGljIGN1cnZlIGNy eXB0b2dyYXBoeSAoRUNDKSBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTEdQTHYy LjEgb3IgYW55IGxhdGVyIHZlcnNpb24KKyMgQXV0b21hdGljYWxseSBjb252ZXJ0ZWQgZnJvbSBv bGQgZm9ybWF0OiBBU0wgMS4xIGFuZCBBU0wgMi4wIGFuZCBCU0QgYW5kIEJTRCB3aXRoIGFkdmVy dGlzaW5nIGFuZCBHUEwrIGFuZCBHUEx2MiBhbmQgR1BMdjIgd2l0aCBleGNlcHRpb25zIGFuZCBJ SkcgYW5kIExHUEx2MisgYW5kIE1JVCBhbmQgTVBMdjIuMCBhbmQgUHVibGljIERvbWFpbiBhbmQg VzNDIGFuZCB6bGliIGFuZCBJU0MgYW5kIEZUTCBhbmQgUlNBIC0gcmV2aWV3IGlzIGhpZ2hseSBy ZWNvbW1lbmRlZC4KK0xpY2Vuc2U6ICBBcGFjaGUtMS4xIEFORCBBcGFjaGUtMi4wIEFORCBMaWNl bnNlUmVmLUNhbGxhd2F5LUJTRCBBTkQgTGljZW5zZVJlZi1DYWxsYXdheS1CU0Qtd2l0aC1hZHZl cnRpc2luZyBBTkQgR1BMLTEuMC1vci1sYXRlciBBTkQgR1BMLTIuMC1vbmx5IEFORCBMaWNlbnNl UmVmLUNhbGxhd2F5LUdQTHYyLXdpdGgtZXhjZXB0aW9ucyBBTkQgSUpHIEFORCBMaWNlbnNlUmVm LUNhbGxhd2F5LUxHUEx2MisgQU5EIExpY2Vuc2VSZWYtQ2FsbGF3YXktTUlUIEFORCBNUEwtMi4w IEFORCBMaWNlbnNlUmVmLUNhbGxhd2F5LVB1YmxpYy1Eb21haW4gQU5EIFczQyBBTkQgWmxpYiBB TkQgSVNDIEFORCBGVEwgQU5EIExpY2Vuc2VSZWYtUlNBCitVUkw6ICAgICAgaHR0cDovL29wZW5q ZGsuamF2YS5uZXQvCisKKyMgV2UgYXJlIHByb2R1Y2luZyBSUE1zIGNvbnRhaW5pbmcgb25seSB0 YXJiYWxscworIyBhbmQgY2hlY2tzdW1zIHNvIHRoZXJlIGFyZSBubyBiaW5hcmllcyBvdXRzaWRl CisjIHRoZSB0YXJiYWxscyB0byBiZSBwcm9jZXNzZWQgZm9yIGRlYnVnaW5mbwogJWRlZmluZSBk ZWJ1Z19wYWNrYWdlICV7bmlsfQogCiAjIFJQTSBjb25kaXRpb25hbHMgc28gYXMgdG8gYmUgYWJs ZSB0byBkeW5hbWljYWxseSBwcm9kdWNlCkBAIC0xNSw3ICsxMDksNiBAQAogIwogIyBPbmx5IHBy b2R1Y2UgYSByZWxlYXNlIGJ1aWxkIG9uIHg4Nl82NDoKICMgJCBmZWRwa2cgbW9ja2J1aWxkIC0t d2l0aG91dCBzbG93ZGVidWcgLS13aXRob3V0IGZhc3RkZWJ1ZwotCiAjIEVuYWJsZSBmYXN0ZGVi dWcgYnVpbGRzIGJ5IGRlZmF1bHQgb24gcmVsZXZhbnQgYXJjaGVzLgogJWJjb25kX3dpdGhvdXQg ZmFzdGRlYnVnCiAjIEVuYWJsZSBzbG93ZGVidWcgYnVpbGRzIGJ5IGRlZmF1bHQgb24gcmVsZXZh bnQgYXJjaGVzLgpAQCAtMjQsOCArMTE3LDYgQEAKICViY29uZF93aXRob3V0IHJlbGVhc2UKICMg RW5hYmxlIHN0YXRpYyBsaWJyYXJ5IGJ1aWxkcyBieSBkZWZhdWx0LgogJWJjb25kX3dpdGhvdXQg c3RhdGljbGlicwotIyBSZW1vdmUgYnVpbGQgYXJ0aWZhY3RzIGJ5IGRlZmF1bHQKLSViY29uZF93 aXRoIGFydGlmYWN0cwogIyBCdWlsZCBhIGZyZXNoIGxpYmp2bS5zbyBmb3IgdXNlIGluIGEgY29w eSBvZiB0aGUgYm9vdHN0cmFwIEpESwogJWJjb25kX3dpdGhvdXQgZnJlc2hfbGlianZtCiAjIEJ1 aWxkIHdpdGggc3lzdGVtIGxpYnJhcmllcwpAQCAtOTksMjUgKzE5MCw2IEBACiAlZ2xvYmFsIG5v cm1hbF9idWlsZCAle25pbH0KICVlbmRpZgogCi0jIFdlIGhhdmUgaGFyZGNvZGVkIGxpc3Qgb2Yg ZmlsZXMsIHdoaWNoICBpcyBhcHBlYXJpbmcgaW4gYWx0ZXJuYXRpdmVzLCBhbmQgaW4gZmlsZXMK LSMgaW4gYWx0ZXJuYXRpdmVzIHRob3NlIGFyZSBzbGF2ZXMgYW5kIG1hc3RlciwgdmVyeSBvZnRl biB0cmlwbGljYXRlZCBieSBtYW4gcGFnZXMKLSMgaW4gZmlsZXMgYWxsIG1hc3RlcnMgYW5kIHNs YXZlcyBhcmUgZ2hvc3RlZAotIyB0aGUgZ2hvc3RzIGFyZSBoZXJlIHRvIGFsbG93IGluc3RhbGxh dGlvbiB2aWEgcXVlcnkgbGlrZSBgZG5mIGluc3RhbGwgL3Vzci9iaW4vamF2YWAKLSMgeW91IGNh biBsaXN0IHRob3NlIGZpbGVzLCB3aXRoIGFwcHJvcHJpYXRlIHNlY3Rpb25zOiBjYXQgKi5zcGVj IHwgZ3JlcCAtZSAtLWluc3RhbGwgLWUgLS1zbGF2ZSAtZSBwb3N0XyAtZSBhbHRlcm5hdGl2ZXMK LSMgVE9ETyAtIGZpeCB0aG9zZSBoYXJkY29kZWQgbGlzdHMgdmlhIHNpbmdsZSBsaXN0Ci0jIFRo b3NlIGZpbGVzIG11c3QgKk5PVCogYmUgZ2hvc3RlZCBmb3IgKnNsb3dkZWJ1ZyogcGFja2FnZXMK LSMgRklYTUUgLSBpZiB5b3UgYXJlIG1vdmluZyBqc2hlbGwgb3Igamxpbmsgb3Igc2ltaWxhciwg YWx3YXlzIG1vZGlmeSBhbGwgdGhyZWUgc2VjdGlvbnMKLSMgeW91IGNhbiBjaGVjayB2aWEgaGVh ZGxlc3MgYW5kIGRldmVsczoKLSMgICAgcnBtIC1xbCAtLW5vZ2hvc3QgamF2YS0xMS1vcGVuamRr LWhlYWRsZXNzLTExLjAuMS4xMy04LmZjMjkueDg2XzY0LnJwbSAgfCBncmVwIGJpbgotIyA9PSBy cG0gLXFsICAgICAgICAgICBqYXZhLTExLW9wZW5qZGstaGVhZGxlc3Mtc2xvd2RlYnVnLTExLjAu MS4xMy04LmZjMjkueDg2XzY0LnJwbSAgfCBncmVwIGJpbgotIyAhPSBycG0gLXFsICAgICAgICAg ICBqYXZhLTExLW9wZW5qZGstaGVhZGxlc3MtMTEuMC4xLjEzLTguZmMyOS54ODZfNjQucnBtICB8 IGdyZXAgYmluCi0jIHNpbWlsYXJseSBmb3Igb3RoZXIgJSV7X2p2bWRpcn0ve2pyZSxqYXZhfSBh bmQgJSV7X2phdmFkb2NkaXJ9L3tqYXZhLGphdmEtemlwfQotJWRlZmluZSBpc19yZWxlYXNlX2J1 aWxkKCkgJSggaWYgWyAiJXs/MX0iID09ICIle2RlYnVnX3N1ZmZpeF91bnF1b3RlZH0iIC1vICIl ez8xfSIgPT0gIiV7ZmFzdGRlYnVnX3N1ZmZpeF91bnF1b3RlZH0iIF07IHRoZW4gZWNobyAiMCIg OyBlbHNlIGVjaG8gIjEiOyBmaSApCi0KLSMgd2hpbGUgSkRLIGlzIGEgdGVjaHByZXZpZXcoaXNf c3lzdGVtX2pkaz0wKSwgc29tZSBwcm92aWRlcyBhcmUgdHVybmVkIG9mZi4gT25jZSBqZGsgc3Rv cHMgdG8gYmUgYW4gdGVjaHByZXZpZXcsIG1vdmUgaXQgdG8gMQotIyBhcyBzeXRlbSBKREssIHdl IG1lYW4gYW55IEpESyB3aGljaCBjYW4gcnVuIHdob2xlIHN5c3RlbSBqYXZhIHN0YWNrIHdpdGhv dXQgaXNzdWVzIChsaWtlIGJ5dGVjb2RlIGlzc3VlcywgbW9kdWxlIGlzc3VlcywgZGVwZW5kZW5j aWVzLi4uKQotJWdsb2JhbCBpc19zeXN0ZW1famRrIDAKLQogJWdsb2JhbCBhYXJjaDY0ICAgICAg ICAgYWFyY2g2NCBhcm02NCBhcm12OAogIyB3ZSBuZWVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4g YmlnIGFuZCBsaXR0bGUgZW5kaWFuIFBQQzY0CiAlZ2xvYmFsIHBwYzY0bGUgICAgICAgICBwcGM2 NGxlCkBAIC00MDMsMTcgKzQ3NSwxNCBAQCBleGl0IDEKICVnbG9iYWwgd2l0aF9zeXN0ZW10YXAg MAogJWVuZGlmCiAKLSMgTmV3IFZlcnNpb24tU3RyaW5nIHNjaGVtZS1zdHlsZSBkZWZpbmVzCi0l Z2xvYmFsIGZlYXR1cmV2ZXIgMjUKLSVnbG9iYWwgaW50ZXJpbXZlciAwCi0lZ2xvYmFsIHVwZGF0 ZXZlciAzCi0lZ2xvYmFsIHBhdGNodmVyIDAKLSMgYnVpbGRqZGt2ZXIgaXMgdXN1YWxseSBzYW1l IGFzICUle2ZlYXR1cmV2ZXJ9LAotIyBidXQgaW4gdGltZSBvZiBib290c3RyYXAgb2YgbmV4dCBq ZGssIGl0IGlzIGZlYXR1cmV2ZXItMSwKKworIyBidWlsZGpka3ZlciBpcyB1c3VhbGx5IHNhbWUg YXMgZmVhdHVyZXZlciwKKyMgYnV0IGF0IHRoZSB0aW1lIG9mIGJvb3RzdHJhcCBvZiB0aGUgbmV4 dCBqZGssIGl0IGlzIGZlYXR1cmV2ZXItMSwKICMgYW5kIHRoaXMgaXQgaXMgYmV0dGVyIHRvIGNo YW5nZSBpdCBoZXJlLCBvbiBzaW5nbGUgcGxhY2UKLSVnbG9iYWwgYnVpbGRqZGt2ZXIgMjUKKyVn bG9iYWwgYnVpbGRqZGt2ZXIgJXtmZWF0dXJldmVyfQorCiAjIFdlIGRvbid0IGFkZCBhbnkgTFRT IGRlc2lnbmF0b3IgZm9yIFNUUyBwYWNrYWdlcyAoRmVkb3JhIGFuZCBFUEVMKS4KLSMgV2UgbmVl ZCB0byBleHBsaWNpdGx5IGV4Y2x1ZGUgRVBFTCBhcyBpdCB3b3VsZCBoYXZlIHRoZSAlJXtyaGVs fSBtYWNybyBkZWZpbmVkLgorIyBXZSBuZWVkIHRvIGV4cGxpY2l0bHkgZXhjbHVkZSBFUEVMIGFz IGl0IGhhcyB0aGUgcmhlbCBtYWNybyBkZWZpbmVkLgogJWlmIDAlez9yaGVsfSAmJiAhMCV7P2Vw ZWx9CiAgICVnbG9iYWwgbHRzX2Rlc2lnbmF0b3IgIkxUUyIKICAgJWdsb2JhbCBsdHNfZGVzaWdu YXRvcl96aXAgLSV7bHRzX2Rlc2lnbmF0b3J9CkBAIC00MjUsNyArNDk0LDggQEAgZXhpdCAxCiAj IERlZmluZSB2ZW5kb3IgaW5mb3JtYXRpb24gdXNlZCBieSBPcGVuSkRLCiAlZ2xvYmFsIG9qX3Zl bmRvciBSZWQgSGF0LCBJbmMuCiAlZ2xvYmFsIG9qX3ZlbmRvcl91cmwgaHR0cHM6Ly93d3cucmVk aGF0LmNvbS8KLSMgRGVmaW5lIHdoYXQgdXJsIHNob3VsZCBKVk0gb2ZmZXIgaW4gY2FzZSBvZiBh IGNyYXNoIHJlcG9ydAorCisjIERlZmluZSB3aGF0IHVybCB0aGUgSlZNIHNob3VsZCBvZmZlciBp biBjYXNlIG9mIGEgY3Jhc2ggcmVwb3J0CiAjIG9yZGVyIG1heSBiZSBpbXBvcnRhbnQsIGVwZWwg bWF5IGhhdmUgcmhlbCBkZWNsYXJlZAogJWlmIDAlez9lcGVsfQogJWdsb2JhbCBval92ZW5kb3Jf YnVnX3VybCAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2VudGVyX2J1Zy5jZ2k/cHJvZHVj dD1GZWRvcmElMjBFUEVMJmNvbXBvbmVudD0le2NvbXBvbmVudH0mdmVyc2lvbj1lcGVsJXtlcGVs fQpAQCAtNDQxLDY3ICs1MTEsMTMgQEAgZXhpdCAxCiAlZW5kaWYKICVlbmRpZgogJWVuZGlmCi0l Z2xvYmFsIG9qX3ZlbmRvcl92ZXJzaW9uIChSZWRfSGF0LSV7dmVyc2lvbn0tJXtycG1yZWxlYXNl fSkKKyVnbG9iYWwgb2pfdmVuZG9yX3ZlcnNpb24gKFJlZF9IYXQtJXt2ZXJzaW9ufS0le3BvcnRh YmxlcmVsZWFzZX0pCiAKLSMgRGVmaW5lIEljZWRUZWEgdmVyc2lvbiB1c2VkIGZvciBTeXN0ZW1U YXAgdGFwc2V0cyBhbmQgZGVza3RvcCBmaWxlCi0lZ2xvYmFsIGljZWR0ZWF2ZXIgICAgICA2LjAu MHByZTAwLWM4NDhiOTNhODU5OAotIyBEZWZpbmUgY3VycmVudCBHaXQgcmV2aXNpb24gZm9yIHRo ZSBGSVBTIHN1cHBvcnQgcGF0Y2hlcwotJWdsb2JhbCBmaXBzdmVyIDU3NzIyYWFiODAyCi0jIERl ZmluZSBKREsgdmVyc2lvbnMKLSVnbG9iYWwgbmV3amF2YXZlciAle2ZlYXR1cmV2ZXJ9LiV7aW50 ZXJpbXZlcn0uJXt1cGRhdGV2ZXJ9LiV7cGF0Y2h2ZXJ9Ci0lZ2xvYmFsIGphdmF2ZXIgICAgICAg ICAle2ZlYXR1cmV2ZXJ9Ci0jIFN0cmlwIHVwIHRvIDYgdHJhaWxpbmcgemVyb3MgaW4gbmV3amF2 YXZlciwgYXMgdGhlIEpESyBkb2VzLCB0byBnZXQgdGhlIGNvcnJlY3QgdmVyc2lvbiB1c2VkIGlu IGZpbGVuYW1lcwotJWdsb2JhbCBmaWxldmVyICUoc3ZuPSV7bmV3amF2YXZlcn07IGZvciBpIGlu IDEgMiAzIDQgNSA2IDsgZG8gc3ZuPSR7c3ZuJSUuMH0gOyBkb25lOyBlY2hvICR7c3ZufSkKLSMg VGhlIHRhZyB1c2VkIHRvIGNyZWF0ZSB0aGUgT3BlbkpESyB0YXJiYWxsCi0lZ2xvYmFsIHZjc3Rh ZyBqZGstJXtmaWxldmVyfSsle2J1aWxkdmVyfSV7P3RhZ3N1ZmZpeDotJXt0YWdzdWZmaXh9fQot Ci0jIFN0YW5kYXJkIEpQYWNrYWdlIG5hbWluZyBhbmQgdmVyc2lvbmluZyBkZWZpbmVzCi0lZ2xv YmFsIG9yaWdpbiAgICAgICAgICBvcGVuamRrCi0lZ2xvYmFsIG9yaWdpbl9uaWNlICAgICBPcGVu SkRLCi0lZ2xvYmFsIHRvcF9sZXZlbF9kaXJfbmFtZSAgICV7dmNzdGFnfQotJWdsb2JhbCB0b3Bf bGV2ZWxfZGlyX25hbWVfYmFja3VwICV7dG9wX2xldmVsX2Rpcl9uYW1lfS1iYWNrdXAKLSVnbG9i YWwgYnVpbGR2ZXIgICAgICAgIDkKLSVnbG9iYWwgcnBtcmVsZWFzZSAgICAgIDEKLSMlJWdsb2Jh bCB0YWdzdWZmaXggICAgICUle25pbH0KLSMgUHJpb3JpdHkgbXVzdCBiZSA4IGRpZ2l0cyBpbiB0 b3RhbDsgdXAgdG8gb3BlbmpkayAxLjgsIHdlIHdlcmUgdXNpbmcgMTguLi4uLiBzbyB3aGVuIHdl IG1vdmVkIHRvIDExLCB3ZSBoYWQgdG8gYWRkIGFub3RoZXIgZGlnaXQKLSVpZiAlaXNfc3lzdGVt X2pkawotIyBVc2luZyAxMCBkaWdpdHMgbWF5IG92ZXJmbG93IHRoZSBpbnQgdXNlZCBmb3IgcHJp b3JpdHksIHNvIHdlIGNvbWJpbmUgdGhlIHBhdGNoIGFuZCBidWlsZCB2ZXJzaW9ucwotIyBJdCBp cyB2ZXJ5IHVubGlrZWx5IHdlIHdpbGwgZXZlciBoYXZlIGEgcGF0Y2ggdmVyc2lvbiA+IDQgb3Ig YSBidWlsZCB2ZXJzaW9uID4gMjAsIHNvIHdlIGNvbWJpbmUgYXMgKHBhdGNoICogMjApICsgYnVp bGQuCi0jIFRoaXMgbWVhbnMgMTEuMC45LjArMTEgd291bGQgaGF2ZSBoYWQgYSBwcmlvcml0eSBv ZiAxMTAwMDkxMSBhcyBiZWZvcmUKLSMgQSAxMS4wLjkuMSsxIHdvdWxkIGhhdmUgaGFkIGEgcHJp b3JpdHkgb2YgMTEwMDA5MjEgKDIwICogMSArIDEpLCB0aHVzIGVuc3VyaW5nIGl0IGlzIGJpZ2dl ciB0aGFuIDExLjAuOS4wKzExCi0lZ2xvYmFsIGNvbWJpdmVyICQoIGV4cHIgMjAgJyonICV7cGF0 Y2h2ZXJ9ICsgJXtidWlsZHZlcn0gKQotJWdsb2JhbCBwcmlvcml0eSAlKCBwcmludGYgJyUwMmQl MDJkJTAyZCUwMmQnICV7ZmVhdHVyZXZlcn0gJXtpbnRlcmltdmVyfSAle3VwZGF0ZXZlcn0gJXtj b21iaXZlcn0gKQotJWVsc2UKLSMgZm9yIHRlY2hwcmV2aWV3LCB1c2luZyAxLCBzbyBzbG93ZGVi dWdzIGNhbiBoYXZlIDAKLSVnbG9iYWwgcHJpb3JpdHkgJSggcHJpbnRmICclMDhkJyAxICkKLSVl bmRpZgotCi0jIERlZmluZSBtaWxlc3RvbmUgKEVBIGZvciBwcmUtcmVsZWFzZXMsIEdBIGZvciBy ZWxlYXNlcykKLSMgUmVsZWFzZSB3aWxsIGJlICh3aGVyZSBOIGlzIHVzdWFsbHkgYSBudW1iZXIg c3RhcnRpbmcgYXQgMSk6Ci0jIC0gMC5OJSV7P2V4dHJhdmVyfSUlez9kaXN0fSBmb3IgRUEgcmVs ZWFzZXMsCi0jIC0gTiUlez9leHRyYXZlcn17P2Rpc3R9IGZvciBHQSByZWxlYXNlcwotJWdsb2Jh bCBpc19nYSAgICAgICAgICAgMQotJWlmICV7aXNfZ2F9Ci0lZ2xvYmFsIGJ1aWxkX3R5cGUgR0EK LSVnbG9iYWwgZWFfZGVzaWduYXRvciAiIgotJWdsb2JhbCBlYV9kZXNpZ25hdG9yX3ppcCAle25p bH0KLSVnbG9iYWwgZXh0cmF2ZXIgJXtuaWx9Ci0lZ2xvYmFsIGVhcHJlZml4ICV7bmlsfQotJWVs c2UKLSVnbG9iYWwgYnVpbGRfdHlwZSBFQQotJWdsb2JhbCBlYV9kZXNpZ25hdG9yIGVhCi0lZ2xv YmFsIGVhX2Rlc2lnbmF0b3JfemlwIC0le2VhX2Rlc2lnbmF0b3J9Ci0lZ2xvYmFsIGV4dHJhdmVy IC4le2VhX2Rlc2lnbmF0b3J9Ci0lZ2xvYmFsIGVhcHJlZml4IDAuCi0lZW5kaWYKLQotIyBwYXJh bWV0cml6ZWQgbWFjcm9zIGFyZSBvcmRlci1zZW5zaXRpdmUKLSVnbG9iYWwgY29tcGF0aWJsZW5h bWUgIGphdmEtJXtmZWF0dXJldmVyfS0le29yaWdpbn0KLSVnbG9iYWwgZnVsbHZlcnNpb24gICAg ICV7Y29tcGF0aWJsZW5hbWV9LSV7dmVyc2lvbn0tJXtyZWxlYXNlfQogIyBpbWFnZXMgZGlyZWN0 b3JpZXMgZnJvbSB1cHN0cmVhbSBidWlsZAogJWdsb2JhbCBqZGtpbWFnZSAgICAgICAgICAgICAg ICBqZGsKICVnbG9iYWwgc3RhdGljX2xpYnNfaW1hZ2UgICAgICAgc3RhdGljLWxpYnMtZ3JhYWwK ICMgb3V0cHV0IGRpciBzdHViCisjIFBhcmFtZXRlcmlzZWQgbWFjcm9zIGFyZSBvcmRlci1zZW5z aXRpdmUKICVkZWZpbmUgYnVpbGRvdXRwdXRkaXIoKSAle2V4cGFuZDpidWlsZC9qZGsle2ZlYXR1 cmV2ZXJ9LmJ1aWxkJXs/MX19CiAlZGVmaW5lIGluc3RhbGxvdXRwdXRkaXIoKSAle2V4cGFuZDpp bnN0YWxsL2pkayV7ZmVhdHVyZXZlcn0uaW5zdGFsbCV7PzF9fQogJWdsb2JhbCBtaXNjaW5zdGFs bG91dHB1dGRpciBpbnN0YWxsCkBAIC01MjIsMzEgKzUzOCwzMyBAQCBleGl0IDEKICVkZWZpbmUg amRrcG9ydGFibGVuYW1laW1wbCgpICUoZWNobyAle3VuaXF1ZXN1ZmZpeCAiIn0gfCBzZWQgInM7 JXtyZWdleEJhc2V9O1xcMC5wb3J0YWJsZSV7MX0uamRrO2ciIHwgc2VkICJzO29wZW5qZGtwb3J0 YWJsZTtlbDtnIikKICVkZWZpbmUgamRrcG9ydGFibGVzb3VyY2VzbmFtZWltcGwoKSAlKGVjaG8g JXt1bmlxdWVzdWZmaXggIiJ9IHwgc2VkICJzOyV7cmVnZXhCYXNlfTtcXDAucG9ydGFibGUlezF9 LnNvdXJjZXM7ZyIgfCBzZWQgInM7b3Blbmpka3BvcnRhYmxlO2VsO2ciIHwgc2VkICJzOy4le19h cmNofTsubm9hcmNoO2ciKQogJWRlZmluZSBzdGF0aWNsaWJzcG9ydGFibGVuYW1laW1wbCgpICUo ZWNobyAle3VuaXF1ZXN1ZmZpeCAiIn0gfCBzZWQgInM7JXtyZWdleEJhc2V9O1xcMC5wb3J0YWJs ZSV7MX0uc3RhdGljLWxpYnM7ZyIgfCBzZWQgInM7b3Blbmpka3BvcnRhYmxlO2VsO2ciKQorCisj IFJQTSA0LjE5IG5vIGxvbmdlciBhY2NlcHQgb3VyIGRvdWJsZSBwZXJjZW50YWdlZCAlJXtuaWx9 IHBhc3NlZCB0byAlJXsxfQorIyBzbyB3ZSBoYXZlIHRvIHBhc3MgaW4gIiIgYnV0IGV2YWx1YXRl IGl0LCBvdGhlcndpc2UgZmlsZXMgd2lsbCBpbmNsdWRlIGl0CiAlZGVmaW5lIGptb2RzcG9ydGFi bGVuYW1laW1wbCgpICUoZWNobyAle3VuaXF1ZXN1ZmZpeCAiIn0gfCBzZWQgInM7JXtyZWdleEJh c2V9O1xcMC5wb3J0YWJsZSV7MX0uam1vZHM7ZyIgfCBzZWQgInM7b3Blbmpka3BvcnRhYmxlO2Vs O2ciKQogJWRlZmluZSBqcmVwb3J0YWJsZWFyY2hpdmUoKSAgJXtleHBhbmQ6JXtqcmVwb3J0YWJs ZW5hbWVpbXBsIC0tICUlezF9fS50YXIueHp9CislZGVmaW5lIGpyZXBvcnRhYmxlYXJjaGl2ZV9m b3JfZmlsZXMoKSAgJShlY2hvICV7anJlcG9ydGFibGVhcmNoaXZlIC0tICIifSkKICVkZWZpbmUg amRrcG9ydGFibGVhcmNoaXZlKCkgICV7ZXhwYW5kOiV7amRrcG9ydGFibGVuYW1laW1wbCAtLSAl JXsxfX0udGFyLnh6fQotJWRlZmluZSBqZGtwb3J0YWJsZXNvdXJjZXNhcmNoaXZlKCkgICV7ZXhw YW5kOiV7amRrcG9ydGFibGVzb3VyY2VzbmFtZWltcGwgLS0gJSV7MX19LnRhci54en0KKyVkZWZp bmUgamRrcG9ydGFibGVhcmNoaXZlX2Zvcl9maWxlcygpICAlKGVjaG8gJXtqZGtwb3J0YWJsZWFy Y2hpdmUgLS0gIiJ9KQogJWRlZmluZSBzdGF0aWNsaWJzcG9ydGFibGVhcmNoaXZlKCkgICV7ZXhw YW5kOiV7c3RhdGljbGlic3BvcnRhYmxlbmFtZWltcGwgLS0gJSV7MX19LnRhci54en0KKyVkZWZp bmUgc3RhdGljbGlic3BvcnRhYmxlYXJjaGl2ZV9mb3JfZmlsZXMoKSAgJShlY2hvICV7c3RhdGlj bGlic3BvcnRhYmxlYXJjaGl2ZSAtLSAiIn0pCislZGVmaW5lIGpka3BvcnRhYmxlc291cmNlc2Fy Y2hpdmUoKSAgJXtleHBhbmQ6JXtqZGtwb3J0YWJsZXNvdXJjZXNuYW1laW1wbCAtLSAlJXsxfX0u dGFyLnh6fQorJWRlZmluZSBqZGtwb3J0YWJsZXNvdXJjZXNuYW1lKCkgICAgICV7ZXhwYW5kOiV7 amRrcG9ydGFibGVzb3VyY2VzbmFtZWltcGwgLS0gJSV7MX19fQorJWRlZmluZSBqZGtwb3J0YWJs ZXNvdXJjZXNhcmNoaXZlX2Zvcl9maWxlcygpICAlKGVjaG8gJXtqZGtwb3J0YWJsZXNvdXJjZXNh cmNoaXZlIC0tICIifSkKICVkZWZpbmUgam1vZHNwb3J0YWJsZWFyY2hpdmUoKSAgJXtleHBhbmQ6 JXtqbW9kc3BvcnRhYmxlbmFtZWltcGwgLS0gJSV7MX19LnRhci54en0KKyVkZWZpbmUgam1vZHNw b3J0YWJsZWFyY2hpdmVfZm9yX2ZpbGVzKCkgICUoZWNobyAle2ptb2RzcG9ydGFibGVhcmNoaXZl IC0tICIifSkKICVkZWZpbmUganJlcG9ydGFibGVuYW1lKCkgICAgICV7ZXhwYW5kOiV7anJlcG9y dGFibGVuYW1laW1wbCAtLSAlJXsxfX19CiAlZGVmaW5lIGpka3BvcnRhYmxlbmFtZSgpICAgICAl e2V4cGFuZDole2pka3BvcnRhYmxlbmFtZWltcGwgLS0gJSV7MX19fQotJWRlZmluZSBqZGtwb3J0 YWJsZXNvdXJjZXNuYW1lKCkgICAgICV7ZXhwYW5kOiV7amRrcG9ydGFibGVzb3VyY2VzbmFtZWlt cGwgLS0gJSV7MX19fQotIyBJbnRlbnRpb25hbGx5IHVzZSBqZGtwb3J0YWJsZW5hbWVpbXBsIGhl cmUgc2luY2Ugd2Ugd2FudCB0byBoYXZlIHN0YXRpYy1saWJzIGZpbGVzIG92ZXJsYXllZCBvbgot IyB0b3Agb2YgdGhlIEpESyBhcmNoaXZlCisjIFdlIGludGVudGlvbmFsbHkgdXNlIGpka3BvcnRh YmxlbmFtZWltcGwgaGVyZSBzaW5jZSB3ZSB3YW50IHRvIGhhdmUKKyMgc3RhdGljLWxpYnMgZmls ZXMgb3ZlcmxheWVkIG9uIHRvcCBvZiB0aGUgSkRLIGFyY2hpdmUKICVkZWZpbmUgc3RhdGljbGli c3BvcnRhYmxlbmFtZSgpICAgICAle2V4cGFuZDole2pka3BvcnRhYmxlbmFtZWltcGwgLS0gJSV7 MX19fQorCisjIFRoZXNlIG1hY3JvcyBhcmUgbm90IHBhcmFtZXRlcmlzZWQgYXMgdGhlIHNhbWUg aXMgc2hhcmVkIGJ5IGFsbCBidWlsZHMKICVkZWZpbmUgZG9jcG9ydGFibGVuYW1lKCkgJShlY2hv ICV7dW5pcXVlc3VmZml4ICIifSB8IHNlZCAiczsle3JlZ2V4QmFzZX07XFwwLnBvcnRhYmxlLmRv Y3M7ZyIgfCBzZWQgInM7b3Blbmpka3BvcnRhYmxlO2VsO2ciKQogJWRlZmluZSBkb2Nwb3J0YWJs ZWFyY2hpdmUoKSAgJXtkb2Nwb3J0YWJsZW5hbWV9LnRhci54egogJWRlZmluZSBtaXNjcG9ydGFi bGVuYW1lKCkgJShlY2hvICV7dW5pcXVlc3VmZml4ICIifSB8IHNlZCAiczsle3JlZ2V4QmFzZX07 XFwwLnBvcnRhYmxlLm1pc2M7ZyIgfCBzZWQgInM7b3Blbmpka3BvcnRhYmxlO2VsO2ciKQogJWRl ZmluZSBtaXNjcG9ydGFibGVhcmNoaXZlKCkgICV7bWlzY3BvcnRhYmxlbmFtZX0udGFyLnh6CiAK LSMgUlBNIDQuMTkgbm8gbG9uZ2VyIGFjY2VwdCBvdXIgZG91YmxlIHBlcmNlbnRhZ2VkICUle25p bH0gcGFzc2VkIHRvICUlezF9Ci0jIHNvIHdlIGhhdmUgdG8gcGFzcyBpbiAiIiBidXQgZXZhbHVh dGUgaXQsIG90aGVyd2lzZSBmaWxlcyByZWNvcmQgd2lsbCBpbmNsdWRlIGl0Ci0lZGVmaW5lIGpy ZXBvcnRhYmxlYXJjaGl2ZUZvckZpbGVzKCkgICUoZWNobyAle2pyZXBvcnRhYmxlYXJjaGl2ZSAt LSAiIn0pCi0lZGVmaW5lIGpka3BvcnRhYmxlYXJjaGl2ZUZvckZpbGVzKCkgICUoZWNobyAle2pk a3BvcnRhYmxlYXJjaGl2ZSAtLSAiIn0pCi0lZGVmaW5lIGpka3BvcnRhYmxlc291cmNlc2FyY2hp dmVGb3JGaWxlcygpICAlKGVjaG8gJXtqZGtwb3J0YWJsZXNvdXJjZXNhcmNoaXZlIC0tICIifSkK LSVkZWZpbmUgc3RhdGljbGlic3BvcnRhYmxlYXJjaGl2ZUZvckZpbGVzKCkgICUoZWNobyAle3N0 YXRpY2xpYnNwb3J0YWJsZWFyY2hpdmUgLS0gIiJ9KQotJWRlZmluZSBqbW9kc3BvcnRhYmxlYXJj aGl2ZUZvckZpbGVzKCkgICUoZWNobyAle2ptb2RzcG9ydGFibGVhcmNoaXZlIC0tICIifSkKLQog IyBKREsgdG8gdXNlIGZvciBib290c3RyYXBwaW5nCiAlaWZhcmNoICV7ZmFzdGRlYnVnX2FyY2hl c30KICVnbG9iYWwgYm9vdGRlYnVncGtnIGZhc3RkZWJ1ZwpAQCAtNTcwLDI2ICs1ODgsNiBAQCBl eGl0IDEKICVnbG9iYWwgYnVpbGRfaG90c3BvdF9maXJzdCAwCiAlZW5kaWYKIAotIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK LSMgZml4IGZvciBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTEx MTEzNDkKLSMgICAgICAgICBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dp P2lkPTE1OTA3OTYjYzE0Ci0jICAgICAgICAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3No b3dfYnVnLmNnaT9pZD0xNjU1OTM4Ci0lZ2xvYmFsIF9wcml2YXRlbGlicyBsaWJzcGxhc2hzY3Jl ZW5bLl1zby4qfGxpYmF3dF94YXd0Wy5dc28uKnxsaWJqbGlbLl1zby4qfGxpYmF0dGFjaFsuXXNv Lip8bGliYXd0Wy5dc28uKnxsaWJleHRuZXRbLl1zby4qfGxpYmF3dF9oZWFkbGVzc1suXXNvLip8 bGliZHRfc29ja2V0Wy5dc28uKnxsaWJmb250bWFuYWdlclsuXXNvLip8bGliaW5zdHJ1bWVudFsu XXNvLip8bGliajJnc3NbLl1zby4qfGxpYmoycGNzY1suXXNvLip8bGliajJwa2NzMTFbLl1zby4q fGxpYmphYXNbLl1zby4qfGxpYmphdmFqcGVnWy5dc28uKnxsaWJqZHdwWy5dc28uKnxsaWJqaW1h Z2VbLl1zby4qfGxpYmpzb3VuZFsuXXNvLip8bGlibGNtc1suXXNvLip8bGlibWFuYWdlbWVudFsu XXNvLip8bGlibWFuYWdlbWVudF9hZ2VudFsuXXNvLip8bGlibWFuYWdlbWVudF9leHRbLl1zby4q fGxpYm1saWJfaW1hZ2VbLl1zby4qfGxpYm5ldFsuXXNvLip8bGlibmlvWy5dc28uKnxsaWJwcmVm c1suXXNvLip8bGlicm1pWy5dc28uKnxsaWJzYXByb2NbLl1zby4qfGxpYnNjdHBbLl1zby4qfGxp YnN5c3RlbWNvbmZbLl1zby4qfGxpYnppcFsuXXNvLiole2ZyZWV0eXBlX2xpYn0KLSVnbG9iYWwg X3B1YmxpY2xpYnMgbGliamF3dFsuXXNvLip8bGliamF2YVsuXXNvLip8bGlianZtWy5dc28uKnxs aWJ2ZXJpZnlbLl1zby4qfGxpYmpzaWdbLl1zby4qCi0laWYgJWlzX3N5c3RlbV9qZGsKLSVnbG9i YWwgX19wcm92aWRlc19leGNsdWRlIF4oJXtfcHJpdmF0ZWxpYnN9KSQKLSVnbG9iYWwgX19yZXF1 aXJlc19leGNsdWRlIF4oJXtfcHJpdmF0ZWxpYnN9KSQKLSMgTmV2ZXIgZ2VuZXJhdGUgbGliLXN0 eWxlIHByb3ZpZGVzL3JlcXVpcmVzIGZvciBhbnkgZGVidWcgcGFja2FnZXMKLSVnbG9iYWwgX19w cm92aWRlc19leGNsdWRlX2Zyb20gXi4qLyV7dW5pcXVlc3VmZml4IC0tICV7ZGVidWdfc3VmZml4 X3VucXVvdGVkfX0vLiokCi0lZ2xvYmFsIF9fcmVxdWlyZXNfZXhjbHVkZV9mcm9tIF4uKi8le3Vu aXF1ZXN1ZmZpeCAtLSAle2RlYnVnX3N1ZmZpeF91bnF1b3RlZH19Ly4qJAotJWdsb2JhbCBfX3By b3ZpZGVzX2V4Y2x1ZGVfZnJvbSBeLiovJXt1bmlxdWVzdWZmaXggLS0gJXtmYXN0ZGVidWdfc3Vm Zml4X3VucXVvdGVkfX0vLiokCi0lZ2xvYmFsIF9fcmVxdWlyZXNfZXhjbHVkZV9mcm9tIF4uKi8l e3VuaXF1ZXN1ZmZpeCAtLSAle2Zhc3RkZWJ1Z19zdWZmaXhfdW5xdW90ZWR9fS8uKiQKLSVlbHNl Ci0jIERvbid0IGdlbmVyYXRlIHByb3ZpZGVzL3JlcXVpcmVzIGZvciBKREsgcHJvdmlkZWQgc2hh cmVkIGxpYnJhcmllcyBhdCBhbGwuCi0lZ2xvYmFsIF9fcHJvdmlkZXNfZXhjbHVkZSBeKCV7X3By aXZhdGVsaWJzfXwle19wdWJsaWNsaWJzfSkkCi0lZ2xvYmFsIF9fcmVxdWlyZXNfZXhjbHVkZSBe KCV7X3ByaXZhdGVsaWJzfXwle19wdWJsaWNsaWJzfSkkCi0lZW5kaWYKLQogIyBWTSB2YXJpYW50 IGJlaW5nIGJ1aWx0CiAlaWZhcmNoICV7emVyb19hcmNoZXN9CiAlZ2xvYmFsIHZtX3ZhcmlhbnQg emVybwpAQCAtNTk3LDI4ICs1OTUsMTEgQEAgZXhpdCAxCiAlZ2xvYmFsIHZtX3ZhcmlhbnQgc2Vy dmVyCiAlZW5kaWYKIAotJWdsb2JhbCBldGNqYXZhc3ViZGlyICAgICAle19zeXNjb25mZGlyfS9q YXZhL2phdmEtJXtqYXZhdmVyfS0le29yaWdpbn0KLSVkZWZpbmUgZXRjamF2YWRpcigpICAgICAg JXtleHBhbmQ6JXtldGNqYXZhc3ViZGlyfS8le3VuaXF1ZXN1ZmZpeCAtLSAlez8xfX19Ci0jIFN0 YW5kYXJkIEpQYWNrYWdlIGRpcmVjdG9yaWVzIGFuZCBzeW1ib2xpYyBsaW5rcy4KLSVkZWZpbmUg c2RrZGlyKCkgICAgICAgICV7ZXhwYW5kOiV7dW5pcXVlc3VmZml4IC0tICV7PzF9fX0KLSVkZWZp bmUganJlbG5rKCkgICAgICAgICV7ZXhwYW5kOmpyZS0le2phdmF2ZXJ9LSV7b3JpZ2lufS0le3Zl cnNpb259LSV7cmVsZWFzZX0uJXtfYXJjaH0lez8xfX0KLQotJWRlZmluZSBzZGtiaW5kaXIoKSAg ICAgJXtleHBhbmQ6JXtfanZtZGlyfS8le3Nka2RpciAtLSAlez8xfX0vYmlufQotJWRlZmluZSBq cmViaW5kaXIoKSAgICAgJXtleHBhbmQ6JXtfanZtZGlyfS8le3Nka2RpciAtLSAlez8xfX0vYmlu fQotCiAlZ2xvYmFsIGFsdF9qYXZhX25hbWUgICAgIGFsdC1qYXZhCiAlZ2xvYmFsIGdlbmVyYXRl ZF9zb3VyY2VzX25hbWUgICAgIGdlbmVyYXRlZF9zb3VyY2VzCiAKICVnbG9iYWwgcnBtX3N0YXRl X2RpciAle19sb2NhbHN0YXRlZGlyfS9saWIvcnBtLXN0YXRlLwogCi0jIEZvciBmbGF0cGFjayBi dWlsZHMgaGFyZC1jb2RlIC91c3Ivc2Jpbi9hbHRlcm5hdGl2ZXMsCi0jIG90aGVyd2lzZSB1c2Ug JSV7X3NiaW5kaXJ9IHJlbGF0aXZlIHBhdGguCi0laWYgMCV7P2ZsYXRwYWt9Ci0lZ2xvYmFsIGFs dGVybmF0aXZlc19yZXF1aXJlcyAvdXNyL3NiaW4vYWx0ZXJuYXRpdmVzCi0lZWxzZQotJWdsb2Jh bCBhbHRlcm5hdGl2ZXNfcmVxdWlyZXMgJXtfc2JpbmRpcn0vYWx0ZXJuYXRpdmVzCi0lZW5kaWYK LQogIyBQb3J0YWJsZXMgaGF2ZSBubyByZXBvIChyZXF1aXJlcy9wcm92aWRlcyksIGJ1dCB0aGVz ZSBhcmUgYXdlc29tZSBmb3Igb3JpZW50YXRpb24gaW4gc3BlYwogIyBBbHNvIHNjcmlwdGxldHMg YXJlIGhhcHBpbHkgbWlzc2luZyBhbmQgZmlsZXMgYXJlIGhhbmRsZWQgb2xkIGZhc2hpb24KICMg bm90LWR1cGxpY2F0ZWQgcmVxdWlyZXMvcHJvdmlkZXMvb2Jzb2xldGVzIGZvciBub3JtYWwvZGVi dWcgcGFja2FnZXMKQEAgLTY1Myw1MSArNjM0LDEzIEBAIEV4Y2x1ZGVBcmNoOiAle2l4ODZ9CiBF eGNsdXNpdmVBcmNoOiAgJXtleGNsdXNpdmVfYXJjaGVzfQogJWVuZGlmCiAKLU5hbWU6ICAgIGph dmEtMjUtJXtvcmlnaW59LXBvcnRhYmxlJXs/cGtnb3M6LSV7cGtnb3N9fQotVmVyc2lvbjogJXtu ZXdqYXZhdmVyfS4le2J1aWxkdmVyfQotUmVsZWFzZTogJXs/ZWFwcmVmaXh9JXtycG1yZWxlYXNl fSV7P2V4dHJhdmVyfSV7P2Rpc3R9LjEKLSMgamF2YS0xLjUuMC1pYm0gZnJvbSBqcGFja2FnZS5v cmcgc2V0IEVwb2NoIHRvIDEgZm9yIHVua25vd24gcmVhc29ucwotIyBhbmQgdGhpcyBjaGFuZ2Ug d2FzIGJyb3VnaHQgaW50byBSSEVMLTQuIGphdmEtMS41LjAtaWJtIHBhY2thZ2VzCi0jIGFsc28g aW5jbHVkZWQgdGhlIGVwb2NoIGluIHRoZWlyIHZpcnR1YWwgcHJvdmlkZXMuIFRoaXMgY3JlYXRl ZCBhCi0jIHNpdHVhdGlvbiB3aGVyZSBpbi10aGUtd2lsZCBqYXZhLTEuNS4wLWlibSBwYWNrYWdl cyBwcm92aWRlZCAiamF2YSA9Ci0jIDE6MS41LjAiLiBJbiBSUE0gdGVybXMsICIxLjYuMCA8IDE6 MS41LjAiIHNpbmNlIDEuNi4wIGlzCi0jIGludGVycHJldGVkIGFzIDA6MS42LjAuIFNvIHRoZSAi amF2YSA+PSAxLjYuMCIgcmVxdWlyZW1lbnQgd291bGQgYmUKLSMgc2F0aXNmaWVkIGJ5IHRoZSAx OjEuNS4wIHBhY2thZ2VzLiBUaHVzIHdlIG5lZWQgdG8gc2V0IHRoZSBlcG9jaCBpbgotIyBKREsg cGFja2FnZSA+PSAxLjYuMCB0byAxLCBhbmQgcGFja2FnZXMgcmVmZXJyaW5nIHRvIEpESyB2aXJ0 dWFsCi0jIHByb3ZpZGVzID49IDEuNi4wIG11c3Qgc3BlY2lmeSB0aGUgZXBvY2gsICJqYXZhID49 IDE6MS42LjAiLgotCi1FcG9jaDogICAxCi1TdW1tYXJ5OiAle29yaWdpbl9uaWNlfSAle2ZlYXR1 cmV2ZXJ9IFJ1bnRpbWUgRW52aXJvbm1lbnQgcG9ydGFibGUgZWRpdGlvbgotIyBHcm91cHMgYXJl IG9ubHkgdXNlZCB1cCB0byBSSEVMIDggYW5kIG9uIEZlZG9yYSB2ZXJzaW9ucyBwcmlvciB0byBG MzAKLSVpZiAoMCV7P3JoZWx9ID4gMCAmJiAwJXs/cmhlbH0gPD0gOCkgfHwgKDAlez9mZWRvcmF9 ID49IDAgJiYgMCV7P2ZlZG9yYX0gPCAzMCkKLUdyb3VwOiAgIERldmVsb3BtZW50L0xhbmd1YWdl cwotJWVuZGlmCi0KLSMgSG90U3BvdCBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyCi0jIEpE SyBsaWJyYXJ5IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIgd2l0aCB0aGUgQ2xhc3NwYXRo IGV4Y2VwdGlvbgotIyBUaGUgQXBhY2hlIGxpY2Vuc2UgaXMgdXNlZCBpbiBjb2RlIHRha2VuIGZy b20gQXBhY2hlIHByb2plY3RzIChwcmltYXJpbHkgeGFsYW4gJiB4ZXJjZXMpCi0jIERPTSBsZXZl bHMgMiAmIDMgYW5kIHRoZSBYTUwgZGlnaXRhbCBzaWduYXR1cmUgc2NoZW1hcyBhcmUgbGljZW5z ZWQgdW5kZXIgdGhlIFczQyBTb2Z0d2FyZSBMaWNlbnNlCi0jIFRoZSBKU1IxNjYgY29uY3VycmVu Y3kgY29kZSBpcyBpbiB0aGUgcHVibGljIGRvbWFpbgotIyBUaGUgQlNEIGFuZCBNSVQgbGljZW5z ZXMgYXJlIHVzZWQgZm9yIGEgbnVtYmVyIG9mIHRoaXJkLXBhcnR5IGxpYnJhcmllcyAoc2VlIEFE RElUSU9OQUxfTElDRU5TRV9JTkZPKQotIyBUaGUgT3BlbkpESyBzb3VyY2UgdHJlZSBpbmNsdWRl czoKLSMgLSBKUEVHIGxpYnJhcnkgKElKRyksIHpsaWIgJiBsaWJwbmcgKHpsaWIpLCBnaWZsaWIg KE1JVCksIGhhcmZidXp6IChJU0MpLAotIyAtIGZyZWV0eXBlIChGVEwpLCBqbGluZSAoQlNEKSBh bmQgTENNUyAoTUlUKQotIyAtIGpxdWVyeSAoTUlUKSwgamRrLmNyeXB0by5jcnlwdG9raSBQS0NT IDExIHdyYXBwZXIgKFJTQSkKLSMgLSBwdWJsaWNfc3VmZml4X2xpc3QuZGF0IGZyb20gcHVibGlj c3VmZml4Lm9yZyAoTVBMdjIuMCkKLSMgVGhlIHRlc3QgY29kZSBpbmNsdWRlcyBjb3BpZXMgb2Yg TlNTIHVuZGVyIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIHYyLjAKLSMgVGhlIFBDU0NsaXRl IGhlYWRlcnMgYXJlIHVuZGVyIGEgQlNEIHdpdGggYWR2ZXJ0aXNpbmcgbGljZW5zZQotIyBUaGUg ZWxsaXB0aWMgY3VydmUgY3J5cHRvZ3JhcGh5IChFQ0MpIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk IHVuZGVyIHRoZSBMR1BMdjIuMSBvciBhbnkgbGF0ZXIgdmVyc2lvbgotIyBBdXRvbWF0aWNhbGx5 IGNvbnZlcnRlZCBmcm9tIG9sZCBmb3JtYXQ6IEFTTCAxLjEgYW5kIEFTTCAyLjAgYW5kIEJTRCBh bmQgQlNEIHdpdGggYWR2ZXJ0aXNpbmcgYW5kIEdQTCsgYW5kIEdQTHYyIGFuZCBHUEx2MiB3aXRo IGV4Y2VwdGlvbnMgYW5kIElKRyBhbmQgTEdQTHYyKyBhbmQgTUlUIGFuZCBNUEx2Mi4wIGFuZCBQ dWJsaWMgRG9tYWluIGFuZCBXM0MgYW5kIHpsaWIgYW5kIElTQyBhbmQgRlRMIGFuZCBSU0EgLSBy ZXZpZXcgaXMgaGlnaGx5IHJlY29tbWVuZGVkLgotTGljZW5zZTogIEFwYWNoZS0xLjEgQU5EIEFw YWNoZS0yLjAgQU5EIExpY2Vuc2VSZWYtQ2FsbGF3YXktQlNEIEFORCBMaWNlbnNlUmVmLUNhbGxh d2F5LUJTRC13aXRoLWFkdmVydGlzaW5nIEFORCBHUEwtMS4wLW9yLWxhdGVyIEFORCBHUEwtMi4w LW9ubHkgQU5EIExpY2Vuc2VSZWYtQ2FsbGF3YXktR1BMdjItd2l0aC1leGNlcHRpb25zIEFORCBJ SkcgQU5EIExpY2Vuc2VSZWYtQ2FsbGF3YXktTEdQTHYyKyBBTkQgTGljZW5zZVJlZi1DYWxsYXdh eS1NSVQgQU5EIE1QTC0yLjAgQU5EIExpY2Vuc2VSZWYtQ2FsbGF3YXktUHVibGljLURvbWFpbiBB TkQgVzNDIEFORCBabGliIEFORCBJU0MgQU5EIEZUTCBBTkQgTGljZW5zZVJlZi1SU0EKLVVSTDog ICAgICBodHRwOi8vb3Blbmpkay5qYXZhLm5ldC8KLQogIyBUaGUgc291cmNlIHRhcmJhbGwsIGdl bmVyYXRlZCB1c2luZyBnZW5lcmF0ZV9zb3VyY2VfdGFyYmFsbC5zaAogU291cmNlMDogaHR0cHM6 Ly9vcGVuamRrLXNvdXJjZXMub3NjaS5pby9vcGVuamRrJXtmZWF0dXJldmVyfS9vcGVuJXt2Y3N0 YWd9JXtlYV9kZXNpZ25hdG9yX3ppcH0udGFyLnh6CiAKICMgVXNlICdpY2VkdGVhX3N5bmMuc2gn IHRvIHVwZGF0ZSB0aGUgZm9sbG93aW5nCiAjIFRoZXkgYXJlIGJhc2VkIG9uIGNvZGUgY29udGFp bmVkIGluIHRoZSBJY2VkVGVhIHByb2plY3QgKDYueCkuCiAjIFN5c3RlbXRhcCB0YXBzZXRzLiBa aXBwZWQgdXAgdG8ga2VlcCBpdCBzbWFsbC4KLSMgRGlzYWJsZWQgaW4gcG9ydGFibGVzCisjIERp c2FibGVkIGluIGZlZG9yYSBwb3J0YWJsZXMgKGFwcGxpZWQgaW4gZmVkb3JhIHJwbXMpCiAjU291 cmNlODogdGFwc2V0cy1pY2VkdGVhLSUle2ljZWR0ZWF2ZXJ9LnRhci54egogCiAjIERlc2t0b3Ag ZmlsZXMuIEFkYXB0ZWQgZnJvbSBJY2VkVGVhCkBAIC03MzMsMTIgKzY3NiwxMyBAQCBTb3VyY2Ux ODogVGVzdFRyYW5zbGF0aW9ucy5qYXZhCiAjIFJQTS9kaXN0cmlidXRpb24gc3BlY2lmaWMgcGF0 Y2hlcwogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwog IyBDcnlwdG8gcG9saWN5IGFuZCBGSVBTIHN1cHBvcnQgcGF0Y2hlcworCiAjIFBhdGNoIGlzIGdl bmVyYXRlZCBmcm9tIHRoZSBmaXBzLTI1dSB0cmVlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9yaC1v cGVuamRrL2pkay90cmVlL2ZpcHMtMjV1Ci0jIGFzIGZvbGxvd3M6IGdpdCBkaWZmICUle3Zjc3Rh Z30gc3JjIG1ha2UgdGVzdCA+IGZpcHMtMjV1LSQoZ2l0IHNob3cgLXMgLS1mb3JtYXQ9JWggSEVB RCkucGF0Y2gKKyMgYXMgZm9sbG93czogZ2l0IGRpZmYgPHZjc3RhZz4gc3JjIG1ha2UgdGVzdCA+ IGZpcHMtMjV1LSQoZ2l0IHNob3cgLXMgLS1mb3JtYXQ9JWggSEVBRCkucGF0Y2gKICMgRGlmZiBp cyBsaW1pdGVkIHRvIHNyYyBhbmQgbWFrZSBzdWJkaXJlY3RvcmllcyB0byBleGNsdWRlIC5naXRo dWIgY2hhbmdlcwotIyBUaGUgZm9sbG93aW5nIGxpc3QgaXMgZ2VuZXJhdGVkIGJ5OgotIyBnaXQg bG9nICUle3Zjc3RhZ30uLiAtLW5vLW1lcmdlcyAtLWZvcm1hdD0lcyAtLXJldmVyc2U6CisKICMg Rml4ZXMgY3VycmVudGx5IGluY2x1ZGVkOgogIyBPUEVOSkRLLTIxMDg6IEludGVybmFsIF9fcmVk aGF0X2ZpcHNfXyBwcm9wZXJ0eQogIyBPUEVOSkRLLTIxMjM6IEFsZ29yaXRobXMgbG9ja2Rvd24K QEAgLTc1MSw4ICs2OTUsNyBAQCBQYXRjaDEwMDE6IGZpcHMtJXtmZWF0dXJldmVyfXUtJXtmaXBz dmVyfS5wYXRjaAogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAKLSMgSkRLLTgzNzUyOTQ6IChmcykgRmlsZXMuY29weSBjYW4gZmFpbCB3aXRoIEVPUE5P VFNVUFAgd2hlbiBjb3B5X2ZpbGVfcmFuZ2Ugbm90IHN1cHBvcnRlZAotUGF0Y2gyMDAxOiBqZGs4 Mzc1Mjk0LWhhbmRsZS1FT1BOT1RTVVBQLWluLWNvcHlpbmcucGF0Y2gKKyMgQ3VycmVudGx5IGVt cHR5CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwpA QCAtNzYwLDcgKzcwMywxMCBAQCBQYXRjaDIwMDE6IGpkazgzNzUyOTQtaGFuZGxlLUVPUE5PVFNV UFAtaW4tY29weWluZy5wYXRjaAogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAKLSMgQ3VycmVudGx5IGVtcHR5CisjIEpESy04MzQ3OTAxOiBDMiBzaG91 bGQgcmVtb3ZlIHVudXNlZCBsZWFmIC8gcHVyZSBydW50aW1lIGNhbGxzCitQYXRjaDIwMDI6IGpk azgzNDc5MDEtYzJfdW51c2VkX2xlYWZfcmVtb3ZhbC5wYXRjaAorIyBKREstODM3ODczMTM6IEMy OiBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGR1ZSB0byBtaXNzaW5nIGNvbnN0YW50IGZvbGRpbmcg Zm9yIE1hdGgucG93KCkKK1BhdGNoMjAwMzogamRrODM3ODcxMy1jMl9taXNzaW5nX3Bvd19jb25z dGFudF9mb2xkaW5nLnBhdGNoCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogIwpAQCAtODMxLDE3ICs3NzcsMTcgQEAgQnVpbGRSZXF1aXJlczogbGlicG5n LWRldmVsCiBCdWlsZFJlcXVpcmVzOiB6bGliLWRldmVsCiAlZWxzZQogIyBWZXJzaW9uIGluIHNy Yy9qYXZhLmRlc2t0b3Avc2hhcmUvbGVnYWwvZnJlZXR5cGUubWQKLVByb3ZpZGVzOiBidW5kbGVk KGZyZWV0eXBlKSA9IDIuMTQuMgorUHJvdmlkZXM6IGJ1bmRsZWQoZnJlZXR5cGUpID0gMi4xNC4z CiAjIFZlcnNpb24gaW4gc3JjL2phdmEuZGVza3RvcC9zaGFyZS9uYXRpdmUvbGlic3BsYXNoc2Ny ZWVuL2dpZmxpYi9naWZfbGliLmgKLVByb3ZpZGVzOiBidW5kbGVkKGdpZmxpYikgPSA2LjEuMgor UHJvdmlkZXM6IGJ1bmRsZWQoZ2lmbGliKSA9IDYuMS4zCiAjIFZlcnNpb24gaW4gc3JjL2phdmEu ZGVza3RvcC9zaGFyZS9uYXRpdmUvbGliaGFyZmJ1enovaGItdmVyc2lvbi5oCi1Qcm92aWRlczog YnVuZGxlZChoYXJmYnV6eikgPSAxMi4zLjIKK1Byb3ZpZGVzOiBidW5kbGVkKGhhcmZidXp6KSA9 IDE0LjIuMAogIyBWZXJzaW9uIGluIHNyYy9qYXZhLmRlc2t0b3Avc2hhcmUvbmF0aXZlL2xpYmxj bXMvbGNtczIuaAotUHJvdmlkZXM6IGJ1bmRsZWQobGNtczIpID0gMi4xNy4wCitQcm92aWRlczog YnVuZGxlZChsY21zMikgPSAyLjE5LjEKICMgVmVyc2lvbiBpbiBzcmMvamF2YS5kZXNrdG9wL3No YXJlL25hdGl2ZS9saWJqYXZhanBlZy9qcGVnbGliLmgKIFByb3ZpZGVzOiBidW5kbGVkKGxpYmpw ZWcpID0gNmIKICMgVmVyc2lvbiBpbiBzcmMvamF2YS5kZXNrdG9wL3NoYXJlL25hdGl2ZS9saWJz cGxhc2hzY3JlZW4vbGlicG5nL3BuZy5oCi1Qcm92aWRlczogYnVuZGxlZChsaWJwbmcpID0gMS42 LjU3CitQcm92aWRlczogYnVuZGxlZChsaWJwbmcpID0gMS42LjU4CiAjIFZlcnNpb24gaW4gc3Jj L2phdmEuYmFzZS9zaGFyZS9uYXRpdmUvbGliemlwL3psaWIvemxpYi5oCiBQcm92aWRlczogYnVu ZGxlZCh6bGliKSA9IDEuMy4yCiAlZW5kaWYKQEAgLTEwMjUsMzcgKzk3MSwyMiBAQCBmaQogZXhw b3J0IFhaX09QVD0iLVQwIgogJXNldHVwIC1xIC1jIC1uICV7dW5pcXVlc3VmZml4ICIifSAtVCAt YSAwCiAjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTA4 NAotcHJpb3JpdHlsZW5ndGg9YGV4cHIgbGVuZ3RoICV7cHJpb3JpdHl9YAotaWYgWyAkcHJpb3Jp dHlsZW5ndGggLW5lIDggXSA7IHRoZW4KLSBlY2hvICJwcmlvcml0eSBtdXN0IGJlIDggZGlnaXRz IGluIHRvdGFsLCB2aW9sYXRlZCIKLSBleGl0IDE0Ci1maQogCiAjIE9wZW5KREsgcGF0Y2hlcwor CiAlaWYgJXtzeXN0ZW1fbGlic30KICMgUmVtb3ZlIGxpYnJhcmllcyB0aGF0IGFyZSBsaW5rZWQg YnkgYm90aCBzdGF0aWMgYW5kIGR5bmFtaWMgYnVpbGRzCiBzaCAle1NPVVJDRTEyfSAle3RvcF9s ZXZlbF9kaXJfbmFtZX0KICVlbmRpZgogCiAjIFBhdGNoIHRoZSBKREsKLSMgVGhpcyBzeW50YXgg aXMgZGVwcmVjYXRlZDoKLSMgICAgJSVwYXRjaE4gWy4uLl0KLSMgYW5kIHNob3VsZCBiZSByZXBs YWNlZCB3aXRoOgotIyAgICAlJXBhdGNoIC1QTiBbLi4uXQotIyBGb3IgZXhhbXBsZToKLSMgICAg JSVwYXRjaDEwMDEgLXAxCi0jIGJlY29tZXM6Ci0jICAgICUlcGF0Y2ggLVAxMDAxIC1wMQotIyBU aGUgcmVwbGFjZW1lbnQgZm9ybWF0IHN1Z2dlc3RlZCBieSByZWNlbnQgKGNpcmNhIEZlZG9yYSAz OCkgUlBNCi0jIGRlcHJlY2F0aW9uIG1lc3NhZ2VzOgotIyAgICAlJXBhdGNoIE4gWy4uLl0KLSMg aXMgbm90IGJhY2t3YXJkLWNvbXBhdGlibGUgd2l0aCBwcmlvciAoY2lyY2EgUkhFTC04KSB2ZXJz aW9ucyBvZgotIyBycG1idWlsZC4KKwogcHVzaGQgJXt0b3BfbGV2ZWxfZGlyX25hbWV9CiAjIEFk ZCBjcnlwdG8gcG9saWN5IGFuZCBGSVBTIHN1cHBvcnQKICVwYXRjaCAtUDEwMDEgLXAxCi0jIEFk ZCBFT1BOT1RTVVBQIHBhdGNoCi0lcGF0Y2ggLVAyMDAxIC1wMQorIyBBZGQgQzIgcGF0Y2hlcwor JXBhdGNoIC1QMjAwMiAtcDEKKyVwYXRjaCAtUDIwMDMgLXAxCiBwb3BkICMgb3BlbmpkawogCiBl Y2hvICJHZW5lcmF0aW5nICV7YWx0X2phdmFfbmFtZX0gbWFuIHBhZ2UiCkBAIC0xMTI0LDcgKzEw NTUsNiBAQCBmaQogZXhwb3J0IE5VTV9QUk9DPSUoL3Vzci9iaW4vZ2V0Y29uZiBfTlBST0NFU1NP UlNfT05MTiAyPiAvZGV2L251bGwgfHwgOikKIGV4cG9ydCBOVU1fUFJPQz0ke05VTV9QUk9DOi0x fQogJWlmIDAlez9fc21wX25jcHVzX21heH0KLSMgSG9ub3IgJSVfc21wX25jcHVzX21heAogWyAk e05VTV9QUk9DfSAtZ3QgJXs/X3NtcF9uY3B1c19tYXh9IF0gJiYgZXhwb3J0IE5VTV9QUk9DPSV7 P19zbXBfbmNwdXNfbWF4fQogJWVuZGlmCiBleHBvcnQgWFpfT1BUPSItVDAiCkBAIC0xODY0LDgg KzE3OTQsOCBAQCBkb25lCiAlaWYgJXtpbmNsdWRlX25vcm1hbF9idWlsZH0KICVmaWxlcwogIyBt YWluIHBhY2thZ2UgYnVpbGRzIGFsd2F5cwotJXtfanZtZGlyfS8le2pyZXBvcnRhYmxlYXJjaGl2 ZUZvckZpbGVzfQotJXtfanZtZGlyfS8le2pyZXBvcnRhYmxlYXJjaGl2ZUZvckZpbGVzfS5zaGEy NTZzdW0KKyV7X2p2bWRpcn0vJXtqcmVwb3J0YWJsZWFyY2hpdmVfZm9yX2ZpbGVzfQorJXtfanZt ZGlyfS8le2pyZXBvcnRhYmxlYXJjaGl2ZV9mb3JfZmlsZXN9LnNoYTI1NnN1bQogJWVsc2UKICVm aWxlcwogIyBwbGFjZWhvbGRlcgpAQCAtMTg3MywxOSArMTgwMywxOSBAQCBkb25lCiAKICVpZiAl e2luY2x1ZGVfbm9ybWFsX2J1aWxkfQogJWZpbGVzIGRldmVsCi0le19qdm1kaXJ9LyV7amRrcG9y dGFibGVhcmNoaXZlRm9yRmlsZXN9Cisle19qdm1kaXJ9LyV7amRrcG9ydGFibGVhcmNoaXZlX2Zv cl9maWxlc30KICV7X2p2bWRpcn0vJXtqZGtwb3J0YWJsZWFyY2hpdmUgLS0gLmRlYnVnaW5mb30K LSV7X2p2bWRpcn0vJXtqZGtwb3J0YWJsZWFyY2hpdmVGb3JGaWxlc30uc2hhMjU2c3VtCisle19q dm1kaXJ9LyV7amRrcG9ydGFibGVhcmNoaXZlX2Zvcl9maWxlc30uc2hhMjU2c3VtCiAle19qdm1k aXJ9LyV7amRrcG9ydGFibGVhcmNoaXZlIC0tIC5kZWJ1Z2luZm99LnNoYTI1NnN1bQotJXtfanZt ZGlyfS8le2ptb2RzcG9ydGFibGVhcmNoaXZlRm9yRmlsZXN9Ci0le19qdm1kaXJ9LyV7am1vZHNw b3J0YWJsZWFyY2hpdmVGb3JGaWxlc30uc2hhMjU2c3VtCisle19qdm1kaXJ9LyV7am1vZHNwb3J0 YWJsZWFyY2hpdmVfZm9yX2ZpbGVzfQorJXtfanZtZGlyfS8le2ptb2RzcG9ydGFibGVhcmNoaXZl X2Zvcl9maWxlc30uc2hhMjU2c3VtCiAlZW5kaWYKIAogJWlmICV7aW5jbHVkZV9ub3JtYWxfYnVp bGR9CiAlaWYgJXtpbmNsdWRlX3N0YXRpY2xpYnN9CiAlZmlsZXMgc3RhdGljLWxpYnMKLSV7X2p2 bWRpcn0vJXtzdGF0aWNsaWJzcG9ydGFibGVhcmNoaXZlRm9yRmlsZXN9Ci0le19qdm1kaXJ9LyV7 c3RhdGljbGlic3BvcnRhYmxlYXJjaGl2ZUZvckZpbGVzfS5zaGEyNTZzdW0KKyV7X2p2bWRpcn0v JXtzdGF0aWNsaWJzcG9ydGFibGVhcmNoaXZlX2Zvcl9maWxlc30KKyV7X2p2bWRpcn0vJXtzdGF0 aWNsaWJzcG9ydGFibGVhcmNoaXZlX2Zvcl9maWxlc30uc2hhMjU2c3VtCiAlZW5kaWYKICVlbmRp ZgogCkBAIC0xOTI2LDggKzE4NTYsOCBAQCBkb25lCiAlZW5kaWYKIAogJWZpbGVzIHNvdXJjZXMK LSV7X2p2bWRpcn0vJXtqZGtwb3J0YWJsZXNvdXJjZXNhcmNoaXZlRm9yRmlsZXN9Ci0le19qdm1k aXJ9LyV7amRrcG9ydGFibGVzb3VyY2VzYXJjaGl2ZUZvckZpbGVzfS5zaGEyNTZzdW0KKyV7X2p2 bWRpcn0vJXtqZGtwb3J0YWJsZXNvdXJjZXNhcmNoaXZlX2Zvcl9maWxlc30KKyV7X2p2bWRpcn0v JXtqZGtwb3J0YWJsZXNvdXJjZXNhcmNoaXZlX2Zvcl9maWxlc30uc2hhMjU2c3VtCiAKICVpZiAl e2luY2x1ZGVfbm9ybWFsX2J1aWxkfQogJWZpbGVzIGRvY3MKCmRpZmYgLS1naXQgYS9qZGs4MzQ3 OTAxLWMyX3VudXNlZF9sZWFmX3JlbW92YWwucGF0Y2ggYi9qZGs4MzQ3OTAxLWMyX3VudXNlZF9s ZWFmX3JlbW92YWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFl MTM2YgotLS0gL2Rldi9udWxsCisrKyBiL2pkazgzNDc5MDEtYzJfdW51c2VkX2xlYWZfcmVtb3Zh bC5wYXRjaApAQCAtMCwwICsxLDc3MiBAQAorRnJvbSAwOTg1MzQ2MWE2ODk2YWIxZjE1NDY5Yzc1 M2MyMWNhMjEyZTdlNjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogZHVrZSA8ZHVr ZUBvcGVuamRrLm9yZz4KK0RhdGU6IFR1ZSwgNyBBcHIgMjAyNiAxNToxNDo1MyArMDAwMAorU3Vi amVjdDogW1BBVENIIDEvMl0gQmFja3BvcnQgZWQ3MDkxMGIwZjNlMWIxOWQ5MTVlYzEzYWMzNDM0 NDA3ZDAxYmM1ZAorCistLS0KKyBzcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NhbGxub2RlLmNwcCAg ICAgfCAgNTMgKysrKysrKy0KKyBzcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NhbGxub2RlLmhwcCAg ICAgfCAgMjkgKysrKy0KKyBzcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NsYXNzZXMuaHBwICAgICAg fCAgIDIgKworIHNyYy9ob3RzcG90L3NoYXJlL29wdG8vY29tcGlsZS5jcHAgICAgICB8ICAxOSAr KysKKyBzcmMvaG90c3BvdC9zaGFyZS9vcHRvL2Rpdm5vZGUuY3BwICAgICAgfCAxNTggKysrKysr KysrKy0tLS0tLS0tLS0tLS0tCisgc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9kaXZub2RlLmhwcCAg ICAgIHwgIDM1ICsrKy0tLQorIHNyYy9ob3RzcG90L3NoYXJlL29wdG8vZ3JhcGhLaXQuY3BwICAg ICB8ICAyOSArKystLQorIHNyYy9ob3RzcG90L3NoYXJlL29wdG8vZ3JhcGhLaXQuaHBwICAgICB8 ICAgMSArCisgc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9saWJyYXJ5X2NhbGwuY3BwIHwgICAyICst Cisgc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9tYWNyby5jcHAgICAgICAgIHwgIDE1ICstLQorIHNy Yy9ob3RzcG90L3NoYXJlL29wdG8vbXVsdG5vZGUuY3BwICAgICB8ICAxMyArKworIHNyYy9ob3Rz cG90L3NoYXJlL29wdG8vbXVsdG5vZGUuaHBwICAgICB8ICA0NiArKysrKysrCisgc3JjL2hvdHNw b3Qvc2hhcmUvb3B0by9ub2RlLmNwcCAgICAgICAgIHwgIDEyICstCisgc3JjL2hvdHNwb3Qvc2hh cmUvb3B0by9ub2RlLmhwcCAgICAgICAgIHwgICA1ICstCisgc3JjL2hvdHNwb3Qvc2hhcmUvb3B0 by9wYXJzZTIuY3BwICAgICAgIHwgICA4ICstCisgMTUgZmlsZXMgY2hhbmdlZCwgMjgyIGluc2Vy dGlvbnMoKyksIDE0NSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9ob3RzcG90L3No YXJlL29wdG8vY2FsbG5vZGUuY3BwIGIvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jYWxsbm9kZS5j cHAKK2luZGV4IDZmMTNjZTBmODA5Li5mYzRiMGMzNWRmZiAxMDA2NDQKKy0tLSBhL3NyYy9ob3Rz cG90L3NoYXJlL29wdG8vY2FsbG5vZGUuY3BwCisrKysgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRv L2NhbGxub2RlLmNwcAorQEAgLTkzNSw3ICs5MzUsNyBAQCBOb2RlICpDYWxsTm9kZTo6cmVzdWx0 X2Nhc3QoKSB7CisgfQorIAorIAorLXZvaWQgQ2FsbE5vZGU6OmV4dHJhY3RfcHJvamVjdGlvbnMo Q2FsbFByb2plY3Rpb25zKiBwcm9qcywgYm9vbCBzZXBhcmF0ZV9pb19wcm9qLCBib29sIGRvX2Fz c2VydHMpIHsKKyt2b2lkIENhbGxOb2RlOjpleHRyYWN0X3Byb2plY3Rpb25zKENhbGxQcm9qZWN0 aW9ucyogcHJvanMsIGJvb2wgc2VwYXJhdGVfaW9fcHJvaiwgYm9vbCBkb19hc3NlcnRzKSBjb25z dCB7CisgICBwcm9qcy0+ZmFsbHRocm91Z2hfcHJvaiAgICAgID0gbnVsbHB0cjsKKyAgIHByb2pz LT5mYWxsdGhyb3VnaF9jYXRjaHByb2ogPSBudWxscHRyOworICAgcHJvanMtPmZhbGx0aHJvdWdo X2lvcHJvaiAgICA9IG51bGxwdHI7CitAQCAtMTMxOSw2ICsxMzE5LDU3IEBAIHZvaWQgQ2FsbExl YWZWZWN0b3JOb2RlOjpjYWxsaW5nX2NvbnZlbnRpb24oIEJhc2ljVHlwZSogc2lnX2J0LCBWTVJl Z1BhaXIgKnBhcm1fCisgCisgCisgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorK2Jvb2wgQ2FsbExl YWZQdXJlTm9kZTo6aXNfdW51c2VkKCkgY29uc3QgeworKyAgcmV0dXJuIHByb2pfb3V0X29yX251 bGwoVHlwZUZ1bmM6OlBhcm1zKSA9PSBudWxscHRyOworK30KKysKKytib29sIENhbGxMZWFmUHVy ZU5vZGU6OmlzX2RlYWQoKSBjb25zdCB7CisrICByZXR1cm4gcHJval9vdXRfb3JfbnVsbChUeXBl RnVuYzo6Q29udHJvbCkgPT0gbnVsbHB0cjsKKyt9CisrCisrLyogV2UgbWFrZSBhIHR1cGxlIG9m IHRoZSBnbG9iYWwgaW5wdXQgc3RhdGUgKyBUT1AgZm9yIHRoZSBvdXRwdXQgdmFsdWVzLgorKyAq IFdlIHVzZSB0aGlzIHRvIGRlbGV0ZSBhIHB1cmUgZnVuY3Rpb24gdGhhdCBpcyBub3QgdXNlZDog YnkgcmVwbGFjaW5nIHRoZSBjYWxsIHdpdGgKKysgKiBzdWNoIGEgdHVwbGUsIHdlIGxldCBvdXRw dXQgUHJvaidzIGlkZWFsaXphdGlvbiBwaWNrIHRoZSBjb3JyZXNwb25kaW5nIGlucHV0IG9mIHRo ZQorKyAqIHB1cmUgY2FsbCwgc28ganVtcGluZyBvdmVyIGl0LCBhbmQgZWZmZWN0aXZlbHksIHJl bW92aW5nIHRoZSBjYWxsIGZyb20gdGhlIGdyYXBoLgorKyAqIFRoaXMgYXZvaWRzIGRvaW5nIHRo ZSBncmFwaCBzdXJnZXJ5IG1hbnVhbGx5LCBidXQgbGVhdmVzIHRoYXQgdG8gSUdWTgorKyAqIHRo YXQgaXMgc3BlY2lhbGl6ZWQgZm9yIGRvaW5nIHRoYXQgcmlnaHQuIFdlIG5lZWQgYWxzbyB0dXBs ZSBjb21wb25lbnRzIGZvciBvdXRwdXQKKysgKiB2YWx1ZXMgb2YgdGhlIGZ1bmN0aW9uIHRvIHJl c3BlY3QgdGhlIHJldHVybiBhcml0eSwgYW5kIGluIGNhc2UgdGhlcmUgaXMgYSBwcm9qZWN0aW9u CisrICogdGhhdCB3b3VsZCBwaWNrIGFuIG91dHB1dCAod2hpY2ggc2hvdWxkbid0IGhhcHBlbiBh dCB0aGUgbW9tZW50KS4KKysgKi8KKytUdXBsZU5vZGUqIENhbGxMZWFmUHVyZU5vZGU6Om1ha2Vf dHVwbGVfb2ZfaW5wdXRfc3RhdGVfYW5kX3RvcF9yZXR1cm5fdmFsdWVzKGNvbnN0IENvbXBpbGUq IEMpIGNvbnN0IHsKKysgIC8vIFRyYW5zcGFyZW50bHkgcHJvcGFnYXRlIGlucHV0IHN0YXRlIGJ1 dCBwYXJhbWV0ZXJzCisrICBUdXBsZU5vZGUqIHR1cGxlID0gVHVwbGVOb2RlOjptYWtlKAorKyAg ICAgIHRmKCktPnJhbmdlKCksCisrICAgICAgaW4oVHlwZUZ1bmM6OkNvbnRyb2wpLAorKyAgICAg IGluKFR5cGVGdW5jOjpJX08pLAorKyAgICAgIGluKFR5cGVGdW5jOjpNZW1vcnkpLAorKyAgICAg IGluKFR5cGVGdW5jOjpGcmFtZVB0ciksCisrICAgICAgaW4oVHlwZUZ1bmM6OlJldHVybkFkcikp OworKworKyAgLy8gQW5kIGFkZCBUT1BzIGZvciB0aGUgcmV0dXJuIHZhbHVlcworKyAgZm9yICh1 aW50IGkgPSBUeXBlRnVuYzo6UGFybXM7IGkgPCB0ZigpLT5yYW5nZSgpLT5jbnQoKTsgaSsrKSB7 CisrICAgIHR1cGxlLT5zZXRfcmVxKGksIEMtPnRvcCgpKTsKKysgIH0KKysKKysgIHJldHVybiB0 dXBsZTsKKyt9CisrCisrTm9kZSogQ2FsbExlYWZQdXJlTm9kZTo6SWRlYWwoUGhhc2VHVk4qIHBo YXNlLCBib29sIGNhbl9yZXNoYXBlKSB7CisrICBpZiAoaXNfZGVhZCgpKSB7CisrICAgIHJldHVy biBudWxscHRyOworKyAgfQorKworKyAgLy8gV2UgbmVlZCB0byB3YWl0IHVudGlsIElHVk4gYmVj YXVzZSBkdXJpbmcgcGFyc2luZywgdXNhZ2VzIG1pZ2h0IHN0aWxsIGJlIG1pc3NpbmcKKysgIC8v IGFuZCB3ZSB3b3VsZCByZW1vdmUgdGhlIGNhbGwgaW1tZWRpYXRlbHkuCisrICBpZiAoY2FuX3Jl c2hhcGUgJiYgaXNfdW51c2VkKCkpIHsKKysgICAgLy8gVGhlIHJlc3VsdCBpcyBub3QgdXNlZC4g V2UgcmVtb3ZlIHRoZSBjYWxsIGJ5IHJlcGxhY2luZyBpdCB3aXRoIGEgdHVwbGUsIHRoYXQKKysg ICAgLy8gaXMgbGF0ZXIgZGlzaW50ZWdyYXRlZCBieSB0aGUgcHJvamVjdGlvbnMuCisrICAgIHJl dHVybiBtYWtlX3R1cGxlX29mX2lucHV0X3N0YXRlX2FuZF90b3BfcmV0dXJuX3ZhbHVlcyhwaGFz ZS0+Qyk7CisrICB9CisrCisrICByZXR1cm4gQ2FsbFJ1bnRpbWVOb2RlOjpJZGVhbChwaGFzZSwg Y2FuX3Jlc2hhcGUpOworK30KKysKKyAjaWZuZGVmIFBST0RVQ1QKKyB2b2lkIENhbGxMZWFmTm9k ZTo6ZHVtcF9zcGVjKG91dHB1dFN0cmVhbSAqc3QpIGNvbnN0IHsKKyAgIHN0LT5wcmludCgiIyAi KTsKK2RpZmYgLS1naXQgYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NhbGxub2RlLmhwcCBiL3Ny Yy9ob3RzcG90L3NoYXJlL29wdG8vY2FsbG5vZGUuaHBwCitpbmRleCAyMTNmYmRhNGU4OS4uMjQ2 MmE4ODE0M2YgMTAwNjQ0CistLS0gYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NhbGxub2RlLmhw cAorKysrIGIvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jYWxsbm9kZS5ocHAKK0BAIC03NTIsNyAr NzUyLDcgQEAgY2xhc3MgQ2FsbE5vZGUgOiBwdWJsaWMgU2FmZVBvaW50Tm9kZSB7CisgICAvLyBD b2xsZWN0IGFsbCB0aGUgaW50ZXJlc3RpbmcgZWRnZXMgZnJvbSBhIGNhbGwgZm9yIHVzZSBpbgor ICAgLy8gcmVwbGFjaW5nIHRoZSBjYWxsIGJ5IHNvbWV0aGluZyBlbHNlLiAgVXNlZCBieSBtYWNy byBleHBhbnNpb24KKyAgIC8vIGFuZCB0aGUgbGF0ZSBpbmxpbmluZyBzdXBwb3J0LgorLSAgdm9p ZCBleHRyYWN0X3Byb2plY3Rpb25zKENhbGxQcm9qZWN0aW9ucyogcHJvanMsIGJvb2wgc2VwYXJh dGVfaW9fcHJvaiwgYm9vbCBkb19hc3NlcnRzID0gdHJ1ZSk7CisrICB2b2lkIGV4dHJhY3RfcHJv amVjdGlvbnMoQ2FsbFByb2plY3Rpb25zKiBwcm9qcywgYm9vbCBzZXBhcmF0ZV9pb19wcm9qLCBi b29sIGRvX2Fzc2VydHMgPSB0cnVlKSBjb25zdDsKKyAKKyAgIHZpcnR1YWwgdWludCBtYXRjaF9l ZGdlKHVpbnQgaWR4KSBjb25zdDsKKyAKK0BAIC05MjgsNiArOTI4LDMzIEBAIGNsYXNzIENhbGxM ZWFmTm9kZSA6IHB1YmxpYyBDYWxsUnVudGltZU5vZGUgeworICNlbmRpZgorIH07CisgCisrLyog QSBwdXJlIGZ1bmN0aW9uIGNhbGwsIHRoZXkgYXJlIGFzc3VtZWQgbm90IHRvIGJlIHNhZmVwb2lu dHMsIG5vdCB0byByZWFkIG9yIHdyaXRlIG1lbW9yeSwKKysgKiBoYXZlIG5vIGV4Y2VwdGlvbi4u LiBUaGV5IGp1c3QgdGFrZSBwYXJhbWV0ZXJzLCByZXR1cm4gYSB2YWx1ZSB3aXRob3V0IHNpZGUg ZWZmZWN0LiBJdCBpcworKyAqIGFsd2F5cyBjb3JyZWN0IHRvIGNyZWF0ZSBzb21lLCBvciByZW1v dmUgdGhlbSwgaWYgdGhlIHJlc3VsdCBpcyBub3QgdXNlZC4KKysgKgorKyAqIFRoZXkgc3RpbGwg aGF2ZSBjb250cm9sIGlucHV0IHRvIGFsbG93IGVhc3kgbG93ZXJpbmcgaW50byBvdGhlciBraW5k IG9mIGNhbGxzIHRoYXQgcmVxdWlyZQorKyAqIGEgY29udHJvbCwgYnV0IHRoaXMgaXMgbW9yZSBh IHRlY2huaWNhbCB0aGFuIGEgbW9yYWwgY29uc3RyYWludC4KKysgKgorKyAqIFB1cmUgY2FsbHMg bXVzdCBoYXZlIG9ubHkgY29udHJvbCBhbmQgZGF0YSBpbnB1dCBhbmQgb3V0cHV0OiBJL08sIE1l bW9yeSBhbmQgc28gb24gbXVzdCBiZSB0b3AuCisrICogTmV2ZXJ0aGVsZXNzLCBwdXJlIGNhbGxz IGNhbiB0eXBpY2FsbHkgYmUgZXhwZW5zaXZlIG1hdGggb3BlcmF0aW9ucyBzbyBjYXJlIG11c3Qg YmUgdGFrZW4KKysgKiB3aGVuIGxldHRpbmcgdGhlIG5vZGUgZmxvYXQuCisrICovCisrY2xhc3Mg Q2FsbExlYWZQdXJlTm9kZSA6IHB1YmxpYyBDYWxsTGVhZk5vZGUgeworK3Byb3RlY3RlZDoKKysg IGJvb2wgaXNfdW51c2VkKCkgY29uc3Q7CisrICBib29sIGlzX2RlYWQoKSBjb25zdDsKKysgIFR1 cGxlTm9kZSogbWFrZV90dXBsZV9vZl9pbnB1dF9zdGF0ZV9hbmRfdG9wX3JldHVybl92YWx1ZXMo Y29uc3QgQ29tcGlsZSogQykgY29uc3Q7CisrCisrcHVibGljOgorKyAgQ2FsbExlYWZQdXJlTm9k ZShjb25zdCBUeXBlRnVuYyogdGYsIGFkZHJlc3MgYWRkciwgY29uc3QgY2hhciogbmFtZSwKKysg ICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZVB0ciogYWRyX3R5cGUpCisrICAgICAgOiBDYWxs TGVhZk5vZGUodGYsIGFkZHIsIG5hbWUsIGFkcl90eXBlKSB7CisrICAgIGluaXRfY2xhc3NfaWQo Q2xhc3NfQ2FsbExlYWZQdXJlKTsKKysgIH0KKysgIGludCBPcGNvZGUoKSBjb25zdCBvdmVycmlk ZTsKKysgIE5vZGUqIElkZWFsKFBoYXNlR1ZOKiBwaGFzZSwgYm9vbCBjYW5fcmVzaGFwZSkgb3Zl cnJpZGU7CisrfTsKKysKKyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUNhbGxMZWFm Tm9GUE5vZGUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgLy8gQ2FsbExlYWZOb2Rl LCBub3QgdXNpbmcgZmxvYXRpbmcgcG9pbnQgb3IgdXNpbmcgaXQgaW4gdGhlIHNhbWUgbWFubmVy IGFzCisgLy8gdGhlIGdlbmVyYXRlZCBjb2RlCitkaWZmIC0tZ2l0IGEvc3JjL2hvdHNwb3Qvc2hh cmUvb3B0by9jbGFzc2VzLmhwcCBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vY2xhc3Nlcy5ocHAK K2luZGV4IGJjMjU5ZWVkMmQxLi41ODdkNWZhZDhmMiAxMDA2NDQKKy0tLSBhL3NyYy9ob3RzcG90 L3NoYXJlL29wdG8vY2xhc3Nlcy5ocHAKKysrKyBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vY2xh c3Nlcy5ocHAKK0BAIC02MSw2ICs2MSw3IEBAIG1hY3JvKENhbGxEeW5hbWljSmF2YSkKKyBtYWNy byhDYWxsSmF2YSkKKyBtYWNybyhDYWxsTGVhZikKKyBtYWNybyhDYWxsTGVhZk5vRlApCisrbWFj cm8oQ2FsbExlYWZQdXJlKQorIG1hY3JvKENhbGxMZWFmVmVjdG9yKQorIG1hY3JvKENhbGxSdW50 aW1lKQorIG1hY3JvKENhbGxTdGF0aWNKYXZhKQorQEAgLTM3Miw2ICszNzMsNyBAQCBtYWNybyhT dWJJKQorIG1hY3JvKFN1YkwpCisgbWFjcm8oVGFpbENhbGwpCisgbWFjcm8oVGFpbEp1bXApCisr bWFjcm8oVHVwbGUpCisgbWFjcm8oTWFjcm9Mb2dpY1YpCisgbWFjcm8oVGhyZWFkTG9jYWwpCisg bWFjcm8oVW5sb2NrKQorZGlmZiAtLWdpdCBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vY29tcGls ZS5jcHAgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NvbXBpbGUuY3BwCitpbmRleCAyYjk1NmRj YjVkOC4uOWY3ZjQ4YjlhMzQgMTAwNjQ0CistLS0gYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2Nv bXBpbGUuY3BwCisrKysgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NvbXBpbGUuY3BwCitAQCAt MzI5OCw2ICszMjk4LDI1IEBAIHZvaWQgQ29tcGlsZTo6ZmluYWxfZ3JhcGhfcmVzaGFwaW5nX21h aW5fc3dpdGNoKE5vZGUqIG4sIEZpbmFsX1Jlc2hhcGVfQ291bnRzJiBmCisgICBjYXNlIE9wX09w YXF1ZTE6ICAgICAgICAgICAgICAvLyBSZW1vdmUgT3BhcXVlIE5vZGVzIGJlZm9yZSBtYXRjaGlu ZworICAgICBuLT5zdWJzdW1lX2J5KG4tPmluKDEpLCB0aGlzKTsKKyAgICAgYnJlYWs7CisrICBj YXNlIE9wX0NhbGxMZWFmUHVyZTogeworKyAgICAvLyBJZiB0aGUgcHVyZSBjYWxsIGlzIG5vdCBz dXBwb3J0ZWQsIHRoZW4gbG93ZXIgdG8gYSBDYWxsTGVhZi4KKysgICAgaWYgKCFNYXRjaGVyOjpt YXRjaF9ydWxlX3N1cHBvcnRlZChPcF9DYWxsTGVhZlB1cmUpKSB7CisrICAgICAgQ2FsbE5vZGUq IGNhbGwgPSBuLT5hc19DYWxsKCk7CisrICAgICAgQ2FsbE5vZGUqIG5ld19jYWxsID0gbmV3IENh bGxMZWFmTm9kZShjYWxsLT50ZigpLCBjYWxsLT5lbnRyeV9wb2ludCgpLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbC0+X25hbWUsIFR5cGVSYXdQdHI6 OkJPVFRPTSk7CisrICAgICAgbmV3X2NhbGwtPmluaXRfcmVxKFR5cGVGdW5jOjpDb250cm9sLCBj YWxsLT5pbihUeXBlRnVuYzo6Q29udHJvbCkpOworKyAgICAgIG5ld19jYWxsLT5pbml0X3JlcShU eXBlRnVuYzo6SV9PLCBDLT50b3AoKSk7CisrICAgICAgbmV3X2NhbGwtPmluaXRfcmVxKFR5cGVG dW5jOjpNZW1vcnksIEMtPnRvcCgpKTsKKysgICAgICBuZXdfY2FsbC0+aW5pdF9yZXEoVHlwZUZ1 bmM6OlJldHVybkFkciwgQy0+dG9wKCkpOworKyAgICAgIG5ld19jYWxsLT5pbml0X3JlcShUeXBl RnVuYzo6RnJhbWVQdHIsIEMtPnRvcCgpKTsKKysgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g VHlwZUZ1bmM6OlBhcm1zOyBpIDwgY2FsbC0+dGYoKS0+ZG9tYWluKCktPmNudCgpOyBpKyspIHsK KysgICAgICAgIG5ld19jYWxsLT5pbml0X3JlcShpLCBjYWxsLT5pbihpKSk7CisrICAgICAgfQor KyAgICAgIG4tPnN1YnN1bWVfYnkobmV3X2NhbGwsIHRoaXMpOworKyAgICB9CisrICAgIGZyYy5p bmNfY2FsbF9jb3VudCgpOworKyAgICBicmVhazsKKysgIH0KKyAgIGNhc2UgT3BfQ2FsbFN0YXRp Y0phdmE6CisgICBjYXNlIE9wX0NhbGxKYXZhOgorICAgY2FzZSBPcF9DYWxsRHluYW1pY0phdmE6 CitkaWZmIC0tZ2l0IGEvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9kaXZub2RlLmNwcCBiL3NyYy9o b3RzcG90L3NoYXJlL29wdG8vZGl2bm9kZS5jcHAKK2luZGV4IGE3MDE5NDI3NGE3Li41ZGQ4YmU4 NzdmZiAxMDA2NDQKKy0tLSBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vZGl2bm9kZS5jcHAKKysr KyBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vZGl2bm9kZS5jcHAKK0BAIC00MiwxOSArNDIsMTkg QEAKKyAKKyAjaW5jbHVkZSA8bWF0aC5oPgorIAorLU1vZEZsb2F0aW5nTm9kZTo6TW9kRmxvYXRp bmdOb2RlKENvbXBpbGUqIEMsIGNvbnN0IFR5cGVGdW5jKiB0ZiwgY29uc3QgY2hhciogbmFtZSkg OiBDYWxsTGVhZk5vZGUodGYsIG51bGxwdHIsIG5hbWUsIFR5cGVSYXdQdHI6OkJPVFRPTSkgewor K01vZEZsb2F0aW5nTm9kZTo6TW9kRmxvYXRpbmdOb2RlKENvbXBpbGUqIEMsIGNvbnN0IFR5cGVG dW5jKiB0ZiwgYWRkcmVzcyBhZGRyLCBjb25zdCBjaGFyKiBuYW1lKSA6IENhbGxMZWFmUHVyZU5v ZGUodGYsIGFkZHIsIG5hbWUsIFR5cGVSYXdQdHI6OkJPVFRPTSkgeworICAgYWRkX2ZsYWcoRmxh Z19pc19tYWNybyk7CisgICBDLT5hZGRfbWFjcm9fbm9kZSh0aGlzKTsKKyB9CisgCistTW9kRE5v ZGU6Ok1vZEROb2RlKENvbXBpbGUqIEMsIE5vZGUqIGEsIE5vZGUqIGIpIDogTW9kRmxvYXRpbmdO b2RlKEMsIE9wdG9SdW50aW1lOjpNYXRoX0REX0RfVHlwZSgpLCAiZHJlbSIpIHsKKytNb2RETm9k ZTo6TW9kRE5vZGUoQ29tcGlsZSogQywgTm9kZSogYSwgTm9kZSogYikgOiBNb2RGbG9hdGluZ05v ZGUoQywgT3B0b1J1bnRpbWU6Ok1hdGhfRERfRF9UeXBlKCksIENBU1RfRlJPTV9GTl9QVFIoYWRk cmVzcywgU2hhcmVkUnVudGltZTo6ZHJlbSksICJkcmVtIikgeworICAgaW5pdF9yZXEoVHlwZUZ1 bmM6OlBhcm1zICsgMCwgYSk7CisgICBpbml0X3JlcShUeXBlRnVuYzo6UGFybXMgKyAxLCBDLT50 b3AoKSk7CisgICBpbml0X3JlcShUeXBlRnVuYzo6UGFybXMgKyAyLCBiKTsKKyAgIGluaXRfcmVx KFR5cGVGdW5jOjpQYXJtcyArIDMsIEMtPnRvcCgpKTsKKyB9CisgCistTW9kRk5vZGU6Ok1vZEZO b2RlKENvbXBpbGUqIEMsIE5vZGUqIGEsIE5vZGUqIGIpIDogTW9kRmxvYXRpbmdOb2RlKEMsIE9w dG9SdW50aW1lOjptb2RmX1R5cGUoKSwgImZyZW0iKSB7CisrTW9kRk5vZGU6Ok1vZEZOb2RlKENv bXBpbGUqIEMsIE5vZGUqIGEsIE5vZGUqIGIpIDogTW9kRmxvYXRpbmdOb2RlKEMsIE9wdG9SdW50 aW1lOjptb2RmX1R5cGUoKSwgQ0FTVF9GUk9NX0ZOX1BUUihhZGRyZXNzLCBTaGFyZWRSdW50aW1l OjpmcmVtKSwgImZyZW0iKSB7CisgICBpbml0X3JlcShUeXBlRnVuYzo6UGFybXMgKyAwLCBhKTsK KyAgIGluaXRfcmVxKFR5cGVGdW5jOjpQYXJtcyArIDEsIGIpOworIH0KK0BAIC0xNTE2LDEzNyAr MTUxNiwxMDkgQEAgY29uc3QgVHlwZSogVU1vZExOb2RlOjpWYWx1ZShQaGFzZUdWTiogcGhhc2Up IGNvbnN0IHsKKyAgIHJldHVybiB1bnNpZ25lZF9tb2RfdmFsdWU8VHlwZUxvbmcsIGp1bG9uZywg amxvbmc+KHBoYXNlLCB0aGlzKTsKKyB9CisgCistTm9kZSogTW9kRk5vZGU6OklkZWFsKFBoYXNl R1ZOKiBwaGFzZSwgYm9vbCBjYW5fcmVzaGFwZSkgeworLSAgaWYgKCFjYW5fcmVzaGFwZSkgewor LSAgICByZXR1cm4gbnVsbHB0cjsKKy0gIH0KKy0gIFBoYXNlSXRlckdWTiogaWd2biA9IHBoYXNl LT5pc19JdGVyR1ZOKCk7CistCistICBib29sIHJlc3VsdF9pc191bnVzZWQgPSBwcm9qX291dF9v cl9udWxsKFR5cGVGdW5jOjpQYXJtcykgPT0gbnVsbHB0cjsKKy0gIGJvb2wgbm90X2RlYWQgPSBw cm9qX291dF9vcl9udWxsKFR5cGVGdW5jOjpDb250cm9sKSAhPSBudWxscHRyOworLSAgaWYgKHJl c3VsdF9pc191bnVzZWQgJiYgbm90X2RlYWQpIHsKKy0gICAgcmV0dXJuIHJlcGxhY2Vfd2l0aF9j b24oaWd2biwgVHlwZUY6Om1ha2UoMC4pKTsKKy0gIH0KKy0KKy0gIC8vIEVpdGhlciBpbnB1dCBp cyBUT1AgPT0+IHRoZSByZXN1bHQgaXMgVE9QCistICBjb25zdCBUeXBlKiB0MSA9IHBoYXNlLT50 eXBlKGRpdmlkZW5kKCkpOworLSAgY29uc3QgVHlwZSogdDIgPSBwaGFzZS0+dHlwZShkaXZpc29y KCkpOworLSAgaWYgKHQxID09IFR5cGU6OlRPUCB8fCB0MiA9PSBUeXBlOjpUT1ApIHsKKy0gICAg cmV0dXJuIHBoYXNlLT5DLT50b3AoKTsKKy0gIH0KKy0KKytjb25zdCBUeXBlKiBNb2RGTm9kZTo6 Z2V0X3Jlc3VsdF9pZl9jb25zdGFudChjb25zdCBUeXBlKiBkaXZpZGVuZCwgY29uc3QgVHlwZSog ZGl2aXNvcikgY29uc3QgeworICAgLy8gSWYgZWl0aGVyIG51bWJlciBpcyBub3QgYSBjb25zdGFu dCwgd2Uga25vdyBub3RoaW5nLgorLSAgaWYgKCh0MS0+YmFzZSgpICE9IFR5cGU6OkZsb2F0Q29u KSB8fCAodDItPmJhc2UoKSAhPSBUeXBlOjpGbG9hdENvbikpIHsKKysgIGlmICgoZGl2aWRlbmQt PmJhc2UoKSAhPSBUeXBlOjpGbG9hdENvbikgfHwgKGRpdmlzb3ItPmJhc2UoKSAhPSBUeXBlOjpG bG9hdENvbikpIHsKKyAgICAgcmV0dXJuIG51bGxwdHI7IC8vIG5vdGU6IHgleCBjYW4gYmUgZWl0 aGVyIE5hTiBvciAwCisgICB9CisgCistICBmbG9hdCBmMSA9IHQxLT5nZXRmKCk7CistICBmbG9h dCBmMiA9IHQyLT5nZXRmKCk7CistICBqaW50IHgxID0gamludF9jYXN0KGYxKTsgLy8gbm90ZTog ICooaW50KikmZjEsIG5vdCBqdXN0IChpbnQpZjEKKy0gIGppbnQgeDIgPSBqaW50X2Nhc3QoZjIp OworKyAgZmxvYXQgZGl2aWRlbmRfZiA9IGRpdmlkZW5kLT5nZXRmKCk7CisrICBmbG9hdCBkaXZp c29yX2YgPSBkaXZpc29yLT5nZXRmKCk7CisrICBqaW50IGRpdmlkZW5kX2kgPSBqaW50X2Nhc3Qo ZGl2aWRlbmRfZik7IC8vIG5vdGU6ICAqKGludCopJmYxLCBub3QganVzdCAoaW50KWYxCisrICBq aW50IGRpdmlzb3JfaSA9IGppbnRfY2FzdChkaXZpc29yX2YpOworIAorICAgLy8gSWYgZWl0aGVy IGlzIGEgTmFOLCByZXR1cm4gYW4gaW5wdXQgTmFOCistICBpZiAoZ19pc25hbihmMSkpIHsKKy0g ICAgcmV0dXJuIHJlcGxhY2Vfd2l0aF9jb24oaWd2biwgdDEpOworKyAgaWYgKGdfaXNuYW4oZGl2 aWRlbmRfZikpIHsKKysgICAgcmV0dXJuIGRpdmlkZW5kOworICAgfQorLSAgaWYgKGdfaXNuYW4o ZjIpKSB7CistICAgIHJldHVybiByZXBsYWNlX3dpdGhfY29uKGlndm4sIHQyKTsKKysgIGlmIChn X2lzbmFuKGRpdmlzb3JfZikpIHsKKysgICAgcmV0dXJuIGRpdmlzb3I7CisgICB9CisgCisgICAv LyBJZiBhbiBvcGVyYW5kIGlzIGluZmluaXR5IG9yIHRoZSBkaXZpc29yIGlzICsvLSB6ZXJvLCBw dW50LgorLSAgaWYgKCFnX2lzZmluaXRlKGYxKSB8fCAhZ19pc2Zpbml0ZShmMikgfHwgeDIgPT0g MCB8fCB4MiA9PSBtaW5famludCkgeworKyAgaWYgKCFnX2lzZmluaXRlKGRpdmlkZW5kX2YpIHx8 ICFnX2lzZmluaXRlKGRpdmlzb3JfZikgfHwgZGl2aXNvcl9pID09IDAgfHwgZGl2aXNvcl9pID09 IG1pbl9qaW50KSB7CisgICAgIHJldHVybiBudWxscHRyOworICAgfQorIAorICAgLy8gV2UgbXVz dCBiZSBtb2R1bG8naW5nIDIgZmxvYXQgY29uc3RhbnRzLgorICAgLy8gTWFrZSBzdXJlIHRoYXQg dGhlIHNpZ24gb2YgdGhlIGZtb2QgaXMgZXF1YWwgdG8gdGhlIHNpZ24gb2YgdGhlIGRpdmlkZW5k CistICBqaW50IHhyID0gamludF9jYXN0KGZtb2QoZjEsIGYyKSk7CistICBpZiAoKHgxIF4geHIp IDwgMCkgeworKyAgamludCB4ciA9IGppbnRfY2FzdChmbW9kKGRpdmlkZW5kX2YsIGRpdmlzb3Jf ZikpOworKyAgaWYgKChkaXZpZGVuZF9pIF4geHIpIDwgMCkgeworICAgICB4ciBePSBtaW5famlu dDsKKyAgIH0KKyAKKy0gIHJldHVybiByZXBsYWNlX3dpdGhfY29uKGlndm4sIFR5cGVGOjptYWtl KGpmbG9hdF9jYXN0KHhyKSkpOworKyAgcmV0dXJuIFR5cGVGOjptYWtlKGpmbG9hdF9jYXN0KHhy KSk7CisgfQorIAorLU5vZGUqIE1vZEROb2RlOjpJZGVhbChQaGFzZUdWTiogcGhhc2UsIGJvb2wg Y2FuX3Jlc2hhcGUpIHsKKy0gIGlmICghY2FuX3Jlc2hhcGUpIHsKKy0gICAgcmV0dXJuIG51bGxw dHI7CistICB9CistICBQaGFzZUl0ZXJHVk4qIGlndm4gPSBwaGFzZS0+aXNfSXRlckdWTigpOwor LQorLSAgYm9vbCByZXN1bHRfaXNfdW51c2VkID0gcHJval9vdXRfb3JfbnVsbChUeXBlRnVuYzo6 UGFybXMpID09IG51bGxwdHI7CistICBib29sIG5vdF9kZWFkID0gcHJval9vdXRfb3JfbnVsbChU eXBlRnVuYzo6Q29udHJvbCkgIT0gbnVsbHB0cjsKKy0gIGlmIChyZXN1bHRfaXNfdW51c2VkICYm IG5vdF9kZWFkKSB7CistICAgIHJldHVybiByZXBsYWNlX3dpdGhfY29uKGlndm4sIFR5cGVEOjpt YWtlKDAuKSk7CistICB9CistCistICAvLyBFaXRoZXIgaW5wdXQgaXMgVE9QID09PiB0aGUgcmVz dWx0IGlzIFRPUAorLSAgY29uc3QgVHlwZSogdDEgPSBwaGFzZS0+dHlwZShkaXZpZGVuZCgpKTsK Ky0gIGNvbnN0IFR5cGUqIHQyID0gcGhhc2UtPnR5cGUoZGl2aXNvcigpKTsKKy0gIGlmICh0MSA9 PSBUeXBlOjpUT1AgfHwgdDIgPT0gVHlwZTo6VE9QKSB7CistICAgIHJldHVybiBudWxscHRyOwor LSAgfQorLQorK2NvbnN0IFR5cGUqIE1vZEROb2RlOjpnZXRfcmVzdWx0X2lmX2NvbnN0YW50KGNv bnN0IFR5cGUqIGRpdmlkZW5kLCBjb25zdCBUeXBlKiBkaXZpc29yKSBjb25zdCB7CisgICAvLyBJ ZiBlaXRoZXIgbnVtYmVyIGlzIG5vdCBhIGNvbnN0YW50LCB3ZSBrbm93IG5vdGhpbmcuCistICBp ZiAoKHQxLT5iYXNlKCkgIT0gVHlwZTo6RG91YmxlQ29uKSB8fCAodDItPmJhc2UoKSAhPSBUeXBl OjpEb3VibGVDb24pKSB7CisrICBpZiAoKGRpdmlkZW5kLT5iYXNlKCkgIT0gVHlwZTo6RG91Ymxl Q29uKSB8fCAoZGl2aXNvci0+YmFzZSgpICE9IFR5cGU6OkRvdWJsZUNvbikpIHsKKyAgICAgcmV0 dXJuIG51bGxwdHI7IC8vIG5vdGU6IHgleCBjYW4gYmUgZWl0aGVyIE5hTiBvciAwCisgICB9Cisg CistICBkb3VibGUgZjEgPSB0MS0+Z2V0ZCgpOworLSAgZG91YmxlIGYyID0gdDItPmdldGQoKTsK Ky0gIGpsb25nIHgxID0gamxvbmdfY2FzdChmMSk7IC8vIG5vdGU6ICAqKGxvbmcqKSZmMSwgbm90 IGp1c3QgKGxvbmcpZjEKKy0gIGpsb25nIHgyID0gamxvbmdfY2FzdChmMik7CisrICBkb3VibGUg ZGl2aWRlbmRfZCA9IGRpdmlkZW5kLT5nZXRkKCk7CisrICBkb3VibGUgZGl2aXNvcl9kID0gZGl2 aXNvci0+Z2V0ZCgpOworKyAgamxvbmcgZGl2aWRlbmRfbCA9IGpsb25nX2Nhc3QoZGl2aWRlbmRf ZCk7IC8vIG5vdGU6ICAqKGxvbmcqKSZmMSwgbm90IGp1c3QgKGxvbmcpZjEKKysgIGpsb25nIGRp dmlzb3JfbCA9IGpsb25nX2Nhc3QoZGl2aXNvcl9kKTsKKyAKKyAgIC8vIElmIGVpdGhlciBpcyBh IE5hTiwgcmV0dXJuIGFuIGlucHV0IE5hTgorLSAgaWYgKGdfaXNuYW4oZjEpKSB7CistICAgIHJl dHVybiByZXBsYWNlX3dpdGhfY29uKGlndm4sIHQxKTsKKysgIGlmIChnX2lzbmFuKGRpdmlkZW5k X2QpKSB7CisrICAgIHJldHVybiBkaXZpZGVuZDsKKyAgIH0KKy0gIGlmIChnX2lzbmFuKGYyKSkg eworLSAgICByZXR1cm4gcmVwbGFjZV93aXRoX2NvbihpZ3ZuLCB0Mik7CisrICBpZiAoZ19pc25h bihkaXZpc29yX2QpKSB7CisrICAgIHJldHVybiBkaXZpc29yOworICAgfQorIAorICAgLy8gSWYg YW4gb3BlcmFuZCBpcyBpbmZpbml0eSBvciB0aGUgZGl2aXNvciBpcyArLy0gemVybywgcHVudC4K Ky0gIGlmICghZ19pc2Zpbml0ZShmMSkgfHwgIWdfaXNmaW5pdGUoZjIpIHx8IHgyID09IDAgfHwg eDIgPT0gbWluX2psb25nKSB7CisrICBpZiAoIWdfaXNmaW5pdGUoZGl2aWRlbmRfZCkgfHwgIWdf aXNmaW5pdGUoZGl2aXNvcl9kKSB8fCBkaXZpc29yX2wgPT0gMCB8fCBkaXZpc29yX2wgPT0gbWlu X2psb25nKSB7CisgICAgIHJldHVybiBudWxscHRyOworICAgfQorIAorICAgLy8gV2UgbXVzdCBi ZSBtb2R1bG8naW5nIDIgZG91YmxlIGNvbnN0YW50cy4KKyAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRo ZSBzaWduIG9mIHRoZSBmbW9kIGlzIGVxdWFsIHRvIHRoZSBzaWduIG9mIHRoZSBkaXZpZGVuZAor LSAgamxvbmcgeHIgPSBqbG9uZ19jYXN0KGZtb2QoZjEsIGYyKSk7CistICBpZiAoKHgxIF4geHIp IDwgMCkgeworKyAgamxvbmcgeHIgPSBqbG9uZ19jYXN0KGZtb2QoZGl2aWRlbmRfZCwgZGl2aXNv cl9kKSk7CisrICBpZiAoKGRpdmlkZW5kX2wgXiB4cikgPCAwKSB7CisgICAgIHhyIF49IG1pbl9q bG9uZzsKKyAgIH0KKyAKKy0gIHJldHVybiByZXBsYWNlX3dpdGhfY29uKGlndm4sIFR5cGVEOjpt YWtlKGpkb3VibGVfY2FzdCh4cikpKTsKKysgIHJldHVybiBUeXBlRDo6bWFrZShqZG91YmxlX2Nh c3QoeHIpKTsKKyB9CisgCistTm9kZSogTW9kRmxvYXRpbmdOb2RlOjpyZXBsYWNlX3dpdGhfY29u KFBoYXNlSXRlckdWTiogcGhhc2UsIGNvbnN0IFR5cGUqIGNvbikgeworLSAgQ29tcGlsZSogQyA9 IHBoYXNlLT5DOworLSAgTm9kZSogY29uX25vZGUgPSBwaGFzZS0+bWFrZWNvbihjb24pOworLSAg Q2FsbFByb2plY3Rpb25zIHByb2pzOworLSAgZXh0cmFjdF9wcm9qZWN0aW9ucygmcHJvanMsIGZh bHNlLCBmYWxzZSk7CistICBwaGFzZS0+cmVwbGFjZV9ub2RlKHByb2pzLmZhbGx0aHJvdWdoX3By b2osIGluKFR5cGVGdW5jOjpDb250cm9sKSk7CistICBpZiAocHJvanMuZmFsbHRocm91Z2hfY2F0 Y2hwcm9qICE9IG51bGxwdHIpIHsKKy0gICAgcGhhc2UtPnJlcGxhY2Vfbm9kZShwcm9qcy5mYWxs dGhyb3VnaF9jYXRjaHByb2osIGluKFR5cGVGdW5jOjpDb250cm9sKSk7CistICB9CistICBpZiAo cHJvanMuZmFsbHRocm91Z2hfbWVtcHJvaiAhPSBudWxscHRyKSB7CistICAgIHBoYXNlLT5yZXBs YWNlX25vZGUocHJvanMuZmFsbHRocm91Z2hfbWVtcHJvaiwgaW4oVHlwZUZ1bmM6Ok1lbW9yeSkp OworLSAgfQorLSAgaWYgKHByb2pzLmNhdGNoYWxsX21lbXByb2ogIT0gbnVsbHB0cikgeworLSAg ICBwaGFzZS0+cmVwbGFjZV9ub2RlKHByb2pzLmNhdGNoYWxsX21lbXByb2osIEMtPnRvcCgpKTsK Ky0gIH0KKy0gIGlmIChwcm9qcy5mYWxsdGhyb3VnaF9pb3Byb2ogIT0gbnVsbHB0cikgeworLSAg ICBwaGFzZS0+cmVwbGFjZV9ub2RlKHByb2pzLmZhbGx0aHJvdWdoX2lvcHJvaiwgaW4oVHlwZUZ1 bmM6OklfTykpOworLSAgfQorLSAgYXNzZXJ0KHByb2pzLmNhdGNoYWxsX2lvcHJvaiA9PSBudWxs cHRyLCAibm8gZXhjZXB0aW9ucyBmcm9tIGZsb2F0aW5nIG1vZCIpOworLSAgYXNzZXJ0KHByb2pz LmNhdGNoYWxsX2NhdGNocHJvaiA9PSBudWxscHRyLCAibm8gZXhjZXB0aW9ucyBmcm9tIGZsb2F0 aW5nIG1vZCIpOworLSAgaWYgKHByb2pzLnJlc3Byb2ogIT0gbnVsbHB0cikgeworLSAgICBwaGFz ZS0+cmVwbGFjZV9ub2RlKHByb2pzLnJlc3Byb2osIGNvbl9ub2RlKTsKKytOb2RlKiBNb2RGbG9h dGluZ05vZGU6OklkZWFsKFBoYXNlR1ZOKiBwaGFzZSwgYm9vbCBjYW5fcmVzaGFwZSkgeworKyAg aWYgKGNhbl9yZXNoYXBlKSB7CisrICAgIFBoYXNlSXRlckdWTiogaWd2biA9IHBoYXNlLT5pc19J dGVyR1ZOKCk7CisrCisrICAgIC8vIEVpdGhlciBpbnB1dCBpcyBUT1AgPT0+IHRoZSByZXN1bHQg aXMgVE9QCisrICAgIGNvbnN0IFR5cGUqIGRpdmlkZW5kX3R5cGUgPSBwaGFzZS0+dHlwZShkaXZp ZGVuZCgpKTsKKysgICAgY29uc3QgVHlwZSogZGl2aXNvcl90eXBlID0gcGhhc2UtPnR5cGUoZGl2 aXNvcigpKTsKKysgICAgaWYgKGRpdmlkZW5kX3R5cGUgPT0gVHlwZTo6VE9QIHx8IGRpdmlzb3Jf dHlwZSA9PSBUeXBlOjpUT1ApIHsKKysgICAgICByZXR1cm4gcGhhc2UtPkMtPnRvcCgpOworKyAg ICB9CisrICAgIGNvbnN0IFR5cGUqIGNvbnN0YW50X3Jlc3VsdCA9IGdldF9yZXN1bHRfaWZfY29u c3RhbnQoZGl2aWRlbmRfdHlwZSwgZGl2aXNvcl90eXBlKTsKKysgICAgaWYgKGNvbnN0YW50X3Jl c3VsdCAhPSBudWxscHRyKSB7CisrICAgICAgcmV0dXJuIG1ha2VfdHVwbGVfb2ZfaW5wdXRfc3Rh dGVfYW5kX2NvbnN0YW50X3Jlc3VsdChpZ3ZuLCBjb25zdGFudF9yZXN1bHQpOworKyAgICB9Cisg ICB9CistICBwaGFzZS0+cmVwbGFjZV9ub2RlKHRoaXMsIEMtPnRvcCgpKTsKKy0gIEMtPnJlbW92 ZV9tYWNyb19ub2RlKHRoaXMpOworLSAgZGlzY29ubmVjdF9pbnB1dHMoQyk7CistICByZXR1cm4g bnVsbHB0cjsKKysKKysgIHJldHVybiBDYWxsTGVhZlB1cmVOb2RlOjpJZGVhbChwaGFzZSwgY2Fu X3Jlc2hhcGUpOworK30KKysKKysvKiBHaXZlIGEgdHVwbGUgbm9kZSBmb3IgOjpJZGVhbCB0byBy ZXR1cm4sIG1hZGUgb2YgdGhlIGlucHV0IHN0YXRlIChjb250cm9sIHRvIHJldHVybiBhZGRyKQor KyAqIGFuZCB0aGUgZ2l2ZW4gY29uc3RhbnQgcmVzdWx0LiBJZGVhbGl6YXRpb24gb2YgcHJvamVj dGlvbnMgd2lsbCBtYWtlIHN1cmUgdG8gdHJhbnNwYXJlbnRseQorKyAqIHByb3BhZ2F0ZSB0aGUg aW5wdXQgc3RhdGUgYW5kIHJlcGxhY2UgdGhlIHJlc3VsdCBieSB0aGUgc2FpZCBjb25zdGFudC4K KysgKi8KKytUdXBsZU5vZGUqIE1vZEZsb2F0aW5nTm9kZTo6bWFrZV90dXBsZV9vZl9pbnB1dF9z dGF0ZV9hbmRfY29uc3RhbnRfcmVzdWx0KFBoYXNlSXRlckdWTiogcGhhc2UsIGNvbnN0IFR5cGUq IGNvbikgY29uc3QgeworKyAgTm9kZSogY29uX25vZGUgPSBwaGFzZS0+bWFrZWNvbihjb24pOwor KyAgVHVwbGVOb2RlKiB0dXBsZSA9IFR1cGxlTm9kZTo6bWFrZSgKKysgICAgICB0ZigpLT5yYW5n ZSgpLAorKyAgICAgIGluKFR5cGVGdW5jOjpDb250cm9sKSwKKysgICAgICBpbihUeXBlRnVuYzo6 SV9PKSwKKysgICAgICBpbihUeXBlRnVuYzo6TWVtb3J5KSwKKysgICAgICBpbihUeXBlRnVuYzo6 RnJhbWVQdHIpLAorKyAgICAgIGluKFR5cGVGdW5jOjpSZXR1cm5BZHIpLAorKyAgICAgIGNvbl9u b2RlKTsKKysKKysgIHJldHVybiB0dXBsZTsKKyB9CisgCisgLy89PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorZGlmZiAtLWdpdCBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vZGl2bm9kZS5ocHAgYi9zcmMv aG90c3BvdC9zaGFyZS9vcHRvL2Rpdm5vZGUuaHBwCitpbmRleCAxMjdlMjQzMWIwYi4uYjEzNDYw Yzg5ZjUgMTAwNjQ0CistLS0gYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2Rpdm5vZGUuaHBwCisr KysgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2Rpdm5vZGUuaHBwCitAQCAtMTU2LDQwICsxNTYs NDUgQEAgY2xhc3MgTW9kTE5vZGUgOiBwdWJsaWMgTm9kZSB7CisgfTsKKyAKKyAvLyBCYXNlIGNs YXNzIGZvciBmbG9hdCBhbmQgZG91YmxlIG1vZHVsdXMKKy1jbGFzcyBNb2RGbG9hdGluZ05vZGUg OiBwdWJsaWMgQ2FsbExlYWZOb2RlIHsKKytjbGFzcyBNb2RGbG9hdGluZ05vZGUgOiBwdWJsaWMg Q2FsbExlYWZQdXJlTm9kZSB7CisrICBUdXBsZU5vZGUqIG1ha2VfdHVwbGVfb2ZfaW5wdXRfc3Rh dGVfYW5kX2NvbnN0YW50X3Jlc3VsdChQaGFzZUl0ZXJHVk4qIHBoYXNlLCBjb25zdCBUeXBlKiBj b24pIGNvbnN0OworKworIHByb3RlY3RlZDoKKy0gIE5vZGUqIHJlcGxhY2Vfd2l0aF9jb24oUGhh c2VJdGVyR1ZOKiBwaGFzZSwgY29uc3QgVHlwZSogY29uKTsKKysgIHZpcnR1YWwgTm9kZSogZGl2 aWRlbmQoKSBjb25zdCA9IDA7CisrICB2aXJ0dWFsIE5vZGUqIGRpdmlzb3IoKSBjb25zdCA9IDA7 CisrICB2aXJ0dWFsIGNvbnN0IFR5cGUqIGdldF9yZXN1bHRfaWZfY29uc3RhbnQoY29uc3QgVHlw ZSogZGl2aWRlbmQsIGNvbnN0IFR5cGUqIGRpdmlzb3IpIGNvbnN0ID0gMDsKKyAKKyBwdWJsaWM6 CistICBNb2RGbG9hdGluZ05vZGUoQ29tcGlsZSogQywgY29uc3QgVHlwZUZ1bmMqIHRmLCBjb25z dCBjaGFyICpuYW1lKTsKKysgIE1vZEZsb2F0aW5nTm9kZShDb21waWxlKiBDLCBjb25zdCBUeXBl RnVuYyogdGYsIGFkZHJlc3MgYWRkciwgY29uc3QgY2hhciogbmFtZSk7CisrICBOb2RlKiBJZGVh bChQaGFzZUdWTiogcGhhc2UsIGJvb2wgY2FuX3Jlc2hhcGUpIG92ZXJyaWRlOworIH07CisgCisg Ly8gRmxvYXQgTW9kdWx1cworIGNsYXNzIE1vZEZOb2RlIDogcHVibGljIE1vZEZsb2F0aW5nTm9k ZSB7CisgcHJpdmF0ZToKKy0gIE5vZGUqIGRpdmlkZW5kKCkgY29uc3QgeyByZXR1cm4gaW4oVHlw ZUZ1bmM6OlBhcm1zICsgMCk7IH0KKy0gIE5vZGUqIGRpdmlzb3IoKSBjb25zdCB7IHJldHVybiBp bihUeXBlRnVuYzo6UGFybXMgKyAxKTsgfQorKyAgTm9kZSogZGl2aWRlbmQoKSBjb25zdCBvdmVy cmlkZSB7IHJldHVybiBpbihUeXBlRnVuYzo6UGFybXMgKyAwKTsgfQorKyAgTm9kZSogZGl2aXNv cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGluKFR5cGVGdW5jOjpQYXJtcyArIDEpOyB9Cisr ICBjb25zdCBUeXBlKiBnZXRfcmVzdWx0X2lmX2NvbnN0YW50KGNvbnN0IFR5cGUqIGRpdmlkZW5k LCBjb25zdCBUeXBlKiBkaXZpc29yKSBjb25zdCBvdmVycmlkZTsKKyAKKyBwdWJsaWM6CisgICBN b2RGTm9kZShDb21waWxlKiBDLCBOb2RlKiBhLCBOb2RlKiBiKTsKKy0gIHZpcnR1YWwgaW50IE9w Y29kZSgpIGNvbnN0OworLSAgdmlydHVhbCB1aW50IGlkZWFsX3JlZygpIGNvbnN0IHsgcmV0dXJu IE9wX1JlZ0Y7IH0KKy0gIHZpcnR1YWwgdWludCBzaXplX29mKCkgY29uc3QgeyByZXR1cm4gc2l6 ZW9mKCp0aGlzKTsgfQorLSAgdmlydHVhbCBOb2RlKiBJZGVhbChQaGFzZUdWTiogcGhhc2UsIGJv b2wgY2FuX3Jlc2hhcGUpOworKyAgaW50IE9wY29kZSgpIGNvbnN0IG92ZXJyaWRlOworKyAgdWlu dCBpZGVhbF9yZWcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBPcF9SZWdGOyB9CisrICB1aW50 IHNpemVfb2YoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YoKnRoaXMpOyB9CisgfTsK KyAKKyAvLyBEb3VibGUgTW9kdWx1cworIGNsYXNzIE1vZEROb2RlIDogcHVibGljIE1vZEZsb2F0 aW5nTm9kZSB7CisgcHJpdmF0ZToKKy0gIE5vZGUqIGRpdmlkZW5kKCkgY29uc3QgeyByZXR1cm4g aW4oVHlwZUZ1bmM6OlBhcm1zICsgMCk7IH0KKy0gIE5vZGUqIGRpdmlzb3IoKSBjb25zdCB7IHJl dHVybiBpbihUeXBlRnVuYzo6UGFybXMgKyAyKTsgfQorKyAgTm9kZSogZGl2aWRlbmQoKSBjb25z dCBvdmVycmlkZSB7IHJldHVybiBpbihUeXBlRnVuYzo6UGFybXMgKyAwKTsgfQorKyAgTm9kZSog ZGl2aXNvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGluKFR5cGVGdW5jOjpQYXJtcyArIDIp OyB9CisrICBjb25zdCBUeXBlKiBnZXRfcmVzdWx0X2lmX2NvbnN0YW50KGNvbnN0IFR5cGUqIGRp dmlkZW5kLCBjb25zdCBUeXBlKiBkaXZpc29yKSBjb25zdCBvdmVycmlkZTsKKyAKKyBwdWJsaWM6 CisgICBNb2RETm9kZShDb21waWxlKiBDLCBOb2RlKiBhLCBOb2RlKiBiKTsKKy0gIHZpcnR1YWwg aW50IE9wY29kZSgpIGNvbnN0OworLSAgdmlydHVhbCB1aW50IGlkZWFsX3JlZygpIGNvbnN0IHsg cmV0dXJuIE9wX1JlZ0Q7IH0KKy0gIHZpcnR1YWwgdWludCBzaXplX29mKCkgY29uc3QgeyByZXR1 cm4gc2l6ZW9mKCp0aGlzKTsgfQorLSAgdmlydHVhbCBOb2RlKiBJZGVhbChQaGFzZUdWTiogcGhh c2UsIGJvb2wgY2FuX3Jlc2hhcGUpOworKyAgaW50IE9wY29kZSgpIGNvbnN0IG92ZXJyaWRlOwor KyAgdWludCBpZGVhbF9yZWcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBPcF9SZWdEOyB9Cisr ICB1aW50IHNpemVfb2YoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YoKnRoaXMpOyB9 CisgfTsKKyAKKyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVVNb2RJTm9kZS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGlmZiAtLWdpdCBhL3NyYy9ob3Rz cG90L3NoYXJlL29wdG8vZ3JhcGhLaXQuY3BwIGIvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9ncmFw aEtpdC5jcHAKK2luZGV4IDIwZmVjYTI2ZWRlLi4xYjhiNzAwODU3OCAxMDA2NDQKKy0tLSBhL3Ny Yy9ob3RzcG90L3NoYXJlL29wdG8vZ3JhcGhLaXQuY3BwCisrKysgYi9zcmMvaG90c3BvdC9zaGFy ZS9vcHRvL2dyYXBoS2l0LmNwcAorQEAgLTE4ODAsMTQgKzE4ODAsMjAgQEAgTm9kZSogR3JhcGhL aXQ6OnNldF9yZXN1bHRzX2Zvcl9qYXZhX2NhbGwoQ2FsbEphdmFOb2RlKiBjYWxsLCBib29sIHNl cGFyYXRlX2lvX3AKKyAvLyBhZnRlciB0aGUgY2FsbCwgaWYgdGhpcyBjYWxsIGhhcyByZXN0cmlj dGVkIG1lbW9yeSBlZmZlY3RzLgorIE5vZGUqIEdyYXBoS2l0OjpzZXRfcHJlZGVmaW5lZF9pbnB1 dF9mb3JfcnVudGltZV9jYWxsKFNhZmVQb2ludE5vZGUqIGNhbGwsIE5vZGUqIG5hcnJvd19tZW0p IHsKKyAgIC8vIFNldCBmaXhlZCBwcmVkZWZpbmVkIGlucHV0IGFyZ3VtZW50cworLSAgTm9kZSog bWVtb3J5ID0gcmVzZXRfbWVtb3J5KCk7CistICBOb2RlKiBtID0gbmFycm93X21lbSA9PSBudWxs cHRyID8gbWVtb3J5IDogbmFycm93X21lbTsKKy0gIGNhbGwtPmluaXRfcmVxKCBUeXBlRnVuYzo6 Q29udHJvbCwgICBjb250cm9sKCkgICk7CistICBjYWxsLT5pbml0X3JlcSggVHlwZUZ1bmM6Oklf TywgICAgICAgdG9wKCkgICAgICApOyAvLyBkb2VzIG5vIGkvbworLSAgY2FsbC0+aW5pdF9yZXEo IFR5cGVGdW5jOjpNZW1vcnksICAgIG0gICAgICAgICAgKTsgLy8gbWF5IGdjIHB0cnMKKy0gIGNh bGwtPmluaXRfcmVxKCBUeXBlRnVuYzo6RnJhbWVQdHIsICBmcmFtZXB0cigpICk7CistICBjYWxs LT5pbml0X3JlcSggVHlwZUZ1bmM6OlJldHVybkFkciwgdG9wKCkgICAgICApOworLSAgcmV0dXJu IG1lbW9yeTsKKysgIGNhbGwtPmluaXRfcmVxKFR5cGVGdW5jOjpDb250cm9sLCBjb250cm9sKCkp OworKyAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OklfTywgdG9wKCkpOyAvLyBkb2VzIG5vIGkv bworKyAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OlJldHVybkFkciwgdG9wKCkpOworKyAgaWYg KGNhbGwtPmlzX0NhbGxMZWFmUHVyZSgpKSB7CisrICAgIGNhbGwtPmluaXRfcmVxKFR5cGVGdW5j OjpNZW1vcnksIHRvcCgpKTsKKysgICAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1bmM6OkZyYW1lUHRy LCB0b3AoKSk7CisrICAgIHJldHVybiBudWxscHRyOworKyAgfSBlbHNlIHsKKysgICAgTm9kZSog bWVtb3J5ID0gcmVzZXRfbWVtb3J5KCk7CisrICAgIE5vZGUqIG0gPSBuYXJyb3dfbWVtID09IG51 bGxwdHIgPyBtZW1vcnkgOiBuYXJyb3dfbWVtOworKyAgICBjYWxsLT5pbml0X3JlcShUeXBlRnVu Yzo6TWVtb3J5LCBtKTsgLy8gbWF5IGdjIHB0cnMKKysgICAgY2FsbC0+aW5pdF9yZXEoVHlwZUZ1 bmM6OkZyYW1lUHRyLCBmcmFtZXB0cigpKTsKKysgICAgcmV0dXJuIG1lbW9yeTsKKysgIH0KKyB9 CisgCisgLy8tLS0tLS0tLS0tLS0tLS0tLS0tc2V0X3ByZWRlZmluZWRfb3V0cHV0X2Zvcl9ydW50 aW1lX2NhbGwtLS0tLS0tLS0tLS0tLS0tLS0tLQorQEAgLTE5MDUsNiArMTkxMSwxMSBAQCB2b2lk IEdyYXBoS2l0OjpzZXRfcHJlZGVmaW5lZF9vdXRwdXRfZm9yX3J1bnRpbWVfY2FsbChOb2RlKiBj YWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IFR5cGVQdHIqIGhvb2tfbWVtKSB7CisgICAvLyBubyBpL28KKyAgIHNldF9jb250 cm9sKF9ndm4udHJhbnNmb3JtKCBuZXcgUHJvak5vZGUoY2FsbCxUeXBlRnVuYzo6Q29udHJvbCkg KSk7CisrICBpZiAoY2FsbC0+aXNfQ2FsbExlYWZQdXJlKCkpIHsKKysgICAgLy8gUHVyZSBmdW5j dGlvbiBoYXZlIG9ubHkgY29udHJvbCAoZm9yIG5vdykgYW5kIGRhdGEgb3V0cHV0LCBpbiBwYXJ0 aWN1bGFyCisrICAgIC8vIHRoZXkgZG9uJ3QgdG91Y2ggdGhlIG1lbW9yeSwgc28gd2UgZG9uJ3Qg d2FudCBhIG1lbW9yeSBwcm9qIHRoYXQgaXMgc2V0IGFmdGVyLgorKyAgICByZXR1cm47CisrICB9 CisgICBpZiAoa2VlcF9tZW0pIHsKKyAgICAgLy8gRmlyc3QgY2xvbmUgdGhlIGV4aXN0aW5nIG1l bW9yeSBzdGF0ZQorICAgICBzZXRfYWxsX21lbW9yeShrZWVwX21lbSk7CitAQCAtMjQ5MSw2ICsy NTAyLDggQEAgTm9kZSogR3JhcGhLaXQ6Om1ha2VfcnVudGltZV9jYWxsKGludCBmbGFncywKKyAg IH0gZWxzZSAgaWYgKGZsYWdzICYgUkNfVkVDVE9SKXsKKyAgICAgdWludCBudW1fYml0cyA9IGNh bGxfdHlwZS0+cmFuZ2UoKS0+ZmllbGRfYXQoVHlwZUZ1bmM6OlBhcm1zKS0+aXNfdmVjdCgpLT5s ZW5ndGhfaW5fYnl0ZXMoKSAqIEJpdHNQZXJCeXRlOworICAgICBjYWxsID0gbmV3IENhbGxMZWFm VmVjdG9yTm9kZShjYWxsX3R5cGUsIGNhbGxfYWRkciwgY2FsbF9uYW1lLCBhZHJfdHlwZSwgbnVt X2JpdHMpOworKyAgfSBlbHNlIGlmIChmbGFncyAmIFJDX1BVUkUpIHsKKysgICAgY2FsbCA9IG5l dyBDYWxsTGVhZlB1cmVOb2RlKGNhbGxfdHlwZSwgY2FsbF9hZGRyLCBjYWxsX25hbWUsIGFkcl90 eXBlKTsKKyAgIH0gZWxzZSB7CisgICAgIGNhbGwgPSBuZXcgQ2FsbExlYWZOb2RlKGNhbGxfdHlw ZSwgY2FsbF9hZGRyLCBjYWxsX25hbWUsIGFkcl90eXBlKTsKKyAgIH0KK2RpZmYgLS1naXQgYS9z cmMvaG90c3BvdC9zaGFyZS9vcHRvL2dyYXBoS2l0LmhwcCBiL3NyYy9ob3RzcG90L3NoYXJlL29w dG8vZ3JhcGhLaXQuaHBwCitpbmRleCAyODc3M2Q3NTMzMy4uODA2YTIxMWQ3ZTIgMTAwNjQ0Cist LS0gYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2dyYXBoS2l0LmhwcAorKysrIGIvc3JjL2hvdHNw b3Qvc2hhcmUvb3B0by9ncmFwaEtpdC5ocHAKK0BAIC03ODQsNiArNzg0LDcgQEAgY2xhc3MgR3Jh cGhLaXQgOiBwdWJsaWMgUGhhc2UgeworICAgICBSQ19OQVJST1dfTUVNID0gMTYsICAgICAgICAg Ly8gaW5wdXQgbWVtb3J5IGlzIHNhbWUgYXMgb3V0cHV0CisgICAgIFJDX1VOQ09NTU9OID0gMzIs ICAgICAgICAgICAvLyBmcmVxLiBleHBlY3RlZCB0byBiZSBsaWtlIHVuY29tbW9uIHRyYXAKKyAg ICAgUkNfVkVDVE9SID0gNjQsICAgICAgICAgICAgIC8vIENhbGxMZWFmVmVjdG9yTm9kZQorKyAg ICBSQ19QVVJFID0gMTI4LCAgICAgICAgICAgICAgLy8gQ2FsbExlYWYgaXMgcHVyZQorICAgICBS Q19MRUFGID0gMCAgICAgICAgICAgICAgICAgLy8gbnVsbCB2YWx1ZTogIG5vIGZsYWdzIHNldAor ICAgfTsKKyAKK2RpZmYgLS1naXQgYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2xpYnJhcnlfY2Fs bC5jcHAgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2xpYnJhcnlfY2FsbC5jcHAKK2luZGV4IGY3 NGFmMzgzODdjLi4xMjk2MGQxMDFhOCAxMDA2NDQKKy0tLSBhL3NyYy9ob3RzcG90L3NoYXJlL29w dG8vbGlicmFyeV9jYWxsLmNwcAorKysrIGIvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9saWJyYXJ5 X2NhbGwuY3BwCitAQCAtMTgwMiw3ICsxODAyLDcgQEAgYm9vbCBMaWJyYXJ5Q2FsbEtpdDo6cnVu dGltZV9tYXRoKGNvbnN0IFR5cGVGdW5jKiBjYWxsX3R5cGUsIGFkZHJlc3MgZnVuY0FkZHIsIGMK KyAgIE5vZGUqIGIgPSAoY2FsbF90eXBlID09IE9wdG9SdW50aW1lOjpNYXRoX0REX0RfVHlwZSgp KSA/IGFyZ3VtZW50KDIpIDogbnVsbHB0cjsKKyAKKyAgIGNvbnN0IFR5cGVQdHIqIG5vX21lbW9y eV9lZmZlY3RzID0gbnVsbHB0cjsKKy0gIE5vZGUqIHRyaWcgPSBtYWtlX3J1bnRpbWVfY2FsbChS Q19MRUFGLCBjYWxsX3R5cGUsIGZ1bmNBZGRyLCBmdW5jTmFtZSwKKysgIE5vZGUqIHRyaWcgPSBt YWtlX3J1bnRpbWVfY2FsbChSQ19MRUFGIHwgUkNfUFVSRSwgY2FsbF90eXBlLCBmdW5jQWRkciwg ZnVuY05hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9fbWVtb3J5X2Vm ZmVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSwgdG9wKCksIGIsIGIg PyB0b3AoKSA6IG51bGxwdHIpOworICAgTm9kZSogdmFsdWUgPSBfZ3ZuLnRyYW5zZm9ybShuZXcg UHJvak5vZGUodHJpZywgVHlwZUZ1bmM6OlBhcm1zKzApKTsKK2RpZmYgLS1naXQgYS9zcmMvaG90 c3BvdC9zaGFyZS9vcHRvL21hY3JvLmNwcCBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbWFjcm8u Y3BwCitpbmRleCBhY2YxZGJhYmYxOS4uYWFmYzVkM2MxNzAgMTAwNjQ0CistLS0gYS9zcmMvaG90 c3BvdC9zaGFyZS9vcHRvL21hY3JvLmNwcAorKysrIGIvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9t YWNyby5jcHAKK0BAIC0yNjM4LDE3ICsyNjM4LDE0IEBAIGJvb2wgUGhhc2VNYWNyb0V4cGFuZDo6 ZXhwYW5kX21hY3JvX25vZGVzKCkgeworICAgICAgIHN3aXRjaCAobi0+T3Bjb2RlKCkpIHsKKyAg ICAgICBjYXNlIE9wX01vZEQ6CisgICAgICAgY2FzZSBPcF9Nb2RGOiB7CistICAgICAgICBib29s IGlzX2RyZW0gPSBuLT5PcGNvZGUoKSA9PSBPcF9Nb2REOworICAgICAgICAgQ2FsbE5vZGUqIG1v ZF9tYWNybyA9IG4tPmFzX0NhbGwoKTsKKy0gICAgICAgIENhbGxOb2RlKiBjYWxsID0gbmV3IENh bGxMZWFmTm9kZShtb2RfbWFjcm8tPnRmKCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaXNfZHJlbSA/IENBU1RfRlJPTV9GTl9QVFIoYWRkcmVzcywgU2hhcmVk UnVudGltZTo6ZHJlbSkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDogQ0FTVF9GUk9NX0ZOX1BUUihhZGRyZXNzLCBTaGFyZWRSdW50aW1lOjpmcmVt KSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19kcmVtID8g ImRyZW0iIDogImZyZW0iLCBUeXBlUmF3UHRyOjpCT1RUT00pOworKyAgICAgICAgQ2FsbE5vZGUq IGNhbGwgPSBuZXcgQ2FsbExlYWZQdXJlTm9kZShtb2RfbWFjcm8tPnRmKCksIG1vZF9tYWNyby0+ ZW50cnlfcG9pbnQoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbW9kX21hY3JvLT5fbmFtZSwgVHlwZVJhd1B0cjo6Qk9UVE9NKTsKKyAgICAgICAgIGNh bGwtPmluaXRfcmVxKFR5cGVGdW5jOjpDb250cm9sLCBtb2RfbWFjcm8tPmluKFR5cGVGdW5jOjpD b250cm9sKSk7CistICAgICAgICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6SV9PLCBtb2RfbWFj cm8tPmluKFR5cGVGdW5jOjpJX08pKTsKKy0gICAgICAgIGNhbGwtPmluaXRfcmVxKFR5cGVGdW5j OjpNZW1vcnksIG1vZF9tYWNyby0+aW4oVHlwZUZ1bmM6Ok1lbW9yeSkpOworLSAgICAgICAgY2Fs bC0+aW5pdF9yZXEoVHlwZUZ1bmM6OlJldHVybkFkciwgbW9kX21hY3JvLT5pbihUeXBlRnVuYzo6 UmV0dXJuQWRyKSk7CistICAgICAgICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6RnJhbWVQdHIs IG1vZF9tYWNyby0+aW4oVHlwZUZ1bmM6OkZyYW1lUHRyKSk7CisrICAgICAgICBjYWxsLT5pbml0 X3JlcShUeXBlRnVuYzo6SV9PLCBDLT50b3AoKSk7CisrICAgICAgICBjYWxsLT5pbml0X3JlcShU eXBlRnVuYzo6TWVtb3J5LCBDLT50b3AoKSk7CisrICAgICAgICBjYWxsLT5pbml0X3JlcShUeXBl RnVuYzo6UmV0dXJuQWRyLCBDLT50b3AoKSk7CisrICAgICAgICBjYWxsLT5pbml0X3JlcShUeXBl RnVuYzo6RnJhbWVQdHIsIEMtPnRvcCgpKTsKKyAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkg PSAwOyBpIDwgbW9kX21hY3JvLT50ZigpLT5kb21haW4oKS0+Y250KCkgLSBUeXBlRnVuYzo6UGFy bXM7IGkrKykgeworICAgICAgICAgICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6UGFybXMgKyBp LCBtb2RfbWFjcm8tPmluKFR5cGVGdW5jOjpQYXJtcyArIGkpKTsKKyAgICAgICAgIH0KK2RpZmYg LS1naXQgYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL211bHRub2RlLmNwcCBiL3NyYy9ob3RzcG90 L3NoYXJlL29wdG8vbXVsdG5vZGUuY3BwCitpbmRleCA3MzZlODQzMTVlZS4uZjQyOWQ1ZGFhYzAg MTAwNjQ0CistLS0gYS9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL211bHRub2RlLmNwcAorKysrIGIv c3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9tdWx0bm9kZS5jcHAKK0BAIC0xMjAsNiArMTIwLDEwIEBA IGNvbnN0IFR5cGVQdHIgKlByb2pOb2RlOjphZHJfdHlwZSgpIGNvbnN0IHsKKyAgIGlmIChib3R0 b21fdHlwZSgpID09IFR5cGU6Ok1FTU9SWSkgeworICAgICAvLyBpbigwKSBtaWdodCBiZSBhIG5h cnJvdyBNZW1CYXI7IG90aGVyd2lzZSB3ZSB3aWxsIHJlcG9ydCBUeXBlUHRyOjpCT1RUT00KKyAg ICAgTm9kZSogY3RybCA9IGluKDApOworKyAgICBpZiAoY3RybC0+T3Bjb2RlKCkgPT0gT3BfVHVw bGUpIHsKKysgICAgICAvLyBKdW1waW5nIG92ZXIgVHVwbGVzOiB0aGUgaS10aCBwcm9qZWN0aW9u IG9mIGEgVHVwbGUgaXMgdGhlIGktdGggaW5wdXQgb2YgdGhlIFR1cGxlLgorKyAgICAgIGN0cmwg PSBjdHJsLT5pbihfY29uKTsKKysgICAgfQorICAgICBpZiAoY3RybCA9PSBudWxscHRyKSAgcmV0 dXJuIG51bGxwdHI7IC8vIG5vZGUgaXMgZGVhZAorICAgICBjb25zdCBUeXBlUHRyKiBhZHJfdHlw ZSA9IGN0cmwtPmFkcl90eXBlKCk7CisgICAgICNpZmRlZiBBU1NFUlQKK0BAIC0xNjMsNiArMTY3 LDE1IEBAIHZvaWQgUHJvak5vZGU6OmNoZWNrX2NvbigpIGNvbnN0IHsKKyAgIGFzc2VydChfY29u IDwgdC0+aXNfdHVwbGUoKS0+Y250KCksICJQcm9qTm9kZTo6X2NvbiBtdXN0IGJlIGluIHJhbmdl Iik7CisgfQorIAorKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tSWRlbnRpdHktLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKytOb2RlKiBQcm9qTm9kZTo6SWRl bnRpdHkoUGhhc2VHVk4qIHBoYXNlKSB7CisrICBpZiAoaW4oMCkgIT0gbnVsbHB0ciAmJiBpbigw KS0+T3Bjb2RlKCkgPT0gT3BfVHVwbGUpIHsKKysgICAgLy8gSnVtcGluZyBvdmVyIFR1cGxlczog dGhlIGktdGggcHJvamVjdGlvbiBvZiBhIFR1cGxlIGlzIHRoZSBpLXRoIGlucHV0IG9mIHRoZSBU dXBsZS4KKysgICAgcmV0dXJuIGluKDApLT5pbihfY29uKTsKKysgIH0KKysgIHJldHVybiB0aGlz OworK30KKysKKyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZhbHVlLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgY29uc3QgVHlwZSogUHJvak5vZGU6 OlZhbHVlKFBoYXNlR1ZOKiBwaGFzZSkgY29uc3QgeworICAgaWYgKGluKDApID09IG51bGxwdHIp IHJldHVybiBUeXBlOjpUT1A7CitkaWZmIC0tZ2l0IGEvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9t dWx0bm9kZS5ocHAgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL211bHRub2RlLmhwcAoraW5kZXgg ZGZmMmNhZWQzOGQuLjgzNGRjZmRjYTZkIDEwMDY0NAorLS0tIGEvc3JjL2hvdHNwb3Qvc2hhcmUv b3B0by9tdWx0bm9kZS5ocHAKKysrKyBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbXVsdG5vZGUu aHBwCitAQCAtODIsNiArODIsNyBAQCBjbGFzcyBQcm9qTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAg IHZpcnR1YWwgY29uc3QgVHlwZSAqYm90dG9tX3R5cGUoKSBjb25zdDsKKyAgIHZpcnR1YWwgY29u c3QgVHlwZVB0ciAqYWRyX3R5cGUoKSBjb25zdDsKKyAgIHZpcnR1YWwgYm9vbCBwaW5uZWQoKSBj b25zdDsKKysgIHZpcnR1YWwgTm9kZSogSWRlbnRpdHkoUGhhc2VHVk4qIHBoYXNlKTsKKyAgIHZp cnR1YWwgY29uc3QgVHlwZSogVmFsdWUoUGhhc2VHVk4qIHBoYXNlKSBjb25zdDsKKyAgIHZpcnR1 YWwgdWludCBpZGVhbF9yZWcoKSBjb25zdDsKKyAgIHZpcnR1YWwgY29uc3QgUmVnTWFzayAmb3V0 X1JlZ01hc2soKSBjb25zdDsKK0BAIC0xMDUsNCArMTA2LDQ5IEBAIGNsYXNzIFByb2pOb2RlIDog cHVibGljIE5vZGUgeworICAgUHJvak5vZGUqIG90aGVyX2lmX3Byb2ooKSBjb25zdDsKKyB9Owor IAorKy8qIFR1cGxlcyBhcmUgdXNlZCB0byBhdm9pZCBtYW51YWwgZ3JhcGggc3VyZ2VyeS4gV2hl biBhIG5vZGUgd2l0aCBQcm9qIG91dHB1dHMgKHN1Y2ggYXMgYSBjYWxsKQorKyAqIG11c3QgYmUg cmVtb3ZlZCBhbmQgaXRzIG91cHV0cyByZXBsYWNlZCBieSBpdHMgaW5wdXQsIG9yIHNvbWUgb3Ro ZXIgdmFsdWUsIHdlIGNhbiBtYWtlIGl0cworKyAqIDo6SWRlYWwgcmV0dXJuIGEgdHVwbGUgb2Yg d2hhdCB3ZSB3YW50IGZvciBlYWNoIG91dHB1dDogdGhlIDo6SWRlbnRpdHkgb2Ygb3V0cHV0IFBy b2ogd2lsbAorKyAqIHRha2UgY2FyZSB0byBqdW1wIG92ZXIgdGhlIFR1cGxlIGFuZCBkaXJlY3Rs eSBwaWNrIHVwIHRoZSByaWdodCBpbnB1dCBvZiB0aGUgVHVwbGUuCisrICoKKysgKiBGb3IgaW5z dGFuY2UsIGlmIGEgZnVuY3Rpb24gY2FsbCBpcyBwcm92ZW4gdG8gaGF2ZSBubyBzaWRlIGVmZmVj dCBhbmQgcmV0dXJuIHRoZSBjb25zdGFudCAwLAorKyAqIHdlIGNhbiByZXBsYWNlIGl0IHdpdGgg dGhlIDYtdHVwbGU6CisrICogKGNvbnRyb2wgaW5wdXQsIElPIGlucHV0LCBtZW1vcnkgaW5wdXQs IGZyYW1lIHB0ciBpbnB1dCwgcmV0dXJuIGFkZHIgaW5wdXQsIENvbjowKQorKyAqIGFsbCB0aGUg b3V0cHV0IHByb2plY3Rpb25zIHdpbGwgcGljayB1cCB0aGUgaW5wdXQgb2YgdGhlIG5vdyBnb25l IGNhbGwsIGV4Y2VwdCBmb3IgdGhlIHJlc3VsdAorKyAqIHByb2plY3Rpb24gdGhhdCBpcyByZXBs YWNlZCBieSAwLgorKyAqCisrICogVXNpbmcgVHVwbGVOb2RlIGF2b2lkIG1hbnVhbCBncmFwaCBz dXJnZXJ5IGFuZCBsZWF2ZSB0aGF0IHRvIG91ciBleHBlcnQgc3VyZ2VvbjogSUdWTi4KKysgKiBT aW5jZSB0aGUgdXNlciBvZiBhIFR1cGxlIGFyZSBleHBlY3RlZCB0byBiZSBQcm9qLCB3aGVuIGNy ZWF0aW5nIGEgdHVwbGUgZHVyaW5nIGlkZWFsaXphdGlvbiwKKysgKiB0aGUgb3V0cHV0IFByb2og c2hvdWxkIGJlIGVucXVldWVkIGZvciBJR1ZOIGltbWVkaWF0ZWx5IGFmdGVyLCBhbmQgdGhlIHR1 cGxlIHNob3VsZCBub3Qgc3Vydml2ZQorKyAqIGFmdGVyIHRoZSBjdXJyZW50IElHVk4uCisrICov CisrY2xhc3MgVHVwbGVOb2RlIDogcHVibGljIE11bHRpTm9kZSB7CisrICBjb25zdCBUeXBlVHVw bGUqIF90ZjsKKysKKysgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBOTj4KKysgIHN0YXRpYyB2b2lk IG1ha2VfaGVscGVyKFR1cGxlTm9kZSogdG4sIHVpbnQgaSwgTm9kZSogbm9kZSwgTk4uLi4gbm4p IHsKKysgICAgdG4tPnNldF9yZXEoaSwgbm9kZSk7CisrICAgIG1ha2VfaGVscGVyKHRuLCBpICsg MSwgbm4uLi4pOworKyAgfQorKworKyAgc3RhdGljIHZvaWQgbWFrZV9oZWxwZXIoVHVwbGVOb2Rl KiwgdWludCkge30KKysKKytwdWJsaWM6CisrICBUdXBsZU5vZGUoY29uc3QgVHlwZVR1cGxlKiB0 ZikgOiBNdWx0aU5vZGUodGYtPmNudCgpKSwgX3RmKHRmKSB7fQorKworKyAgaW50IE9wY29kZSgp IGNvbnN0IG92ZXJyaWRlOworKyAgY29uc3QgVHlwZSogYm90dG9tX3R5cGUoKSBjb25zdCBvdmVy cmlkZSB7IHJldHVybiBfdGY7IH0KKysKKysgIC8qIEdpdmUgYXMgbWFueSBgTm9kZSpgIGFzIHlv dSB3YW50IGluIHRoZSBgbm5gIHBhY2s6CisrICAgKiBUdXBsZU5vZGU6Om1ha2UodGYsIGlucHV0 MSkKKysgICAqIFR1cGxlTm9kZTo6bWFrZSh0ZiwgaW5wdXQxLCBpbnB1dDIsIGlucHV0MywgaW5w dXQ0KQorKyAgICovCisrICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gTk4+CisrICBzdGF0aWMgVHVw bGVOb2RlKiBtYWtlKGNvbnN0IFR5cGVUdXBsZSogdGYsIE5OLi4uIG5uKSB7CisrICAgIFR1cGxl Tm9kZSogdG4gPSBuZXcgVHVwbGVOb2RlKHRmKTsKKysgICAgbWFrZV9oZWxwZXIodG4sIDAsIG5u Li4uKTsKKysgICAgcmV0dXJuIHRuOworKyAgfQorK307CisrCisgI2VuZGlmIC8vIFNIQVJFX09Q VE9fTVVMVE5PREVfSFBQCitkaWZmIC0tZ2l0IGEvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9ub2Rl LmNwcCBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbm9kZS5jcHAKK2luZGV4IDhmNmM2N2MxNmY1 Li41ZWNjMDM4OTU0ZCAxMDA2NDQKKy0tLSBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbm9kZS5j cHAKKysrKyBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbm9kZS5jcHAKK0BAIC0yOTQ2LDIzICsy OTQ2LDEzIEBAIGJvb2wgTm9kZTo6aXNfZGVhZF9sb29wX3NhZmUoKSBjb25zdCB7CisgYm9vbCBO b2RlOjppc19kaXZfb3JfbW9kKEJhc2ljVHlwZSBidCkgY29uc3QgeyByZXR1cm4gT3Bjb2RlKCkg PT0gT3BfRGl2KGJ0KSB8fCBPcGNvZGUoKSA9PSBPcF9Nb2QoYnQpIHx8CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3Bjb2RlKCkgPT0gT3Bf VURpdihidCkgfHwgT3Bjb2RlKCkgPT0gT3BfVU1vZChidCk7IH0KKyAKKy1ib29sIE5vZGU6Omlz X3B1cmVfZnVuY3Rpb24oKSBjb25zdCB7CistICBzd2l0Y2ggKE9wY29kZSgpKSB7CistICBjYXNl IE9wX01vZEQ6CistICBjYXNlIE9wX01vZEY6CistICAgIHJldHVybiB0cnVlOworLSAgZGVmYXVs dDoKKy0gICAgcmV0dXJuIGZhbHNlOworLSAgfQorLX0KKy0KKyAvLyBgbWF5YmVfcHVyZV9mdW5j dGlvbmAgaXMgYXNzdW1lZCB0byBiZSB0aGUgaW5wdXQgb2YgYHRoaXNgLiBUaGlzIGlzIGEgYml0 IHJlZHVuZGFudCwKKyAvLyBidXQgd2UgYWxyZWFkeSBoYXZlIGFuZCBuZWVkIG1heWJlX3B1cmVf ZnVuY3Rpb24gaW4gYWxsIHRoZSBjYWxsIHNpdGVzLCBzbworIC8vIGl0IG1ha2VzIGl0IG9idmlv dXMgdGhhdCB0aGUgYG1heWJlX3B1cmVfZnVuY3Rpb25gIGlzIHRoZSBzYW1lIG5vZGUgYXMgaW4g dGhlIGNhbGxlciwKKyAvLyB3aGlsZSBpdCB0YWtlcyBtb3JlIHRoaW5raW5nIHRvIHJlYWxpemUg dGhhdCBhIGxvY2FsbHkgY29tcHV0ZWQgaW4oMCkgbXVzdCBiZSBlcXVhbCB0bworIC8vIHRoZSBs b2NhbCBpbiB0aGUgY2FsbGVyLgorIGJvb2wgTm9kZTo6aXNfZGF0YV9wcm9qX29mX3B1cmVfZnVu Y3Rpb24oY29uc3QgTm9kZSogbWF5YmVfcHVyZV9mdW5jdGlvbikgY29uc3QgeworLSAgcmV0dXJu IE9wY29kZSgpID09IE9wX1Byb2ogJiYgYXNfUHJvaigpLT5fY29uID09IFR5cGVGdW5jOjpQYXJt cyAmJiBtYXliZV9wdXJlX2Z1bmN0aW9uLT5pc19wdXJlX2Z1bmN0aW9uKCk7CisrICByZXR1cm4g T3Bjb2RlKCkgPT0gT3BfUHJvaiAmJiBhc19Qcm9qKCktPl9jb24gPT0gVHlwZUZ1bmM6OlBhcm1z ICYmIG1heWJlX3B1cmVfZnVuY3Rpb24tPmlzX0NhbGxMZWFmUHVyZSgpOworIH0KKyAKKyAvLz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CitkaWZmIC0tZ2l0IGEvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9u b2RlLmhwcCBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbm9kZS5ocHAKK2luZGV4IDJiYmIxMDg3 OWY1Li5kYzBhYzQ3NGM0YiAxMDA2NDQKKy0tLSBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbm9k ZS5ocHAKKysrKyBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbm9kZS5ocHAKK0BAIC01NCw2ICs1 NCw3IEBAIGNsYXNzIENhbGxEeW5hbWljSmF2YU5vZGU7CisgY2xhc3MgQ2FsbEphdmFOb2RlOwor IGNsYXNzIENhbGxMZWFmTm9kZTsKKyBjbGFzcyBDYWxsTGVhZk5vRlBOb2RlOworK2NsYXNzIENh bGxMZWFmUHVyZU5vZGU7CisgY2xhc3MgQ2FsbE5vZGU7CisgY2xhc3MgQ2FsbFJ1bnRpbWVOb2Rl OworIGNsYXNzIENhbGxTdGF0aWNKYXZhTm9kZTsKK0BAIC02NzMsNiArNjc0LDcgQEAgY2xhc3Mg Tm9kZSB7CisgICAgICAgICAgIERFRklORV9DTEFTU19JRChDYWxsUnVudGltZSwgICAgICBDYWxs LCAxKQorICAgICAgICAgICAgIERFRklORV9DTEFTU19JRChDYWxsTGVhZiwgICAgICAgICBDYWxs UnVudGltZSwgMCkKKyAgICAgICAgICAgICAgIERFRklORV9DTEFTU19JRChDYWxsTGVhZk5vRlAs ICAgICBDYWxsTGVhZiwgMCkKKysgICAgICAgICAgICAgIERFRklORV9DTEFTU19JRChDYWxsTGVh ZlB1cmUsICAgICBDYWxsTGVhZiwgMSkKKyAgICAgICAgICAgREVGSU5FX0NMQVNTX0lEKEFsbG9j YXRlLCAgICAgICAgIENhbGwsIDIpCisgICAgICAgICAgICAgREVGSU5FX0NMQVNTX0lEKEFsbG9j YXRlQXJyYXksICAgIEFsbG9jYXRlLCAwKQorICAgICAgICAgICBERUZJTkVfQ0xBU1NfSUQoQWJz dHJhY3RMb2NrLCAgICAgQ2FsbCwgMykKK0BAIC05MDcsNiArOTA5LDcgQEAgY2xhc3MgTm9kZSB7 CisgICBERUZJTkVfQ0xBU1NfUVVFUlkoQ2FsbEphdmEpCisgICBERUZJTkVfQ0xBU1NfUVVFUlko Q2FsbExlYWYpCisgICBERUZJTkVfQ0xBU1NfUVVFUlkoQ2FsbExlYWZOb0ZQKQorKyAgREVGSU5F X0NMQVNTX1FVRVJZKENhbGxMZWFmUHVyZSkKKyAgIERFRklORV9DTEFTU19RVUVSWShDYWxsUnVu dGltZSkKKyAgIERFRklORV9DTEFTU19RVUVSWShDYWxsU3RhdGljSmF2YSkKKyAgIERFRklORV9D TEFTU19RVUVSWShDYXRjaCkKK0BAIC0xMjg5LDggKzEyOTIsNiBAQCBjbGFzcyBOb2RlIHsKKyAK KyAgIGJvb2wgaXNfZGl2X29yX21vZChCYXNpY1R5cGUgYnQpIGNvbnN0OworIAorLSAgYm9vbCBp c19wdXJlX2Z1bmN0aW9uKCkgY29uc3Q7CistCisgICBib29sIGlzX2RhdGFfcHJval9vZl9wdXJl X2Z1bmN0aW9uKGNvbnN0IE5vZGUqIG1heWJlX3B1cmVfZnVuY3Rpb24pIGNvbnN0OworIAorIC8v LS0tLS0tLS0tLS0tLS0tLS0gUHJpbnRpbmcsIGV0YworZGlmZiAtLWdpdCBhL3NyYy9ob3RzcG90 L3NoYXJlL29wdG8vcGFyc2UyLmNwcCBiL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vcGFyc2UyLmNw cAoraW5kZXggMWE0YzNjOTFjNGYuLjA0YjZlNDliNjIwIDEwMDY0NAorLS0tIGEvc3JjL2hvdHNw b3Qvc2hhcmUvb3B0by9wYXJzZTIuY3BwCisrKysgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL3Bh cnNlMi5jcHAKK0BAIC0xMDk3LDExICsxMDk3LDExIEBAIHZvaWQgUGFyc2U6Omp1bXBfc3dpdGNo X3JhbmdlcyhOb2RlKiBrZXlfdmFsLCBTd2l0Y2hSYW5nZSAqbG8sIFN3aXRjaFJhbmdlICpoaSwK KyAKKyBOb2RlKiBQYXJzZTo6ZmxvYXRpbmdfcG9pbnRfbW9kKE5vZGUqIGEsIE5vZGUqIGIsIEJh c2ljVHlwZSB0eXBlKSB7CisgICBhc3NlcnQodHlwZSA9PSBCYXNpY1R5cGU6OlRfRkxPQVQgfHwg dHlwZSA9PSBCYXNpY1R5cGU6OlRfRE9VQkxFLCAib25seSBmbG9hdCBhbmQgZG91YmxlIGFyZSBm bG9hdGluZyBwb2ludHMiKTsKKy0gIENhbGxOb2RlKiBtb2QgPSB0eXBlID09IEJhc2ljVHlwZTo6 VF9ET1VCTEUgPyBzdGF0aWNfY2FzdDxDYWxsTm9kZSo+KG5ldyBNb2RETm9kZShDLCBhLCBiKSkg OiBuZXcgTW9kRk5vZGUoQywgYSwgYik7CisrICBDYWxsTGVhZlB1cmVOb2RlKiBtb2QgPSB0eXBl ID09IEJhc2ljVHlwZTo6VF9ET1VCTEUgPyBzdGF0aWNfY2FzdDxDYWxsTGVhZlB1cmVOb2RlKj4o bmV3IE1vZEROb2RlKEMsIGEsIGIpKSA6IG5ldyBNb2RGTm9kZShDLCBhLCBiKTsKKyAKKy0gIE5v ZGUqIHByZXZfbWVtID0gc2V0X3ByZWRlZmluZWRfaW5wdXRfZm9yX3J1bnRpbWVfY2FsbChtb2Qp OworLSAgbW9kID0gX2d2bi50cmFuc2Zvcm0obW9kKS0+YXNfQ2FsbCgpOworLSAgc2V0X3ByZWRl ZmluZWRfb3V0cHV0X2Zvcl9ydW50aW1lX2NhbGwobW9kLCBwcmV2X21lbSwgVHlwZVJhd1B0cjo6 Qk9UVE9NKTsKKysgIHNldF9wcmVkZWZpbmVkX2lucHV0X2Zvcl9ydW50aW1lX2NhbGwobW9kKTsK KysgIG1vZCA9IF9ndm4udHJhbnNmb3JtKG1vZCktPmFzX0NhbGxMZWFmUHVyZSgpOworKyAgc2V0 X3ByZWRlZmluZWRfb3V0cHV0X2Zvcl9ydW50aW1lX2NhbGwobW9kKTsKKyAgIE5vZGUqIHJlc3Vs dCA9IF9ndm4udHJhbnNmb3JtKG5ldyBQcm9qTm9kZShtb2QsIFR5cGVGdW5jOjpQYXJtcyArIDAp KTsKKyAgIHJlY29yZF9mb3JfaWd2bihtb2QpOworICAgcmV0dXJuIHJlc3VsdDsKKy0tIAorMi41 My4wCisKCmRpZmYgLS1naXQgYS9qZGs4Mzc1Mjk0LWhhbmRsZS1FT1BOT1RTVVBQLWluLWNvcHlp bmcucGF0Y2ggYi9qZGs4Mzc1Mjk0LWhhbmRsZS1FT1BOT1RTVVBQLWluLWNvcHlpbmcucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhODA3NmEuLjAwMDAwMDAKLS0tIGEvamRr ODM3NTI5NC1oYW5kbGUtRU9QTk9UU1VQUC1pbi1jb3B5aW5nLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsNjMgKzAsMCBAQAotRnJvbSBkYmJkYzFkZmZkMTA2MDgxOTU0ODdmYTEzOWU3N2M0YTkw YzgwNjU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0ppPUM1PTk5 PUMzPUFEPTIwVmFuPUM0PTlCaz89IDxqdmFuZWtAb3Blbmpkay5vcmc+Ci1EYXRlOiBXZWQsIDE1 IEFwciAyMDI2IDEyOjU0OjQ5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIDgzNzUyOTQ6IChmcykg RmlsZXMuY29weSBjYW4gZmFpbCB3aXRoIEVPUE5PVFNVUFAgd2hlbgotIGNvcHlfZmlsZV9yYW5n ZSBub3Qgc3VwcG9ydGVkCi0KLVJldmlld2VkLWJ5OiBhbmRyZXcKLUJhY2twb3J0LW9mOiAzMGNk YTAwMDEwODg4YjZlOWEyYmY4Y2RlYWVkYmIzZWI0YjZhMjIyCi0tLS0KLSBzcmMvamF2YS5iYXNl L2xpbnV4L25hdGl2ZS9saWJuaW8vY2gvRmlsZURpc3BhdGNoZXJJbXBsLmMgICAgfCA1ICsrKy0t Ci0gc3JjL2phdmEuYmFzZS9saW51eC9uYXRpdmUvbGlibmlvL2ZzL0xpbnV4TmF0aXZlRGlzcGF0 Y2hlci5jIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxl dGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9qYXZhLmJhc2UvbGludXgvbmF0aXZlL2xpYm5p by9jaC9GaWxlRGlzcGF0Y2hlckltcGwuYyBiL3NyYy9qYXZhLmJhc2UvbGludXgvbmF0aXZlL2xp Ym5pby9jaC9GaWxlRGlzcGF0Y2hlckltcGwuYwotaW5kZXggZWZiZDBjYTU2ODQuLjU0ZDY0MGIw M2E0IDEwMDY0NAotLS0tIGEvc3JjL2phdmEuYmFzZS9saW51eC9uYXRpdmUvbGlibmlvL2NoL0Zp bGVEaXNwYXRjaGVySW1wbC5jCi0rKysgYi9zcmMvamF2YS5iYXNlL2xpbnV4L25hdGl2ZS9saWJu aW8vY2gvRmlsZURpc3BhdGNoZXJJbXBsLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qCi0tICogQ29w eXJpZ2h0IChjKSAyMDAwLCAyMDI0LCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwg cmlnaHRzIHJlc2VydmVkLgotKyAqIENvcHlyaWdodCAoYykgMjAwMCwgMjAyNiwgT3JhY2xlIGFu ZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAgKiBETyBOT1QgQUxU RVIgT1IgUkVNT1ZFIENPUFlSSUdIVCBOT1RJQ0VTIE9SIFRISVMgRklMRSBIRUFERVIuCi0gICoK LSAgKiBUaGlzIGNvZGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeSBpdAotQEAgLTYzLDcgKzYzLDcgQEAgSmF2YV9zdW5fbmlvX2NoX0ZpbGVE aXNwYXRjaGVySW1wbF90cmFuc2ZlckZyb20wKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXMsCi0g ICAgIGlmIChuIDwgMCkgewotICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikKLSAgICAgICAg ICAgICByZXR1cm4gSU9TX1VOQVZBSUxBQkxFOwotLSAgICAgICAgaWYgKGVycm5vID09IEVOT1NZ UykKLSsgICAgICAgIGlmIChlcnJubyA9PSBFTk9TWVMgfHwgZXJybm8gPT0gRU9QTk9UU1VQUCkK LSAgICAgICAgICAgICByZXR1cm4gSU9TX1VOU1VQUE9SVEVEX0NBU0U7Ci0gICAgICAgICBpZiAo KGVycm5vID09IEVCQURGIHx8IGVycm5vID09IEVJTlZBTCB8fCBlcnJubyA9PSBFWERFVikgJiYK LSAgICAgICAgICAgICAoKHNzaXplX3QpY291bnQgPj0gMCkpCi1AQCAtMTAzLDYgKzEwMyw3IEBA IEphdmFfc3VuX25pb19jaF9GaWxlRGlzcGF0Y2hlckltcGxfdHJhbnNmZXJUbzAoSk5JRW52ICpl bnYsIGpvYmplY3QgdGhpcywKLSAgICAgICAgICAgICAgICAgY2FzZSBFSU5WQUw6Ci0gICAgICAg ICAgICAgICAgIGNhc2UgRU5PU1lTOgotICAgICAgICAgICAgICAgICBjYXNlIEVYREVWOgotKyAg ICAgICAgICAgICAgICBjYXNlIEVPUE5PVFNVUFA6Ci0gICAgICAgICAgICAgICAgICAgICAvLyBp Z25vcmUgYW5kIHRyeSBzZW5kZmlsZSgpCi0gICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg ICAgICAgICAgICAgICAgZGVmYXVsdDoKLWRpZmYgLS1naXQgYS9zcmMvamF2YS5iYXNlL2xpbnV4 L25hdGl2ZS9saWJuaW8vZnMvTGludXhOYXRpdmVEaXNwYXRjaGVyLmMgYi9zcmMvamF2YS5iYXNl L2xpbnV4L25hdGl2ZS9saWJuaW8vZnMvTGludXhOYXRpdmVEaXNwYXRjaGVyLmMKLWluZGV4IGM5 MGU5OWRkYTA3Li40Njc3NDExYjBiYSAxMDA2NDQKLS0tLSBhL3NyYy9qYXZhLmJhc2UvbGludXgv bmF0aXZlL2xpYm5pby9mcy9MaW51eE5hdGl2ZURpc3BhdGNoZXIuYwotKysrIGIvc3JjL2phdmEu YmFzZS9saW51eC9uYXRpdmUvbGlibmlvL2ZzL0xpbnV4TmF0aXZlRGlzcGF0Y2hlci5jCi1AQCAt MSw1ICsxLDUgQEAKLSAvKgotLSAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAyNCwgT3JhY2xlIGFu ZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKiBDb3B5cmlnaHQg KGMpIDIwMDgsIDIwMjYsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMg cmVzZXJ2ZWQuCi0gICogRE8gTk9UIEFMVEVSIE9SIFJFTU9WRSBDT1BZUklHSFQgTk9USUNFUyBP UiBUSElTIEZJTEUgSEVBREVSLgotICAqCi0gICogVGhpcyBjb2RlIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLUBAIC0xOTMsNiArMTkz LDcgQEAgSmF2YV9zdW5fbmlvX2ZzX0xpbnV4TmF0aXZlRGlzcGF0Y2hlcl9kaXJlY3RDb3B5MAot ICAgICAgICAgICAgICAgICAgICAgY2FzZSBFSU5WQUw6Ci0gICAgICAgICAgICAgICAgICAgICBj YXNlIEVOT1NZUzoKLSAgICAgICAgICAgICAgICAgICAgIGNhc2UgRVhERVY6Ci0rICAgICAgICAg ICAgICAgICAgICBjYXNlIEVPUE5PVFNVUFA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgLy8g aWdub3JlIGFuZCB0cnkgc2VuZGZpbGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr OwotICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLS0tIAotMi41Mi4wCi0KCmRpZmYgLS1n aXQgYS9qZGs4Mzc4NzEzLWMyX21pc3NpbmdfcG93X2NvbnN0YW50X2ZvbGRpbmcucGF0Y2ggYi9q ZGs4Mzc4NzEzLWMyX21pc3NpbmdfcG93X2NvbnN0YW50X2ZvbGRpbmcucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU2YmIxMQotLS0gL2Rldi9udWxsCisrKyBiL2pk azgzNzg3MTMtYzJfbWlzc2luZ19wb3dfY29uc3RhbnRfZm9sZGluZy5wYXRjaApAQCAtMCwwICsx LDYyNiBAQAorRnJvbSAxZjYxYjY3NTRiNWFiY2UwN2RiNDVmZDM4NWExOWMyY2Y5Mjk2YTA4IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FuZ2NoZW5nIFh1IDxreHVAcmVkaGF0LmNv bT4KK0RhdGU6IE1vbiwgMjcgQXByIDIwMjYgMTA6MTQ6MzkgLTA0MDAKK1N1YmplY3Q6IFtQQVRD SCAyLzJdIEJhY2twb3J0IDdmNjMxZWE5NThlMzAyNDZiOTI3ZjM1MjRmMGZiZjM3MzM0NDIyYjkK KworLS0tCisgc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jYWxsbm9kZS5jcHAgICAgICAgICAgIHwg MTc1ICsrKysrKysrKysrKysrCisgc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jYWxsbm9kZS5ocHAg ICAgICAgICAgIHwgIDE3ICsrCisgc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jbGFzc2VzLmhwcCAg ICAgICAgICAgIHwgICAxICsKKyBzcmMvaG90c3BvdC9zaGFyZS9vcHRvL2xpYnJhcnlfY2FsbC5j cHAgICAgICAgfCAgNjIgKy0tLS0KKyBzcmMvaG90c3BvdC9zaGFyZS9vcHRvL21hY3JvLmNwcCAg ICAgICAgICAgICAgfCAgMTkgKy0KKyAuLi4vaW50cmluc2ljcy9tYXRoL1Bvd0ROb2RlVGVzdHMu amF2YSAgICAgICAgfCAyMTggKysrKysrKysrKysrKysrKysrCisgLi4uL2NvbXBpbGVyL2xpYi9p cl9mcmFtZXdvcmsvSVJOb2RlLmphdmEgICAgIHwgIDExICsKKyA3IGZpbGVzIGNoYW5nZWQsIDQz NyBpbnNlcnRpb25zKCspLCA2NiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdGVz dC9ob3RzcG90L2p0cmVnL2NvbXBpbGVyL2ludHJpbnNpY3MvbWF0aC9Qb3dETm9kZVRlc3RzLmph dmEKKworZGlmZiAtLWdpdCBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vY2FsbG5vZGUuY3BwIGIv c3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jYWxsbm9kZS5jcHAKK2luZGV4IGZjNGIwYzM1ZGZmLi5j YjZjYzIwODJiMyAxMDA2NDQKKy0tLSBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vY2FsbG5vZGUu Y3BwCisrKysgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NhbGxub2RlLmNwcAorQEAgLTQyLDYg KzQyLDcgQEAKKyAjaW5jbHVkZSAib3B0by9yb290bm9kZS5ocHAiCisgI2luY2x1ZGUgIm9wdG8v cnVudGltZS5ocHAiCisgI2luY2x1ZGUgInJ1bnRpbWUvc2hhcmVkUnVudGltZS5ocHAiCisrI2lu Y2x1ZGUgInJ1bnRpbWUvc3R1YlJvdXRpbmVzLmhwcCIKKyAjaW5jbHVkZSAidXRpbGl0aWVzL3Bv d2VyT2ZUd28uaHBwIgorICNpbmNsdWRlICJjb2RlL3ZtcmVnLmhwcCIKKyAKK0BAIC0xMzU0LDYg KzEzNTUsMjUgQEAgVHVwbGVOb2RlKiBDYWxsTGVhZlB1cmVOb2RlOjptYWtlX3R1cGxlX29mX2lu cHV0X3N0YXRlX2FuZF90b3BfcmV0dXJuX3ZhbHVlcyhjb24KKyAgIHJldHVybiB0dXBsZTsKKyB9 CisgCisrQ2FsbExlYWZQdXJlTm9kZSogQ2FsbExlYWZQdXJlTm9kZTo6aW5saW5lX2NhbGxfbGVh Zl9wdXJlX25vZGUoTm9kZSogY29udHJvbCkgY29uc3QgeworKyAgTm9kZSogdG9wID0gQ29tcGls ZTo6Y3VycmVudCgpLT50b3AoKTsKKysgIGlmIChjb250cm9sID09IG51bGxwdHIpIHsKKysgICAg Y29udHJvbCA9IGluKFR5cGVGdW5jOjpDb250cm9sKTsKKysgIH0KKysKKysgIENhbGxMZWFmUHVy ZU5vZGUqIGNhbGwgPSBuZXcgQ2FsbExlYWZQdXJlTm9kZSh0ZigpLCBlbnRyeV9wb2ludCgpLCBf bmFtZSwgbnVsbHB0cik7CisrICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6Q29udHJvbCwgY29u dHJvbCk7CisrICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6SV9PLCB0b3ApOworKyAgY2FsbC0+ aW5pdF9yZXEoVHlwZUZ1bmM6Ok1lbW9yeSwgdG9wKTsKKysgIGNhbGwtPmluaXRfcmVxKFR5cGVG dW5jOjpSZXR1cm5BZHIsIHRvcCk7CisrICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6RnJhbWVQ dHIsIHRvcCk7CisrICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHRmKCktPmRvbWFpbigp LT5jbnQoKSAtIFR5cGVGdW5jOjpQYXJtczsgaSsrKSB7CisrICAgIGNhbGwtPmluaXRfcmVxKFR5 cGVGdW5jOjpQYXJtcyArIGksIGluKFR5cGVGdW5jOjpQYXJtcyArIGkpKTsKKysgIH0KKysKKysg IHJldHVybiBjYWxsOworK30KKysKKyBOb2RlKiBDYWxsTGVhZlB1cmVOb2RlOjpJZGVhbChQaGFz ZUdWTiogcGhhc2UsIGJvb2wgY2FuX3Jlc2hhcGUpIHsKKyAgIGlmIChpc19kZWFkKCkpIHsKKyAg ICAgcmV0dXJuIG51bGxwdHI7CitAQCAtMjQyNCwzICsyNDQ0LDE1OCBAQCBib29sIENhbGxOb2Rl OjptYXlfbW9kaWZ5X2FycmF5Y29weV9oZWxwZXIoY29uc3QgVHlwZU9vcFB0ciogZGVzdF90LCBj b25zdCBUeXBlTworIAorICAgcmV0dXJuIHRydWU7CisgfQorKworK1Bvd0ROb2RlOjpQb3dETm9k ZShDb21waWxlKiBDLCBOb2RlKiBiYXNlLCBOb2RlKiBleHApCisrICAgIDogQ2FsbExlYWZQdXJl Tm9kZSgKKysgICAgICAgIE9wdG9SdW50aW1lOjpNYXRoX0REX0RfVHlwZSgpLAorKyAgICAgICAg U3R1YlJvdXRpbmVzOjpkcG93KCkgIT0gbnVsbHB0ciA/IFN0dWJSb3V0aW5lczo6ZHBvdygpIDog Q0FTVF9GUk9NX0ZOX1BUUihhZGRyZXNzLCBTaGFyZWRSdW50aW1lOjpkcG93KSwKKysgICAgICAg ICJwb3ciLAorKyAgICAgICAgbnVsbHB0cikgeworKyAgYWRkX2ZsYWcoRmxhZ19pc19tYWNybyk7 CisrICBDLT5hZGRfbWFjcm9fbm9kZSh0aGlzKTsKKysKKysgIGluaXRfcmVxKFR5cGVGdW5jOjpQ YXJtcyArIDAsIGJhc2UpOworKyAgaW5pdF9yZXEoVHlwZUZ1bmM6OlBhcm1zICsgMSwgQy0+dG9w KCkpOyAgLy8gZG91YmxlIHNsb3QgcGFkZGluZworKyAgaW5pdF9yZXEoVHlwZUZ1bmM6OlBhcm1z ICsgMiwgZXhwKTsKKysgIGluaXRfcmVxKFR5cGVGdW5jOjpQYXJtcyArIDMsIEMtPnRvcCgpKTsg IC8vIGRvdWJsZSBzbG90IHBhZGRpbmcKKyt9CisrCisrY29uc3QgVHlwZSogUG93RE5vZGU6OlZh bHVlKFBoYXNlR1ZOKiBwaGFzZSkgY29uc3QgeworKyAgY29uc3QgVHlwZSogdF9iYXNlID0gcGhh c2UtPnR5cGUoYmFzZSgpKTsKKysgIGNvbnN0IFR5cGUqIHRfZXhwICA9IHBoYXNlLT50eXBlKGV4 cCgpKTsKKysKKysgIGlmICh0X2Jhc2UgPT0gVHlwZTo6VE9QIHx8IHRfZXhwID09IFR5cGU6OlRP UCkgeworKyAgICByZXR1cm4gVHlwZTo6VE9QOworKyAgfQorKworKyAgY29uc3QgVHlwZUQqIGJh c2VfY29uID0gdF9iYXNlLT5pc2FfZG91YmxlX2NvbnN0YW50KCk7CisrICBjb25zdCBUeXBlRCog ZXhwX2NvbiAgPSB0X2V4cC0+aXNhX2RvdWJsZV9jb25zdGFudCgpOworKyAgY29uc3QgVHlwZUQq IHJlc3VsdF90ID0gbnVsbHB0cjsKKysKKysgIC8vIGNvbnN0YW50IGZvbGRpbmc6IGJvdGggaW5w dXRzIGFyZSBjb25zdGFudHMKKysgIGlmIChiYXNlX2NvbiAhPSBudWxscHRyICYmIGV4cF9jb24g IT0gbnVsbHB0cikgeworKyAgICByZXN1bHRfdCA9IFR5cGVEOjptYWtlKFNoYXJlZFJ1bnRpbWU6 OmRwb3coYmFzZV9jb24tPmdldGQoKSwgZXhwX2Nvbi0+Z2V0ZCgpKSk7CisrICB9CisrCisrICAv LyBTcGVjaWFsIGNhc2VzIHdoZW4gb25seSB0aGUgZXhwb25lbnQgaXMga25vd246CisrICBpZiAo ZXhwX2NvbiAhPSBudWxscHRyKSB7CisrICAgIGRvdWJsZSBlID0gZXhwX2Nvbi0+Z2V0ZCgpOwor KworKyAgICAvLyBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHBvc2l0aXZlIG9yIG5lZ2F0aXZl IHplcm8sIHRoZW4gdGhlIHJlc3VsdCBpcyAxLjAuCisrICAgIC8vIGkuZS4sIHBvdyh4LCArLy0w LjBEKSA9PiAxLjAKKysgICAgaWYgKGUgPT0gMC4wKSB7IC8vIHRydWUgZm9yIGJvdGggLTAuMCBh bmQgKzAuMAorKyAgICAgIHJlc3VsdF90ID0gVHlwZUQ6Ok9ORTsKKysgICAgfQorKworKyAgICAv LyBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIE5hTiwgdGhlbiB0aGUgcmVzdWx0IGlzIE5hTi4K KysgICAgLy8gaS5lLiwgcG93KHgsIE5hTikgPT4gTmFOCisrICAgIGlmIChnX2lzbmFuKGUpKSB7 CisrICAgICAgcmVzdWx0X3QgPSBUeXBlRDo6bWFrZShOQU4pOworKyAgICB9CisrICB9CisrCisr ICBpZiAocmVzdWx0X3QgIT0gbnVsbHB0cikgeworKyAgICAvLyBXZSBjYW4ndCBzaW1wbHkgcmV0 dXJuIGEgVHlwZUQgaGVyZSwgaXQgbXVzdCBiZSBhIHR1cGxlIHR5cGUgdG8gYmUgY29tcGF0aWJs ZSB3aXRoIGNhbGwgbm9kZXMuCisrICAgIGNvbnN0IFR5cGUqKiBmaWVsZHMgPSBUeXBlVHVwbGU6 OmZpZWxkcygyKTsKKysgICAgZmllbGRzW1R5cGVGdW5jOjpQYXJtcyArIDBdID0gcmVzdWx0X3Q7 CisrICAgIGZpZWxkc1tUeXBlRnVuYzo6UGFybXMgKyAxXSA9IFR5cGU6OkhBTEY7CisrICAgIHJl dHVybiBUeXBlVHVwbGU6Om1ha2UoVHlwZUZ1bmM6OlBhcm1zICsgMiwgZmllbGRzKTsKKysgIH0K KysKKysgIHJldHVybiB0ZigpLT5yYW5nZSgpOworK30KKysKKytOb2RlKiBQb3dETm9kZTo6SWRl YWwoUGhhc2VHVk4qIHBoYXNlLCBib29sIGNhbl9yZXNoYXBlKSB7CisrICBpZiAoIWNhbl9yZXNo YXBlKSB7CisrICAgIHJldHVybiBudWxscHRyOyAgLy8gd2FpdCBmb3IgaWd2bgorKyAgfQorKwor KyAgUGhhc2VJdGVyR1ZOKiBpZ3ZuID0gcGhhc2UtPmlzX0l0ZXJHVk4oKTsKKysgIE5vZGUqIGJh c2UgPSB0aGlzLT5iYXNlKCk7CisrICBOb2RlKiBleHAgID0gdGhpcy0+ZXhwKCk7CisrCisrICBj b25zdCBUeXBlKiB0X2V4cCAgPSBwaGFzZS0+dHlwZShleHApOworKyAgY29uc3QgVHlwZUQqIGV4 cF9jb24gID0gdF9leHAtPmlzYV9kb3VibGVfY29uc3RhbnQoKTsKKysKKysgIC8vIFNwZWNpYWwg Y2FzZXMgd2hlbiBvbmx5IHRoZSBleHBvbmVudCBpcyBrbm93bjoKKysgIGlmIChleHBfY29uICE9 IG51bGxwdHIpIHsKKysgICAgZG91YmxlIGUgPSBleHBfY29uLT5nZXRkKCk7CisrCisrICAgIC8v IElmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgMS4wLCB0aGVuIHRoZSByZXN1bHQgaXMgdGhlIHNh bWUgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LgorKyAgICAvLyBpLmUuLCBwb3coeCwgMS4wKSA9PiB4 CisrICAgIGlmIChlID09IDEuMCkgeworKyAgICAgIHJldHVybiBtYWtlX3R1cGxlX29mX2lucHV0 X3N0YXRlX2FuZF9yZXN1bHQoaWd2biwgYmFzZSk7CisrICAgIH0KKysKKysgICAgLy8gSWYgdGhl IHNlY29uZCBhcmd1bWVudCBpcyAyLjAsIHRoZW4gc3RyZW5ndGggcmVkdWNlIHRvIG11bHRpcGxp Y2F0aW9ucy4KKysgICAgLy8gaS5lLiwgcG93KHgsIDIuMCkgPT4geCAqIHgKKysgICAgaWYgKGUg PT0gMi4wKSB7CisrICAgICAgTm9kZSogbXVsID0gaWd2bi0+dHJhbnNmb3JtKG5ldyBNdWxETm9k ZShiYXNlLCBiYXNlKSk7CisrICAgICAgcmV0dXJuIG1ha2VfdHVwbGVfb2ZfaW5wdXRfc3RhdGVf YW5kX3Jlc3VsdChpZ3ZuLCBtdWwpOworKyAgICB9CisrCisrICAgIC8vIElmIHRoZSBzZWNvbmQg YXJndW1lbnQgaXMgMC41LCB0aGUgc3RyZW5ndGggcmVkdWNlIHRvIHNxdWFyZSByb290cy4KKysg ICAgLy8gaS5lLiwgcG93KHgsIDAuNSkgPT4gc3FydCh4KSBpZmYgeCA+IDAKKysgICAgaWYgKGUg PT0gMC41ICYmIE1hdGNoZXI6Om1hdGNoX3J1bGVfc3VwcG9ydGVkKE9wX1NxcnREKSkgeworKyAg ICAgIE5vZGUqIGN0cmwgPSBpbihUeXBlRnVuYzo6Q29udHJvbCk7CisrICAgICAgTm9kZSogemVy byA9IGlndm4tPnplcm9jb24oVF9ET1VCTEUpOworKworKyAgICAgIC8vIEFjY29yZGluZyB0byB0 aGUgQVBJIHNwZWNzLCBwb3coLTAuMCwgMC41KSA9IDAuMCBhbmQgc3FydCgtMC4wKSA9IC0wLjAu CisrICAgICAgLy8gU28gcG93KC0wLjAsIDAuNSkgc2hvdWxkbid0IGJlIHJlcGxhY2VkIHdpdGgg c3FydCgtMC4wKS4KKysgICAgICAvLyAtMC4wLyswLjAgYXJlIGJvdGggZXhjbHVkZWQgc2luY2Ug ZmxvYXRpbmctcG9pbnQgY29tcGFyaXNvbiBkb2Vzbid0IGRpc3Rpbmd1aXNoIC0wLjAgZnJvbSAr MC4wLgorKyAgICAgIE5vZGUqIGNtcCA9IGlndm4tPnJlZ2lzdGVyX25ld19ub2RlX3dpdGhfb3B0 aW1pemVyKG5ldyBDbXBETm9kZShiYXNlLCB6ZXJvKSk7CisrICAgICAgTm9kZSogdGVzdCA9IGln dm4tPnJlZ2lzdGVyX25ld19ub2RlX3dpdGhfb3B0aW1pemVyKG5ldyBCb29sTm9kZShjbXAsIEJv b2xUZXN0OjpsZSkpOworKworKyAgICAgIElmTm9kZSogaWZmID0gbmV3IElmTm9kZShjdHJsLCB0 ZXN0LCBQUk9CX1VOTElLRUxZX01BRygzKSwgQ09VTlRfVU5LTk9XTik7CisrICAgICAgaWd2bi0+ cmVnaXN0ZXJfbmV3X25vZGVfd2l0aF9vcHRpbWl6ZXIoaWZmKTsKKysgICAgICBOb2RlKiBpZl9z bG93ID0gaWd2bi0+cmVnaXN0ZXJfbmV3X25vZGVfd2l0aF9vcHRpbWl6ZXIobmV3IElmVHJ1ZU5v ZGUoaWZmKSk7ICAvLyB4IDw9IDAKKysgICAgICBOb2RlKiBpZl9mYXN0ID0gaWd2bi0+cmVnaXN0 ZXJfbmV3X25vZGVfd2l0aF9vcHRpbWl6ZXIobmV3IElmRmFsc2VOb2RlKGlmZikpOyAvLyB4ID4g MAorKworKyAgICAgIC8vIHNsb3cgcGF0aDogY2FsbCBwb3coeCwgMC41KQorKyAgICAgIE5vZGUq IGNhbGwgPSBpZ3ZuLT5yZWdpc3Rlcl9uZXdfbm9kZV93aXRoX29wdGltaXplcihpbmxpbmVfY2Fs bF9sZWFmX3B1cmVfbm9kZShpZl9zbG93KSk7CisrICAgICAgTm9kZSogY2FsbF9jdHJsID0gaWd2 bi0+cmVnaXN0ZXJfbmV3X25vZGVfd2l0aF9vcHRpbWl6ZXIobmV3IFByb2pOb2RlKGNhbGwsIFR5 cGVGdW5jOjpDb250cm9sKSk7CisrICAgICAgTm9kZSogY2FsbF9yZXN1bHQgPSBpZ3ZuLT5yZWdp c3Rlcl9uZXdfbm9kZV93aXRoX29wdGltaXplcihuZXcgUHJvak5vZGUoY2FsbCwgVHlwZUZ1bmM6 OlBhcm1zICsgMCkpOworKworKyAgICAgIC8vIGZhc3QgcGF0aDogc3FydCh4KQorKyAgICAgIE5v ZGUqIHNxcnQgPSBpZ3ZuLT5yZWdpc3Rlcl9uZXdfbm9kZV93aXRoX29wdGltaXplcihuZXcgU3Fy dEROb2RlKGlndm4tPkMsIGlmX2Zhc3QsIGJhc2UpKTsKKysKKysgICAgICAvLyBtZXJnZSBwYXRo cworKyAgICAgIFJlZ2lvbk5vZGUqIHJlZ2lvbiA9IG5ldyBSZWdpb25Ob2RlKDMpOworKyAgICAg IGlndm4tPnJlZ2lzdGVyX25ld19ub2RlX3dpdGhfb3B0aW1pemVyKHJlZ2lvbik7CisrICAgICAg cmVnaW9uLT5pbml0X3JlcSgxLCBjYWxsX2N0cmwpOyAvLyBzbG93IHBhdGgKKysgICAgICByZWdp b24tPmluaXRfcmVxKDIsIGlmX2Zhc3QpOyAgIC8vIGZhc3QgcGF0aAorKworKyAgICAgIFBoaU5v ZGUqIHBoaSA9IG5ldyBQaGlOb2RlKHJlZ2lvbiwgVHlwZTo6RE9VQkxFKTsKKysgICAgICBpZ3Zu LT5yZWdpc3Rlcl9uZXdfbm9kZV93aXRoX29wdGltaXplcihwaGkpOworKyAgICAgIHBoaS0+aW5p dF9yZXEoMSwgY2FsbF9yZXN1bHQpOyAvLyBzbG93OiBwb3coKSByZXN1bHQKKysgICAgICBwaGkt PmluaXRfcmVxKDIsIHNxcnQpOyAgICAgICAgLy8gZmFzdDogc3FydCgpIHJlc3VsdAorKworKyAg ICAgIGlndm4tPkMtPnNldF9oYXNfc3BsaXRfaWZzKHRydWUpOyAvLyBIYXMgY2hhbmNlIGZvciBz cGxpdC1pZiBvcHRpbWl6YXRpb24KKysKKysgICAgICByZXR1cm4gbWFrZV90dXBsZV9vZl9pbnB1 dF9zdGF0ZV9hbmRfcmVzdWx0KGlndm4sIHBoaSwgcmVnaW9uKTsKKysgICAgfQorKyAgfQorKwor KyAgcmV0dXJuIENhbGxMZWFmUHVyZU5vZGU6OklkZWFsKHBoYXNlLCBjYW5fcmVzaGFwZSk7Cisr fQorKworKy8vIFdlIGNhbid0IHNpbXBseSBoYXZlIElkZWFsKCkgcmV0dXJuaW5nIGEgQ29uIG9y IE11bE5vZGUgc2luY2UgdGhlIHVzZXJzIGFyZSBzdGlsbCBleHBlY3RpbmcgYSBDYWxsIG5vZGUs IGJ1dCB3ZSBjb3VsZAorKy8vIHByb2R1Y2UgYSB0dXBsZSB0aGF0IGZvbGxvd3MgdGhlIHNhbWUg cGF0dGVybiBzbyB1c2VycyBjYW4gc3RpbGwgZ2V0IGNvbnRyb2wsIGlvLCBtZW1vcnksIGV0Yy4u CisrVHVwbGVOb2RlKiBQb3dETm9kZTo6bWFrZV90dXBsZV9vZl9pbnB1dF9zdGF0ZV9hbmRfcmVz dWx0KFBoYXNlSXRlckdWTiogcGhhc2UsIE5vZGUqIHJlc3VsdCwgTm9kZSogY29udHJvbCkgewor KyAgaWYgKGNvbnRyb2wgPT0gbnVsbHB0cikgeworKyAgICBjb250cm9sID0gaW4oVHlwZUZ1bmM6 OkNvbnRyb2wpOworKyAgfQorKworKyAgQ29tcGlsZSogQyA9IHBoYXNlLT5DOworKyAgQy0+cmVt b3ZlX21hY3JvX25vZGUodGhpcyk7CisrICBUdXBsZU5vZGUqIHR1cGxlID0gVHVwbGVOb2RlOjpt YWtlKAorKyAgICAgIHRmKCktPnJhbmdlKCksCisrICAgICAgY29udHJvbCwKKysgICAgICBpbihU eXBlRnVuYzo6SV9PKSwKKysgICAgICBpbihUeXBlRnVuYzo6TWVtb3J5KSwKKysgICAgICBpbihU eXBlRnVuYzo6RnJhbWVQdHIpLAorKyAgICAgIGluKFR5cGVGdW5jOjpSZXR1cm5BZHIpLAorKyAg ICAgIHJlc3VsdCwKKysgICAgICBDLT50b3AoKSk7CisrICByZXR1cm4gdHVwbGU7CisrfQorZGlm ZiAtLWdpdCBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vY2FsbG5vZGUuaHBwIGIvc3JjL2hvdHNw b3Qvc2hhcmUvb3B0by9jYWxsbm9kZS5ocHAKK2luZGV4IDI0NjJhODgxNDNmLi5iYjg3NzQ2YTNm NiAxMDA2NDQKKy0tLSBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vY2FsbG5vZGUuaHBwCisrKysg Yi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2NhbGxub2RlLmhwcAorQEAgLTk1Myw2ICs5NTMsOCBA QCBjbGFzcyBDYWxsTGVhZlB1cmVOb2RlIDogcHVibGljIENhbGxMZWFmTm9kZSB7CisgICB9Cisg ICBpbnQgT3Bjb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICBOb2RlKiBJZGVhbChQaGFzZUdWTiog cGhhc2UsIGJvb2wgY2FuX3Jlc2hhcGUpIG92ZXJyaWRlOworKworKyAgQ2FsbExlYWZQdXJlTm9k ZSogaW5saW5lX2NhbGxfbGVhZl9wdXJlX25vZGUoTm9kZSogY29udHJvbCA9IG51bGxwdHIpIGNv bnN0OworIH07CisgCisgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1DYWxsTGVhZk5v RlBOb2RlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQEAgLTEzMDQsNCArMTMwNiwx OSBAQCBjbGFzcyBVbmxvY2tOb2RlIDogcHVibGljIEFic3RyYWN0TG9ja05vZGUgeworICAgSlZN U3RhdGUqIGRiZ19qdm1zKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorICNlbmRpZgorIH07 CisrCisrLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1Qb3dETm9kZS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrY2xhc3MgUG93RE5vZGUgOiBwdWJsaWMgQ2Fs bExlYWZQdXJlTm9kZSB7CisrICBUdXBsZU5vZGUqIG1ha2VfdHVwbGVfb2ZfaW5wdXRfc3RhdGVf YW5kX3Jlc3VsdChQaGFzZUl0ZXJHVk4qIHBoYXNlLCBOb2RlKiByZXN1bHQsIE5vZGUqIGNvbnRy b2wgPSBudWxscHRyKTsKKysKKytwdWJsaWM6CisrICBQb3dETm9kZShDb21waWxlKiBDLCBOb2Rl KiBiYXNlLCBOb2RlKiBleHApOworKyAgaW50IE9wY29kZSgpIGNvbnN0IG92ZXJyaWRlOworKyAg Y29uc3QgVHlwZSogVmFsdWUoUGhhc2VHVk4qIHBoYXNlKSBjb25zdCBvdmVycmlkZTsKKysgIE5v ZGUqIElkZWFsKFBoYXNlR1ZOKiBwaGFzZSwgYm9vbCBjYW5fcmVzaGFwZSkgb3ZlcnJpZGU7Cisr CisrICBOb2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gaW4oVHlwZUZ1bmM6OlBhcm1zICsgMCk7 IH0KKysgIE5vZGUqIGV4cCgpIGNvbnN0ICB7IHJldHVybiBpbihUeXBlRnVuYzo6UGFybXMgKyAy KTsgfQorK307CisrCisgI2VuZGlmIC8vIFNIQVJFX09QVE9fQ0FMTE5PREVfSFBQCitkaWZmIC0t Z2l0IGEvc3JjL2hvdHNwb3Qvc2hhcmUvb3B0by9jbGFzc2VzLmhwcCBiL3NyYy9ob3RzcG90L3No YXJlL29wdG8vY2xhc3Nlcy5ocHAKK2luZGV4IDU4N2Q1ZmFkOGYyLi5iN2JhMTZlOTlhMCAxMDA2 NDQKKy0tLSBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vY2xhc3Nlcy5ocHAKKysrKyBiL3NyYy9o b3RzcG90L3NoYXJlL29wdG8vY2xhc3Nlcy5ocHAKK0BAIC0yODMsNiArMjgzLDcgQEAgbWFjcm8o T3BhcXVlWmVyb1RyaXBHdWFyZCkKKyBtYWNybyhPcGFxdWVOb3ROdWxsKQorIG1hY3JvKE9wYXF1 ZUluaXRpYWxpemVkQXNzZXJ0aW9uUHJlZGljYXRlKQorIG1hY3JvKE9wYXF1ZVRlbXBsYXRlQXNz ZXJ0aW9uUHJlZGljYXRlKQorK21hY3JvKFBvd0QpCisgbWFjcm8oUHJvZmlsZUJvb2xlYW4pCisg bWFjcm8oT3JJKQorIG1hY3JvKE9yTCkKK2RpZmYgLS1naXQgYS9zcmMvaG90c3BvdC9zaGFyZS9v cHRvL2xpYnJhcnlfY2FsbC5jcHAgYi9zcmMvaG90c3BvdC9zaGFyZS9vcHRvL2xpYnJhcnlfY2Fs bC5jcHAKK2luZGV4IDEyOTYwZDEwMWE4Li42YzcxYTYxYmE3NSAxMDA2NDQKKy0tLSBhL3NyYy9o b3RzcG90L3NoYXJlL29wdG8vbGlicmFyeV9jYWxsLmNwcAorKysrIGIvc3JjL2hvdHNwb3Qvc2hh cmUvb3B0by9saWJyYXJ5X2NhbGwuY3BwCitAQCAtMTgxNyw2MSArMTgxNywxNyBAQCBib29sIExp YnJhcnlDYWxsS2l0OjpydW50aW1lX21hdGgoY29uc3QgVHlwZUZ1bmMqIGNhbGxfdHlwZSwgYWRk cmVzcyBmdW5jQWRkciwgYworIAorIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0taW5s aW5lX21hdGhfcG93LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBib29sIExpYnJhcnlD YWxsS2l0OjppbmxpbmVfbWF0aF9wb3coKSB7CisrICBOb2RlKiBiYXNlID0gYXJndW1lbnQoMCk7 CisgICBOb2RlKiBleHAgPSBhcmd1bWVudCgyKTsKKy0gIGNvbnN0IFR5cGVEKiBkID0gX2d2bi50 eXBlKGV4cCktPmlzYV9kb3VibGVfY29uc3RhbnQoKTsKKy0gIGlmIChkICE9IG51bGxwdHIpIHsK Ky0gICAgaWYgKGQtPmdldGQoKSA9PSAyLjApIHsKKy0gICAgICAvLyBTcGVjaWFsIGNhc2U6IHBv dyh4LCAyLjApID0+IHggKiB4CistICAgICAgTm9kZSogYmFzZSA9IGFyZ3VtZW50KDApOworLSAg ICAgIHNldF9yZXN1bHQoX2d2bi50cmFuc2Zvcm0obmV3IE11bEROb2RlKGJhc2UsIGJhc2UpKSk7 CistICAgICAgcmV0dXJuIHRydWU7CistICAgIH0gZWxzZSBpZiAoZC0+Z2V0ZCgpID09IDAuNSAm JiBNYXRjaGVyOjptYXRjaF9ydWxlX3N1cHBvcnRlZChPcF9TcXJ0RCkpIHsKKy0gICAgICAvLyBT cGVjaWFsIGNhc2U6IHBvdyh4LCAwLjUpID0+IHNxcnQoeCkKKy0gICAgICBOb2RlKiBiYXNlID0g YXJndW1lbnQoMCk7CistICAgICAgTm9kZSogemVybyA9IF9ndm4uemVyb2NvbihUX0RPVUJMRSk7 CistCistICAgICAgUmVnaW9uTm9kZSogcmVnaW9uID0gbmV3IFJlZ2lvbk5vZGUoMyk7CistICAg ICAgTm9kZSogcGhpID0gbmV3IFBoaU5vZGUocmVnaW9uLCBUeXBlOjpET1VCTEUpOworLQorLSAg ICAgIE5vZGUqIGNtcCAgPSBfZ3ZuLnRyYW5zZm9ybShuZXcgQ21wRE5vZGUoYmFzZSwgemVybykp OworLSAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgQVBJIHNwZWNzLCBwb3coLTAuMCwgMC41KSA9 IDAuMCBhbmQgc3FydCgtMC4wKSA9IC0wLjAuCistICAgICAgLy8gU28gcG93KC0wLjAsIDAuNSkg c2hvdWxkbid0IGJlIHJlcGxhY2VkIHdpdGggc3FydCgtMC4wKS4KKy0gICAgICAvLyAtMC4wLysw LjAgYXJlIGJvdGggZXhjbHVkZWQgc2luY2UgZmxvYXRpbmctcG9pbnQgY29tcGFyaXNvbiBkb2Vz bid0IGRpc3Rpbmd1aXNoIC0wLjAgZnJvbSArMC4wLgorLSAgICAgIE5vZGUqIHRlc3QgPSBfZ3Zu LnRyYW5zZm9ybShuZXcgQm9vbE5vZGUoY21wLCBCb29sVGVzdDo6bGUpKTsKKy0KKy0gICAgICBO b2RlKiBpZl9wb3cgPSBnZW5lcmF0ZV9zbG93X2d1YXJkKHRlc3QsIG51bGxwdHIpOworLSAgICAg IE5vZGUqIHZhbHVlX3NxcnQgPSBfZ3ZuLnRyYW5zZm9ybShuZXcgU3FydEROb2RlKEMsIGNvbnRy b2woKSwgYmFzZSkpOworLSAgICAgIHBoaS0+aW5pdF9yZXEoMSwgdmFsdWVfc3FydCk7CistICAg ICAgcmVnaW9uLT5pbml0X3JlcSgxLCBjb250cm9sKCkpOworLQorLSAgICAgIGlmIChpZl9wb3cg IT0gbnVsbHB0cikgeworLSAgICAgICAgc2V0X2NvbnRyb2woaWZfcG93KTsKKy0gICAgICAgIGFk ZHJlc3MgdGFyZ2V0ID0gU3R1YlJvdXRpbmVzOjpkcG93KCkgIT0gbnVsbHB0ciA/IFN0dWJSb3V0 aW5lczo6ZHBvdygpIDoKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENBU1RfRlJPTV9GTl9QVFIoYWRkcmVzcywgU2hhcmVkUnVudGltZTo6 ZHBvdyk7CistICAgICAgICBjb25zdCBUeXBlUHRyKiBub19tZW1vcnlfZWZmZWN0cyA9IG51bGxw dHI7CistICAgICAgICBOb2RlKiB0cmlnID0gbWFrZV9ydW50aW1lX2NhbGwoUkNfTEVBRiwgT3B0 b1J1bnRpbWU6Ok1hdGhfRERfRF9UeXBlKCksIHRhcmdldCwgIlBPVyIsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9fbWVtb3J5X2VmZmVjdHMsIGJhc2UsIHRvcCgp LCBleHAsIHRvcCgpKTsKKy0gICAgICAgIE5vZGUqIHZhbHVlX3BvdyA9IF9ndm4udHJhbnNmb3Jt KG5ldyBQcm9qTm9kZSh0cmlnLCBUeXBlRnVuYzo6UGFybXMrMCkpOworLSNpZmRlZiBBU1NFUlQK Ky0gICAgICAgIE5vZGUqIHZhbHVlX3RvcCA9IF9ndm4udHJhbnNmb3JtKG5ldyBQcm9qTm9kZSh0 cmlnLCBUeXBlRnVuYzo6UGFybXMrMSkpOworLSAgICAgICAgYXNzZXJ0KHZhbHVlX3RvcCA9PSB0 b3AoKSwgInNlY29uZCB2YWx1ZSBtdXN0IGJlIHRvcCIpOworLSNlbmRpZgorLSAgICAgICAgcGhp LT5pbml0X3JlcSgyLCB2YWx1ZV9wb3cpOworLSAgICAgICAgcmVnaW9uLT5pbml0X3JlcSgyLCBf Z3ZuLnRyYW5zZm9ybShuZXcgUHJvak5vZGUodHJpZywgVHlwZUZ1bmM6OkNvbnRyb2wpKSk7Cist ICAgICAgfQorLQorLSAgICAgIEMtPnNldF9oYXNfc3BsaXRfaWZzKHRydWUpOyAvLyBIYXMgY2hh bmNlIGZvciBzcGxpdC1pZiBvcHRpbWl6YXRpb24KKy0gICAgICBzZXRfY29udHJvbChfZ3ZuLnRy YW5zZm9ybShyZWdpb24pKTsKKy0gICAgICByZWNvcmRfZm9yX2lndm4ocmVnaW9uKTsKKy0gICAg ICBzZXRfcmVzdWx0KF9ndm4udHJhbnNmb3JtKHBoaSkpOworIAorLSAgICAgIHJldHVybiB0cnVl OworLSAgICB9CistICB9CistCistICByZXR1cm4gU3R1YlJvdXRpbmVzOjpkcG93KCkgIT0gbnVs bHB0ciA/CistICAgIHJ1bnRpbWVfbWF0aChPcHRvUnVudGltZTo6TWF0aF9ERF9EX1R5cGUoKSwg U3R1YlJvdXRpbmVzOjpkcG93KCksICAiZHBvdyIpIDoKKy0gICAgcnVudGltZV9tYXRoKE9wdG9S dW50aW1lOjpNYXRoX0REX0RfVHlwZSgpLCBDQVNUX0ZST01fRk5fUFRSKGFkZHJlc3MsIFNoYXJl ZFJ1bnRpbWU6OmRwb3cpLCAgIlBPVyIpOworKyAgQ2FsbE5vZGUqIHBvdyA9IG5ldyBQb3dETm9k ZShDLCBiYXNlLCBleHApOworKyAgc2V0X3ByZWRlZmluZWRfaW5wdXRfZm9yX3J1bnRpbWVfY2Fs bChwb3cpOworKyAgcG93ID0gX2d2bi50cmFuc2Zvcm0ocG93KS0+YXNfQ2FsbExlYWZQdXJlKCk7 CisrICBzZXRfcHJlZGVmaW5lZF9vdXRwdXRfZm9yX3J1bnRpbWVfY2FsbChwb3cpOworKyAgTm9k ZSogcmVzdWx0ID0gX2d2bi50cmFuc2Zvcm0obmV3IFByb2pOb2RlKHBvdywgVHlwZUZ1bmM6OlBh cm1zICsgMCkpOworKyAgcmVjb3JkX2Zvcl9pZ3ZuKHBvdyk7CisrICBzZXRfcmVzdWx0KHJlc3Vs dCk7CisrICByZXR1cm4gdHJ1ZTsKKyB9CisgCisgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS1pbmxpbmVfbWF0aF9uYXRpdmUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGlm ZiAtLWdpdCBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbWFjcm8uY3BwIGIvc3JjL2hvdHNwb3Qv c2hhcmUvb3B0by9tYWNyby5jcHAKK2luZGV4IGFhZmM1ZDNjMTcwLi5hMjgwNDNjOGQ4ZiAxMDA2 NDQKKy0tLSBhL3NyYy9ob3RzcG90L3NoYXJlL29wdG8vbWFjcm8uY3BwCisrKysgYi9zcmMvaG90 c3BvdC9zaGFyZS9vcHRvL21hY3JvLmNwcAorQEAgLTI0ODQsNiArMjQ4NCw3IEBAIHZvaWQgUGhh c2VNYWNyb0V4cGFuZDo6ZWxpbWluYXRlX21hY3JvX25vZGVzKCkgeworICAgICAgICAgYXNzZXJ0 KG4tPk9wY29kZSgpID09IE9wX0xvb3BMaW1pdCB8fAorICAgICAgICAgICAgICAgIG4tPk9wY29k ZSgpID09IE9wX01vZEQgfHwKKyAgICAgICAgICAgICAgICBuLT5PcGNvZGUoKSA9PSBPcF9Nb2RG IHx8CisrICAgICAgICAgICAgICAgbi0+T3Bjb2RlKCkgPT0gT3BfUG93RCB8fAorICAgICAgICAg ICAgICAgIG4tPmlzX09wYXF1ZU5vdE51bGwoKSAgICAgICB8fAorICAgICAgICAgICAgICAgIG4t PmlzX09wYXF1ZUluaXRpYWxpemVkQXNzZXJ0aW9uUHJlZGljYXRlKCkgfHwKKyAgICAgICAgICAg ICAgICBuLT5PcGNvZGUoKSA9PSBPcF9NYXhMICAgICAgfHwKK0BAIC0yNjM3LDE5ICsyNjM4LDEx IEBAIGJvb2wgUGhhc2VNYWNyb0V4cGFuZDo6ZXhwYW5kX21hY3JvX25vZGVzKCkgeworICAgICBk ZWZhdWx0OgorICAgICAgIHN3aXRjaCAobi0+T3Bjb2RlKCkpIHsKKyAgICAgICBjYXNlIE9wX01v ZEQ6CistICAgICAgY2FzZSBPcF9Nb2RGOiB7CistICAgICAgICBDYWxsTm9kZSogbW9kX21hY3Jv ID0gbi0+YXNfQ2FsbCgpOworLSAgICAgICAgQ2FsbE5vZGUqIGNhbGwgPSBuZXcgQ2FsbExlYWZQ dXJlTm9kZShtb2RfbWFjcm8tPnRmKCksIG1vZF9tYWNyby0+ZW50cnlfcG9pbnQoKSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kX21hY3JvLT5fbmFt ZSwgVHlwZVJhd1B0cjo6Qk9UVE9NKTsKKy0gICAgICAgIGNhbGwtPmluaXRfcmVxKFR5cGVGdW5j OjpDb250cm9sLCBtb2RfbWFjcm8tPmluKFR5cGVGdW5jOjpDb250cm9sKSk7CistICAgICAgICBj YWxsLT5pbml0X3JlcShUeXBlRnVuYzo6SV9PLCBDLT50b3AoKSk7CistICAgICAgICBjYWxsLT5p bml0X3JlcShUeXBlRnVuYzo6TWVtb3J5LCBDLT50b3AoKSk7CistICAgICAgICBjYWxsLT5pbml0 X3JlcShUeXBlRnVuYzo6UmV0dXJuQWRyLCBDLT50b3AoKSk7CistICAgICAgICBjYWxsLT5pbml0 X3JlcShUeXBlRnVuYzo6RnJhbWVQdHIsIEMtPnRvcCgpKTsKKy0gICAgICAgIGZvciAodW5zaWdu ZWQgaW50IGkgPSAwOyBpIDwgbW9kX21hY3JvLT50ZigpLT5kb21haW4oKS0+Y250KCkgLSBUeXBl RnVuYzo6UGFybXM7IGkrKykgeworLSAgICAgICAgICBjYWxsLT5pbml0X3JlcShUeXBlRnVuYzo6 UGFybXMgKyBpLCBtb2RfbWFjcm8tPmluKFR5cGVGdW5jOjpQYXJtcyArIGkpKTsKKy0gICAgICAg IH0KKy0gICAgICAgIF9pZ3ZuLnJlcGxhY2Vfbm9kZShtb2RfbWFjcm8sIGNhbGwpOworKyAgICAg IGNhc2UgT3BfTW9kRjoKKysgICAgICBjYXNlIE9wX1Bvd0Q6IHsKKysgICAgICAgIENhbGxMZWFm UHVyZU5vZGUqIGNhbGxfbWFjcm8gPSBuLT5hc19DYWxsTGVhZlB1cmUoKTsKKysgICAgICAgIENh bGxMZWFmUHVyZU5vZGUqIGNhbGwgPSBjYWxsX21hY3JvLT5pbmxpbmVfY2FsbF9sZWFmX3B1cmVf bm9kZSgpOworKyAgICAgICAgX2lndm4ucmVwbGFjZV9ub2RlKGNhbGxfbWFjcm8sIGNhbGwpOwor ICAgICAgICAgdHJhbnNmb3JtX2xhdGVyKGNhbGwpOworICAgICAgICAgYnJlYWs7CisgICAgICAg fQorZGlmZiAtLWdpdCBhL3Rlc3QvaG90c3BvdC9qdHJlZy9jb21waWxlci9pbnRyaW5zaWNzL21h dGgvUG93RE5vZGVUZXN0cy5qYXZhIGIvdGVzdC9ob3RzcG90L2p0cmVnL2NvbXBpbGVyL2ludHJp bnNpY3MvbWF0aC9Qb3dETm9kZVRlc3RzLmphdmEKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwMDAwMC4uZTI4Y2M1YWIzNDYKKy0tLSAvZGV2L251bGwKKysrKyBiL3Rlc3QvaG90 c3BvdC9qdHJlZy9jb21waWxlci9pbnRyaW5zaWNzL21hdGgvUG93RE5vZGVUZXN0cy5qYXZhCitA QCAtMCwwICsxLDIxOCBAQAorKy8qCisrICogQ29weXJpZ2h0IChjKSAyMDI2LCBJQk0gYW5kL29y IGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqIERPIE5PVCBBTFRFUiBP UiBSRU1PVkUgQ09QWVJJR0hUIE5PVElDRVMgT1IgVEhJUyBGSUxFIEhFQURFUi4KKysgKgorKyAq IFRoaXMgY29kZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5IGl0CisrICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDIgb25seSwgYXMKKysgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbi4KKysgKgorKyAqIFRoaXMgY29kZSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorKyAqIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJ TElUWSBvcgorKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAqIHZlcnNpb24gMiBmb3IgbW9yZSBkZXRhaWxz IChhIGNvcHkgaXMgaW5jbHVkZWQgaW4gdGhlIExJQ0VOU0UgZmlsZSB0aGF0CisrICogYWNjb21w YW5pZWQgdGhpcyBjb2RlKS4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24KKysgKiAyIGFsb25n IHdpdGggdGhpcyB3b3JrOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sCisrICogSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLTEzMDEgVVNBLgorKyAqCisrICogUGxlYXNlIGNvbnRhY3QgT3JhY2xlLCA1MDAgT3Jh Y2xlIFBhcmt3YXksIFJlZHdvb2QgU2hvcmVzLCBDQSA5NDA2NSBVU0EKKysgKiBvciB2aXNpdCB3 d3cub3JhY2xlLmNvbSBpZiB5b3UgbmVlZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9yIGhhdmUg YW55CisrICogcXVlc3Rpb25zLgorKyAqCisrICovCisrcGFja2FnZSBjb21waWxlci5pbnRyaW5z aWNzLm1hdGg7CisrCisraW1wb3J0IGpkay50ZXN0LmxpYi5Bc3NlcnRzOworKworK2ltcG9ydCBj b21waWxlci5saWIuaXJfZnJhbWV3b3JrLio7CisraW1wb3J0IGNvbXBpbGVyLmxpYi5nZW5lcmF0 b3JzLio7CisraW1wb3J0IHN0YXRpYyBjb21waWxlci5saWIuZ2VuZXJhdG9ycy5HZW5lcmF0b3Jz Lio7CisrCisraW1wb3J0IGphdmEudXRpbC5SYW5kb207CisrCisrLyoKKysgKiBAdGVzdAorKyAq IEBidWcgODM3ODcxMworKyAqIEBrZXkgcmFuZG9tbmVzcworKyAqIEBzdW1tYXJ5IE1hdGgucG93 KGJhc2UsIGV4cCkgc2hvdWxkIGNvbnN0YW50IHByb3BhZ2F0ZQorKyAqIEBsaWJyYXJ5IC90ZXN0 L2xpYiAvCisrICogQHJ1biBkcml2ZXIgJHt0ZXN0Lm1haW4uY2xhc3N9CisrICovCisrcHVibGlj IGNsYXNzIFBvd0ROb2RlVGVzdHMgeworKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEdlbmVyYXRv cjxEb3VibGU+IFVOSUZPUk1TID0gRy51bmlmb3JtRG91YmxlcygpOyAvLyBbMCwgMSkKKysKKysg ICAgcHVibGljIHN0YXRpYyBmaW5hbCBkb3VibGUgQiA9IFVOSUZPUk1TLm5leHQoKSAqIDEwMDAu MGQ7CisrICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZG91YmxlIEUgPSBVTklGT1JNUy5uZXh0KCkg KiAxMDAwLjBkICsgMy4wZDsgLy8gZSA+PSAzIHRvIGF2b2lkIHN0cmVuZ3RoIHJlZHVjdGlvbiBj b2RlCisrCisrICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKysg ICAgICAgIFRlc3RGcmFtZXdvcmsucnVuKCk7CisrCisrICAgICAgICB0ZXN0Q29ycmVjdG5lc3Mo KTsKKysgICAgfQorKworKyAgICAvLyBUZXN0IDE6IHBvdygyLjAsIDEwLjApIC0+IDEwMjQuMAor KyAgICBAVGVzdAorKyAgICBASVIoZmFpbE9uID0ge0lSTm9kZS5QT1dfRH0pCisrICAgIHB1Ymxp YyBzdGF0aWMgZG91YmxlIGNvbnN0YW50TGl0ZXJhbEZvbGRpbmcoKSB7CisrICAgICAgICByZXR1 cm4gTWF0aC5wb3coMi4wLCAxMC4wKTsgIC8vIHNob3VsZCBmb2xkIHRvIDEwMjQuMAorKyAgICB9 CisrCisrICAgIC8vIFRlc3QgMjogcG93KGZpbmFsIEIsIGZpbmFsIEUpIC0+IEJeRQorKyAgICBA VGVzdAorKyAgICBASVIoZmFpbE9uID0ge0lSTm9kZS5QT1dfRH0pCisrICAgIHB1YmxpYyBzdGF0 aWMgZG91YmxlIGNvbnN0YW50U3RhdGljRm9sZGluZygpIHsKKysgICAgICAgIHJldHVybiBNYXRo LnBvdyhCLCBFKTsgIC8vIHNob3VsZCBmb2xkIHRvIEJeRQorKyAgICB9CisrCisrICAgIC8vIFRl c3QgMzogcG93KGIsIDAuMCkgLT4gMS4wCisrICAgIEBUZXN0CisrICAgIEBJUihmYWlsT24gPSB7 SVJOb2RlLlBPV19EfSkKKysgICAgQEFyZ3VtZW50cyh2YWx1ZXMgPSB7QXJndW1lbnQuUkFORE9N X0VBQ0h9KQorKyAgICBwdWJsaWMgc3RhdGljIGRvdWJsZSBleHBaZXJvKGRvdWJsZSBiKSB7Cisr ICAgICAgICByZXR1cm4gTWF0aC5wb3coYiwgMC4wKTsKKysgICAgfQorKworKyAgICAvLyBUZXN0 IDQ6IHBvdyhiLCAxLjApIC0+IGIgKGlkZW50aXR5KQorKyAgICBAVGVzdAorKyAgICBASVIoZmFp bE9uID0ge0lSTm9kZS5QT1dfRH0pCisrICAgIEBBcmd1bWVudHModmFsdWVzID0ge0FyZ3VtZW50 LlJBTkRPTV9FQUNIfSkKKysgICAgcHVibGljIHN0YXRpYyBkb3VibGUgZXhwT25lKGRvdWJsZSBi KSB7CisrICAgICAgICByZXR1cm4gTWF0aC5wb3coYiwgMS4wKTsKKysgICAgfQorKworKyAgICAv LyBUZXN0IDU6IHBvdyhiLCBOYU4pIC0+IE5hTgorKyAgICBAVGVzdAorKyAgICBASVIoZmFpbE9u ID0ge0lSTm9kZS5QT1dfRH0pCisrICAgIEBBcmd1bWVudHModmFsdWVzID0ge0FyZ3VtZW50LlJB TkRPTV9FQUNIfSkKKysgICAgcHVibGljIHN0YXRpYyBkb3VibGUgZXhwTmFOKGRvdWJsZSBiKSB7 CisrICAgICAgICByZXR1cm4gTWF0aC5wb3coYiwgRG91YmxlLk5hTik7CisrICAgIH0KKysKKysg ICAgLy8gVGVzdCA2OiBwb3coYiwgMi4wKSAtPiBiICogYgorKyAgICAvLyBNb3JlIHRlc3RzIGlu IFRlc3RQb3cyT3B0LmphdmEKKysgICAgQFRlc3QKKysgICAgQElSKGZhaWxPbiA9IHtJUk5vZGUu UE9XX0R9KQorKyAgICBASVIoY291bnRzID0ge0lSTm9kZS5NVUxfRCwgIjEifSkKKysgICAgQEFy Z3VtZW50cyh2YWx1ZXMgPSB7QXJndW1lbnQuUkFORE9NX0VBQ0h9KQorKyAgICBwdWJsaWMgc3Rh dGljIGRvdWJsZSBleHBUd28oZG91YmxlIGIpIHsKKysgICAgICAgIHJldHVybiBNYXRoLnBvdyhi LCAyLjApOworKyAgICB9CisrCisrICAgIC8vIFRlc3QgNzogcG93KGIsIDAuNSkgLT4gYiA8PSAw LjAgPyBwb3coYiwgMC41KSA6IHNxcnQoYikKKysgICAgLy8gTW9yZSB0ZXN0cyBpbiBUZXN0UG93 MERvdDVPcHQuamF2YQorKyAgICBAVGVzdAorKyAgICBASVIoY291bnRzID0ge0lSTm9kZS5JRiwg IjEifSkKKysgICAgQElSKGNvdW50cyA9IHtJUk5vZGUuU1FSVF9ELCAiMSJ9KQorKyAgICBASVIo Y291bnRzID0geyIuKkNhbGxMZWFmLipwb3cuKiIsICIxIn0sIHBoYXNlID0gQ29tcGlsZVBoYXNl LkJFRk9SRV9NQVRDSElORykKKysgICAgQEFyZ3VtZW50cyh2YWx1ZXMgPSB7QXJndW1lbnQuUkFO RE9NX0VBQ0h9KQorKyAgICBwdWJsaWMgc3RhdGljIGRvdWJsZSBleHBEb3Q1KGRvdWJsZSBiKSB7 CisrICAgICAgICByZXR1cm4gTWF0aC5wb3coYiwgMC41KTsgLy8gZXhwYW5kIHRvOiBpZiAoYiA+ IDApIHsgc3FydChiKSB9IGVsc2UgeyBjYWxsKGIpIH0KKysgICAgfQorKworKyAgICAvLyBUZXN0 IDg6IG5vbi1jb25zdGFudCBleHBvbmVudCBzdGF5cyBhcyBjYWxsCisrICAgIEBUZXN0CisrICAg IEBJUihjb3VudHMgPSB7SVJOb2RlLlBPV19ELCAiMSJ9KQorKyAgICBAQXJndW1lbnRzKHZhbHVl cyA9IHtBcmd1bWVudC5SQU5ET01fRUFDSCwgQXJndW1lbnQuUkFORE9NX0VBQ0h9KQorKyAgICBw dWJsaWMgc3RhdGljIGRvdWJsZSBub25Db25zdGFudChkb3VibGUgYiwgZG91YmxlIGUpIHsKKysg ICAgICAgIHJldHVybiBNYXRoLnBvdyhiLCBlKTsKKysgICAgfQorKworKyAgICAvLyBUZXN0IDk6 IGxhdGUgY29uc3RhbnQgZGlzY292ZXJ5IG9uIGJhc2UgKGFmdGVyIGxvb3Agb3B0cykKKysgICAg QFRlc3QKKysgICAgQElSKGNvdW50cyA9IHtJUk5vZGUuUE9XX0QsICIxIn0sIHBoYXNlID0gQ29t cGlsZVBoYXNlLkFGVEVSX1BBUlNJTkcpCisrICAgIEBJUihmYWlsT24gPSB7SVJOb2RlLlBPV19E fSkKKysgICAgcHVibGljIHN0YXRpYyBkb3VibGUgbGF0ZUJhc2VDb25zdGFudCgpIHsKKysgICAg ICAgIGRvdWJsZSBiYXNlID0gMDsKKysgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsr KSB7CisrICAgICAgICAgICAgaWYgKChpICUgMikgPT0gMCkgeworKyAgICAgICAgICAgICAgICBi YXNlID0gQjsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgICAvLyBBZnRlciBs b29wIG9wdHMsIGJhc2UgPT0gQiAoY29uc3RhbnQpLCBzbyBwb3coQiwgRSkgZm9sZHMKKysgICAg ICAgIHJldHVybiBNYXRoLnBvdyhiYXNlLCBFKTsKKysgICAgfQorKworKyAgICAvLyBUZXN0IDEw OiBsYXRlIGNvbnN0YW50IGRpc2NvdmVyeSBvbiBleHAgKGFmdGVyIGxvb3Agb3B0cykKKysgICAg QFRlc3QKKysgICAgQElSKGNvdW50cyA9IHtJUk5vZGUuUE9XX0QsICIxIn0sIHBoYXNlID0gQ29t cGlsZVBoYXNlLkFGVEVSX1BBUlNJTkcpCisrICAgIEBJUihmYWlsT24gPSB7SVJOb2RlLlBPV19E fSkKKysgICAgcHVibGljIHN0YXRpYyBkb3VibGUgbGF0ZUV4cENvbnN0YW50KCkgeworKyAgICAg ICAgZG91YmxlIGV4cCA9IDA7CisrICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykg eworKyAgICAgICAgICAgIGlmICgoaSAlIDIpID09IDApIHsKKysgICAgICAgICAgICAgICAgZXhw ID0gRTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgICAvLyBBZnRlciBsb29w IG9wdHMsIGV4cCA9PSBFIChjb25zdGFudCksIHNvIHBvdyhCLCBFKSBmb2xkcworKyAgICAgICAg cmV0dXJuIE1hdGgucG93KEIsIGV4cCk7CisrICAgIH0KKysKKysgICAgLy8gVGVzdCAxMTogbGF0 ZSBjb25zdGFudCBkaXNjb3ZlcmllcyBvbiBib3RoIGJhc2UgYW5kIGV4cCAoYWZ0ZXIgbG9vcCBv cHRzKQorKyAgICBAVGVzdAorKyAgICBASVIoY291bnRzID0ge0lSTm9kZS5QT1dfRCwgIjEifSwg cGhhc2UgPSBDb21waWxlUGhhc2UuQUZURVJfUEFSU0lORykKKysgICAgQElSKGZhaWxPbiA9IHtJ Uk5vZGUuUE9XX0R9KQorKyAgICBwdWJsaWMgc3RhdGljIGRvdWJsZSBsYXRlQm90aENvbnN0YW50 KCkgeworKyAgICAgICAgZG91YmxlIGJhc2UgPSAwLCBleHAgPSAwOworKyAgICAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKKysgICAgICAgICAgICBpZiAoKGkgJSAyKSA9PSAwKSB7 CisrICAgICAgICAgICAgICAgIGJhc2UgPSBCOworKyAgICAgICAgICAgICAgICBleHAgPSBFOwor KyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIC8vIEFmdGVyIGxvb3Agb3B0cywg YmFzZSA9IEIsIGV4cCA9PSBFLCBzbyBwb3coQiwgRSkgZm9sZHMKKysgICAgICAgIHJldHVybiBN YXRoLnBvdyhiYXNlLCBleHApOworKyAgICB9CisrCisrICAgIHByaXZhdGUgc3RhdGljIHZvaWQg YXNzZXJ0RVFXaXRoaW5PbmVVbHAoZG91YmxlIGV4cGVjdGVkLCBkb3VibGUgb2JzZXJ2ZWQpIHsK KysgICAgICAgIGlmIChEb3VibGUuaXNOYU4oZXhwZWN0ZWQpICYmIERvdWJsZS5pc05hTihvYnNl cnZlZCkpIHJldHVybjsKKysKKysgICAgICAgIC8vIE1hdGgucG93KCkgcmVxdWlyZXMgcmVzdWx0 IG11c3QgYmUgd2l0aGluIDEgdWxwIG9mIHRoZSByZXNwZWN0aXZlIG1hZ25pdHVkZQorKyAgICAg ICAgZG91YmxlIHVscCA9IE1hdGgubWF4KE1hdGgudWxwKGV4cGVjdGVkKSwgTWF0aC51bHAob2Jz ZXJ2ZWQpKTsKKysgICAgICAgIGlmIChNYXRoLmFicyhleHBlY3RlZCAtIG9ic2VydmVkKSA+IHVs cCkgeworKyAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihTdHJpbmcuZm9ybWF0 KAorKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdCA9ICV4LCBvYnNlcnZlZCA9ICV4LCB1bHAg PSAleCIsCisrICAgICAgICAgICAgICAgICAgICBEb3VibGUuZG91YmxlVG9SYXdMb25nQml0cyhl eHBlY3RlZCksIERvdWJsZS5kb3VibGVUb1Jhd0xvbmdCaXRzKG9ic2VydmVkKSwgRG91YmxlLmRv dWJsZVRvUmF3TG9uZ0JpdHModWxwKQorKyAgICAgICAgICAgICkpOworKyAgICAgICAgfQorKyAg ICB9CisrCisrICAgIHByaXZhdGUgc3RhdGljIHZvaWQgdGVzdENvcnJlY3RuZXNzKCkgeworKyAg ICAgICAgLy8gTm8gbmVlZCB0byB3YXJtIHVwIGZvciBpbnRyaW5zaWNzCisrICAgICAgICBBc3Nl cnRzLmFzc2VydEVRKDEwMjQuMGQsIGNvbnN0YW50TGl0ZXJhbEZvbGRpbmcoKSk7CisrCisrICAg ICAgICBkb3VibGUgQkUgPSBTdHJpY3RNYXRoLnBvdyhCLCBFKTsKKysgICAgICAgIGFzc2VydEVR V2l0aGluT25lVWxwKEJFLCBjb25zdGFudFN0YXRpY0ZvbGRpbmcoKSk7CisrICAgICAgICBhc3Nl cnRFUVdpdGhpbk9uZVVscChCRSwgbGF0ZUJhc2VDb25zdGFudCgpKTsKKysgICAgICAgIGFzc2Vy dEVRV2l0aGluT25lVWxwKEJFLCBsYXRlRXhwQ29uc3RhbnQoKSk7CisrICAgICAgICBhc3NlcnRF UVdpdGhpbk9uZVVscChCRSwgbGF0ZUJvdGhDb25zdGFudCgpKTsKKysKKysgICAgICAgIEdlbmVy YXRvcjxEb3VibGU+IGFueUJpdHMgPSBHLmFueUJpdHNEb3VibGUoKTsKKysgICAgICAgIEdlbmVy YXRvcjxEb3VibGU+IGxhcmdlRG91YmxlcyA9IEcudW5pZm9ybURvdWJsZXMoTG9uZy5NQVhfVkFM VUUsIERvdWJsZS5NQVhfVkFMVUUpOworKyAgICAgICAgR2VuZXJhdG9yPERvdWJsZT4gZG91Ymxl cyA9IEcuZG91YmxlcygpOworKyAgICAgICAgZG91YmxlW10gdmFsdWVzID0geworKyAgICAgICAg ICAgICAgICBEb3VibGUuTUlOX1ZBTFVFLCBEb3VibGUuTUlOX05PUk1BTCwgLTQyLjBkLCAtMS4w ZCwgLTAuMGQsICswLjBkLCAwLjVkLCAxLjBkLCAyLjBkLCAxMjNkLCBEb3VibGUuTUFYX1ZBTFVF LAorKyAgICAgICAgICAgICAgICBEb3VibGUuTkVHQVRJVkVfSU5GSU5JVFksIERvdWJsZS5QT1NJ VElWRV9JTkZJTklUWSwgRG91YmxlLk5hTiwKKysgICAgICAgICAgICAgICAgVU5JRk9STVMubmV4 dCgpLCBVTklGT1JNUy5uZXh0KCksCisrICAgICAgICAgICAgICAgIGxhcmdlRG91Ymxlcy5uZXh0 KCksIC1sYXJnZURvdWJsZXMubmV4dCgpLCAvLyBzb21lIHN1ZmZpY2llbnRseSBsYXJnZSBtYWdu aXR1ZGVzCisrICAgICAgICAgICAgICAgIGFueUJpdHMubmV4dCgpLCBhbnlCaXRzLm5leHQoKSwg Ly8gYW55IGJpdHMgd2l0aCBwb3RlbnRpYWxseSBtb3JlIE5hTiByZXByZXNlbnRhdGlvbgorKyAg ICAgICAgICAgICAgICBkb3VibGVzLm5leHQoKSwgZG91Ymxlcy5uZXh0KCkgLy8gYSBoZWFsdGh5 IHNwcmlua2xlIG9mIHdoYXRldmVyIGVsc2UgaXMgcG9zc2libGUKKysgICAgICAgIH07CisrCisr ICAgICAgICBmb3IgKGRvdWJsZSBiIDogdmFsdWVzKSB7CisrICAgICAgICAgICAgLy8gU3RyZW5n dGggcmVkdWNlZCwgc28gd2Uga25vdyB0aGUgYml0cyBtYXRjaGVzIGV4YWN0bHkKKysgICAgICAg ICAgICBBc3NlcnRzLmFzc2VydEVRKDEuMGQsIGV4cFplcm8oYikpOworKyAgICAgICAgICAgIEFz c2VydHMuYXNzZXJ0RVEoYiwgZXhwT25lKGIpKTsKKysgICAgICAgICAgICBBc3NlcnRzLmFzc2Vy dEVRKGIgKiBiLCBleHBUd28oYikpOworKworKyAgICAgICAgICAgIGFzc2VydEVRV2l0aGluT25l VWxwKERvdWJsZS5OYU4sIGV4cE5hTihiKSk7CisrCisrICAgICAgICAgICAgLy8gUnVudGltZSBj YWxscywgc28gbWFrZSBzdXJlIHRoZSByZXN1bHQgaXMgd2l0aGluIDEgdWxwCisrICAgICAgICAg ICAgYXNzZXJ0RVFXaXRoaW5PbmVVbHAoU3RyaWN0TWF0aC5wb3coYiwgMC41ZCksIGV4cERvdDUo YikpOworKworKyAgICAgICAgICAgIGZvciAoZG91YmxlIGUgOiB2YWx1ZXMpIHsKKysgICAgICAg ICAgICAgICAgYXNzZXJ0RVFXaXRoaW5PbmVVbHAoU3RyaWN0TWF0aC5wb3coYiwgZSksIG5vbkNv bnN0YW50KGIsIGUpKTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKyt9Citk aWZmIC0tZ2l0IGEvdGVzdC9ob3RzcG90L2p0cmVnL2NvbXBpbGVyL2xpYi9pcl9mcmFtZXdvcmsv SVJOb2RlLmphdmEgYi90ZXN0L2hvdHNwb3QvanRyZWcvY29tcGlsZXIvbGliL2lyX2ZyYW1ld29y ay9JUk5vZGUuamF2YQoraW5kZXggN2I3NTFmMWE3MmMuLjZhOTVhMmI1ZGE3IDEwMDY0NAorLS0t IGEvdGVzdC9ob3RzcG90L2p0cmVnL2NvbXBpbGVyL2xpYi9pcl9mcmFtZXdvcmsvSVJOb2RlLmph dmEKKysrKyBiL3Rlc3QvaG90c3BvdC9qdHJlZy9jb21waWxlci9saWIvaXJfZnJhbWV3b3JrL0lS Tm9kZS5qYXZhCitAQCAtMTg1OCw2ICsxODU4LDExIEBAIHB1YmxpYyBjbGFzcyBJUk5vZGUgewor ICAgICAgICBiZWZvcmVNYXRjaGluZ05hbWVSZWdleChTUVJUX0hGLCAiU3FydEhGIik7CisgICAg IH0KKyAKKysgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1FSVF9EID0gUFJFRklYICsg IlNRUlRfRCIgKyBQT1NURklYOworKyAgICBzdGF0aWMgeworKyAgICAgICAgYmVmb3JlTWF0Y2hp bmdOYW1lUmVnZXgoU1FSVF9ELCAiU3FydEQiKTsKKysgICAgfQorKworICAgICBwdWJsaWMgc3Rh dGljIGZpbmFsIFN0cmluZyBTUVJUX0YgPSBQUkVGSVggKyAiU1FSVF9GIiArIFBPU1RGSVg7Cisg ICAgIHN0YXRpYyB7CisgICAgICAgIGJlZm9yZU1hdGNoaW5nTmFtZVJlZ2V4KFNRUlRfRiwgIlNx cnRGIik7CitAQCAtMjgyNSw2ICsyODMwLDEyIEBAIHB1YmxpYyBjbGFzcyBJUk5vZGUgeworICAg ICAgICAgbWFjcm9Ob2RlcyhNT0RfRCwgcmVnZXgpOworICAgICB9CisgCisrICAgIHB1YmxpYyBz dGF0aWMgZmluYWwgU3RyaW5nIFBPV19EID0gUFJFRklYICsgIlBPV19EIiArIFBPU1RGSVg7Cisr ICAgIHN0YXRpYyB7CisrICAgICAgICBTdHJpbmcgcmVnZXggPSBTVEFSVCArICJQb3dEIiArIE1J RCArIEVORDsKKysgICAgICAgIG1hY3JvTm9kZXMoUE9XX0QsIHJlZ2V4KTsKKysgICAgfQorKwor ICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCTEFDS0hPTEUgPSBQUkVGSVggKyAiQkxB Q0tIT0xFIiArIFBPU1RGSVg7CisgICAgIHN0YXRpYyB7CisgICAgICAgICBmcm9tQmVmb3JlUmVt b3ZlVXNlbGVzc1RvRmluYWxDb2RlKEJMQUNLSE9MRSwgIkJsYWNraG9sZSIpOworLS0gCisyLjUz LjAKKwoKZGlmZiAtLWdpdCBhL3NjcmlwdHMvZ2VuZXJhdGVfc291cmNlX3RhcmJhbGwuc2ggYi9z Y3JpcHRzL2dlbmVyYXRlX3NvdXJjZV90YXJiYWxsLnNoCmluZGV4IGVlZGVkNWMuLjU2YWZiNGQg MTAwNzU1Ci0tLSBhL3NjcmlwdHMvZ2VuZXJhdGVfc291cmNlX3RhcmJhbGwuc2gKKysrIGIvc2Ny aXB0cy9nZW5lcmF0ZV9zb3VyY2VfdGFyYmFsbC5zaApAQCAtNDgsNyArNDgsNyBAQAogIyBUaGlz IHdpbGwgY2hlY2sgb3V0IHRoZSBzYW1lIHZlcnNpb24gYXMgZXhhbXBsZSAxLCBidXQgZnJvbSB0 aGUKICMgdXBzdHJlYW0gcmVwb3NpdG9yeToKICMKLSMgJCBWRVJTSU9OPWpkay0yNS4wLjMrOSBQ Uk9KRUNUX05BTUU9b3BlbmpkayBSRVBPX05BTUU9amRrMjV1IFwKKyMgJCBWRVJTSU9OPWpkay0y NS4wLjQrNyBQUk9KRUNUX05BTUU9b3BlbmpkayBSRVBPX05BTUU9amRrMjV1IFwKICMgICBCT09U X0pESz0vdXNyL2xpYi9qdm0vamF2YS0yNS1vcGVuamRrIHNoIHNjcmlwdHMvZ2VuZXJhdGVfc291 cmNlX3RhcmJhbGwuc2gKICMKICMgRXhhbXBsZSAzOgoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9z b3VyY2VzCmluZGV4IDI3OGQ2ZjQuLmRmYjJjMDUgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIv c291cmNlcwpAQCAtMSArMSBAQAotU0hBNTEyIChvcGVuamRrLTI1LjAuMys5LnRhci54eikgPSAz ODJkY2Y0MmVkZTM1YzdlNDhlMGY5NDAzZDMwMTcyZTZiYzYzNjc1MTdlMGM0OTIxMWFiOWQyZTQz MzczYzNkN2U1ODY5NjljMjc3OTVmMGJmZDE3YWU1YzlmMDA3MDJlOTU1NDk1YTMxZDdlYTc1N2Y1 NGYwNmU4YTRjZjExMworU0hBNTEyIChvcGVuamRrLTI1LjAuNCs3LnRhci54eikgPSA3MzY5NDli YTU3ZDZlMzZkZjFiNGY4NTQxOGIyYTI3ZDNlMGFlYzdlNGI0OTJlZjVkOWMwMDYzNTVlZGU2M2Ri M2Y1ZjllMGUwZWEyZDYzYmVhMTE5ZDliYWFhOWNmNWE5MmUxNGRhZDE5ZTY5ZTkzNTEwNzJlZjA5 NTVlYTJjZgo=